From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.2.68; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=evan.lloyd@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0068.outbound.protection.outlook.com [104.47.2.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5EAE622183C61 for ; Fri, 1 Dec 2017 05:08:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=JY+rgi/xzZaN6SAqV6EgQW/46AkwFk0E+i/hcGoMlMQ=; b=P8vckfbFR/tqnhJAgbnbd5NBmDfzUySyWpy5oZgrSIv4EZGcQOr1OCdC6HBa/zfQCgDdzIbhniwgKXdsjvq3KlYrXLwHkMqKAO4hqXsHHeDdlgmfXu03dPPQ2BNFJFlEUfvEZkj/ix63wJESu7tCo5qAdCd0G2wbTywbmIcIJco= Received: from AM4PR0801MB1444.eurprd08.prod.outlook.com (10.168.5.24) by AM2PR08MB0484.eurprd08.prod.outlook.com (10.163.148.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Fri, 1 Dec 2017 13:12:49 +0000 Received: from AM4PR0801MB1444.eurprd08.prod.outlook.com ([fe80::2953:37dd:2fcb:a418]) by AM4PR0801MB1444.eurprd08.prod.outlook.com ([fe80::2953:37dd:2fcb:a418%14]) with mapi id 15.20.0260.007; Fri, 1 Dec 2017 13:12:49 +0000 From: Evan Lloyd To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , Matteo Carlini , Leif Lindholm , "Girish Pathak" Thread-Topic: [PATCH 19/19] ArmPlatformPkg: New DP500/DP550/DP650 GOP driver. Thread-Index: AQHTaHUx3AX1mHcpcE2mKjMI81BUrKMtQ2og Date: Fri, 1 Dec 2017 13:12:49 +0000 Message-ID: References: <20170926201529.11644-1-evan.lloyd@arm.com> <20170926201529.11644-20-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM2PR08MB0484; 6:VuNP5FIoyx14Yf5ox47J3CyibjWwc4lbknB/+xfY4CYT68ZetTrALx4GZcwKxhRvxFf0Reopn6UA/89WiLJPwvXgQPy/gCsBiZ0I2f9Vv39qV1dgRoy2Q0mOpbkN5HhEOHr0G+6Sz6vIVMTWPJ4O2T2UNDxv7JozbqFn2dZMHqisQ27ZKyN8Mh/Ny0V2xryg6Lk55RV95nJh04Sd+em1ZqHnb9qBeCsgKMJHHUs2ISNQwNHY9oaNtlL7TlcddVpAp+PLFx+BIOudYdeFuc0k2KFnJoDRZ1cq3WLALjCLHDHv3xsYss7Kzt0CKJ7ifPb4WhGr9osvDwTUfAMNC8ncWfkNCAe0EuTntLyeqBUPDkY=; 5:DEmohDc2AHsyDmBRm6WD+cXH2dB6SFbGckcJ0tvmrwYXoMEpDqiUdVx/om6jO/GO8+Um0iKbzq+uzD/Ds6QSWTxYSTHlC0U/7S5tir6Sqah/1EWqYc3+4uka6I+cyR7wQVTMJMvZwe8ixXJFSthtcSmYSLi9V+94IErSkz0BMZg=; 24:8NDufGlgxF9BV20P4BspyjVsDiMpb4EPqJare2D5encHA6GdypZ7o15QbHeZ8bHlNXum5kS+BQuMMqf7Qm73RJ0cCpMY+zWU0bJ7SDbf0AU=; 7:KNZkX60wkSUS+lbIS6M2HVXKj9oH9NPGiSocHFwmI5eOMzhvsrGkS+M5sqL+kGw2RxPtd96ZDoT8o2KaMljYhhxFrV+bWjZs24M8L46frMq4lXSdQVHixg/LOfp+VeDkG+RetoJMeHx50rC7R3v9MLvXd7xKR8G2xe0tpgwXk3CV1zLeKzT2m3A4BZkDPCcWTkqo8xnJOs/6MXn+uC9zo/A0ws28JpfxcihxWIndERBcn/hSmICa28aNq/7Cpj+U x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-correlation-id: e19aaee2-f251-43c4-67da-08d538bd38bd x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603286); SRVR:AM2PR08MB0484; x-ms-traffictypediagnostic: AM2PR08MB0484: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(131327999870524)(162533806227266)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231022)(10201501046)(6055026)(6041248)(20161123562025)(20161123558100)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011); SRVR:AM2PR08MB0484; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM2PR08MB0484; x-forefront-prvs: 05087F0C24 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(366004)(346002)(376002)(39860400002)(13464003)(24454002)(199003)(189002)(76104003)(40434004)(66066001)(14454004)(81166006)(5250100002)(76176011)(8936002)(68736007)(81156014)(99286004)(966005)(6306002)(9686003)(575784001)(53546010)(15188155005)(53946003)(16200700003)(8676002)(53936002)(6246003)(53376002)(478600001)(3280700002)(5660300001)(72206003)(2950100002)(6916009)(6116002)(102836003)(3846002)(54356011)(2906002)(7736002)(7696005)(305945005)(3660700001)(74316002)(189998001)(55016002)(25786009)(86362001)(2900100001)(16799955002)(5890100001)(33656002)(4326008)(105586002)(106356001)(316002)(97736004)(101416001)(229853002)(54906003)(6506006)(6436002)(559001)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR08MB0484; H:AM4PR0801MB1444.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: e19aaee2-f251-43c4-67da-08d538bd38bd X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Dec 2017 13:12:49.3610 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR08MB0484 Subject: Re: [PATCH 19/19] ArmPlatformPkg: New DP500/DP550/DP650 GOP driver. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Dec 2017 13:08:29 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiAyOCBOb3ZlbWJlciAy MDE3IDE4OjE4DQo+IFRvOiBFdmFuIExsb3lkIDxFdmFuLkxsb3lkQGFybS5jb20+DQo+IENjOiBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgTWF0dGVvIENhcmxpbmkgPE1hdHRlby5DYXJsaW5pQGFy bS5jb20+Ow0KPiBMZWlmIExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+OyBHaXJp c2ggUGF0aGFrDQo+IDxHaXJpc2guUGF0aGFrQGFybS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggMTkvMTldIEFybVBsYXRmb3JtUGtnOiBOZXcgRFA1MDAvRFA1NTAvRFA2NTANCj4gR09QIGRy aXZlci4NCj4NCj4gT24gMjYgU2VwdGVtYmVyIDIwMTcgYXQgMjE6MTUsICA8ZXZhbi5sbG95ZEBh cm0uY29tPiB3cm90ZToNCj4gPiBGcm9tOiBHaXJpc2ggUGF0aGFrIDxnaXJpc2gucGF0aGFrQGFy bS5jb20+DQo+ID4NCj4gPiBUaGlzIGNoYW5nZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBUk0gTWFs aSBEUDUwMC9EUDUwMC9EUDY1MCBkaXNwbGF5DQo+ID4gcHJvY2Vzc29ycyB1c2luZyB0aGUgR09Q IHByb3RvY29sLiBJdCBoYXMgYmVlbiB0ZXN0ZWQgb24gRlZQIGJhc2UNCj4gPiBtb2RlbHMgKyBE UDU1MCBzdXBwb3J0Lg0KPiA+DQo+ID4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgbW9kaWZ5IGZ1bmN0 aW9uYWxpdHkgcHJvdmlkZWQgYnkgUEwxMTEgb3INCj4gPiBIRExDRC4gVGhlIGRyaXZlciBzaG91 bGQgYmUgc3VpdGFibGUgZm9yIHRob3NlIHBsYXRmb3Jtcw0KPiA+IHRoYXQgaW1wbGVtZW50IEFS TSBNYWxpIERQNTAwL0RQNTUwL0RQNjUwIHJlcGxhY2luZyBQTDExMS9IRExDRC4NCj4gPg0KPiA+ IE9ubHkgIkxheWVyIEdyYXBoaWNzIiBvZiB0aGUgQVJNIE1hbGkgRFAgaXMgY29uZmlndXJlZCBm b3IgcmVuZGVyaW5nDQo+ID4gdGhlIFJHQi9CR1IgZm9ybWF0IGZyYW1lIGJ1ZmZlciB0byBzYXRp c2Z5IHRoZSBVRUZJIEdPUCByZXF1aXJlbWVudHMNCj4gPiBPdGhlciBsYXllcnMgZS5nLiB2aWRl byBsYXllcnMgYXJlIG5vdCBjb25maWd1cmVkLg0KPiA+DQo+ID4gTk9URTogVGhpcyBjaGFuZ2Ug aW1wbGVtZW50cyB0aGUgTWFsaSBEUCBvbiBtb2RlbHMuIFZlcnNpb25zIGZvciBhY3R1YWwNCj4g PiBoYXJkd2FyZSBhcmUgbGlhYmxlIHRvIHJlcXVpcmUgZXh0cmEgaGFuZGxpbmcgZm9yIGNsb2Nr IGlucHV0IGNoYW5nZXMsDQo+ID4gZXRjLg0KPiA+DQo+ID4gQ29udHJpYnV0ZWQtdW5kZXI6IFRp YW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+IFNpZ25lZC1vZmYtYnk6IEdp cmlzaCBQYXRoYWsgPGdpcmlzaC5wYXRoYWtAYXJtLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBF dmFuIExsb3lkIDxldmFuLmxsb3lkQGFybS5jb20+DQo+DQo+IEhlbGxvIEdpcmlzaCwgRXZhbiwN Cj4NCj4gKHJlcGx5aW5nIHRvIDE5LzE5IGJlY2F1c2UgSSBjYW5ub3QgZmluZCB0aGUgY292ZXIg bGV0dGVyIGluIG15DQo+IGVkazItZGV2ZWwgYXJjaGl2ZSBidXQgdGhpcyByZWFsbHkgYXBwbGll cyB0byB0aGUgd2hvbGUgc2VyaWVzKQ0KPg0KPiBJIGhhdmUgYmVlbiBsb29raW5nIGF0IHRoZXNl IHBhdGNoZXMgYWdhaW4gbm93IHRoYXQgSSBhbSB0cnlpbmcgdG8NCj4gY2xlYW4gdXAgQXJtUGxh dGZvcm1Qa2csIHdoaWNoIGlzIGN1cnJlbnRseSBhIGR1bXBpbmcgZ3JvdW5kIGZvciBhbGwNCj4g dGhpbmdzIHZhZ3VlbHkgQVJNIHJlbGF0ZWQsIGFuZCBpcyBhbHNvIHN0cnVjdHVyZWQgcXVpdGUg ZGlmZmVyZW50bHkNCj4gZnJvbSBvdGhlciBwYWNrYWdlcy4NCj4NCj4gSWRlYWxseSwgQXJtUGxh dGZvcm1Qa2cgc2hvdWxkIG9ubHkgY29udGFpbiB0aGUgZm9sbG93aW5nOg0KPiAtIGxpYnJhcnkg Y2xhc3MgaW50ZXJmYWNlcyB1bmRlciBJbmNsdWRlL0xpYnJhcnk7IGhlYWRlciBmaWxlcyBrZXB0 DQo+IGhlcmUgc2hvdWxkIG9ubHkgY29udGFpbiBlbGVtZW50cyB0aGF0IGRlZmluZSBBUEkNCj4g LSBkcml2ZXIgc3BlY2lmaWMgaW5jbHVkZSBmaWxlcyBJbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQg YnV0ICpvbmx5KiBpZg0KPiB0aGV5IGNhbm5vdCBiZSBrZXB0IGxvY2FsbHkgd2l0aCB0aGUgZHJp dmVyIGluIHF1ZXN0aW9uDQo+IC0gbGlicmFyaWVzIHVuZGVyIExpYnJhcnkvDQo+IC0gZHJpdmVy cyB1bmRlciBEcml2ZXJzLw0KPg0KPiBUaGlzIGFsaWducyB3aXRoIHRoZSBjb21tb24gYXJyYW5n ZW1lbnQgYWRvcHRlZCBieSBtb3N0IEVESzIgcGFja2FnZXMuDQo+DQo+IFRoaXMgc2VyaWVzIGRv ZXMgbWFueSBkaWZmZXJlbnQgdGhpbmdzLCBhbmQgZG9lcyBub3QgZGlzdGluZ3Vpc2ggYXQNCj4g YWxsIGJldHdlZW4gY29tbW9uIGNvZGUgYW5kIGNvZGUgbGl2aW5nIHVuZGVyIEFybVZFeHByZXNz UGtnLiBHaXZlbg0KDQogW1tFdmFuIExsb3lkXV0gQWxsIG9mIHRoZSBjb21taXRzIGluIHRoZSBz ZXJpZXMgYXJlIGluIEFybVBsYXRmb3JtUGtnLg0KWW91IG1heSBiZSBpbiB0aGUgcHJvY2VzcyBv ZiBkaXNlbnRhbmdsaW5nIHRoZSBWRSBzcGVjaWZpYyBiaXRzLCBidXQgaGl0aGVydG8gdGhhdCBo YXMgbm90IGJlZW4gYSBjb25zaWRlcmF0aW9uLiAgKE5vdGU6IEknbSBub3QgYXJndWluZyBhZ2Fp bnN0IHRoZSBkaXNlbnRhbmdsaW5nLCBvbmx5IHBvaW50aW5nIG91dCB0aGF0IGl0IHdhcyBub3Qg YSBmYWN0b3IgYXQgdGhlIHBvaW50IHdlIHN1Ym1pdHRlZCB0aGUgcGF0Y2hlcykNClRoZSByZWFz b24gdGhlcmUgYXJlIHNvIG1hbnkgY29tbWl0cyBpcyBvbmx5IHRoYXQgd2UgaGF2ZSBiZWVuIGFz a2VkIHRvIGJyZWFrIHRoaW5ncyB1cCBpbnRvICJiaXRlIHNpemVkIiBjaHVua3MgZm9yIHRoZSBj b252ZW5pZW5jZSBvZiBtYWludGFpbmVycy4NClRoZSBhaW0gd2FzIHRvIG1ha2UgZWFjaCBhIGNv aGVyZW50IGl0ZW0gd2l0aCBhIHNpbXBsZSBqdXN0aWZpY2F0aW9uLg0KDQo+IHRoYXQgSSBhbSB0 cnlpbmcgdG8gbW92ZSBBcm1WRXhwcmVzc1BrZyBvdXQgb2YgRURLMiBpbnRvDQo+IGVkazItcGxh dGZvcm1zICh3aGVyZSBpdCBhcmd1YWJseSBiZWxvbmdzKSBoYXZpbmcgdGhpcyBzZXJpZXMgaW4g bGltYm8NCj4gZm9yIHR3byBtb250aHMgaXMgYmFzaWNhbGx5IGJsb2NraW5nIG15IHdvcmssIGFu ZCBzbyBJIHdvdWxkIGxpa2UgdG8NCj4gZXhwbG9yZSB3YXlzIHRvIHByb2NlZWQgd2l0aCB0aGlz IHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBlYWNoDQo+IG90aGVyJ3Mgd29yayB0b28gbXVjaC4g QXQgdGhlIHNhbWUgdGltZSwgdGhlIHdheSB0aGUgY29kZSBpcw0KPiBzdHJ1Y3R1cmVkIGlzIGEg Y29udGludWF0aW9uIG9mIHRoZSBwYXR0ZXJuIEkgYW0gdHJ5aW5nIHRvIGdldCByaWQgb2YsDQo+ IHNvIHRoZXkgd2lsbCBuZWVkIHNvbWUgcmV3b3JrIGFueXdheSBpbiBvcmRlciB0byBiZSB1cHN0 cmVhbWFibGUgSU1ITy4NCg0KIFtbRXZhbiBMbG95ZF1dIE5vdCBiZWluZyBwc3ljaGljLCB3ZSBo YWQgbm90IG1hZGUgYWxsb3dhbmNlIGZvciB5b3VyIHBsYW5zLg0KSG93ZXZlciwgaWYgeW91IHRh a2UgdGhlIHRyb3VibGUgdG8gbG9vayBhdCB0aGUgY2hhbmdlcywgdGhleSBhY2hpZXZlIGV4YWN0 bHkgdGhlIHNwbGl0IHlvdSBhaW0gZm9yLg0KVGhlIGRpc3BsYXkgdHlwZSBjb2RlIChQTDAxMSBh bmQgSERMQ0QpIGlzIHVucmF2ZWxsZWQgZnJvbSB0aGUgVkUgY29kZS4NCkFsbCB0aGF0IHJlbWFp bnMgd291bGQgYmUgdG8gbW92ZSB0aGUgVkUgc3BlY2lmaWMgcGFydCBpbnRvIGVkazItcGxhdGZv cm1zLg0KDQo+DQo+IFNvIGNvdWxkIHdlIHNwbGl0IGl0IHVwIHBsZWFzZT8gQXNzdW1pbmcgdGhl IGludGVudGlvbiBpcyB0aGUgYWJpbGl0eQ0KPiB0byByZXVzZSB0aGUgTWFsaSBjb2RlIG9uIG5v bi1WRXhwcmVzcyBwbGF0Zm9ybXMsIEkgd291bGQgbGlrZSB0byBzZWUNCj4gdGhhdCBjb2RlIHBy b3Bvc2VkIHNlcGFyYXRlbHksIHdpdGhvdXQgYW55IG1lbnRpb24gb2YgVkV4cHJlc3NQa2cuZGVj DQoNCiBbW0V2YW4gTGxveWRdXSBHaXZlbiB0aGF0IHRoZSBvcmlnaW5hbCBjb2RlIHdhcyB1bmZv cnR1bmF0ZSwgSSdtIG5vdCBzdXJlIHRoYXQgaXQgbWFrZXMgbXVjaCBkaWZmZXJlbmNlIHdoYXQg b3JkZXIgdGhlIGNoYW5nZXMgZ2V0IG1hZGUuDQpHb2luZyBXZXN0IHRoZW4gTm9ydGggZ2V0cyB5 b3UgdG8gdGhlIHNhbWUgcGxhY2UgYXMgTm9ydGggdGhlbiBXZXN0ICAoZXhjZXB0IG5lYXIgYSBw b2xlKS4NCklmIHlvdSBhY2NlcHQgdGhhdCB0aGVyZSB3YXMgYSBsb2dpY2FsIHByb2dyZXNzaW9u IGluIHRoZSBjaGFuZ2VzIG1hZGUsIHRoZW4gaXQgbWlnaHQgYmUgYmV0dGVyIHRvIG5vdCByZWpp ZyB0aGluZ3MgcG9pbnRsZXNzbHkuDQoNCj4gd2hhdHNvZXZlci4gSWYgeW91IGludHJvZHVjZSBh bnkgbGlicmFyeSBjbGFzc2VzIHRoYXQgYWJzdHJhY3QgYXdheQ0KPiB0aGUgZGlmZmVyZW5jZXMg YmV0d2VlbiBwbGF0Zm9ybXMsIHlvdSBjYW4gaW5jbHVkZSBhIE51bGwgdmVyc2lvbiBvZg0KPiBz dWNoIGEgbGlicmFyeSB0aGF0IHNpbXBseSBkb2VzIEFTU0VSVCAoRkFMU0UpIGluIGV2ZXJ5IGZ1 bmN0aW9uOiB0aGlzDQoNCiBbW0V2YW4gTGxveWRdXSBPbmUgY291bGQsIGluZGVlZCwgZG8gdGhh dC4gIFdlLCBob3dldmVyLCB3b3VsZCBiZSB2ZXJ5IHJlbHVjdGFudCB0byBpbmN1ciB0aGUgb3Zl cmhlYWQgb2YgcmV3b3JrIGluIHJlc3BvbnNlIHRvIHNwdXJpb3VzIGNhdmlscyBmcm9tIGEgbWFp bnRhaW5lciB3aGVuIGl0IGlzIG9mIG5vIGRpcmVjdCByZWxldmFuY2UgdG8gdXMuDQoNCj4gYWxs b3dzIHRoZSBkcml2ZXIgdG8gYmUgYnVpbHQgc3RhbmRhbG9uZSwgYW5kIGF0IHRoZSBzYW1lIHRp bWUsIGZvcmNlcw0KPiB5b3UgdG8ga2VlcCB0aGUgYWJzdHJhY3Rpb25zIHB1cmUuIEkgaW50ZW5k IHRvIGNyZWF0ZSBhIHNlcGFyYXRlDQo+IEFybVBsYXRmb3JtUGtnLmRzYyBwbGF0Zm9ybSBkZXNj cmlwdGlvbiBmb3IgQ0kgcHVycG9zZXMgdGhhdCBjb3ZlcnMNCj4gYWxsIGRyaXZlcnMgYW5kIGxp YnJhcmllcyB0aGF0IHJlbWFpbiBhZnRlciB0aGUgcmVmYWN0b3IsIGFuZCB0aGF0DQo+IHJlcXVp cmVzIE51bGwgaW1wbGVtZW50YXRpb25zIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgbm8gaW1wbGVt ZW50YXRpb24NCj4gdXBzdHJlYW0uDQo+DQo+IEJleW9uZCB0aGF0LCBpdCB3b3VsZCBiZSBhIG1h dHRlciBvZiBzZXBhcmF0aW5nIHRoZSBjbGVhbnVwIHBhdGNoZXMNCj4gZnJvbSB0aGUgTWFsaSBw bGF0Zm9ybSBzdXBwb3J0IGJlaW5nIGFkZGVkIHRvIFZFeHByZXNzUGtnLiBUaGUgbGF0dGVyDQo+ IGNvdWxkIHdhaXQgdW50aWwgdGhlIG1vbWVudCB3aGVyZSB0aGUgc3VwcG9ydCBpcyBhY3R1YWxs eSBtYWRlIGxpdmUNCj4gYW5kIHdpcmVkIGludG8gYW4gYWN0dWFsIChwaHlzaWNhbCBvciB2aXJ0 dWFsKSBwbGF0Zm9ybS4NCj4NCj4gUGxlYXNlIGxldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLA0K Pg0KPiBSZWdhcmRzLA0KPiBBcmQuDQo+DQo+DQo+ID4gLS0tDQo+ID4gIEFybVBsYXRmb3JtUGtn L0FybVBsYXRmb3JtUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArDQo+ID4gIEFybVBsYXRmb3JtUGtnL0FybVZFeHByZXNzUGtnL0FybVZFeHBy ZXNzUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+IDQgKy0NCj4gPg0KPiBB cm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9MaWJyYXJ5L0FybU1hbGlEcExpYi9Bcm1NYWxp RHBMaWIuaW4NCj4gZiAgICAgICAgIHwgIDQ1ICsrKw0KPiA+DQo+IEFybVBsYXRmb3JtUGtnL0Fy bVZFeHByZXNzUGtnL0xpYnJhcnkvQXJtVkV4cHJlc3NMaWJSVFNNL0FybVZFeHANCj4gcmVzc0xp Yi5pbmYgfCAgIDMgKw0KPiA+ICBBcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0FybU1hbGlEcC9Bcm1N YWxpRHAuaW5mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KPiA0NCArKysNCj4gPiAg QXJtUGxhdGZvcm1Qa2cvSW5jbHVkZS9Ecml2ZXJzL0FybU1hbGlEcC5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMjQ5DQo+ICsrKysrKysrKysrKw0KPiA+DQo+IEFybVBsYXRm b3JtUGtnL0FybVZFeHByZXNzUGtnL0xpYnJhcnkvQXJtTWFsaURwTGliL0FybU1hbGlEcExpYi5j DQo+IHwgMzc3ICsrKysrKysrKysrKysrKysrKw0KPiA+DQo+IEFybVBsYXRmb3JtUGtnL0FybVZF eHByZXNzUGtnL0xpYnJhcnkvQXJtVkV4cHJlc3NMaWJSVFNNL1JUU01NZQ0KPiBtLmMgICAgICAg ICAgfCAgMTAgKy0NCj4gPiAgQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9Bcm1NYWxpRHAvQXJtTWFs aURwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4gNDEyICsrKysrKysrKysr KysrKysrKysrDQo+ID4gIDkgZmlsZXMgY2hhbmdlZCwgMTE0NiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL0FybVBsYXRmb3JtUGtnL0FybVBsYXRm b3JtUGtnLmRlYw0KPiBiL0FybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRlYw0KPiA+IGlu ZGV4DQo+IDAxNzRmNjNlNzdmNWI4NDMwZTEwNjI4OTM2NmZlYjlhNjU3N2ZiOTkuLjNiZTIzNjQx M2NiOGUxMmNlMzJlNg0KPiAzNDk3MzJkMjc2N2ZlMGYzMDI0IDEwMDY0NA0KPiA+IC0tLSBhL0Fy bVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRlYw0KPiA+ICsrKyBiL0FybVBsYXRmb3JtUGtn L0FybVBsYXRmb3JtUGtnLmRlYw0KPiA+IEBAIC0xMTEsNiArMTExLDEwIEBAIFtQY2RzRml4ZWRB dEJ1aWxkLmNvbW1vbl0NCj4gPg0KPiBnQXJtUGxhdGZvcm1Ub2tlblNwYWNlR3VpZC5QY2RQTDEx MUxjZEJhc2V8MHgwfFVJTlQzMnwweDAwMDAwMDINCj4gNg0KPiA+DQo+IGdBcm1QbGF0Zm9ybVRv a2VuU3BhY2VHdWlkLlBjZEFybUhkTGNkQmFzZXwweDB8VUlOVDMyfDB4MDAwMDAwMg0KPiA3DQo+ ID4NCj4gPiArICAjIyBBUk0gTWFsaSBEaXNwbGF5IFByb2Nlc3NvciBEUDUwMC9EUDU1MC9EUDY1 MA0KPiA+ICsNCj4gZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkQXJtTWFsaURwQmFzZXww eDB8VUlOVDY0fDB4MDAwMDAwDQo+IDUwDQo+ID4gKw0KPiBnQXJtUGxhdGZvcm1Ub2tlblNwYWNl R3VpZC5QY2RBcm1NYWxpRHBNZW1vcnlSZWdpb25MZW5ndGh8MHgwfFUNCj4gSU5UMzJ8MHgwMDAw MDA1MQ0KPiA+ICsNCj4gPiAgICAjIyBJZiBzZXQsIGZyYW1lIGJ1ZmZlciBtZW1vcnkgd2lsbCBi ZSByZXNlcnZlZCBhbmQgbWFwcGVkIGluIHRoZQ0KPiBzeXN0ZW0gUkFNDQo+ID4NCj4gZ0FybVBs YXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkQXJtTGNkRGRyRnJhbWVCdWZmZXJTaXplfDB4MHxVSU5U MzINCj4gfDB4MDAwMDAwMzMNCj4gPg0KPiBnQXJtUGxhdGZvcm1Ub2tlblNwYWNlR3VpZC5QY2RB cm1MY2REZHJGcmFtZUJ1ZmZlckJhc2V8MHgwfFVJTlQ2DQo+IDR8MHgwMDAwMDAzNA0KPiA+IGRp ZmYgLS1naXQgYS9Bcm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9Bcm1WRXhwcmVzc1BrZy5k ZWMNCj4gYi9Bcm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9Bcm1WRXhwcmVzc1BrZy5kZWMN Cj4gPiBpbmRleA0KPiAzODE0NTEzYzIyNDFjMDNhOGM0NWZkYTkyZDU3MWM2NTM2OGY2NGI0Li4x YTU1YjA0MzRhYjRiYzUzZDYzMQ0KPiBiZTJiZmZkMzEzNjg0YmNlYTljNCAxMDA2NDQNCj4gPiAt LS0gYS9Bcm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9Bcm1WRXhwcmVzc1BrZy5kZWMNCj4g PiArKysgYi9Bcm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9Bcm1WRXhwcmVzc1BrZy5kZWMN Cj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgIy8qKiBAZmlsZQ0KPiA+ICAjIEFybSBWZXJzYXRp bGUgRXhwcmVzcyBwYWNrYWdlLg0KPiA+ICAjDQo+ID4gLSMgIENvcHlyaWdodCAoYykgMjAxMi0y MDE1LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArIyAgQ29weXJpZ2h0 IChjKSAyMDEyLTIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICAj DQo+ID4gICMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICAjICB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+IHRo aXMNCj4gPiBAQCAtNDcsNiArNDcsOCBAQCBbUGNkc0ZpeGVkQXRCdWlsZC5jb21tb25dDQo+ID4N Cj4gZ0FybVZFeHByZXNzVG9rZW5TcGFjZUd1aWQuUGNkUEwxMTFMY2RWaWRlb01vZGVPc2NJZHwx fFVJTlQzMnwwDQo+IHgwMDAwMDAwMg0KPiA+DQo+IGdBcm1WRXhwcmVzc1Rva2VuU3BhY2VHdWlk LlBjZEhkTGNkVmlkZW9Nb2RlT3NjSWR8MHxVSU5UMzJ8MHgwMA0KPiAwMDAwMDMNCj4gPg0KPiA+ ICsNCj4gZ0FybVZFeHByZXNzVG9rZW5TcGFjZUd1aWQuUGNkQXJtTWFsaURwTWF4TW9kZXwweDB8 VUlOVDMyfDB4MA0KPiAwMDAwMDA1DQo+ID4gKw0KPiA+ICAgICMNCj4gPiAgICAjIERldmljZSBw YXRoIG9mIGJsb2NrIGRldmljZSBvbiB3aGljaCBGYXN0Ym9vdCB3aWxsIGZsYXNoIHBhcnRpdGlv bnMNCj4gPiAgICAjDQo+ID4gZGlmZiAtLWdpdA0KPiBhL0FybVBsYXRmb3JtUGtnL0FybVZFeHBy ZXNzUGtnL0xpYnJhcnkvQXJtTWFsaURwTGliL0FybU1hbGlEcExpYi4NCj4gaW5mDQo+IGIvQXJt UGxhdGZvcm1Qa2cvQXJtVkV4cHJlc3NQa2cvTGlicmFyeS9Bcm1NYWxpRHBMaWIvQXJtTWFsaURw TGliLg0KPiBpbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NTIwNWE4YWM2YmZiZDhiZWYN Cj4gZGQ4NjM0YTdkZjg5ZTIxMzE3NWJjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBi L0FybVBsYXRmb3JtUGtnL0FybVZFeHByZXNzUGtnL0xpYnJhcnkvQXJtTWFsaURwTGliL0FybU1h bGlEcExpYi4NCj4gaW5mDQo+ID4gQEAgLTAsMCArMSw0NSBAQA0KPiA+ICsjLyoqIEBmaWxlIEFy bU1hbGlEcExpYi5pbmYNCj4gPiArIw0KPiA+ICsjICBDb21wb25lbnQgZGVzY3JpcHRpb24gZmls ZSBmb3IgQXJtTWFsaURwTGliIG1vZHVsZQ0KPiA+ICsjDQo+ID4gKyMgIENvcHlyaWdodCAoYykg MjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyMNCj4gPiArIyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICsjICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBiZSBmb3Vu ZCBhdA0KPiA+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4gKyMNCj4gPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyIgQkFTSVMsDQo+ID4gKyMgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4gKyMqKi8NCj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElO Rl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gPiArICBCQVNFX05B TUUgICAgICAgICAgICAgICAgICAgICAgPSBBcm1NYWxpRHBMaWINCj4gPiArICBGSUxFX0dVSUQg ICAgICAgICAgICAgICAgICAgICAgPSAzNkM0N0ZFRC0yRjNGLTQ5QzctODlDRS0zMUIxM0YwNDMx RDgNCj4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+ID4gKyAg VkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gKyAgTElCUkFSWV9DTEFT UyAgICAgICAgICAgICAgICAgID0gTGNkUGxhdGZvcm1MaWINCj4gPiArDQo+ID4gK1tTb3VyY2Vz LmNvbW1vbl0NCj4gPiArICBBcm1NYWxpRHBMaWIuYw0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0K PiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKyAgQXJtUGxhdGZvcm1Qa2cvQXJtVkV4cHJl c3NQa2cvQXJtVkV4cHJlc3NQa2cuZGVjDQo+ID4gKyAgQXJtUGxhdGZvcm1Qa2cvQXJtUGxhdGZv cm1Qa2cuZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZUxpYg0K PiA+ICsgIER4ZVNlcnZpY2VzVGFibGVMaWINCj4gPiArDQo+ID4gK1tGaXhlZFBjZC5jb21tb25d DQo+ID4gKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkQXJtTGNkRGRyRnJhbWVCdWZm ZXJCYXNlDQo+ID4gKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkQXJtTGNkRGRyRnJh bWVCdWZmZXJTaXplDQo+ID4gKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkR29wUGl4 ZWxGb3JtYXQNCj4gPiArDQo+ID4gKyAgIyBNYXhNb2RlIG11c3QgYmUgb25lIG51bWJlciBoaWdo ZXIgdGhhbiB0aGUgYWN0dWFsIG1heCBtb2RlLA0KPiA+ICsgICMgaS5lLiBmb3IgYWN0dWFsIG1h eGltdW0gbW9kZSAyLCBzZXQgdGhlIHZhbHVlIHRvIDMuDQo+ID4gKyAgIyBTZWUgU2VjdGlvbiAx MS45IG9mIHRoZSBVRUZJIFNwZWNpZmljYXRpb24gMi42IEVycmF0YSBBIChKYW4gMjAxNykNCj4g PiArICBnQXJtVkV4cHJlc3NUb2tlblNwYWNlR3VpZC5QY2RBcm1NYWxpRHBNYXhNb2RlDQo+ID4g Kw0KPiA+IGRpZmYgLS1naXQNCj4gYS9Bcm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9MaWJy YXJ5L0FybVZFeHByZXNzTGliUlRTTS9Bcm1WRQ0KPiB4cHJlc3NMaWIuaW5mDQo+IGIvQXJtUGxh dGZvcm1Qa2cvQXJtVkV4cHJlc3NQa2cvTGlicmFyeS9Bcm1WRXhwcmVzc0xpYlJUU00vQXJtVkUN Cj4geHByZXNzTGliLmluZg0KPiA+IGluZGV4DQo+IDYwNzg5ZTliOGZmMWI5MzZkYjA0OTUzYTc2 NWZiMTY0YjBlODVhNDAuLjZhZDdkOTRjOGM3NjQwNGM4YTg0DQo+IDM0NWI1Zjk5Mjg4NGFiNWFj YTM2IDEwMDY0NA0KPiA+IC0tLQ0KPiBhL0FybVBsYXRmb3JtUGtnL0FybVZFeHByZXNzUGtnL0xp YnJhcnkvQXJtVkV4cHJlc3NMaWJSVFNNL0FybVZFDQo+IHhwcmVzc0xpYi5pbmYNCj4gPiArKysN Cj4gYi9Bcm1QbGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9MaWJyYXJ5L0FybVZFeHByZXNzTGli UlRTTS9Bcm1WRQ0KPiB4cHJlc3NMaWIuaW5mDQo+ID4gQEAgLTYwLDUgKzYwLDggQEAgW0ZpeGVk UGNkXQ0KPiA+ICAgIGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZEFybUxjZERkckZyYW1l QnVmZmVyQmFzZQ0KPiA+ICAgIGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZEFybUxjZERk ckZyYW1lQnVmZmVyU2l6ZQ0KPiA+DQo+ID4gKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQu UGNkQXJtTWFsaURwQmFzZQ0KPiA+ICsgIGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZEFy bU1hbGlEcE1lbW9yeVJlZ2lvbkxlbmd0aA0KPiA+ICsNCj4gPiAgW1BwaXNdDQo+ID4gICAgZ0Fy bU1wQ29yZUluZm9QcGlHdWlkDQo+ID4gZGlmZiAtLWdpdCBhL0FybVBsYXRmb3JtUGtnL0RyaXZl cnMvQXJtTWFsaURwL0FybU1hbGlEcC5pbmYNCj4gYi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0Fy bU1hbGlEcC9Bcm1NYWxpRHAuaW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTE1NWExMjNl ZjcxZWNmNTM2DQo+IDFhYjI5ZTBhZTcxNDU0YzdlYzZjZA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL0FybU1hbGlEcC9Bcm1NYWxpRHAuaW5mDQo+ ID4gQEAgLTAsMCArMSw0NCBAQA0KPiA+ICsjLyoqIEBmaWxlIEFybU1hbGlEcC5pbmYNCj4gPiAr Iw0KPiA+ICsjICBDb21wb25lbnQgZGVzY3JpcHRpb24gZmlsZSBmb3IgQXJtTWFsaURwIG1vZHVs ZQ0KPiA+ICsjDQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAxNywgQVJNIEx0ZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gPiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4gKyMg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkNCj4gYmUgZm91bmQgYXQNCj4gPiArIyAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsjDQo+ID4gKyMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiIEJB U0lTLA0KPiA+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsjDQo+ID4gKyMqKi8N Cj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMDUNCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAg PSBBcm1NYWxpRHANCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSBFNzI0 QUFGNy0xOUUyLTQwQTMtQkFFMS1EODJBN0M4QjdBNzYNCj4gPiArICBNT0RVTEVfVFlQRSAgICAg ICAgICAgICAgICAgICAgPSBCQVNFDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAg ICAgID0gMS4wDQo+ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gTGNkSHdM aWINCj4gPiArDQo+ID4gK1tTb3VyY2VzLmNvbW1vbl0NCj4gPiArICBBcm1NYWxpRHAuYw0KPiA+ ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKyAgTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArICBBcm1Qa2cvQXJtUGtnLmRlYw0KPiA+ ICsgIEFybVBsYXRmb3JtUGtnL0FybVZFeHByZXNzUGtnL0FybVZFeHByZXNzUGtnLmRlYw0KPiA+ ICsgIEFybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJh cnlDbGFzc2VzXQ0KPiA+ICsgIFVlZmlMaWINCj4gPiArICBCYXNlTGliDQo+ID4gKyAgRGVidWdM aWINCj4gPiArICBJb0xpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiArICBMY2RQbGF0Zm9y bUxpYg0KPiA+ICsNCj4gPiArW0ZpeGVkUGNkXQ0KPiA+ICsgIGdBcm1QbGF0Zm9ybVRva2VuU3Bh Y2VHdWlkLlBjZEFybU1hbGlEcEJhc2UNCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL0FybVBsYXRm b3JtUGtnL0luY2x1ZGUvRHJpdmVycy9Bcm1NYWxpRHAuaA0KPiBiL0FybVBsYXRmb3JtUGtnL0lu Y2x1ZGUvRHJpdmVycy9Bcm1NYWxpRHAuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g aW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk1NTE3 NjgwMGVhNTlmMzUyDQo+IDM5OWQ5YzZiNTkwMTk1ZDRjY2ZhNDENCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvQXJtUGxhdGZvcm1Qa2cvSW5jbHVkZS9Ecml2ZXJzL0FybU1hbGlEcC5oDQo+ ID4gQEAgLTAsMCArMSwyNDkgQEANCj4gPiArLyoqIEBmaWxlICBBcm1NYWxpRHAuaA0KPiA+ICsN Cj4gPiArICBGaWxlIGRlZmluZXMgcmVnaXN0ZXJzIGFuZCBvdGhlciBmbGFncyBvZiBBUk0gTWFs aSBEUCBkaXNwbGF5IGNvbnRyb2xsZXINCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE3 LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJT RCBMaWNlbnNlDQo+ID4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ICsgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4g KyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyINCj4gQkFTSVMsDQo+ID4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICsjaWZuZGVmIEFSTU1BTElEUF9IXw0KPiA+ICsjZGVmaW5lIEFSTU1B TElEUF9IXw0KPiA+ICsNCj4gPg0KPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioqDQo+ID4gKyAqDQo+ID4g KyAqICBUaGlzIGhlYWRlciBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgYml0cyBvZiB0aGUgQVJNIE1h bGkgRFAgdGhhdCBhcmUNCj4gPiArICogIHBsYXRmb3JtIGluZGVwZW5kZW50Lg0KPiA+ICsgKg0K PiA+ICsNCj4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKg0KPiAqKioqKioqKioqKiovDQo+ID4gKyNkZWZpbmUgRFBfQkFTRSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoRml4ZWRQY2RHZXQ2NCAoUGNkQXJtTWFsaURwQmFzZSkpDQo+ ID4gKw0KPiA+ICsvLyBNQUxJIERQIElkcw0KPiA+ICsjZGVmaW5lIE1BTElEUF81MDAgICAgICAg ICAgICAgICAgICAgICAgICAgMHg1MDANCj4gPiArI2RlZmluZSBNQUxJRFBfNTUwICAgICAgICAg ICAgICAgICAgICAgICAgIDB4NTUwDQo+ID4gKyNkZWZpbmUgTUFMSURQXzY1MCAgICAgICAgICAg ICAgICAgICAgICAgICAweDY1MA0KPiA+ICsNCj4gPiArLy8gRFA1MDAgUGVyaXBoZXJhbCBJZHMN Cj4gPiArI2RlZmluZSBEUDUwMF9JRF9QQVJUXzAgICAgICAgICAgICAgICAgICAgIDB4MDANCj4g PiArI2RlZmluZSBEUDUwMF9JRF9ERVNfMCAgICAgICAgICAgICAgICAgICAgIDB4Qg0KPiA+ICsj ZGVmaW5lIERQNTAwX0lEX1BBUlRfMSAgICAgICAgICAgICAgICAgICAgMHg1DQo+ID4gKw0KPiA+ ICsjZGVmaW5lIERQNTAwX0lEX1JFVklTSU9OICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gKyNk ZWZpbmUgRFA1MDBfSURfSkVERUMgICAgICAgICAgICAgICAgICAgICAweDENCj4gPiArI2RlZmlu ZSBEUDUwMF9JRF9ERVNfMSAgICAgICAgICAgICAgICAgICAgIDB4Mw0KPiA+ICsNCj4gPiArI2Rl ZmluZSBEUDUwMF9QRVJJUEhFUkFMX0lEMF9WQUwgICAgICAgICAgIChEUDUwMF9JRF9QQVJUXzAp DQo+ID4gKyNkZWZpbmUgRFA1MDBfUEVSSVBIRVJBTF9JRDFfVkFMICAgICAgICAgICAoKERQNTAw X0lEX0RFU18wIDw8IDQpDQo+IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IERQNTAwX0lEX1BBUlRfMSkNCj4gPiArI2RlZmluZSBEUDUwMF9QRVJJ UEhFUkFMX0lEMl9WQUwgICAgICAgICAgICgoRFA1MDBfSURfUkVWSVNJT04gPDwgNCkNCj4gXA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKERQNTAw X0lEX0pFREVDIDw8IDMpICAgIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IChEUDUwMF9JRF9ERVNfMSkpDQo+ID4gKw0KPiA+ICsvLyBEUDU1MCBQ ZXJpcGhlcmFsIElkcw0KPiA+ICsjZGVmaW5lIERQNTUwX0lEX1BBUlRfMCAgICAgICAgICAgICAg ICAgICAgMHg1MA0KPiA+ICsjZGVmaW5lIERQNTUwX0lEX0RFU18wICAgICAgICAgICAgICAgICAg ICAgMHhCDQo+ID4gKyNkZWZpbmUgRFA1NTBfSURfUEFSVF8xICAgICAgICAgICAgICAgICAgICAw eDUNCj4gPiArDQo+ID4gKyNkZWZpbmUgRFA1NTBfSURfUkVWSVNJT04gICAgICAgICAgICAgICAg ICAweDANCj4gPiArI2RlZmluZSBEUDU1MF9JRF9KRURFQyAgICAgICAgICAgICAgICAgICAgIDB4 MQ0KPiA+ICsjZGVmaW5lIERQNTUwX0lEX0RFU18xICAgICAgICAgICAgICAgICAgICAgMHgzDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIERQNTUwX1BFUklQSEVSQUxfSUQwX1ZBTCAgICAgICAgICAgKERQ NTUwX0lEX1BBUlRfMCkNCj4gPiArI2RlZmluZSBEUDU1MF9QRVJJUEhFUkFMX0lEMV9WQUwgICAg ICAgICAgICgoRFA1NTBfSURfREVTXzAgPDwgNCkNCj4gXA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRFA1NTBfSURfUEFSVF8xKQ0KPiA+ICsj ZGVmaW5lIERQNTUwX1BFUklQSEVSQUxfSUQyX1ZBTCAgICAgICAgICAgKChEUDU1MF9JRF9SRVZJ U0lPTiA8PCA0KQ0KPiBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAoRFA1NTBfSURfSkVERUMgPDwgMykgXA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKERQNTUwX0lEX0RFU18xKSkNCj4g PiArDQo+ID4gKy8vIERQNjUwIFBlcmlwaGVyYWwgSWRzDQo+ID4gKyNkZWZpbmUgRFA2NTBfSURf UEFSVF8wICAgICAgICAgICAgICAgICAgICAweDUwDQo+ID4gKyNkZWZpbmUgRFA2NTBfSURfREVT XzAgICAgICAgICAgICAgICAgICAgICAweEINCj4gPiArI2RlZmluZSBEUDY1MF9JRF9QQVJUXzEg ICAgICAgICAgICAgICAgICAgIDB4Ng0KPiA+ICsNCj4gPiArI2RlZmluZSBEUDY1MF9JRF9SRVZJ U0lPTiAgICAgICAgICAgICAgICAgIDB4MA0KPiA+ICsjZGVmaW5lIERQNjUwX0lEX0pFREVDICAg ICAgICAgICAgICAgICAgICAgMHgxDQo+ID4gKyNkZWZpbmUgRFA2NTBfSURfREVTXzEgICAgICAg ICAgICAgICAgICAgICAweDMNCj4gPiArDQo+ID4gKyNkZWZpbmUgRFA2NTBfUEVSSVBIRVJBTF9J RDBfVkFMICAgICAgICAgICAoRFA2NTBfSURfUEFSVF8wKQ0KPiA+ICsjZGVmaW5lIERQNjUwX1BF UklQSEVSQUxfSUQxX1ZBTCAgICAgICAgICAgKChEUDY1MF9JRF9ERVNfMCA8PCA0KQ0KPiBcDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEUDY1MF9J RF9QQVJUXzEpDQo+ID4gKyNkZWZpbmUgRFA2NTBfUEVSSVBIRVJBTF9JRDJfVkFMICAgICAgICAg ICAoKERQNjUwX0lEX1JFVklTSU9OIDw8IDQpDQo+IFwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IChEUDY1MF9JRF9KRURFQyA8PCAzKSAgICBcDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoRFA2NTBf SURfREVTXzEpKQ0KPiA+ICsNCj4gPiArLy8gRGlzcGxheSBFbmdpbmUgKERFKSBjb250cm9sIHJl Z2lzdGVyIG9mZnNldHMgZm9yIERQNTUwL0RQNjUwDQo+ID4gKyNkZWZpbmUgRFBfREVfU1RBVFVT ICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwDQo+ID4gKyNkZWZpbmUgRFBfREVfSVJRX1NF VCAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0DQo+ID4gKyNkZWZpbmUgRFBfREVfSVJRX01B U0sgICAgICAgICAgICAgICAgICAgICAweDAwMDA4DQo+ID4gKyNkZWZpbmUgRFBfREVfSVJRX0NM RUFSICAgICAgICAgICAgICAgICAgICAweDAwMDBDDQo+ID4gKyNkZWZpbmUgRFBfREVfQ09OVFJP TCAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwDQo+ID4gKyNkZWZpbmUgRFBfREVfUFJPR19M SU5FICAgICAgICAgICAgICAgICAgICAweDAwMDE0DQo+ID4gKyNkZWZpbmUgRFBfREVfQVhJX0NP TlRST0wgICAgICAgICAgICAgICAgICAweDAwMDE4DQo+ID4gKyNkZWZpbmUgRFBfREVfQVhJX1FP UyAgICAgICAgICAgICAgICAgICAgICAweDAwMDFDDQo+ID4gKyNkZWZpbmUgRFBfREVfRElTUExB WV9GVU5DVElPTiAgICAgICAgICAgICAweDAwMDIwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERQX0RF X0hfSU5URVJWQUxTICAgICAgICAgICAgICAgICAgMHgwMDAzMA0KPiA+ICsjZGVmaW5lIERQX0RF X1ZfSU5URVJWQUxTICAgICAgICAgICAgICAgICAgMHgwMDAzNA0KPiA+ICsjZGVmaW5lIERQX0RF X1NZTkNfQ09OVFJPTCAgICAgICAgICAgICAgICAgMHgwMDAzOA0KPiA+ICsjZGVmaW5lIERQX0RF X0hWX0FDVElWRVNJWkUgICAgICAgICAgICAgICAgMHgwMDAzQw0KPiA+ICsjZGVmaW5lIERQX0RF X0RJU1BMQVlfU0lERUJBTkQgICAgICAgICAgICAgMHgwMDA0MA0KPiA+ICsjZGVmaW5lIERQX0RF X0JBQ0tHUk9VTkRfQ09MT1IgICAgICAgICAgICAgMHgwMDA0NA0KPiA+ICsjZGVmaW5lIERQX0RF X0RJU1BMQVlfU1BMSVQgICAgICAgICAgICAgICAgMHgwMDA0OA0KPiA+ICsjZGVmaW5lIERQX0RF X09VVFBVVF9ERVBUSCAgICAgICAgICAgICAgICAgMHgwMDA0Qw0KPiA+ICsNCj4gPiArLy8gRGlz cGxheSBFbmdpbmUgKERFKSBjb250cm9sIHJlZ2lzdGVyIG9mZnNldHMgZm9yIERQNTAwDQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfQ09SRV9JRCAgICAgICAgICAgICAgICAweDAwMDE4DQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfQ09OVFJPTCAgICAgICAgICAgICAgICAweDAwMDBDDQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfUFJPR19MSU5FICAgICAgICAgICAgICAweDAwMDEwDQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfSF9JTlRFUlZBTFMgICAgICAgICAgICAweDAwMDI4DQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfVl9JTlRFUlZBTFMgICAgICAgICAgICAweDAwMDJDDQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfU1lOQ19DT05UUk9MICAgICAgICAgICAweDAwMDMwDQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfSFZfQUNUSVZFU0laRSAgICAgICAgICAweDAwMDM0DQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfQkdfQ09MT1JfUkcgICAgICAgICAgICAweDAwMDNDDQo+ID4g KyNkZWZpbmUgRFBfREVfRFA1MDBfQkdfQ09MT1JfQiAgICAgICAgICAgICAweDAwMDQwDQo+ID4g Kw0KPiA+ICsvKiBEaXNwbGF5IEVuZ2luZSAoREUpIGdyYXBoaWNzIGxheWVyIChMRykgcmVnaXN0 ZXIgb2Zmc2V0cw0KPiA+ICsgKiBOT1RFOiBGb3IgRFA1MDAgaXQgd2lsbCBiZSBMRzIuDQo+ID4g KyAqLw0KPiA+ICsjZGVmaW5lIERFX0xHX09GRlNFVCAgICAgICAgICAgICAgICAgICAgICAgMHgw MDMwMA0KPiA+ICsjZGVmaW5lIERQX0RFX0xHX0ZPUk1BVCAgICAgICAgICAgICAgICAgICAgKERF X0xHX09GRlNFVCkNCj4gPiArI2RlZmluZSBEUF9ERV9MR19DT05UUk9MICAgICAgICAgICAgICAg ICAgIChERV9MR19PRkZTRVQgKyAweDA0KQ0KPiA+ICsjZGVmaW5lIERQX0RFX0xHX0NPTVBPU0Ug ICAgICAgICAgICAgICAgICAgKERFX0xHX09GRlNFVCArIDB4MDgpDQo+ID4gKyNkZWZpbmUgRFBf REVfTEdfSU5fU0laRSAgICAgICAgICAgICAgICAgICAoREVfTEdfT0ZGU0VUICsgMHgwQykNCj4g PiArI2RlZmluZSBEUF9ERV9MR19DTVBfU0laRSAgICAgICAgICAgICAgICAgIChERV9MR19PRkZT RVQgKyAweDEwKQ0KPiA+ICsjZGVmaW5lIERQX0RFX0xHX09GRlNFVCAgICAgICAgICAgICAgICAg ICAgKERFX0xHX09GRlNFVCArIDB4MTQpDQo+ID4gKyNkZWZpbmUgRFBfREVfTEdfSF9TVFJJREUg ICAgICAgICAgICAgICAgICAoREVfTEdfT0ZGU0VUICsgMHgxOCkNCj4gPiArI2RlZmluZSBEUF9E RV9MR19QVFJfTE9XICAgICAgICAgICAgICAgICAgIChERV9MR19PRkZTRVQgKyAweDFDKQ0KPiA+ ICsjZGVmaW5lIERQX0RFX0xHX1BUUl9ISUdIICAgICAgICAgICAgICAgICAgKERFX0xHX09GRlNF VCArIDB4MjApDQo+ID4gKyNkZWZpbmUgRFBfREVfTEdfQ0hST01BX0tFWSAgICAgICAgICAgICAg ICAoREVfTEdfT0ZGU0VUICsgMHgyQykNCj4gPiArI2RlZmluZSBEUF9ERV9MR19BRF9DT05UUk9M ICAgICAgICAgICAgICAgIChERV9MR19PRkZTRVQgKyAweDMwKQ0KPiA+ICsjZGVmaW5lIERQX0RF X0xHX01NVV9DT05UUk9MICAgICAgICAgICAgICAgKERFX0xHX09GRlNFVCArIDB4NDgpDQo+ID4g Kw0KPiA+ICsvLyBEaXNwbGF5IGNvcmUgKERDKSBjb250cm9sIHJlZ2lzdGVyIG9mZnNldHMuDQo+ ID4gKyNkZWZpbmUgRFBfRENfT0ZGU0VUICAgICAgICAgICAgICAgICAgICAgICAweDBDMDAwDQo+ ID4gKyNkZWZpbmUgRFBfRENfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAoRFBfRENfT0ZG U0VUICsgMHgwMCkNCj4gPiArI2RlZmluZSBEUF9EQ19JUlFfU0VUICAgICAgICAgICAgICAgICAg ICAgIChEUF9EQ19PRkZTRVQgKyAweDA0KQ0KPiA+ICsjZGVmaW5lIERQX0RDX0lSUV9NQVNLICAg ICAgICAgICAgICAgICAgICAgKERQX0RDX09GRlNFVCArIDB4MDgpDQo+ID4gKyNkZWZpbmUgRFBf RENfSVJRX0NMRUFSICAgICAgICAgICAgICAgICAgICAoRFBfRENfT0ZGU0VUICsgMHgwQykNCj4g PiArI2RlZmluZSBEUF9EQ19DT05UUk9MICAgICAgICAgICAgICAgICAgICAgIChEUF9EQ19PRkZT RVQgKyAweDEwKQ0KPiA+ICsjZGVmaW5lIERQX0RDX0NPTkZJR19WQUxJRCAgICAgICAgICAgICAg ICAgKERQX0RDX09GRlNFVCArIDB4MTQpDQo+ID4gKyNkZWZpbmUgRFBfRENfQ09SRV9JRCAgICAg ICAgICAgICAgICAgICAgICAoRFBfRENfT0ZGU0VUICsgMHgxOCkNCj4gPiArDQo+ID4gKy8vIERQ NTAwIGhhcyBhIGdsb2JhbCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLg0KPiA+ICsjZGVmaW5lIERQ X0RQNTAwX0NPTkZJR19WQUxJRCAgICAgICAgICAgICAgKDB4RjAwKQ0KPiA+ICsNCj4gPiArLy8g RGlzcGxheSBjb3JlIElEIHJlZ2lzdGVyIG9mZnNldHMuDQo+ID4gKyNkZWZpbmUgRFBfRENfSURf T0ZGU0VUICAgICAgICAgICAgICAgICAgICAweDBGRjAwDQo+ID4gKyNkZWZpbmUgRFBfRENfSURf UEVSSVBIRVJBTF9JRDQgICAgICAgICAgICAoRFBfRENfSURfT0ZGU0VUICsgMHhEMCkNCj4gPiAr I2RlZmluZSBEUF9EQ19DT05GSUdVUkFUSU9OX0lEICAgICAgICAgICAgIChEUF9EQ19JRF9PRkZT RVQgKyAweEQ0KQ0KPiA+ICsjZGVmaW5lIERQX0RDX1BFUklQSEVSQUxfSUQwICAgICAgICAgICAg ICAgKERQX0RDX0lEX09GRlNFVCArIDB4RTApDQo+ID4gKyNkZWZpbmUgRFBfRENfUEVSSVBIRVJB TF9JRDEgICAgICAgICAgICAgICAoRFBfRENfSURfT0ZGU0VUICsgMHhFNCkNCj4gPiArI2RlZmlu ZSBEUF9EQ19QRVJJUEhFUkFMX0lEMiAgICAgICAgICAgICAgIChEUF9EQ19JRF9PRkZTRVQgKyAw eEU4KQ0KPiA+ICsjZGVmaW5lIERQX0RDX0NPTVBPTkVOVF9JRDAgICAgICAgICAgICAgICAgKERQ X0RDX0lEX09GRlNFVCArIDB4RjApDQo+ID4gKyNkZWZpbmUgRFBfRENfQ09NUE9ORU5UX0lEMSAg ICAgICAgICAgICAgICAoRFBfRENfSURfT0ZGU0VUICsgMHhGNCkNCj4gPiArI2RlZmluZSBEUF9E Q19DT01QT05FTlRfSUQyICAgICAgICAgICAgICAgIChEUF9EQ19JRF9PRkZTRVQgKyAweEY4KQ0K PiA+ICsjZGVmaW5lIERQX0RDX0NPTVBPTkVOVF9JRDMgICAgICAgICAgICAgICAgKERQX0RDX0lE X09GRlNFVCArIDB4RkMpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERQX0RQNTAwX0lEX09GRlNFVCAg ICAgICAgICAgICAgICAgMHgwRjAwDQo+ID4gKyNkZWZpbmUgRFBfRFA1MDBfSURfUEVSSVBIRVJB TF9JRDQgICAgICAgICAoRFBfRFA1MDBfSURfT0ZGU0VUICsNCj4gMHhEMCkNCj4gPiArI2RlZmlu ZSBEUF9EUDUwMF9DT05GSUdVUkFUSU9OX0lEICAgICAgICAgIChEUF9EUDUwMF9JRF9PRkZTRVQg Kw0KPiAweEQ0KQ0KPiA+ICsjZGVmaW5lIERQX0RQNTAwX1BFUklQSEVSQUxfSUQwICAgICAgICAg ICAgKERQX0RQNTAwX0lEX09GRlNFVCArDQo+IDB4RTApDQo+ID4gKyNkZWZpbmUgRFBfRFA1MDBf UEVSSVBIRVJBTF9JRDEgICAgICAgICAgICAoRFBfRFA1MDBfSURfT0ZGU0VUICsNCj4gMHhFNCkN Cj4gPiArI2RlZmluZSBEUF9EUDUwMF9QRVJJUEhFUkFMX0lEMiAgICAgICAgICAgIChEUF9EUDUw MF9JRF9PRkZTRVQgKw0KPiAweEU4KQ0KPiA+ICsjZGVmaW5lIERQX0RQNTAwX0NPTVBPTkVOVF9J RDAgICAgICAgICAgICAgKERQX0RQNTAwX0lEX09GRlNFVCArDQo+IDB4RjApDQo+ID4gKyNkZWZp bmUgRFBfRFA1MDBfQ09NUE9ORU5UX0lEMSAgICAgICAgICAgICAoRFBfRFA1MDBfSURfT0ZGU0VU ICsNCj4gMHhGNCkNCj4gPiArI2RlZmluZSBEUF9EUDUwMF9DT01QT05FTlRfSUQyICAgICAgICAg ICAgIChEUF9EUDUwMF9JRF9PRkZTRVQgKw0KPiAweEY4KQ0KPiA+ICsjZGVmaW5lIERQX0RQNTAw X0NPTVBPTkVOVF9JRDMgICAgICAgICAgICAgKERQX0RQNTAwX0lEX09GRlNFVCArDQo+IDB4RkMp DQo+ID4gKw0KPiA+ICsvLyBEaXNwbGF5IHN0YXR1cyBjb25maWd1cmF0aW9uIG1vZGUgYWN0aXZh dGlvbiBmbGFnDQo+ID4gKyNkZWZpbmUgRFBfRENfU1RBVFVTX0NNX0FDVElWRV9GTEFHICAgICAg ICAoMHgxVSA8PCAxNikNCj4gPiArDQo+ID4gKy8vIERpc3BsYXkgY29yZSBjb250cm9sIGNvbmZp Z3VyYXRpb24gbW9kZQ0KPiA+ICsjZGVmaW5lIERQX0RDX0NPTlRST0xfU1JTVF9BQ1RJVkUgICAg ICAgICAgKDB4MVUgPDwgMTgpDQo+ID4gKyNkZWZpbmUgRFBfRENfQ09OVFJPTF9DUlNUX0FDVElW RSAgICAgICAgICAoMHgxVSA8PCAxNykNCj4gPiArI2RlZmluZSBEUF9EQ19DT05UUk9MX0NNX0FD VElWRSAgICAgICAgICAgICgweDFVIDw8IDE2KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBEUF9ERV9E UDUwMF9DT05UUk9MX1NPRlRSRVNFVF9SRVEgICgweDFVIDw8IDE2KQ0KPiA+ICsjZGVmaW5lIERQ X0RFX0RQNTAwX0NPTlRST0xfQ09ORklHX1JFUSAgICAgKDB4MVUgPDwgMTcpDQo+ID4gKw0KPiA+ ICsvLyBEaXNwbGF5IGNvcmUgY29uZmlndXJhdGlvbiB2YWxpZCByZWdpc3Rlcg0KPiA+ICsjZGVm aW5lIERQX0RDX0NPTkZJR19WQUxJRF9DVkFMICAgICAgICAgICAgKDB4MVUpDQo+ID4gKw0KPiA+ ICsvKiBEQ19DT1JFX0lEDQo+ID4gKyAqIERpc3BsYXkgY29yZSB2ZXJzaW9uIHJlZ2lzdGVyIFBS T0RVQ1RfSUQNCj4gPiArICovDQo+ID4gKyNkZWZpbmUgRFBfRENfQ09SRV9JRF9TSElGVCAgICAg ICAgICAgICAgICAxNg0KPiA+ICsjZGVmaW5lIERQX0RFX0RQNTAwX0NPUkVfSURfU0hJRlQgICAg ICAgICAgRFBfRENfQ09SRV9JRF9TSElGVA0KPiA+ICsNCj4gPiArLy8gVGltaW5nIHNldHRpbmdz DQo+ID4gKyNkZWZpbmUgRFBfREVfSEJBQ0tQT1JDSF9TSElGVCAgICAgICAgICAgICAxNg0KPiA+ ICsjZGVmaW5lIERQX0RFX1ZCQUNLUE9SQ0hfU0hJRlQgICAgICAgICAgICAgMTYNCj4gPiArI2Rl ZmluZSBEUF9ERV9WU1BfU0hJRlQgICAgICAgICAgICAgICAgICAgIDI4DQo+ID4gKyNkZWZpbmUg RFBfREVfVlNZTkNXSURUSF9TSElGVCAgICAgICAgICAgICAxNg0KPiA+ICsjZGVmaW5lIERQX0RF X0hTUF9TSElGVCAgICAgICAgICAgICAgICAgICAgMTMNCj4gPiArI2RlZmluZSBEUF9ERV9WX0FD VElWRV9TSElGVCAgICAgICAgICAgICAgIDE2DQo+ID4gKw0KPiA+ICsvLyBCQUNLR1JPVU5EX0NP TE9SDQo+ID4gKyNkZWZpbmUgRFBfREVfQkdfUl9QSVhFTF9TSElGVCAgICAgICAgICAgICAxNg0K PiA+ICsjZGVmaW5lIERQX0RFX0JHX0dfUElYRUxfU0hJRlQgICAgICAgICAgICAgOA0KPiA+ICsN Cj4gPiArLy9HcmFwaGljcyBsYXllciBMR19GT1JNQVQgUGl4ZWwgRm9ybWF0DQo+ID4gKyNkZWZp bmUgRFBfUElYRUxfRk9STUFUX0FSR0JfODg4OCAgICAgICAgICAweDgNCj4gPiArI2RlZmluZSBE UF9QSVhFTF9GT1JNQVRfQUJHUl84ODg4ICAgICAgICAgIDB4OQ0KPiA+ICsjZGVmaW5lIERQX1BJ WEVMX0ZPUk1BVF9SR0JBXzg4ODggICAgICAgICAgMHhBDQo+ID4gKyNkZWZpbmUgRFBfUElYRUxf Rk9STUFUX0JHUkFfODg4OCAgICAgICAgICAweEINCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JN QVRfWFJHQl84ODg4ICAgICAgICAgIDB4MTANCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JNQVRf WEJHUl84ODg4ICAgICAgICAgIDB4MTENCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JNQVRfUkdC WF84ODg4ICAgICAgICAgIDB4MTINCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JNQVRfQkdSWF84 ODg4ICAgICAgICAgIDB4MTMNCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JNQVRfUkdCXzg4OCAg ICAgICAgICAgIDB4MTgNCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JNQVRfQkdSXzg4OCAgICAg ICAgICAgIDB4MTkNCj4gPiArDQo+ID4gKy8vIERQNTAwIGZvcm1hdCBjb2RlIGFyZSBkaWZmZXJl bnQgdGhhbiBEUDU1MC9EUDY1MA0KPiA+ICsjZGVmaW5lIERQX1BJWEVMX0ZPUk1BVF9EUDUwMF9B UkdCXzg4ODggICAgMHgyDQo+ID4gKyNkZWZpbmUgRFBfUElYRUxfRk9STUFUX0RQNTAwX0FCR1Jf ODg4OCAgICAweDMNCj4gPiArI2RlZmluZSBEUF9QSVhFTF9GT1JNQVRfRFA1MDBfWFJHQl84ODg4 ICAgIDB4NA0KPiA+ICsjZGVmaW5lIERQX1BJWEVMX0ZPUk1BVF9EUDUwMF9YQkdSXzg4ODggICAg MHg1DQo+ID4gKw0KPiA+ICsvLyBHcmFwaGljcyBsYXllciBMR19QVFJfTE9XIGFuZCBMR19QVFJf SElHSA0KPiA+ICsjZGVmaW5lIERQX0RFX0xHX1BUUl9MT1dfTUFTSyAgICAgICAgICAgICAgMHhG RkZGRkZGRlUNCj4gPiArI2RlZmluZSBEUF9ERV9MR19QVFJfSElHSF9TSElGVCAgICAgICAgICAg IDMyDQo+ID4gKw0KPiA+ICsvLyBHcmFwaGljcyBsYXllciBMR19DT05UUk9MIHJlZ2lzdGVyIGNo YXJhY3RlcmlzdGljcw0KPiA+ICsjZGVmaW5lIERQX0RFX0xHX0xfQUxQSEFfU0hJRlQgICAgICAg ICAgICAgMTYNCj4gPiArI2RlZmluZSBEUF9ERV9MR19DSEtfU0hJRlQgICAgICAgICAgICAgICAg IDE1DQo+ID4gKyNkZWZpbmUgRFBfREVfTEdfUE1VTF9TSElGVCAgICAgICAgICAgICAgICAxNA0K PiA+ICsjZGVmaW5lIERQX0RFX0xHX0NPTV9TSElGVCAgICAgICAgICAgICAgICAgMTINCj4gPiAr I2RlZmluZSBEUF9ERV9MR19WRlBfU0hJRlQgICAgICAgICAgICAgICAgIDExDQo+ID4gKyNkZWZp bmUgRFBfREVfTEdfSEZQX1NISUZUICAgICAgICAgICAgICAgICAxMA0KPiA+ICsjZGVmaW5lIERQ X0RFX0xHX1JPVEFUSU9OX1NISUZUICAgICAgICAgICAgOA0KPiA+ICsNCj4gPiArI2RlZmluZSBE UF9ERV9MR19MQVlFUl9CTEVORF9OT19CRyAgICAgICAgIDB4MFUNCj4gPiArI2RlZmluZSBEUF9E RV9MR19QSVhFTF9CTEVORF9OT19CRyAgICAgICAgIDB4MVUNCj4gPiArI2RlZmluZSBEUF9ERV9M R19MQVlFUl9CTEVORF9CRyAgICAgICAgICAgIDB4MlUNCj4gPiArI2RlZmluZSBEUF9ERV9MR19Q SVhFTF9CTEVORF9CRyAgICAgICAgICAgIDB4M1UNCj4gPiArI2RlZmluZSBEUF9ERV9MR19FTkFC TEUgICAgICAgICAgICAgICAgICAgIDB4MVUNCj4gPiArDQo+ID4gKy8vIEdyYXBoaWNzIGxheWVy IExHX0lOX1NJWkUgcmVnaXN0ZXIgY2hhcmFjdGVyaXN0aWNzDQo+ID4gKyNkZWZpbmUgRFBfREVf TEdfVl9JTl9TSVpFX1NISUZUICAgICAgICAgICAxNg0KPiA+ICsNCj4gPiArLy8gR3JhcGhpY3Mg bGF5ZXIgTEdfQ01QX1NJWkUgcmVnaXN0ZXIgY2hhcmFjdGVyaXN0aWNzDQo+ID4gKyNkZWZpbmUg RFBfREVfTEdfVl9DTVBfU0laRV9TSElGVCAgICAgICAgICAxNg0KPiA+ICsjZGVmaW5lIERQX0RF X0xHX1ZfT0ZGU0VUX1NISUZUICAgICAgICAgICAgMTYNCj4gPiArDQo+ID4gKy8vIEhlbHBlciBk aXNwbGF5IHRpbWluZyBtYWNybyBmdW5jdGlvbnMuDQo+ID4gKyNkZWZpbmUgSF9JTlRFUlZBTFMo SGZwLCBIYnApICAgICAgICAoKEhicCA8PA0KPiBEUF9ERV9IQkFDS1BPUkNIX1NISUZUKSB8IEhm cCkNCj4gPiArI2RlZmluZSBWX0lOVEVSVkFMUyhWZnAsIFZicCkgICAgICAgICgoVmJwIDw8DQo+ IERQX0RFX1ZCQUNLUE9SQ0hfU0hJRlQpIHwgVmZwKQ0KPiA+ICsjZGVmaW5lIFNZTkNfV0lEVEgo SHN3LCBWc3cpICAgICAgICAgKChWc3cgPDwNCj4gRFBfREVfVlNZTkNXSURUSF9TSElGVCkgfCBI c3cpDQo+ID4gKyNkZWZpbmUgSFZfQUNUSVZFKEhvciwgVmVyKSAgICAgICAgICAoKFZlciA8PCBE UF9ERV9WX0FDVElWRV9TSElGVCkgICB8DQo+IEhvcikNCj4gPiArDQo+ID4gKy8vIEhlbHBlciBs YXllciBncmFwaGljcyBtYWNyb3MuDQo+ID4gKyNkZWZpbmUgRlJBTUVfSU5fU0laRShIb3IsIFZl cikgICAgICAoKFZlciA8PA0KPiBEUF9ERV9MR19WX0lOX1NJWkVfU0hJRlQpIHwgSG9yKQ0KPiA+ ICsjZGVmaW5lIEZSQU1FX0NNUF9TSVpFKEhvciwgVmVyKSAgICAgKChWZXIgPDwNCj4gRFBfREVf TEdfVl9DTVBfU0laRV9TSElGVCkgfCBIb3IpDQo+ID4gKw0KPiA+ICsjZW5kaWYgLyogQVJNTUFM SURQX0hfICovDQo+ID4gZGlmZiAtLWdpdA0KPiBhL0FybVBsYXRmb3JtUGtnL0FybVZFeHByZXNz UGtnL0xpYnJhcnkvQXJtTWFsaURwTGliL0FybU1hbGlEcExpYi4NCj4gYw0KPiBiL0FybVBsYXRm b3JtUGtnL0FybVZFeHByZXNzUGtnL0xpYnJhcnkvQXJtTWFsaURwTGliL0FybU1hbGlEcExpYi4N Cj4gYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgNCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE5MjRjYzQxZjU4OTg2MDUwDQo+IDM4YTFi YzIwYWYwOTZmYmI4NWQ4MWMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvQXJtUGxh dGZvcm1Qa2cvQXJtVkV4cHJlc3NQa2cvTGlicmFyeS9Bcm1NYWxpRHBMaWIvQXJtTWFsaURwTGli Lg0KPiBjDQo+ID4gQEAgLTAsMCArMSwzNzcgQEANCj4gPiArLyoqIEBmaWxlIEFybU1hbGlEcExp Yi5jDQo+ID4gKyoNCj4gPiArKiAgVGhlIGZpbGUgY29udGFpbnMgQVJNIE1hbGkgRFAgcGxhdGZv cm0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uDQo+ID4gKyoNCj4gPiArKiAgQ29weXJpZ2h0IChj KSAyMDE3LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsqDQo+ID4gKyogIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiArKiAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4gKyogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUgZm91bmQg YXQNCj4gPiArKiAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo cA0KPiA+ICsqDQo+ID4gKyogIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiIEJBU0lTLA0KPiA+ICsqICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBP UiBJTVBMSUVELg0KPiA+ICsqDQo+ID4gKyoqLw0KPiA+ICsjaW5jbHVkZSA8UGlEeGUuaD4NCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Rl YnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0R4ZVNlcnZpY2VzVGFibGVMaWIuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiArI2luY2x1ZGUg PExpYnJhcnkvTGNkUGxhdGZvcm1MaWIuaD4NCj4gPiArI2luY2x1ZGUgPEFybVBsYXRmb3JtLmg+ DQo+ID4gKw0KPiA+ICsvKiogQ2hlY2sgYW4gYWRkcmVzcyBpcyB3aXRoaW4gNDAgYml0cy4NCj4g PiArICAqDQo+ID4gKyAgKiBUaGUgQVJNIE1hbGkgRFAgZnJhbWUgYnVmZmVyIGFkZHJlc3Mgc2l6 ZSBjYW4gbm90IGJlIHdpZGVyIHRoYW4gNDANCj4gYml0cw0KPiA+ICsqKi8NCj4gPiArI2RlZmlu ZSAgRFBfVkFMSURfQkFTRV9BRERSKEFkZHJlc3MpICAoKEFkZHJlc3MgPj4gNDApID09IDApDQo+ ID4gKw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICAgIE1vZGU7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgIE9zY0ZyZXE7 DQo+ID4gKyAgU0NBTl9USU1JTkdTICAgICAgICAgICAgICAgIEhvcml6b250YWw7DQo+ID4gKyAg U0NBTl9USU1JTkdTICAgICAgICAgICAgICAgIFZlcnRpY2FsOw0KPiA+ICt9IERJU1BMQVlfTU9E RTsNCj4gPiArDQo+ID4gKy8qKiBUaGUgZGlzcGxheSBtb2RlcyBpbXBsZW1lbnRlZCBieSB0aGlz IGRyaXZlci4NCj4gPiArICAqDQo+ID4gKyAgKiBPbiBNb2RlbHMsIHRoZSBPU0MgZnJlcXVlbmNp ZXMgKGxpc3RlZCBmb3IgZWFjaCBtb2RlIGJlbG93KSBhcmUgbm90DQo+IHVzZWQuDQo+ID4gKyAg KiBIb3dldmVyIHRoZXNlIGZyZXF1ZW5jaWVzIGFyZSB1c2VmdWwgb24gaGFyZHdhcmUgcGxhZm9y bXMgd2hlcmUNCj4gcmVsYXRlZA0KPiA+ICsgICogY2xvY2sgKG9yIFBMTCkgc2V0dGluZ3MgYXJl IGJhc2VkIG9uIHRoZXNlIHBpeGVsIGNsb2Nrcy4NCj4gPiArICAqDQo+ID4gKyAgKiBTaW5jZSB0 aGUgY2xvY2sgc2V0dGluZ3MgYXJlIGRlZmluZWQgZXh0ZXJuYWxseSwgdGhlIGRyaXZlciBtdXN0 DQo+ID4gKyAgKiBjb21tdW5pY2F0ZSBwaXhlbCBjbG9jayBmcmVxdWVuY2llcyB0byByZWxldmFu dCBtb2R1bGVzDQo+ID4gKyAgKiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBjbG9ja3MuIGUuZy4g U0NQLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDIENPTlNUIERJU1BMQVlfTU9ERSBtRGlzcGxheU1v ZGVzW10gPSB7DQo+ID4gKyAgew0KPiA+ICsgICAgLy8gTW9kZSAwIDogVkdBIDogNjQwIHggNDgw IHggMjQgYnBwLg0KPiA+ICsgICAgVkdBLA0KPiA+ICsgICAgVkdBX09TQ19GUkVRVUVOQ1ksDQo+ ID4gKyAgICB7VkdBX0hfUkVTX1BJWEVMUywgVkdBX0hfU1lOQywgVkdBX0hfQkFDS19QT1JDSCwN Cj4gVkdBX0hfRlJPTlRfUE9SQ0h9LA0KPiA+ICsgICAge1ZHQV9WX1JFU19QSVhFTFMsIFZHQV9W X1NZTkMsIFZHQV9WX0JBQ0tfUE9SQ0gsDQo+IFZHQV9WX0ZST05UX1BPUkNIfQ0KPiA+ICsgIH0s DQo+ID4gKyAgew0KPiA+ICsgICAgLy8gTW9kZSAxIDogV1ZHQSA6IDgwMCB4IDQ4MCB4IDI0IGJw cC4NCj4gPiArICAgIFdWR0EsDQo+ID4gKyAgICBXVkdBX09TQ19GUkVRVUVOQ1ksDQo+ID4gKyAg ICB7V1ZHQV9IX1JFU19QSVhFTFMsIFdWR0FfSF9TWU5DLCBXVkdBX0hfQkFDS19QT1JDSCwNCj4g V1ZHQV9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtXVkdBX1ZfUkVTX1BJWEVMUywgV1ZHQV9W X1NZTkMsIFdWR0FfVl9CQUNLX1BPUkNILA0KPiBXVkdBX1ZfRlJPTlRfUE9SQ0h9DQo+ID4gKyAg fSwNCj4gPiArICB7DQo+ID4gKyAgICAvLyBNb2RlIDIgOiBTVkdBIDogODAwIHggNjAwIHggMjQg YnBwLg0KPiA+ICsgICAgU1ZHQSwNCj4gPiArICAgIFNWR0FfT1NDX0ZSRVFVRU5DWSwNCj4gPiAr ICAgIHtTVkdBX0hfUkVTX1BJWEVMUywgU1ZHQV9IX1NZTkMsIFNWR0FfSF9CQUNLX1BPUkNILA0K PiBTVkdBX0hfRlJPTlRfUE9SQ0h9LA0KPiA+ICsgICAge1NWR0FfVl9SRVNfUElYRUxTLCBTVkdB X1ZfU1lOQywgU1ZHQV9WX0JBQ0tfUE9SQ0gsDQo+IFNWR0FfVl9GUk9OVF9QT1JDSH0NCj4gPiAr ICB9LA0KPiA+ICsgIHsNCj4gPiArICAgIC8vIE1vZGUgMyA6IFFIRCA6IDk2MCB4IDU0MCB4IDI0 IGJwcC4NCj4gPiArICAgIFFIRCwNCj4gPiArICAgIFFIRF9PU0NfRlJFUVVFTkNZLA0KPiA+ICsg ICAge1FIRF9IX1JFU19QSVhFTFMsIFFIRF9IX1NZTkMsIFFIRF9IX0JBQ0tfUE9SQ0gsDQo+IFFI RF9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtRSERfVl9SRVNfUElYRUxTLCBRSERfVl9TWU5D LCBRSERfVl9CQUNLX1BPUkNILA0KPiBRSERfVl9GUk9OVF9QT1JDSH0NCj4gPiArICB9LA0KPiA+ ICsgIHsNCj4gPiArICAgIC8vIE1vZGUgNCA6IFdTVkdBIDogMTAyNCB4IDYwMCB4IDI0IGJwcC4N Cj4gPiArICAgIFdTVkdBLA0KPiA+ICsgICAgV1NWR0FfT1NDX0ZSRVFVRU5DWSwNCj4gPiArICAg IHtXU1ZHQV9IX1JFU19QSVhFTFMsIFdTVkdBX0hfU1lOQywgV1NWR0FfSF9CQUNLX1BPUkNILA0K PiBXU1ZHQV9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtXU1ZHQV9WX1JFU19QSVhFTFMsIFdT VkdBX1ZfU1lOQywgV1NWR0FfVl9CQUNLX1BPUkNILA0KPiBXU1ZHQV9WX0ZST05UX1BPUkNIfQ0K PiA+ICsgIH0sDQo+ID4gKyAgew0KPiA+ICsgICAgLy8gTW9kZSA1IDogWEdBIDogMTAyNCB4IDc2 OCB4IDI0IGJwcC4NCj4gPiArICAgIFhHQSwNCj4gPiArICAgIFhHQV9PU0NfRlJFUVVFTkNZLA0K PiA+ICsgICAge1hHQV9IX1JFU19QSVhFTFMsIFhHQV9IX1NZTkMsIFhHQV9IX0JBQ0tfUE9SQ0gs DQo+IFhHQV9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtYR0FfVl9SRVNfUElYRUxTLCBYR0Ff Vl9TWU5DLCBYR0FfVl9CQUNLX1BPUkNILA0KPiBYR0FfVl9GUk9OVF9QT1JDSH0NCj4gPiArICB9 LA0KPiA+ICsgIHsNCj4gPiArICAgIC8vIE1vZGUgNiA6IEhEIDogMTI4MCB4IDcyMCB4IDI0IGJw cC4NCj4gPiArICAgIEhENzIwLA0KPiA+ICsgICAgSEQ3MjBfT1NDX0ZSRVFVRU5DWSwNCj4gPiAr ICAgIHtIRDcyMF9IX1JFU19QSVhFTFMsIEhENzIwX0hfU1lOQywgSEQ3MjBfSF9CQUNLX1BPUkNI LA0KPiBIRDcyMF9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtIRDcyMF9WX1JFU19QSVhFTFMs IEhENzIwX1ZfU1lOQywgSEQ3MjBfVl9CQUNLX1BPUkNILA0KPiBIRDcyMF9WX0ZST05UX1BPUkNI fQ0KPiA+ICsgIH0sDQo+ID4gKyAgew0KPiA+ICsgICAgLy8gTW9kZSA3IDogV1hHQSA6IDEyODAg eCA4MDAgeCAyNCBicHAuDQo+ID4gKyAgICBXWEdBLA0KPiA+ICsgICAgV1hHQV9PU0NfRlJFUVVF TkNZLA0KPiA+ICsgICAge1dYR0FfSF9SRVNfUElYRUxTLCBXWEdBX0hfU1lOQywgV1hHQV9IX0JB Q0tfUE9SQ0gsDQo+IFdYR0FfSF9GUk9OVF9QT1JDSH0sDQo+ID4gKyAgICB7V1hHQV9WX1JFU19Q SVhFTFMsIFdYR0FfVl9TWU5DLCBXWEdBX1ZfQkFDS19QT1JDSCwNCj4gV1hHQV9WX0ZST05UX1BP UkNIfQ0KPiA+ICsgIH0sDQo+ID4gKyAgeyAvLyBNb2RlIDggOiBTWEdBIDogMTI4MCB4IDEwMjQg eCAyNCBicHAuDQo+ID4gKyAgICBTWEdBLA0KPiA+ICsgICAgU1hHQV9PU0NfRlJFUVVFTkNZLA0K PiA+ICsgICAge1NYR0FfSF9SRVNfUElYRUxTLCBTWEdBX0hfU1lOQywgU1hHQV9IX0JBQ0tfUE9S Q0gsDQo+IFNYR0FfSF9GUk9OVF9QT1JDSH0sDQo+ID4gKyAgICB7U1hHQV9WX1JFU19QSVhFTFMs IFNYR0FfVl9TWU5DLCBTWEdBX1ZfQkFDS19QT1JDSCwNCj4gU1hHQV9WX0ZST05UX1BPUkNIfQ0K PiA+ICsgIH0sDQo+ID4gKyAgeyAvLyBNb2RlIDkgOiBXU1hHQSsgOiAxNjgwIHggMTA1MCB4IDI0 IGJwcC4NCj4gPiArICAgIFdTWEdBLA0KPiA+ICsgICAgV1NYR0FfT1NDX0ZSRVFVRU5DWSwNCj4g PiArICAgIHtXU1hHQV9IX1JFU19QSVhFTFMsIFdTWEdBX0hfU1lOQywgV1NYR0FfSF9CQUNLX1BP UkNILA0KPiBXU1hHQV9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtXU1hHQV9WX1JFU19QSVhF TFMsV1NYR0FfVl9TWU5DLCBXU1hHQV9WX0JBQ0tfUE9SQ0gsDQo+IFdTWEdBX1ZfRlJPTlRfUE9S Q0h9DQo+ID4gKyAgfSwNCj4gPiArICB7DQo+ID4gKyAgICAvLyBNb2RlIDEwIDogSEQgOiAxOTIw IHggMTA4MCB4IDI0IGJwcC4NCj4gPiArICAgIEhELA0KPiA+ICsgICAgSERfT1NDX0ZSRVFVRU5D WSwNCj4gPiArICAgIHtIRF9IX1JFU19QSVhFTFMsIEhEX0hfU1lOQywgSERfSF9CQUNLX1BPUkNI LA0KPiBIRF9IX0ZST05UX1BPUkNIfSwNCj4gPiArICAgIHtIRF9WX1JFU19QSVhFTFMsIEhEX1Zf U1lOQywgSERfVl9CQUNLX1BPUkNILA0KPiBIRF9WX0ZST05UX1BPUkNIfQ0KPiA+ICsgIH0NCj4g PiArfTsNCj4gPiArDQo+ID4gKy8qKiBJZiBQY2RBcm1NYWxpRHBNYXhNb2RlIGlzIDAsIHBsYXRm b3JtIHN1cHBvcnRzIGZ1bGwgcmFuZ2Ugb2YNCj4gbW9kZXMNCj4gPiArICAqIGVsc2UgcGxhdGZv cm0gc3VwcG9ydHMgbW9kZXMgZnJvbSAwIHRvIFBjZEFybU1hbGlEcE1heE1vZGUgLSAxDQo+ID4g KyoqLw0KPiA+ICtTVEFUSUMgQ09OU1QgVUlOVDMyIG1NYXhNb2RlID0gKChGaXhlZFBjZEdldDMy DQo+IChQY2RBcm1NYWxpRHBNYXhNb2RlKSAhPSAwKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgID8gRml4ZWRQY2RHZXQzMiAoUGNkQXJtTWFsaURwTWF4TW9kZSkNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemVvZiAobURpc3BsYXlN b2RlcykgLyBzaXplb2YgKERJU1BMQVlfTU9ERSkpOw0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKiBQ bGF0Zm9ybSByZWxhdGVkIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLg0KPiA+ICsgICoNCj4gPiAr ICAqIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBQbGF0Zm9ybSBpbml0aWFsaXphdGlv biBzdWNjZXNzLg0KPiA+ICsgICogQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIFBjZEdv cFBpeGVsRm9ybWF0IG11c3QgYmUNCj4gPiArICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQaXhlbFJlZEdyZWVuQmx1ZVJlc2VydmVkOEJpdFBlckNvbG9yIE9SDQo+ID4gKyAgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxCbHVlR3JlZW5SZWRSZXNlcnZlZDhC aXRQZXJDb2xvcg0KPiA+ICsgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBv dGhlciBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArTGNkUGxhdGZvcm1Jbml0aWFsaXplRGlzcGxheSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJ X0hBTkRMRSAgIEhhbmRsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9HUkFQSElDU19Q SVhFTF9GT1JNQVQgUGl4ZWxGb3JtYXQ7DQo+ID4gKw0KPiA+ICsgIChWT0lEKUhhbmRsZTsNCj4g PiArDQo+ID4gKyAgLy8gUGl4ZWxCaXRNYXNrIGFuZCBQaXhlbEJsdE9ubHkgcGl4ZWwgZm9ybWF0 cyBhcmUgbm90IHN1cHBvcnRlZA0KPiA+ICsgIFBpeGVsRm9ybWF0ID0gRml4ZWRQY2RHZXQzMiAo UGNkR29wUGl4ZWxGb3JtYXQpOw0KPiA+ICsgIGlmIChQaXhlbEZvcm1hdCAhPSBQaXhlbFJlZEdy ZWVuQmx1ZVJlc2VydmVkOEJpdFBlckNvbG9yDQo+ID4gKyAgICAmJiBQaXhlbEZvcm1hdCAhPSBQ aXhlbEJsdWVHcmVlblJlZFJlc2VydmVkOEJpdFBlckNvbG9yKSB7DQo+ID4gKw0KPiA+ICsgICAg QVNTRVJUIChQaXhlbEZvcm1hdCA9PSBQaXhlbFJlZEdyZWVuQmx1ZVJlc2VydmVkOEJpdFBlckNv bG9yDQo+ID4gKyAgICAgIHx8ICBQaXhlbEZvcm1hdCA9PSBQaXhlbEJsdWVHcmVlblJlZFJlc2Vy dmVkOEJpdFBlckNvbG9yKTsNCj4gPiArICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqIFJlc2VydmUgVlJBTSBtZW1vcnkgaW4gRFJBTSBmb3IgdGhlIGZyYW1lIGJ1ZmZlcg0K PiA+ICsgICoNCj4gPiArICAqICh1bmxlc3MgaXQgaXMgcmVzZXJ2ZWQgYWxyZWFkeSkuDQo+ID4g KyAgKg0KPiA+ICsgICogVGhlIGFsbG9jYXRlZCBhZGRyZXNzIGNhbiBiZSB1c2VkIHRvIHNldCB0 aGUgZnJhbWUgYnVmZmVyIGFzIGEgYmFzZQ0KPiBidWZmZXINCj4gPiArICAqIGFkZHJlc3MgZm9y IGFueSBsYXllciBvZiB0aGUgQVJNIE1hbGkgRFAuDQo+ID4gKyAgKg0KPiA+ICsgICogQHBhcmFt IE9VVCBWcmFtQmFzZUFkZHJlc3MgICAgICBBIHBvaW50ZXIgdG8gdGhlIGZyYW1lIGJ1ZmZlcg0K PiBhZGRyZXNzLg0KPiA+ICsgICogQHBhcmFtIE9VVCBWcmFtU2l6ZSAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlIHNpemUgb2YgdGhlIGZyYW1lDQo+ID4gKyAgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1ZmZlciBpbiBieXRlcw0KPiA+ICsgICoNCj4gPiArICAqIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgRnJhbWUgYnVmZmVyIG1lbW9yeSBhbGxvY2F0aW9u IHN1Y2Nlc3MuDQo+ID4gKyAgKiBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFZyYW1C YXNlQWRkcmVzcyBvciBWcmFtU2l6ZQ0KPiBhcmUgTlVMTC4NCj4gPiArICAqIEByZXR2YWwgRUZJ X1VOU1VQUE9SVEVEICAgICAgICAgQWxsb2NhdGVkIGFkZHJlc3Mgd2lkZXIgdGhhbiA0MCBiaXRz DQo+ID4gKyAgKiBAcmV0dmFsICFFRklfU1VDQ0VTUyAgICAgICAgICAgIE90aGVyIGVycm9ycy4N Cj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArTGNkUGxhdGZvcm1HZXRWcmFtICgNCj4g PiArICBPVVQgRUZJX1BIWVNJQ0FMX0FERFJFU1MgKiBDT05TVCBWcmFtQmFzZUFkZHJlc3MsDQo+ ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICogQ09OU1QgVnJhbVNpemUNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICAv LyBDaGVjayBWcmFtQmFzZUFkZHJlc3MgYW5kIFZyYW1TaXplIGFyZSBub3QgTlVMTC4NCj4gPiAr ICBpZiAoVnJhbUJhc2VBZGRyZXNzID09IE5VTEwgfHwgVnJhbVNpemUgPT0gTlVMTCkgew0KPiA+ ICsgICAgQVNTRVJUIChWcmFtQmFzZUFkZHJlc3MgIT0gTlVMTCk7DQo+ID4gKyAgICBBU1NFUlQg KFZyYW1TaXplICE9IE5VTEwpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIFNldCB0aGUgVlJBTSBzaXplLg0KPiA+ICsg ICpWcmFtU2l6ZSA9IChVSU5UTilGaXhlZFBjZEdldDMyIChQY2RBcm1MY2REZHJGcmFtZUJ1ZmZl clNpemUpOw0KPiA+ICsNCj4gPiArICAvLyBDaGVjayBpZiBtZW1vcnkgaXMgYWxyZWFkeSByZXNl cnZlZCBmb3IgdGhlIGZyYW1lIGJ1ZmZlci4NCj4gPiArI2lmIChGaXhlZFBjZEdldDY0IChQY2RB cm1MY2REZHJGcmFtZUJ1ZmZlckJhc2UpICE9IDApDQo+ID4gKw0KPiA+ICsjaWYgKCFEUF9WQUxJ RF9CQVNFX0FERFIgKEZpeGVkUGNkR2V0NjQNCj4gKFBjZEFybUxjZERkckZyYW1lQnVmZmVyQmFz ZSkpKQ0KPiA+ICsjZXJyb3IgQVJNIE1hbGkgRFAgZnJhbWUgYnVmZmVyIGJhc2UgYWRkcmVzcyBj YW5ub3QgYmUgd2lkZXIgdGhhbiA0MA0KPiBiaXRzLg0KPiA+ICsjZWxzZQ0KPiA+ICsNCj4gPiAr ICAqVnJhbUJhc2VBZGRyZXNzID0NCj4gPiArICAgIChFRklfUEhZU0lDQUxfQUREUkVTUylGaXhl ZFBjZEdldDY0DQo+IChQY2RBcm1MY2REZHJGcmFtZUJ1ZmZlckJhc2UpOw0KPiA+ICsNCj4gPiAr ICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjZWxzZQ0K PiA+ICsgIC8vIElmIG5vdCBhbHJlYWR5IHJlc2VydmVkLCBhdHRlbXB0IHRvIGFsbG9jYXRlIHRo ZSBWUkFNIGZyb20gdGhlDQo+IERSQU0uDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5BbGxvY2F0ZVBh Z2VzICgNCj4gPiArICAgICAgICAgICAgICAgICAgQWxsb2NhdGVBbnlQYWdlcywNCj4gPiArICAg ICAgICAgICAgICAgICAgRWZpQm9vdFNlcnZpY2VzRGF0YSwNCj4gPiArICAgICAgICAgICAgICAg ICAgRUZJX1NJWkVfVE9fUEFHRVMgKCpWcmFtU2l6ZSksDQo+ID4gKyAgICAgICAgICAgICAgICAg IFZyYW1CYXNlQWRkcmVzcw0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiQXJtTWFsaURwTGliOiBGYWlsZWQgdG8gYWxsb2NhdGUgZnJhbWUNCj4gYnVmZmVyLlxuIikp Ow0KPiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBBUk0gTWFsaSBEUCBmcmFtZSBidWZm ZXIgYmFzZSBhZGRyZXNzIGNhbiBub3QgYmUgd2lkZXIgdGhhbiA0MA0KPiBiaXRzLg0KPiA+ICsg IGlmICghRFBfVkFMSURfQkFTRV9BRERSICgqVnJhbUJhc2VBZGRyZXNzKSkgew0KPiA+ICsgICAg Z0JTLT5GcmVlUGFnZXMgKCpWcmFtQmFzZUFkZHJlc3MsIEVGSV9TSVpFX1RPX1BBR0VTDQo+ICgq VnJhbVNpemUpKTsNCj4gPiArICAgIEFTU0VSVCAoRFBfVkFMSURfQkFTRV9BRERSICgqVnJhbUJh c2VBZGRyZXNzKSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgLyogTWFyayB0aGUgVlJBTSBhcyB3cml0ZS1jb21iaW5pbmcuIFRoZSBW UkFNIGlzIGluc2lkZSB0aGUgRFJBTSwNCj4gd2hpY2ggaXMgY2FjaGVhYmxlLg0KPiA+ICsgICAq IEZvciBBUk0vQUFyY2g2NCBFRklfTUVNT1JZX1dDIG1lbW9yeSBpcyBhY3R1YWxseSB1bmNhY2hl ZC4NCj4gPiArICAgKi8NCj4gPiArICBTdGF0dXMgPSBnRFMtPlNldE1lbW9yeVNwYWNlQXR0cmli dXRlcyAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICpWcmFtQmFzZUFkZHJlc3MsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICpWcmFtU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgRUZJX01F TU9SWV9XQw0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0K PiA+ICsgICAgZ0JTLT5GcmVlUGFnZXMgKCpWcmFtQmFzZUFkZHJlc3MsIEVGSV9TSVpFX1RPX1BB R0VTDQo+ICgqVnJhbVNpemUpKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiAr ICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogUmV0dXJuIHRvdGFsIG51 bWJlciBvZiBtb2RlcyBzdXBwb3J0ZWQuDQo+ID4gKyAgKg0KPiA+ICsgICogTm90ZTogVmFsaWQg bW9kZSBudW1iZXJzIGFyZSAwIHRvIE1heE1vZGUgLSAxDQo+ID4gKyAgKiBTZWUgU2VjdGlvbiAx Mi45IG9mIHRoZSBVRUZJIFNwZWNpZmljYXRpb24gMi43DQo+ID4gKyAgKg0KPiA+ICsgICogQHJl dHZhbCBVSU5UMzIgICAgICAgICAgICAgTW9kZSBOdW1iZXIuDQo+ID4gKyoqLw0KPiA+ICtVSU5U MzINCj4gPiArTGNkUGxhdGZvcm1HZXRNYXhNb2RlIChWT0lEKQ0KPiA+ICt7DQo+ID4gKyAgcmV0 dXJuICBtTWF4TW9kZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFNldCB0aGUgcmVxdWVzdGVk IGRpc3BsYXkgbW9kZS4NCj4gPiArICAqDQo+ID4gKyAgKiBAcGFyYW0gSU4gTW9kZU51bWJlciAg ICAgICAgICAgICBNb2RlIE51bWJlci4NCj4gPiArICAqDQo+ID4gKyAgKiBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgICBTZXQgbW9kZSBzdWNjZXNzLg0KPiA+ICsgICogQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgICAgUmVxdWVzdGVkIG1vZGUgbm90IGZvdW5kLg0KPiA+ICsq Ki8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtMY2RQbGF0Zm9ybVNldE1vZGUgKA0KPiA+ICsgIElO IENPTlNUIFVJTlQzMiBNb2RlTnVtYmVyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKw0KPiA+ICsg IGlmIChNb2RlTnVtYmVyID49IG1NYXhNb2RlKSB7DQo+ID4gKyAgICBBU1NFUlQgKE1vZGVOdW1i ZXIgPCBtTWF4TW9kZSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+ICsgIH0NCj4gPiArICAvKiBPbiBtb2RlbHMsIHBsYXRmb3JtIHNwZWNpZmljIGNsb2NrL211 eCBzZXR0aW5ncyBhcmUgbm90IHJlcXVpcmVkDQo+ID4gKyAgICogRGlzcGxheSBjb250cm9sbGVy IHNwZWNpZmljIHNldHRpbmdzIGZvciBNYWxpIERQIGFyZSBkb25lIGluDQo+IExjZFNldE1vZGUu DQo+ID4gKyAgICovDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKiogUmV0dXJuIGluZm9ybWF0aW9uIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUgbnVtYmVy Lg0KPiA+ICsgICoNCj4gPiArICAqIEBwYXJhbSBJTiBNb2RlTnVtYmVyICAgICAgICAgICAgTW9k ZSBOdW1iZXIuDQo+ID4gKyAgKiBAcGFyYW0gT1VUIEluZm8gICAgICAgICAgICAgICAgIFBvaW50 ZXIgZm9yIHJldHVybmVkIG1vZGUgaW5mb3JtYXRpb24NCj4gPiArICAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG9uIHN1Y2Nlc3MpLg0KPiA+ICsgICoNCj4gPiArICAqIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgUmVxdWVzdGVkIG1vZGUgZm91bmQuDQo+ID4gKyAg KiBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIEluZm8gaXMgTlVMTC4NCj4gPiArICAq IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgUmVxdWVzdGVkIG1vZGUgbm90IGZvdW5k Lg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtMY2RQbGF0Zm9ybVF1ZXJ5TW9kZSAo DQo+ID4gKyAgSU4gIENPTlNUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1vZGVOdW1iZXIsDQo+ID4gKyAgT1VUIEVGSV9HUkFQSElDU19PVVRQVVRfTU9ERV9JTkZPUk1B VElPTiAqIENPTlNUIEluZm8NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoTW9kZU51bWJl ciA+PSBtTWF4TW9kZSB8fCBJbmZvID09IE5VTEwpIHsNCj4gPiArICAgIEFTU0VSVCAoTW9kZU51 bWJlciA8IG1NYXhNb2RlKTsNCj4gPiArICAgIEFTU0VSVCAoSW5mbyAhPSBOVUxMKTsNCj4gPiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICBJbmZvLT5WZXJzaW9uID0gMDsNCj4gPiArICBJbmZvLT5Ib3Jpem9udGFsUmVzb2x1dGlvbiA9 DQo+IG1EaXNwbGF5TW9kZXNbTW9kZU51bWJlcl0uSG9yaXpvbnRhbC5SZXNvbHV0aW9uOw0KPiA+ ICsgIEluZm8tPlZlcnRpY2FsUmVzb2x1dGlvbiA9DQo+IG1EaXNwbGF5TW9kZXNbTW9kZU51bWJl cl0uVmVydGljYWwuUmVzb2x1dGlvbjsNCj4gPiArICBJbmZvLT5QaXhlbHNQZXJTY2FuTGluZSA9 DQo+IG1EaXNwbGF5TW9kZXNbTW9kZU51bWJlcl0uSG9yaXpvbnRhbC5SZXNvbHV0aW9uOw0KPiA+ ICsNCj4gPiArICBJbmZvLT5QaXhlbEZvcm1hdCA9IEZpeGVkUGNkR2V0MzIgKFBjZEdvcFBpeGVs Rm9ybWF0KTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKiogUmV0dXJucyB0aGUgZGlzcGxheSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHRo ZSByZXF1ZXN0ZWQgbW9kZQ0KPiBudW1iZXIuDQo+ID4gKyAgKg0KPiA+ICsgICogQHBhcmFtIElO ICBNb2RlTnVtYmVyICAgICAgICAgICBNb2RlIE51bWJlci4NCj4gPiArICAqIEBwYXJhbSBPVVQg SG9yaXpvbnRhbCAgICAgICAgICAgUG9pbnRlciB0byBob3Jpem9udGFsIHRpbWluZw0KPiBwYXJh bWV0ZXJzLg0KPiA+ICsgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzb2x1 dGlvbiwgU3luYywgQmFjayBwb3JjaCwgRnJvbnQgcG9yY2gpDQo+ID4gKyAgKiBAcGFyYW0gT1VU IFZlcnRpY2FsICAgICAgICAgICAgIFBvaW50ZXIgdG8gdmVydGljYWwgdGltaW5nIHBhcmFtZXRl cnMuDQo+ID4gKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZXNvbHV0aW9u LCBTeW5jLCBCYWNrIHBvcmNoLCBGcm9udCBwb3JjaCkNCj4gPiArICAqDQo+ID4gKyAgKiBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFJlcXVlc3RlZCBtb2RlIGZvdW5kLg0KPiA+ICsg ICogQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBSZXF1ZXN0ZWQgbW9kZSBub3QgZm91 bmQuDQo+ID4gKyAgKiBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIE9uZSBvZiB0aGUg T1VUIHBhcmFtZXRlcnMgaXMNCj4gTlVMTC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArTGNkUGxhdGZvcm1HZXRUaW1pbmdzICgNCj4gPiArICBJTiAgVUlOVDMyICAgICAgICAgTW9k ZU51bWJlciwNCj4gPiArICBPVVQgQ09OU1QgU0NBTl9USU1JTkdTICoqIEhvcml6b250YWwsDQo+ ID4gKyAgT1VUIENPTlNUIFNDQU5fVElNSU5HUyAqKiBWZXJ0aWNhbA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIGlmIChNb2RlTnVtYmVyID49IG1NYXhNb2RlIHx8IEhvcml6b250YWwgPT0gTlVM TCB8fCBWZXJ0aWNhbCA9PQ0KPiBOVUxMKSB7DQo+ID4gKyAgICBBU1NFUlQgKE1vZGVOdW1iZXIg PCBtTWF4TW9kZSk7DQo+ID4gKyAgICAvLyBPbmUgb2YgdGhlIHBvaW50ZXJzIGlzIE5VTEwNCj4g PiArICAgIEFTU0VSVCAoSG9yaXpvbnRhbCAhPSBOVUxMKTsNCj4gPiArICAgIEFTU0VSVCAoVmVy dGljYWwgIT0gTlVMTCk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgKkhvcml6b250YWwgPSAmbURpc3BsYXlNb2Rlc1tNb2Rl TnVtYmVyXS5Ib3Jpem9udGFsOw0KPiA+ICsgICpWZXJ0aWNhbCA9ICZtRGlzcGxheU1vZGVzW01v ZGVOdW1iZXJdLlZlcnRpY2FsOw0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKiBSZXR1cm4gYnl0ZXMgcGVyIHBpeGVsIGluZm9ybWF0aW9u IGZvciBhIG1vZGUgbnVtYmVyLg0KPiA+ICsgICoNCj4gPiArICAqIEBwYXJhbSBJTiAgTW9kZU51 bWJlciAgICAgICAgICAgTW9kZSBOdW1iZXIuDQo+ID4gKyAgKiBAcGFyYW0gT1VUIEJwcCAgICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gdmFsdWUgQnl0ZXMgUGVyIFBpeGVsLg0KPiA+ICsgICoN Cj4gPiArICAqIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIHJlcXVlc3RlZCBt b2RlIGlzIGZvdW5kLg0KPiA+ICsgICogQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBS ZXF1ZXN0ZWQgbW9kZSBub3QgZm91bmQuDQo+ID4gKyAgKiBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgIEJwcCBpcyBOVUxMLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtM Y2RQbGF0Zm9ybUdldEJwcCAoDQo+ID4gKyAgSU4gIENPTlNUIFVJTlQzMiAgICBNb2RlTnVtYmVy LA0KPiA+ICsgIE9VVCBMQ0RfQlBQICogQ09OU1QgQnBwDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgaWYgKE1vZGVOdW1iZXIgPj0gbU1heE1vZGUgfHwgQnBwID09IE5VTEwpIHsNCj4gPiArICAg IC8vIENoZWNrIHZhbGlkIE1vZGVOdW1iZXIgYW5kIEJwcC4NCj4gPiArICAgIEFTU0VSVCAoTW9k ZU51bWJlciA8IG1NYXhNb2RlKTsNCj4gPiArICAgIEFTU0VSVCAoQnBwICE9IE5VTEwpOw0KPiA+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgICpCcHAgPSBMQ0RfQklUU19QRVJfUElYRUxfMjQ7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9Bcm1QbGF0Zm9ybVBrZy9B cm1WRXhwcmVzc1BrZy9MaWJyYXJ5L0FybVZFeHByZXNzTGliUlRTTS9SVFNNDQo+IE1lbS5jDQo+ IGIvQXJtUGxhdGZvcm1Qa2cvQXJtVkV4cHJlc3NQa2cvTGlicmFyeS9Bcm1WRXhwcmVzc0xpYlJU U00vUlRTTQ0KPiBNZW0uYw0KPiA+IGluZGV4DQo+IDVjZDUyOTc1MGEzZDJkM2IwZDM4MWI1OGQ4 NzVkMzc4YWZhYmEyYzIuLjg3YTdhMjYxMzJlMzliOTMzZWMNCj4gZDJhOTVlMzhiMmFiODY5Y2Q0 MDc5IDEwMDY0NA0KPiA+IC0tLQ0KPiBhL0FybVBsYXRmb3JtUGtnL0FybVZFeHByZXNzUGtnL0xp YnJhcnkvQXJtVkV4cHJlc3NMaWJSVFNNL1JUU00NCj4gTWVtLmMNCj4gPiArKysNCj4gYi9Bcm1Q bGF0Zm9ybVBrZy9Bcm1WRXhwcmVzc1BrZy9MaWJyYXJ5L0FybVZFeHByZXNzTGliUlRTTS9SVFNN DQo+IE1lbS5jDQo+ID4gQEAgLTIxLDkgKzIxLDEwIEBADQo+ID4gICNpbmNsdWRlIDxBcm1QbGF0 Zm9ybS5oPg0KPiA+DQo+ID4gICNkZWZpbmUgRlJBTUVfQlVGRkVSX0RFU0NSSVBUT1IgKChGaXhl ZFBjZEdldDY0DQo+IChQY2RBcm1MY2REZHJGcmFtZUJ1ZmZlckJhc2UpICE9IDApID8gMSA6IDAp DQo+ID4gKyNkZWZpbmUgRFBfQkFTRV9ERVNDUklQVE9SICAgICAgKChGaXhlZFBjZEdldDY0DQo+ IChQY2RBcm1NYWxpRHBCYXNlKSAhPSAwKSA/IDEgOiAwKQ0KPiA+DQo+ID4gIC8vIE51bWJlciBv ZiBWaXJ0dWFsIE1lbW9yeSBNYXAgRGVzY3JpcHRvcnMNCj4gPiAtI2RlZmluZSBNQVhfVklSVFVB TF9NRU1PUllfTUFQX0RFU0NSSVBUT1JTICg5ICsNCj4gRlJBTUVfQlVGRkVSX0RFU0NSSVBUT1Ip DQo+ID4gKyNkZWZpbmUgTUFYX1ZJUlRVQUxfTUVNT1JZX01BUF9ERVNDUklQVE9SUyAoOSArDQo+ IEZSQU1FX0JVRkZFUl9ERVNDUklQVE9SICsgRFBfQkFTRV9ERVNDUklQVE9SKQ0KPiA+DQo+ID4g IC8vIEREUiBhdHRyaWJ1dGVzDQo+ID4gICNkZWZpbmUgRERSX0FUVFJJQlVURVNfQ0FDSEVEDQo+ IEFSTV9NRU1PUllfUkVHSU9OX0FUVFJJQlVURV9XUklURV9CQUNLDQo+ID4gQEAgLTE1OSw2ICsx NjAsMTMgQEAgQXJtUGxhdGZvcm1HZXRWaXJ0dWFsTWVtb3J5TWFwICgNCj4gPiAgICBWaXJ0dWFs TWVtb3J5VGFibGVbSW5kZXhdLkF0dHJpYnV0ZXMgPQ0KPiBBUk1fTUVNT1JZX1JFR0lPTl9BVFRS SUJVVEVfVU5DQUNIRURfVU5CVUZGRVJFRDsNCj4gPiAgI2VuZGlmDQo+ID4NCj4gPiArI2lmIChG aXhlZFBjZEdldDY0IChQY2RBcm1NYWxpRHBCYXNlKSAhPSAwKQ0KPiA+ICsgIC8vIERQNTAwL0RQ NTUwL0RQNjUwIHBlcmlwaGVyYWwgbWVtb3J5IHJlZ2lvbg0KPiA+ICsgIFZpcnR1YWxNZW1vcnlU YWJsZVsrK0luZGV4XS5QaHlzaWNhbEJhc2UgPSBGaXhlZFBjZEdldDY0DQo+IChQY2RBcm1NYWxp RHBCYXNlKTsNCj4gPiArICBWaXJ0dWFsTWVtb3J5VGFibGVbSW5kZXhdLlZpcnR1YWxCYXNlID0g Rml4ZWRQY2RHZXQ2NA0KPiAoUGNkQXJtTWFsaURwQmFzZSk7DQo+ID4gKyAgVmlydHVhbE1lbW9y eVRhYmxlW0luZGV4XS5MZW5ndGggPSBGaXhlZFBjZEdldDMyDQo+IChQY2RBcm1NYWxpRHBNZW1v cnlSZWdpb25MZW5ndGgpOw0KPiA+ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVtJbmRleF0uQXR0cmli dXRlcyA9DQo+IEFSTV9NRU1PUllfUkVHSU9OX0FUVFJJQlVURV9ERVZJQ0U7DQo+ID4gKyNlbmRp Zg0KPiA+ICAgIC8vIE1hcCBzcGFyc2UgbWVtb3J5IHJlZ2lvbiBpZiBwcmVzZW50DQo+ID4gICAg aWYgKEhhc1NwYXJzZU1lbW9yeSkgew0KPiA+ICAgICAgVmlydHVhbE1lbW9yeVRhYmxlWysrSW5k ZXhdLlBoeXNpY2FsQmFzZSA9IFNwYXJzZU1lbW9yeUJhc2U7DQo+ID4gZGlmZiAtLWdpdCBhL0Fy bVBsYXRmb3JtUGtnL0RyaXZlcnMvQXJtTWFsaURwL0FybU1hbGlEcC5jDQo+IGIvQXJtUGxhdGZv cm1Qa2cvRHJpdmVycy9Bcm1NYWxpRHAvQXJtTWFsaURwLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLmZmNzIzNjM3MWQyNzkxNWQ5ZjENCj4gZTM0MTYyZGNlMDk1NGRkZTYzYTc3DQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL0FybVBsYXRmb3JtUGtnL0RyaXZlcnMvQXJtTWFsaURwL0Fy bU1hbGlEcC5jDQo+ID4gQEAgLTAsMCArMSw0MTIgQEANCj4gPiArLyoqIEBmaWxlICBBcm1NYWxp RHAuYw0KPiA+ICsNCj4gPiArICBBUk0gTWFsaSBEUCA1MDAvNTUwLzY1MCBkaXNwbGF5IGNvbnRy b2xsZXIgZHJpdmVyDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNywgQVJNIEx0ZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExp Y2Vuc2UNCj4gPiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIg0KPiBCQVNJUywNCj4gPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJ T05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4g PiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiA+ICsjaW5j bHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9MY2RQbGF0 Zm9ybUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+ DQo+ID4gKyNpbmNsdWRlIDxEcml2ZXJzL0FybU1hbGlEcC5oPg0KPiA+ICsjaW5jbHVkZSA8RHJp dmVycy9MY2RIdy5oPg0KPiA+ICsNCj4gPiArLy8gQ09SRV9JRCBvZiB0aGUgTUFMSSBEUA0KPiA+ ICtTVEFUSUMgVUlOVDMyIGdEcERldmljZUlkOw0KPiA+ICsNCj4gPiArLyoqIERpc2FibGUgdGhl IGdyYXBoaWNzIGxheWVyDQo+ID4gKyAgKg0KPiA+ICsgICogVGhpcyBpcyBkb25lIGJ5IGNsZWFy aW5nIHRoZSBFTiBiaXQNCj4gPiArICAqIG9mIHRoZSBMR19DT05UUk9MIHJlZ2lzdGVyLg0KPiA+ ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArTGF5ZXJHcmFwaGljc0Rpc2FibGUg KFZPSUQpDQo+ID4gK3sNCj4gPiArICBNbWlvQW5kMzIgKERQX0JBU0UgKyBEUF9ERV9MR19DT05U Uk9MLCB+RFBfREVfTEdfRU5BQkxFKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIEVuYWJsZSB0 aGUgZ3JhcGhpY3MgbGF5ZXINCj4gPiArICAqDQo+ID4gKyAgKiBUaGlzIGlzIGRvbmUgYnkgc2V0 dGluZyB0aGUgRU4gYml0DQo+ID4gKyAgKiBvZiB0aGUgTEdfQ09OVFJPTCByZWdpc3Rlci4NCj4g PiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0xheWVyR3JhcGhpY3NFbmFibGUg KFZPSUQpDQo+ID4gK3sNCj4gPiArICBNbWlvT3IzMiAoRFBfQkFTRSArIERQX0RFX0xHX0NPTlRS T0wsIERQX0RFX0xHX0VOQUJMRSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBTZXQgdGhlIGZy YW1lIGFkZHJlc3Mgb2YgdGhlIGdyYXBoaWNzIGxheWVyLg0KPiA+ICsgICoNCj4gPiArICAqIEBw YXJhbSAgRnJhbWVCYXNlQWRkcmVzcyAgICAgICAgQWRkcmVzcyBvZiB0aGUgZGF0YSBidWZmZXIN Cj4gPiArICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBhcyBh IGZyYW1lIGJ1ZmZlci4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0xh eWVyR3JhcGhpY3NTZXRGcmFtZSAoDQo+ID4gKyAgSU4gQ09OU1QgRUZJX1BIWVNJQ0FMX0FERFJF U1MgRnJhbWVCYXNlQWRkcmVzcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIC8vIERpc2FibGUg dGhlIGdyYXBoaWNzIGxheWVyLg0KPiA+ICsgIExheWVyR3JhcGhpY3NEaXNhYmxlICgpOw0KPiA+ ICsNCj4gPiArICAvKiBTZXQgdXAgbWVtb3J5IGFkZHJlc3Mgb2YgdGhlIGRhdGEgYnVmZmVyIGZv ciBncmFwaGljcyBsYXllci4NCj4gPiArICAgKiB3cml0ZSBsb3dlciBiaXRzIG9mIHRoZSBhZGRy ZXNzLg0KPiA+ICsgICAqLw0KPiA+ICsgIE1taW9Xcml0ZTMyICgNCj4gPiArICAgIERQX0JBU0Ug KyBEUF9ERV9MR19QVFJfTE9XLA0KPiA+ICsgICAgRFBfREVfTEdfUFRSX0xPV19NQVNLICYgRnJh bWVCYXNlQWRkcmVzcw0KPiA+ICsgICAgKTsNCj4gPiArDQo+ID4gKyAgLy8gV3JpdGUgaGlnaGVy IGJpdHMgb2YgdGhlIGFkZHJlc3MuDQo+ID4gKyAgTW1pb1dyaXRlMzIgKA0KPiA+ICsgICAgRFBf QkFTRSArIERQX0RFX0xHX1BUUl9ISUdILA0KPiA+ICsgICAgKFVJTlQzMikoRnJhbWVCYXNlQWRk cmVzcyA+PiBEUF9ERV9MR19QVFJfSElHSF9TSElGVCkNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ ICsgIC8vIEVuYWJsZSB0aGUgZ3JhcGhpY3MgbGF5ZXIuDQo+ID4gKyAgTGF5ZXJHcmFwaGljc0Vu YWJsZSAoKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIENvbmZpZ3VyZXMgdmFyaW91cyBncmFw aGljcyBsYXllciBjaGFyYWN0ZXJpc3RpY3MuDQo+ID4gKyAgKg0KPiA+ICsgICogQHBhcmFtICBI UmVzICAgICAgICAgICAgICAgICBIb3Jpem9udGFsIHJlc29sdXRpb24gb2YgdGhlIGdyYXBoaWNz IGxheWVyLg0KPiA+ICsgICogQHBhcmFtICBWUmVzICAgICAgICAgICAgICAgICBWZXJ0aWNhbCBy ZXNvbHV0aW9uIG9mIHRoZSBncmFwaGljcyBsYXllci4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0K PiA+ICtWT0lEDQo+ID4gK0xheWVyR3JhcGhpY3NDb25maWcgKA0KPiA+ICsgIElOIENPTlNUIEVG SV9HUkFQSElDU19QSVhFTF9GT1JNQVQgVWVmaUdmeFBpeGVsRm9ybWF0LA0KPiA+ICsgIElOIENP TlNUIFVJTlQzMiBIUmVzLA0KPiA+ICsgIElOIENPTlNUIFVJTlQzMiBWUmVzDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgVUlOVDMyIFBpeGVsRm9ybWF0Ow0KPiA+ICsNCj4gPiArICAvLyBEaXNh YmxlIHRoZSBncmFwaGljcyBsYXllciBiZWZvcmUgY29uZmlndXJpbmcgYW55IHNldHRpbmdzLg0K PiA+ICsgIExheWVyR3JhcGhpY3NEaXNhYmxlICgpOw0KPiA+ICsNCj4gPiArICAvLyBTZXR1cCBn cmFwaGljcyBsYXllciBzaXplLg0KPiA+ICsgIE1taW9Xcml0ZTMyIChEUF9CQVNFICsgRFBfREVf TEdfSU5fU0laRSwgRlJBTUVfSU5fU0laRSAoSFJlcywNCj4gVlJlcykpOw0KPiA+ICsNCj4gPiAr ICAvLyBTZXR1cCBncmFwaGljcyBsYXllciBjb21wb3NpdGlvbiBzaXplLg0KPiA+ICsgIE1taW9X cml0ZTMyIChEUF9CQVNFICsgRFBfREVfTEdfQ01QX1NJWkUsIEZSQU1FX0NNUF9TSVpFDQo+IChI UmVzLCBWUmVzKSk7DQo+ID4gKw0KPiA+ICsgIC8vIFNldHVwIG1lbW9yeSBzdHJpZGUgKHRvdGFs IHZpc2libGUgcGl4ZWxzIG9uIGEgbGluZSAqIDQgKS4NCj4gPiArICBNbWlvV3JpdGUzMiAoRFBf QkFTRSArIERQX0RFX0xHX0hfU1RSSURFLCAoSFJlcyAqIHNpemVvZg0KPiAoVUlOVDMyKSkpOw0K PiA+ICsNCj4gPiArICAvKiBTZXQgdGhlIGZvcm1hdC4NCj4gPiArICAgKg0KPiA+ICsgICAqIElu IFBpeGVsQmx1ZUdyZWVuUmVkUmVzZXJ2ZWQ4Qml0UGVyQ29sb3IgZm9ybWF0LCBieXRlIDAgcmVw cmVzZW50cw0KPiBibHVlLA0KPiA+ICsgICAqIGJ5dGUgMSByZXByZXNlbnRzIGdyZWVuLCBhbmQg Ynl0ZSAyIHJlcHJlc2VudHMgcmVkLCBhbmQgYnl0ZSAzIGlzDQo+IHJlc2VydmVkDQo+ID4gKyAg ICogd2hpY2ggaXMgZXF1aXZhbGVudCB0byBYUkdCIGZvcm1hdCBvZiB0aGUgRFA1MDAvRFA1NTAv RFA2NTAuDQo+IFdoZXJlYXMNCj4gPiArICAgKiBQaXhlbFJlZEdyZWVuQmx1ZVJlc2VydmVkOEJp dFBlckNvbG9yIGlzIGVxdWl2YWxlbnQgdG8gWEJHUiBvZiB0aGUNCj4gPiArICAgKiBEUDUwMC9E UDU1MC9EUDY1MC4NCj4gPiArICAgKi8NCj4gPiArICBpZiAoVWVmaUdmeFBpeGVsRm9ybWF0ID09 IFBpeGVsQmx1ZUdyZWVuUmVkUmVzZXJ2ZWQ4Qml0UGVyQ29sb3IpIHsNCj4gPiArICAgIFBpeGVs Rm9ybWF0ID0gKGdEcERldmljZUlkID09IE1BTElEUF81MDApID8NCj4gRFBfUElYRUxfRk9STUFU X0RQNTAwX1hSR0JfODg4OA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICA6IERQX1BJWEVMX0ZP Uk1BVF9YUkdCXzg4ODg7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIFBpeGVsRm9ybWF0ID0g KGdEcERldmljZUlkID09IE1BTElEUF81MDApID8NCj4gRFBfUElYRUxfRk9STUFUX0RQNTAwX1hC R1JfODg4OA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICA6IERQX1BJWEVMX0ZPUk1BVF9YQkdS Xzg4ODg7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBNbWlvV3JpdGUzMiAoRFBfQkFTRSArIERQ X0RFX0xHX0ZPUk1BVCwgUGl4ZWxGb3JtYXQpOw0KPiA+ICsNCj4gPiArICAvLyBFbmFibGUgZ3Jh cGhpY3MgbGF5ZXIuDQo+ID4gKyAgTGF5ZXJHcmFwaGljc0VuYWJsZSAoKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqIENvbmZpZ3VyZSB0aW1pbmcgaW5mb3JtYXRpb24gb2YgdGhlIGRpc3BsYXku DQo+ID4gKyAgKiBAcGFyYW0gSU4gSG9yaXpvbnRhbCAgICAgICAgICAgUG9pbnRlciB0byBob3Jp em9udGFsIHRpbWluZyBwYXJhbWV0ZXJzLg0KPiA+ICsgICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChSZXNvbHV0aW9uLCBTeW5jLCBCYWNrIHBvcmNoLCBGcm9udCBwb3JjaCkNCj4g PiArICAqIEBwYXJhbSBJTiBWZXJ0aWNhbCAgICAgICAgICAgICBQb2ludGVyIHRvIHZlcnRpY2Fs IHRpbWluZyBwYXJhbWV0ZXJzLg0KPiA+ICsgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChSZXNvbHV0aW9uLCBTeW5jLCBCYWNrIHBvcmNoLCBGcm9udCBwb3JjaCkNCj4gPiArKiov DQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK1NldERpc3BsYXlFbmdpbmVUaW1pbmcgKA0K PiA+ICsgIElOIENPTlNUIFNDQU5fVElNSU5HUyAqIENPTlNUIEhvcml6b250YWwsDQo+ID4gKyAg SU4gQ09OU1QgU0NBTl9USU1JTkdTICogQ09OU1QgVmVydGljYWwNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBVSU5UTiBSZWdISW50ZXJ2YWxzOw0KPiA+ICsgIFVJTlROIFJlZ1ZJbnRlcnZhbHM7 DQo+ID4gKyAgVUlOVE4gUmVnU3luY0NvbnRyb2w7DQo+ID4gKyAgVUlOVE4gUmVnSFZBY3RpdmVT aXplOw0KPiA+ICsNCj4gPiArICBpZiAoZ0RwRGV2aWNlSWQgPT0gTUFMSURQXzUwMCkgew0KPiA+ ICsgICAgLy8gTUFMSSBEUDUwMCB0aW1pbmcgcmVnaXN0ZXJzLg0KPiA+ICsgICAgUmVnSEludGVy dmFscyA9IERQX0JBU0UgKyBEUF9ERV9EUDUwMF9IX0lOVEVSVkFMUzsNCj4gPiArICAgIFJlZ1ZJ bnRlcnZhbHMgPSBEUF9CQVNFICsgRFBfREVfRFA1MDBfVl9JTlRFUlZBTFM7DQo+ID4gKyAgICBS ZWdTeW5jQ29udHJvbCA9IERQX0JBU0UgKyBEUF9ERV9EUDUwMF9TWU5DX0NPTlRST0w7DQo+ID4g KyAgICBSZWdIVkFjdGl2ZVNpemUgPSBEUF9CQVNFICsgRFBfREVfRFA1MDBfSFZfQUNUSVZFU0la RTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgLy8gTUFMSSBEUDU1MC9EUDY1MCB0aW1pbmcg cmVnaXN0ZXJzLg0KPiA+ICsgICAgUmVnSEludGVydmFscyA9IERQX0JBU0UgKyBEUF9ERV9IX0lO VEVSVkFMUzsNCj4gPiArICAgIFJlZ1ZJbnRlcnZhbHMgPSBEUF9CQVNFICsgRFBfREVfVl9JTlRF UlZBTFM7DQo+ID4gKyAgICBSZWdTeW5jQ29udHJvbCA9IERQX0JBU0UgKyBEUF9ERV9TWU5DX0NP TlRST0w7DQo+ID4gKyAgICBSZWdIVkFjdGl2ZVNpemUgPSBEUF9CQVNFICsgRFBfREVfSFZfQUNU SVZFU0laRTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIEhvcml6b250YWwgYmFjayBwb3Jj aCBhbmQgZnJvbnQgcG9yY2guDQo+ID4gKyAgTW1pb1dyaXRlMzIgKA0KPiA+ICsgICAgUmVnSElu dGVydmFscywNCj4gPiArICAgIEhfSU5URVJWQUxTIChIb3Jpem9udGFsLT5Gcm9udFBvcmNoLCBI b3Jpem9udGFsLT5CYWNrUG9yY2gpDQo+ID4gKyAgICApOw0KPiA+ICsNCj4gPiArICAvLyBWZXJ0 aWNhbCBiYWNrIHBvcmNoIGFuZCBmcm9udCBwb3JjaC4NCj4gPiArICBNbWlvV3JpdGUzMiAoDQo+ ID4gKyAgICBSZWdWSW50ZXJ2YWxzLA0KPiA+ICsgICAgVl9JTlRFUlZBTFMgKFZlcnRpY2FsLT5G cm9udFBvcmNoLCBWZXJ0aWNhbC0+QmFja1BvcmNoKQ0KPiA+ICsgICAgKTsNCj4gPiArDQo+ID4g KyAgLy8gU3luYyBjb250cm9sLCBIb3Jpem9udGFsIGFuZCBWZXJ0aWNhbCBzeW5jLg0KPiA+ICsg IE1taW9Xcml0ZTMyICgNCj4gPiArICAgIFJlZ1N5bmNDb250cm9sLA0KPiA+ICsgICAgU1lOQ19X SURUSCAoSG9yaXpvbnRhbC0+U3luYywgVmVydGljYWwtPlN5bmMpDQo+ID4gKyAgICApOw0KPiA+ ICsNCj4gPiArICAvLyBTZXQgdXAgSG9yaXpvbnRhbCBhbmQgVmVydGljYWwgYXJlYSBzaXplLg0K PiA+ICsgIE1taW9Xcml0ZTMyICgNCj4gPiArICAgIFJlZ0hWQWN0aXZlU2l6ZSwNCj4gPiArICAg IEhWX0FDVElWRSAoSG9yaXpvbnRhbC0+UmVzb2x1dGlvbiwgVmVydGljYWwtPlJlc29sdXRpb24p DQo+ID4gKyAgICApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogUmV0dXJuIENPUkVfSUQgb2Yg dGhlIEFSTSBNYWxpIERQLg0KPiA+ICsgICoNCj4gPiArICAqIEByZXR2YWwgMCAgICAgICAgICAg ICAgICAgICAgICBObyBNYWxpIERQIGZvdW5kLg0KPiA+ICsgICogQHJldHZhbCAweDUwMCAgICAg ICAgICAgICAgICAgIE1hbGkgRFAgY29yZSBpZCBmb3IgRFA1MDAuDQo+ID4gKyAgKiBAcmV0dmFs IDB4NTUwICAgICAgICAgICAgICAgICAgTWFsaSBEUCBjb3JlIGlkIGZvciBEUDU1MC4NCj4gPiAr ICAqIEByZXR2YWwgMHg2NTAgICAgICAgICAgICAgICAgICBNYWxpIERQIGNvcmUgaWQgZm9yIERQ NjUwLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1VJTlQzMg0KPiA+ICtBcm1NYWxpRHBH ZXRDb3JlSWQgKA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQzMiBEcENvcmVJZDsNCj4g PiArDQo+ID4gKyAgLyogRmlyc3QgY2hlY2sgZm9yIERQNTAwIGFzIHJlZ2lzdGVyIG9mZnNldCBm b3IgRFA1NTAvRFA2NTAgQ09SRV9JRA0KPiA+ICsgICAqIGlzIGJleW9uZCAzSy80SyByZWdpc3Rl ciBzcGFjZSBvZiB0aGUgRFA1MDAuDQo+ID4gKyAgICovDQo+ID4gKyAgRHBDb3JlSWQgPSBNbWlv UmVhZDMyIChEUF9CQVNFICsgRFBfREVfRFA1MDBfQ09SRV9JRCk7DQo+ID4gKyAgRHBDb3JlSWQg Pj49IERQX0RFX0RQNTAwX0NPUkVfSURfU0hJRlQ7DQo+ID4gKw0KPiA+ICsgIGlmIChEcENvcmVJ ZCA9PSBNQUxJRFBfNTAwKSB7DQo+ID4gKyAgICByZXR1cm4gRHBDb3JlSWQ7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICAvLyBDaGVjayBmb3IgRFA1NTAgb3IgRFA2NTAuDQo+ID4gKyAgRHBDb3Jl SWQgPSBNbWlvUmVhZDMyIChEUF9CQVNFICsgRFBfRENfQ09SRV9JRCk7DQo+ID4gKyAgRHBDb3Jl SWQgPj49IERQX0RDX0NPUkVfSURfU0hJRlQ7DQo+ID4gKw0KPiA+ICsgIGlmIChEcENvcmVJZCA9 PSBNQUxJRFBfNTUwDQo+ID4gKyAgICB8fCBEcENvcmVJZCA9PSBNQUxJRFBfNjUwKSB7DQo+ID4g KyAgICByZXR1cm4gRHBDb3JlSWQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIENoZWNrIGZvciBwcmVzZW5jZSBvZiBNQUxJLg0KPiA+ ICsgICoNCj4gPiArICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzIGlmIHRoZSBwbGF0 Zm9ybSBpbXBsZW1lbnRzDQo+ID4gKyAgKiBEUDUwMC9EUDU1MC9EUDY1MCBBUk0gTWFsaSBkaXNw bGF5IHByb2Nlc3Nvci4NCj4gPiArICAqDQo+ID4gKyAgKiBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgUGxhdGZvcm0gaW1wbGVtZW50cw0KPiBEUDUwMC9EUDU1MC9EUDY1MC4NCj4gPiAr ICAqIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICBEUDUwMC9EUDU1MC9EUDY1MCBkaXNw bGF5DQo+IHByb2Nlc3NvciBub3QNCj4gPiArICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb3VuZCBvbiB0aGUgcGxhdGZvcm0uDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0xjZElkZW50aWZ5IChWT0lEKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIERwQ29yZUlkOw0K PiA+ICsNCj4gPiArICBERUJVRyAoKERFQlVHX1dBUk4sDQo+ID4gKyAgICAiUHJvYmluZyBBUk0g TWFsaSBEUDUwMC9EUDU1MC9EUDY1MCBhdCBiYXNlIGFkZHJlc3MgMHglcFxuIiwNCj4gPiArICAg IERQX0JBU0UNCj4gPiArICAgICkpOw0KPiA+ICsNCj4gPiArI2lmIChEUF9CQVNFID09IDApDQo+ ID4gKyNlcnJvciAiQVJNIE1hbGkgRFAgcGVyaXBoZXJhbCBiYXNlIGFkZHJlc3MgaXMgaW52YWxp ZFxuIg0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyAgRHBDb3JlSWQgPSBBcm1NYWxpRHBHZXRD b3JlSWQgKCk7DQo+ID4gKw0KPiA+ICsgIGlmIChEcENvcmVJZCAhPSAwKSB7DQo+ID4gKyAgICAg REVCVUcgKChERUJVR19XQVJOLCAiRm91bmQgQVJNIE1hbGkgRFAgJXhcbiIsIERwQ29yZUlkKSk7 DQo+ID4gKyAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg REVCVUcgKChERUJVR19XQVJOLCAiQVJNIE1hbGkgRFAgbm90IGZvdW5kLi4uXG4iKSk7DQo+ID4g Kw0KPiA+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiog SW5pdGlhbGl6ZSBwbGF0Zm9ybSBkaXNwbGF5Lg0KPiA+ICsgICoNCj4gPiArICAqIEBwYXJhbSAg RnJhbWVCYXNlQWRkcmVzcyAgICAgICBBZGRyZXNzIG9mIHRoZSBmcmFtZSBidWZmZXIuDQo+ID4g KyAgKg0KPiA+ICsgICogQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIERpc3BsYXkgaW5p dGlhbGl6YXRpb24gc3VjY2Vzcy4NCj4gPiArICAqIEByZXR2YWwgIShFRklfU1VDQ0VTUykgICAg ICAgICBEaXNwbGF5IGluaXRpYWxpemF0aW9uIGZhaWx1cmUuDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0xjZEluaXRpYWxpemUgKA0KPiA+ICsgIElOIENPTlNUIEVGSV9QSFlTSUNB TF9BRERSRVNTIEZyYW1lQmFzZUFkZHJlc3MNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBERUJV RyAoKERFQlVHX1dBUk4sICJGcmFtZSBidWZmZXIgYmFzZSBhZGRyZXNzID0gJXBcbiIsDQo+IEZy YW1lQmFzZUFkZHJlc3MpKTsNCj4gPiArDQo+ID4gKyAgZ0RwRGV2aWNlSWQgPSBBcm1NYWxpRHBH ZXRDb3JlSWQgKCk7DQo+ID4gKyAgaWYgKGdEcERldmljZUlkID09IDApIHsNCj4gPiArICAgIERF QlVHICgoREVCVUdfRVJST1IsICJBUk0gTWFsaSBEUCBpbml0aWFsaXphdGlvbiBmYWlsLCINCj4g PiArICAgICAgICJubyBBUk0gTWFsaSBEUCBwcmVzZW50XG4iKSk7DQo+ID4gKyAgICByZXR1cm4g RUZJX05PVF9GT1VORDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIFdlIGFyZSB1c2luZyBn cmFwaGljcyBsYXllciBvZiB0aGUgTWFsaSBEUCBhcyBhIG1haW4gZnJhbWUgYnVmZmVyLg0KPiA+ ICsgIExheWVyR3JhcGhpY3NTZXRGcmFtZSAoRnJhbWVCYXNlQWRkcmVzcyk7DQo+ID4gKw0KPiA+ ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFNldCBBUk0g TWFsaSBEUCBpbiBjb2ZpZ3VyYXRpb24gbW9kZS4NCj4gPiArICAqDQo+ID4gKyAgKiBUaGUgQVJN IE1hbGkgRFAgbXVzdCBiZSBpbiB0aGUgY29uZmlndXJhdGlvbiBtb2RlIGZvcg0KPiA+ICsgICog Y29uZmlndXJhdGlvbiBvZiB0aGUgSF9JTlRFUlZBTFMsIFZfSU5URVJWQUxTLCBTWU5DX0NPTlRS T0wNCj4gPiArICAqIGFuZCBIVl9BQ1RJVkVTSVpFLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ ID4gK1ZPSUQNCj4gPiArU2V0Q29uZmlndXJhdGlvbk1vZGUgKFZPSUQpDQo+ID4gK3sNCj4gPiAr IC8vIFJlcXVlc3QgY29uZmlndXJhdGlvbiBNb2RlLg0KPiA+ICsgaWYgKGdEcERldmljZUlkID09 IE1BTElEUF81MDApIHsNCj4gPiArICAgTW1pb09yMzIgKERQX0JBU0UgKyBEUF9ERV9EUDUwMF9D T05UUk9MLA0KPiBEUF9ERV9EUDUwMF9DT05UUk9MX0NPTkZJR19SRVEpOw0KPiA+ICsgfSBlbHNl IHsNCj4gPiArICAgTW1pb09yMzIgKERQX0JBU0UgKyBEUF9EQ19DT05UUk9MLA0KPiBEUF9EQ19D T05UUk9MX0NNX0FDVElWRSk7DQo+ID4gKyB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBTZXQg QVJNIE1hbGkgRFAgaW4gbm9ybWFsIG1vZGUuDQo+ID4gKyAgKg0KPiA+ICsgICogTm9ybWFsIG1v ZGUgaXMgdGhlIG1haW4gb3BlcmF0aW5nIG1vZGUgb2YgdGhlIGRpc3BsYXkgcHJvY2Vzc29yDQo+ ID4gKyAgKiBpbiB3aGljaCBkaXNwbGF5IGxheWVyIGRhdGEgaXMgZmV0Y2hlZCBmcm9tIGZyYW1l IGJ1ZmZlciBhbmQNCj4gPiArICAqIGRpc3BsYXllZC4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0K PiA+ICtWT0lEDQo+ID4gK1NldE5vcm1hbE1vZGUgKFZPSUQpDQo+ID4gK3sNCj4gPiArIC8vIERp c2FibGUgY29uZmlndXJhdGlvbiBNb2RlLg0KPiA+ICsgaWYgKGdEcERldmljZUlkID09IE1BTElE UF81MDApIHsNCj4gPiArICAgTW1pb0FuZDMyIChEUF9CQVNFICsgRFBfREVfRFA1MDBfQ09OVFJP TCwNCj4gfkRQX0RFX0RQNTAwX0NPTlRST0xfQ09ORklHX1JFUSk7DQo+ID4gKyB9IGVsc2Ugew0K PiA+ICsgICBNbWlvQW5kMzIgKERQX0JBU0UgKyBEUF9EQ19DT05UUk9MLA0KPiB+RFBfRENfQ09O VFJPTF9DTV9BQ1RJVkUgKTsNCj4gPiArIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFNldCB0 aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gdmFsaWQgZmxhZy4NCj4gPiArICAqDQo+ID4gKyAgKiBB bnkgbmV3IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB3cml0dGVuIHRvIHRoZSBkaXNwbGF5IGVu Z2luZSBhcmUNCj4gbm90DQo+ID4gKyAgKiBhY3RpdmF0ZWQgdW50aWwgdGhlIGdsb2JhbCBjb25m aWd1cmF0aW9uIHZhbGlkIGZsYWcgaXMgc2V0IGluIHRoZQ0KPiA+ICsgICogQ09ORklHX1ZBTElE IHJlZ2lzdGVyLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArU2V0Q29u ZmlnVmFsaWQgKFZPSUQpDQo+ID4gK3sNCj4gPiArICBpZiAoZ0RwRGV2aWNlSWQgPT0gTUFMSURQ XzUwMCkgew0KPiA+ICsgICAgTW1pb09yMzIgKERQX0JBU0UgKyBEUF9EUDUwMF9DT05GSUdfVkFM SUQsDQo+IERQX0RDX0NPTkZJR19WQUxJRCk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIE1t aW9PcjMyIChEUF9CQVNFICsgRFBfRENfQ09ORklHX1ZBTElELA0KPiBEUF9EQ19DT05GSUdfVkFM SUQgKTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBTZXQgcmVxdWVzdGVkIG1v ZGUgb2YgdGhlIGRpc3BsYXkuDQo+ID4gKyAgKg0KPiA+ICsgICogQHBhcmFtICBNb2RlTnVtYmVy ICAgICAgICAgICAgIERpc3BsYXkgbW9kZSBudW1iZXIuDQo+ID4gKyAgKiBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgRGlzcGxheSBzZXQgbW9kZSBzdWNjZXNzLg0KPiA+ICsgICogQHJl dHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgIElmIG1vZGUgbm90IGZvdW5kL3N1cHBvcnRlZC4N Cj4gPiArICAqIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICBJZiBtb2RlIGRvZXMgbm90 IHN1cHBvcnQgbW9yZQ0KPiA+ICsgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo YW4gMjQgYnl0ZXMgcGVyIHBpeGVsIGZvcm1hdC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArTGNkU2V0TW9kZSAoDQo+ID4gKyAgSU4gQ09OU1QgVUlOVDMyICBNb2RlTnVtYmVyDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQo+ID4g KyAgQ09OU1QgU0NBTl9USU1JTkdTICAqSG9yaXpvbnRhbDsNCj4gPiArICBDT05TVCBTQ0FOX1RJ TUlOR1MgICpWZXJ0aWNhbDsNCj4gPiArDQo+ID4gKyAgRUZJX0dSQVBISUNTX09VVFBVVF9NT0RF X0lORk9STUFUSU9OICBNb2RlSW5mbzsNCj4gPiArDQo+ID4gKyAgLy8gR2V0IHRoZSBkaXNwbGF5 IG1vZGUgdGltaW5ncyBhbmQgb3RoZXIgcmVsZXZhbnQgaW5mb3JtYXRpb24uDQo+ID4gKyAgU3Rh dHVzID0gTGNkUGxhdGZvcm1HZXRUaW1pbmdzICgNCj4gPiArICAgICAgICAgICAgIE1vZGVOdW1i ZXIsDQo+ID4gKyAgICAgICAgICAgICAmSG9yaXpvbnRhbCwNCj4gPiArICAgICAgICAgICAgICZW ZXJ0aWNhbA0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsgIEFTU0VSVCAoSG9yaXpvbnRhbCAh PSBOVUxMKTsNCj4gPiArICBBU1NFUlQgKFZlcnRpY2FsICE9IE5VTEwpOw0KPiA+ICsNCj4gPiAr ICAvLyBHZXQgdGhlIHBpeGVsIGZvcm1hdCBpbmZvcm1hdGlvbi4NCj4gPiArICBTdGF0dXMgPSBM Y2RQbGF0Zm9ybVF1ZXJ5TW9kZSAoTW9kZU51bWJlciwgJk1vZGVJbmZvKTsNCj4gPiArICBpZiAo RUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMp Ow0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIFJl cXVlc3QgY29uZmlndXJhdGlvbiBtb2RlLg0KPiA+ICsgIFNldENvbmZpZ3VyYXRpb25Nb2RlICgp Ow0KPiA+ICsNCj4gPiArICAvLyBDb25maWd1cmUgdGhlIGdyYXBoaWNzIGxheWVyLg0KPiA+ICsg IExheWVyR3JhcGhpY3NDb25maWcgKA0KPiA+ICsgICAgTW9kZUluZm8uUGl4ZWxGb3JtYXQsDQo+ ID4gKyAgICBIb3Jpem9udGFsLT5SZXNvbHV0aW9uLA0KPiA+ICsgICAgVmVydGljYWwtPlJlc29s dXRpb24NCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIC8vIFNldCB0aGUgZGlzcGxheSBlbmdp bmUgdGltaW5ncy4NCj4gPiArICBTZXREaXNwbGF5RW5naW5lVGltaW5nIChIb3Jpem9udGFsLCBW ZXJ0aWNhbCk7DQo+ID4gKw0KPiA+ICsgIC8vIEFmdGVyIGNvbmZpZ3VyYXRpb24sIHNldCBNYWxp IERQIGluIG5vcm1hbCBtb2RlLg0KPiA+ICsgIFNldE5vcm1hbE1vZGUgKCk7DQo+ID4gKw0KPiA+ ICsgIC8qIEFueSBwYXJhbWV0ZXJzIHdyaXR0ZW4gdG8gdGhlIGRpc3BsYXkgZW5naW5lIGFyZSBu b3QgYWN0aXZhdGVkIHVudGlsDQo+ID4gKyAgICogQ09ORklHX1ZBTElEIGlzIHNldC4NCj4gPiAr ICAgKi8NCj4gPiArICBTZXRDb25maWdWYWxpZCAoKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICAqIFRoaXMgZnVuY3Rp b24gZGUtaW5pdGlhbGl6ZXMgdGhlIGRpc3BsYXkuDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4g K0xjZFNodXRkb3duIChWT0lEKQ0KPiA+ICt7DQo+ID4gKyAgLy8gRGlzYWJsZSBncmFwaGljcyBs YXllci4NCj4gPiArICBMYXllckdyYXBoaWNzRGlzYWJsZSAoKTsNCj4gPiArfQ0KPiA+IC0tDQo+ ID4gR3VpZCgiQ0UxNjU2NjktM0VGMy00OTNGLUI4NUQtNjE5MEVFNUI5NzU5IikNCj4gPg0KSU1Q T1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2ht ZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3Ug YXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIg aW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVy IHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5m b3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K