From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web12.10787.1666198787893487409 for ; Wed, 19 Oct 2022 09:59:48 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=EXsRP8Gh; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1666198787; x=1697734787; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=sCvs6w0nbXOTNPRCk4nHOK+FBw6SgKkkBqZgDhSrg0E=; b=EXsRP8Ghhol4xFZIxcj2/LOQx53gOXPJbXpAUs6cQeQH+SkzRQwQD8y4 9X//CO5bmsGd+BM8BmEXuosNyz3NtaI2aFGK+4lECVzYWMAZdrarPxl4e Ez4comru6u1VMHSW0HlcNnstCHFUkaTSTrrkDDePDTjfGVNNBqcOnWtq0 eeghEJvlXrNO1CqKZdx+H3kWmIMyz3kQCnllSmERn7IyqLkeotg4uEF+v EpBF0orjH3c0eEqSkJGDp9+S3olURHnHoBkXKej3t1iRm2PAm7UKx69dn yNkA0JaKbDxZ+CHtgbyNBRSZSCKgvkJzD8jVQDF/8mFQ9yIbuTNCfb+Vn w==; X-IronPort-AV: E=McAfee;i="6500,9779,10505"; a="304088955" X-IronPort-AV: E=Sophos;i="5.95,196,1661842800"; d="scan'208";a="304088955" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Oct 2022 09:59:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10505"; a="718578032" X-IronPort-AV: E=Sophos;i="5.95,196,1661842800"; d="scan'208";a="718578032" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by FMSMGA003.fm.intel.com with ESMTP; 19 Oct 2022 09:59:47 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) 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; Wed, 19 Oct 2022 09:59:46 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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; Wed, 19 Oct 2022 09:59:46 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 19 Oct 2022 09:59:46 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.109) 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.2375.31; Wed, 19 Oct 2022 09:59:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e5JrAXD+Mep9w7YbRV3ZPATJyjmxyITxjfoc8OTgpFmwtAyYHw2Hx523DSAxxQZtbzSXre2nE2DtgT2hSjFw5OmUBFdUpGYCc7JXr4GLiWBl4ZuM3UHHtOkfA8UAIfAoDgOLyMwAY8zBo2wSi4L4s7mAHFhLL9oOInK/TjlcRmgdtS5Eo7z8aJ6DdbFqupcvUUL08iKl5UWVFQoJl/1A7+YZATMGupT25SK8bCDzV5wDnM658eEFp1VBorhm7QBpLgy8UETRjzagnRgM4/jw4fDWOdb6dnYyvglu0TfEVnr5QAvDUf/ER8ASpP105pskFmAktXhgKJrUi2BRTtNTkw== 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=sCvs6w0nbXOTNPRCk4nHOK+FBw6SgKkkBqZgDhSrg0E=; b=BXo000eCJbOY+wH8UzhxtImtBwPo0Wlot+Ghx0AlsJtv1oULXgLnMGdYr4kIMQ5vnllkXBGofBtu+WnoKCGRR/wBRgNPluoi6+h69TMFfMo1JnWJhFBoLYTGOrp7DrQlpd3PUHLzRUlerzBQ81NMd1SVjfa68vP6vDfEUXGcriBOJm6Aj/Katu6eLtEkww2+qRiRxIfOtOzjSrCmgTvpS6wQRbJXbf2eyhxwLhAmD3erVwlj0yRQ7vqNwhH3kSYQkQ5vFgs9z7GplweqIiSvZ+SU1bLxFQZlgwP4UeAdqJtVIq03P7BZv/tNhb6FGIAgkKs8e0jLmtJyDUOzXajpkg== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by SJ0PR11MB5070.namprd11.prod.outlook.com (2603:10b6:a03:2d5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.20; Wed, 19 Oct 2022 16:59:31 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::8bdc:54fe:ecf3:fa93]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::8bdc:54fe:ecf3:fa93%5]) with mapi id 15.20.5723.033; Wed, 19 Oct 2022 16:59:31 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "ardb@kernel.org" , "Kinney, Michael D" CC: "quic_llindhol@quicinc.com" Subject: Re: [edk2-devel] [PATCH edk2-platforms] Platform: Remove ComCast RDK Thread-Topic: [edk2-devel] [PATCH edk2-platforms] Platform: Remove ComCast RDK Thread-Index: AQHY47KMaYq3FS7PqEqZc2zDcK1GTq4V8MDg Date: Wed, 19 Oct 2022 16:59:31 +0000 Message-ID: References: <20221019120100.514034-1-ardb@kernel.org> In-Reply-To: <20221019120100.514034-1-ardb@kernel.org> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 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: CO1PR11MB4929:EE_|SJ0PR11MB5070:EE_ x-ms-office365-filtering-correlation-id: d8a9ddc0-e249-4ac6-abb1-08dab1f34a71 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JA68syT16he+KBNMMI3JxSHo42EGXjq0xE7GxXsWjgSgVrYAooEqefJ2cwbaT8LdMUoQg3jUzXfMXiE2FzaFMei3h6El/liRYoiPkMTF4BSPjecuwHJksCE4QM+ciFsMIGHDtx9yBbnJZ86Ra56/CIZgCR43kR56rHC2T/Okybs8ilg4MlONk4/zLDu89INfS0PEnL9aE+/pB2LVaNLHtAeI+IUMPqraXmlb+GoqoqiwRG3TaqlSQFySYU8yIxjGXQXywtHBO4opYFd1HrhRwfgtD2nG9TH04xT3RKs9UJyV3rsNu1OSjuQkPoCDZ25s7Xsg8a1+G9j0jnezPWczbXJdTe7y6xUayBB36FrLUVmTS5ckefzMG/OL7axOOTiRjNHQR73f6vDmnwWUdkftBOKSPo0M173FmfbQUChSZZk5m2FqNwZKdqgHfvvYCXflL790Z4OAMeqWdzBYkh4XR1nZvMwlhlDQeTCcTsUqe2hhZRHMJPtEjf7+IaZ06IBl8Di/y81TLfrT2D58nPBlXt+gPqzVTMDcR/zBJq7QMi7S+oI85WOUSYtYMCjfAt0Y1uLYmmC1JpGc/L+jSdCV1jo3HEDD13LWg0ACqufirFL45KqVOBTDwgXua5EcGydJp+NhkoigW70R8aSQ2a9RSulckR0rRliuw5t8TCBYDJmyTiyehOUeduoJV/pTjSd8ao9z1pWQI20v6vhELsjrZPbGc0H4htRW/XVYXxxHVmXuhDOt4Knsp2YEBwEX/l9XBigUWejlPaT85kQKWDOLeVeXyFFhvBIKO9GbSGD+goyPkDPSlI0I1K9ha3poxutSg+967WTKK4BNs8Uwh/a1Ng== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(39860400002)(376002)(346002)(366004)(396003)(451199015)(122000001)(110136005)(5660300002)(966005)(71200400001)(478600001)(66946007)(33656002)(66476007)(4326008)(8936002)(8676002)(316002)(76116006)(52536014)(19627235002)(66556008)(30864003)(64756008)(38070700005)(86362001)(41300700001)(186003)(38100700002)(55016003)(7696005)(83380400001)(82960400001)(26005)(66446008)(9686003)(6506007)(53546011)(2906002)(66899015)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z080dUtMVE5rdnI0QVJ2U1BQYjlPQ3k0LytGSktKUEF3ajdiMVNlbGc5VmRE?= =?utf-8?B?bWtPNTRGbk8yN01zSlVIYkRXdWtDalRTTnRvM1R2Ym54ZjV0Mjhsd21tUG91?= =?utf-8?B?RW9YUUIrL3dJQzdDTFFqMDRMNFBETDMzeUlRR294eExLRnErUDhLT1FIcVNz?= =?utf-8?B?RUlydkNuMWFtOVMrQXZweml0L0czUnplM2dGM0dYVE1BZWh4Umd3Qk9sbllS?= =?utf-8?B?YkxyejlzckFUSUZqaHZmb1VGcXc4b0hKaU56aXZaTS82ZkpUR21jR0JDSzNv?= =?utf-8?B?WkxrQzFFUitTd1BCOGx1WEhoVTdzWGtvTW5SanJsTHF3RFh5dThRQXlDVWhJ?= =?utf-8?B?TGdLeGxZaUpkQXNBZURzWUxsT0txcDhoWVVPclZUTERWaDFqQjBaa0treVYr?= =?utf-8?B?ZUtXWHJJbW1UT1NOQTd6dDQvNTFFaWF2cGdzSW5yelVvME1NR1FIVUQyeXpE?= =?utf-8?B?cmMwQm55eUxtUGYxYXY5YnY2WEMxaXdEWW5GaTNPSWY4ejdHQTNpcjk5Z2Jv?= =?utf-8?B?L1JKaUZ6QUtiaFRGbkpra2s2WCtRZlJ4ZUlRUzFlZUJCQ0JDYzV3SDFMZHlK?= =?utf-8?B?VFIzNEdNTXFrVmFDampEV1MzcGVDTnd1QWtkb2ltWncvVDdJakQyTktNR1Vs?= =?utf-8?B?MG9La05KVmhUZFZkZlJwMVNFSmk2WFlPcW9UZlpPOUNMWGR3TEdkRkxVelgx?= =?utf-8?B?TllQOU1qVWNDajlYMi9rQi9uUnRIUXpkbUVnSkdubWFzeDlQMmE4MHl6OEtJ?= =?utf-8?B?eWNHclcxcitwOTBxZEdCTGtsSkRxYUY1ZDNMOFB6Yk9EN2NEY0h6dWk1ZGlO?= =?utf-8?B?czh3VlZ1M3JkMTQ1Q1h6STFYdEZod0UyczArZnlTMWJtM2NmeWhINkd3b3Bl?= =?utf-8?B?OU5LbjdiUlNDQnArYTdabkRON0FTYXVOb1B4ZS9YNXNmTGpveENZNjJLY0py?= =?utf-8?B?UHdMbEJsaFZjckROQ1JLSEo2V1pKSEpSOWFDeWpyQ1hMRlg1NU92cmJYL0l4?= =?utf-8?B?MHg5NjhrOERZTzRweHJOYmFXZ0FaSzBvTk9SL00vcVgxOXpsZy9ta1F2UmFJ?= =?utf-8?B?aVJROTBwVGgxZ3QycVByR0NZb1J0UDNwVHZ1OGl1SmlmRm83aDY2MW1LWmxQ?= =?utf-8?B?L1FpWDZMbjZQL0xQQzg2RFFTR1E5Z0ZoOUJNNnNaczBpcHhLVnV0OGJlZlRn?= =?utf-8?B?Y01YSjFIaWtiQ05UMjJoNXhuNS9GVllRaENMT1pvZ01uMW5MalJTeXNFZHBO?= =?utf-8?B?K0lDUnlPWHpIL0w3bWJmalNzckVscEhsWWN5N3JrUzhic1F6NThUZ1EzaWdT?= =?utf-8?B?bVdsWVp1YlFxZGJxeWM3N2JNTWZvM20vSkE4U0VjOHhHWEF2VEl3OGpkVFpZ?= =?utf-8?B?eitZUzFkcjlkQnFlUHhFRHFybW5BQ3pUTzdYazNiVWo4MHBTQ1BkT0dPVzZy?= =?utf-8?B?ZmxyYWl3LzFBcmF3ZUM0T0hNaUtuejA2dkRaTTFRZ3ltbmJDZGRtdXZSSTJ3?= =?utf-8?B?eWNnaVgvNVFmam1Lclg0eWRncUtIcURBaUFaNG83Wkp3UGdiUU5HVFFNNU1C?= =?utf-8?B?YkpUSWR5eTVWZGhCMW5Ybmw0aE4rdnJ2eFM3bmVFMU5yTnBBNUVXUkttVXIv?= =?utf-8?B?UFRTK2RlRDFKQnN6SGVTTjZSQXpXTk9hOG5RY2NSdDA1d0R4OERRMnRPR1l2?= =?utf-8?B?VnhHcG81SGRpeFFPb21KVE5pR0kwTUxDZHVCdnNRZEhBR2Y1K3NzOENQUm0v?= =?utf-8?B?eHVkSHM2VDV5U2NFaEFzS3JMVUhySDNGU2luY2s1VXZ6eFk1aUpCZ3lGZ1I4?= =?utf-8?B?bWJQWFhVcUtqcm9sampSTGlJTUhMSDgvais0U3hzOWVZQm4yV0NHS1pzdE5E?= =?utf-8?B?MWNOMmVrdFdCdW03K05nVm5jWUFNSS9Gbk4xSDJTMWxYcDVDS1g1L1ZmYVJT?= =?utf-8?B?Y3NxRWVKV00vaWtYVzNITDV2bElsSjZYL2ZlMDlDUGk2ZlZSK1oyZVBlRVNZ?= =?utf-8?B?RTZkbkdwUmc0dnVMZVU5bW9KTlQrSXpqdnNJckNEM202VytDbXpjaUhCRTJi?= =?utf-8?B?SnJRS0JCR3NpbUJvZTcxOEhwckVNOUNLRXk5Z3NMclVzOFkxaGNYaXNsOFpm?= =?utf-8?B?RDdFbEc5OE1KZ2xobmltL3R2cS9lbXV6L04xR3RGN3MrbUMvRm9RbkV0eEdw?= =?utf-8?B?QWc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8a9ddc0-e249-4ac6-abb1-08dab1f34a71 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2022 16:59:31.0323 (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: zvvDqRXEprjOAo48ymK20lx3EfwAiWpV/bwRT3jjhzvHN6cW542dv3NTyhDDDDPeem2zU+dwa5IPf/SxcF2NS3UrB7CGe1+xH/FZNkV3huU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5070 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWNrZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBz LmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEFyZCBCaWVzaGV1dmVsDQo+ IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxOSwgMjAyMiA1OjAxIEFNDQo+IFRvOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiBDYzogcXVpY19sbGluZGhvbEBxdWljaW5jLmNvbTsgQXJkIEJpZXNo ZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4NCj4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQQVRDSCBl ZGsyLXBsYXRmb3Jtc10gUGxhdGZvcm06IFJlbW92ZSBDb21DYXN0IFJESw0KPiANCj4gVGhlIENv bWNhc3QgUkRLIHBsYXRmb3JtIHdhcyBjb250cmlidXRlZCB5ZWFycyBhZ28sIGJ1dCBzaW5jZSB0 aGVuLA0KPiBub2JvZHkgaGFzIGV4cHJlc3NlZCBhbnkgaW50ZXJlc3QgaW4gaXQsIGxlYXZpbmcg aXQgdG8gdGhlIG1haW50YWluZXJzDQo+IHRvIGtlZXAgaXQgaW4gc2hhcGUuIEFzIGl0IHR1cm5z IG91dCwgdGhlIG1haW50YWluZXJzIGNhbiB0aGluayBvZg0KPiBiZXR0ZXIgd2F5cyB0byBzcGVu ZCB0aGVpciB0aW1lLCBzbyBsZXQncyBqdXN0IGRyb3AgaXQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5 OiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPg0KPiAtLS0NCj4gIC4uLi9SZGtCb290 TWFuYWdlckxpYi9SZGtCb290TWFuYWdlckxpYi5kZWMgICB8ICA0NCAtLQ0KPiAgUGxhdGZvcm0v Q29tY2FzdC9SREtRZW11L1JES1FlbXUuZHNjICAgICAgICAgIHwgNDIxIC0tLS0tLS0tLS0tLS0t DQo+ICBQbGF0Zm9ybS9Db21jYXN0L1JES1FlbXUvUkRLUWVtdS5mZGYgICAgICAgICAgfCAxMjIg LS0tLS0NCj4gIFBsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRpb24vRHJpL0RyaS5pbmYgICAgICB8 ICAzNyAtLQ0KPiAgLi4uL0RyaVNlY3VyZUJvb3QvRHJpU2VjdXJlQm9vdC5pbmYgICAgICAgICAg IHwgIDM3IC0tDQo+ICAuLi4vQXBwbGljYXRpb24vU2VjdXJlQm9vdC9TZWN1cmVCb290LmluZiAg ICAgfCAgMzcgLS0NCj4gIC4uLi9SZGtCb290TWFuYWdlckxpYi9SZGtCb290TWFuYWdlckxpYi5p bmYgICB8ICA3MCAtLS0NCj4gIC4uLi9SZGtCb290TWFuYWdlckxpYi9SZGtCb290TWFuYWdlckxp Yi5oICAgICB8ICA5MiAtLS0tDQo+ICBQbGF0Zm9ybS9Db21jYXN0L0FwcGxpY2F0aW9uL0RyaS9E cmkuYyAgICAgICAgfCAgMjAgLQ0KPiAgLi4uL0FwcGxpY2F0aW9uL0RyaVNlY3VyZUJvb3QvRHJp U2VjdXJlQm9vdC5jIHwgIDI2IC0NCj4gIC4uLi9BcHBsaWNhdGlvbi9TZWN1cmVCb290L1NlY3Vy ZUJvb3QuYyAgICAgICB8ICAyNCAtDQo+ICAuLi4vTGlicmFyeS9SZGtCb290TWFuYWdlckxpYi9E aXNrSW8uYyAgICAgICAgfCAzNzggLS0tLS0tLS0tLS0tLQ0KPiAgLi4uL0xpYnJhcnkvUmRrQm9v dE1hbmFnZXJMaWIvSHR0cEJvb3QuYyAgICAgIHwgMzQ0IC0tLS0tLS0tLS0tLQ0KPiAgLi4uL0xp YnJhcnkvUmRrQm9vdE1hbmFnZXJMaWIvUmRrRmlsZS5jICAgICAgIHwgMzg3IC0tLS0tLS0tLS0t LS0NCj4gIC4uLi9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1NlY3VyZUJvb3QuYyAgICB8IDUx NyAtLS0tLS0tLS0tLS0tLS0tLS0NCj4gIFBsYXRmb3JtL0NvbWNhc3QvUkRLUWVtdS9SRUFETUUg ICAgICAgICAgICAgICB8ICA3MyAtLS0NCj4gIDE2IGZpbGVzIGNoYW5nZWQsIDI2MjkgZGVsZXRp b25zKC0pDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jk a0Jvb3RNYW5hZ2VyTGliL1Jka0Jvb3RNYW5hZ2VyTGliLmRlYw0KPiAgZGVsZXRlIG1vZGUgMTAw NjQ0IFBsYXRmb3JtL0NvbWNhc3QvUkRLUWVtdS9SREtRZW11LmRzYw0KPiAgZGVsZXRlIG1vZGUg MTAwNjQ0IFBsYXRmb3JtL0NvbWNhc3QvUkRLUWVtdS9SREtRZW11LmZkZg0KPiAgZGVsZXRlIG1v ZGUgMTAwNjQ0IFBsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRpb24vRHJpL0RyaS5pbmYNCj4gIGRl bGV0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9Db21jYXN0L0FwcGxpY2F0aW9uL0RyaVNlY3VyZUJv b3QvRHJpU2VjdXJlQm9vdC5pbmYNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9Db21j YXN0L0FwcGxpY2F0aW9uL1NlY3VyZUJvb3QvU2VjdXJlQm9vdC5pbmYNCj4gIGRlbGV0ZSBtb2Rl IDEwMDY0NCBQbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFnZXJMaWIvUmRrQm9v dE1hbmFnZXJMaWIuaW5mDQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vQ29tY2FzdC9M aWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1Jka0Jvb3RNYW5hZ2VyTGliLmgNCj4gIGRlbGV0ZSBt b2RlIDEwMDY0NCBQbGF0Zm9ybS9Db21jYXN0L0FwcGxpY2F0aW9uL0RyaS9EcmkuYw0KPiAgZGVs ZXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRpb24vRHJpU2VjdXJlQm9v dC9EcmlTZWN1cmVCb290LmMNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9Db21jYXN0 L0FwcGxpY2F0aW9uL1NlY3VyZUJvb3QvU2VjdXJlQm9vdC5jDQo+ICBkZWxldGUgbW9kZSAxMDA2 NDQgUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL0Rpc2tJby5jDQo+ ICBkZWxldGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5h Z2VyTGliL0h0dHBCb290LmMNCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9Db21jYXN0 L0xpYnJhcnkvUmRrQm9vdE1hbmFnZXJMaWIvUmRrRmlsZS5jDQo+ICBkZWxldGUgbW9kZSAxMDA2 NDQgUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1NlY3VyZUJvb3Qu Yw0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0NvbWNhc3QvUkRLUWVtdS9SRUFETUUN Cj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFn ZXJMaWIvUmRrQm9vdE1hbmFnZXJMaWIuZGVjDQo+IGIvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5 L1Jka0Jvb3RNYW5hZ2VyTGliL1Jka0Jvb3RNYW5hZ2VyTGliLmRlYw0KPiBkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggZTgzZmMwZTU1NmVjLi4wMDAwMDAwMDAwMDANCj4gLS0tIGEv UGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1Jka0Jvb3RNYW5hZ2Vy TGliLmRlYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDQ0ICswLDAgQEANCj4gLSMNCj4gDQo+ IC0jICBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgTGluYXJvIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+IA0KPiAtIw0KPiANCj4gLSMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiAtIw0KPiANCj4gLQ0KPiANCj4gLVtEZWZpbmVzXQ0K PiANCj4gLSAgREVDX1NQRUNJRklDQVRJT04gICAgICAgICAgICAgID0gMHgwMDAxMDAxOQ0KPiAN Cj4gLSAgUEFDS0FHRV9OQU1FICAgICAgICAgICAgICAgICAgID0gUmRrUGtnDQo+IA0KPiAtICBQ QUNLQUdFX0dVSUQgICAgICAgICAgICAgICAgICAgPSAyZjFmMmQ1ZS1kOWUxLTRhYTEtOGViOS1m ZWQ5NDY4MmUxNDANCj4gDQo+IC0gIFBBQ0tBR0VfVkVSU0lPTiAgICAgICAgICAgICAgICA9IDAu MQ0KPiANCj4gLQ0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAtIw0KPiAN Cj4gLSMgSW5jbHVkZSBTZWN0aW9uIC0gbGlzdCBvZiBJbmNsdWRlIFBhdGhzIHRoYXQgYXJlIHBy b3ZpZGVkIGJ5IHRoaXMgcGFja2FnZS4NCj4gDQo+IC0jICAgICAgICAgICAgICAgICAgIENvbW1l bnRzIGFyZSB1c2VkIGZvciBLZXl3b3JkcyBhbmQgTW9kdWxlIFR5cGVzLg0KPiANCj4gLSMNCj4g DQo+IC0jIFN1cHBvcnRlZCBNb2R1bGUgVHlwZXM6DQo+IA0KPiAtIyAgQkFTRSBTRUMgUEVJX0NP UkUgUEVJTSBEWEVfQ09SRSBEWEVfRFJJVkVSIERYRV9SVU5USU1FX0RSSVZFUiBEWEVfU01NX0RS SVZFUiBEWEVfU0FMX0RSSVZFUiBVRUZJX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9ODQo+IA0KPiAt Iw0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAtW0luY2x1ZGVzLmNvbW1v bl0NCj4gDQo+IC0jICBJbmNsdWRlICAgICAgICAgICAgICAgICAgICAgICAgIyBSb290IGluY2x1 ZGUgZm9yIHRoZSBwYWNrYWdlDQo+IA0KPiAtDQo+IA0KPiAtW0d1aWRzLmNvbW1vbl0NCj4gDQo+ IC0gIGdSZGtUb2tlblNwYWNlR3VpZCAgICAgICAgICAgID0gIHsgMHg0MDhjMTg5MiwgMHhmMTFh LCAweDQwYzcsIHsgMHhhYSwgMHg1ZiwgMHgwZCwgMHgxNiwgMHhjOCwgMHhiMiwgMHg1MiwgMHg1 OSB9IH0NCj4gDQo+IC0gIGdSZGtHbG9iYWxWYXJpYWJsZUd1aWQgICAgICAgID0gIHsgMHhjMzI1 M2M5MCwgMHhhMjRmLCAweDQ1OTksIHsgMHhhNiwgMHg2NCwgMHgxZiwgMHg4OCwgMHgxMywgMHg3 NywgMHg4ZiwgMHhjOSB9IH0NCj4gDQo+IC0NCj4gDQo+IC1bUGNkc0ZpeGVkQXRCdWlsZC5jb21t b25dDQo+IA0KPiAtICAjIFJkayBMaWJyYXJ5DQo+IA0KPiAtICBnUmRrVG9rZW5TcGFjZUd1aWQu UGNkUmRrU3lzdGVtUGFydGl0aW9uTmFtZXwiInxWT0lEKnwweDAyMDAwMDAzDQo+IA0KPiAtICBn UmRrVG9rZW5TcGFjZUd1aWQuUGNkUmRrQ29uZkZpbGVOYW1lfCIifFZPSUQqfDB4MDIwMDAwMDQN Cj4gDQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDbWRMaW5lQXJnc3wiInxWT0lEKnww eDAyMDAwMDEzDQo+IA0KPiAtICBnUmRrVG9rZW5TcGFjZUd1aWQuUGNkUmRrQ29uZkZpbGVEZXZp Y2VQYXRofEwiInxWT0lEKnwweDAyMDAwMDE0DQo+IA0KPiAtICBnUmRrVG9rZW5TcGFjZUd1aWQu UGNkRHRiQXZhaWxhYmxlfEZBTFNFfEJPT0xFQU58MHgwMDMwMDAxNA0KPiANCj4gLQ0KPiANCj4g LSAgIyBHVUlEIG9mIFJka1NlY3VyZUJvb3RMb2FkZXINCj4gDQo+IC0gIGdSZGtUb2tlblNwYWNl R3VpZC5QY2RSZGtTZWN1cmVCb290RmlsZXx7IDB4MGYsIDB4OTMsIDB4YzcsIDB4YjIsIDB4ZWYs IDB4MDcsIDB4MDUsIDB4NDMsIDB4YWMsIDB4NGUsIDB4MWMsIDB4ZTIsIDB4MDgsDQo+IDB4NWEs IDB4NzAsIDB4MzEgfXxWT0lEKnwweDAwMDAwMTAwDQo+IA0KPiAtDQo+IA0KPiAtICAjIEdVSUQg b2YgUmRrRHJpDQo+IA0KPiAtICBnUmRrVG9rZW5TcGFjZUd1aWQuUGNkUmRrRHJpRmlsZXx7IDB4 OGEsIDB4YTEsIDB4MWIsIDB4MDgsIDB4MWUsIDB4ZDcsIDB4YTcsIDB4NDAsIDB4OTksIDB4YTks IDB4Y2QsIDB4YjgsIDB4NjQsIDB4NjMsDQo+IDB4OTYsIDB4NmQgfXxWT0lEKnwweDAwMDAxMDAw DQo+IA0KPiAtDQo+IA0KPiAtICAjIEdVSUQgb2YgUmRrRHJpU2VjdXJlQm9vdExvYWRlcg0KPiAN Cj4gLSAgZ1Jka1Rva2VuU3BhY2VHdWlkLlBjZFJka0RyaVNlY3VyZUJvb3RGaWxlfHsgMHhkNywg MHhkMSwgMHg1MiwgMHhkZCwgMHhlMiwgMHgwZCwgMHg1MiwgMHg0NSwgMHg5OCwgMHhlMCwgMHg4 ZCwgMHhiZSwgMHhlNCwNCj4gMHg1OCwgMHhhNSwgMHgwMiB9fFZPSUQqfDB4MDAxMDAwMDANCj4g DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L1JES1FlbXUvUkRLUWVtdS5kc2MgYi9Q bGF0Zm9ybS9Db21jYXN0L1JES1FlbXUvUkRLUWVtdS5kc2MNCj4gZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDVkMTRmZDhjYjhkNy4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL1BsYXRm b3JtL0NvbWNhc3QvUkRLUWVtdS9SREtRZW11LmRzYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0x LDQyMSArMCwwIEBADQo+IC0jDQo+IA0KPiAtIyAgQ29weXJpZ2h0IChjKSAyMDExLTIwMTUsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4gLSMgIENvcHlyaWdodCAoYykg MjAxNCAtIDIwMTgsIExpbmFybyBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4g LSMgIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMjEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiANCj4gLSMNCj4gDQo+IC0jICBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiANCj4gLSMNCj4gDQo+IC0jDQo+IA0KPiAtDQo+IA0K PiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IC0jDQo+IA0KPiAtIyBEZWZpbmVzIFNl Y3Rpb24gLSBzdGF0ZW1lbnRzIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY3JlYXRlIGEgTWFr ZWZpbGUuDQo+IA0KPiAtIw0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAt W0RlZmluZXNdDQo+IA0KPiAtICBQTEFURk9STV9OQU1FICAgICAgICAgICAgICAgICAgPSBSZGtR ZW11DQo+IA0KPiAtICBQTEFURk9STV9HVUlEICAgICAgICAgICAgICAgICAgPSAyRDg5RUYxMy1C NjA0LTQ1NTAtQjA4MC01RTJFNUUzODI4NTQNCj4gDQo+IC0gIFBMQVRGT1JNX1ZFUlNJT04gICAg ICAgICAgICAgICA9IDAuMQ0KPiANCj4gLSAgRFNDX1NQRUNJRklDQVRJT04gICAgICAgICAgICAg ID0gMHgwMDAxMDAwNQ0KPiANCj4gLSAgT1VUUFVUX0RJUkVDVE9SWSAgICAgICAgICAgICAgID0g QnVpbGQvUkRLLSQoQVJDSCkNCj4gDQo+IC0gIFNVUFBPUlRFRF9BUkNISVRFQ1RVUkVTICAgICAg ICA9IEFBUkNINjR8QVJNDQo+IA0KPiAtICBCVUlMRF9UQVJHRVRTICAgICAgICAgICAgICAgICAg PSBERUJVR3xSRUxFQVNFDQo+IA0KPiAtICBTS1VJRF9JREVOVElGSUVSICAgICAgICAgICAgICAg PSBERUZBVUxUDQo+IA0KPiAtICBGTEFTSF9ERUZJTklUSU9OICAgICAgICAgICAgICAgPSBQbGF0 Zm9ybS9Db21jYXN0L1JES1FlbXUvUkRLUWVtdS5mZGYNCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4g DQo+IC0gICMgRGVmaW5lcyBmb3IgZGVmYXVsdCBzdGF0ZXMuICBUaGVzZSBjYW4gYmUgY2hhbmdl ZCBvbiB0aGUgY29tbWFuZCBsaW5lLg0KPiANCj4gLSAgIyAtRCBGTEFHPVZBTFVFDQo+IA0KPiAt ICAjDQo+IA0KPiAtICBERUZJTkUgU0VDVVJFX0JPT1RfRU5BQkxFICAgICAgPSBUUlVFDQo+IA0K PiAtDQo+IA0KPiAtICAjDQo+IA0KPiAtICAjIE5ldHdvcmsgZGVmaW5pdGlvbg0KPiANCj4gLSAg Iw0KPiANCj4gLSAgREVGSU5FIE5FVFdPUktfU05QX0VOQUJMRSAgICAgICAgICAgICA9IEZBTFNF DQo+IA0KPiAtICBERUZJTkUgTkVUV09SS19UTFNfRU5BQkxFICAgICAgICAgICAgID0gRkFMU0UN Cj4gDQo+IC0gIERFRklORSBORVRXT1JLX0lQNl9FTkFCTEUgICAgICAgICAgICAgPSBGQUxTRQ0K PiANCj4gLSAgREVGSU5FIE5FVFdPUktfSFRUUF9CT09UX0VOQUJMRSAgICAgICA9IFRSVUUNCj4g DQo+IC0gIERFRklORSBORVRXT1JLX0FMTE9XX0hUVFBfQ09OTkVDVElPTlMgPSBUUlVFDQo+IA0K PiAtDQo+IA0KPiAtIWluY2x1ZGUgQXJtVmlydFBrZy9Bcm1WaXJ0LmRzYy5pbmMNCj4gDQo+IC0h aW5jbHVkZSBNZGVQa2cvTWRlTGlicy5kc2MuaW5jDQo+IA0KPiAtDQo+IA0KPiAtW0xpYnJhcnlD bGFzc2VzLmNvbW1vbl0NCj4gDQo+IC0gIEFybUxpYnxBcm1Qa2cvTGlicmFyeS9Bcm1MaWIvQXJt QmFzZUxpYi5pbmYNCj4gDQo+IC0gIEFybU1tdUxpYnxBcm1Qa2cvTGlicmFyeS9Bcm1NbXVMaWIv QXJtTW11QmFzZUxpYi5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gICMgVmlydGlvIFN1cHBvcnQNCj4g DQo+IC0gIFZpcnRpb0xpYnxPdm1mUGtnL0xpYnJhcnkvVmlydGlvTGliL1ZpcnRpb0xpYi5pbmYN Cj4gDQo+IC0gIFZpcnRpb01taW9EZXZpY2VMaWJ8T3ZtZlBrZy9MaWJyYXJ5L1ZpcnRpb01taW9E ZXZpY2VMaWIvVmlydGlvTW1pb0RldmljZUxpYi5pbmYNCj4gDQo+IC0gIFFlbXVGd0NmZ0xpYnxP dm1mUGtnL0xpYnJhcnkvUWVtdUZ3Q2ZnTGliL1FlbXVGd0NmZ0xpYk1taW8uaW5mDQo+IA0KPiAt ICBRZW11RndDZmdTM0xpYnxPdm1mUGtnL0xpYnJhcnkvUWVtdUZ3Q2ZnUzNMaWIvQmFzZVFlbXVG d0NmZ1MzTGliTnVsbC5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gIEFybVBsYXRmb3JtTGlifEFybVBs YXRmb3JtUGtnL0xpYnJhcnkvQXJtUGxhdGZvcm1MaWJOdWxsL0FybVBsYXRmb3JtTGliTnVsbC5p bmYNCj4gDQo+IC0NCj4gDQo+IC0gIFRpbWVyTGlifEFybVBrZy9MaWJyYXJ5L0FybUFyY2hUaW1l ckxpYi9Bcm1BcmNoVGltZXJMaWIuaW5mDQo+IA0KPiAtICBOb3JGbGFzaFBsYXRmb3JtTGlifEFy bVZpcnRQa2cvTGlicmFyeS9Ob3JGbGFzaFFlbXVMaWIvTm9yRmxhc2hRZW11TGliLmluZg0KPiAN Cj4gLQ0KPiANCj4gLSAgQ2Fwc3VsZUxpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVDYXBzdWxl TGliTnVsbC9EeGVDYXBzdWxlTGliTnVsbC5pbmYNCj4gDQo+IC0gIEJvb3RMb2dvTGlifE1kZU1v ZHVsZVBrZy9MaWJyYXJ5L0Jvb3RMb2dvTGliL0Jvb3RMb2dvTGliLmluZg0KPiANCj4gLSAgUGxh dGZvcm1Cb290TWFuYWdlckxpYnxBcm1WaXJ0UGtnL0xpYnJhcnkvUGxhdGZvcm1Cb290TWFuYWdl ckxpYi9QbGF0Zm9ybUJvb3RNYW5hZ2VyTGliLmluZg0KPiANCj4gLSAgUGxhdGZvcm1CbVByaW50 U2NMaWJ8T3ZtZlBrZy9MaWJyYXJ5L1BsYXRmb3JtQm1QcmludFNjTGliL1BsYXRmb3JtQm1Qcmlu dFNjTGliLmluZg0KPiANCj4gLSAgQ3VzdG9taXplZERpc3BsYXlMaWJ8TWRlTW9kdWxlUGtnL0xp YnJhcnkvQ3VzdG9taXplZERpc3BsYXlMaWIvQ3VzdG9taXplZERpc3BsYXlMaWIuaW5mDQo+IA0K PiAtICBGcmFtZUJ1ZmZlckJsdExpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9GcmFtZUJ1ZmZlckJs dExpYi9GcmFtZUJ1ZmZlckJsdExpYi5pbmYNCj4gDQo+IC0gIFFlbXVCb290T3JkZXJMaWJ8T3Zt ZlBrZy9MaWJyYXJ5L1FlbXVCb290T3JkZXJMaWIvUWVtdUJvb3RPcmRlckxpYi5pbmYNCj4gDQo+ IC0gIEZpbGVFeHBsb3JlckxpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9GaWxlRXhwbG9yZXJMaWIv RmlsZUV4cGxvcmVyTGliLmluZg0KPiANCj4gLSAgUGNpUGNkUHJvZHVjZXJMaWJ8T3ZtZlBrZy9G ZHQvRmR0UGNpUGNkUHJvZHVjZXJMaWIvRmR0UGNpUGNkUHJvZHVjZXJMaWIuaW5mDQo+IA0KPiAt ICBQY2lTZWdtZW50TGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VQY2lTZWdtZW50TGliUGNpL0Jhc2VQ Y2lTZWdtZW50TGliUGNpLmluZg0KPiANCj4gLSAgUGNpSG9zdEJyaWRnZUxpYnxPdm1mUGtnL0Zk dC9GZHRQY2lIb3N0QnJpZGdlTGliL0ZkdFBjaUhvc3RCcmlkZ2VMaWIuaW5mDQo+IA0KPiAtICBS ZGtCb290TWFuYWdlckxpYnxQbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFnZXJM aWIvUmRrQm9vdE1hbmFnZXJMaWIuaW5mDQo+IA0KPiAtDQo+IA0KPiAtW0xpYnJhcnlDbGFzc2Vz LmNvbW1vbi5QRUlNXQ0KPiANCj4gLSAgQXJtVmlydE1lbUluZm9MaWJ8QXJtVmlydFBrZy9MaWJy YXJ5L1FlbXVWaXJ0TWVtSW5mb0xpYi9RZW11VmlydE1lbUluZm9QZWlMaWIuaW5mDQo+IA0KPiAt DQo+IA0KPiAtW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5EWEVfRFJJVkVSXQ0KPiANCj4gLSAgUmVw b3J0U3RhdHVzQ29kZUxpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9EeGVSZXBvcnRTdGF0dXNDb2Rl TGliL0R4ZVJlcG9ydFN0YXR1c0NvZGVMaWIuaW5mDQo+IA0KPiAtDQo+IA0KPiAtW0xpYnJhcnlD bGFzc2VzLmNvbW1vbi5VRUZJX0RSSVZFUl0NCj4gDQo+IC0gIFVlZmlTY3NpTGlifE1kZVBrZy9M aWJyYXJ5L1VlZmlTY3NpTGliL1VlZmlTY3NpTGliLmluZg0KPiANCj4gLQ0KPiANCj4gLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAtIw0KPiANCj4gLSMgUGNkIFNlY3Rpb24gLSBsaXN0 IG9mIGFsbCBFREsgSUkgUENEIEVudHJpZXMgZGVmaW5lZCBieSB0aGlzIFBsYXRmb3JtDQo+IA0K PiAtIw0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAtDQo+IA0KPiAtW1Bj ZHNGZWF0dXJlRmxhZy5jb21tb25dDQo+IA0KPiAtICBnVWVmaU92bWZQa2dUb2tlblNwYWNlR3Vp ZC5QY2RRZW11Qm9vdE9yZGVyUGNpVHJhbnNsYXRpb258VFJVRQ0KPiANCj4gLSAgZ1VlZmlPdm1m UGtnVG9rZW5TcGFjZUd1aWQuUGNkUWVtdUJvb3RPcmRlck1taW9UcmFuc2xhdGlvbnxUUlVFDQo+ IA0KPiAtDQo+IA0KPiAtICAjIyBJZiBUUlVFLCBHcmFwaGljcyBPdXRwdXQgUHJvdG9jb2wgd2ls bCBiZSBpbnN0YWxsZWQgb24gdmlydHVhbCBoYW5kbGUgY3JlYXRlZCBieSBDb25zcGxpdHRlckR4 ZS4NCj4gDQo+IC0gICMgIEl0IGNvdWxkIGJlIHNldCBGQUxTRSB0byBzYXZlIHNpemUuDQo+IA0K PiAtICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ29uT3V0R29wU3VwcG9ydHxU UlVFDQo+IA0KPiAtICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ29uT3V0VWdh U3VwcG9ydHxGQUxTRQ0KPiANCj4gLQ0KPiANCj4gLVtQY2RzRml4ZWRBdEJ1aWxkLmNvbW1vbl0N Cj4gDQo+IC0gIGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZENvcmVDb3VudHwxDQo+IA0K PiAtIWlmICQoQVJDSCkgPT0gQUFSQ0g2NA0KPiANCj4gLSAgZ0FybVRva2VuU3BhY2VHdWlkLlBj ZFZGUEVuYWJsZWR8MQ0KPiANCj4gLSFlbmRpZg0KPiANCj4gLQ0KPiANCj4gLSAgZ0FybVBsYXRm b3JtVG9rZW5TcGFjZUd1aWQuUGNkQ1BVQ29yZXNTdGFja0Jhc2V8MHg0MDA3YzAwMA0KPiANCj4g LSAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkQ1BVQ29yZVByaW1hcnlTdGFja1NpemV8 MHg0MDAwDQo+IA0KPiAtICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4VmFy aWFibGVTaXplfDB4MjAwMA0KPiANCj4gLSAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZE1heEF1dGhWYXJpYWJsZVNpemV8MHgyODAwDQo+IA0KPiAtDQo+IA0KPiAtICAjIFNpemUg b2YgdGhlIHJlZ2lvbiB1c2VkIGJ5IFVFRkkgaW4gcGVybWFuZW50IG1lbW9yeSAoUmVzZXJ2ZWQg NjRNQikNCj4gDQo+IC0gIGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZFN5c3RlbU1lbW9y eVVlZmlSZWdpb25TaXplfDB4MDQwMDAwMDANCj4gDQo+IC0NCj4gDQo+IC0gICMjIFRydXN0em9u ZSBlbmFibGUgKHRvIG1ha2UgdGhlIHRyYW5zaXRpb24gZnJvbSBFTDMgdG8gRUwyIGluIEFybVBs YXRmb3JtUGtnL1NlYykNCj4gDQo+IC0gIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RUcnVzdHpvbmVT dXBwb3J0fEZBTFNFDQo+IA0KPiAtDQo+IA0KPiAtICAjDQo+IA0KPiAtICAjIEFSTSBQcmltZUNl bGwNCj4gDQo+IC0gICMNCj4gDQo+IC0NCj4gDQo+IC0gICMjIFBMMDExIC0gU2VyaWFsIFRlcm1p bmFsDQo+IA0KPiAtICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVWFydERlZmF1bHRCYXVk UmF0ZXwzODQwMA0KPiANCj4gLQ0KPiANCj4gLSAgIyMgRGVmYXVsdCBUZXJtaW5hbCBUeXBlDQo+ IA0KPiAtICAjIyAwLVBDQU5TSSwgMS1WVDEwMCwgMi1WVDAwKywgMy1VVEY4LCA0LVRUWVRFUk0N Cj4gDQo+IC0haWYgJChUVFlfVEVSTUlOQUwpID09IFRSVUUNCj4gDQo+IC0gIGdFZmlNZGVQa2dU b2tlblNwYWNlR3VpZC5QY2REZWZhdWx0VGVybWluYWxUeXBlfDQNCj4gDQo+IC0hZWxzZQ0KPiAN Cj4gLSAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZERlZmF1bHRUZXJtaW5hbFR5cGV8MQ0K PiANCj4gLSFlbmRpZg0KPiANCj4gLQ0KPiANCj4gLSAgIw0KPiANCj4gLSAgIyBBUk0gVmlydHVh bCBBcmNoaXRlY3R1cmFsIFRpbWVyIC0tIGZldGNoIGZyZXF1ZW5jeSBmcm9tIFFFTVUgKFRDRykg b3IgS1ZNDQo+IA0KPiAtICAjDQo+IA0KPiAtICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkQXJtQXJj aFRpbWVyRnJlcUluSHp8MA0KPiANCj4gLQ0KPiANCj4gLSAgIyBTeXN0ZW0gTWVtb3J5IEJhc2Ug LS0gZml4ZWQgYXQgMHg0MDAwXzAwMDANCj4gDQo+IC0gIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RT eXN0ZW1NZW1vcnlCYXNlfDB4NDAwMDAwMDANCj4gDQo+IC0NCj4gDQo+IC0gICMgaW5pdGlhbCBs b2NhdGlvbiBvZiB0aGUgZGV2aWNlIHRyZWUgYmxvYiBwYXNzZWQgYnkgUUVNVSAtLSBiYXNlIG9m IERSQU0NCj4gDQo+IC0gIGdBcm1WaXJ0VG9rZW5TcGFjZUd1aWQuUGNkRGV2aWNlVHJlZUluaXRp YWxCYXNlQWRkcmVzc3wweDQwMDAwMDAwDQo+IA0KPiAtDQo+IA0KPiAtICBnRWZpTWRlTW9kdWxl UGtnVG9rZW5TcGFjZUd1aWQuUGNkUmVzZXRPbk1lbW9yeVR5cGVJbmZvcm1hdGlvbkNoYW5nZXxG QUxTRQ0KPiANCj4gLSAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEJvb3RNYW5h Z2VyTWVudUZpbGV8eyAweDIxLCAweGFhLCAweDJjLCAweDQ2LCAweDE0LCAweDc2LCAweDAzLCAw eDQ1LCAweDgzLCAweDZlLCAweDhhLA0KPiAweGI2LCAweGY0LCAweDY2LCAweDIzLCAweDMxIH0N Cj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgVGhlIG1heGltdW0gcGh5c2ljYWwgSS9P IGFkZHJlc3NhYmlsaXR5IG9mIHRoZSBwcm9jZXNzb3IsIHNldCB3aXRoDQo+IA0KPiAtICAjIEJ1 aWxkQ3B1SG9iKCkuDQo+IA0KPiAtICAjDQo+IA0KPiAtICBnRW1iZWRkZWRUb2tlblNwYWNlR3Vp ZC5QY2RQcmVQaUNwdUlvU2l6ZXwxNg0KPiANCj4gLQ0KPiANCj4gLSAgIw0KPiANCj4gLSAgIyBS ZGtQa2cgUGNkcw0KPiANCj4gLSAgIw0KPiANCj4gLSAgIyBzeXN0ZW0gcGFydGl0aW9uIG5hbWUg aXMgbm90aGluZyBidXQgcm9vdGZzIHBhcnRpdGlvbiwgdXNlZCBvbmx5IGluIEh0dHAgYm9vdCAo RFJJKQ0KPiANCj4gLSAgZ1Jka1Rva2VuU3BhY2VHdWlkLlBjZFJka1N5c3RlbVBhcnRpdGlvbk5h bWV8IlZlbkh3KDgzN0RDQTlFLUU4NzQtNEQ4Mi1CMjlBLTIzRkUwRTIzRDFFMiwwMDNFMDAwQTAw MDAwMDAwKSINCj4gDQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDbWRMaW5lQXJnc3wi cm9vdD0vZGV2L3ZkYSINCj4gDQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDb25mRmls ZU5hbWV8TCJSZGsuY29uZiINCj4gDQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDb25m RmlsZURldmljZVBhdGh8TCJQY2lSb290KDB4MCkvUGNpKDB4MiwweDApIg0KPiANCj4gLQ0KPiAN Cj4gLSAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFJlcG9ydFN0YXR1c0NvZGVQcm9wZXJ0 eU1hc2t8Mw0KPiANCj4gLQ0KPiANCj4gLVtQY2RzRml4ZWRBdEJ1aWxkLkFBUkNINjRdDQo+IA0K PiAtICAjIENsZWFyaW5nIEJJVDAgaW4gdGhpcyBQQ0QgcHJldmVudHMgaW5zdGFsbGluZyBhIDMy LWJpdCBTTUJJT1MgZW50cnkgcG9pbnQsDQo+IA0KPiAtICAjIGlmIHRoZSBlbnRyeSBwb2ludCB2 ZXJzaW9uIGlzID49IDMuMC4gQUFSQ0g2NCBPU2VzIGNhbm5vdCBhc3N1bWUgdGhlDQo+IA0KPiAt ICAjIHByZXNlbmNlIG9mIHRoZSAzMi1iaXQgZW50cnkgcG9pbnQgYW55d2F5IChiZWNhdXNlIG1h bnkgQUFSQ0g2NCBzeXN0ZW1zDQo+IA0KPiAtICAjIGRvbid0IGhhdmUgMzItYml0IGFkZHJlc3Nh YmxlIHBoeXNpY2FsIFJBTSksIGFuZCB0aGUgYWRkaXRpb25hbCBhbGxvY2F0aW9ucw0KPiANCj4g LSAgIyBiZWxvdyA0IEdCIG5lZWRsZXNzbHkgZnJhZ21lbnQgdGhlIG1lbW9yeSBtYXAuIFNvIGV4 cG9zZSB0aGUgNjQtYml0IGVudHJ5DQo+IA0KPiAtICAjIHBvaW50IG9ubHksIGZvciBlbnRyeSBw b2ludCB2ZXJzaW9ucyA+PSAzLjAuDQo+IA0KPiAtICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkU21iaW9zRW50cnlQb2ludFByb3ZpZGVNZXRob2R8MHgyDQo+IA0KPiAtDQo+IA0K PiAtICAjIEFDUEkgcHJlZGF0ZXMgdGhlIEFBUkNINjQgYXJjaGl0ZWN0dXJlIGJ5IDUgdmVyc2lv bnMsIHNvDQo+IA0KPiAtICAjIHdlIG9ubHkgdGFyZ2V0IE9TZXMgdGhhdCBzdXBwb3J0IEFDUEkg djUuMCBvciBsYXRlcg0KPiANCj4gLSAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBj ZEFjcGlFeHBvc2VkVGFibGVWZXJzaW9uc3wweDIwDQo+IA0KPiAtDQo+IA0KPiAtW1BjZHNEeW5h bWljRGVmYXVsdC5jb21tb25dDQo+IA0KPiAtICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNk UGxhdGZvcm1Cb290VGltZU91dHwzDQo+IA0KPiAtDQo+IA0KPiAtICAjIyBJZiBUUlVFLCBPdm1m UGtnL0FjcGlQbGF0Zm9ybUR4ZSB3aWxsIG5vdCB3YWl0IGZvciBQQ0kNCj4gDQo+IC0gICMgIGVu dW1lcmF0aW9uIHRvIGNvbXBsZXRlIGJlZm9yZSBpbnN0YWxsaW5nIEFDUEkgdGFibGVzLg0KPiAN Cj4gLSAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaURpc2FibGVCdXNFbnVt ZXJhdGlvbnxUUlVFDQo+IA0KPiAtDQo+IA0KPiAtICAjIFN5c3RlbSBNZW1vcnkgU2l6ZSAtLSAx IE1CIGluaXRpYWxseSwgYWN0dWFsIHNpemUgd2lsbCBiZSBmZXRjaGVkIGZyb20gRFQNCj4gDQo+ IC0gIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RTeXN0ZW1NZW1vcnlTaXplfDB4MDAxMDAwMDANCj4g DQo+IC0NCj4gDQo+IC0gIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RBcm1BcmNoVGltZXJTZWNJbnRy TnVtfDB4MA0KPiANCj4gLSAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEFybUFyY2hUaW1lckludHJO dW18MHgwDQo+IA0KPiAtICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkQXJtQXJjaFRpbWVyVmlydElu dHJOdW18MHgwDQo+IA0KPiAtICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkQXJtQXJjaFRpbWVySHlw SW50ck51bXwweDANCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgQVJNIEdlbmVyYWwg SW50ZXJydXB0IENvbnRyb2xsZXINCj4gDQo+IC0gICMNCj4gDQo+IC0gIGdBcm1Ub2tlblNwYWNl R3VpZC5QY2RHaWNEaXN0cmlidXRvckJhc2V8MHgwDQo+IA0KPiAtICBnQXJtVG9rZW5TcGFjZUd1 aWQuUGNkR2ljUmVkaXN0cmlidXRvcnNCYXNlfDB4MA0KPiANCj4gLSAgZ0FybVRva2VuU3BhY2VH dWlkLlBjZEdpY0ludGVycnVwdEludGVyZmFjZUJhc2V8MHgwDQo+IA0KPiAtDQo+IA0KPiAtICAj IyBQTDAzMSBSZWFsVGltZUNsb2NrDQo+IA0KPiAtICBnQXJtUGxhdGZvcm1Ub2tlblNwYWNlR3Vp ZC5QY2RQTDAzMVJ0Y0Jhc2V8MHgwDQo+IA0KPiAtDQo+IA0KPiAtICAjIHNldCBQY2RQY2lFeHBy ZXNzQmFzZUFkZHJlc3MgdG8gTUFYX1VJTlQ2NCwgd2hpY2ggc2lnbmlmaWVzIHRoYXQgdGhpcw0K PiANCj4gLSAgIyBQQ0QgYW5kIFBjZFBjaURpc2FibGVCdXNFbnVtZXJhdGlvbiBhYm92ZSBoYXZl IG5vdCBiZWVuIGFzc2lnbmVkIHlldA0KPiANCj4gLSAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZFBjaUV4cHJlc3NCYXNlQWRkcmVzc3wweEZGRkZGRkZGRkZGRkZGRkYNCj4gDQo+IC0NCj4g DQo+IC0gIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lJb1RyYW5zbGF0aW9ufDB4MA0K PiANCj4gLQ0KPiANCj4gLSAgIw0KPiANCj4gLSAgIyBTZXQgdmlkZW8gcmVzb2x1dGlvbiBmb3Ig Ym9vdCBvcHRpb25zIGFuZCBmb3IgdGV4dCBzZXR1cC4NCj4gDQo+IC0gICMgUGxhdGZvcm1EeGUg Y2FuIHNldCB0aGUgZm9ybWVyIGF0IHJ1bnRpbWUuDQo+IA0KPiAtICAjDQo+IA0KPiAtICBnRWZp TWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmlkZW9Ib3Jpem9udGFsUmVzb2x1dGlvbnw4 MDANCj4gDQo+IC0gIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWaWRlb1ZlcnRp Y2FsUmVzb2x1dGlvbnw2MDANCj4gDQo+IC0gIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTZXR1cFZpZGVvSG9yaXpvbnRhbFJlc29sdXRpb258NjQwDQo+IA0KPiAtICBnRWZpTWRl TW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2V0dXBWaWRlb1ZlcnRpY2FsUmVzb2x1dGlvbnw0 ODANCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgU01CSU9TIGVudHJ5IHBvaW50IHZl cnNpb24NCj4gDQo+IC0gICMNCj4gDQo+IC0gIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTbWJpb3NWZXJzaW9ufDB4MDMwMA0KPiANCj4gLSAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2Vu U3BhY2VHdWlkLlBjZFNtYmlvc0RvY1JldnwweDANCj4gDQo+IC0gIGdVZWZpT3ZtZlBrZ1Rva2Vu U3BhY2VHdWlkLlBjZFFlbXVTbWJpb3NWYWxpZGF0ZWR8RkFMU0UNCj4gDQo+IC0NCj4gDQo+IC1b UGNkc0R5bmFtaWNIaWldDQo+IA0KPiAtICBnQXJtVmlydFRva2VuU3BhY2VHdWlkLlBjZEZvcmNl Tm9BY3BpfEwiRm9yY2VOb0FjcGkifGdBcm1WaXJ0VmFyaWFibGVHdWlkfDB4MHxGQUxTRXxOVixC Uw0KPiANCj4gLQ0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAtIw0KPiAN Cj4gLSMgQ29tcG9uZW50cyBTZWN0aW9uIC0gbGlzdCBvZiBhbGwgRURLIElJIE1vZHVsZXMgbmVl ZGVkIGJ5IHRoaXMgUGxhdGZvcm0NCj4gDQo+IC0jDQo+IA0KPiAtIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMNCj4gDQo+IC1bQ29tcG9uZW50cy5jb21tb25dDQo+IA0KPiAtICAjDQo+IA0KPiAtICAj IFBFSSBQaGFzZSBtb2R1bGVzDQo+IA0KPiAtICAjDQo+IA0KPiAtICBBcm1QbGF0Zm9ybVBrZy9Q cmVQZWlDb3JlL1ByZVBlaUNvcmVVbmlDb3JlLmluZg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL0Nv cmUvUGVpL1BlaU1haW4uaW5mDQo+IA0KPiAtICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1BDRC9Q ZWkvUGNkLmluZiB7DQo+IA0KPiAtICAgIDxMaWJyYXJ5Q2xhc3Nlcz4NCj4gDQo+IC0gICAgICBQ Y2RMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBjZExpYk51bGwvQmFzZVBjZExpYk51bGwuaW5mDQo+ IA0KPiAtICB9DQo+IA0KPiAtICBBcm1QbGF0Zm9ybVBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBl aW0uaW5mDQo+IA0KPiAtICBBcm1QbGF0Zm9ybVBrZy9NZW1vcnlJbml0UGVpL01lbW9yeUluaXRQ ZWltLmluZg0KPiANCj4gLSAgQXJtUGtnL0RyaXZlcnMvQ3B1UGVpL0NwdVBlaS5pbmYNCj4gDQo+ IC0NCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUGVpL1ZhcmlhYmxl UGVpLmluZg0KPiANCj4gLQ0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9E eGVJcGwuaW5mIHsNCj4gDQo+IC0gICAgPExpYnJhcnlDbGFzc2VzPg0KPiANCj4gLSAgICAgIE5V TEx8TWRlTW9kdWxlUGtnL0xpYnJhcnkvTHptYUN1c3RvbURlY29tcHJlc3NMaWIvTHptYUN1c3Rv bURlY29tcHJlc3NMaWIuaW5mDQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICAjDQo+IA0K PiAtICAjIERYRQ0KPiANCj4gLSAgIw0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0R4 ZU1haW4uaW5mIHsNCj4gDQo+IC0gICAgPExpYnJhcnlDbGFzc2VzPg0KPiANCj4gLSAgICAgIE5V TEx8TWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlQ3JjMzJHdWlkZWRTZWN0aW9uRXh0cmFjdExpYi9E eGVDcmMzMkd1aWRlZFNlY3Rpb25FeHRyYWN0TGliLmluZg0KPiANCj4gLSAgICAgIERldmljZVBh dGhMaWJ8TWRlUGtnL0xpYnJhcnkvVWVmaURldmljZVBhdGhMaWIvVWVmaURldmljZVBhdGhMaWIu aW5mDQo+IA0KPiAtICB9DQo+IA0KPiAtICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1BDRC9EeGUv UGNkLmluZiB7DQo+IA0KPiAtICAgIDxMaWJyYXJ5Q2xhc3Nlcz4NCj4gDQo+IC0gICAgICBQY2RM aWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBjZExpYk51bGwvQmFzZVBjZExpYk51bGwuaW5mDQo+IA0K PiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICAjDQo+IA0KPiAtICAjIEFyY2hpdGVjdHVyYWwgUHJv dG9jb2xzDQo+IA0KPiAtICAjDQo+IA0KPiAtICBBcm1Qa2cvRHJpdmVycy9DcHVEeGUvQ3B1RHhl LmluZg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL0NvcmUvUnVudGltZUR4ZS9SdW50aW1lRHhlLmlu Zg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1Zh cmlhYmxlUnVudGltZUR4ZS5pbmYgew0KPiANCj4gLSAgICA8TGlicmFyeUNsYXNzZXM+DQo+IA0K PiAtICAgICAgTlVMTHxNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJDaGVja1VlZmlMaWIvVmFyQ2hl Y2tVZWZpTGliLmluZg0KPiANCj4gLSAgICAgIE5VTEx8RW1iZWRkZWRQa2cvTGlicmFyeS9OdlZh clN0b3JlRm9ybWF0dGVkTGliL052VmFyU3RvcmVGb3JtYXR0ZWRMaWIuaW5mDQo+IA0KPiAtICAg ICAgIyBkb24ndCB1c2UgdW5hbGlnbmVkIENvcHlNZW0gKCkgb24gdGhlIFVFRkkgdmFyc3RvcmUg Tk9SIGZsYXNoIHJlZ2lvbg0KPiANCj4gLSAgICAgIEJhc2VNZW1vcnlMaWJ8TWRlUGtnL0xpYnJh cnkvQmFzZU1lbW9yeUxpYi9CYXNlTWVtb3J5TGliLmluZg0KPiANCj4gLSAgfQ0KPiANCj4gLSFp ZiAkKFNFQ1VSRV9CT09UX0VOQUJMRSkgPT0gVFJVRQ0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1Vu aXZlcnNhbC9TZWN1cml0eVN0dWJEeGUvU2VjdXJpdHlTdHViRHhlLmluZiB7DQo+IA0KPiAtICAg IDxMaWJyYXJ5Q2xhc3Nlcz4NCj4gDQo+IC0gICAgICBOVUxMfFNlY3VyaXR5UGtnL0xpYnJhcnkv RHhlSW1hZ2VWZXJpZmljYXRpb25MaWIvRHhlSW1hZ2VWZXJpZmljYXRpb25MaWIuaW5mDQo+IA0K PiAtICB9DQo+IA0KPiAtICBTZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJl Qm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uZmlnRHhlLmluZg0KPiANCj4gLSFlbHNlDQo+IA0K PiAtICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1NlY3VyaXR5U3R1YkR4ZS9TZWN1cml0eVN0dWJE eGUuaW5mDQo+IA0KPiAtIWVuZGlmDQo+IA0KPiAtICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Nh cHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSdW50aW1lRHhlLmluZg0KPiANCj4gLSAgTWRlTW9kdWxl UGtnL1VuaXZlcnNhbC9GYXVsdFRvbGVyYW50V3JpdGVEeGUvRmF1bHRUb2xlcmFudFdyaXRlRHhl LmluZg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9Nb25vdG9uaWNDb3VudGVyUnVu dGltZUR4ZS9Nb25vdG9uaWNDb3VudGVyUnVudGltZUR4ZS5pbmYNCj4gDQo+IC0gIE1kZU1vZHVs ZVBrZy9Vbml2ZXJzYWwvUmVzZXRTeXN0ZW1SdW50aW1lRHhlL1Jlc2V0U3lzdGVtUnVudGltZUR4 ZS5pbmYNCj4gDQo+IC0gIEVtYmVkZGVkUGtnL1JlYWxUaW1lQ2xvY2tSdW50aW1lRHhlL1JlYWxU aW1lQ2xvY2tSdW50aW1lRHhlLmluZiB7DQo+IA0KPiAtICAgIDxMaWJyYXJ5Q2xhc3Nlcz4NCj4g DQo+IC0gICAgICBOVUxMfEFybVZpcnRQa2cvTGlicmFyeS9Bcm1WaXJ0UEwwMzFGZHRDbGllbnRM aWIvQXJtVmlydFBMMDMxRmR0Q2xpZW50TGliLmluZg0KPiANCj4gLSAgfQ0KPiANCj4gLSAgRW1i ZWRkZWRQa2cvTWV0cm9ub21lRHhlL01ldHJvbm9tZUR4ZS5pbmYNCj4gDQo+IC0NCj4gDQo+IC0g IE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ29uc29sZS9Db25QbGF0Zm9ybUR4ZS9Db25QbGF0Zm9y bUR4ZS5pbmYNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ29uc29sZS9Db25TcGxp dHRlckR4ZS9Db25TcGxpdHRlckR4ZS5pbmYNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvQ29uc29sZS9HcmFwaGljc0NvbnNvbGVEeGUvR3JhcGhpY3NDb25zb2xlRHhlLmluZg0KPiAN Cj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9Db25zb2xlL1Rlcm1pbmFsRHhlL1Rlcm1pbmFs RHhlLmluZg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9TZXJpYWxEeGUvU2VyaWFs RHhlLmluZg0KPiANCj4gLQ0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9IaWlEYXRh YmFzZUR4ZS9IaWlEYXRhYmFzZUR4ZS5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gIEFybVBrZy9Ecml2 ZXJzL0FybUdpYy9Bcm1HaWNEeGUuaW5mDQo+IA0KPiAtICBBcm1Qa2cvRHJpdmVycy9UaW1lckR4 ZS9UaW1lckR4ZS5pbmYgew0KPiANCj4gLSAgICA8TGlicmFyeUNsYXNzZXM+DQo+IA0KPiAtICAg ICAgTlVMTHxBcm1WaXJ0UGtnL0xpYnJhcnkvQXJtVmlydFRpbWVyRmR0Q2xpZW50TGliL0FybVZp cnRUaW1lckZkdENsaWVudExpYi5pbmYNCj4gDQo+IC0gIH0NCj4gDQo+IC0gIEFybVBsYXRmb3Jt UGtnL0RyaXZlcnMvTm9yRmxhc2hEeGUvTm9yRmxhc2hEeGUuaW5mDQo+IA0KPiAtICBNZGVNb2R1 bGVQa2cvVW5pdmVyc2FsL1dhdGNoZG9nVGltZXJEeGUvV2F0Y2hkb2dUaW1lci5pbmYNCj4gDQo+ IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgUGxhdGZvcm0gRHJpdmVyDQo+IA0KPiAtICAjDQo+ IA0KPiAtICBPdm1mUGtnL0ZkdC9WaXJ0aW9GZHREeGUvVmlydGlvRmR0RHhlLmluZg0KPiANCj4g LSAgRW1iZWRkZWRQa2cvRHJpdmVycy9GZHRDbGllbnREeGUvRmR0Q2xpZW50RHhlLmluZg0KPiAN Cj4gLSAgT3ZtZlBrZy9GZHQvSGlnaE1lbUR4ZS9IaWdoTWVtRHhlLmluZg0KPiANCj4gLSAgT3Zt ZlBrZy9WaXJ0aW9CbGtEeGUvVmlydGlvQmxrLmluZg0KPiANCj4gLSAgT3ZtZlBrZy9WaXJ0aW9T Y3NpRHhlL1ZpcnRpb1Njc2kuaW5mDQo+IA0KPiAtICBPdm1mUGtnL1ZpcnRpb05ldER4ZS9WaXJ0 aW9OZXQuaW5mDQo+IA0KPiAtICBPdm1mUGtnL1ZpcnRpb1JuZ0R4ZS9WaXJ0aW9SbmcuaW5mDQo+ IA0KPiAtDQo+IA0KPiAtICAjDQo+IA0KPiAtICAjIEZBVCBmaWxlc3lzdGVtICsgR1BUL01CUiBw YXJ0aXRpb25pbmcgKyBVREYgZmlsZXN5c3RlbQ0KPiANCj4gLSAgIw0KPiANCj4gLSAgTWRlTW9k dWxlUGtnL1VuaXZlcnNhbC9EaXNrL0Rpc2tJb0R4ZS9EaXNrSW9EeGUuaW5mDQo+IA0KPiAtICBN ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1BhcnRpdGlvbkR4ZS5pbmYN Cj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9Vbmljb2RlQ29sbGF0aW9uL0Vu Z2xpc2hEeGUvRW5nbGlzaER4ZS5pbmYNCj4gDQo+IC0gIEZhdFBrZy9FbmhhbmNlZEZhdER4ZS9G YXQuaW5mDQo+IA0KPiAtICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Rpc2svVWRmRHhlL1VkZkR4 ZS5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgQmRzDQo+IA0KPiAtICAjDQo+ IA0KPiAtICBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0RldmljZVBhdGhEeGUvRGV2aWNlUGF0aER4 ZS5pbmYgew0KPiANCj4gLSAgICA8TGlicmFyeUNsYXNzZXM+DQo+IA0KPiAtICAgICAgRGV2aWNl UGF0aExpYnxNZGVQa2cvTGlicmFyeS9VZWZpRGV2aWNlUGF0aExpYi9VZWZpRGV2aWNlUGF0aExp Yi5pbmYNCj4gDQo+IC0gICAgICBQY2RMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBjZExpYk51bGwv QmFzZVBjZExpYk51bGwuaW5mDQo+IA0KPiAtICB9DQo+IA0KPiAtICBNZGVNb2R1bGVQa2cvVW5p dmVyc2FsL0Rpc3BsYXlFbmdpbmVEeGUvRGlzcGxheUVuZ2luZUR4ZS5pbmYNCj4gDQo+IC0gIE1k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvU2V0dXBCcm93c2VyRHhlL1NldHVwQnJvd3NlckR4ZS5pbmYN Cj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRHJpdmVySGVhbHRoTWFuYWdlckR4ZS9E cml2ZXJIZWFsdGhNYW5hZ2VyRHhlLmluZg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9CZHNEeGUvQmRzRHhlLmluZg0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL0xvZ28vTG9nb0R4ZS5p bmYNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9BcHBsaWNhdGlvbi9VaUFwcC9VaUFwcC5pbmYgew0K PiANCj4gLSAgICA8TGlicmFyeUNsYXNzZXM+DQo+IA0KPiAtICAgICAgTlVMTHxNZGVNb2R1bGVQ a2cvTGlicmFyeS9EZXZpY2VNYW5hZ2VyVWlMaWIvRGV2aWNlTWFuYWdlclVpTGliLmluZg0KPiAN Cj4gLSAgICAgIE5VTEx8TWRlTW9kdWxlUGtnL0xpYnJhcnkvQm9vdE1hbmFnZXJVaUxpYi9Cb290 TWFuYWdlclVpTGliLmluZg0KPiANCj4gLSAgICAgIE5VTEx8TWRlTW9kdWxlUGtnL0xpYnJhcnkv Qm9vdE1haW50ZW5hbmNlTWFuYWdlclVpTGliL0Jvb3RNYWludGVuYW5jZU1hbmFnZXJVaUxpYi5p bmYNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgTmV0d29ya2lu ZyBzdGFjaw0KPiANCj4gLSAgIw0KPiANCj4gLSFpbmNsdWRlIE5ldHdvcmtQa2cvTmV0d29yay5k c2MuaW5jDQo+IA0KPiAtDQo+IA0KPiAtICAjDQo+IA0KPiAtICAjIFNDU0kgQnVzIGFuZCBEaXNr IERyaXZlcg0KPiANCj4gLSAgIw0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL0J1cy9TY3NpL1Njc2lC dXNEeGUvU2NzaUJ1c0R4ZS5pbmYNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9CdXMvU2NzaS9TY3Np RGlza0R4ZS9TY3NpRGlza0R4ZS5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMg U01CSU9TIFN1cHBvcnQNCj4gDQo+IC0gICMNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvU21iaW9zRHhlL1NtYmlvc0R4ZS5pbmYgew0KPiANCj4gLSAgICA8TGlicmFyeUNsYXNzZXM+ DQo+IA0KPiAtICAgICAgTlVMTHxPdm1mUGtnL0xpYnJhcnkvU21iaW9zVmVyc2lvbkxpYi9EZXRl Y3RTbWJpb3NWZXJzaW9uTGliLmluZg0KPiANCj4gLSAgfQ0KPiANCj4gLSAgT3ZtZlBrZy9TbWJp b3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gICMN Cj4gDQo+IC0gICMgUENJIHN1cHBvcnQNCj4gDQo+IC0gICMNCj4gDQo+IC0gIEFybVBrZy9Ecml2 ZXJzL0FybVBjaUNwdUlvMkR4ZS9Bcm1QY2lDcHVJbzJEeGUuaW5mIHsNCj4gDQo+IC0gICAgPExp YnJhcnlDbGFzc2VzPg0KPiANCj4gLSAgICAgIE5VTEx8T3ZtZlBrZy9GZHQvRmR0UGNpUGNkUHJv ZHVjZXJMaWIvRmR0UGNpUGNkUHJvZHVjZXJMaWIuaW5mDQo+IA0KPiAtICB9DQo+IA0KPiAtICBN ZGVNb2R1bGVQa2cvQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaUhvc3RCcmlkZ2VEeGUuaW5m DQo+IA0KPiAtICBNZGVNb2R1bGVQa2cvQnVzL1BjaS9QY2lCdXNEeGUvUGNpQnVzRHhlLmluZiB7 DQo+IA0KPiAtICAgIDxMaWJyYXJ5Q2xhc3Nlcz4NCj4gDQo+IC0gICAgICBOVUxMfE92bWZQa2cv RmR0L0ZkdFBjaVBjZFByb2R1Y2VyTGliL0ZkdFBjaVBjZFByb2R1Y2VyTGliLmluZg0KPiANCj4g LSAgfQ0KPiANCj4gLSAgT3ZtZlBrZy9WaXJ0aW9QY2lEZXZpY2VEeGUvVmlydGlvUGNpRGV2aWNl RHhlLmluZg0KPiANCj4gLSAgT3ZtZlBrZy9WaXJ0aW8xMER4ZS9WaXJ0aW8xMC5pbmYNCj4gDQo+ IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgVmlkZW8gc3VwcG9ydA0KPiANCj4gLSAgIw0KPiAN Cj4gLSAgT3ZtZlBrZy9RZW11UmFtZmJEeGUvUWVtdVJhbWZiRHhlLmluZg0KPiANCj4gLSAgT3Zt ZlBrZy9WaXJ0aW9HcHVEeGUvVmlydGlvR3B1LmluZg0KPiANCj4gLSAgT3ZtZlBrZy9QbGF0Zm9y bUR4ZS9QbGF0Zm9ybS5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgVVNCIFN1 cHBvcnQNCj4gDQo+IC0gICMNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1VoY2lEeGUv VWhjaUR4ZS5pbmYNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL0VoY2lEeGUvRWhjaUR4 ZS5pbmYNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1hoY2lEeGUvWGhjaUR4ZS5pbmYN Cj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JCdXNEeGUuaW5mDQo+ IA0KPiAtICBNZGVNb2R1bGVQa2cvQnVzL1VzYi9Vc2JLYkR4ZS9Vc2JLYkR4ZS5pbmYNCj4gDQo+ IC0gIE1kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYk1hc3NTdG9yYWdlRHhlL1VzYk1hc3NTdG9yYWdl RHhlLmluZg0KPiANCj4gLQ0KPiANCj4gLSAgIw0KPiANCj4gLSAgIyBBQ1BJIFN1cHBvcnQNCj4g DQo+IC0gICMNCj4gDQo+IC0gIEFybVZpcnRQa2cvUGxhdGZvcm1IYXNBY3BpRHREeGUvUGxhdGZv cm1IYXNBY3BpRHREeGUuaW5mDQo+IA0KPiAtDQo+IA0KPiAtICAjDQo+IA0KPiAtICAjIFJka1Br Zw0KPiANCj4gLSAgIw0KPiANCj4gLSAgUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9Ecmkv RHJpLmluZg0KPiANCj4gLSAgUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9TZWN1cmVCb290 L1NlY3VyZUJvb3QuaW5mDQo+IA0KPiAtICBQbGF0Zm9ybS9Db21jYXN0L0FwcGxpY2F0aW9uL0Ry aVNlY3VyZUJvb3QvRHJpU2VjdXJlQm9vdC5pbmYNCj4gDQo+IC0NCj4gDQo+IC0gICMgU3RhdHVz IENvZGUgUm91dGluZw0KPiANCj4gLSAgIw0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9SZXBvcnRTdGF0dXNDb2RlUm91dGVyL1J1bnRpbWVEeGUvUmVwb3J0U3RhdHVzQ29kZVJvdXRl clJ1bnRpbWVEeGUuaW5mDQo+IA0KPiAtDQo+IA0KPiAtW0NvbXBvbmVudHMuQUFSQ0g2NF0NCj4g DQo+IC0gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQWNwaS9Cb290R3JhcGhpY3NSZXNvdXJjZVRh YmxlRHhlL0Jvb3RHcmFwaGljc1Jlc291cmNlVGFibGVEeGUuaW5mDQo+IA0KPiAtICBPdm1mUGtn L0FjcGlQbGF0Zm9ybUR4ZS9RZW11RndDZmdBY3BpUGxhdGZvcm1EeGUuaW5mIHsNCj4gDQo+IC0g ICAgPExpYnJhcnlDbGFzc2VzPg0KPiANCj4gLSAgICAgIE5VTEx8T3ZtZlBrZy9GZHQvRmR0UGNp UGNkUHJvZHVjZXJMaWIvRmR0UGNpUGNkUHJvZHVjZXJMaWIuaW5mDQo+IA0KPiAtICB9DQo+IA0K PiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vQ29tY2FzdC9SREtRZW11L1JES1FlbXUuZmRmIGIvUGxh dGZvcm0vQ29tY2FzdC9SREtRZW11L1JES1FlbXUuZmRmDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCA5NTNhNzJjOTU1YzQuLjAwMDAwMDAwMDAwMA0KPiAtLS0gYS9QbGF0Zm9y bS9Db21jYXN0L1JES1FlbXUvUkRLUWVtdS5mZGYNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwx MjIgKzAsMCBAQA0KPiAtIw0KPiANCj4gLSMgIENvcHlyaWdodCAoYykgMjAxMS0yMDE1LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0jICBDb3B5cmlnaHQgKGMpIDIw MTQgLSAyMDE4LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0j ICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gDQo+IC0jDQo+IA0KPiAtIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+IC0jDQo+IA0KPiAtDQo+IA0KPiAtIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMNCj4gDQo+IC0jDQo+IA0KPiAtIyBGRCBTZWN0aW9uDQo+IA0KPiAtIyBU aGUgW0ZEXSBTZWN0aW9uIGlzIG1hZGUgdXAgb2YgdGhlIGRlZmluaXRpb24gc3RhdGVtZW50cyBh bmQgYQ0KPiANCj4gLSMgZGVzY3JpcHRpb24gb2Ygd2hhdCBnb2VzIGludG8gIHRoZSBGbGFzaCBE ZXZpY2UgSW1hZ2UuICBFYWNoIEZEIHNlY3Rpb24NCj4gDQo+IC0jIGRlZmluZXMgb25lIGZsYXNo ICJkZXZpY2UiIGltYWdlLiAgQSBmbGFzaCBkZXZpY2UgaW1hZ2UgbWF5IGJlIG9uZSBvZg0KPiAN Cj4gLSMgdGhlIGZvbGxvd2luZzogUmVtb3ZhYmxlIG1lZGlhIGJvb3RhYmxlIGltYWdlIChsaWtl IGEgYm9vdCBmbG9wcHkNCj4gDQo+IC0jIGltYWdlLCkgYW4gT3B0aW9uIFJPTSBpbWFnZSAodGhh dCB3b3VsZCBiZSAiZmxhc2hlZCIgaW50byBhbiBhZGQtaW4NCj4gDQo+IC0jIGNhcmQsKSBhIFN5 c3RlbSAiRmxhc2giICBpbWFnZSAodGhhdCB3b3VsZCBiZSBidXJuZWQgaW50byBhIHN5c3RlbSdz DQo+IA0KPiAtIyBmbGFzaCkgb3IgYW4gVXBkYXRlICgiQ2Fwc3VsZSIpIGltYWdlIHRoYXQgd2ls bCBiZSB1c2VkIHRvIHVwZGF0ZSBhbmQNCj4gDQo+IC0jIGV4aXN0aW5nIHN5c3RlbSBmbGFzaC4N Cj4gDQo+IC0jDQo+IA0KPiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IC0NCj4gDQo+ IC1bRkQuUkRLX0VGSV0NCj4gDQo+IC1CYXNlQWRkcmVzcyAgID0gMHgwMDAwMDAwMHxnQXJtVG9r ZW5TcGFjZUd1aWQuUGNkRmRCYXNlQWRkcmVzcyAgIyBRRU1VIGFzc2lnbnMgMCAtIDB4ODAwMDAw MCBmb3IgYSBCb290Uk9NDQo+IA0KPiAtU2l6ZSAgICAgICAgICA9IDB4MDAyMDAwMDB8Z0FybVRv a2VuU3BhY2VHdWlkLlBjZEZkU2l6ZSAgICAgICAgICMgVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhl IEZMQVNIIERldmljZQ0KPiANCj4gLUVyYXNlUG9sYXJpdHkgPSAxDQo+IA0KPiAtDQo+IA0KPiAt IyBUaGlzIG9uZSBpcyB0cmlja3ksIGl0IG11c3QgYmU6IEJsb2NrU2l6ZSAqIE51bUJsb2NrcyA9 IFNpemUNCj4gDQo+IC1CbG9ja1NpemUgICAgID0gMHgwMDAwMTAwMA0KPiANCj4gLU51bUJsb2Nr cyAgICAgPSAweDIwMA0KPiANCj4gLQ0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ IA0KPiAtIw0KPiANCj4gLSMgRm9sbG93aW5nIGFyZSBsaXN0cyBvZiBGRCBSZWdpb24gbGF5b3V0 IHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIGxvY2F0aW9ucyBvZiBkaWZmZXJlbnQNCj4gDQo+IC0j IGltYWdlcyB3aXRoaW4gdGhlIGZsYXNoIGRldmljZS4NCj4gDQo+IC0jDQo+IA0KPiAtIyBSZWdp b25zIG11c3QgYmUgZGVmaW5lZCBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIG1heSBub3Qgb3Zlcmxh cC4NCj4gDQo+IC0jDQo+IA0KPiAtIyBBIExheW91dCBSZWdpb24gc3RhcnQgd2l0aCBhIGVpZ2h0 IGRpZ2l0IGhleCBvZmZzZXQgKGxlYWRpbmcgIjB4IiByZXF1aXJlZCkgZm9sbG93ZWQgYnkNCj4g DQo+IC0jIHRoZSBwaXBlICJ8IiBjaGFyYWN0ZXIsIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRo ZSByZWdpb24sIGFsc28gaW4gaGV4IHdpdGggdGhlIGxlYWRpbmcNCj4gDQo+IC0jICIweCIgY2hh cmFjdGVycy4gTGlrZToNCj4gDQo+IC0jIE9mZnNldHxTaXplDQo+IA0KPiAtIyBQY2RPZmZzZXRD TmFtZXxQY2RTaXplQ05hbWUNCj4gDQo+IC0jIFJlZ2lvblR5cGUgPEZWLCBEQVRBLCBvciBGSUxF Pg0KPiANCj4gLSMNCj4gDQo+IC0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiANCj4gLQ0KPiAN Cj4gLSMNCj4gDQo+IC0jIFVFRkkgaGFzIHRyb3VibGUgZGVhbGluZyB3aXRoIEZWcyB0aGF0IHJl c2lkZSBhdCBwaHlzaWNhbCBhZGRyZXNzIDB4MC4NCj4gDQo+IC0jIFNvIGluc3RlYWQsIHB1dCBh IGhhcmRjb2RlZCAnanVtcCB0byAweDEwMDAnIGF0IG9mZnNldCAweDAsIGFuZCBwdXQgdGhlDQo+ IA0KPiAtIyByZWFsIEZWIGF0IG9mZnNldCAweDEwMDANCj4gDQo+IC0jDQo+IA0KPiAtMHgwMDAw MDAwMHwweDAwMDAxMDAwDQo+IA0KPiAtREFUQSA9IHsNCj4gDQo+IC0haWYgJChBUkNIKSA9PSBB QVJDSDY0DQo+IA0KPiAtICAweDAwLCAweDA0LCAweDAwLCAweDE0ICAgIyAnYiAweDEwMDAnIGlu IEFBcmNoNjQgQVNNDQo+IA0KPiAtIWVsc2UNCj4gDQo+IC0gIDB4ZmUsIDB4MDMsIDB4MDAsIDB4 ZWEgICAjICdiIDB4MTAwMCcgaW4gQUFyY2gzMiBBU00NCj4gDQo+IC0hZW5kaWYNCj4gDQo+IC19 DQo+IA0KPiAtDQo+IA0KPiAtMHgwMDAwMTAwMHwweDAwMWZmMDAwDQo+IA0KPiAtZ0FybVRva2Vu U3BhY2VHdWlkLlBjZEZ2QmFzZUFkZHJlc3N8Z0FybVRva2VuU3BhY2VHdWlkLlBjZEZ2U2l6ZQ0K PiANCj4gLUZWID0gRlZNQUlOX0NPTVBBQ1QNCj4gDQo+IC0NCj4gDQo+IC0haW5jbHVkZSBBcm1W aXJ0UGtnL1ZhclN0b3JlLmZkZi5pbmMNCj4gDQo+IC0NCj4gDQo+IC0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIw0KPiANCj4gLSMNCj4gDQo+IC0jIEZWIFNlY3Rpb24NCj4gDQo+IC0jDQo+IA0KPiAt IyBbRlZdIHNlY3Rpb24gaXMgdXNlZCB0byBkZWZpbmUgd2hhdCBjb21wb25lbnRzIG9yIG1vZHVs ZXMgYXJlIHBsYWNlZCB3aXRoaW4gYSBmbGFzaA0KPiANCj4gLSMgZGV2aWNlIGZpbGUuICBUaGlz IHNlY3Rpb24gYWxzbyBkZWZpbmVzIG9yZGVyIHRoZSBjb21wb25lbnRzIGFuZCBtb2R1bGVzIGFy ZSBwb3NpdGlvbmVkDQo+IA0KPiAtIyB3aXRoaW4gdGhlIGltYWdlLiAgVGhlIFtGVl0gc2VjdGlv biBjb25zaXN0cyBvZiBkZWZpbmUgc3RhdGVtZW50cywgc2V0IHN0YXRlbWVudHMgYW5kDQo+IA0K PiAtIyBtb2R1bGUgc3RhdGVtZW50cy4NCj4gDQo+IC0jDQo+IA0KPiAtIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMNCj4gDQo+IC0NCj4gDQo+IC0haW5jbHVkZSBBcm1WaXJ0UGtnL0FybVZpcnRRZW11 RnZNYWluLmZkZi5pbmMNCj4gDQo+IC0NCj4gDQo+IC1bRlYuRlZNQUlOX0NPTVBBQ1RdDQo+IA0K PiAtI0Z2TmFtZUd1aWQgICAgICAgICA9IDY0MDc0YWZlLTM0MGEtNGJlNi05NGJhLTkxYjViNGQw ZDQxMg0KPiANCj4gLUZ2QWxpZ25tZW50ICAgICAgICA9IDE2DQo+IA0KPiAtRVJBU0VfUE9MQVJJ VFkgICAgID0gMQ0KPiANCj4gLU1FTU9SWV9NQVBQRUQgICAgICA9IFRSVUUNCj4gDQo+IC1TVElD S1lfV1JJVEUgICAgICAgPSBUUlVFDQo+IA0KPiAtTE9DS19DQVAgICAgICAgICAgID0gVFJVRQ0K PiANCj4gLUxPQ0tfU1RBVFVTICAgICAgICA9IFRSVUUNCj4gDQo+IC1XUklURV9ESVNBQkxFRF9D QVAgPSBUUlVFDQo+IA0KPiAtV1JJVEVfRU5BQkxFRF9DQVAgID0gVFJVRQ0KPiANCj4gLVdSSVRF X1NUQVRVUyAgICAgICA9IFRSVUUNCj4gDQo+IC1XUklURV9MT0NLX0NBUCAgICAgPSBUUlVFDQo+ IA0KPiAtV1JJVEVfTE9DS19TVEFUVVMgID0gVFJVRQ0KPiANCj4gLVJFQURfRElTQUJMRURfQ0FQ ICA9IFRSVUUNCj4gDQo+IC1SRUFEX0VOQUJMRURfQ0FQICAgPSBUUlVFDQo+IA0KPiAtUkVBRF9T VEFUVVMgICAgICAgID0gVFJVRQ0KPiANCj4gLVJFQURfTE9DS19DQVAgICAgICA9IFRSVUUNCj4g DQo+IC1SRUFEX0xPQ0tfU1RBVFVTICAgPSBUUlVFDQo+IA0KPiAtDQo+IA0KPiAtICBJTkYgQXJt UGxhdGZvcm1Qa2cvUHJlUGVpQ29yZS9QcmVQZWlDb3JlVW5pQ29yZS5pbmYNCj4gDQo+IC0gIElO RiBNZGVNb2R1bGVQa2cvQ29yZS9QZWkvUGVpTWFpbi5pbmYNCj4gDQo+IC0gIElORiBBcm1QbGF0 Zm9ybVBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaW0uaW5mDQo+IA0KPiAtICBJTkYgQXJtUGxh dGZvcm1Qa2cvTWVtb3J5SW5pdFBlaS9NZW1vcnlJbml0UGVpbS5pbmYNCj4gDQo+IC0gIElORiBB cm1Qa2cvRHJpdmVycy9DcHVQZWkvQ3B1UGVpLmluZg0KPiANCj4gLSAgSU5GIE1kZU1vZHVsZVBr Zy9Vbml2ZXJzYWwvUENEL1BlaS9QY2QuaW5mDQo+IA0KPiAtICBJTkYgTWRlTW9kdWxlUGtnL1Vu aXZlcnNhbC9WYXJpYWJsZS9QZWkvVmFyaWFibGVQZWkuaW5mDQo+IA0KPiAtICBJTkYgTWRlTW9k dWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9EeGVJcGwuaW5mDQo+IA0KPiAtDQo+IA0KPiAtICAjDQo+ IA0KPiAtICAjIEZEVCBpbnN0YWxsYXRpb24NCj4gDQo+IC0gICMNCj4gDQo+IC0gICMgVGhlIFVF RkkgZHJpdmVyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2YgdGhlIGRyaXZlciB0byBiZSBk aXNwYXRjaGVkDQo+IA0KPiAtICAjIGFmdGVyIHRoZSBkZXZpY2UgZHJpdmVycyAoZWc6IEV0aGVy bmV0KSB0byBlbnN1cmUgd2UgaGF2ZSBzdXBwb3J0IGZvciB0aGVtLg0KPiANCj4gLSAgI0lORiBQ bGF0Zm9ybS9BUk0vRHJpdmVycy9GZHRQbGF0Zm9ybUR4ZS9GZHRQbGF0Zm9ybUR4ZS5pbmYNCj4g DQo+IC0NCj4gDQo+IC0gIEZJTEUgRlZfSU1BR0UgPSA5RTIxRkQ5My05QzcyLTRjMTUtOEM0Qi1F NzdGMURCMkQ3OTIgew0KPiANCj4gLSAgICBTRUNUSU9OIEdVSURFRCBFRTRFNTg5OC0zOTE0LTQy NTktOUQ2RS1EQzdCRDc5NDAzQ0YgUFJPQ0VTU0lOR19SRVFVSVJFRCA9IFRSVUUgew0KPiANCj4g LSAgICAgIFNFQ1RJT04gRlZfSU1BR0UgPSBGVk1BSU4NCj4gDQo+IC0gICAgfQ0KPiANCj4gLSAg fQ0KPiANCj4gLQ0KPiANCj4gLSFpbmNsdWRlIEFybVZpcnRQa2cvQXJtVmlydFJ1bGVzLmZkZi5p bmMNCj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L0FwcGxpY2F0aW9uL0RyaS9E cmkuaW5mIGIvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9EcmkvRHJpLmluZg0KPiBkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggNTE4YWMzZDY3MTcxLi4wMDAwMDAwMDAwMDAN Cj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9EcmkvRHJpLmluZg0KPiArKysg L2Rldi9udWxsDQo+IEBAIC0xLDM3ICswLDAgQEANCj4gLSMNCj4gLSMgIENvcHlyaWdodCAoYykg MjAxNC0yMDE4LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSMgIENv cHlyaWdodCAoYykgMjAxNi0yMDE3LCBDb21jYXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAt Iw0KPiAtIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g LSMNCj4gLQ0KPiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gLSMNCj4gLSMgRGVmaW5lcyBT ZWN0aW9uIC0gc3RhdGVtZW50cyB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNyZWF0ZSBhIE1h a2VmaWxlLg0KPiAtIw0KPiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gLQ0KPiAtW0RlZmlu ZXNdDQo+IC0gIElORl9WRVJTSU9OICAgICA9IDB4MDAwMTAwMUENCj4gLSAgQkFTRV9OQU1FICAg ICAgID0gUmRrRHJpTG9hZGVyDQo+IC0gIEZJTEVfR1VJRCAgICAgICA9IDA4MWJhMThhLWQ3MWUt NDBhNy05OWE5LWNkYjg2NDYzOTY2ZA0KPiAtICBNT0RVTEVfVFlQRSAgICAgPSBVRUZJX0FQUExJ Q0FUSU9ODQo+IC0gIFZFUlNJT05fU1RSSU5HICA9IDEuMA0KPiAtICBFTlRSWV9QT0lOVCAgICAg PSBEcmlFbnRyeVBvaW50DQo+IC0NCj4gLVtTb3VyY2VzXQ0KPiAtICBEcmkuYw0KPiAtDQo+IC1b UGFja2FnZXNdDQo+IC0gIEFybVBrZy9Bcm1Qa2cuZGVjDQo+IC0gIEVtYmVkZGVkUGtnL0VtYmVk ZGVkUGtnLmRlYw0KPiAtICBNZGVQa2cvTWRlUGtnLmRlYw0KPiAtICBNZGVNb2R1bGVQa2cvTWRl TW9kdWxlUGtnLmRlYw0KPiAtICBOZXR3b3JrUGtnL05ldHdvcmtQa2cuZGVjDQo+IC0gIFNoZWxs UGtnL1NoZWxsUGtnLmRlYw0KPiAtICBTZWN1cml0eVBrZy9TZWN1cml0eVBrZy5kZWMNCj4gLSAg UGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1Jka0Jvb3RNYW5hZ2Vy TGliLmRlYw0KPiAtDQo+IC1bTGlicmFyeUNsYXNzZXNdDQo+IC0gIFJka0Jvb3RNYW5hZ2VyTGli DQo+IC0gIFVlZmlBcHBsaWNhdGlvbkVudHJ5UG9pbnQNCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3Jt L0NvbWNhc3QvQXBwbGljYXRpb24vRHJpU2VjdXJlQm9vdC9EcmlTZWN1cmVCb290LmluZg0KPiBi L1BsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRpb24vRHJpU2VjdXJlQm9vdC9EcmlTZWN1cmVCb290 LmluZg0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMjA4ZGFhZWYyMWIyLi4w MDAwMDAwMDAwMDANCj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9EcmlTZWN1 cmVCb290L0RyaVNlY3VyZUJvb3QuaW5mDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMzcgKzAs MCBAQA0KPiAtIw0KPiANCj4gLSMgIENvcHlyaWdodCAoYykgMjAxNC0yMDE4LCBMaW5hcm8gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0jICBDb3B5cmlnaHQgKGMpIDIwMTYt MjAxNywgQ29tY2FzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0jDQo+IA0KPiAtIyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+IC0jDQo+ IA0KPiAtDQo+IA0KPiAtIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IC0jDQo+IA0KPiAt IyBEZWZpbmVzIFNlY3Rpb24gLSBzdGF0ZW1lbnRzIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8g Y3JlYXRlIGEgTWFrZWZpbGUuDQo+IA0KPiAtIw0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjDQo+IA0KPiAtDQo+IA0KPiAtW0RlZmluZXNdDQo+IA0KPiAtICBJTkZfVkVSU0lPTiAgICAg PSAweDAwMDEwMDFBDQo+IA0KPiAtICBCQVNFX05BTUUgICAgICAgPSBSZGtEcmlTZWN1cmVMb2Fk ZXINCj4gDQo+IC0gIEZJTEVfR1VJRCAgICAgICA9IGRkNTJkMWQ3LTBkZTItNDU1Mi05OGUwLThk YmVlNDU4YTUwMg0KPiANCj4gLSAgTU9EVUxFX1RZUEUgICAgID0gVUVGSV9BUFBMSUNBVElPTg0K PiANCj4gLSAgVkVSU0lPTl9TVFJJTkcgID0gMS4wDQo+IA0KPiAtICBFTlRSWV9QT0lOVCAgICAg PSBEcmlTZWN1cmVCb290RW50cnlQb2ludA0KPiANCj4gLQ0KPiANCj4gLVtTb3VyY2VzXQ0KPiAN Cj4gLSAgRHJpU2VjdXJlQm9vdC5jDQo+IA0KPiAtDQo+IA0KPiAtW1BhY2thZ2VzXQ0KPiANCj4g LSAgQXJtUGtnL0FybVBrZy5kZWMNCj4gDQo+IC0gIEVtYmVkZGVkUGtnL0VtYmVkZGVkUGtnLmRl Yw0KPiANCj4gLSAgTWRlUGtnL01kZVBrZy5kZWMNCj4gDQo+IC0gIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+IA0KPiAtICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gDQo+IC0gIFNl Y3VyaXR5UGtnL1NlY3VyaXR5UGtnLmRlYw0KPiANCj4gLSAgTmV0d29ya1BrZy9OZXR3b3JrUGtn LmRlYw0KPiANCj4gLSAgUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGli L1Jka0Jvb3RNYW5hZ2VyTGliLmRlYw0KPiANCj4gLQ0KPiANCj4gLVtMaWJyYXJ5Q2xhc3Nlc10N Cj4gDQo+IC0gIFJka0Jvb3RNYW5hZ2VyTGliDQo+IA0KPiAtICBVZWZpQXBwbGljYXRpb25FbnRy eVBvaW50DQo+IA0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9T ZWN1cmVCb290L1NlY3VyZUJvb3QuaW5mIGIvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9T ZWN1cmVCb290L1NlY3VyZUJvb3QuaW5mDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCA3OTAyOGRhMmIxZjUuLjAwMDAwMDAwMDAwMA0KPiAtLS0gYS9QbGF0Zm9ybS9Db21jYXN0 L0FwcGxpY2F0aW9uL1NlY3VyZUJvb3QvU2VjdXJlQm9vdC5pbmYNCj4gKysrIC9kZXYvbnVsbA0K PiBAQCAtMSwzNyArMCwwIEBADQo+IC0jDQo+IA0KPiAtIyAgQ29weXJpZ2h0IChjKSAyMDE0LTIw MTgsIExpbmFybyBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4gLSMgIENvcHly aWdodCAoYykgMjAxNi0yMDE3LCBDb21jYXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4g LSMNCj4gDQo+IC0jICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KPiANCj4gLSMNCj4gDQo+IC0NCj4gDQo+IC0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiAN Cj4gLSMNCj4gDQo+IC0jIERlZmluZXMgU2VjdGlvbiAtIHN0YXRlbWVudHMgdGhhdCB3aWxsIGJl IHByb2Nlc3NlZCB0byBjcmVhdGUgYSBNYWtlZmlsZS4NCj4gDQo+IC0jDQo+IA0KPiAtIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IC0NCj4gDQo+IC1bRGVmaW5lc10NCj4gDQo+IC0gIElO Rl9WRVJTSU9OICAgICA9IDB4MDAwMTAwMUENCj4gDQo+IC0gIEJBU0VfTkFNRSAgICAgICA9IFJk a1NlY3VyZUxvYWRlcg0KPiANCj4gLSAgRklMRV9HVUlEICAgICAgID0gYjJjNzkzMGYtMDdlZi00 MzA1LWFjNGUtMWNlMjA4NWE3MDMxDQo+IA0KPiAtICBNT0RVTEVfVFlQRSAgICAgPSBVRUZJX0FQ UExJQ0FUSU9ODQo+IA0KPiAtICBWRVJTSU9OX1NUUklORyAgPSAxLjANCj4gDQo+IC0gIEVOVFJZ X1BPSU5UICAgICA9IFNlY3VyZUJvb3RFbnRyeVBvaW50DQo+IA0KPiAtDQo+IA0KPiAtW1NvdXJj ZXNdDQo+IA0KPiAtICBTZWN1cmVCb290LmMNCj4gDQo+IC0NCj4gDQo+IC1bUGFja2FnZXNdDQo+ IA0KPiAtICBBcm1Qa2cvQXJtUGtnLmRlYw0KPiANCj4gLSAgRW1iZWRkZWRQa2cvRW1iZWRkZWRQ a2cuZGVjDQo+IA0KPiAtICBNZGVQa2cvTWRlUGtnLmRlYw0KPiANCj4gLSAgTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gDQo+IC0gIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiANCj4g LSAgU2VjdXJpdHlQa2cvU2VjdXJpdHlQa2cuZGVjDQo+IA0KPiAtICBOZXR3b3JrUGtnL05ldHdv cmtQa2cuZGVjDQo+IA0KPiAtICBQbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFn ZXJMaWIvUmRrQm9vdE1hbmFnZXJMaWIuZGVjDQo+IA0KPiAtDQo+IA0KPiAtW0xpYnJhcnlDbGFz c2VzXQ0KPiANCj4gLSAgUmRrQm9vdE1hbmFnZXJMaWINCj4gDQo+IC0gIFVlZmlBcHBsaWNhdGlv bkVudHJ5UG9pbnQNCj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkv UmRrQm9vdE1hbmFnZXJMaWIvUmRrQm9vdE1hbmFnZXJMaWIuaW5mDQo+IGIvUGxhdGZvcm0vQ29t Y2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1Jka0Jvb3RNYW5hZ2VyTGliLmluZg0KPiBk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMjg2YTc3M2RkNmVkLi4wMDAwMDAwMDAw MDANCj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1Jk a0Jvb3RNYW5hZ2VyTGliLmluZg0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDcwICswLDAgQEAN Cj4gLSMNCj4gDQo+IC0jICBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgTGluYXJvIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IA0KPiAtIyAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMTcs IENvbWNhc3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IA0KPiAtIw0KPiANCj4gLSMgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiAtIw0KPiANCj4g LQ0KPiANCj4gLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0KPiAtIw0KPiANCj4gLSMgRGVm aW5lcyBTZWN0aW9uIC0gc3RhdGVtZW50cyB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNyZWF0 ZSBhIE1ha2VmaWxlLg0KPiANCj4gLSMNCj4gDQo+IC0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K PiANCj4gLQ0KPiANCj4gLVtEZWZpbmVzXQ0KPiANCj4gLSAgSU5GX1ZFUlNJT04gICAgID0gMHgw MDAxMDAxQQ0KPiANCj4gLSAgQkFTRV9OQU1FICAgICAgID0gUmRrQm9vdE1hbmFnZXJMaWINCj4g DQo+IC0gIEZJTEVfR1VJRCAgICAgICA9IDkwMWY1NGYyLTlkNzAtOWI4OS05YzBhLWQ5Y2EyNTM3 OTA1OQ0KPiANCj4gLSAgTU9EVUxFX1RZUEUgICAgID0gRFhFX0RSSVZFUg0KPiANCj4gLSAgVkVS U0lPTl9TVFJJTkcgID0gMS4wDQo+IA0KPiAtICBMSUJSQVJZX0NMQVNTICAgPSBSZGtCb290TWFu YWdlckxpYnxEWEVfRFJJVkVSIERYRV9SVU5USU1FX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9OIFVF RklfRFJJVkVSDQo+IA0KPiAtDQo+IA0KPiAtW1NvdXJjZXNdDQo+IA0KPiAtICBEaXNrSW8uYw0K PiANCj4gLSAgU2VjdXJlQm9vdC5jDQo+IA0KPiAtICBIdHRwQm9vdC5jDQo+IA0KPiAtICBSZGtG aWxlLmMNCj4gDQo+IC0NCj4gDQo+IC1bUGFja2FnZXNdDQo+IA0KPiAtICBBcm1Qa2cvQXJtUGtn LmRlYw0KPiANCj4gLSAgRW1iZWRkZWRQa2cvRW1iZWRkZWRQa2cuZGVjDQo+IA0KPiAtICBNZGVQ a2cvTWRlUGtnLmRlYw0KPiANCj4gLSAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4g DQo+IC0gIE5ldHdvcmtQa2cvTmV0d29ya1BrZy5kZWMNCj4gDQo+IC0gIFBsYXRmb3JtL0NvbWNh c3QvTGlicmFyeS9SZGtCb290TWFuYWdlckxpYi9SZGtCb290TWFuYWdlckxpYi5kZWMNCj4gDQo+ IC0gIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiANCj4gLSAgU2VjdXJpdHlQa2cvU2VjdXJpdHlQ a2cuZGVjDQo+IA0KPiAtDQo+IA0KPiAtW0d1aWRzXQ0KPiANCj4gLSAgZ0VmaUNlcnRYNTA5R3Vp ZA0KPiANCj4gLSAgZ0VmaUNlcnRQa2NzN0d1aWQNCj4gDQo+IC0gIGdFZmlDdXN0b21Nb2RlRW5h YmxlR3VpZA0KPiANCj4gLSAgZ0VmaUltYWdlU2VjdXJpdHlEYXRhYmFzZUd1aWQNCj4gDQo+IC0g IGdGZHRUYWJsZUd1aWQNCj4gDQo+IC0gIGdSZGtHbG9iYWxWYXJpYWJsZUd1aWQNCj4gDQo+IC0N Cj4gDQo+IC1bUHJvdG9jb2xzXQ0KPiANCj4gLSAgZ0VmaUJsb2NrSW9Qcm90b2NvbEd1aWQNCj4g DQo+IC0gIGdFZmlEZXZpY2VQYXRoVG9UZXh0UHJvdG9jb2xHdWlkDQo+IA0KPiAtICBnRWZpRGV2 aWNlUGF0aEZyb21UZXh0UHJvdG9jb2xHdWlkDQo+IA0KPiAtICBnRWZpTG9hZGVkSW1hZ2VQcm90 b2NvbEd1aWQNCj4gDQo+IC0gIGdFZmlTaGVsbFByb3RvY29sR3VpZA0KPiANCj4gLSAgZ0VmaURp c2tJb1Byb3RvY29sR3VpZA0KPiANCj4gLSAgZ0VmaUxvYWRGaWxlUHJvdG9jb2xHdWlkDQo+IA0K PiAtDQo+IA0KPiAtW1BjZF0NCj4gDQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDbWRM aW5lQXJncw0KPiANCj4gLSAgZ1Jka1Rva2VuU3BhY2VHdWlkLlBjZFJka1N5c3RlbVBhcnRpdGlv bk5hbWUNCj4gDQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDb25mRmlsZU5hbWUNCj4g DQo+IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2RSZGtDb25mRmlsZURldmljZVBhdGgNCj4gDQo+ IC0gIGdSZGtUb2tlblNwYWNlR3VpZC5QY2REdGJBdmFpbGFibGUNCj4gDQo+IC0NCj4gDQo+IC1b TGlicmFyeUNsYXNzZXNdDQo+IA0KPiAtICBBcm1MaWINCj4gDQo+IC0gIEJhc2VMaWINCj4gDQo+ IC0gIERlYnVnTGliDQo+IA0KPiAtICBEZXZpY2VQYXRoTGliDQo+IA0KPiAtICBGaWxlSGFuZGxl TGliDQo+IA0KPiAtICBOZXRMaWINCj4gDQo+IC0gIFBjZExpYg0KPiANCj4gLQ0KPiANCj4gZGlm ZiAtLWdpdCBhL1BsYXRmb3JtL0NvbWNhc3QvTGlicmFyeS9SZGtCb290TWFuYWdlckxpYi9SZGtC b290TWFuYWdlckxpYi5oDQo+IGIvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5h Z2VyTGliL1Jka0Jvb3RNYW5hZ2VyTGliLmgNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDVhZjE5ZTUwNDE3YS4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL1BsYXRmb3JtL0NvbWNh c3QvTGlicmFyeS9SZGtCb290TWFuYWdlckxpYi9SZGtCb290TWFuYWdlckxpYi5oDQo+ICsrKyAv ZGV2L251bGwNCj4gQEAgLTEsOTIgKzAsMCBAQA0KPiAtLyoNCj4gDQo+IC0jICBDb3B5cmlnaHQg KGMpIDIwMTQtMjAxOCwgTGluYXJvIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IA0K PiAtIw0KPiANCj4gLSMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+IA0KPiAtIw0KPiANCj4gLSovDQo+IA0KPiAtI2lmbmRlZiBfX1JES19CT09UX01BTkFH RVJfTElCX0hfXw0KPiANCj4gLSNkZWZpbmUgX19SREtfQk9PVF9NQU5BR0VSX0xJQl9IX18NCj4g DQo+IC0NCj4gDQo+IC0jaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+IA0KPiAtI2luY2x1 ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiANCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGli Lmg+DQo+IA0KPiAtI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gDQo+IC0jaW5jbHVk ZSA8TGlicmFyeS9TaGVsbExpYi5oPg0KPiANCj4gLSNpbmNsdWRlIDxMaWJyYXJ5L0RldmljZVBh dGhMaWIuaD4NCj4gDQo+IC0jaW5jbHVkZSA8TGlicmFyeS9GaWxlSGFuZGxlTGliLmg+DQo+IA0K PiAtI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiANCj4gLSNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiANCj4gLSNpbmNsdWRl IDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiANCj4gLSNpbmNsdWRl IDxQcm90b2NvbC9EaXNrSW8uaD4NCj4gDQo+IC0jaW5jbHVkZSA8UHJvdG9jb2wvQmxvY2tJby5o Pg0KPiANCj4gLSNpbmNsdWRlIDxQcm90b2NvbC9Mb2FkRmlsZS5oPg0KPiANCj4gLSNpbmNsdWRl IDxQcm90b2NvbC9TaW1wbGVUZXh0T3V0Lmg+DQo+IA0KPiAtI2luY2x1ZGUgPFByb3RvY29sL0Rl dmljZVBhdGhGcm9tVGV4dC5oPg0KPiANCj4gLSNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRo VG9UZXh0Lmg+DQo+IA0KPiAtI2luY2x1ZGUgPFByb3RvY29sL0FuZHJvaWRGYXN0Ym9vdFBsYXRm b3JtLmg+DQo+IA0KPiAtI2luY2x1ZGUgPEd1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oPg0KPiAN Cj4gLSNpbmNsdWRlIDxHdWlkL0F1dGhlbnRpY2F0ZWRWYXJpYWJsZUZvcm1hdC5oPg0KPiANCj4g LSNpbmNsdWRlIDxIdHRwQm9vdER4ZS9IdHRwQm9vdER4ZS5oPg0KPiANCj4gLSNpbmNsdWRlIDxJ bmNsdWRlL0d1aWQvQXV0aGVudGljYXRlZFZhcmlhYmxlRm9ybWF0Lmg+DQo+IA0KPiAtDQo+IA0K PiAtZXh0ZXJuDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLVBhcnRpdGlvblJlYWQgKA0KPiAN Cj4gLSAgSU4gQ0hBUjggICpQYXJ0aXRpb25OYW1lLA0KPiANCj4gLSAgSU4gVk9JRCAgICpJbWFn ZSwNCj4gDQo+IC0gIElOIFVJTlROICBTaXplDQo+IA0KPiAtICApOw0KPiANCj4gLQ0KPiANCj4g LWV4dGVybg0KPiANCj4gLUVGSV9TVEFUVVMNCj4gDQo+IC1QYXJ0aXRpb25Xcml0ZSAoDQo+IA0K PiAtICBJTiBDSEFSOCAgKlBhcnRpdGlvbk5hbWUsDQo+IA0KPiAtICBJTiBWT0lEICAgKkltYWdl LA0KPiANCj4gLSAgSU4gVUlOVE4gIFNpemUNCj4gDQo+IC0gICk7DQo+IA0KPiAtDQo+IA0KPiAt ZXh0ZXJuDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLUdldFJka1ZhcmlhYmxlICgNCj4gDQo+ IC0gIElOICBDT05TVCBDSEFSMTYgICpOYW1lLA0KPiANCj4gLSAgT1VUIENPTlNUIENIQVIxNiAg KipWYWx1ZQ0KPiANCj4gLSAgKTsNCj4gDQo+IC0NCj4gDQo+IC1leHRlcm4NCj4gDQo+IC1FRklf U1RBVFVTDQo+IA0KPiAtUmRrU2VjdXJlQm9vdCAoDQo+IA0KPiAtICBFRklfSEFORExFCQlJbWFn ZUhhbmRsZSwNCj4gDQo+IC0gIEVGSV9CT09UX1NFUlZJQ0VTICAgICAqQm9vdFNlcnZpY2VzDQo+ IA0KPiAtICApOw0KPiANCj4gLQ0KPiANCj4gLWV4dGVybg0KPiANCj4gLUVGSV9TVEFUVVMNCj4g DQo+IC1SZGtSZWFkRmlsZSAoDQo+IA0KPiAtICBJTiAgCUNPTlNUIENIQVIxNiAJKlBhdGgsDQo+ IA0KPiAtICBJTiBPVVQgIFZPSUQgICAgICAgICAgKipCdWZmZXJQdHIsDQo+IA0KPiAtICBPVVQg IAlVSU5UTiAgICAgICAgICAgKkZpbGVTaXplDQo+IA0KPiAtICApOw0KPiANCj4gLQ0KPiANCj4g LWV4dGVybg0KPiANCj4gLUVGSV9TVEFUVVMNCj4gDQo+IC1SZGtXcml0ZUZpbGUgKA0KPiANCj4g LSAgSU4gIAlDT05TVCBDSEFSMTYgICAgKlBhdGgsDQo+IA0KPiAtICBJTiBPVVQgIFZPSUQgICAg ICAgICAgKipCdWZmZXJQdHIsDQo+IA0KPiAtICBPVVQgIAlVSU5UTiAgICAgICAgICAgKkZpbGVT aXplDQo+IA0KPiAtICApOw0KPiANCj4gLQ0KPiANCj4gLWV4dGVybg0KPiANCj4gLUVGSV9TVEFU VVMNCj4gDQo+IC1HZXRGaWxlSGFuZGxlciAoDQo+IA0KPiAtICBPVVQgCUVGSV9GSUxFX0hBTkRM RSAqRmlsZUhhbmRsZSwNCj4gDQo+IC0gIElOIAlDT05TVCBDSEFSMTYgICAgKlBhdGgsDQo+IA0K PiAtICBJTiAgCVVJTlQ2NCAgICAgICAgICBPcGVuTW9kZQ0KPiANCj4gLSAgKTsNCj4gDQo+IC0N Cj4gDQo+IC1leHRlcm4NCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAtUmRrSHR0cEJvb3QgKA0K PiANCj4gLSAgVk9JRA0KPiANCj4gLSAgKTsNCj4gDQo+IC0NCj4gDQo+IC0jZW5kaWYgLyogX19S REtfQk9PVF9NQU5BR0VSX0xJQl9IX18gKi8NCj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9D b21jYXN0L0FwcGxpY2F0aW9uL0RyaS9EcmkuYyBiL1BsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRp b24vRHJpL0RyaS5jDQo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCBhOTU4YjY0 MWQ4YTQuLjAwMDAwMDAwMDAwMA0KPiAtLS0gYS9QbGF0Zm9ybS9Db21jYXN0L0FwcGxpY2F0aW9u L0RyaS9EcmkuYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDIwICswLDAgQEANCj4gLS8qDQo+ IC0jICBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgTGluYXJvIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+IC0jDQo+IC0jICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiAtIw0KPiAtICovDQo+IC0jaW5jbHVkZSA8UmRrQm9vdE1hbmFnZXJMaWIu aD4NCj4gLQ0KPiAtRUZJX1NUQVRVUw0KPiAtRUZJQVBJDQo+IC1EcmlFbnRyeVBvaW50ICgNCj4g LSAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+IC0gIElOIEVGSV9TWVNURU1f VEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiAtICApDQo+IC17DQo+IC0gIEVGSV9TVEFUVVMgU3RhdHVz Ow0KPiAtDQo+IC0gIFN0YXR1cyA9IFJka0h0dHBCb290ICgpOw0KPiAtICByZXR1cm4gU3RhdHVz Ow0KPiAtfQ0KPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9EcmlT ZWN1cmVCb290L0RyaVNlY3VyZUJvb3QuYw0KPiBiL1BsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRp b24vRHJpU2VjdXJlQm9vdC9EcmlTZWN1cmVCb290LmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IGIzODllMGU4N2I3Ni4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL1BsYXRmb3Jt L0NvbWNhc3QvQXBwbGljYXRpb24vRHJpU2VjdXJlQm9vdC9EcmlTZWN1cmVCb290LmMNCj4gKysr IC9kZXYvbnVsbA0KPiBAQCAtMSwyNiArMCwwIEBADQo+IC0vKg0KPiANCj4gLSMgIENvcHlyaWdo dCAoYykgMjAxNC0yMDE4LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g DQo+IC0jDQo+IA0KPiAtIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gDQo+IC0jDQo+IA0KPiAtICovDQo+IA0KPiAtI2luY2x1ZGUgPFJka0Jvb3RNYW5h Z2VyTGliLmg+DQo+IA0KPiAtDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLUVGSUFQSQ0KPiAN Cj4gLURyaVNlY3VyZUJvb3RFbnRyeVBvaW50ICgNCj4gDQo+IC0gIElOIEVGSV9IQU5ETEUgICAg ICAgIEltYWdlSGFuZGxlLA0KPiANCj4gLSAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRh YmxlDQo+IA0KPiAtICApDQo+IA0KPiAtew0KPiANCj4gLSAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBSZGtIdHRwQm9vdCAoKTsNCj4gDQo+IC0NCj4gDQo+ IC0gIFN0YXR1cyA9IFJka1NlY3VyZUJvb3QgKA0KPiANCj4gLSAgICBJbWFnZUhhbmRsZSwNCj4g DQo+IC0gICAgU3lzdGVtVGFibGUtPkJvb3RTZXJ2aWNlcw0KPiANCj4gLSAgICApOw0KPiANCj4g LQ0KPiANCj4gLSAgcmV0dXJuIFN0YXR1czsNCj4gDQo+IC19DQo+IA0KPiBkaWZmIC0tZ2l0IGEv UGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbi9TZWN1cmVCb290L1NlY3VyZUJvb3QuYyBiL1Bs YXRmb3JtL0NvbWNhc3QvQXBwbGljYXRpb24vU2VjdXJlQm9vdC9TZWN1cmVCb290LmMNCj4gZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IGMxNDYzZjY5ZWY4Zi4uMDAwMDAwMDAwMDAw DQo+IC0tLSBhL1BsYXRmb3JtL0NvbWNhc3QvQXBwbGljYXRpb24vU2VjdXJlQm9vdC9TZWN1cmVC b290LmMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwyNCArMCwwIEBADQo+IC0vKg0KPiANCj4g LSMgIENvcHlyaWdodCAoYykgMjAxNC0yMDE4LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gDQo+IC0jDQo+IA0KPiAtIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+IC0jDQo+IA0KPiAtICovDQo+IA0KPiAtI2luY2x1ZGUg PFJka0Jvb3RNYW5hZ2VyTGliLmg+DQo+IA0KPiAtDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4g LUVGSUFQSQ0KPiANCj4gLVNlY3VyZUJvb3RFbnRyeVBvaW50ICgNCj4gDQo+IC0gIElOIEVGSV9I QU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiANCj4gLSAgSU4gRUZJX1NZU1RFTV9UQUJMRSAg KlN5c3RlbVRhYmxlDQo+IA0KPiAtICApDQo+IA0KPiAtew0KPiANCj4gLSAgRUZJX1NUQVRVUyBT dGF0dXM7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBSZGtTZWN1cmVCb290ICgNCj4gDQo+ IC0gICAgSW1hZ2VIYW5kbGUsDQo+IA0KPiAtICAgIFN5c3RlbVRhYmxlLT5Cb290U2VydmljZXMN Cj4gDQo+IC0gICk7DQo+IA0KPiAtDQo+IA0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0N Cj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFn ZXJMaWIvRGlza0lvLmMgYi9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFnZXJM aWIvRGlza0lvLmMNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDY4MDUzMjMz NjZmNC4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL1BsYXRmb3JtL0NvbWNhc3QvTGlicmFyeS9SZGtC b290TWFuYWdlckxpYi9EaXNrSW8uYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDM3OCArMCww IEBADQo+IC0vKg0KPiANCj4gLSMgIENvcHlyaWdodCAoYykgMjAxNC0yMDE4LCBMaW5hcm8gTGlt aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0jDQo+IA0KPiAtIyAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+IC0jDQo+IA0KPiAtKi8N Cj4gDQo+IC0jaW5jbHVkZSA8UmRrQm9vdE1hbmFnZXJMaWIuaD4NCj4gDQo+IC0NCj4gDQo+IC0v KiBTZWUgc3BhcnNlX2Zvcm1hdC5oIGluIEFPU1AgICovDQo+IA0KPiAtI2RlZmluZSBTUEFSU0Vf SEVBREVSX01BR0lDICAgICAgIDB4ZWQyNmZmM2ENCj4gDQo+IC0jZGVmaW5lIENIVU5LX1RZUEVf UkFXICAgICAgICAgICAgMHhDQUMxDQo+IA0KPiAtI2RlZmluZSBDSFVOS19UWVBFX0ZJTEwgICAg ICAgICAgIDB4Q0FDMg0KPiANCj4gLSNkZWZpbmUgQ0hVTktfVFlQRV9ET05UX0NBUkUgICAgICAw eENBQzMNCj4gDQo+IC0jZGVmaW5lIENIVU5LX1RZUEVfQ1JDMzIgICAgICAgICAgMHhDQUM0DQo+ IA0KPiAtDQo+IA0KPiAtI2RlZmluZSBQQVJUSVRJT05fTkFNRV9NQVhfTEVOR1RIICAgICA3Mi8y DQo+IA0KPiAtDQo+IA0KPiAtI2RlZmluZSBGTEFTSF9ERVZJQ0VfUEFUSF9TSVpFKERldlBhdGgp ICggR2V0RGV2aWNlUGF0aFNpemUgKERldlBhdGgpIC0gXA0KPiANCj4gLSAgICBzaXplb2YgKEVG SV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCkpDQo+IA0KPiAtDQo+IA0KPiAtI2RlZmluZSBJU19BTFBI QShDaGFyKSAoKChDaGFyKSA8PSBMJ3onICYmIChDaGFyKSA+PSBMJ2EnKSB8fCBcDQo+IA0KPiAt ICAgICgoQ2hhcikgPD0gTCdaJyAmJiAoQ2hhcikgPj0gTCdaJykpDQo+IA0KPiAtDQo+IA0KPiAt dHlwZWRlZiBzdHJ1Y3QgX0RJU0tJT19QQVJUSVRJT05fTElTVCB7DQo+IA0KPiAtICBMSVNUX0VO VFJZICBMaW5rOw0KPiANCj4gLSAgQ0hBUjE2ICAgICAgUGFydGl0aW9uTmFtZVtQQVJUSVRJT05f TkFNRV9NQVhfTEVOR1RIXTsNCj4gDQo+IC0gIEVGSV9IQU5ETEUgIFBhcnRpdGlvbkhhbmRsZTsN Cj4gDQo+IC19IERJU0tJT19QQVJUSVRJT05fTElTVDsNCj4gDQo+IC0NCj4gDQo+IC10eXBlZGVm IHN0cnVjdCBfU1BBUlNFX0hFQURFUiB7DQo+IA0KPiAtICBVSU5UMzIgICAgTWFnaWM7DQo+IA0K PiAtICBVSU5UMTYgICAgTWFqb3JWZXJzaW9uOw0KPiANCj4gLSAgVUlOVDE2ICAgIE1pbm9yVmVy c2lvbjsNCj4gDQo+IC0gIFVJTlQxNiAgICBGaWxlSGVhZGVyU2l6ZTsNCj4gDQo+IC0gIFVJTlQx NiAgICBDaHVua0hlYWRlclNpemU7DQo+IA0KPiAtICBVSU5UMzIgICAgQmxvY2tTaXplOw0KPiAN Cj4gLSAgVUlOVDMyICAgIFRvdGFsQmxvY2tzOw0KPiANCj4gLSAgVUlOVDMyICAgIFRvdGFsQ2h1 bmtzOw0KPiANCj4gLSAgVUlOVDMyICAgIEltYWdlQ2hlY2tzdW07DQo+IA0KPiAtfSBTUEFSU0Vf SEVBREVSOw0KPiANCj4gLQ0KPiANCj4gLXR5cGVkZWYgc3RydWN0IF9DSFVOS19IRUFERVIgew0K PiANCj4gLSAgVUlOVDE2ICAgIENodW5rVHlwZTsNCj4gDQo+IC0gIFVJTlQxNiAgICBSZXNlcnZl ZDE7DQo+IA0KPiAtICBVSU5UMzIgICAgQ2h1bmtTaXplOw0KPiANCj4gLSAgVUlOVDMyICAgIFRv dGFsU2l6ZTsNCj4gDQo+IC19IENIVU5LX0hFQURFUjsNCj4gDQo+IC0NCj4gDQo+IC1TVEFUSUMg TElTVF9FTlRSWSAgICAgICBtUGFydGl0aW9uTGlzdEhlYWQ7DQo+IA0KPiAtU1RBVElDIEVGSV9T SU1QTEVfVEVYVF9PVVRQVVRfUFJPVE9DT0wgICptVGV4dE91dDsNCj4gDQo+IC0NCj4gDQo+IC0v Kg0KPiANCj4gLSAqIEhlbHBlciB0byBmcmVlIHRoZSBwYXJ0aXRpb24gbGlzdA0KPiANCj4gLSAq Lw0KPiANCj4gLVNUQVRJQw0KPiANCj4gLVZPSUQNCj4gDQo+IC1GcmVlUGFydGl0aW9uTGlzdCAo DQo+IA0KPiAtICBWT0lEDQo+IA0KPiAtKQ0KPiANCj4gLXsNCj4gDQo+IC0gIERJU0tJT19QQVJU SVRJT05fTElTVCAqRW50cnk7DQo+IA0KPiAtICBESVNLSU9fUEFSVElUSU9OX0xJU1QgKk5leHRF bnRyeTsNCj4gDQo+IC0NCj4gDQo+IC0gIEVudHJ5ID0gKERJU0tJT19QQVJUSVRJT05fTElTVCAq KUdldEZpcnN0Tm9kZSAoJm1QYXJ0aXRpb25MaXN0SGVhZCk7DQo+IA0KPiAtICB3aGlsZSAoIUlz TnVsbCAoJm1QYXJ0aXRpb25MaXN0SGVhZCwgJkVudHJ5LT5MaW5rKSkgew0KPiANCj4gLSAgICBO ZXh0RW50cnkgPSAoRElTS0lPX1BBUlRJVElPTl9MSVNUICopIEdldE5leHROb2RlIChcDQo+IA0K PiAtICAgICAgJm1QYXJ0aXRpb25MaXN0SGVhZCwgJkVudHJ5LT5MaW5rKTsNCj4gDQo+IC0NCj4g DQo+IC0gICAgUmVtb3ZlRW50cnlMaXN0ICgmRW50cnktPkxpbmspOw0KPiANCj4gLSAgICBGcmVl UG9vbCAoRW50cnkpOw0KPiANCj4gLQ0KPiANCj4gLSAgICBFbnRyeSA9IE5leHRFbnRyeTsNCj4g DQo+IC0gIH0NCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAtLyoNCj4gDQo+IC0gKiBsaXN0cyB0 aGUgYXZhaWxhYmxlIEJsb2NrIElvIGFuZCBhZGRzIGhhbmRsZSBvZiBnaXZlbiBkZXYgcGF0aA0K PiANCj4gLSAqLw0KPiANCj4gLVNUQVRJQw0KPiANCj4gLUVGSV9TVEFUVVMNCj4gDQo+IC1MaXN0 QmxvY2tJb3MgKA0KPiANCj4gLSAgSU4gQ0hBUjE2ICAgICAgICpQYXJ0aXRpb25OYW1lDQo+IA0K PiAtICApDQo+IA0KPiAtew0KPiANCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gDQo+IC0gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAq QWxsSGFuZGxlczsNCj4gDQo+IC0gIEVGSV9ERVZJQ0VfUEFUSF9UT19URVhUX1BST1RPQ09MICAq RGV2UGF0aFRvVGV4dDsNCj4gDQo+IC0gIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAg ICAqRGV2aWNlUGF0aDsNCj4gDQo+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMb29wSW5kZXg7DQo+IA0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TnVtSGFuZGxlczsNCj4gDQo+IC0gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAq RGV2aWNlRnVsbFBhdGg7DQo+IA0KPiAtICBESVNLSU9fUEFSVElUSU9OX0xJU1QgICAgICAgICAg ICAgKkVudHJ5Ow0KPiANCj4gLSAgUkVUVVJOX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFJl dFN0YXR1czsNCj4gDQo+IC0NCj4gDQo+IC0gIEluaXRpYWxpemVMaXN0SGVhZCAoJm1QYXJ0aXRp b25MaXN0SGVhZCk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3Rv Y29sICgNCj4gDQo+IC0gICAgJmdFZmlEZXZpY2VQYXRoVG9UZXh0UHJvdG9jb2xHdWlkLA0KPiAN Cj4gLSAgICBOVUxMLA0KPiANCj4gLSAgICAoVk9JRCAqKikgJkRldlBhdGhUb1RleHQNCj4gDQo+ IC0gICAgKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+ IA0KPiAtICAvLyBHZXQgZXZlcnkgQmxvY2sgSU8gcHJvdG9jb2wgaW5zdGFuY2UgaW5zdGFsbGVk IGluIHRoZSBzeXN0ZW0NCj4gDQo+IC0gIFN0YXR1cyA9IGdCUy0+TG9jYXRlSGFuZGxlQnVmZmVy ICgNCj4gDQo+IC0gICAgQnlQcm90b2NvbCwNCj4gDQo+IC0gICAgJmdFZmlCbG9ja0lvUHJvdG9j b2xHdWlkLA0KPiANCj4gLSAgICBOVUxMLA0KPiANCj4gLSAgICAmTnVtSGFuZGxlcywNCj4gDQo+ IC0gICAgJkFsbEhhbmRsZXMNCj4gDQo+IC0gICAgKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQo+IA0KPiAtICBERUJVRyAoKERFQlVHX0lORk8sICJCbG9jayBJTzogJWQg aGFuZGxlcyBcbiIsIE51bUhhbmRsZXMpKTsNCj4gDQo+IC0NCj4gDQo+IC0gIC8vIEdldCBIVFRQ IGRyaXZlciBoYW5kbGUgZnJvbSBBbGxIYW5kbGVzDQo+IA0KPiAtICBmb3IgKExvb3BJbmRleCA9 IDA7IExvb3BJbmRleCA8IE51bUhhbmRsZXM7IExvb3BJbmRleCsrKSB7DQo+IA0KPiAtICAgIC8v IEdldCB0aGUgZGV2aWNlIHBhdGggZm9yIHRoZSBoYW5kbGUNCj4gDQo+IC0gICAgU3RhdHVzID0g Z0JTLT5PcGVuUHJvdG9jb2wgKA0KPiANCj4gLSAgICAgIEFsbEhhbmRsZXNbTG9vcEluZGV4XSwN Cj4gDQo+IC0gICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQo+IA0KPiAtICAgICAg KFZPSUQgKiopICZEZXZpY2VQYXRoLA0KPiANCj4gLSAgICAgIGdJbWFnZUhhbmRsZSwNCj4gDQo+ IC0gICAgICBOVUxMLA0KPiANCj4gLSAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NP TA0KPiANCj4gLSAgICAgICk7DQo+IA0KPiAtDQo+IA0KPiAtICAgIERldmljZUZ1bGxQYXRoID0g RGV2UGF0aFRvVGV4dC0+Q29udmVydERldmljZVBhdGhUb1RleHQgKA0KPiANCj4gLSAgICAgIERl dmljZVBhdGgsDQo+IA0KPiAtICAgICAgRkFMU0UsDQo+IA0KPiAtICAgICAgVFJVRQ0KPiANCj4g LSAgICAgICk7DQo+IA0KPiAtDQo+IA0KPiAtICAgIERFQlVHKChERUJVR19JTkZPLCJIYW5kbGVb JWRdIGlzICVwLCBmdWxscGF0aCAlc1xuIiwgXA0KPiANCj4gLSAgICAgIExvb3BJbmRleCwgQWxs SGFuZGxlc1tMb29wSW5kZXhdLCBEZXZpY2VGdWxsUGF0aCkpOw0KPiANCj4gLQ0KPiANCj4gLSAg ICBpZiAoU3RyQ21wIChQYXJ0aXRpb25OYW1lLCBEZXZpY2VGdWxsUGF0aCkgPT0gMCkgew0KPiAN Cj4gLSAgICAgIERFQlVHKChERUJVR19JTkZPLCAicm9vdGZzIHBhcnRpdGlvbiBwYXRoIG1hdGNo ZWRcbiIpKTsNCj4gDQo+IC0gICAgICAvLw0KPiANCj4gLSAgICAgIC8vIEFkZCB0aGUgcGFydGl0 aW9uIGhhbmRsZSB0byB0aGUgbGlzdA0KPiANCj4gLSAgICAgIC8vDQo+IA0KPiAtICAgICAgLy8g Q3JlYXRlIGVudHJ5DQo+IA0KPiAtICAgICAgRW50cnkgPSBBbGxvY2F0ZVBvb2wgKHNpemVvZiAo RElTS0lPX1BBUlRJVElPTl9MSVNUKSk7DQo+IA0KPiAtICAgICAgaWYgKEVudHJ5ID09IE5VTEwp IHsNCj4gDQo+IC0gICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiANCj4g LSAgICAgICAgZ290byBFeGl0Ow0KPiANCj4gLSAgICAgIH0NCj4gDQo+IC0NCj4gDQo+IC0gICAg ICAvLyBDb3B5IGhhbmRsZSBhbmQgcGFydGl0aW9uIG5hbWUNCj4gDQo+IC0gICAgICBFbnRyeS0+ UGFydGl0aW9uSGFuZGxlID0gQWxsSGFuZGxlc1tMb29wSW5kZXhdOw0KPiANCj4gLSAgICAgIFJl dFN0YXR1cyA9IFN0cm5DcHlTICgNCj4gDQo+IC0gICAgICAgIEVudHJ5LT5QYXJ0aXRpb25OYW1l LA0KPiANCj4gLSAgICAgICAgUEFSVElUSU9OX05BTUVfTUFYX0xFTkdUSCwNCj4gDQo+IC0gICAg ICAgIFBhcnRpdGlvbk5hbWUsDQo+IA0KPiAtICAgICAgICBQQVJUSVRJT05fTkFNRV9NQVhfTEVO R1RIIC0gMQ0KPiANCj4gLSAgICAgICk7DQo+IA0KPiAtICAgICAgQVNTRVJUX1JFVFVSTl9FUlJP UiAoUmV0U3RhdHVzKTsNCj4gDQo+IC0gICAgICBJbnNlcnRUYWlsTGlzdCAoJm1QYXJ0aXRpb25M aXN0SGVhZCwgJkVudHJ5LT5MaW5rKTsNCj4gDQo+IC0gICAgICBicmVhazsNCj4gDQo+IC0gICAg fQ0KPiANCj4gLSAgfQ0KPiANCj4gLSAgRnJlZVBvb2wgKEFsbEhhbmRsZXMpOw0KPiANCj4gLSAg QVNTRVJUIChMb29wSW5kZXggPCBOdW1IYW5kbGVzKTsNCj4gDQo+IC1FeGl0Og0KPiANCj4gLSAg cmV0dXJuIFN0YXR1czsNCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAtU1RBVElDDQo+IA0KPiAt RUZJX1NUQVRVUw0KPiANCj4gLU9wZW5QYXJ0aXRpb24gKA0KPiANCj4gLSAgSU4gIENIQVI4ICAg ICAgICpQYXJ0aXRpb25OYW1lLA0KPiANCj4gLSAgSU4gIFZPSUQgICAgICAgICpJbWFnZSwNCj4g DQo+IC0gIElOICBVSU5UTiAgICAgICBTaXplLA0KPiANCj4gLSAgT1VUIEVGSV9CTE9DS19JT19Q Uk9UT0NPTCAgICAgKipCbG9ja0lvLA0KPiANCj4gLSAgT1VUIEVGSV9ESVNLX0lPX1BST1RPQ09M ICAgICAgKipEaXNrSW8NCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0KPiAtICBFRklfU1RBVFVT ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiANCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAg IFBhcnRpdGlvblNpemU7DQo+IA0KPiAtICBESVNLSU9fUEFSVElUSU9OX0xJU1QgICAgKkVudHJ5 Ow0KPiANCj4gLSAgU1BBUlNFX0hFQURFUiAgICAgICAgICAgICpTcGFyc2VIZWFkZXI7DQo+IA0K PiAtICBVSU5UMTYgICAgICAgICAgICAgICAgICAgVW5pY29kZVBhcnRpdGlvbk5hbWVbMTAwXTsN Cj4gDQo+IC0gIFJFVFVSTl9TVEFUVVMgICAgICAgICAgICBSZXRTdGF0dXM7DQo+IA0KPiAtDQo+ IA0KPiAtICBSZXRTdGF0dXMgPSBBc2NpaVN0clRvVW5pY29kZVN0clMgKFBhcnRpdGlvbk5hbWUs IFVuaWNvZGVQYXJ0aXRpb25OYW1lLA0KPiANCj4gLSAgICAgICAgICAgICAgICBzaXplb2YgKFVu aWNvZGVQYXJ0aXRpb25OYW1lKSk7DQo+IA0KPiAtICBpZiAoUkVUVVJOX0VSUk9SIChSZXRTdGF0 dXMpKSB7DQo+IA0KPiAtICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gDQo+IC0g IH0NCj4gDQo+IC0gIERFQlVHKChERUJVR19JTkZPLCAiVW5pY29kZSBwYXJ0aXRpb24gbmFtZSAl c1xuIiwgVW5pY29kZVBhcnRpdGlvbk5hbWUpKTsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9 IExpc3RCbG9ja0lvcyAoVW5pY29kZVBhcnRpdGlvbk5hbWUpOw0KPiANCj4gLSAgQVNTRVJUX0VG SV9FUlJPUiAoU3RhdHVzKTsNCj4gDQo+IC0NCj4gDQo+IC0gIEVudHJ5ID0gKERJU0tJT19QQVJU SVRJT05fTElTVCAqKUdldEZpcnN0Tm9kZSAoJihtUGFydGl0aW9uTGlzdEhlYWQpKTsNCj4gDQo+ IC0gIEFTU0VSVCAoRW50cnkgIT0gTlVMTCk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBn QlMtPk9wZW5Qcm90b2NvbCAoDQo+IA0KPiAtICAgIEVudHJ5LT5QYXJ0aXRpb25IYW5kbGUsDQo+ IA0KPiAtICAgICZnRWZpQmxvY2tJb1Byb3RvY29sR3VpZCwNCj4gDQo+IC0gICAgKFZPSUQgKiop IEJsb2NrSW8sDQo+IA0KPiAtICAgIGdJbWFnZUhhbmRsZSwNCj4gDQo+IC0gICAgTlVMTCwNCj4g DQo+IC0gICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+IA0KPiAtICAgICk7DQo+ IA0KPiAtDQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAgIERF QlVHICgoREVCVUdfRVJST1IsICJVbmFibGUgdG8gb3BlbiBCbG9jayBJTyBwcm90b2NvbDogJXJc biIsIFN0YXR1cykpOw0KPiANCj4gLSAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiANCj4g LSAgICBnb3RvIEV4aXQ7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTcGFyc2VIZWFk ZXIgPSAoU1BBUlNFX0hFQURFUiAqKUltYWdlOw0KPiANCj4gLQ0KPiANCj4gLSAgaWYgKFNwYXJz ZUhlYWRlci0+TWFnaWMgPT0gU1BBUlNFX0hFQURFUl9NQUdJQykgew0KPiANCj4gLSAgICBERUJV RyAoKERFQlVHX0lORk8sIFwNCj4gDQo+IC0gICAgICAiU3BhcnNlIE1hZ2ljOiAweCV4IE1ham9y OiAlZCBNaW5vcjogJWQgZmhzOiAlZCBjaHM6ICVkIGJzOiAlZCB0YnM6ICVkIHRjczogJWQgY2hl Y2tzdW06ICVkIFxuIiwgXA0KPiANCj4gLSAgICAgIFNwYXJzZUhlYWRlci0+TWFnaWMsIFNwYXJz ZUhlYWRlci0+TWFqb3JWZXJzaW9uLCBcDQo+IA0KPiAtICAgICAgU3BhcnNlSGVhZGVyLT5NaW5v clZlcnNpb24sICBTcGFyc2VIZWFkZXItPkZpbGVIZWFkZXJTaXplLCBcDQo+IA0KPiAtICAgICAg U3BhcnNlSGVhZGVyLT5DaHVua0hlYWRlclNpemUsIFNwYXJzZUhlYWRlci0+QmxvY2tTaXplLCBc DQo+IA0KPiAtICAgICAgU3BhcnNlSGVhZGVyLT5Ub3RhbEJsb2NrcywgXA0KPiANCj4gLSAgICAg IFNwYXJzZUhlYWRlci0+VG90YWxDaHVua3MsIFNwYXJzZUhlYWRlci0+SW1hZ2VDaGVja3N1bSkp Ow0KPiANCj4gLQ0KPiANCj4gLSAgICBpZiAoU3BhcnNlSGVhZGVyLT5NYWpvclZlcnNpb24gIT0g MSkgew0KPiANCj4gLSAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJTcGFyc2UgaW1hZ2UgdmVy c2lvbiAlZC4lZCBub3Qgc3VwcG9ydGVkLlxuIiwNCj4gDQo+IC0gICAgICAgICAgICBTcGFyc2VI ZWFkZXItPk1ham9yVmVyc2lvbiwgU3BhcnNlSGVhZGVyLT5NaW5vclZlcnNpb24pKTsNCj4gDQo+ IC0gICAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+IA0KPiAtICAgICAgZ290 byBFeGl0Ow0KPiANCj4gLSAgICB9DQo+IA0KPiAtDQo+IA0KPiAtICAgIFNpemUgPSBTcGFyc2VI ZWFkZXItPkJsb2NrU2l6ZSAqIFNwYXJzZUhlYWRlci0+VG90YWxCbG9ja3M7DQo+IA0KPiAtICB9 DQo+IA0KPiAtDQo+IA0KPiAtICAvLyBDaGVjayBpbWFnZSB3aWxsIGZpdCBvbiBkZXZpY2UNCj4g DQo+IC0gIFBhcnRpdGlvblNpemUgPSAoQmxvY2tJb1swXS0+TWVkaWEtPkxhc3RCbG9jayArIDEp ICogQmxvY2tJb1swXS0+TWVkaWEtPkJsb2NrU2l6ZTsNCj4gDQo+IC0gIGlmIChQYXJ0aXRpb25T aXplIDwgU2l6ZSkgew0KPiANCj4gLSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiUGFydGl0aW9u IG5vdCBiaWcgZW5vdWdoLlxuIikpOw0KPiANCj4gLSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCBc DQo+IA0KPiAtICAgICAgIlBhcnRpdGlvbiBTaXplOlx0JWxkXG5JbWFnZSBTaXplOlx0JWxkXG4i LCBQYXJ0aXRpb25TaXplLCBTaXplKSk7DQo+IA0KPiAtDQo+IA0KPiAtICAgIFN0YXR1cyA9IEVG SV9WT0xVTUVfRlVMTDsNCj4gDQo+IC0gICAgZ290byBFeGl0Ow0KPiANCj4gLSAgfQ0KPiANCj4g LQ0KPiANCj4gLSAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiANCj4gLSAgICBFbnRy eS0+UGFydGl0aW9uSGFuZGxlLA0KPiANCj4gLSAgICAmZ0VmaURpc2tJb1Byb3RvY29sR3VpZCwN Cj4gDQo+IC0gICAgKFZPSUQgKiopIERpc2tJbywNCj4gDQo+IC0gICAgZ0ltYWdlSGFuZGxlLA0K PiANCj4gLSAgICBOVUxMLA0KPiANCj4gLSAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9D T0wNCj4gDQo+IC0gICAgKTsNCj4gDQo+IC0NCj4gDQo+IC1FeGl0Og0KPiANCj4gLSAgRnJlZVBh cnRpdGlvbkxpc3QgKCk7DQo+IA0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0NCj4gDQo+ IC0NCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAtUGFydGl0aW9uUmVhZCAoDQo+IA0KPiAtICBJ TiBDSEFSOCAgKlBhcnRpdGlvbk5hbWUsDQo+IA0KPiAtICBJTiBWT0lEICAgKkltYWdlLA0KPiAN Cj4gLSAgSU4gVUlOVE4gIFNpemUNCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0KPiAtICBFRklf U1RBVFVTICAgICAgICAgICAgICAgU3RhdHVzOw0KPiANCj4gLSAgRUZJX0JMT0NLX0lPX1BST1RP Q09MICAgICpCbG9ja0lvOw0KPiANCj4gLSAgRUZJX0RJU0tfSU9fUFJPVE9DT0wgICAgICpEaXNr SW87DQo+IA0KPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAgTWVkaWFJZDsNCj4gDQo+IC0N Cj4gDQo+IC0gIFN0YXR1cyA9IE9wZW5QYXJ0aXRpb24gKFBhcnRpdGlvbk5hbWUsIEltYWdlLCBT aXplLCAmQmxvY2tJbywgJkRpc2tJbyk7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+IA0KPiAtICAgIGdvdG8gRXhpdDsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0g IE1lZGlhSWQgPSBCbG9ja0lvLT5NZWRpYS0+TWVkaWFJZDsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0 YXR1cyA9IERpc2tJby0+UmVhZERpc2sgKERpc2tJbywgTWVkaWFJZCwgMCwgU2l6ZSwgSW1hZ2Up Ow0KPiANCj4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiANCj4gLSAgICBnb3RvIEV4 aXQ7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBCbG9ja0lvLT5GbHVzaEJsb2NrcyhC bG9ja0lvKTsNCj4gDQo+IC0NCj4gDQo+IC1FeGl0Og0KPiANCj4gLSAgcmV0dXJuIFN0YXR1czsN Cj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLVBhcnRpdGlvbldy aXRlICgNCj4gDQo+IC0gIElOIENIQVI4ICAqUGFydGl0aW9uTmFtZSwNCj4gDQo+IC0gIElOIFZP SUQgICAqSW1hZ2UsDQo+IA0KPiAtICBJTiBVSU5UTiAgU2l6ZQ0KPiANCj4gLSAgKQ0KPiANCj4g LXsNCj4gDQo+IC0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICBTdGF0dXM7DQo+IA0KPiAtICBF RklfQkxPQ0tfSU9fUFJPVE9DT0wgICAgKkJsb2NrSW87DQo+IA0KPiAtICBFRklfRElTS19JT19Q Uk9UT0NPTCAgICAgKkRpc2tJbzsNCj4gDQo+IC0gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBN ZWRpYUlkOw0KPiANCj4gLSAgU1BBUlNFX0hFQURFUiAgICAgICAgICAgICpTcGFyc2VIZWFkZXI7 DQo+IA0KPiAtICBDSFVOS19IRUFERVIgICAgICAgICAgICAgKkNodW5rSGVhZGVyOw0KPiANCj4g LSAgVUlOVDMyICAgICAgICAgICAgICAgICAgIENodW5rOw0KPiANCj4gLSAgVUlOVE4gICAgICAg ICAgICAgICAgICAgIE9mZnNldDsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9IE9wZW5QYXJ0 aXRpb24gKFBhcnRpdGlvbk5hbWUsIEltYWdlLCBTaXplLCAmQmxvY2tJbywgJkRpc2tJbyk7DQo+ IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAgIGdvdG8gRXhpdDsN Cj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIE9mZnNldCA9IDA7DQo+IA0KPiAtICBNZWRp YUlkID0gQmxvY2tJby0+TWVkaWEtPk1lZGlhSWQ7DQo+IA0KPiAtICBTcGFyc2VIZWFkZXIgPSAo U1BBUlNFX0hFQURFUiAqKUltYWdlOw0KPiANCj4gLQ0KPiANCj4gLSAgaWYgKFNwYXJzZUhlYWRl ci0+TWFnaWMgPT0gU1BBUlNFX0hFQURFUl9NQUdJQykgew0KPiANCj4gLSAgICBDSEFSMTYgT3V0 cHV0U3RyaW5nWzY0XTsNCj4gDQo+IC0gICAgVUlOVE4gQ2h1bmtQcmludERlbnNpdHkgPQ0KPiAN Cj4gLSAgICAgIFNwYXJzZUhlYWRlci0+VG90YWxDaHVua3MgPiAxNjAwID8gU3BhcnNlSGVhZGVy LT5Ub3RhbENodW5rcyAvIDIwMCA6IDMyOw0KPiANCj4gLQ0KPiANCj4gLSAgICBJbWFnZSArPSBT cGFyc2VIZWFkZXItPkZpbGVIZWFkZXJTaXplOw0KPiANCj4gLSAgICBmb3IgKENodW5rID0gMDsg Q2h1bmsgPCBTcGFyc2VIZWFkZXItPlRvdGFsQ2h1bmtzOyBDaHVuaysrKSB7DQo+IA0KPiAtICAg ICAgVUlOVE4gV3JpdGVTaXplOw0KPiANCj4gLSAgICAgIENodW5rSGVhZGVyID0gKENIVU5LX0hF QURFUiAqKUltYWdlOw0KPiANCj4gLQ0KPiANCj4gLSAgICAgIC8vIFNob3cgcHJvZ3Jlc3MuIERv bid0IGRvIGl0IGZvciBldmVyeSBwYWNrZXQgYXMgb3V0cHV0dGluZyB0ZXh0DQo+IA0KPiAtICAg ICAgLy8gbWlnaHQgYmUgdGltZSBjb25zdW1pbmcuIENodW5rUHJpbnREZW5zaXR5IGlzIGNhbGN1 bGF0ZWQgdG8NCj4gDQo+IC0gICAgICAvLyBwcm92aWRlIGFuIHVwZGF0ZSBldmVyeSBoYWxmIHBl cmNlbnQgY2hhbmdlIGZvciBsYXJnZQ0KPiANCj4gLSAgICAgIC8vIGRvd25sb2Fkcy4NCj4gDQo+ IC0gICAgICBpZiAoQ2h1bmsgJSBDaHVua1ByaW50RGVuc2l0eSA9PSAwKSB7DQo+IA0KPiAtICAg ICAgICBVbmljb2RlU1ByaW50KE91dHB1dFN0cmluZywgc2l6ZW9mKE91dHB1dFN0cmluZyksDQo+ IA0KPiAtICAgICAgICAgIEwiXHIlNWQgLyAlNWQgY2h1bmtzIHdyaXR0ZW4gKCVkJSUpIiwgQ2h1 bmssDQo+IA0KPiAtICAgICAgICAgIFNwYXJzZUhlYWRlci0+VG90YWxDaHVua3MsDQo+IA0KPiAt ICAgICAgICAgIChDaHVuayAqIDEwMCkgLyBTcGFyc2VIZWFkZXItPlRvdGFsQ2h1bmtzKTsNCj4g DQo+IC0gICAgICAgIG1UZXh0T3V0LT5PdXRwdXRTdHJpbmcobVRleHRPdXQsIE91dHB1dFN0cmlu Zyk7DQo+IA0KPiAtICAgICAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgICAgIERFQlVHICgoREVCVUdf SU5GTywgIkNodW5rICMlZCAtIFR5cGU6IDB4JXggU2l6ZTogJWQgVG90YWxTaXplOiAlZCBPZmZz ZXQgJWRcbiIsDQo+IA0KPiAtICAgICAgICAoQ2h1bmsrMSksIENodW5rSGVhZGVyLT5DaHVua1R5 cGUsIENodW5rSGVhZGVyLT5DaHVua1NpemUsDQo+IA0KPiAtICAgICAgICBDaHVua0hlYWRlci0+ VG90YWxTaXplLCBPZmZzZXQpKTsNCj4gDQo+IC0gICAgICBJbWFnZSArPSBzaXplb2YoQ0hVTktf SEVBREVSKTsNCj4gDQo+IC0gICAgICBXcml0ZVNpemUgPSAoU3BhcnNlSGVhZGVyLT5CbG9ja1Np emUpICogQ2h1bmtIZWFkZXItPkNodW5rU2l6ZTsNCj4gDQo+IC0gICAgICBzd2l0Y2ggKENodW5r SGVhZGVyLT5DaHVua1R5cGUpIHsNCj4gDQo+IC0gICAgICAgIGNhc2UgQ0hVTktfVFlQRV9SQVc6 DQo+IA0KPiAtICAgICAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIldyaXRpbmcgJWQgYXQgT2Zm c2V0ICVkXG4iLCBXcml0ZVNpemUsIE9mZnNldCkpOw0KPiANCj4gLSAgICAgICAgICBTdGF0dXMg PSBEaXNrSW8tPldyaXRlRGlzayAoRGlza0lvLCBNZWRpYUlkLCBPZmZzZXQsIFdyaXRlU2l6ZSwg SW1hZ2UpOw0KPiANCj4gLSAgICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0K PiAtICAgICAgICAgICAgZ290byBFeGl0Ow0KPiANCj4gLSAgICAgICAgICB9DQo+IA0KPiAtICAg ICAgICAgIEltYWdlICs9IFdyaXRlU2l6ZTsNCj4gDQo+IC0gICAgICAgICAgYnJlYWs7DQo+IA0K PiAtICAgICAgICBjYXNlIENIVU5LX1RZUEVfRE9OVF9DQVJFOg0KPiANCj4gLSAgICAgICAgICBi cmVhazsNCj4gDQo+IC0gICAgICAgIGNhc2UgQ0hVTktfVFlQRV9DUkMzMjoNCj4gDQo+IC0gICAg ICAgICAgYnJlYWs7DQo+IA0KPiAtICAgICAgICBkZWZhdWx0Og0KPiANCj4gLSAgICAgICAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiVW5rbm93biBDaHVuayBUeXBlOiAweCV4IiwgQ2h1bmtIZWFk ZXItPkNodW5rVHlwZSkpOw0KPiANCj4gLSAgICAgICAgICBTdGF0dXMgPSBFRklfUFJPVE9DT0xf RVJST1I7DQo+IA0KPiAtICAgICAgICAgIGdvdG8gRXhpdDsNCj4gDQo+IC0gICAgICB9DQo+IA0K PiAtICAgICAgT2Zmc2V0ICs9IFdyaXRlU2l6ZTsNCj4gDQo+IC0gICAgfQ0KPiANCj4gLQ0KPiAN Cj4gLSAgICBVbmljb2RlU1ByaW50IChPdXRwdXRTdHJpbmcsIHNpemVvZiAoT3V0cHV0U3RyaW5n KSwNCj4gDQo+IC0gICAgICAgIEwiXHIlNWQgLyAlNWQgY2h1bmtzIHdyaXR0ZW4gKDEwMCUlKVxy XG4iLA0KPiANCj4gLSAgICAgICAgU3BhcnNlSGVhZGVyLT5Ub3RhbENodW5rcywgU3BhcnNlSGVh ZGVyLT5Ub3RhbENodW5rcyk7DQo+IA0KPiAtICAgIG1UZXh0T3V0LT5PdXRwdXRTdHJpbmcobVRl eHRPdXQsIE91dHB1dFN0cmluZyk7DQo+IA0KPiAtDQo+IA0KPiAtICB9IGVsc2Ugew0KPiANCj4g LQ0KPiANCj4gLSAgICBTdGF0dXMgPSBEaXNrSW8tPldyaXRlRGlzayAoRGlza0lvLCBNZWRpYUlk LCAwLCBTaXplLCBJbWFnZSk7DQo+IA0KPiAtICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gDQo+IC0gICAgICBnb3RvIEV4aXQ7DQo+IA0KPiAtICAgIH0NCj4gDQo+IC0gIH0NCj4gDQo+ IC0NCj4gDQo+IC0gIEJsb2NrSW8tPkZsdXNoQmxvY2tzIChCbG9ja0lvKTsNCj4gDQo+IC0NCj4g DQo+IC1FeGl0Og0KPiANCj4gLSAgcmV0dXJuIFN0YXR1czsNCj4gDQo+IC19DQo+IA0KPiBkaWZm IC0tZ2l0IGEvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL0h0dHBC b290LmMgYi9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFnZXJMaWIvSHR0cEJv b3QuYw0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggZTk4YjMzOGU2ZDdjLi4w MDAwMDAwMDAwMDANCj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5h Z2VyTGliL0h0dHBCb290LmMNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSwzNDQgKzAsMCBAQA0K PiAtLyoNCj4gDQo+IC0jICBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgTGluYXJvIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IA0KPiAtIw0KPiANCj4gLSMgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+IA0KPiAtIw0KPiANCj4gLSovDQo+IA0K PiAtI2luY2x1ZGUgPFJka0Jvb3RNYW5hZ2VyTGliLmg+DQo+IA0KPiAtDQo+IA0KPiAtI2RlZmlu ZSBGSUxFX0hEUl9TSVpFIDE2DQo+IA0KPiAtDQo+IA0KPiAtU1RBVElDIEVGSV9MT0FEX0ZJTEVf UFJPVE9DT0wgICpMb2FkRmlsZSA9IE5VTEw7DQo+IA0KPiAtU1RBVElDIEhUVFBfQk9PVF9QUklW QVRFX0RBVEEgICpQcml2YXRlICA9IE5VTEw7DQo+IA0KPiAtDQo+IA0KPiAtU1RBVElDDQo+IA0K PiAtVk9JRA0KPiANCj4gLUh0dHBQcml2YXRlRnJvbUxvYWRGaWxlICgNCj4gDQo+IC0gIElOICAg RUZJX0xPQURfRklMRV9QUk9UT0NPTCAgICpMb2FkRmlsZSwNCj4gDQo+IC0gIE9VVCAgSFRUUF9C T09UX1BSSVZBVEVfREFUQSAgICoqUHJpdmF0ZQ0KPiANCj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+ IC0gIEhUVFBfQk9PVF9WSVJUVUFMX05JQyAgKklwNE5pYyA9IE5VTEw7DQo+IA0KPiAtDQo+IA0K PiAtICBVSU5UTiBPZmZzZXQgPSAoVUlOVE4pJklwNE5pYy0+TG9hZEZpbGU7DQo+IA0KPiAtDQo+ IA0KPiAtICBJcDROaWMgPSAoVk9JRCAqKSgoQ0hBUjggKilMb2FkRmlsZSAtIE9mZnNldCk7DQo+ IA0KPiAtICBBU1NFUlQgKElwNE5pYy0+U2lnbmF0dXJlID09IEhUVFBfQk9PVF9WSVJUVUFMX05J Q19TSUdOQVRVUkUpOw0KPiANCj4gLSAgKlByaXZhdGUgPSBJcDROaWMtPlByaXZhdGU7DQo+IA0K PiAtfQ0KPiANCj4gLQ0KPiANCj4gLVNUQVRJQw0KPiANCj4gLVZPSUQNCj4gDQo+IC1IdHRwR2V0 TG9hZEZpbGVIYW5kbGUgKA0KPiANCj4gLSAgT1VUIEVGSV9MT0FEX0ZJTEVfUFJPVE9DT0wgICoq TG9hZEZpbGUNCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0KPiAtICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiANCj4gLSAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExvb3BJbmRleDsNCj4gDQo+IC0gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOdW1IYW5kbGVzOw0KPiANCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICAgICpBbGxIYW5kbGVzOw0KPiANCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICAgIEhhbmRsZTsNCj4gDQo+IC0gIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAg ICAgICAqRGV2aWNlUGF0aDsNCj4gDQo+IC0gIEVGSV9ERVZJQ0VfUEFUSF9UT19URVhUX1BST1RP Q09MICAqRGV2UGF0aFRvVGV4dDsNCj4gDQo+IC0gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqRGV2aWNlRnVsbFBhdGg7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBnQlMt PkxvY2F0ZVByb3RvY29sICgNCj4gDQo+IC0gICAgJmdFZmlEZXZpY2VQYXRoVG9UZXh0UHJvdG9j b2xHdWlkLA0KPiANCj4gLSAgICBOVUxMLA0KPiANCj4gLSAgICAoVk9JRCAqKikgJkRldlBhdGhU b1RleHQNCj4gDQo+IC0gICAgKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7 DQo+IA0KPiAtDQo+IA0KPiAtICAvLyBHZXQgZXZlcnkgTG9hZEZpbGUgcHJvdG9jb2wgaW5zdGFu Y2UgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0NCj4gDQo+IC0gIFN0YXR1cyA9IGdCUy0+TG9jYXRl SGFuZGxlQnVmZmVyICgNCj4gDQo+IC0gICAgQnlQcm90b2NvbCwNCj4gDQo+IC0gICAgJmdFZmlM b2FkRmlsZVByb3RvY29sR3VpZCwNCj4gDQo+IC0gICAgTlVMTCwNCj4gDQo+IC0gICAgJk51bUhh bmRsZXMsDQo+IA0KPiAtICAgICZBbGxIYW5kbGVzDQo+IA0KPiAtICAgICk7DQo+IA0KPiAtICBB U1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgLy8gR2V0IEhUVFAg ZHJpdmVyIGhhbmRsZSBmcm9tIEFsbEhhbmRsZXMNCj4gDQo+IC0gIGZvciAoTG9vcEluZGV4ID0g MDsgTG9vcEluZGV4IDwgTnVtSGFuZGxlczsgTG9vcEluZGV4KyspIHsNCj4gDQo+IC0NCj4gDQo+ IC0gICAgSGFuZGxlID0gQWxsSGFuZGxlc1tMb29wSW5kZXhdOw0KPiANCj4gLQ0KPiANCj4gLSAg ICAvLyBHZXQgdGhlIGRldmljZSBwYXRoIGZvciB0aGUgaGFuZGxlDQo+IA0KPiAtICAgIFN0YXR1 cyA9IGdCUy0+T3BlblByb3RvY29sICgNCj4gDQo+IC0gICAgICBIYW5kbGUsDQo+IA0KPiAtICAg ICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KPiANCj4gLSAgICAgIChWT0lEICoqKSAm RGV2aWNlUGF0aCwNCj4gDQo+IC0gICAgICBnSW1hZ2VIYW5kbGUsDQo+IA0KPiAtICAgICAgTlVM TCwNCj4gDQo+IC0gICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCj4gDQo+IC0g ICAgICApOw0KPiANCj4gLSAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0K PiANCj4gLSAgICBEZXZpY2VGdWxsUGF0aCA9IERldlBhdGhUb1RleHQtPkNvbnZlcnREZXZpY2VQ YXRoVG9UZXh0ICgNCj4gDQo+IC0gICAgICBEZXZpY2VQYXRoLA0KPiANCj4gLSAgICAgIEZBTFNF LA0KPiANCj4gLSAgICAgIFRSVUUNCj4gDQo+IC0gICAgICApOw0KPiANCj4gLQ0KPiANCj4gLSAg ICBBU1NFUlQgKERldmljZUZ1bGxQYXRoICE9IE5VTEwpOw0KPiANCj4gLQ0KPiANCj4gLSAgICBp ZiAoU3RyU3RyIChEZXZpY2VGdWxsUGF0aCwgTCJJUHY0IikgIT0gTlVMTCkgew0KPiANCj4gLSAg ICAgIERFQlVHKChERUJVR19JTkZPLCAiSVB2NCBwcm90b2NvbCBmb3VuZFxuIikpOw0KPiANCj4g LSAgICAgIFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCj4gDQo+IC0gICAgICAgIEhhbmRs ZSwNCj4gDQo+IC0gICAgICAgICZnRWZpTG9hZEZpbGVQcm90b2NvbEd1aWQsDQo+IA0KPiAtICAg ICAgICAoVk9JRCAqKikgTG9hZEZpbGUsDQo+IA0KPiAtICAgICAgICBnSW1hZ2VIYW5kbGUsDQo+ IA0KPiAtICAgICAgICBOVUxMLA0KPiANCj4gLSAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfR0VU X1BST1RPQ09MDQo+IA0KPiAtICAgICAgICApOw0KPiANCj4gLSAgICAgIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICAgICAgRnJlZVBvb2wgKEFsbEhhbmRsZXMp Ow0KPiANCj4gLSAgICAgIGJyZWFrOw0KPiANCj4gLSAgICB9DQo+IA0KPiAtICB9DQo+IA0KPiAt DQo+IA0KPiAtICBBU1NFUlQgKExvb3BJbmRleCA8IE51bUhhbmRsZXMpOw0KPiANCj4gLX0NCj4g DQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAtSHR0cFVwZGF0 ZVBhdGggKA0KPiANCj4gLSAgSU4gICBDSEFSMTYgICAgICAgICAgICAgICAgICAgKlVyaSwNCj4g DQo+IC0gIE9VVCAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoqTmV3RGV2aWNlUGF0aA0KPiAN Cj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0gIEVGSV9ERVZfUEFUSCAgICAgICAgICAgICAgKk5v ZGU7DQo+IA0KPiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpUbXBEZXZpY2VQYXRoOw0K PiANCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+IA0KPiAtICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiANCj4gLSAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBMZW5ndGg7DQo+IA0KPiAtICBDSEFSOCAgICAgICAgICAgICAgICAgICAgIEFzY2lp VXJpW1VSSV9TVFJfTUFYX1NJWkVdOw0KPiANCj4gLQ0KPiANCj4gLSAgTm9kZSAgICAgICAgICAg PSBOVUxMOw0KPiANCj4gLSAgVG1wRGV2aWNlUGF0aCAgPSBOVUxMOw0KPiANCj4gLSAgU3RhdHVz ICAgICAgICAgPSBFRklfU1VDQ0VTUzsNCj4gDQo+IC0NCj4gDQo+IC0gIC8vIENvbnZlcnQgdGhl IHNjaGVtZSB0byBhbGwgbG93ZXIgY2FzZS4NCj4gDQo+IC0gIGZvciAoSW5kZXggPSAwOyBJbmRl eCA8IFN0ckxlbiAoVXJpKTsgSW5kZXgrKykgew0KPiANCj4gLSAgICBpZiAoVXJpW0luZGV4XSA9 PSBMJzonKSB7DQo+IA0KPiAtICAgICAgYnJlYWs7DQo+IA0KPiAtICAgIH0NCj4gDQo+IC0gICAg aWYgKFVyaVtJbmRleF0gPj0gTCdBJyAmJiBVcmlbSW5kZXhdIDw9IEwnWicpIHsNCj4gDQo+IC0g ICAgICBVcmlbSW5kZXhdIC09IChDSEFSMTYpKEwnQScgLSBMJ2EnKTsNCj4gDQo+IC0gICAgfQ0K PiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgLy8gT25seSBhY2NlcHQgZW1wdHkgVVJJLCBv ciBodHRwIGFuZCBodHRwcyBVUkkuDQo+IA0KPiAtICBpZiAoKFN0ckxlbiAoVXJpKSAhPSAwKSAm Jg0KPiANCj4gLSAgICAoU3RybkNtcCAoVXJpLCBMImh0dHA6Ly8iLCA3KSAhPSAwKSAmJg0KPiAN Cj4gLSAgICAoU3RybkNtcCAoVXJpLCBMImh0dHBzOi8vIiwgOCkgIT0gMCkpIHsNCj4gDQo+IC0g ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4g DQo+IC0gIC8vIENyZWF0ZSBhIG5ldyBkZXZpY2UgcGF0aCBieSBhcHBlbmRpbmcgdGhlIElQIG5v ZGUgYW5kIFVSSSBub2RlIHRvDQo+IA0KPiAtICAvLyB0aGUgZHJpdmVyJ3MgcGFyZW50IGRldmlj ZSBwYXRoDQo+IA0KPiAtICBOb2RlID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChJUHY0X0RF VklDRV9QQVRIKSk7DQo+IA0KPiAtICBpZiAoTm9kZSA9PSBOVUxMKSB7DQo+IA0KPiAtICAgIFN0 YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiANCj4gLSAgICBnb3RvIEV4aXQ7DQo+IA0K PiAtICB9DQo+IA0KPiAtICBOb2RlLT5JcHY0LkhlYWRlci5UeXBlICAgID0gTUVTU0FHSU5HX0RF VklDRV9QQVRIOw0KPiANCj4gLSAgTm9kZS0+SXB2NC5IZWFkZXIuU3ViVHlwZSA9IE1TR19JUHY0 X0RQOw0KPiANCj4gLSAgU2V0RGV2aWNlUGF0aE5vZGVMZW5ndGggKE5vZGUsIHNpemVvZiAoSVB2 NF9ERVZJQ0VfUEFUSCkpOw0KPiANCj4gLSAgVG1wRGV2aWNlUGF0aCA9IEFwcGVuZERldmljZVBh dGhOb2RlIChcDQo+IA0KPiAtICAgIFByaXZhdGUtPlBhcmVudERldmljZVBhdGgsIChFRklfREVW SUNFX1BBVEhfUFJPVE9DT0wqKU5vZGUpOw0KPiANCj4gLSAgRnJlZVBvb2wgKE5vZGUpOw0KPiAN Cj4gLSAgaWYgKFRtcERldmljZVBhdGggPT0gTlVMTCkgew0KPiANCj4gLSAgICByZXR1cm4gRUZJ X09VVF9PRl9SRVNPVVJDRVM7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICAvLyBVcGRh dGUgdGhlIFVSSSBub2RlIHdpdGggdGhlIGlucHV0IGJvb3QgZmlsZSBVUkkuDQo+IA0KPiAtICBV bmljb2RlU3RyVG9Bc2NpaVN0clMgKFVyaSwgQXNjaWlVcmksIHNpemVvZiAoQXNjaWlVcmkpKTsN Cj4gDQo+IC0gIExlbmd0aCA9IHNpemVvZiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKSArIEFz Y2lpU3RyU2l6ZSAoQXNjaWlVcmkpOw0KPiANCj4gLSAgTm9kZSA9IEFsbG9jYXRlUG9vbCAoTGVu Z3RoKTsNCj4gDQo+IC0gIGlmIChOb2RlID09IE5VTEwpIHsNCj4gDQo+IC0gICAgU3RhdHVzID0g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+IA0KPiAtICAgIEZyZWVQb29sIChUbXBEZXZpY2VQYXRo KTsNCj4gDQo+IC0gICAgZ290byBFeGl0Ow0KPiANCj4gLSAgfQ0KPiANCj4gLSAgTm9kZS0+RGV2 UGF0aC5UeXBlICAgID0gTUVTU0FHSU5HX0RFVklDRV9QQVRIOw0KPiANCj4gLSAgTm9kZS0+RGV2 UGF0aC5TdWJUeXBlID0gTVNHX1VSSV9EUDsNCj4gDQo+IC0NCj4gDQo+IC0gIFNldERldmljZVBh dGhOb2RlTGVuZ3RoIChOb2RlLCBMZW5ndGgpOw0KPiANCj4gLSAgQ29weU1lbSAoKFVJTlQ4Kikg Tm9kZSArIHNpemVvZiAoRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKSwgXA0KPiANCj4gLSAgICBB c2NpaVVyaSwgQXNjaWlTdHJTaXplIChBc2NpaVVyaSkpOw0KPiANCj4gLSAgKk5ld0RldmljZVBh dGggPSBBcHBlbmREZXZpY2VQYXRoTm9kZSAoVG1wRGV2aWNlUGF0aCwgXA0KPiANCj4gLSAgICAo RUZJX0RFVklDRV9QQVRIX1BST1RPQ09MKikgTm9kZSk7DQo+IA0KPiAtDQo+IA0KPiAtICBGcmVl UG9vbCAoTm9kZSk7DQo+IA0KPiAtICBGcmVlUG9vbCAoVG1wRGV2aWNlUGF0aCk7DQo+IA0KPiAt DQo+IA0KPiAtICBpZiAoKk5ld0RldmljZVBhdGggPT0gTlVMTCkgew0KPiANCj4gLSAgICBTdGF0 dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gDQo+IC0gICAgZ290byBFeGl0Ow0KPiANCj4g LSAgfQ0KPiANCj4gLQ0KPiANCj4gLUV4aXQ6DQo+IA0KPiAtDQo+IA0KPiAtICByZXR1cm4gU3Rh dHVzOw0KPiANCj4gLX0NCj4gDQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1FRklfU1RBVFVT DQo+IA0KPiAtSHR0cEdldEltYWdlICgNCj4gDQo+IC0gIElOICAgQ0hBUjE2ICAqVXJpLA0KPiAN Cj4gLSAgT1VUICBVSU5UOCAgICoqRmlsZUJ1ZmZlciwNCj4gDQo+IC0gIE9VVCAgVUlOVE4gICAq RmlsZVNpemUNCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0KPiAtICBFRklfREVWSUNFX1BBVEhf UFJPVE9DT0wgICpOZXdEZXZpY2VQYXRoOw0KPiANCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+IA0KPiAtDQo+IA0KPiAtICAqRmlsZUJ1ZmZlciAgID0gTlVMTDsNCj4g DQo+IC0gIE5ld0RldmljZVBhdGggPSBOVUxMOw0KPiANCj4gLSAgKkZpbGVTaXplICAgICA9IDA7 DQo+IA0KPiAtDQo+IA0KPiAtICAvLyBHZXQgdGhlIExvYWRGaWxlIEhhbmRsZSBhbmQNCj4gDQo+ IC0gIC8vIFByaXZhdGUgc3RydWN0dXJlIG9mIEhUVFAgZHJpdmVyDQo+IA0KPiAtICBpZiAoTG9h ZEZpbGUgPT0gTlVMTCkgew0KPiANCj4gLSAgICBIdHRwR2V0TG9hZEZpbGVIYW5kbGUgKCZMb2Fk RmlsZSk7DQo+IA0KPiAtICAgIEh0dHBQcml2YXRlRnJvbUxvYWRGaWxlIChMb2FkRmlsZSwgJlBy aXZhdGUpOw0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgLy8gVXBkYXRlIFVSSSBwYXRo DQo+IA0KPiAtICBTdGF0dXMgPSBIdHRwVXBkYXRlUGF0aCAoVXJpLCAmTmV3RGV2aWNlUGF0aCk7 DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAgIGdvdG8gRXhp dDsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIC8vIEdldCB0aGUgSFRUUCBpbWFnZSBm cm9tIHNlcnZlcg0KPiANCj4gLSAgU3RhdHVzID0gTG9hZEZpbGUtPkxvYWRGaWxlIChMb2FkRmls ZSwgTmV3RGV2aWNlUGF0aCwgXA0KPiANCj4gLSAgICBUUlVFLCBGaWxlU2l6ZSwgKkZpbGVCdWZm ZXIpOw0KPiANCj4gLSAgaWYoKFN0YXR1cyAhPSBFRklfV0FSTl9GSUxFX1NZU1RFTSkgJiYgXA0K PiANCj4gLSAgICAoU3RhdHVzICE9IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSkgew0KPiANCj4gLSAg ICBnb3RvIEV4aXQ7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICAqRmlsZUJ1ZmZlciA9 IEFsbG9jYXRlUG9vbCAoKkZpbGVTaXplKTsNCj4gDQo+IC0gIGlmICgqRmlsZUJ1ZmZlciA9PSBO VUxMKSB7DQo+IA0KPiAtICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiANCj4g LSAgICBnb3RvIEV4aXQ7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBM b2FkRmlsZS0+TG9hZEZpbGUgKExvYWRGaWxlLCBOZXdEZXZpY2VQYXRoLCBcDQo+IA0KPiAtICAg IFRSVUUsIEZpbGVTaXplLCAqRmlsZUJ1ZmZlcik7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+IA0KPiAtICAgIEZyZWVQb29sIChGaWxlQnVmZmVyKTsNCj4gDQo+IC0gICAg Z290byBFeGl0Ow0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLUV4aXQ6DQo+IA0KPiAtDQo+ IA0KPiAtICBpZiAoTmV3RGV2aWNlUGF0aCAhPSBOVUxMKSB7DQo+IA0KPiAtICAgIEZyZWVQb29s IChOZXdEZXZpY2VQYXRoKTsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIHJldHVybiBT dGF0dXM7DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiANCj4gLVVJTlRODQo+IA0KPiAtUGFyc2VIZWFk ZXIgKA0KPiANCj4gLSAgVk9JRCAqIFN0cg0KPiANCj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0g IFVJTlROIGksIFNpemU7DQo+IA0KPiAtICBVSU5UOCAqUHRyOw0KPiANCj4gLQ0KPiANCj4gLSAg UHRyID0gU3RyOw0KPiANCj4gLSAgZm9yIChpID0gMCwgU2l6ZSA9IDA7IGkgPCBGSUxFX0hEUl9T SVpFOyBpKyspIHsNCj4gDQo+IC0gICAgICBTaXplID0gKFB0cltpXSAtICcwJykgKyAoU2l6ZSAq IDEwKTsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIHJldHVybiBTaXplOw0KPiANCj4g LX0NCj4gDQo+IC0NCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAtUmRrSHR0cEJvb3QgKA0KPiAN Cj4gLSAgVk9JRA0KPiANCj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0gIEVGSV9TVEFUVVMgIAlT dGF0dXM7DQo+IA0KPiAtICBWT0lEICAgICAgICAJKkZpbGVQdHI7DQo+IA0KPiAtICBVSU5UOCAg ICAgICAJKkZpbGVCdWZmZXI7DQo+IA0KPiAtICBVSU5UMTYgICAgICAJKlVyaTsNCj4gDQo+IC0g IFVJTlROICAgICAgIAlGaWxlU2l6ZTsNCj4gDQo+IC0gIFVJTlROICAgICAgIAlMb29wSW5kZXg7 DQo+IA0KPiAtICBVSU5UTiAgICAgICAJU2l6ZTsNCj4gDQo+IC0gIENPTlNUIENIQVIxNiAgKkR0 YlBhdGg7DQo+IA0KPiAtICBDT05TVCBDSEFSMTYJKkltYWdlUGF0aDsNCj4gDQo+IC0gIENPTlNU IENIQVIxNiAgKlNlcnZlclVybFBhdGg7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBHZXRS ZGtWYXJpYWJsZSAoTCJVUkwiLCAmU2VydmVyVXJsUGF0aCk7DQo+IA0KPiAtICBBU1NFUlRfRUZJ X0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgLy8gR2V0IHRoZSBTZXJ2ZXIgbmFt ZSBzdG9yZWQgaW4gZmlsZSBTZXJ2ZXIudXJsDQo+IA0KPiAtICBTdGF0dXMgPSBSZGtSZWFkRmls ZSAoU2VydmVyVXJsUGF0aCwgKFZPSUQgKiopJkZpbGVCdWZmZXIsICZGaWxlU2l6ZSk7DQo+IA0K PiAtICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgVXJpID0g QWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mKCpVcmkpICogKEZpbGVTaXplICsgMSkpOw0KPiANCj4g LSAgaWYgKFVyaSA9PSBOVUxMKSB7DQo+IA0KPiAtICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVT T1VSQ0VTOw0KPiANCj4gLSAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLSAg fQ0KPiANCj4gLQ0KPiANCj4gLSAgZm9yKExvb3BJbmRleCA9IDA7IExvb3BJbmRleCA8IEZpbGVT aXplOyBMb29wSW5kZXgrKykgew0KPiANCj4gLSAgICBVcmlbTG9vcEluZGV4XSA9IEZpbGVCdWZm ZXJbTG9vcEluZGV4XTsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIGlmKEZpbGVCdWZm ZXJbRmlsZVNpemUtMV0gPT0gJ1xuJykgew0KPiANCj4gLSAgICBVcmlbRmlsZVNpemUtMV0gPSAn XDAnOw0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgRnJlZVBvb2wgKEZpbGVCdWZmZXIp Ow0KPiANCj4gLSAgRmlsZUJ1ZmZlcj1OVUxMOw0KPiANCj4gLQ0KPiANCj4gLSAgLy8gRGlzYWJs ZSB3YXRjaGRvZw0KPiANCj4gLSAgU3RhdHVzID0gZ0JTLT5TZXRXYXRjaGRvZ1RpbWVyICgwLCAw eDEwMDAwLCAwLCBOVUxMKTsNCj4gDQo+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g DQo+IC0gICAgREVCVUcgKChERUJVR19XQVJOLCBcDQo+IA0KPiAtICAgICAgIkh0dHBCb290OiBD b3VsZG4ndCBkaXNhYmxlIHdhdGNoZG9nIHRpbWVyOiAlclxuIiwgU3RhdHVzKSk7DQo+IA0KPiAt ICB9DQo+IA0KPiAtDQo+IA0KPiAtICAvLyBHZXQgdGhlIEZpbGUgZnJvbSBzZXJ2ZXIgdXNpbmcg aXQncyBVUkkNCj4gDQo+IC0gIFN0YXR1cyA9IEh0dHBHZXRJbWFnZSAoVXJpLCAmRmlsZUJ1ZmZl ciwgJkZpbGVTaXplKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0K PiAtDQo+IA0KPiAtICAvLyBXcml0ZSB0aGUgcmVjZWl2ZWQgaW1hZ2UgdG8gZmxhc2gNCj4gDQo+ IC0gIEZpbGVQdHIgICA9IEZpbGVCdWZmZXI7DQo+IA0KPiAtICBTaXplICAgICAgPSBQYXJzZUhl YWRlciAoRmlsZVB0cik7DQo+IA0KPiAtICBGaWxlUHRyICArPSBGSUxFX0hEUl9TSVpFOw0KPiAN Cj4gLSAgU3RhdHVzICAgID0gUGFydGl0aW9uV3JpdGUgKChDSEFSOCAqKUZpeGVkUGNkR2V0UHRy IChcDQo+IA0KPiAtICAgIFBjZFJka1N5c3RlbVBhcnRpdGlvbk5hbWUpLCBGaWxlUHRyLCBTaXpl KTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAt ICBGaWxlUHRyICArPSBTaXplOw0KPiANCj4gLSAgU2l6ZSAgICAgID0gUGFyc2VIZWFkZXIgKEZp bGVQdHIpOw0KPiANCj4gLSAgRmlsZVB0ciAgKz0gRklMRV9IRFJfU0laRTsNCj4gDQo+IC0gIFN0 YXR1cyAgICA9IEdldFJka1ZhcmlhYmxlIChMIklNQUdFIiwgJkltYWdlUGF0aCk7DQo+IA0KPiAt ICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLSAgU3RhdHVzICAgID0gUmRrV3Jp dGVGaWxlIChJbWFnZVBhdGgsICZGaWxlUHRyLCAmU2l6ZSk7DQo+IA0KPiAtICBBU1NFUlRfRUZJ X0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgaWYgKCBGaXhlZFBjZEdldEJvb2wg KFBjZER0YkF2YWlsYWJsZSkgKSB7DQo+IA0KPiAtICBGaWxlUHRyICArPSBTaXplOw0KPiANCj4g LSAgU2l6ZSAgICAgID0gUGFyc2VIZWFkZXIgKEZpbGVQdHIpOw0KPiANCj4gLSAgRmlsZVB0ciAg Kz0gRklMRV9IRFJfU0laRTsNCj4gDQo+IC0gIFN0YXR1cyAgICA9IEdldFJka1ZhcmlhYmxlIChM IkRUQiIsICZEdGJQYXRoKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ IA0KPiAtICBTdGF0dXMgICAgPSBSZGtXcml0ZUZpbGUgKER0YlBhdGgsICZGaWxlUHRyLCAmU2l6 ZSk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLSAgfQ0KPiAN Cj4gLQ0KPiANCj4gLSAgRnJlZVBvb2wgKEZpbGVCdWZmZXIpOw0KPiANCj4gLSAgRnJlZVBvb2wg KFVyaSk7DQo+IA0KPiAtDQo+IA0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0NCj4gDQo+ IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFnZXJMaWIv UmRrRmlsZS5jIGIvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1Jk a0ZpbGUuYw0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggZjk5ZTRkNDRlYjYz Li4wMDAwMDAwMDAwMDANCj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RN YW5hZ2VyTGliL1Jka0ZpbGUuYw0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDM4NyArMCwwIEBA DQo+IC0vKg0KPiANCj4gLSMgIENvcHlyaWdodCAoYykgMjAxNC0yMDE4LCBMaW5hcm8gTGltaXRl ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0jDQo+IA0KPiAtIyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+IC0jDQo+IA0KPiAtKi8NCj4g DQo+IC0jaW5jbHVkZSA8UmRrQm9vdE1hbmFnZXJMaWIuaD4NCj4gDQo+IC0NCj4gDQo+IC0jZGVm aW5lIE1BWF9WQVIgICAgICAgNg0KPiANCj4gLQ0KPiANCj4gLS8qKg0KPiANCj4gLSAqIGxpc3Rf Zm9yX2VhY2hfZW50cnkJLQlpdGVyYXRlIG92ZXIgbGlzdCBvZiBnaXZlbiB0eXBlDQo+IA0KPiAt ICogQHBvczoJdGhlIHR5cGUgKiB0byB1c2UgYXMgYSBsb29wIGN1cnNvci4NCj4gDQo+IC0gKiBA aGVhZDoJdGhlIGhlYWQgZm9yIHlvdXIgbGlzdC4NCj4gDQo+IC0gKiBAbWVtYmVyOgl0aGUgbmFt ZSBvZiB0aGUgbGlzdF9zdHJ1Y3Qgd2l0aGluIHRoZSBzdHJ1Y3QuDQo+IA0KPiAtICovDQo+IA0K PiAtI2RlZmluZSBMSVNUX0ZPUl9FQUNIX0VOVFJZKFBvcywgSGVhZCwgTWVtYmVyKQkJCQlcDQo+ IA0KPiAtCWZvciAoUG9zID0gQkFTRV9DUigoSGVhZCktPkZvcndhcmRMaW5rLCB0eXBlb2YoKlBv cyksIE1lbWJlcik7CVwNCj4gDQo+IC0JICAgICAmUG9zLT5NZW1iZXIgIT0gKEhlYWQpOwkJCQkJ XA0KPiANCj4gLQkgICAgIFBvcyA9IEJBU0VfQ1IoUG9zLT5NZW1iZXIuRm9yd2FyZExpbmssIHR5 cGVvZigqUG9zKSwgTWVtYmVyKSkNCj4gDQo+IC0NCj4gDQo+IC0vKioNCj4gDQo+IC0gKiBsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUgLSBpdGVyYXRlIG92ZXIgbGlzdCBvZiBnaXZlbiB0eXBlIHNh ZmUgYWdhaW5zdCByZW1vdmFsIG9mIGxpc3QgZW50cnkNCj4gDQo+IC0gKiBAcG9zOgl0aGUgdHlw ZSAqIHRvIHVzZSBhcyBhIGxvb3AgY3Vyc29yLg0KPiANCj4gLSAqIEBuOgkJYW5vdGhlciB0eXBl ICogdG8gdXNlIGFzIHRlbXBvcmFyeSBzdG9yYWdlDQo+IA0KPiAtICogQGhlYWQ6CXRoZSBoZWFk IGZvciB5b3VyIGxpc3QuDQo+IA0KPiAtICogQG1lbWJlcjoJdGhlIG5hbWUgb2YgdGhlIGxpc3Rf c3RydWN0IHdpdGhpbiB0aGUgc3RydWN0Lg0KPiANCj4gLSAqLw0KPiANCj4gLSNkZWZpbmUgTElT VF9GT1JfRUFDSF9FTlRSWV9TQUZFKFBvcywgTiwgSGVhZCwgTWVtYmVyKQkJCVwNCj4gDQo+IC0J Zm9yIChQb3MgPSBCQVNFX0NSKChIZWFkKS0+Rm9yd2FyZExpbmssIHR5cGVvZigqUG9zKSwgTWVt YmVyKSwJXA0KPiANCj4gLQkJTiA9IEJBU0VfQ1IoUG9zLT5NZW1iZXIuRm9yd2FyZExpbmssIHR5 cGVvZigqUG9zKSwgTWVtYmVyKTsJXA0KPiANCj4gLQkgICAgICZQb3MtPk1lbWJlciAhPSAoSGVh ZCk7CQkJCQlcDQo+IA0KPiAtCSAgICAgUG9zID0gTiwgTiA9IEJBU0VfQ1IoTi0+TWVtYmVyLkZv cndhcmRMaW5rLCB0eXBlb2YoKk4pLCBNZW1iZXIpKQ0KPiANCj4gLQ0KPiANCj4gLS8qICoqKioq KioqKioqKioqKioqKioqKioqKioqICovDQo+IA0KPiAtDQo+IA0KPiAtdHlwZWRlZiBzdHJ1Y3Qg ew0KPiANCj4gLSAgQ0hBUjE2ICAqTmFtZTsNCj4gDQo+IC0gIExJU1RfRU5UUlkgTGlzdDsNCj4g DQo+IC19IERJUl9OT0RFOw0KPiANCj4gLS8qICoqKioqKioqKioqKioqKioqKioqKioqKioqICov DQo+IA0KPiAtDQo+IA0KPiAtU1RBVElDIFVJTlQ4ICAgIFZhcmFibGVzSW5pdGlhbHplZCA9IDA7 DQo+IA0KPiAtU1RBVElDIENIQVIxNiAgICpWYXJSZXN1bHRbTUFYX1ZBUl1bMl07DQo+IA0KPiAt DQo+IA0KPiAtU1RBVElDDQo+IA0KPiAtVk9JRA0KPiANCj4gLVNhdmVTdHJpbmcgKA0KPiANCj4g LSAgT1VUIENIQVIxNiAgICAqKkRlc3QsDQo+IA0KPiAtICBJTiAgQ0hBUjE2ICAgICpTdHJpbmcx LA0KPiANCj4gLSAgSU4gIENIQVIxNiAgICAqU3RyaW5nMg0KPiANCj4gLSAgKQ0KPiANCj4gLXsN Cj4gDQo+IC0gIFVJTlROIFN0cmluZ0xlbmd0aDsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0cmluZ0xl bmd0aCA9IFN0ckxlbiAoU3RyaW5nMSkgKyBTdHJMZW4gKFN0cmluZzIpICsgMTsNCj4gDQo+IC0g ICpEZXN0ID0gQWxsb2NhdGVQb29sIChTdHJpbmdMZW5ndGggKiBzaXplb2YgKENIQVIxNikpOw0K PiANCj4gLSAgQVNTRVJUIChEZXN0ICE9IE5VTEwpOw0KPiANCj4gLSAgU3RyQ3B5UyAoKkRlc3Qs IFN0cmluZ0xlbmd0aCwgU3RyaW5nMSk7DQo+IA0KPiAtICBTdHJDYXRTICgqRGVzdCwgU3RyaW5n TGVuZ3RoLCBTdHJpbmcyKTsNCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAtU1RBVElDDQo+IA0K PiAtRUZJX1NUQVRVUw0KPiANCj4gLUxzRmlsZXMgKA0KPiANCj4gLSAgSU4gIENPTlNUIENIQVIx NiAgKkRpclBhdGgsDQo+IA0KPiAtICBJTiAgQ09OU1QgQ0hBUjE2ICAqVGFyZ2V0RmlsZSwNCj4g DQo+IC0gIE9VVCBDSEFSMTYgICAgICAgICoqUmVzdWx0LA0KPiANCj4gLSAgSU4gIExJU1RfRU5U UlkgICAgKkhlYWQNCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0KPiAtICBFRklfU1RBVFVTICAg ICAgICAgIFN0YXR1czsNCj4gDQo+IC0gIEVGSV9GSUxFX0lORk8gICAgICAgKkZpbGVJbmZvOw0K PiANCj4gLSAgRUZJX0ZJTEVfUFJPVE9DT0wgICAqRmlsZUhhbmRsZTsNCj4gDQo+IC0gIEJPT0xF QU4gICAgICAgICAgICAgTm9GaWxlOw0KPiANCj4gLSAgQ0hBUjE2ICAgICAgICAgICAgICAqVGVt cFBhdGg7DQo+IA0KPiAtICBESVJfTk9ERSAgICAgICAgICAgICpOb2RlOw0KPiANCj4gLSAgVUlO VE4gICAgICAgICAgICAgICBTdHJpbmdMZW5ndGg7DQo+IA0KPiAtDQo+IA0KPiAtICBOb0ZpbGUg ICAgPSBGQUxTRTsNCj4gDQo+IC0gIFN0cmluZ0xlbmd0aCA9IFN0ckxlbihEaXJQYXRoKSArIDI7 DQo+IA0KPiAtICBUZW1wUGF0aCA9IEFsbG9jYXRlUG9vbCAoU3RyaW5nTGVuZ3RoICogc2l6ZW9m IChDSEFSMTYpKTsNCj4gDQo+IC0gIFN0ckNweVMgKFRlbXBQYXRoLCBTdHJpbmdMZW5ndGgsIERp clBhdGgpOw0KPiANCj4gLSAgU3RyQ2F0UyAoVGVtcFBhdGgsIFN0cmluZ0xlbmd0aCwgTCIvIik7 DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBHZXRGaWxlSGFuZGxlciAoJkZpbGVIYW5kbGUs IERpclBhdGgsIEVGSV9GSUxFX01PREVfUkVBRCk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9S IChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgZm9yICggU3RhdHVzID0gRmlsZUhhbmRsZUZp bmRGaXJzdEZpbGUgKEZpbGVIYW5kbGUsICZGaWxlSW5mbyk7DQo+IA0KPiAtICAgICFFRklfRVJS T1IgKFN0YXR1cykgJiYgIU5vRmlsZTsNCj4gDQo+IC0gICAgU3RhdHVzID0gRmlsZUhhbmRsZUZp bmROZXh0RmlsZSAoRmlsZUhhbmRsZSwgRmlsZUluZm8sICZOb0ZpbGUpDQo+IA0KPiAtICAgICkg ew0KPiANCj4gLSAgICBpZiAoIChGaWxlSW5mby0+QXR0cmlidXRlICYgRUZJX0ZJTEVfRElSRUNU T1JZKSAmJg0KPiANCj4gLSAgICAgIChTdHJDbXAgKEZpbGVJbmZvLT5GaWxlTmFtZSwgTCIuIikg IT0gMCkgJiYNCj4gDQo+IC0gICAgICAoU3RyQ21wIChGaWxlSW5mby0+RmlsZU5hbWUsIEwiLi4i KSAhPSAwKSkgew0KPiANCj4gLSAgICAgIE5vZGUgPSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2Yg KERJUl9OT0RFKSk7DQo+IA0KPiAtICAgICAgLy9hcHBlbmQgZGlyZWN0b3J5IG5hbWUgdG8gdGhl IHBhdGgNCj4gDQo+IC0gICAgICBTYXZlU3RyaW5nICgmTm9kZS0+TmFtZSwgVGVtcFBhdGgsIEZp bGVJbmZvLT5GaWxlTmFtZSk7DQo+IA0KPiAtICAgICAgSW5zZXJ0SGVhZExpc3QgKEhlYWQsICZO b2RlLT5MaXN0KTsNCj4gDQo+IC0gICAgfSBlbHNlIGlmIChTdHJDbXAgKEZpbGVJbmZvLT5GaWxl TmFtZSwgVGFyZ2V0RmlsZSkgPT0gMCkgew0KPiANCj4gLSAgICAgIC8vYXBwZW5kIGZpbGUgdG8g dGhlIGFic29sdXRlIHBhdGgNCj4gDQo+IC0gICAgICBTYXZlU3RyaW5nIChSZXN1bHQsIFRlbXBQ YXRoLCBGaWxlSW5mby0+RmlsZU5hbWUpOw0KPiANCj4gLSAgICAgIFN0YXR1cyA9IEVGSV9TVUND RVNTOw0KPiANCj4gLSAgICAgIGdvdG8gRXhpdDsNCj4gDQo+IC0gICAgfQ0KPiANCj4gLSAgfQ0K PiANCj4gLQ0KPiANCj4gLSAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gDQo+IC0NCj4gDQo+ IC1FeGl0Og0KPiANCj4gLSAgRnJlZVBvb2wgKFRlbXBQYXRoKTsNCj4gDQo+IC0gIHJldHVybiBT dGF0dXM7DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiANCj4gLVNUQVRJQw0KPiANCj4gLVZPSUQNCj4g DQo+IC1EZWxEaXJMaXN0ICgNCj4gDQo+IC0gIElOICBMSVNUX0VOVFJZICpIZWFkDQo+IA0KPiAt ICApDQo+IA0KPiAtew0KPiANCj4gLSAgRElSX05PREUgICpOb2RlOw0KPiANCj4gLSAgRElSX05P REUgICpUZW1wOw0KPiANCj4gLQ0KPiANCj4gLSAgTElTVF9GT1JfRUFDSF9FTlRSWV9TQUZFIChO b2RlLCBUZW1wLCBIZWFkLCBMaXN0KSB7DQo+IA0KPiAtICAgIFJlbW92ZUVudHJ5TGlzdCAoJk5v ZGUtPkxpc3QpOw0KPiANCj4gLSAgICBGcmVlUG9vbCAoTm9kZS0+TmFtZSk7DQo+IA0KPiAtICAg IEZyZWVQb29sIChOb2RlKTsNCj4gDQo+IC0gIH0NCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAt U1RBVElDDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLUZpbmRGaWxlSW5EaXIgKA0KPiANCj4g LSAgSU4gIENPTlNUIENIQVIxNiAgKkRldlBhdGgsDQo+IA0KPiAtICBJTiAgQ09OU1QgQ0hBUjE2 ICAqVGFyZ2V0RmlsZSwNCj4gDQo+IC0gIE9VVCBDSEFSMTYgICAgICAgICoqUmVzdWx0DQo+IA0K PiAtICApDQo+IA0KPiAtew0KPiANCj4gLSAgVUlOVDggICAgICAgQ3VycmVudDsNCj4gDQo+IC0g IFVJTlQ4ICAgICAgIE5leHQ7DQo+IA0KPiAtICBESVJfTk9ERSAgICAqVGVtcDsNCj4gDQo+IC0g IExJU1RfRU5UUlkgIERpckxpc3RbMl07DQo+IA0KPiAtDQo+IA0KPiAtICAqUmVzdWx0ICAgICAg ICAgICA9IE5VTEw7DQo+IA0KPiAtICBFRklfU1RBVFVTIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7 DQo+IA0KPiAtDQo+IA0KPiAtICBJbml0aWFsaXplTGlzdEhlYWQgKCZEaXJMaXN0WzBdKTsNCj4g DQo+IC0gIEluaXRpYWxpemVMaXN0SGVhZCAoJkRpckxpc3RbMV0pOw0KPiANCj4gLQ0KPiANCj4g LSAgZm9yIChDdXJyZW50ID0gTmV4dCA9IDAsIFN0YXR1cyA9IExzRmlsZXMgKFwNCj4gDQo+IC0g ICAgRGV2UGF0aCwgVGFyZ2V0RmlsZSwgUmVzdWx0LCAmRGlyTGlzdFtDdXJyZW50XSk7DQo+IA0K PiAtICAgICFJc0xpc3RFbXB0eSAoJkRpckxpc3RbQ3VycmVudF0pOw0KPiANCj4gLSAgICBDdXJy ZW50ID0gTmV4dCkgew0KPiANCj4gLSAgICBOZXh0ID0gQ3VycmVudCBeIDE7DQo+IA0KPiAtICAg IERlbERpckxpc3QgKCZEaXJMaXN0W05leHRdKTsNCj4gDQo+IC0NCj4gDQo+IC0gICAgTElTVF9G T1JfRUFDSF9FTlRSWSAoVGVtcCwgJkRpckxpc3RbQ3VycmVudF0sIExpc3QpIHsNCj4gDQo+IC0g ICAgICBTdGF0dXMgPSBMc0ZpbGVzIChUZW1wLT5OYW1lLCBUYXJnZXRGaWxlLCBSZXN1bHQsICZE aXJMaXN0W05leHRdKTsNCj4gDQo+IC0gICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiANCj4gLSAgICAgICAgRGVsRGlyTGlzdCAoJkRpckxpc3RbQ3VycmVudF0pOw0KPiANCj4gLSAg ICAgICAgYnJlYWs7DQo+IA0KPiAtICAgICAgfQ0KPiANCj4gLSAgICB9DQo+IA0KPiAtICB9DQo+ IA0KPiAtDQo+IA0KPiAtICBEZWxEaXJMaXN0ICgmRGlyTGlzdFtOZXh0XSk7DQo+IA0KPiAtICBy ZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0NCj4gDQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1V SU5UTg0KPiANCj4gLVN0clNwbiAoDQo+IA0KPiAtICBJTiBDSEFSOCAgICAqU3RyaW5nLA0KPiAN Cj4gLSAgSU4gQ0hBUjggICAgKkNoYXJTZXQNCj4gDQo+IC0gICkNCj4gDQo+IC17DQo+IA0KPiAt ICBVSU5UTiBDb3VudDsNCj4gDQo+IC0NCj4gDQo+IC0gIGZvciAoQ291bnQgPSAwOw0KPiANCj4g LSAgICBTdHJpbmdbQ291bnRdICYmICEgKFN0cmluZ1tDb3VudF0gPT0gQ2hhclNldFswXSk7DQo+ IA0KPiAtICAgIENvdW50KyspOw0KPiANCj4gLSAgcmV0dXJuIENvdW50Ow0KPiANCj4gLX0NCj4g DQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAtSW5pdFZhckxp c3QgKA0KPiANCj4gLSAgSU4gIENIQVI4ICAqRmlsZURhdGEsDQo+IA0KPiAtICBJTiAgVUlOVE4g ICBGaWxlU2l6ZQ0KPiANCj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0gIFVJTlROICAgICAgIElu bmVyTG9vcEluZGV4Ow0KPiANCj4gLSAgVUlOVE4gICAgICAgT3V0ZXJMb29wSW5kZXg7DQo+IA0K PiAtICBVSU5UTiAgICAgICBDdXJyZW50Ow0KPiANCj4gLSAgVUlOVE4gICAgICAgTmV4dDsNCj4g DQo+IC0gIENIQVI4ICAgICAgICpWYXJEZWxpbWl0ZXJbMl07DQo+IA0KPiAtICBFRklfU1RBVFVT ICBTdGF0dXM7DQo+IA0KPiAtICBVSU5UTiAgICAgICBTdHJpbmdMZW5ndGg7DQo+IA0KPiAtDQo+ IA0KPiAtICBWYXJEZWxpbWl0ZXJbMF0gPSAiPSI7DQo+IA0KPiAtICBWYXJEZWxpbWl0ZXJbMV0g PSAiXCIiOw0KPiANCj4gLSAgU3RhdHVzICAgICAgICAgID0gRUZJX1NVQ0NFU1M7DQo+IA0KPiAt DQo+IA0KPiAtICAvL0luaXRpYWxpemUgdG8gTlVMTA0KPiANCj4gLSAgZm9yIChPdXRlckxvb3BJ bmRleCA9IDA7IE91dGVyTG9vcEluZGV4IDwgTUFYX1ZBUjsgT3V0ZXJMb29wSW5kZXgrKykgew0K PiANCj4gLSAgICAgIFZhclJlc3VsdFtPdXRlckxvb3BJbmRleF1bMF0gPSBWYXJSZXN1bHRbT3V0 ZXJMb29wSW5kZXhdWzFdID0gTlVMTDsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIGZv ciAoT3V0ZXJMb29wSW5kZXggPSAwLCBOZXh0PTA7DQo+IA0KPiAtICAgIE91dGVyTG9vcEluZGV4 IDwgTUFYX1ZBUiAmJiBOZXh0IDwgRmlsZVNpemU7DQo+IA0KPiAtICAgIE91dGVyTG9vcEluZGV4 KyspIHsNCj4gDQo+IC0gICAgZm9yIChJbm5lckxvb3BJbmRleCA9IDA7IElubmVyTG9vcEluZGV4 IDwgMjsgSW5uZXJMb29wSW5kZXgrKykgew0KPiANCj4gLSAgICAgIEN1cnJlbnQgPSBOZXh0Ow0K PiANCj4gLSAgICAgIE5leHQgKz0gU3RyU3BuICgmRmlsZURhdGFbTmV4dF0sIFZhckRlbGltaXRl cltJbm5lckxvb3BJbmRleF0pOw0KPiANCj4gLSAgICAgIEZpbGVEYXRhW05leHRdID0gJ1wwJzsN Cj4gDQo+IC0gICAgICBpZiAoVmFyUmVzdWx0W091dGVyTG9vcEluZGV4XVtJbm5lckxvb3BJbmRl eF0pIHsNCj4gDQo+IC0gICAgICAgIEZyZWVQb29sIChWYXJSZXN1bHRbT3V0ZXJMb29wSW5kZXhd W0lubmVyTG9vcEluZGV4XSk7DQo+IA0KPiAtICAgICAgfQ0KPiANCj4gLSAgICAgIFN0cmluZ0xl bmd0aCA9IEFzY2lpU3RyTGVuICgmRmlsZURhdGFbQ3VycmVudF0pICsgMTsNCj4gDQo+IC0gICAg ICBWYXJSZXN1bHRbT3V0ZXJMb29wSW5kZXhdW0lubmVyTG9vcEluZGV4XSA9IEFsbG9jYXRlUG9v bCAoU3RyaW5nTGVuZ3RoKTsNCj4gDQo+IC0gICAgICBBc2NpaVN0clRvVW5pY29kZVN0clMgKCZG aWxlRGF0YVtDdXJyZW50XSwNCj4gDQo+IC0gICAgICAgIFZhclJlc3VsdFtPdXRlckxvb3BJbmRl eF1bSW5uZXJMb29wSW5kZXhdLCBTdHJpbmdMZW5ndGgpOw0KPiANCj4gLSAgICAgIC8vc2tpcCBu ZXcgbGluZQ0KPiANCj4gLSAgICAgIE5leHQgKz0gMjsNCj4gDQo+IC0gICAgfQ0KPiANCj4gLSAg fQ0KPiANCj4gLQ0KPiANCj4gLSAgcmV0dXJuIFN0YXR1czsNCj4gDQo+IC19DQo+IA0KPiAtDQo+ IA0KPiAtU1RBVElDDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLUluaXRSZGtWYXJpYWJsZXMg KA0KPiANCj4gLSAgVk9JRA0KPiANCj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0gIEVGSV9TVEFU VVMgICAgU3RhdHVzOw0KPiANCj4gLSAgVUlOVE4gICAgICAgICBSZGtTaXplOw0KPiANCj4gLSAg VUlOVDggICAgICAgICAqUmRrRGF0YTsNCj4gDQo+IC0gIENIQVIxNiAgICAgICAgKlJlc3VsdDsN Cj4gDQo+IC0gIENPTlNUIENIQVIxNiAgKkRldlBhdGg7DQo+IA0KPiAtICBDT05TVCBDSEFSMTYg ICpSZGtGaWxlTmFtZTsNCj4gDQo+IC0NCj4gDQo+IC0gIERldlBhdGggICAgID0gKENPTlNUIENI QVIxNiAqKUZpeGVkUGNkR2V0UHRyIChQY2RSZGtDb25mRmlsZURldmljZVBhdGgpOw0KPiANCj4g LSAgUmRrRmlsZU5hbWUgPSAoQ09OU1QgQ0hBUjE2ICopRml4ZWRQY2RHZXRQdHIgKFBjZFJka0Nv bmZGaWxlTmFtZSk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBGaW5kRmlsZUluRGlyIChE ZXZQYXRoLCBSZGtGaWxlTmFtZSwgJlJlc3VsdCk7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+IA0KPiAtICAgIERFQlVHICgoREVCVUdfRVJST1IsICJGYWlsZWQgdG8gZmlu ZCBmaWxlICVzIGluICVzXG4iLCBcDQo+IA0KPiAtICAgICAgUmRrRmlsZU5hbWUsIERldlBhdGgp KTsNCj4gDQo+IC0gICAgcmV0dXJuIFN0YXR1czsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+ IC0gIFN0YXR1cyA9IFJka1JlYWRGaWxlICgoQ09OU1QgQ0hBUjE2ICopUmVzdWx0LCBcDQo+IA0K PiAtICAgIChWT0lEKiopJlJka0RhdGEsICZSZGtTaXplKTsNCj4gDQo+IC0gIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gDQo+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWxlZCB0 byByZWFkIGZpbGUgJXNcbiIsIFJka0ZpbGVOYW1lKSk7DQo+IA0KPiAtICAgIHJldHVybiBTdGF0 dXM7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBJbml0VmFyTGlzdCAo KENIQVI4ICopUmRrRGF0YSwgUmRrU2l6ZSk7DQo+IA0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiAN Cj4gLX0NCj4gDQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAt R2V0VmFyVmFsdWUgKA0KPiANCj4gLSAgSU4gIENPTlNUIENIQVIxNiAqTmFtZSwNCj4gDQo+IC0g IE9VVCBDT05TVCBDSEFSMTYgKipWYWx1ZQ0KPiANCj4gLSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0g IFVJTlROICAgICAgICAgQ291bnQ7DQo+IA0KPiAtICBFRklfU1RBVFVTICAgIFN0YXR1czsNCj4g DQo+IC0NCj4gDQo+IC0gIGlmICghVmFyYWJsZXNJbml0aWFsemVkKSB7DQo+IA0KPiAtICAgIFN0 YXR1cyA9IEluaXRSZGtWYXJpYWJsZXMgKCk7DQo+IA0KPiAtICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsNCj4gDQo+IC0gICAgICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLSAgICB9DQo+IA0K PiAtDQo+IA0KPiAtICAgIFZhcmFibGVzSW5pdGlhbHplZCA9IDE7DQo+IA0KPiAtICB9DQo+IA0K PiAtDQo+IA0KPiAtICAvL0luaXRpYWxpemUgdG8gTlVMTA0KPiANCj4gLSAgKlZhbHVlID0gTlVM TDsNCj4gDQo+IC0NCj4gDQo+IC0gIGZvciAoQ291bnQgPSAwOyBDb3VudCA8IE1BWF9WQVI7IENv dW50KyspIHsNCj4gDQo+IC0gICAgaWYgKFZhclJlc3VsdFtDb3VudF1bMF0gIT0gTlVMTCAmJg0K PiANCj4gLSAgICAgIFN0ckNtcCAoTmFtZSwgVmFyUmVzdWx0W0NvdW50XVswXSkgPT0gMCkgew0K PiANCj4gLSAgICAgICpWYWx1ZSA9IFZhclJlc3VsdFtDb3VudF1bMV07DQo+IA0KPiAtICAgICAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KPiANCj4gLSAgICB9DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+ IA0KPiAtICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAt RUZJX1NUQVRVUw0KPiANCj4gLUdldFJka1ZhcmlhYmxlICgNCj4gDQo+IC0gIElOICBDT05TVCBD SEFSMTYgICpOYW1lLA0KPiANCj4gLSAgT1VUIENPTlNUIENIQVIxNiAgKipWYWx1ZQ0KPiANCj4g LSAgKQ0KPiANCj4gLXsNCj4gDQo+IC0gIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gDQo+IC0NCj4g DQo+IC0gIFN0YXR1cyA9IEdldFZhclZhbHVlIChOYW1lLCBWYWx1ZSk7DQo+IA0KPiAtICByZXR1 cm4gU3RhdHVzOw0KPiANCj4gLX0NCj4gDQo+IC0NCj4gDQo+IC1FRklfU1RBVFVTDQo+IA0KPiAt UmRrUmVhZEZpbGUgKA0KPiANCj4gLSAgICBJTiAgICAgIENPTlNUIENIQVIxNiAgKlBhdGgsDQo+ IA0KPiAtICAgIElOIE9VVCAgVk9JRCAgICAgICAgICAqKkJ1ZmZlclB0ciwNCj4gDQo+IC0gICAg T1VUICAgICBVSU5UTiAgICAgICAgICpGaWxlU2l6ZQ0KPiANCj4gLSkNCj4gDQo+IC17DQo+IA0K PiAtICBVSU5UTiAgICAgICAgICAgICBCdWZmZXJTaXplOw0KPiANCj4gLSAgVUlOVDY0ICAgICAg ICAgICAgU291cmNlRmlsZVNpemU7DQo+IA0KPiAtICBWT0lEICAgICAgICAgICAgICAqQnVmZmVy Ow0KPiANCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgU3RhdHVzOw0KPiANCj4gLSAgRUZJX0ZJTEVf SEFORExFICAgRmlsZUhhbmRsZTsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9IEdldEZpbGVI YW5kbGVyICgmRmlsZUhhbmRsZSwgUGF0aCwgRUZJX0ZJTEVfTU9ERV9SRUFEKTsNCj4gDQo+IC0g IEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICBCdWZmZXIgPSBO VUxMOw0KPiANCj4gLQ0KPiANCj4gLSAgLy8gR2V0IHRoZSBmaWxlIHNpemUNCj4gDQo+IC0gIFN0 YXR1cyA9IEZpbGVIYW5kbGUtPlNldFBvc2l0aW9uIChGaWxlSGFuZGxlLCAoVUlOVDY0KSAtMSk7 DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAgIGdvdG8gRXhp dDsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9IEZpbGVIYW5kbGUtPkdl dFBvc2l0aW9uIChGaWxlSGFuZGxlLCAmU291cmNlRmlsZVNpemUpOw0KPiANCj4gLSAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiANCj4gLSAgICBnb3RvIEV4aXQ7DQo+IA0KPiAtICB9DQo+ IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBGaWxlSGFuZGxlLT5TZXRQb3NpdGlvbiAoRmlsZUhh bmRsZSwgMCk7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAg IGdvdG8gRXhpdDsNCj4gDQo+IC0gIH0NCj4gDQo+IC0NCj4gDQo+IC0gIEJ1ZmZlclNpemUgPSAo VUlOVE4pU291cmNlRmlsZVNpemU7DQo+IA0KPiAtICBCdWZmZXIgPSAgQWxsb2NhdGVaZXJvUG9v bCAoQnVmZmVyU2l6ZSk7DQo+IA0KPiAtICBpZiAoQnVmZmVyID09IE5VTEwpIHsNCj4gDQo+IC0g ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiAN Cj4gLSAgaWYgKEZpbGVTaXplICE9IE5VTEwpICpGaWxlU2l6ZSAgPSBCdWZmZXJTaXplOw0KPiAN Cj4gLQ0KPiANCj4gLSAgU3RhdHVzID0gRmlsZUhhbmRsZS0+UmVhZCAoRmlsZUhhbmRsZSwgJkJ1 ZmZlclNpemUsIEJ1ZmZlcik7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IEJ1 ZmZlclNpemUgIT0gU291cmNlRmlsZVNpemUpIHsNCj4gDQo+IC0gICAgRnJlZVBvb2wgKEJ1ZmZl cik7DQo+IA0KPiAtICAgIEJ1ZmZlciA9IE5VTEw7DQo+IA0KPiAtICAgIFN0YXR1cyA9IEVGSV9C QURfQlVGRkVSX1NJWkU7DQo+IA0KPiAtICAgIGdvdG8gRXhpdDsNCj4gDQo+IC0gIH0NCj4gDQo+ IC0NCj4gDQo+IC1FeGl0Og0KPiANCj4gLSAgKkJ1ZmZlclB0ciA9IEJ1ZmZlcjsNCj4gDQo+IC0g IHJldHVybiBTdGF0dXM7DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiANCj4gLUVGSV9TVEFUVVMNCj4g DQo+IC1SZGtXcml0ZUZpbGUgKA0KPiANCj4gLSAgSU4gICAgICBDT05TVCBDSEFSMTYgICAgKlBh dGgsDQo+IA0KPiAtICBJTiBPVVQgIFZPSUQgICAgICAgICAgICAqKkJ1ZmZlclB0ciwNCj4gDQo+ IC0gIE9VVCAgICAgVUlOVE4gICAgICAgICAgICpGaWxlU2l6ZQ0KPiANCj4gLSkNCj4gDQo+IC17 DQo+IA0KPiAtICBFRklfU1RBVFVTICAgICAgICBTdGF0dXM7DQo+IA0KPiAtICBFRklfRklMRV9I QU5ETEUgICBGaWxlSGFuZGxlOw0KPiANCj4gLQ0KPiANCj4gLSAgaWYgKEZpbGVTaXplID09IE5V TEwpIHsNCj4gDQo+IC0gICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gDQo+IC0g IH0NCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9IEdldEZpbGVIYW5kbGVyICgmRmlsZUhhbmRs ZSwgUGF0aCwgXA0KPiANCj4gLSAgICBFRklfRklMRV9NT0RFX1JFQUR8RUZJX0ZJTEVfTU9ERV9X UklURXxFRklfRklMRV9NT0RFX0NSRUFURSk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9SIChT dGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgU3RhdHVzID0gRmlsZUhhbmRsZS0+V3JpdGUgKEZp bGVIYW5kbGUsIEZpbGVTaXplLCAqQnVmZmVyUHRyKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0N Cj4gDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Db21jYXN0L0xpYnJhcnkvUmRrQm9vdE1hbmFn ZXJMaWIvU2VjdXJlQm9vdC5jIGIvUGxhdGZvcm0vQ29tY2FzdC9MaWJyYXJ5L1Jka0Jvb3RNYW5h Z2VyTGliL1NlY3VyZUJvb3QuYw0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg ZDI0MTBhZGE5NDhhLi4wMDAwMDAwMDAwMDANCj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9MaWJy YXJ5L1Jka0Jvb3RNYW5hZ2VyTGliL1NlY3VyZUJvb3QuYw0KPiArKysgL2Rldi9udWxsDQo+IEBA IC0xLDUxNyArMCwwIEBADQo+IC0vKg0KPiANCj4gLSMgIENvcHlyaWdodCAoYykgMjAxNC0yMDE4 LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gDQo+IC0jDQo+IA0KPiAt IyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+IC0j DQo+IA0KPiAtKi8NCj4gDQo+IC0jaW5jbHVkZSA8UmRrQm9vdE1hbmFnZXJMaWIuaD4NCj4gDQo+ IC0NCj4gDQo+IC10eXBlZGVmIGVudW0gS0VZDQo+IA0KPiAtew0KPiANCj4gLSAgUEtfS0VZPTEs DQo+IA0KPiAtICBLRUtfS0VZLA0KPiANCj4gLSAgREJfS0VZLA0KPiANCj4gLSAgREJYX0tFWQ0K PiANCj4gLX0gZUtleTsNCj4gDQo+IC0vKiAqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0K PiANCj4gLQ0KPiANCj4gLVNUQVRJQw0KPiANCj4gLUVGSV9TVEFUVVMNCj4gDQo+IC1PcGVuRmls ZUJ5RGV2aWNlUGF0aCgNCj4gDQo+IC0gIElOIE9VVCAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAqKkZpbGVQYXRoLA0KPiANCj4gLSAgT1VUICAgICBFRklfRklMRV9IQU5ETEUgICAgICAgICAg ICpGaWxlSGFuZGxlLA0KPiANCj4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAg IE9wZW5Nb2RlLA0KPiANCj4gLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEF0 dHJpYnV0ZXMNCj4gDQo+IC0pDQo+IA0KPiAtew0KPiANCj4gLSAgRUZJX1NUQVRVUyAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gDQo+IC0gIEVGSV9TSU1QTEVfRklMRV9TWVNURU1f UFJPVE9DT0wgICAqRWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sOw0KPiANCj4gLSAgRUZJX0ZJ TEVfUFJPVE9DT0wgICAgICAgICAgICAgICAgICpIYW5kbGUxOw0KPiANCj4gLSAgRUZJX0ZJTEVf UFJPVE9DT0wgICAgICAgICAgICAgICAgICpIYW5kbGUyOw0KPiANCj4gLSAgRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICAgICAgICAgIERldmljZUhhbmRsZTsNCj4gDQo+IC0NCj4gDQo+IC0gIGlm IChGaWxlUGF0aCA9PSBOVUxMKSB7DQo+IA0KPiAtICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBnQlMtPkxvY2F0 ZURldmljZVBhdGggKA0KPiANCj4gLSAgICAmZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1 aWQsDQo+IA0KPiAtICAgIEZpbGVQYXRoLA0KPiANCj4gLSAgICAmRGV2aWNlSGFuZGxlDQo+IA0K PiAtICAgICk7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAg IHJldHVybiBTdGF0dXM7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBn QlMtPk9wZW5Qcm90b2NvbCAoDQo+IA0KPiAtICAgIERldmljZUhhbmRsZSwNCj4gDQo+IC0gICAg JmdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkLA0KPiANCj4gLSAgICAoVk9JRCoqKSZF ZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2wsDQo+IA0KPiAtICAgIGdJbWFnZUhhbmRsZSwNCj4g DQo+IC0gICAgTlVMTCwNCj4gDQo+IC0gICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09M DQo+IA0KPiAtICAgICk7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0K PiAtICAgIHJldHVybiBTdGF0dXM7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0 dXMgPSBFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2wtPk9wZW5Wb2x1bWUgKFwNCj4gDQo+IC0g ICAgRWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sLCAmSGFuZGxlMSk7DQo+IA0KPiAtICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+IA0KPiAtICAgIEZpbGVIYW5kbGUgPSBOVUxMOw0KPiAN Cj4gLSAgICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgLy8N Cj4gDQo+IC0gIC8vIGdvIGRvd24gZGlyZWN0b3JpZXMgb25lIG5vZGUgYXQgYSB0aW1lLg0KPiAN Cj4gLSAgLy8NCj4gDQo+IC0gIHdoaWxlICghSXNEZXZpY2VQYXRoRW5kICgqRmlsZVBhdGgpKSB7 DQo+IA0KPiAtICAgIC8vDQo+IA0KPiAtICAgIC8vIEZvciBmaWxlIHN5c3RlbSBhY2Nlc3MgZWFj aCBub2RlIHNob3VsZCBiZSBhIGZpbGUgcGF0aCBjb21wb25lbnQNCj4gDQo+IC0gICAgLy8NCj4g DQo+IC0gICAgaWYgKERldmljZVBhdGhUeXBlICgqRmlsZVBhdGgpICE9IE1FRElBX0RFVklDRV9Q QVRIIHx8DQo+IA0KPiAtICAgICAgRGV2aWNlUGF0aFN1YlR5cGUgKCpGaWxlUGF0aCkgIT0gTUVE SUFfRklMRVBBVEhfRFANCj4gDQo+IC0gICAgICApIHsNCj4gDQo+IC0gICAgICBGaWxlSGFuZGxl ID0gTlVMTDsNCj4gDQo+IC0gICAgICByZXR1cm4gKEVGSV9JTlZBTElEX1BBUkFNRVRFUik7DQo+ IA0KPiAtICAgIH0NCj4gDQo+IC0gICAgLy8NCj4gDQo+IC0gICAgLy8gT3BlbiB0aGlzIGZpbGUg cGF0aCBub2RlDQo+IA0KPiAtICAgIC8vDQo+IA0KPiAtICAgIEhhbmRsZTIgID0gSGFuZGxlMTsN Cj4gDQo+IC0gICAgSGFuZGxlMSA9IE5VTEw7DQo+IA0KPiAtDQo+IA0KPiAtICAgIC8vDQo+IA0K PiAtICAgIC8vIFRyeSB0byB0ZXN0IG9wZW5pbmcgYW4gZXhpc3RpbmcgZmlsZQ0KPiANCj4gLSAg ICAvLw0KPiANCj4gLSAgICBTdGF0dXMgPSBIYW5kbGUyLT5PcGVuICgNCj4gDQo+IC0gICAgICBI YW5kbGUyLA0KPiANCj4gLSAgICAgICZIYW5kbGUxLA0KPiANCj4gLSAgICAgICgoRklMRVBBVEhf REVWSUNFX1BBVEgqKSpGaWxlUGF0aCktPlBhdGhOYW1lLA0KPiANCj4gLSAgICAgIE9wZW5Nb2Rl ICZ+RUZJX0ZJTEVfTU9ERV9DUkVBVEUsDQo+IA0KPiAtICAgICAgMA0KPiANCj4gLSAgICAgICk7 DQo+IA0KPiAtDQo+IA0KPiAtICAgIC8vDQo+IA0KPiAtICAgIC8vIHNlZSBpZiB0aGUgZXJyb3Ig d2FzIHRoYXQgaXQgbmVlZHMgdG8gYmUgY3JlYXRlZA0KPiANCj4gLSAgICAvLw0KPiANCj4gLSAg ICBpZiAoKEVGSV9FUlJPUiAoU3RhdHVzKSkgJiYNCj4gDQo+IC0gICAgICAoT3Blbk1vZGUgIT0g KE9wZW5Nb2RlICZ+RUZJX0ZJTEVfTU9ERV9DUkVBVEUpKSkgew0KPiANCj4gLSAgICAgIFN0YXR1 cyA9IEhhbmRsZTItPk9wZW4gKA0KPiANCj4gLSAgICAgIEhhbmRsZTIsDQo+IA0KPiAtICAgICAg JkhhbmRsZTEsDQo+IA0KPiAtICAgICAgKChGSUxFUEFUSF9ERVZJQ0VfUEFUSCopKkZpbGVQYXRo KS0+UGF0aE5hbWUsDQo+IA0KPiAtICAgICAgT3Blbk1vZGUsDQo+IA0KPiAtICAgICAgQXR0cmli dXRlcw0KPiANCj4gLSAgICAgICk7DQo+IA0KPiAtICAgIH0NCj4gDQo+IC0gICAgLy8NCj4gDQo+ IC0gICAgLy8gQ2xvc2UgdGhlIGxhc3Qgbm9kZQ0KPiANCj4gLSAgICAvLw0KPiANCj4gLSAgICBI YW5kbGUyLT5DbG9zZSAoSGFuZGxlMik7DQo+IA0KPiAtDQo+IA0KPiAtICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gDQo+IC0gICAgICAgIHJldHVybiAoU3RhdHVzKTsNCj4gDQo+IC0g ICAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgICAvLw0KPiANCj4gLSAgICAvLyBHZXQgdGhlIG5leHQg bm9kZQ0KPiANCj4gLSAgICAvLw0KPiANCj4gLSAgICAqRmlsZVBhdGggPSBOZXh0RGV2aWNlUGF0 aE5vZGUgKCpGaWxlUGF0aCk7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICAvLw0KPiAN Cj4gLSAgLy8gVGhpcyBpcyBhIHdlYWsgc3BvdCBzaW5jZSBpZiB0aGUgdW5kZWZpbmVkDQo+IA0K PiAtICAvLyBTSEVMTF9GSUxFX0hBTkRMRSBmb3JtYXQgY2hhbmdlcyB0aGlzIG11c3QgY2hhbmdl IGFsc28hDQo+IA0KPiAtICAvLw0KPiANCj4gLSAgKkZpbGVIYW5kbGUgPSAoVk9JRCopSGFuZGxl MTsNCj4gDQo+IC0NCj4gDQo+IC0gIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gDQo+IC19DQo+IA0K PiAtDQo+IA0KPiAtRUZJX1NUQVRVUw0KPiANCj4gLUdldEZpbGVIYW5kbGVyICgNCj4gDQo+IC0g IE9VVCBFRklfRklMRV9IQU5ETEUgKkZpbGVIYW5kbGUsDQo+IA0KPiAtICBJTiAgQ09OU1QgQ0hB UjE2ICAgICpQYXRoLA0KPiANCj4gLSAgSU4gIFVJTlQ2NCAgICAgICAgICBPcGVuTW9kZQ0KPiAN Cj4gLSkNCj4gDQo+IC17DQo+IA0KPiAtICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+IA0KPiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAg ICAqS2V5RmlsZURldmljZVBhdGg7DQo+IA0KPiAtICBFRklfREVWSUNFX1BBVEhfRlJPTV9URVhU X1BST1RPQ09MICAqRGV2aWNlUGF0aEZyb21UZXh0UHJvdG9jb2w7DQo+IA0KPiAtDQo+IA0KPiAt ICBTdGF0dXMgICAgICAgID0gRUZJX1NVQ0NFU1M7DQo+IA0KPiAtICBLZXlGaWxlRGV2aWNlUGF0 aCAgID0gTlVMTDsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9j b2wgKA0KPiANCj4gLSAgICAgICAgICAgICAgICZnRWZpRGV2aWNlUGF0aEZyb21UZXh0UHJvdG9j b2xHdWlkLA0KPiANCj4gLSAgICAgICAgICAgICAgIE5VTEwsDQo+IA0KPiAtICAgICAgICAgICAg ICAgKFZPSUQqKikmRGV2aWNlUGF0aEZyb21UZXh0UHJvdG9jb2wNCj4gDQo+IC0gICAgICAgICAg ICk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4g LSAgS2V5RmlsZURldmljZVBhdGggPSBEZXZpY2VQYXRoRnJvbVRleHRQcm90b2NvbC0+Q29udmVy dFRleHRUb0RldmljZVBhdGggKFBhdGgpOw0KPiANCj4gLSAgaWYgKEtleUZpbGVEZXZpY2VQYXRo ICE9IE5VTEwpDQo+IA0KPiAtICB7DQo+IA0KPiAtICAgIFN0YXR1cyA9IE9wZW5GaWxlQnlEZXZp Y2VQYXRoICgmS2V5RmlsZURldmljZVBhdGgsIEZpbGVIYW5kbGUsIE9wZW5Nb2RlLCAwKTsNCj4g DQo+IC0gICAgaWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUykNCj4gDQo+IC0gICAgew0KPiANCj4g LSAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJHZXR0aW5nIEZpbGVIYW5kbGUgb2YgJXMgRmFp bGVkXG4iLFBhdGgpKTsNCj4gDQo+IC0gICAgfQ0KPiANCj4gLSAgfQ0KPiANCj4gLSAgcmV0dXJu IFN0YXR1czsNCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAtU1RBVElDDQo+IA0KPiAtRUZJX1NU QVRVUw0KPiANCj4gLUNyZWF0ZVRpbWVCYXNlZFBheWxvYWQgKA0KPiANCj4gLSAgSU4gT1VUIFVJ TlROICAqRGF0YVNpemUsDQo+IA0KPiAtICBJTiBPVVQgVUlOVDggICoqRGF0YQ0KPiANCj4gLSkN Cj4gDQo+IC17DQo+IA0KPiAtICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+IA0KPiAtICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTmV3RGF0YTsN Cj4gDQo+IC0gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQYXlsb2FkOw0KPiAN Cj4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZFNpemU7DQo+IA0K PiAtICBFRklfVkFSSUFCTEVfQVVUSEVOVElDQVRJT05fMiAgICAqRGVzY3JpcHRvckRhdGE7DQo+ IA0KPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdG9yU2l6ZTsN Cj4gDQo+IC0gIEVGSV9USU1FICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWU7DQo+IA0KPiAt DQo+IA0KPiAtICBpZiAoRGF0YSA9PSBOVUxMIHx8IERhdGFTaXplID09IE5VTEwpIHsNCj4gDQo+ IC0gICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiANCj4gLSAgfQ0KPiANCj4g LQ0KPiANCj4gLSAgLy8NCj4gDQo+IC0gIC8vIEluIFNldHVwIG1vZGUgb3IgQ3VzdG9tIG1vZGUs IHRoZSB2YXJpYWJsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHNpZ25lZCBidXQgdGhlDQo+IA0KPiAt ICAvLyBwYXJhbWV0ZXJzIHRvIHRoZSBTZXRWYXJpYWJsZSgpIGNhbGwgc3RpbGwgbmVlZCB0byBi ZSBwcmVwYXJlZCBhcyBhdXRoZW50aWNhdGVkDQo+IA0KPiAtICAvLyB2YXJpYWJsZS4gU28gd2Ug Y3JlYXRlIEVGSV9WQVJJQUJMRV9BVVRIRU5USUNBVEVEXzIgZGVzY3JpcHRvciB3aXRob3V0IGNl cnRpZmljYXRlDQo+IA0KPiAtICAvLyBkYXRhIGluIGl0Lg0KPiANCj4gLSAgLy8NCj4gDQo+IC0N Cj4gDQo+IC0gIFBheWxvYWQgICAgID0gKkRhdGE7DQo+IA0KPiAtICBQYXlsb2FkU2l6ZSA9ICpE YXRhU2l6ZTsNCj4gDQo+IC0NCj4gDQo+IC0gIERlc2NyaXB0b3JTaXplID0gT0ZGU0VUX09GIChF RklfVkFSSUFCTEVfQVVUSEVOVElDQVRJT05fMiwgQXV0aEluZm8pICsgXA0KPiANCj4gLSAgICBP RkZTRVRfT0YgKFdJTl9DRVJUSUZJQ0FURV9VRUZJX0dVSUQsIENlcnREYXRhKTsNCj4gDQo+IC0g IE5ld0RhdGEgPSAoVUlOVDgqKSBBbGxvY2F0ZVplcm9Qb29sIChEZXNjcmlwdG9yU2l6ZSArIFBh eWxvYWRTaXplKTsNCj4gDQo+IC0gIGlmIChOZXdEYXRhID09IE5VTEwpIHsNCj4gDQo+IC0gICAg ICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0K PiAtICBpZiAoKFBheWxvYWQgIT0gTlVMTCkgJiYgKFBheWxvYWRTaXplICE9IDApKSB7DQo+IA0K PiAtICAgICAgQ29weU1lbSAoTmV3RGF0YSArIERlc2NyaXB0b3JTaXplLCBQYXlsb2FkLCBQYXls b2FkU2l6ZSk7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBEZXNjcmlwdG9yRGF0YSA9 IChFRklfVkFSSUFCTEVfQVVUSEVOVElDQVRJT05fMiAqKSAoTmV3RGF0YSk7DQo+IA0KPiAtDQo+ IA0KPiAtICBaZXJvTWVtICgmVGltZSwgc2l6ZW9mIChFRklfVElNRSkpOw0KPiANCj4gLSAgU3Rh dHVzID0gZ1JULT5HZXRUaW1lICgmVGltZSwgTlVMTCk7DQo+IA0KPiAtICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+IA0KPiAtICAgIEZyZWVQb29sKE5ld0RhdGEpOw0KPiANCj4gLSAgICBy ZXR1cm4gU3RhdHVzOw0KPiANCj4gLSAgfQ0KPiANCj4gLSAgVGltZS5QYWQxICAgICAgID0gMDsN Cj4gDQo+IC0gIFRpbWUuTmFub3NlY29uZCA9IDA7DQo+IA0KPiAtICBUaW1lLlRpbWVab25lICAg PSAwOw0KPiANCj4gLSAgVGltZS5EYXlsaWdodCAgID0gMDsNCj4gDQo+IC0gIFRpbWUuUGFkMiAg ICAgICA9IDA7DQo+IA0KPiAtICBDb3B5TWVtICgmRGVzY3JpcHRvckRhdGEtPlRpbWVTdGFtcCwg JlRpbWUsIHNpemVvZiAoRUZJX1RJTUUpKTsNCj4gDQo+IC0NCj4gDQo+IC0gIERlc2NyaXB0b3JE YXRhLT5BdXRoSW5mby5IZHIuZHdMZW5ndGggICAgICAgICA9IFwNCj4gDQo+IC0gICAgT0ZGU0VU X09GIChXSU5fQ0VSVElGSUNBVEVfVUVGSV9HVUlELCBDZXJ0RGF0YSk7DQo+IA0KPiAtICBEZXNj cmlwdG9yRGF0YS0+QXV0aEluZm8uSGRyLndSZXZpc2lvbiAgICAgICAgPSAweDAyMDA7DQo+IA0K PiAtICBEZXNjcmlwdG9yRGF0YS0+QXV0aEluZm8uSGRyLndDZXJ0aWZpY2F0ZVR5cGUgPSBXSU5f Q0VSVF9UWVBFX0VGSV9HVUlEOw0KPiANCj4gLSAgQ29weUd1aWQgKCZEZXNjcmlwdG9yRGF0YS0+ QXV0aEluZm8uQ2VydFR5cGUsICZnRWZpQ2VydFBrY3M3R3VpZCk7DQo+IA0KPiAtDQo+IA0KPiAt ICBpZiAoUGF5bG9hZCAhPSBOVUxMKSB7DQo+IA0KPiAtICAgIEZyZWVQb29sKFBheWxvYWQpOw0K PiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgKkRhdGFTaXplID0gRGVzY3JpcHRvclNpemUg KyBQYXlsb2FkU2l6ZTsNCj4gDQo+IC0gICpEYXRhICAgICA9IE5ld0RhdGE7DQo+IA0KPiAtICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiANCj4gLVNUQVRJQw0KPiAN Cj4gLUVGSV9TVEFUVVMNCj4gDQo+IC1TZXRCb290TW9kZSAoDQo+IA0KPiAtICBJTiBVSU5UOCAg U2VjdXJlQm9vdE1vZGUNCj4gDQo+IC0pDQo+IA0KPiAtew0KPiANCj4gLSAgcmV0dXJuIGdSVC0+ U2V0VmFyaWFibGUgKA0KPiANCj4gLSAgICBFRklfQ1VTVE9NX01PREVfTkFNRSwNCj4gDQo+IC0g ICAgJmdFZmlDdXN0b21Nb2RlRW5hYmxlR3VpZCwNCj4gDQo+IC0gICAgRUZJX1ZBUklBQkxFX05P Tl9WT0xBVElMRSB8IEVGSV9WQVJJQUJMRV9CT09UU0VSVklDRV9BQ0NFU1MsDQo+IA0KPiAtICAg IHNpemVvZiAoVUlOVDgpLA0KPiANCj4gLSAgICAmU2VjdXJlQm9vdE1vZGUNCj4gDQo+IC0gICk7 DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiANCj4gLVNUQVRJQw0KPiANCj4gLUVGSV9TVEFUVVMNCj4g DQo+IC1TZXRWYXJpYWJsZSAoDQo+IA0KPiAtICBJTiBFRklfU0lHTkFUVVJFX0xJU1QgKlBrQ2Vy dCwNCj4gDQo+IC0gIElOIFVJTlROICAgICAgICAgICAgICBEYXRhU2l6ZSwNCj4gDQo+IC0gIElO IGVLZXkgICAgICAgICAgICAgICBLZXlUeXBlDQo+IA0KPiAtKQ0KPiANCj4gLXsNCj4gDQo+IC0g IFVJTlQzMiAgICAgICBBdHRyOw0KPiANCj4gLSAgRUZJX1NUQVRVUyAgIFN0YXR1czsNCj4gDQo+ IC0NCj4gDQo+IC0gIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiANCj4gLSAgQXR0ciA9IEVGSV9W QVJJQUJMRV9OT05fVk9MQVRJTEUgfCBFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MgfA0KPiAN Cj4gLSAgICBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHwgRUZJX1ZBUklBQkxFX1RJ TUVfQkFTRURfQVVUSEVOVElDQVRFRF9XUklURV9BQ0NFU1M7DQo+IA0KPiAtICBpZiAoS2V5VHlw ZSA9PSBQS19LRVkpDQo+IA0KPiAtICB7DQo+IA0KPiAtICAgIERFQlVHICgoREVCVUdfSU5GTywg IlNldHRpbmcgUEsgS2V5XG4iKSk7DQo+IA0KPiAtICAgIFN0YXR1cyA9IGdSVC0+U2V0VmFyaWFi bGUgKA0KPiANCj4gLSAgICAgIEVGSV9QTEFURk9STV9LRVlfTkFNRSwNCj4gDQo+IC0gICAgICAm Z0VmaUdsb2JhbFZhcmlhYmxlR3VpZCwNCj4gDQo+IC0gICAgICBBdHRyLA0KPiANCj4gLSAgICAg IERhdGFTaXplLA0KPiANCj4gLSAgICAgIFBrQ2VydA0KPiANCj4gLSAgICApOw0KPiANCj4gLSAg fQ0KPiANCj4gLSAgZWxzZSBpZiAoS2V5VHlwZSA9PSBLRUtfS0VZKQ0KPiANCj4gLSAgew0KPiAN Cj4gLSAgICBERUJVRyAoKERFQlVHX0lORk8sICJTZXR0aW5nIEtFSyBLZXlcbiIpKTsNCj4gDQo+ IC0gICAgU3RhdHVzID0gZ1JULT5TZXRWYXJpYWJsZSAoDQo+IA0KPiAtICAgICAgRUZJX0tFWV9F WENIQU5HRV9LRVlfTkFNRSwNCj4gDQo+IC0gICAgICAmZ0VmaUdsb2JhbFZhcmlhYmxlR3VpZCwN Cj4gDQo+IC0gICAgICBBdHRyLA0KPiANCj4gLSAgICAgIERhdGFTaXplLA0KPiANCj4gLSAgICAg IFBrQ2VydA0KPiANCj4gLSAgICApOw0KPiANCj4gLQ0KPiANCj4gLSAgICBTdGF0dXMgPSBnUlQt PlNldFZhcmlhYmxlICgNCj4gDQo+IC0gICAgICBFRklfSU1BR0VfU0VDVVJJVFlfREFUQUJBU0Us DQo+IA0KPiAtICAgICAgJmdFZmlJbWFnZVNlY3VyaXR5RGF0YWJhc2VHdWlkLA0KPiANCj4gLSAg ICAgIEF0dHIsDQo+IA0KPiAtICAgICAgRGF0YVNpemUsDQo+IA0KPiAtICAgICAgUGtDZXJ0DQo+ IA0KPiAtICAgICk7DQo+IA0KPiAtICB9DQo+IA0KPiAtICBlbHNlDQo+IA0KPiAtICB7DQo+IA0K PiAtICAgIEFTU0VSVChGQUxTRSk7DQo+IA0KPiAtICB9DQo+IA0KPiAtICByZXR1cm4gU3RhdHVz Ow0KPiANCj4gLX0NCj4gDQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1WT0lEDQo+IA0KPiAt UG9wdWxhdGVDZXJ0ICgNCj4gDQo+IC0gIE9VVCBFRklfU0lHTkFUVVJFX0xJU1QgICoqQ2VydCwN Cj4gDQo+IC0gIElOICBVSU5UTiAgICAgICAgICAgICAgIERhdGFTaXplLA0KPiANCj4gLSAgSU4g IFVJTlQ4ICAgICAgICAgICAgICAgKkRhdGENCj4gDQo+IC0pDQo+IA0KPiAtew0KPiANCj4gLSAg RUZJX1NJR05BVFVSRV9EQVRBICAqQ2VydERhdGEgPSBOVUxMOw0KPiANCj4gLQ0KPiANCj4gLSAg aWYgKCgqQ2VydCkgPT0gTlVMTCkNCj4gDQo+IC0gIHsNCj4gDQo+IC0gICAgKCpDZXJ0KSA9IChF RklfU0lHTkFUVVJFX0xJU1QqKSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKEVGSV9TSUdOQVRV UkVfTElTVCkNCj4gDQo+IC0gICAgICArIHNpemVvZihFRklfU0lHTkFUVVJFX0RBVEEpIC0gMQ0K PiANCj4gLSAgICAgICsgRGF0YVNpemUgKTsNCj4gDQo+IC0NCj4gDQo+IC0gICAgQVNTRVJUICgo KkNlcnQpICE9IE5VTEwpOw0KPiANCj4gLSAgfQ0KPiANCj4gLSAgKCpDZXJ0KS0+U2lnbmF0dXJl TGlzdFNpemUgICA9IChVSU5UMzIpIChzaXplb2YgKEVGSV9TSUdOQVRVUkVfTElTVCkNCj4gDQo+ IC0gICAgKyBzaXplb2YgKEVGSV9TSUdOQVRVUkVfREFUQSkgLSAxDQo+IA0KPiAtICAgICsgRGF0 YVNpemUpOw0KPiANCj4gLSAgKCpDZXJ0KS0+U2lnbmF0dXJlU2l6ZSAgICAgICA9IChVSU5UMzIp IChzaXplb2YgKEVGSV9TSUdOQVRVUkVfREFUQSkgLSAxICsgRGF0YVNpemUpOw0KPiANCj4gLSAg KCpDZXJ0KS0+U2lnbmF0dXJlSGVhZGVyU2l6ZSA9IDA7DQo+IA0KPiAtICBDb3B5R3VpZCAoJigq Q2VydCktPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFg1MDlHdWlkKTsNCj4gDQo+IC0NCj4gDQo+ IC0NCj4gDQo+IC0gIENlcnREYXRhID0gKEVGSV9TSUdOQVRVUkVfREFUQSopICgoVUlOVE4pKCpD ZXJ0KSArIFwNCj4gDQo+IC0gICAgc2l6ZW9mKEVGSV9TSUdOQVRVUkVfTElTVCkgKyAoKkNlcnQp LT5TaWduYXR1cmVIZWFkZXJTaXplKTsNCj4gDQo+IC0gIEFTU0VSVCAoQ2VydERhdGEgIT0gTlVM TCk7DQo+IA0KPiAtDQo+IA0KPiAtICBDb3B5R3VpZCAoJkNlcnREYXRhLT5TaWduYXR1cmVPd25l ciwgJmdFZmlHbG9iYWxWYXJpYWJsZUd1aWQpOw0KPiANCj4gLSAgQ29weU1lbSAoJkNlcnREYXRh LT5TaWduYXR1cmVEYXRhLCBEYXRhLCBEYXRhU2l6ZSk7DQo+IA0KPiAtfQ0KPiANCj4gLQ0KPiAN Cj4gLVNUQVRJQw0KPiANCj4gLUVGSV9TVEFUVVMNCj4gDQo+IC1SZWdpc3RlckNlcnQgKA0KPiAN Cj4gLSAgSU4gIFVJTlQ4ICAgKktleURhdGEsDQo+IA0KPiAtICBJTiAgVUlOVE4gICBLZXlTaXpl LA0KPiANCj4gLSAgSU4gIGVLZXkgICAgS2V5VHlwZQ0KPiANCj4gLSkNCj4gDQo+IC17DQo+IA0K PiAtICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gDQo+IC0gIEVGSV9TSUdOQVRVUkVf TElTVCAgKkNlcnQ7DQo+IA0KPiAtDQo+IA0KPiAtICBDZXJ0ID0gTlVMTDsNCj4gDQo+IC0NCj4g DQo+IC0gIFN0YXR1cyA9IFNldEJvb3RNb2RlIChDVVNUT01fU0VDVVJFX0JPT1RfTU9ERSk7DQo+ IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgUG9w dWxhdGVDZXJ0ICgmQ2VydCwgS2V5U2l6ZSwgS2V5RGF0YSk7DQo+IA0KPiAtDQo+IA0KPiAtICBL ZXlTaXplID0gQ2VydC0+U2lnbmF0dXJlTGlzdFNpemU7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0 dXMgPSBDcmVhdGVUaW1lQmFzZWRQYXlsb2FkICgmS2V5U2l6ZSwgKFVJTlQ4KiopICZDZXJ0KTsN Cj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICBT dGF0dXMgPSBTZXRWYXJpYWJsZSAoQ2VydCwgS2V5U2l6ZSwgS2V5VHlwZSk7DQo+IA0KPiAtICBy ZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0NCj4gDQo+IC0NCj4gDQo+IC1TVEFUSUMNCj4gDQo+IC1W T0lEDQo+IA0KPiAtUmRrU2V0VmFyaWFibGUgKA0KPiANCj4gLSAgVk9JRA0KPiANCj4gLSkNCj4g DQo+IC17DQo+IA0KPiAtICBDT05TVCBDSEFSMTYJKktleVBhdGg7DQo+IA0KPiAtICBFRklfU1RB VFVTICAJU3RhdHVzOw0KPiANCj4gLSAgVUlOVDggICAgICAgICAqS2VrS2V5LCAgICAqUGtLZXks ICAgICpLZWtDcnREYXRhOw0KPiANCj4gLSAgVUlOVE4gICAgICAgICBLZWtLZXlTaXplLCBQa0tl eVNpemUsIEtla0NydFNpemU7DQo+IA0KPiAtICBJTlQ4KiAgICAgICAgIFNldHVwTW9kZTsNCj4g DQo+IC0gIGVLZXkgICAgICAgICAgS2V5VHlwZTsNCj4gDQo+IC0NCj4gDQo+IC0gIEtleVBhdGgg ICAgPSBOVUxMOw0KPiANCj4gLSAgU2V0dXBNb2RlICA9IE5VTEw7DQo+IA0KPiAtICBLZWtLZXkg ICAgID0gUGtLZXkgICAgID0gS2VrQ3J0RGF0YSA9IE5VTEw7DQo+IA0KPiAtICBLZWtLZXlTaXpl ID0gUGtLZXlTaXplID0gS2VrQ3J0U2l6ZSA9IDA7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMg PSBHZXRSZGtWYXJpYWJsZSAoTCJST09UQ0VSVCIsICZLZXlQYXRoKTsNCj4gDQo+IC0NCj4gDQo+ IC0gIC8vc2V0IG9ubHkgaWYgdGhlIEtlayBDcnQgZmlsZSBtZW50aW9uZWQgaW4gdGhlIGNvbmZp Z3VyYXRpb24gZmlsZQ0KPiANCj4gLSAgaWYgKEtleVBhdGggIT0gTlVMTCkgew0KPiANCj4gLSAg ICBTdGF0dXMgPSBSZGtSZWFkRmlsZSAoDQo+IA0KPiAtICAgICAgS2V5UGF0aCwNCj4gDQo+IC0g ICAgICAoVk9JRCAqKikmS2VrQ3J0RGF0YSwNCj4gDQo+IC0gICAgICAmS2VrQ3J0U2l6ZQ0KPiAN Cj4gLSAgICAgICk7DQo+IA0KPiAtICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0K PiAtDQo+IA0KPiAtICAgIFN0YXR1cyA9IGdSVC0+U2V0VmFyaWFibGUgKA0KPiANCj4gLSAgICAg IEwiUmRrUm9vdENlcnRpZmljYXRlIiwNCj4gDQo+IC0gICAgICAmZ1Jka0dsb2JhbFZhcmlhYmxl R3VpZCwNCj4gDQo+IC0gICAgICBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHwgRUZJ X1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNTLA0KPiANCj4gLSAgICAgIEtla0NydFNpemUsDQo+IA0K PiAtICAgICAgS2VrQ3J0RGF0YQ0KPiANCj4gLSAgICAgICk7DQo+IA0KPiAtICAgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICAgIGlmIChLZWtDcnREYXRhKSBG cmVlUG9vbCAoS2VrQ3J0RGF0YSk7DQo+IA0KPiAtICB9DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0 dXMgPSBHZXRSZGtWYXJpYWJsZSAoTCJLRUtDRVJUIiwgJktleVBhdGgpOw0KPiANCj4gLSAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gDQo+IC0NCj4gDQo+IC0gIFN0YXR1cyA9IFJka1Jl YWRGaWxlICgNCj4gDQo+IC0gICAgS2V5UGF0aCwNCj4gDQo+IC0gICAgKFZPSUQgKiopJktla0tl eSwNCj4gDQo+IC0gICAgJktla0tleVNpemUNCj4gDQo+IC0gICAgKTsNCj4gDQo+IC0gIEFTU0VS VF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBHZXRSZGtW YXJpYWJsZSAoTCJQS0NFUlQiLCAmS2V5UGF0aCk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9S IChTdGF0dXMpOw0KPiANCj4gLQ0KPiANCj4gLSAgU3RhdHVzID0gUmRrUmVhZEZpbGUgKA0KPiAN Cj4gLSAgICBLZXlQYXRoLA0KPiANCj4gLSAgICAoVk9JRCAqKikmUGtLZXksDQo+IA0KPiAtICAg ICZQa0tleVNpemUNCj4gDQo+IC0gICAgKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0 YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICBLZXlUeXBlID0gUEtfS0VZOw0KPiANCj4gLSAgU3Rh dHVzID0gUmVnaXN0ZXJDZXJ0IChQa0tleSwgUGtLZXlTaXplLCBLZXlUeXBlKTsNCj4gDQo+IC0g IEdldEVmaUdsb2JhbFZhcmlhYmxlMiAoTCJTZXR1cE1vZGUiLCAoVk9JRCoqKSZTZXR1cE1vZGUs IE5VTEwpOw0KPiANCj4gLQ0KPiANCj4gLSAgaWYgKCpTZXR1cE1vZGUgPT0gMCkNCj4gDQo+IC0g IHsNCj4gDQo+IC0gICAgREVCVUcgKChERUJVR19JTkZPLCAiUEsgS2V5IEdvdCBSZWdpc3RlcmVk LiBOb3cgU3lzdGVtIGluIFVzZXIgTW9kZVxuIikpOw0KPiANCj4gLSAgICBLZXlUeXBlID0gS0VL X0tFWTsNCj4gDQo+IC0gICAgU3RhdHVzID0gUmVnaXN0ZXJDZXJ0IChLZWtLZXksIEtla0tleVNp emUsIEtleVR5cGUpOw0KPiANCj4gLSAgfQ0KPiANCj4gLSAgZWxzZSBpZigqU2V0dXBNb2RlID09 IDEpDQo+IA0KPiAtICB7DQo+IA0KPiAtICAgIERFQlVHICgoREVCVUdfSU5GTywgIlN5c3RlbSBp biBTdGFuZGFyZCBTeXN0ZW0gTW9kZSA6OjogU2VjdXJlIEJvb3QgTm90IGVuYWJsZWRcbiIpKTsN Cj4gDQo+IC0gICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gDQo+IC0gIH0NCj4gDQo+ IC0NCj4gDQo+IC0gIGlmICggUGtLZXkgKSBGcmVlUG9vbCAoUGtLZXkpOw0KPiANCj4gLSAgaWYg KCBLZWtLZXkgKSBGcmVlUG9vbCAoS2VrS2V5KTsNCj4gDQo+IC19DQo+IA0KPiAtDQo+IA0KPiAt RUZJX1NUQVRVUw0KPiANCj4gLVJka1NlY3VyZUJvb3QgKA0KPiANCj4gLSAgRUZJX0hBTkRMRSAg ICAgICAgSW1hZ2VIYW5kbGUsDQo+IA0KPiAtICBFRklfQk9PVF9TRVJWSUNFUyAqQm9vdFNlcnZp Y2VzDQo+IA0KPiAtKQ0KPiANCj4gLXsNCj4gDQo+IC0gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEV4aXREYXRhU2l6ZTsNCj4gDQo+IC0gIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpFeGl0RGF0YTsNCj4gDQo+IC0gIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAJICAgICAgTG9hZE9wdGlvblsxMjhdOw0KPiANCj4gLSAgQ09OU1QgQ0hBUjgJCSAg ICAgICAgICAgICAgKkNtZExpbmU7DQo+IA0KPiAtICBDSEFSMTYJICAgICAgICAgICAgICAgICAg ICAgICpJbWFnZVBhdGg7DQo+IA0KPiAtICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqRmR0RGF0YTsNCj4gDQo+IC0gIENPTlNUIENIQVIxNiAgICAgICAgICAgICAgICAgICAg ICAgICpEdGJQYXRoOw0KPiANCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiANCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAg SGFuZGxlOw0KPiANCj4gLSAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgKkZp bGVQYXRoOw0KPiANCj4gLSAgRUZJX0xPQURFRF9JTUFHRV9QUk9UT0NPTCAgICAgICAgICAgKklt YWdlSW5mbzsNCj4gDQo+IC0gIEVGSV9ERVZJQ0VfUEFUSF9GUk9NX1RFWFRfUFJPVE9DT0wgICpE ZXZpY2VQYXRoRnJvbVRleHRQcm90b2NvbDsNCj4gDQo+IC0NCj4gDQo+IC0gIEZpbGVQYXRoICAg ICAgPSBOVUxMOw0KPiANCj4gLSAgRXhpdERhdGEgICAgICA9IE5VTEw7DQo+IA0KPiAtICBDbWRM aW5lCT0gKENPTlNUIENIQVI4ICopRml4ZWRQY2RHZXRQdHIgKFBjZFJka0NtZExpbmVBcmdzKTsN Cj4gDQo+IC0NCj4gDQo+IC0gIGlmIChGaXhlZFBjZEdldEJvb2wgKFBjZER0YkF2YWlsYWJsZSkp IHsNCj4gDQo+IC0gICAgRmR0RGF0YSA9IE5VTEw7DQo+IA0KPiAtICAgIER0YlBhdGggPSBOVUxM Ow0KPiANCj4gLQ0KPiANCj4gLSAgICBTdGF0dXMgPSBHZXRSZGtWYXJpYWJsZSAoTCJEVEIiLCAm RHRiUGF0aCk7DQo+IA0KPiAtICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0KPiAt DQo+IA0KPiAtICAgIFN0YXR1cyA9IFJka1JlYWRGaWxlIChEdGJQYXRoLCAoVk9JRCoqKSAmRmR0 RGF0YSwgTlVMTCk7DQo+IA0KPiAtICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+IA0K PiAtDQo+IA0KPiAtICAgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbENvbmZpZ3VyYXRpb25UYWJsZSAo JmdGZHRUYWJsZUd1aWQsKFZPSUQqKUZkdERhdGEpOw0KPiANCj4gLSAgICBBU1NFUlRfRUZJX0VS Uk9SIChTdGF0dXMpOw0KPiANCj4gLSAgfQ0KPiANCj4gLQ0KPiANCj4gLSAgUmRrU2V0VmFyaWFi bGUgKCk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBHZXRSZGtWYXJpYWJsZSAoTCJJTUFH RSIsIChDT05TVCBDSEFSMTYqKikmSW1hZ2VQYXRoKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3Rv Y29sICgNCj4gDQo+IC0gICAgJmdFZmlEZXZpY2VQYXRoRnJvbVRleHRQcm90b2NvbEd1aWQsDQo+ IA0KPiAtICAgIE5VTEwsDQo+IA0KPiAtICAgIChWT0lEKiopJkRldmljZVBhdGhGcm9tVGV4dFBy b3RvY29sDQo+IA0KPiAtICAgICk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMp Ow0KPiANCj4gLQ0KPiANCj4gLSAgRmlsZVBhdGggPSBEZXZpY2VQYXRoRnJvbVRleHRQcm90b2Nv bC0+Q29udmVydFRleHRUb0RldmljZVBhdGggKEltYWdlUGF0aCk7DQo+IA0KPiAtICBBU1NFUlQo TlVMTCAhPSBGaWxlUGF0aCk7DQo+IA0KPiAtDQo+IA0KPiAtICBTdGF0dXMgPSBCb290U2Vydmlj ZXMtPkxvYWRJbWFnZSAoDQo+IA0KPiAtICAgIFRSVUUsDQo+IA0KPiAtICAgIEltYWdlSGFuZGxl LA0KPiANCj4gLSAgICBGaWxlUGF0aCwNCj4gDQo+IC0gICAgTlVMTCwNCj4gDQo+IC0gICAgMCwN Cj4gDQo+IC0gICAgJkhhbmRsZQ0KPiANCj4gLSAgICApOw0KPiANCj4gLSAgQVNTRVJUX0VGSV9F UlJPUiAoU3RhdHVzKTsNCj4gDQo+IC0NCj4gDQo+IC0gIFVuaWNvZGVTUHJpbnRBc2NpaUZvcm1h dCAoTG9hZE9wdGlvbiwgc2l6ZW9mIChMb2FkT3B0aW9uKSwgQ21kTGluZSk7DQo+IA0KPiAtDQo+ IA0KPiAtICBTdGF0dXMgPSBCb290U2VydmljZXMtPkhhbmRsZVByb3RvY29sIChcDQo+IA0KPiAt ICAgIEhhbmRsZSwgJmdFZmlMb2FkZWRJbWFnZVByb3RvY29sR3VpZCwgKFZPSUQgKiopJkltYWdl SW5mbyk7DQo+IA0KPiAtICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiANCj4gLSAgSW1h Z2VJbmZvLT5Mb2FkT3B0aW9uc1NpemUgID0gc2l6ZW9mIChMb2FkT3B0aW9uKTsNCj4gDQo+IC0g IEltYWdlSW5mby0+TG9hZE9wdGlvbnMgICAgICA9IExvYWRPcHRpb247DQo+IA0KPiAtDQo+IA0K PiAtICBTdGF0dXMgPSBCb290U2VydmljZXMtPlN0YXJ0SW1hZ2UgKEhhbmRsZSwgJkV4aXREYXRh U2l6ZSwgJkV4aXREYXRhKTsNCj4gDQo+IC0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ IA0KPiAtDQo+IA0KPiAtICByZXR1cm4gU3RhdHVzOw0KPiANCj4gLX0NCj4gDQo+IGRpZmYgLS1n aXQgYS9QbGF0Zm9ybS9Db21jYXN0L1JES1FlbXUvUkVBRE1FIGIvUGxhdGZvcm0vQ29tY2FzdC9S REtRZW11L1JFQURNRQ0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggYjM5N2Yw OWRlOGY0Li4wMDAwMDAwMDAwMDANCj4gLS0tIGEvUGxhdGZvcm0vQ29tY2FzdC9SREtRZW11L1JF QURNRQ0KPiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDczICswLDAgQEANCj4gLXdvcmtzcGFjZSBz dHJ1Y3R1cmU6DQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IC0NCj4gDQo+IC1i YXNlIGRpcmVjdG9yeQ0KPiANCj4gLSAgICB8X18gZWRrMg0KPiANCj4gLSAgICB8X18gZWRrMi1w bGF0Zm9ybXMNCj4gDQo+IC0gICAgfF9fIHVlZmktdG9vbHMNCj4gDQo+IC0NCj4gDQo+IC1QcmVy ZXF1aXNpdGVzOg0KPiANCj4gLS0tLS0tLS0tLS0tLS0tDQo+IA0KPiAtDQo+IA0KPiAtQmVmb3Jl IGJ1aWxkaW5nIEVESy1JSSBVRUZJLCBwcmVwYXJlIGJhc2UgdG9vbHMNCj4gDQo+IC0kIGNkIGVk azINCj4gDQo+IC0kIG1ha2UgLUMgQmFzZVRvb2xzDQo+IA0KPiAtJCBjZCAuLg0KPiANCj4gLQ0K PiANCj4gLUFwcGxpY2F0aW9uIGNhbiBiZSB0ZXN0ZWQ6DQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiANCj4gLTEpIFNlY3VyZSBib290DQo+IA0KPiAtMikgRGlzYXN0ZXIgUmVj b3ZlcnkgSW1hZ2UgKERSSSkgZG93bmxvYWQNCj4gDQo+IC0zKSBEUkkgU2VjdXJlIGJvb3QNCj4g DQo+IC0NCj4gDQo+IC1hYm92ZSBhcHBsaWNhdGlvbnMgc291cmNlIGNvZGUgcGF0aC0gZWRrMi1w bGF0Zm9ybXMvUGxhdGZvcm0vQ29tY2FzdC9BcHBsaWNhdGlvbg0KPiANCj4gLQ0KPiANCj4gLVFF TVUgc2V0dXA6DQo+IA0KPiAtLS0tLS0tLS0tLS0NCj4gDQo+IC0kIHFlbXUtc3lzdGVtLWFhcmNo NjQgLWNwdSBjb3J0ZXgtYTU3IC1NIHZpcnQgLW0gNTEyTSAtYmlvcyBSREtfRUZJLmZkIC1ub2dy YXBoaWMgLW5vLWFjcGkgLWhkYSBib290cGFydGl0aW9uLmltZyAtaGRiDQo+IGZhdDprZXlzIC1k cml2ZSBpZj1ub25lLGZpbGU9cm9vdGZzLmltZyxmb3JtYXQ9cmF3LGlkPWhkMCAtZGV2aWNlIHZp cnRpby1ibGstZGV2aWNlLGRyaXZlPWhkMA0KPiANCj4gLQ0KPiANCj4gLWhkYjogYSBkaXJlY3Rv cnkgd2hpY2ggY29udGFpbnMgS0VLLmNlciBhbmQgUEsuY2VyIChwdWJsaWMga2V5KSBmaWxlcw0K PiANCj4gLQ0KPiANCj4gLWhkYTogYm9vdHBhcnRpdGlvbi5pbWcNCj4gDQo+IC0NCj4gDQo+IC0k IGRkIGlmPS9kZXYvemVybyBicz0xTSBjb3VudD02NCBvZj1ib290cGFydGl0aW9uLmltZw0KPiAN Cj4gLSQgbWtmcy52ZmF0IC1GIDMyIGJvb3RwYXJ0aXRpb24uaW1nDQo+IA0KPiAtJCBzdWRvIG1v dW50IGJvb3RwYXJ0aXRpb24uaW1nIC9tbnQNCj4gDQo+IC0jY29weSBrZXJuZWwgaW1hZ2UgZmls ZSAoZm9yIHNlY3VyZSBib290KSwgUmRrLmNvbmYgY29uZmlndXJhdGlvbiBmaWxlLCBzZXJ2ZXIu dXJsIGZpbGUNCj4gDQo+IC0kIHN1ZG8gY3AgPGZpbGVzPiAvbW50DQo+IA0KPiAtJCBzdWRvIHVt b3VudCAvbW50DQo+IA0KPiAtDQo+IA0KPiAtQ29uZmlndXJhdGlvbiBmaWxlOg0KPiANCj4gLQ0K PiANCj4gLVJESyBTZWN1cmUgYm9vdCBhcHBsaWNhdGlvbiBhY2NlcHRzIDYgY29uZmlndXJhdGlv bg0KPiANCj4gLVJPT1RDRVJUIC0ga2V5IGZpbGUgdG8gdmFsaWRhdGUgcm9vdGZzDQo+IA0KPiAt S0VLQ0VSVCAtIEtFSyBwdWJsaWMgS2V5DQo+IA0KPiAtUEtDRVJUIC0gUEsgcHVibGljIGtleQ0K PiANCj4gLVVSTCAtIGEgdGV4dCBmaWxlIHRoYXQgY29udGFpbnMgc2VydmVyIFVSTCB3aGVyZSBE UkkgaW1hZ2UgaXMgc3RvcmVkDQo+IA0KPiAtSU1BR0UgLSBrZXJuZWwgaW1hZ2UgZmlsZQ0KPiAN Cj4gLURUQiAtIERldmljZSB0cmVlIGJsb2IgZmlsZQ0KPiANCj4gLQ0KPiANCj4gLSMgcmRrIGNv bmYgZmlsZSBmb3IgZ2V0dGluZyBQSywgS0VLIGFuZCBrZXJuZWwgZmlsZSBwYXRoIGluIGZsYXNo IHBhcnRpdGlvbnMNCj4gDQo+IC1UeXBpY2FsIFJkay5jb25mIGZpbGU6DQo+IA0KPiAtIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Iw0KPiANCj4gLUtFS0NFUlQ9IlBjaVJvb3QoMHgwKS9QY2koMHgzLDB4MCkvSEQoMSxNQlIsMHhC RTFBRkRGQSwweDNGLDB4RkJGQzEpL0tFSy5jZXIiDQo+IA0KPiAtUEtDRVJUPSJQY2lSb290KDB4 MCkvUGNpKDB4MywweDApL0hEKDEsTUJSLDB4QkUxQUZERkEsMHgzRiwweEZCRkMxKS9QSy5jZXIi DQo+IA0KPiAtVVJMPSJQY2lSb290KDB4MCkvUGNpKDB4MiwweDApL3NlcnZlci51cmwiDQo+IA0K PiAtSU1BR0U9IlBjaVJvb3QoMHgwKS9QY2koMHgyLDB4MCkvSW1hZ2UiDQo+IA0KPiAtIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Iw0KPiANCj4gLQ0KPiANCj4gLXNlcnZlci51cmw6DQo+IA0KPiAtDQo+IA0KPiAtY29udGFpbnMg dGhlIHVybCBwYXRoIHRvIEhUVFAgaW1hZ2UgKHJvb3RmcyArIGtlcm5lbCArIGR0YikNCj4gDQo+ IC1FZy4gaHR0cDovL3h4Lnh4Lnh4Lnh4L3BhdGgvaHR0cC5pbWcNCj4gDQo+IC0NCj4gDQo+IC1o dHRwLmltZyBmb3JtYXRpb246DQo+IA0KPiAtDQo+IA0KPiAtJCB0b3VjaCB0bXANCj4gDQo+IC0k IHByaW50ZiAiJTAxNmQiIGBzdGF0IC1jICIlcyIgcm9vdGZzLmltZ2AgPj4gdG1wDQo+IA0KPiAt JCBjYXQgcm9vdGZzLmltZyA+PiB0bXANCj4gDQo+IC0kIHByaW50ZiAiJTAxNmQiIGBzdGF0IC1j ICIlcyIga2VybmVsU2lnbmVkSW1hZ2VgID4+IHRtcA0KPiANCj4gLSQgY2F0IGtlcm5lbFNpZ25l ZEltYWdlID4+IHRtcA0KPiANCj4gLSQgcHJpbnRmICIlMDE2ZCIgYHN0YXQgLWMgIiVzIiBkdGJg ID4+IHRtcA0KPiANCj4gLSQgY2F0IGR0YiA+PiB0bXANCj4gDQo+IC0kIG12IHRtcCBodHRwLmlt Zw0KPiANCj4gLS0NCj4gMi4zNS4xDQo+IA0KPiANCj4gDQo+IC09LT0tPS09LT0tPQ0KPiBHcm91 cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAu DQo+IFZpZXcvUmVwbHkgT25saW5lICgjOTUzODgpOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cv ZGV2ZWwvbWVzc2FnZS85NTM4OA0KPiBNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlv L210Lzk0NDI4OTAzLzE2NDM0OTYNCj4gR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3Jv dXBzLmlvDQo+IFVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5z dWIgW21pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tXQ0KPiAtPS09LT0tPS09LT0NCj4gDQoNCg==