From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web11.4649.1591148054404486312 for ; Tue, 02 Jun 2020 18:34:14 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0423a65dac=abner.chang@hpe.com) Received: from pps.filterd (m0134425.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 0531YDLm018993; Wed, 3 Jun 2020 01:34:13 GMT Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com with ESMTP id 31e1yj82pt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 03 Jun 2020 01:34:13 +0000 Received: from G1W8107.americas.hpqcorp.net (g1w8107.austin.hp.com [16.193.72.59]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5009.houston.hpe.com (Postfix) with ESMTPS id 6BCCA66; Wed, 3 Jun 2020 01:33:42 +0000 (UTC) Received: from G9W8456.americas.hpqcorp.net (2002:10d8:a15f::10d8:a15f) by G1W8107.americas.hpqcorp.net (2002:10c1:483b::10c1:483b) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 3 Jun 2020 01:33:42 +0000 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (15.241.52.10) by G9W8456.americas.hpqcorp.net (16.216.161.95) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 3 Jun 2020 01:33:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gQjo3zxdXXXYIdAclURvWZLnqW5JV/6/BTUOCB0jOu9xQQ6rnz4XiojpILic8hMjcPc88RFNgjkdJU2zWMXoEX41azaK6TEfzMWbtE7OgACNd7RVvszqIk2bSFEfBLSozdMbfjySkQHMez8PuAIP/In/nvqone4+A4u/uiH9K236B1hwLS90PcsaexfNRU0brgJ54G5MbCWDVth2b6SAZ8pt8+KkSuMzFaQm5Jh8CpUV3p+isP+zsn9z+8ZpIoNlDIYP5E9o0xgJMcQ7MmXJfDuuJRmYKI/d2ulIBZejLZj1wMOosNllSWb5UG/NZ9z+fAGBWCrRPn8Q8e19d42i1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hfRc3ygc09woUFjaHwQbhGPcjVKQY1qakbdjfDMFayA=; b=YHDlRe6vc1FBxSCzt3CJQIQBLGIXJ4hWZPJa6pqHfUvuIMSg9b+1kZgMeSXgm0bqb1jv34WmUMhWjHUbKmZgBJh1jq+oUYhWabfztgqThzNRJsuvqYvfWflyWY4r8PctG8zxvxQhKasPxtfnDCxl6SGcbrIfhAeC9HSQEhgJm9QuvZUkxbEG+xwUlZb7wXLmmsHqOenlobibRRw1roA3Teu5V+KskSeTZjCb3SPvj1hvKrU6OuWneqMWg/y4QatqtCrdrcatldsxI9suU0HnvrUGKaj2m0BpolCRBKQQ/knFHds6YpHpMMmIW7bduG4lAE8W8hFHt8Zh2Dia9MkrVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7714::14) by TU4PR8401MB0368.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:770a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 3 Jun 2020 01:33:38 +0000 Received: from TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM ([fe80::29a3:bff2:a760:1f07]) by TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM ([fe80::29a3:bff2:a760:1f07%9]) with mapi id 15.20.3045.022; Wed, 3 Jun 2020 01:33:38 +0000 From: "Abner Chang" To: "devel@edk2.groups.io" , "Kinney, Michael D" , "Schaefer, Daniel (DualStudy)" CC: Leif Lindholm , "Chen, Gilbert" Subject: Re: [edk2-devel] [PATCH v4 1/1] ProcessorPkg/Library: Add RiscVEdk2SbiLib Thread-Topic: [edk2-devel] [PATCH v4 1/1] ProcessorPkg/Library: Add RiscVEdk2SbiLib Thread-Index: AQHWOP4mt0m2Nu2ZQ0iFRwyMrbxinKjF4F0AgAA2T5CAAAUfYA== Date: Wed, 3 Jun 2020 01:33:38 +0000 Message-ID: References: <20200602165152.9823-1-daniel.schaefer@hpe.com> <20200602165152.9823-2-daniel.schaefer@hpe.com> <1614E4344379EB27.21938@groups.io> In-Reply-To: <1614E4344379EB27.21938@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=hpe.com; x-originating-ip: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: ab4de89a-fb20-45e6-01e7-08d8075e2407 x-ms-traffictypediagnostic: TU4PR8401MB0368: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 04238CD941 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: p/tn8hYFS9/WzEsD9bLbB04ZinrSiEDgbAV58Fm/wHfzF2aUAUp+0CO8iP4r4lpOATr54bINNCACK7dMhNczoigaMd83+AeV7kVOQvY40TrJF7mDnV5gHlrAHtxSpxCnrcMBWh3qbvWHHdOVu1eO2KiGuolJvENfZv81hO8hEO4VU9PBh63xIQkgKcwHdhFFRFyK/xqEYyNBK3AVnwpcRPti8yKaceG2GEgMBPWF3OnKgtH5FWuYCn6OKa/IO97WpjZtIFtmAkPByTq3T+zObTb1OcpUglCghBi1+hS7A843gnUcHBWSYzfX+lPOQBl0quk0N6CAJmYqTatzoBgqXCjKQXu1gQxYdBacu4SSP2hawfgB5YpVeMBbhQuJAKHiAcXV9hyY6yXY71L/VjN8hw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TU4PR8401MB1182.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFTY:;SFS:(136003)(346002)(366004)(396003)(376002)(39840400004)(6506007)(53546011)(4326008)(966005)(478600001)(6636002)(5660300002)(52536014)(30864003)(7696005)(110136005)(316002)(54906003)(33656002)(2906002)(66946007)(76116006)(26005)(83380400001)(86362001)(71200400001)(66476007)(64756008)(66446008)(186003)(66556008)(19627235002)(55016002)(8936002)(9686003)(8676002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: zGVD5jktyz1113arnBRLjJ6Wkqvj9zfpA8JmDGPZCinzZkyKBQz1P3SEMJaTIYYLod7qM56vbsXkq1lJFWoOYPAK/sX1UkEp/OVJicXTdIKu315+s13xxHa7ArVIhXQmQ8OEXql1PgyWmXiftDJYH7jDT+dHxOgoLaoQuAWNn5wmiRrRkkgaY2Wv95gOrf+LXeH0rYQb1gSc7YtDG+Cz86XT35Lu0iIw5DTXc+9XaAX36EnMVhZPqfvxhPX6JCSsjYJenxhKDZXJHjtQ7ZoxF7CULUul0iqWPLleXkEfQoxDIj/hYW91WJkYDOci+fYhiUMVRnkQLcUO+5MkCxJqd+9OXL7myc0HWg18lV800oR7ZZJ0cnwu9Jgc2CUryMGWcjS/tBdLfHYmsYrUZ+/0PBbMnHJdoFTPan4PDucSmR/PcjKxQ+3pJZ76TS2GMrAHEXmb09CCwvhJzPqe5pABJPvFSzpGHngSXqtIiIVTO4jQABD4UYCfSoNHSsCgYu6B X-MS-Exchange-CrossTenant-Network-Message-Id: ab4de89a-fb20-45e6-01e7-08d8075e2407 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2020 01:33:38.3944 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KxKggRdjhAPasE0losMOorPef2Lk0IG2tx4zI38GbDMYXGwIlwKFvaRe1dI0wx7mvivDtg9mUgoAR3Mb6026qw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TU4PR8401MB0368 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216,18.0.687 definitions=2020-06-02_15:2020-06-02,2020-06-02 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 phishscore=0 cotscore=-2147483648 priorityscore=1501 mlxscore=0 spamscore=0 malwarescore=0 bulkscore=0 mlxlogscore=999 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2004280000 definitions=main-2006030009 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gW21haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mDQo+IEFibmVy IENoYW5nDQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVuZSAzLCAyMDIwIDk6MjUgQU0NCj4gVG86IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IGRldmVsQGVkazIu Z3JvdXBzLmlvOw0KPiBTY2hhZWZlciwgRGFuaWVsIChEdWFsU3R1ZHkpIDxkYW5pZWwuc2NoYWVm ZXJAaHBlLmNvbT4NCj4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsgQ2hl biwgR2lsYmVydA0KPiA8Z2lsYmVydC5jaGVuQGhwZS5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRr Mi1kZXZlbF0gW1BBVENIIHY0IDEvMV0gUHJvY2Vzc29yUGtnL0xpYnJhcnk6IEFkZA0KPiBSaXNj VkVkazJTYmlMaWINCj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIFttYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb21dDQo+ID4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDMsIDIwMjAgNjowMCBBTQ0KPiA+IFRv OiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgU2NoYWVmZXIsIERhbmllbCAoRHVhbFN0dWR5KQ0KPiA+ IDxkYW5pZWwuc2NoYWVmZXJAaHBlLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+ID4gPG1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlh aW5jLmNvbT47IENoZW4sIEdpbGJlcnQNCj4gPiA8Z2lsYmVydC5jaGVuQGhwZS5jb20+OyBDaGFu ZywgQWJuZXIgKEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpDQo+ID4gPGFibmVyLmNoYW5nQGhwZS5j b20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjQgMS8xXSBQcm9jZXNz b3JQa2cvTGlicmFyeTogQWRkDQo+ID4gUmlzY1ZFZGsyU2JpTGliDQo+ID4NCj4gPiBIaSBEYW5p ZWwsDQo+ID4NCj4gPiBJIHNlZSBzb21lIGluY29uc2lzdGVuY2UgaW4gdGhlIG5hbWVzIHVzZWQg aW4gdGhlc2UgcGF0Y2hlcy4NCj4gPg0KPiA+IEZvciBleGFtcGxlLCB0aGVyZSBzaG91bGQgbm90 IGJlIGEgbmVlZCB0byB1c2UgIkVkazIiIGluIHRoZQ0KPiA+IG5hbWUgb2YgYSBsaWJyYXJ5LiAg VGhpcyBsaWJyYXJ5IGlzIGluIGFuIGVkazIgcmVwby4NCj4gV2UgY3VycmVudGx5IGhhdmUgdHdv IGxpYnJhcmllcyByZWdhcmRzIHRvIFJJU0MtViBTQkkgc3BlYy4gT25lIGlzIHRoZQ0KPiB3cmFw cGVyIHRvIGJ1aWxkIE9wZW5TQkkgbGliLCB3aGljaCBpcyBSaXNjVk9wZW5TYmlMaWIuDQo+IEFu b3RoZXIgb25lIGlzIFNCSSBmaXJtd2FyZSBjb2RlIGJhc2UgZXh0ZW5zaW9uIGluIHdoaWNoIHRo ZSBBQklzIGFyZQ0KPiBwcm92aWRlZCBieSBzeXN0ZW0gZmlybXdhcmUgb3RoZXIgdGhhbiB0aGUg c3RhbmRhcmQgQUJJcyBkZWZpbmVkIGluIFNCSQ0KPiBzcGVjLiBUbyBuYW1lIGl0IHdpdGggRURL MiBtYWtlcyBzZW5zZSBiZWNhdXNlIHRoYXQgaXMgUklTQy1WIEVESzINCj4gZmlybXdhcmUgY29k ZSBiYXNlIFNCSSBleHRlbnNpb24uDQpNb3JlIGluZm9ybWF0aW9uIGlzIGluIGJlbG93LA0KaHR0 cHM6Ly9naXRodWIuY29tL3Jpc2N2L3Jpc2N2LXNiaS1kb2MvYmxvYi9tYXN0ZXIvcmlzY3Ytc2Jp LmFkb2MNCi0gRmlybXdhcmUgQ29kZSBCYXNlIFNwZWNpZmljIFNCSSBFeHRlbnNpb24gU3BhY2Us IEV4dGVuc2lvbiBJZHMgMHgwQTAwMDAwMCB0aHJvdWdoIDB4MEFGRkZGRkYNCj4gPg0KPiA+IEkg c2VlICJSaXNjViIgYW5kICJSaXNrLVYiIHVzZWQgaW4gZmlsZSBwYXRocy4gIEkgcmVjb21tZW5k DQo+ID4geW91IHBpY2sgb25lIGFuZCB1c2UgaXQgY29uc2lzdGVudGx5LiAgSW4gdGhlIE1kZVBr ZywgSSBzZWUNCj4gPiBSaXNjVjY0LCBhbmQgbWFjcm9zIHVzaW5nIFJJU0NWLCBSSVNDVjMyLCBS SVNDVjY0LCBhbmQgUklTQ1YxMjguDQo+ID4gd2hpY2ggc2VlbXMgY29uc2lzdGVudCBhbmQgZG9l cyBub3QgdXNlIGEgJy0nLiAgUGVyaGFwcyB1c2UNCj4gPiAiUmlzY1YiIGZvciBjb250ZW50IHRo YXQgd29ya3MgZm9yIDMyLCA2NCwgYW5kIDEyOCBiaXQgYW5kDQo+ID4gUmlzY1YzMiwgUmlzY1Y2 NCwgYW5kIFJpc2tWMTI4IGZvciBjb250ZW50IGlzIHNwZWNpZmljIHRvIHRoZQ0KPiA+IGJpdCB3 aWR0aD8NCj4gRm9yIHRoZSBmb2xkZXJzIHVuZGVyIFNpbGljb24gYW5kIHBsYXRmb3JtLCBJIHBy ZWZlciB0byB1c2UgIlJJU0MtViIgd2hpY2ggaXMNCj4gdGhlIG9mZmljaWFsIG5hbWUgb2YgdGhp cyBwcm9jZXNzb3IuIEFsbCBvdGhlciBmaWxlcyBjYW4gdXNlIFJpc2NWIHdoaWNoDQo+IGNvbmZv cm0gdGhlIG5hbWluZyBydWxlLiBSSVNDVjMyLCBSSVNDVjY0LCBhbmQgUklTQ1YxMjggYXJlIHVz ZWQgZm9yIHRoZQ0KPiBhcmNoaXRlY3R1cmVzLg0KPiANCj4gPg0KPiA+IFRoYW5rcywNCj4gPg0K PiA+IE1pa2UNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24NCj4gPiA+ IEJlaGFsZiBPZiBEYW5pZWwgU2NoYWVmZXINCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIEp1bmUgMiwg MjAyMCA5OjUyIEFNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBM ZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT47IEdpbGJlcnQgQ2hlbg0KPiA+ID4gPGdp bGJlcnQuY2hlbkBocGUuY29tPjsgQWJuZXIgQ2hhbmcNCj4gPiA+IDxhYm5lci5jaGFuZ0BocGUu Y29tPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjQgMS8xXQ0KPiA+ID4gUHJv Y2Vzc29yUGtnL0xpYnJhcnk6IEFkZCBSaXNjVkVkazJTYmlMaWINCj4gPiA+DQo+ID4gPiBMaWJy YXJ5IHByb3ZpZGVzIGludGVyZmFjZXMgdG8gaW52b2tlIFNCSSBlY2FsbHMuDQo+ID4gPg0KPiA+ ID4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFNjaGFlZmVyIDxkYW5pZWwuc2NoYWVmZXJAaHBlLmNv bT4NCj4gPiA+DQo+ID4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+DQo+ ID4gPiBDYzogR2lsYmVydCBDaGVuIDxnaWxiZXJ0LmNoZW5AaHBlLmNvbT4NCj4gPiA+IENjOiBB Ym5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBlLmNvbT4NCj4gPiA+IENjOiBNaWNoYWVsIEQuIEtp bm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBTaWxp Y29uL1JJU0MtDQo+ID4gPiBWL1Byb2Nlc3NvclBrZy9MaWJyYXJ5L1Jpc2NWRWRrMlNiaUxpYi9S aXNjVkVkazJTYmlMaWIuaQ0KPiA+ID4gbmYgfCAgMjggKw0KPiA+ID4gIFNpbGljb24vUklTQy0N Cj4gPiA+IFYvUHJvY2Vzc29yUGtnL0luY2x1ZGUvTGlicmFyeS9SaXNjVkVkazJTYmlMaWIuaA0K PiA+ID4gfCA1NjMgKysrKysrKysrKysrDQo+ID4gPiAgU2lsaWNvbi9SSVNDLQ0KPiA+ID4gVi9Q cm9jZXNzb3JQa2cvTGlicmFyeS9SaXNjVkVkazJTYmlMaWIvUmlzY1ZFZGsyU2JpTGliLmMNCj4g PiA+IHwgODk3ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAx NDg4IGluc2VydGlvbnMoKykNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvU2lsaWNvbi9SSVND LQ0KPiA+ID4gVi9Qcm9jZXNzb3JQa2cvTGlicmFyeS9SaXNjVkVkazJTYmlMaWIvUmlzY1ZFZGsy U2JpTGliLmkNCj4gPiA+IG5mIGIvU2lsaWNvbi9SSVNDLQ0KPiA+ID4gVi9Qcm9jZXNzb3JQa2cv TGlicmFyeS9SaXNjVkVkazJTYmlMaWIvUmlzY1ZFZGsyU2JpTGliLmkNCj4gPiA+IG5mDQo+ID4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi42NjVkY2Jm NDBlMDENCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL1NpbGljb24vUklTQy0NCj4g PiA+IFYvUHJvY2Vzc29yUGtnL0xpYnJhcnkvUmlzY1ZFZGsyU2JpTGliL1Jpc2NWRWRrMlNiaUxp Yi5pDQo+ID4gPiBuZg0KPiA+ID4gQEAgLTAsMCArMSwyOCBAQA0KPiA+ID4gKyMjIEBmaWxlDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsjIFJJU0MtViBMaWJyYXJ5IHRvIGNhbGwgU0JJIGVjYWxscw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArIw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArIyAgQ29weXJpZ2h0 IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZQ0KPiA+ID4gRGV2ZWxvcG1lbnQg TFAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArIw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyMj DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1tEZWZpbmVzXQ0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMWINCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgQkFTRV9OQU1FICAgICAgPSBSaXNjVkVkazJTYmlMaWINCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgRklMRV9HVUlEICAgICAgPSAwREYxQkJCRC1GN0U1LTRFOEEtQkNG MS05RDYzRDJERDlGREQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgTU9EVUxFX1RZUEUgICAgPSBC QVNFDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIExJQlJBUllfQ0xBU1MgID0gUmlzY1ZFZGsyU2JpTGliDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1tTb3VyY2VzXQ0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBSaXNjVkVkazJTYmlMaWIuYw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICtbUGFja2FnZXNdDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFNpbGljb24vUklTQy1WL1By b2Nlc3NvclBrZy9SaXNjVlByb2Nlc3NvclBrZy5kZWMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg UGxhdGZvcm0vUklTQy1WL1BsYXRmb3JtUGtnL1Jpc2NWUGxhdGZvcm1Qa2cuZGVjDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgQmFzZUxpYg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBSaXNj Vk9wZW5zYmlMaWINCj4gPiA+DQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL1NpbGljb24vUklT Qy0NCj4gPiA+IFYvUHJvY2Vzc29yUGtnL0luY2x1ZGUvTGlicmFyeS9SaXNjVkVkazJTYmlMaWIu aA0KPiA+ID4gYi9TaWxpY29uL1JJU0MtDQo+ID4gPiBWL1Byb2Nlc3NvclBrZy9JbmNsdWRlL0xp YnJhcnkvUmlzY1ZFZGsyU2JpTGliLmgNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4g PiBpbmRleCAwMDAwMDAwMDAwMDAuLmMxYWUzMTc2MTQ3Zg0KPiA+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ID4gKysrIGIvU2lsaWNvbi9SSVNDLQ0KPiA+ID4gVi9Qcm9jZXNzb3JQa2cvSW5jbHVkZS9M aWJyYXJ5L1Jpc2NWRWRrMlNiaUxpYi5oDQo+ID4gPiBAQCAtMCwwICsxLDU2MyBAQA0KPiA+ID4g Ky8qKiBAZmlsZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBMaWJyYXJ5IHRvIGNhbGwgdGhlIFJJ U0MtViBTQkkgZWNhbGxzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBIZXdsZXR0IFBhY2thcmQgRGV2ZWxvcG1lbnQgTFAu DQo+ID4gPiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg IEBwYXIgR2xvc3Nhcnk6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgLSBIYXJ0IC0gSGFyZHdh cmUgVGhyZWFkLCBzaW1pbGFyIHRvIGEgQ1BVIGNvcmUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoq Lw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsjaWZuZGVmIFJJ U0NWX1NCSV9MSUJfSF8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyNkZWZpbmUgUklTQ1ZfU0JJX0xJ Ql9IXw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsjaW5jbHVk ZSA8VWVmaS5oPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRh cmQvUmlzY1ZPcGVuc2JpLmg+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsjaW5jbHVkZSA8c2JpL3Ni aV9zY3JhdGNoLmg+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsjaW5jbHVkZSA8c2JpL3NiaV9wbGF0 Zm9ybS5oPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArLy8gRURLMiBPcGVuU0JJIEZpcm13YXJlIGV4dGVuc2lvbi4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsjZGVmaW5lIFNC SV9FREsyX0ZXX0VYVA0KPiA+ID4gKFNCSV9FWFRfRklSTVdBUkVfQ09ERV9CQVNFX1NUQVJUIHwg U0JJX09QRU5TQklfSU1QSUQpDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArLy8gRURLMiBPcGVuU0JJIEZpcm13YXJlIGV4dGVuc2lvbiBmdW5jdGlvbnMuDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsvLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArI2RlZmluZSBTQklf RVhUX0ZXX01TQ1JBVENIX0ZVTkMgICAgICAgIDANCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyNkZWZp bmUgU0JJX0VYVF9GV19NU0NSQVRDSF9IQVJUSURfRlVOQyAxDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLyBFREsy IE9wZW5TQkkgZmlybXdhcmUgZXh0ZW5zaW9uIHJldHVybiBzdGF0dXMuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsvLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBVSU5UTiBFcnJvcjsgICAvLy88IFNCSSBzdGF0dXMgY29kZQ0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBVSU5UTiBWYWx1ZTsgICAvLy88IFZhbHVlIHJldHVybmVkDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICt9IFNiaVJldDsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEdldCB0aGUgaW1w bGVtZW50ZWQgU0JJIHNwZWNpZmljYXRpb24gdmVyc2lvbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSBtaW5vciBudW1iZXIgb2YgdGhlIFNCSSBzcGVj aWZpY2F0aW9uIGlzIGVuY29kZWQNCj4gPiA+IGluIHRoZSBsb3cgMjQgYml0cywNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgd2l0aCB0aGUgbWFqb3IgbnVtYmVyIGVuY29kZWQgaW4gdGhlIG5leHQg NyBiaXRzLg0KPiA+ID4gQml0IDMyIG11c3QgYmUgMCBhbmQgaXMNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHBhbnNpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW291dF0gU3BlY1ZlcnNpb24gICAgICAg ICAgVGhlIFZlcnNpb24gb2YgdGhlDQo+ID4gPiBTQkkgc3BlY2lmaWNhdGlvbi4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArVk9JRA0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlHZXRTcGVjVmVyc2lvbiAo DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg KlNwZWNWZXJzaW9uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICk7DQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBH ZXQgdGhlIFNCSSBpbXBsZW1lbnRhdGlvbiBJRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgIFRoaXMgSUQgaXMgdXNlZCB0byBpZGVuZXRpZnkgYSBzcGVjaWZp YyBTQkkNCj4gPiA+IGltcGxlbWVudGF0aW9uIGluIG9yZGVyIHRvIHdvcmsNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgYXJvdW5kIGFueSBxdWlya3MgaXQgbWlnaHQgaGF2ZS4NCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBJbXBsSWQgICAg ICAgICAgICAgICBUaGUgSUQgb2YgdGhlIFNCSQ0KPiA+ID4gaW1wbGVtZW50YXRpb24uDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0SW1wbElkICgN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICpJ bXBsSWQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEdldCB0aGUg U0JJIGltcGxlbWVudGF0aW9uIHZlcnNpb24NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBUaGUgdmVyc2lvbiBvZiB0aGlzIFNCSSBpbXBsZW1lbnRhdGlvbi4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhlIGVuY29kaW5nIG9mIHRoaXMgbnVtYmVyIGlzIGRl dGVybWluZWQgYnkgdGhlDQo+ID4gPiBzcGVjaWZpYyBTQkkgaW1wbGVtZW50YXRpb24uDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW291dF0gSW1w bFZlcnNpb24gICAgICAgICAgVGhlIHZlcnNpb24gb2YgdGhlDQo+ID4gPiBTQkkgaW1wbGVtZW50 YXRpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZP SUQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2Jp R2V0SW1wbFZlcnNpb24gKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBPVVQgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICpJbXBsVmVyc2lvbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICApOw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgUHJvYmUgd2hldGhlciBhbiBTQkkgZXh0ZW5zaW9uIGlzIGF2YWlsYWJs ZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFByb2JlUmVz dWx0IGlzIHNldCB0byAwIGlmIHRoZSBleHRlbnNpb24gaXMgbm90DQo+ID4gPiBhdmFpbGFibGUg b3IgdG8gYW4gZXh0ZW5zaW9uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIHNwZWNpZmllZCB2YWx1 ZSBpZiBpdCBpcyBhdmFpbGFibGUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRXh0ZW5zaW9uSWQgICAgICAgICAgVGhlIGV4dGVuc2lv biBJRC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW291dF0gUHJvYmVSZXN1bHQgICAg ICAgICAgVGhlIHJldHVybiB2YWx1ZSBvZg0KPiA+ID4gdGhlIHByb2JlLg0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtWT0lEDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1NiaVByb2JlRXh0ZW5zaW9uICgNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIElOVE4gICAgICAgICAgICAgICAgICAgICAgICAgRXh0 ZW5zaW9uSWQsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIE9VVCBJTlROICAgICAgICAgICAgICAg ICAgICAgICAgKlByb2JlUmVzdWx0DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICk7DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBHZXQgdGhlIENQVSdzIHZlbmRvciBJRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFJlYWRzIHRoZSBtdmVuZG9yaWQgQ1NSLg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIE1hY2hpbmVW ZW5kb3JJZCAgICAgIFRoZSBDUFUncyB2ZW5kb3IgSUQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsq Ki8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQ SQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0TWFjaGluZVZlbmRvcklkICgNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqTWFjaGluZVZl bmRvcklkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQgdGhl IENQVSdzIGFyY2hpdGVjdHVyZSBJRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIFJlYWRzIHRoZSBtYXJjaGlkIENTUi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBNYWNoaW5lQXJjaElkICAgICAg ICBUaGUgQ1BVJ3MNCj4gPiA+IGFyY2hpdGVjdHVyZSBJRC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArVk9JRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJ QVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlHZXRNYWNoaW5lQXJjaElkICgNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqTWFjaGluZUFy Y2hJZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgR2V0IHRoZSBD UFUncyBpbXBsZW1lbnRhdGlvbiBJRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIFJlYWRzIHRoZSBtaW1waWQgQ1NSLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIE1hY2hpbmVJbXBsSWQgICAgICAg IFRoZSBDUFUncw0KPiA+ID4gaW1wbGVtZW50YXRpb24gSUQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0TWFjaGluZUltcGxJZCAoDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgKk1hY2hpbmVJ bXBsSWQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFBvbGl0ZWx5 IGFzayB0aGUgU0JJIHRvIHN0YXJ0IGEgZ2l2ZW4gaGFydC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBUaGlzIGNhbGwgbWF5IHJldHVybiBiZWZvcmUgdGhl IGhhcnQgaGFzIGFjdHVhbGx5DQo+ID4gPiBzdGFydGVkIGV4ZWN1dGluZywgaWYgdGhlDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgIFNCSSBpbXBsZW1lbnRhdGlvbiBjYW4gZ3VhcmFudGVlIHRoYXQg dGhlIGhhcnQgaXMNCj4gPiA+IGFjdHVhbGx5IGdvaW5nIHRvIHN0YXJ0Lg0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEJlZm9yZSB0aGUgaGFydCBqdW1wcyB0 byBTdGFydEFkZHIsIHRoZSBoYXJ0IE1VU1QNCj4gPiA+IGNvbmZpZ3VyZSBQTVAgaWYgcHJlc2Vu dA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBhbmQgc3dpdGNoIHRvIFMtbW9kZS4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0SWQg ICAgICAgICAgICAgICBUaGUgaWQgb2YgdGhlIGhhcnQNCj4gPiA+IHRvIHN0YXJ0Lg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgcGh5 c2ljYWwNCj4gPiA+IGFkZHJlc3MsIHdoZXJlIHRoZSBoYXJ0IHN0YXJ0cw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpbmcgZnJv bS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgUHJpdiAgICAgICAgICAgICAg ICAgQW4gWExFTi1iaXQgdmFsdWUsDQo+ID4gPiB3aGljaCB3aWxsIGJlIGluIHJlZ2lzdGVyDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEx IHdoZW4gdGhlIGhhcnQNCj4gPiA+IHN0YXJ0cy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgSGFydCB3YXMgc3RvcHBlZCBhbmQNCj4gPiA+ IHdpbGwgc3RhcnQgZXhlY3V0aW5nIGZyb20gU3RhcnRBZGRyLg0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBAcmV0dmFsIEVGSV9MT0FEX0VSUk9SICAgICAgICAgICBTdGFydEFkZHIgaXMgbm90DQo+ ID4gPiB2YWxpZCwgcG9zc2libHkgZHVlIHRvIGZvbGxvd2luZyByZWFzb25zOg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJdCBpcyBu b3QgYSB2YWxpZA0KPiA+ID4gcGh5c2ljYWwgYWRkcmVzcy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhlIGFkZHJlc3MgaXMNCj4g PiA+IHByb2hpYml0ZWQgYnkgUE1QIHRvIHJ1biBpbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcnZpc29yIG1vZGUuDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgIEhhcnRJ ZCBpcyBub3QgYQ0KPiA+ID4gdmFsaWQgaGFydCBpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBA cmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICAgICBUaGUgaGFydCBpcyBhbHJlYWR5DQo+ID4g PiBydW5uaW5nLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIG90aGVyICAgICAgICAg ICAgICAgICAgICBUaGUgc3RhcnQgcmVxdWVzdA0KPiA+ID4gZmFpbGVkIGZvciB1bmtub3duIHJl YXNvbnMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VG SV9TVEFUVVMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4g PiArU2JpSGFydFN0YXJ0ICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBIYXJ0SWQsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRBZGRyLA0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFByaXYNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFJldHVybiBleGVjdXRpb24gb2YgdGhl IGNhbGxpbmcgaGFydCB0byBTQkkuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgTVVTVCBiZSBjYWxsZWQgaW4gUy1Nb2RlIHdpdGggdXNlciBpbnRlcnJ1cHRz DQo+ID4gPiBkaXNhYmxlZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhpcyBjYWxsIGlzIG5v dCBleHBlY3RlZCB0byByZXR1cm4sIHVubGVzcyBhIGZhaWx1cmUNCj4gPiA+IG9jY3Vycy4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsICAgICBF RklfU1VDQ0VTUyAgICAgICAgICBOZXZlciBvY2N1cnMuIFdoZW4NCj4gPiA+IHN1Y2Nlc3NmdWws IHRoZSBjYWxsIGRvZXMgbm90IHJldHVybi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZh bCAgICAgb3RoZXIgICAgICAgICAgICAgICAgRmFpbGVkIHRvIHN0b3AgaGFyZA0KPiA+ID4gZm9y IGFuIHVua25vd24gcmVhc29uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gK1NiaUhhcnRTdG9wICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEdldCB0aGUgY3VycmVudCBzdGF0dXMgb2YgYSBoYXJ0Lg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFNpbmNlIGhhcnRzIGNhbiB0 cmFuc2l0aW9uIGJldHdlZW4gc3RhdGVzIGF0IGFueQ0KPiA+ID4gdGltZSwgdGhlIHN0YXR1cyBy ZXRyaWV2ZWQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgYnkgdGhpcyBmdW5jdGlvbiBtYXkgYWxy ZWFkeSBiZSBvdXQgb2YgZGF0ZSwgb25jZSBpdA0KPiA+ID4gcmV0dXJucy4NCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBQb3NzaWJsZSB2YWx1ZXMgZm9yIEhh cnRTdGF0dXMgYXJlOg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAwOiBTVEFSVEVEDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIDE6IFNUT1BQRUQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgMjogU1RB UlRfUkVRVUVTVF9QRU5ESU5HDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIDM6IFNUT1BfUkVRVUVT VF9QRU5ESU5HDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg QHBhcmFtW291dF0gSGFydFN0YXR1cyAgICAgICAgICAgVGhlIHBvaW50ZXIgaW4gd2hpY2gNCj4g PiA+IHRoZSBoYXJ0J3Mgc3RhdHVzIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbg0KPiA+ID4gc3Vj Y2VlZHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICAgIEEgcGFyYW1ldGVyIGlzDQo+ID4gPiBpbnZhbGlkLg0KPiA+ID4NCj4gPiA+DQo+ID4g PiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1NiaUhhcnRHZXRTdGF0dXMgKA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhh cnRJZCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICpIYXJ0U3RhdHVzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICk7DQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArLy8vIFRpbWVyIGV4dGVuc2lvbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLy8vDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBDbGVhciBwZW5kaW5nIHRpbWVyIGludGVycnVwdCBiaXQgYW5kIHNldCB0aW1lciBm b3INCj4gPiA+IG5leHQgZXZlbnQgYWZ0ZXIgVGltZS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBUbyBjbGVhciB0aGUgdGltZXIgd2l0aG91dCBzY2hlZHVs aW5nIGEgdGltZXIgZXZlbnQsDQo+ID4gPiBzZXQgVGltZSB0byBhDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIHByYWN0aWNhbGx5IGluZmluaXRlIHZhbHVlIG9yIG1hc2sgdGhlIHRpbWVyDQo+ID4g PiBpbnRlcnJ1cHQgYnkgY2xlYXJpbmcgc2llLlNUSUUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgVGltZSAgICAgICAgICAgICAgICAg VGhlIHRpbWUgb2Zmc2V0IHRvDQo+ID4gPiB0aGUgbmV4dCBzY2hlZHVsZWQgdGltZXIgaW50ZXJy dXB0Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtWT0lE DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1NiaVNl dFRpbWVyICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgICAgICBUaW1lDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICk7DQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr Ly8vIElQSSBleHRlbnNpb24NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgU2VuZCBJUEkgdG8gYWxsIGhhcnRzIHNwZWNpZmllZCBpbiB0aGUgbWFzay4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBUaGUgaW50ZXJydXB0cyBhcmUg cmVnaXN0ZXJlZCBhcyBzdXBlcnZpc29yIHNvZnR3YXJlDQo+ID4gPiBpbnRlcnJ1cHRzIGF0IHRo ZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICByZWNlaXZpbmcgaGFydC4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAg ICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmluZyBoYXJ0IGlkcw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2UgICAgICAgICBUaGUg c3RhcnRpbmcgaGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUg Y29tcHV0ZWQuIElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFs bA0KPiA+ID4gaGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIElQSSB3YXMgc2VudCB0byBhbGwNCj4gPiA+ IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkg b2YgdGhlIGhhcnRpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0 aGVyIHRoZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBp cw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlTZW5kSXBpICgNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpIYXJ0 TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICBIYXJ0TWFza0Jhc2UNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLy8vDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsvLy8gUmVtb3RlIGZlbmNlIGV4dGVuc2lvbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLy8v DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBJbnN0cnVjdHMgcmVtb3RlIGhhcnRzIHRvIGV4ZWN1dGUgYSBGRU5D RS5JDQo+ID4gPiBpbnN0cnVjdGlvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0 LXZlY3Rvcg0KPiA+ID4gY29udGFpbmluZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2UgICAgICAgICBUaGUgc3RhcnRpbmcgaGFydGlkDQo+ ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4g PiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4gaGFydHMgYXJl IGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICAgIElQSSB3YXMgc2VudCB0byBhbGwNCj4gPiA+IHRoZSB0YXJnZXRlZCBoYXJ0 cy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg ICAgRWl0aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t IGhhcnRfbWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMg bm90DQo+ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRv IHRoZQ0KPiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlSZW1vdGVGZW5jZUkgKA0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgKkhhcnRNYXNrLA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnRN YXNrQmFzZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1 Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0ZSBvbmUgb3IgbW9yZQ0KPiA+ID4gU0ZFTkNF LlZNQSBpbnN0cnVjdGlvbnMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgVGhlIFNGRU5DRS5WTUEgY292ZXJzIHRoZSByYW5nZSBvZiB2aXJ0dWFsIGFkZHJl c3Nlcw0KPiA+ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXplLg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24g YWN0cyBhcyBhIGZ1bGwgdGxiIGZsdXNoIGlmDQo+ID4gPiAqIFN0YXJ0QWRkciBhbmQgc2l6ZQ0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBhcmUgYm90aCAwICogc2l6ZSBpcyBlcXVhbCB0byAyXlhM RU4tMQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEhhcnRNYXNrICAgICAgICAgICAgIFNjYWxhciBiaXQtdmVjdG9yDQo+ID4gPiBjb250 YWluaW5nIGhhcnQgaWRzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRN YXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0aWQNCj4gPiA+IGZyb20gd2hpY2ggdGhl IGJpdC12ZWN0b3INCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiA+IHNldCB0byAtMSwgSGFydE1h c2sgaXMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWdub3JlZCBhbmQgYWxsDQo+ID4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIGZp cnN0IGFkZHJlc3Mgb2YNCj4gPiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVz c2VzDQo+ID4gPiBhcmUgYWZmZWN0ZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICAgIElQSSB3YXMgc2VudCB0byBhbGwNCj4gPiA+IHRoZSB0 YXJnZXRlZCBoYXJ0cy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9F UlJPUiAgICAgICAgICAgU3RhcnRBZGRyIG9yIFNpemUgaXMNCj4gPiA+IG5vdCB2YWxpZC4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0 aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRf bWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0K PiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICtTYmlSZW1vdGVTZmVuY2VWbWEgKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgKkhhcnRNYXNrLA0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnRNYXNr QmFzZSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAg ICAgICAgICBTdGFydEFkZHIsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgU2l6ZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICApOw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0ZSBvbmUgb3Ig bW9yZQ0KPiA+ID4gU0ZFTkNFLlZNQSBpbnN0cnVjdGlvbnMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhlIFNGRU5DRS5WTUEgY292ZXJzIHRoZSByYW5n ZSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcw0KPiA+ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXpl Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBDb3ZlcnMgb25seSB0aGUgZ2l2ZW4gQVNJRC4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBUaGUgcmVtb3RlIGZl bmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0KPiA+ID4gKiBTdGFydEFk ZHIgYW5kIHNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUgaXMg ZXF1YWwgdG8gMl5YTEVOLTENCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZlY3Rv cg0KPiA+ID4gY29udGFpbmluZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFy YW1baW5dICBIYXJ0TWFza0Jhc2UgICAgICAgICBUaGUgc3RhcnRpbmcgaGFydGlkDQo+ID4gPiBm cm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gPiBzZXQg dG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4gaGFydHMgYXJlIGNvbnNp ZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFN0YXJ0QWRkciAgICAg ICAgICAgIFRoZSBmaXJzdCBhZGRyZXNzIG9mDQo+ID4gPiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhv dyBtYW55IGFkZHJlc3Nlcw0KPiA+ID4gYXJlIGFmZmVjdGVkLg0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxs DQo+ID4gPiB0aGUgdGFyZ2V0ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2 YWwgRUZJX0xPQURfRVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBvciBTaXplIGlzDQo+ID4gPiBu b3QgdmFsaWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSICAgIEVpdGhlcg0KPiA+ID4gaGFydF9tYXNrX2Jhc2Ugb3IgYW55IG9mIHRoZSBoYXJ0 aWQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4gPiA+IG5vdCB2YWxpZCBpLmUuIGVpdGhlciB0aGUNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFy dGlkIGlzIG5vdA0KPiA+ID4gZW5hYmxlZCBieSB0aGUgcGxhdGZvcm0gb3IgaXMNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGF2YWls YWJsZSB0byB0aGUNCj4gPiA+IHN1cGVydmlzb3IuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpUmVtb3RlU2ZlbmNlVm1hQXNpZCAoDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFy dE1hc2ssDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplLA0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEFzaWQNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEluc3RydWN0cyB0aGUgcmVtb3Rl IGhhcnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiA+IFNGRU5DRS5HVk1BIGluc3RydWN0 aW9ucy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBUaGUg U0ZFTkNFLkdWTUEgY292ZXJzIHRoZSByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcw0KPiA+ID4g YmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXplLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBDb3Zl cnMgb25seSB0aGUgZ2l2ZW4gVk1JRC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhpcyBmdW5j dGlvbiBjYWxsIGlzIG9ubHkgdmFsaWQgZm9yIGhhcnRzDQo+ID4gPiBpbXBsZW1lbnRpbmcgdGhl IGh5cGVydmlzb3IgZXh0ZW5zaW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwgdGxi IGZsdXNoIGlmDQo+ID4gPiAqIFN0YXJ0QWRkciBhbmQgc2l6ZQ0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBhcmUgYm90aCAwICogc2l6ZSBpcyBlcXVhbCB0byAyXlhMRU4tMQ0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrICAg ICAgICAgICAgIFNjYWxhciBiaXQtdmVjdG9yDQo+ID4gPiBjb250YWluaW5nIGhhcnQgaWRzDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrQmFzZSAgICAgICAgIFRo ZSBzdGFydGluZyBoYXJ0aWQNCj4gPiA+IGZyb20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBi ZSBjb21wdXRlZC4gSWYNCj4gPiA+IHNldCB0byAtMSwgSGFydE1hc2sgaXMNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZCBhbmQg YWxsDQo+ID4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIGZpcnN0IGFkZHJlc3Mgb2YNCj4g PiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4gPiBhcmUgYWZm ZWN0ZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgICAgIElQSSB3YXMgc2VudCB0byBhbGwNCj4gPiA+IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9FUlJPUiAgICAgICAgICAgU3Rh cnRBZGRyIG9yIFNpemUgaXMNCj4gPiA+IG5vdCB2YWxpZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgU0JJIGRvZXMgbm90DQo+ID4gPiBp bXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBvciBvbmUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHRhcmdldCBoYXJ0cw0KPiA+ID4g ZG9lcyBub3Qgc3VwcG9ydCB0aGUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHlwZXJ2aXNvcg0KPiA+ID4gZXh0ZW5zaW9uLg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBFaXRoZXIN Cj4gPiA+IGhhcnRfbWFza19iYXNlIG9yIGFueSBvZiB0aGUgaGFydGlkDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGFydF9tYXNr IGlzDQo+ID4gPiBub3QgdmFsaWQgaS5lLiBlaXRoZXIgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcnRpZCBpcyBub3QNCj4gPiA+ IGVuYWJsZWQgYnkgdGhlIHBsYXRmb3JtIG9yIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUgdG8gdGhlDQo+ID4g PiBzdXBlcnZpc29yLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gK1NiaVJlbW90ZUhmZW5jZUd2bWFWbWlkICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFz a0Jhc2UsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhcnRBZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIFNpemUsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgVm1pZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0 ZSBvbmUgb3IgbW9yZQ0KPiA+ID4gU0ZFTkNFLkdWTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSBTRkVOQ0UuR1ZNQSBjb3Zl cnMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ID4gPiBiZXR3ZWVuIFN0YXJ0QWFk ZHIgYW5kIFNpemUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbCBp cyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+ID4gaW1wbGVtZW50aW5nIHRoZSBoeXBlcnZpc29y IGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0K PiA+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgYXJlIGJv dGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBT Y2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmluZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2UgICAgICAgICBUaGUgc3RhcnRpbmcg aGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQu IElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4g aGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g IFN0YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBhZGRyZXNzIG9mDQo+ID4gPiB0aGUgYWZm ZWN0ZWQgcmFuZ2UuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAg ICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+ID4gYXJlIGFmZmVjdGVkLg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkg d2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFyZ2V0ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBvciBT aXplIGlzDQo+ID4gPiBub3QgdmFsaWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2VzIG5vdA0KPiA+ID4gaW1wbGVtZW50IHRo aXMgZnVuY3Rpb24gb3Igb25lDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQgaGFydHMNCj4gPiA+IGRvZXMgbm90IHN1 cHBvcnQgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh5cGVydmlzb3INCj4gPiA+IGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0 X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+ID4g bm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5 IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNv ci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NU QVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtT YmlSZW1vdGVIZmVuY2VHdm1hICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg SU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRB ZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgIFNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElu c3RydWN0cyB0aGUgcmVtb3RlIGhhcnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiA+IFNG RU5DRS5WVk1BIGluc3RydWN0aW9ucy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBUaGUgU0ZFTkNFLkdWTUEgY292ZXJzIHRoZSByYW5nZSBvZiB2aXJ0dWFs IGFkZHJlc3Nlcw0KPiA+ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFuZCBTaXplLg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBDb3ZlcnMgb25seSB0aGUgZ2l2ZW4gQVNJRC4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBjYWxsIGlzIG9ubHkgdmFsaWQgZm9yIGhhcnRzDQo+ID4g PiBpbXBsZW1lbnRpbmcgdGhlIGh5cGVydmlzb3IgZXh0ZW5zaW9uLg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24g YWN0cyBhcyBhIGZ1bGwgdGxiIGZsdXNoIGlmDQo+ID4gPiAqIFN0YXJ0QWRkciBhbmQgc2l6ZQ0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBhcmUgYm90aCAwICogc2l6ZSBpcyBlcXVhbCB0byAyXlhM RU4tMQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEhhcnRNYXNrICAgICAgICAgICAgIFNjYWxhciBiaXQtdmVjdG9yDQo+ID4gPiBjb250 YWluaW5nIGhhcnQgaWRzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRN YXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0aWQNCj4gPiA+IGZyb20gd2hpY2ggdGhl IGJpdC12ZWN0b3INCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYNCj4gPiA+IHNldCB0byAtMSwgSGFydE1h c2sgaXMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWdub3JlZCBhbmQgYWxsDQo+ID4gPiBoYXJ0cyBhcmUgY29uc2lkZXJlZC4NCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU3RhcnRBZGRyICAgICAgICAgICAgVGhlIGZp cnN0IGFkZHJlc3Mgb2YNCj4gPiA+IHRoZSBhZmZlY3RlZCByYW5nZS4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgU2l6ZSAgICAgICAgICAgICAgICAgSG93IG1hbnkgYWRkcmVz c2VzDQo+ID4gPiBhcmUgYWZmZWN0ZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICAgIElQSSB3YXMgc2VudCB0byBhbGwNCj4gPiA+IHRoZSB0 YXJnZXRlZCBoYXJ0cy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfTE9BRF9F UlJPUiAgICAgICAgICAgU3RhcnRBZGRyIG9yIFNpemUgaXMNCj4gPiA+IG5vdCB2YWxpZC4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICAgU0JJ IGRvZXMgbm90DQo+ID4gPiBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiBvciBvbmUNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHRh cmdldCBoYXJ0cw0KPiA+ID4gZG9lcyBub3Qgc3VwcG9ydCB0aGUNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHlwZXJ2aXNvcg0KPiA+ID4g ZXh0ZW5zaW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgICBFaXRoZXINCj4gPiA+IGhhcnRfbWFza19iYXNlIG9yIGFueSBvZiB0aGUgaGFy dGlkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZyb20gaGFydF9tYXNrIGlzDQo+ID4gPiBub3QgdmFsaWQgaS5lLiBlaXRoZXIgdGhlDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh cnRpZCBpcyBub3QNCj4gPiA+IGVuYWJsZWQgYnkgdGhlIHBsYXRmb3JtIG9yIGlzDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhdmFp bGFibGUgdG8gdGhlDQo+ID4gPiBzdXBlcnZpc29yLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiov DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtF RklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1NiaVJlbW90ZUhmZW5jZVZ2bWFBc2lkICgNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpI YXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRBZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUsDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgQXNpZA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1v dGUgaGFydHMgdG8gZXhlY3V0ZSBvbmUgb3IgbW9yZQ0KPiA+ID4gU0ZFTkNFLlZWTUEgaW5zdHJ1 Y3Rpb25zLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRo ZSBTRkVOQ0UuR1ZNQSBjb3ZlcnMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ID4g PiBiZXR3ZWVuIFN0YXJ0QWFkZHIgYW5kIFNpemUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRo aXMgZnVuY3Rpb24gY2FsbCBpcyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+ID4gaW1wbGVtZW50 aW5nIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBm dWxsIHRsYiBmbHVzaCBpZg0KPiA+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0 TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmluZyBoYXJ0 IGlkcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2UgICAg ICAgICBUaGUgc3RhcnRpbmcgaGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9y DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y ZWQgYW5kIGFsbA0KPiA+ID4gaGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gIFN0YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBhZGRyZXNz IG9mDQo+ID4gPiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+ID4g YXJlIGFmZmVjdGVkLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFyZ2V0ZWQgaGFy dHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1IgICAgICAg ICAgIFN0YXJ0QWRkciBvciBTaXplIGlzDQo+ID4gPiBub3QgdmFsaWQuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2VzIG5vdA0K PiA+ID4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gb3Igb25lDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQgaGFydHMN Cj4gPiA+IGRvZXMgbm90IHN1cHBvcnQgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cGVydmlzb3INCj4gPiA+IGV4dGVuc2lvbi4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAg RWl0aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhh cnRfbWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMgbm90 DQo+ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRo ZQ0KPiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICtTYmlSZW1vdGVIZmVuY2VWdm1hICgNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0 TWFza0Jhc2UsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgU3RhcnRBZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLy8vDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsvLy8gVmVuZG9yIFNwZWNpZmljIGV4dGVuc2lvbiBzcGFjZTogRXh0ZW5z aW9uIElkcw0KPiA+ID4gMHgwOTAwMDAwMCB0aHJvdWdoIDB4MDlGRkZGRkYNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKy8vLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQ2FsbCBhIGZ1bmN0aW9uIGluIGEgdmVuZG9y IGRlZmluZWQgU0JJIGV4dGVuc2lvbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIEFTU0VSVCgpIGlmIHRoZSBFeHRlbnNpb25JZCBpcyBub3QgaW4gdGhlIGRl c2lnbmF0ZWQNCj4gPiA+IFNCSSBWZW5kb3IgRXh0ZW5zaW9uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIFNwYWNlLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEV4dGVuc2lvbklkICAgICAgICAgIFRoZSBTQkkgdmVuZG9yDQo+ID4gPiBl eHRlbnNpb24gSUQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEZ1bmN0aW9u SWQgICAgICAgICAgIFRoZSBmdW5jdGlvbiBJRCB0bw0KPiA+ID4gY2FsbCBpbiB0aGlzIGV4dGVu c2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgTnVtQXJncyAgICAgICAg ICAgICAgSG93IG1hbnkgYXJndW1lbnRzDQo+ID4gPiBhcmUgcGFzc2VkLg0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBAcGFyYW1baW5dICAuLi4gICAgICAgICAgICAgICAgICBBY3R1YWwgQXJndW1l bnRzIHRvDQo+ID4gPiB0aGUgZnVuY3Rpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgaWYgdGhlIFNCSSBmdW5jdGlvbiB3YXMgY2FsbGVkDQo+ID4gPiBhbmQg aXQgd2FzIHN1Y2Nlc3NmdWwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgaWYgTnVtQXJncyBleGNlZWRzIDYNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgQHJldHZhbCBvdGhlcnMgaWYgdGhlIGNhbGxlZCBTQkkgZnVuY3Rpb24gcmV0dXJucyBhbg0K PiA+ID4gZXJyb3INCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICtTYmlWZW5kb3JDYWxsICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb25JZCwNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbklkLA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIE51 bUFyZ3MsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIC4uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLy8NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKy8vLyBGaXJtd2FyZSBTQkkgRXh0ZW5zaW9uDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsvLy8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vLyBUaGlzIFNCSSBFeHRlbnNp b24gaXMgZGVmaW5lZCBhbmQgdXNlZCBieSBFREsyIG9ubHkNCj4gPiA+IGluIG9yZGVyIHRvIGJl IGFibGUgdG8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vLyBydW4gUEkgYW5kIERYRSBwaGFzZSBp biBTLU1vZGUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLy8NCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEdldCBz Y3JhdGNoIHNwYWNlIG9mIHRoZSBjdXJyZW50IGhhcnQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHRoZSB3cmFwcGVy DQo+ID4gPiBTYmlHZXRGaXJtd2FyZUNvbnRleHQgaWYgeW91IG9ubHkgbmVlZCB0bw0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBhY2Nlc3MgdGhlIGZpcm13YXJlIGNvbnRleHQuDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW291dF0gU2NyYXRjaFNw YWNlICAgICAgICAgVGhlIHNjcmF0Y2ggc3BhY2UNCj4gPiA+IHBvaW50ZXIuDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBvcGVyYXRp b24NCj4gPiA+IHN1Y2NlZWRzLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gK1NiaUdldE1zY3JhdGNoICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg T1VUIFNCSV9TQ1JBVENIICAgICAgICAgICAgICAgICAgICAqKlNjcmF0Y2hTcGFjZQ0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgR2V0IHNjcmF0Y2ggc3BhY2Ugb2Yg dGhlIGdpdmVuIGhhcnQgaWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgSGFydElkICAgICAgICAgICAgICAgVGhlIGhhcnQgaWQuDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIFNjcmF0Y2hTcGFjZSAgICAgICAgIFRo ZSBzY3JhdGNoIHNwYWNlDQo+ID4gPiBwb2ludGVyLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gPiBzdWNj ZWVkcy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJ X1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICtTYmlHZXRNc2NyYXRjaEhhcnRpZCAoDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0SWQsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIE9VVCBTQklfU0NSQVRDSCAgICAgICAgICAgICAgICAgICAgKipTY3JhdGNoU3BhY2UNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEdldCBmaXJtd2FyZSBjb250 ZXh0IG9mIHRoZSBjYWxsaW5nIGhhcnQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgQHBhcmFtW291dF0gRmlybXdhcmVDb250ZXh0ICAgICAgVGhlIGZpcm13 YXJlIGNvbnRleHQNCj4gPiA+IHBvaW50ZXIuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBvcGVyYXRpb24NCj4gPiA+IHN1Y2NlZWRz Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklfU1RB VFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1Ni aUdldEZpcm13YXJlQ29udGV4dCAoDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIE9VVCBFRklfUklT Q1ZfT1BFTlNCSV9GSVJNV0FSRV9DT05URVhUDQo+ID4gPiAqKkZpcm13YXJlQ29udGV4dA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU2V0IGZpcm13YXJlIGNvbnRl eHQgb2YgdGhlIGNhbGxpbmcgaGFydC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBAcGFyYW1baW5dIEZpcm13YXJlQ29udGV4dCAgICAgICBUaGUgZmlybXdh cmUgY29udGV4dA0KPiA+ID4gcG9pbnRlci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbg0KPiA+ID4gc3VjY2VlZHMu DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSV9TVEFU VVMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2Jp U2V0RmlybXdhcmVDb250ZXh0ICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gRUZJX1JJU0NW X09QRU5TQklfRklSTVdBUkVfQ09OVEVYVA0KPiA+ID4gKkZpcm13YXJlQ29udGV4dA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsjZW5kaWYNCj4gPiA+DQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL1NpbGljb24v UklTQy0NCj4gPiA+IFYvUHJvY2Vzc29yUGtnL0xpYnJhcnkvUmlzY1ZFZGsyU2JpTGliL1Jpc2NW RWRrMlNiaUxpYi5jDQo+ID4gPiBiL1NpbGljb24vUklTQy0NCj4gPiA+IFYvUHJvY2Vzc29yUGtn L0xpYnJhcnkvUmlzY1ZFZGsyU2JpTGliL1Jpc2NWRWRrMlNiaUxpYi5jDQo+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wZGY1MDVkMjY3NWINCj4g PiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsrKyBiL1NpbGljb24vUklTQy0NCj4gPiA+IFYvUHJv Y2Vzc29yUGtnL0xpYnJhcnkvUmlzY1ZFZGsyU2JpTGliL1Jpc2NWRWRrMlNiaUxpYi5jDQo+ID4g PiBAQCAtMCwwICsxLDg5NyBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBJbnN0YW5jZSBvZiB0aGUgU0JJIGVjYWxsIGxpYnJhcnkuDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSXQgYWxsb3dzIGNhbGxpbmcgYW4gU0JJIGZ1 bmN0aW9uIHZpYSBhbiBlY2FsbCBmcm9tDQo+ID4gPiBTLU1vZGUuDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhlIGxlZ2FjeSBleHRlbnNpb25zIGFyZSBu b3QgaW5jbHVkZWQgYmVjYXVzZSB0aGV5DQo+ID4gPiBhcmUgbm90IG5lY2Vzc2FyeS4NCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgVGhleSB3b3VsZCBiZToNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg LSBTYmlMZWdhY3lTZXRUaW1lciAgICAgICAgICAgIC0+IFVzZSBTYmlTZXRUaW1lcg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICAtIFNiaUxlZ2FjeUNvbnNvbGVQdXRDaGFyICAgICAgLT4gTm8gcmVw bGFjZW1lbnQgLQ0KPiA+ID4gVXNlIHJlZ3VsYXIgVUVGSSBmdW5jdGlvbnMNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgLSBTYmlMZWdhY3lDb25zb2xlR2V0Q2hhciAgICAgIC0+IE5vIHJlcGxhY2Vt ZW50IC0NCj4gPiA+IFVzZSByZWd1bGFyIFVFRkkgZnVuY3Rpb25zDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIC0gU2JpTGVnYWN5Q2xlYXJJcGkgICAgICAgICAgICAtPiBXcml0ZSAwIHRvIFNTSVAN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgLSBTYmlMZWdhY3lTZW5kSXBpICAgICAgICAgICAgIC0+ IFVzZSBTYmlTZW5kSXBpDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIC0gU2JpTGVnYWN5UmVtb3Rl RmVuY2VJICAgICAgICAtPiBVc2UgU2JpUmVtb3RlRmVuY2VJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIC0gU2JpTGVnYWN5UmVtb3RlU2ZlbmNlVm1hICAgICAtPiBVc2UNCj4gPiA+IFNiaVJlbW90 ZVNmZW5jZVZtYQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAtIFNiaUxlZ2FjeVJlbW90ZVNmZW5j ZVZtYUFzaWQgLT4gVXNlDQo+ID4gPiBTYmlSZW1vdGVTZmVuY2VWbWFBc2lkDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIC0gU2JpTGVnYWN5U2h1dGRvd24gICAgICAgICAgICAtPiBXYWl0IGZvciBu ZXcgU3lzdGVtDQo+ID4gPiBSZXNldCBleHRlbnNpb24NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjAsIEhld2xldHQgUGFja2Fy ZCBEZXZlbG9wbWVudCBMUC4NCj4gPiA+IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXIg UmV2aXNpb24gUmVmZXJlbmNlOg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIC0gT3BlblNCSSBW ZXJzaW9uIDAuNg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1Jpc2NW T3BlbnNiaS5oPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1l bW9yeUxpYi5oPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdM aWIuaD4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Jpc2NWRWRrMlNi aUxpYi5oPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArI2luY2x1ZGUgPHNiaS9yaXNjdl9hc20uaD4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyNpbmNsdWRlIDxzYmkvc2JpX2hhcnQuaD4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyNpbmNsdWRlIDxzYmkvc2JpX3R5cGVzLmg+DQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsjaW5jbHVkZSA8c2JpL3NiaV9pbml0Lmg+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLy8NCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKy8vIE1heGltdW0gYXJndW1lbnRzIGZvciBTQkkgZWNhbGwNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKy8vIEl0J3MgcG9zc2libGUgdG8gcGFzcyBtb3JlIGJ1dCBubyBTQkkgY2FsbCB1 c2VzIG1vcmUNCj4gPiA+IGFzIG9mIFNCSSAwLjIuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLyBU aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgd291bGQgaGF2ZSB0byBiZSBwYXNzZWQgb24NCj4gPiA+ IHRoZSBzdGFjayBpbnN0ZWFkIG9mIGFzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLyByZWdpc3Rl cnMsIGxpa2UgaXQncyBkb25lIG5vdy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsjZGVmaW5lIFNCSV9DQUxMX01BWF9BUkdTIDYNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg IENhbGwgU0JJIGNhbGwgdXNpbmcgZWNhbGwgaW5zdHJ1Y3Rpb24uDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQXNzZXJ0cyB3aGVuIE51bUFyZ3MgZXhjZWVk cyBTQklfQ0FMTF9NQVhfQVJHUy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBAcGFyYW1baW5dIEV4dElkICAgIFNCSSBleHRlbnNpb24gSUQuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gRnVuY0lkICAgU0JJIGZ1bmN0aW9uIElELg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dIE51bUFyZ3MgIE51bWJlciBvZiBhcmd1bWVu dHMgdG8gcGFzcyB0bw0KPiA+ID4gdGhlIGVjYWxsLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBA cGFyYW1baW5dIC4uLiAgICAgIEFyZ3VtZW50IGxpc3QgZm9yIHRoZSBlY2FsbC4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsICBSZXR1cm5zIFNi aVJldCBzdHJ1Y3R1cmUgd2l0aCB2YWx1ZSBhbmQNCj4gPiA+IGVycm9yIGNvZGUuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArU1RBVElDDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlSZXQNCj4gPiA+DQo+ID4gPg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpQ2FsbCgNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgSU4gIFVJTlROIEV4dElkLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAg VUlOVE4gRnVuY0lkLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gTnVtQXJncywN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgLi4uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkNCj4g PiA+DQo+ID4gPg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBVSU5UTiBJOw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIFNiaVJldCBSZXQ7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgICAgVUlOVE4gQXJnc1tTQklfQ0FMTF9NQVhfQVJHU107DQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgICAgVkFfTElTVCBBcmdMaXN0Ow0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIFZBX1NUQVJU IChBcmdMaXN0LCBOdW1BcmdzKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICAgIEFTU0VSVCAoTnVtQXJncyA8PSBTQklfQ0FMTF9NQVhfQVJHUyk7DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBmb3IgKEkgPSAwOyBJ IDwgU0JJX0NBTExfTUFYX0FSR1M7IEkrKykgew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAg aWYgKEkgPCBOdW1BcmdzKSB7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgIEFyZ3NbSV0g PSBWQV9BUkcgKEFyZ0xpc3QsIFVJTlROKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgIH0g ZWxzZSB7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgIC8vIERlZmF1bHQgdG8gMCBmb3Ig YWxsIGFyZ3VtZW50cyB0aGF0IGFyZSBub3QNCj4gPiA+IGdpdmVuDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICAgIEFyZ3NbSV0gPSAwOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgfQ0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICAgIFZBX0VORChBcmdMaXN0KTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIHJlZ2lzdGVyIFVJTlROIGEwIGFzbSAoImEwIikg PSBBcmdzWzBdOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIHJlZ2lzdGVyIFVJTlROIGExIGFz bSAoImExIikgPSBBcmdzWzFdOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIHJlZ2lzdGVyIFVJ TlROIGEyIGFzbSAoImEyIikgPSBBcmdzWzJdOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIHJl Z2lzdGVyIFVJTlROIGEzIGFzbSAoImEzIikgPSBBcmdzWzNdOw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICAgIHJlZ2lzdGVyIFVJTlROIGE0IGFzbSAoImE0IikgPSBBcmdzWzRdOw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgIHJlZ2lzdGVyIFVJTlROIGE1IGFzbSAoImE1IikgPSBBcmdzWzVdOw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIHJlZ2lzdGVyIFVJTlROIGE2IGFzbSAoImE2IikgPSAo VUlOVE4pKEZ1bmNJZCk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgcmVnaXN0ZXIgVUlOVE4g YTcgYXNtICgiYTciKSA9IChVSU5UTikoRXh0SWQpOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg IGFzbSB2b2xhdGlsZSAoImVjYWxsIiBcDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICA6 ICIrciIgKGEwKSwgIityIiAoYTEpIFwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgIDog InIiIChhMiksICJyIiAoYTMpLCAiciIgKGE0KSwgInIiIChhNSksICJyIg0KPiA+ID4gKGE2KSwg InIiIChhNykgXA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgOiAibWVtb3J5Iik7IFwN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBSZXQuRXJyb3IgPSBhMDsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgICBSZXQuVmFsdWUgPSBhMTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICByZXR1 cm4gUmV0Ow0KPiA+ID4NCj4gPiA+DQo+ID4gPiArfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVHJhbnNsYXRl IFNCSSBlcnJvciBjb2RlIHRvIEVGSSBzdGF0dXMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSBTYmlFcnJvciAgIFNCSSBlcnJvciBjb2Rl DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4g K1NUQVRJQw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtUcmFuc2xhdGVFcnJvcigNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROIFNiaUVycm9yDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgICkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgc3dp dGNoIChTYmlFcnJvcikgew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIGNhc2UgU0JJX1NVQ0NF U1M6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgY2FzZSBTQklfRVJSX0ZBSUxFRDoNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgY2FzZSBTQklfRVJSX05P VF9TVVBQT1JURUQ6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQ UE9SVEVEOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgY2FzZSBTQklfRVJSX0lOVkFMSURfUEFSQU06DQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgY2FzZSBTQklfRVJS X0RFTklFRDoNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgIHJldHVybiBFRklfQUNDRVNTX0RF TklFRDsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgIGNhc2UgU0JJX0VSUl9JTlZBTElEX0FERFJFU1M6DQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICByZXR1cm4gRUZJX0xPQURfRVJST1I7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICBicmVhazsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBjYXNlIFNCSV9FUlJfQUxSRUFE WV9BVkFJTEFCTEU6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICByZXR1cm4gRUZJX0FMUkVB RFlfU1RBUlRFRDsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgIGRlZmF1bHQ6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAvLw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgLy8gUmVhY2hlcyBoZXJlIG9ubHkgaWYgU0JJIGhh cyBkZWZpbmVkIGEgbmV3DQo+ID4gPiBlcnJvciB0eXBlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAvLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIH0NCj4gPiA+ DQo+ID4gPg0KPiA+ID4gK30NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArLy8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vIE9wZW5TQkkgbGlicmFyeSBpbnRlcmZh Y2UgZnVuY3Rpb24gZm9yIHRoZSBiYXNlDQo+ID4gPiBleHRlbnNpb24NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKy8vDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8q Kg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQgdGhlIGltcGxlbWVudGVkIFNCSSBzcGVjaWZp Y2F0aW9uIHZlcnNpb24NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBUaGUgbWlub3IgbnVtYmVyIG9mIHRoZSBTQkkgc3BlY2lmaWNhdGlvbiBpcyBlbmNvZGVk DQo+ID4gPiBpbiB0aGUgbG93IDI0IGJpdHMsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIHdpdGgg dGhlIG1ham9yIG51bWJlciBlbmNvZGVkIGluIHRoZSBuZXh0IDcgYml0cy4NCj4gPiA+IEJpdCAz MiBtdXN0IGJlIDAgYW5kIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIHJlc2VydmVkIGZvciBm dXR1cmUgZXhwYW5zaW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIEBwYXJhbVtvdXRdIFNwZWNWZXJzaW9uICAgICAgICAgIFRoZSBWZXJzaW9uIG9mIHRo ZQ0KPiA+ID4gU0JJIHNwZWNpZmljYXRpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4g PiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0U3BlY1ZlcnNpb24gKA0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICpTcGVjVmVyc2lvbg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICApDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt7DQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsDQo+ID4gPiBTQklf RVhUX0JBU0VfR0VUX1NQRUNfVkVSU0lPTiwgMCk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgaWYgKCFSZXQuRXJyb3IpIHsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAqU3BlY1ZlcnNpb24gPSAoVUlOVE4pUmV0LlZhbHVlOw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQgdGhl IFNCSSBpbXBsZW1lbnRhdGlvbiBJRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIFRoaXMgSUQgaXMgdXNlZCB0byBpZGVuZXRpZnkgYSBzcGVjaWZpYyBTQkkN Cj4gPiA+IGltcGxlbWVudGF0aW9uIGluIG9yZGVyIHRvIHdvcmsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgYXJvdW5kIGFueSBxdWlya3MgaXQgbWlnaHQgaGF2ZS4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBJbXBsSWQgICAgICAgICAg ICAgICBUaGUgSUQgb2YgdGhlIFNCSQ0KPiA+ID4gaW1wbGVtZW50YXRpb24uDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4gPiA+DQo+ID4gPg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0SW1wbElkICgNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqSW1wbElk DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK3sNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwNCj4g PiA+IFNCSV9FWFRfQkFTRV9HRVRfSU1QX0lELCAwKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg KkltcGxJZCA9IChVSU5UTilSZXQuVmFsdWU7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBHZXQgdGhlIFNCSSBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9uDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhlIHZlcnNpb24gb2YgdGhpcyBT QkkgaW1wbGVtZW50YXRpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSBlbmNvZGluZyBv ZiB0aGlzIG51bWJlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZQ0KPiA+ID4gc3BlY2lmaWMgU0JJIGlt cGxlbWVudGF0aW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIEBwYXJhbVtvdXRdIEltcGxWZXJzaW9uICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZQ0K PiA+ID4gU0JJIGltcGxlbWVudGF0aW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICtWT0lEDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gK1NiaUdldEltcGxWZXJzaW9uICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqSW1wbFZlcnNpb24NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLA0KPiA+ID4gU0JJX0VY VF9CQVNFX0dFVF9JTVBfVkVSU0lPTiwgMCk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICpJbXBs VmVyc2lvbiA9IChVSU5UTilSZXQuVmFsdWU7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBQcm9iZSB3aGV0aGVyIGFuIFNCSSBleHRlbnNpb24gaXMgYXZhaWxhYmxlDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgUHJvYmVSZXN1bHQg aXMgc2V0IHRvIDAgaWYgdGhlIGV4dGVuc2lvbiBpcyBub3QNCj4gPiA+IGF2YWlsYWJsZSBvciB0 byBhbiBleHRlbnNpb24NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgc3BlY2lmaWVkIHZhbHVlIGlm IGl0IGlzIGF2YWlsYWJsZS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBAcGFyYW1baW5dICBFeHRlbnNpb25JZCAgICAgICAgICBUaGUgZXh0ZW5zaW9uIElE Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBQcm9iZVJlc3VsdCAgICAgICAg ICBUaGUgcmV0dXJuIHZhbHVlIG9mDQo+ID4gPiB0aGUgcHJvYmUuDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4gPiA+DQo+ID4gPg0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpUHJvYmVFeHRlbnNpb24gKA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBJTiAgSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNp b25JZCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgT1VUIElOVE4gICAgICAgICAgICAgICAgICAg ICAgICAqUHJvYmVSZXN1bHQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAo U0JJX0VYVF9CQVNFLA0KPiA+ID4gU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMCk7DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICpQcm9iZVJlc3VsdCA9IChVSU5UTilSZXQuVmFsdWU7DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQgdGhlIENQVSdzIHZlbmRvciBJRA0K PiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFJlYWRzIHRoZSBt dmVuZG9yaWQgQ1NSLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIEBwYXJhbVtvdXRdIE1hY2hpbmVWZW5kb3JJZCAgICAgIFRoZSBDUFUncyB2ZW5kb3IgSUQu DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQNCj4g PiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0TWFj aGluZVZlbmRvcklkICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAqTWFjaGluZVZlbmRvcklkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU2JpUmV0IFJl dCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwNCj4gPiA+IFNCSV9FWFRfQkFTRV9HRVRfTVZFTkRP UklELCAwKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKk1hY2hpbmVWZW5kb3JJZCA9IChVSU5U TilSZXQuVmFsdWU7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQg dGhlIENQVSdzIGFyY2hpdGVjdHVyZSBJRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIFJlYWRzIHRoZSBtYXJjaGlkIENTUi4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBNYWNoaW5lQXJjaElkICAg ICAgICBUaGUgQ1BVJ3MNCj4gPiA+IGFyY2hpdGVjdHVyZSBJRC4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArVk9JRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr RUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlHZXRNYWNoaW5lQXJjaElkICgNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqTWFjaGlu ZUFyY2hJZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICApDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt7 DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JB U0UsDQo+ID4gPiBTQklfRVhUX0JBU0VfR0VUX01BUkNISUQsIDApOw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAqTWFjaGluZUFyY2hJZCA9IChVSU5UTilSZXQuVmFsdWU7DQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8q Kg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQgdGhlIENQVSdzIGFyY2hpdGVjdHVyZSBJRA0K PiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFJlYWRzIHRoZSBt YXJjaGlkIENTUi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBAcGFyYW1bb3V0XSBNYWNoaW5lSW1wbElkICAgICAgICBUaGUgQ1BVJ3MNCj4gPiA+IGltcGxl bWVudGF0aW9uIElELg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICtWT0lEDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gK1NiaUdldE1hY2hpbmVJbXBsSWQgKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBPVVQgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICpNYWNoaW5lSW1wbElkDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg U2JpUmV0IFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwNCj4gPiA+IFNCSV9FWFRfQkFTRV9H RVRfTUlNUElELCAwKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKk1hY2hpbmVJbXBsSWQgPSAo VUlOVE4pUmV0LlZhbHVlOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArfQ0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLy8g U0JJIGludGVyZmFjZSBmdW5jdGlvbiBmb3IgdGhlIGhhcnQgc3RhdGUgbWFuYWdlbWVudA0KPiA+ ID4gZXh0ZW5zaW9uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgUG9s aXRlbHkgYXNrIHRoZSBTQkkgdG8gc3RhcnQgYSBnaXZlbiBoYXJ0Lg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoaXMgY2FsbCBtYXkgcmV0dXJuIGJlZm9y ZSB0aGUgaGFydCBoYXMgYWN0dWFsbHkNCj4gPiA+IHN0YXJ0ZWQgZXhlY3V0aW5nLCBpZiB0aGUN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU0JJIGltcGxlbWVudGF0aW9uIGNhbiBndWFyYW50ZWUg dGhhdCB0aGUgaGFydCBpcw0KPiA+ID4gYWN0dWFsbHkgZ29pbmcgdG8gc3RhcnQuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQmVmb3JlIHRoZSBoYXJ0IGp1 bXBzIHRvIFN0YXJ0QWRkciwgdGhlIGhhcnQgTVVTVA0KPiA+ID4gY29uZmlndXJlIFBNUCBpZiBw cmVzZW50DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIGFuZCBzd2l0Y2ggdG8gUy1tb2RlLg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhh cnRJZCAgICAgICAgICAgICAgIFRoZSBpZCBvZiB0aGUgaGFydA0KPiA+ID4gdG8gc3RhcnQuDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFN0YXJ0QWRkciAgICAgICAgICAgIFRo ZSBwaHlzaWNhbA0KPiA+ID4gYWRkcmVzcywgd2hlcmUgdGhlIGhhcnQgc3RhcnRzDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGlu ZyBmcm9tLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBQcml2ICAgICAgICAg ICAgICAgICBBbiBYTEVOLWJpdCB2YWx1ZSwNCj4gPiA+IHdoaWNoIHdpbGwgYmUgaW4gcmVnaXN0 ZXINCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYTEgd2hlbiB0aGUgaGFydA0KPiA+ID4gc3RhcnRzLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBIYXJ0IHdhcyBzdG9wcGVkIGFuZA0K PiA+ID4gd2lsbCBzdGFydCBleGVjdXRpbmcgZnJvbSBTdGFydEFkZHIuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBpcyBu b3QNCj4gPiA+IHZhbGlkLCBwb3NzaWJseSBkdWUgdG8gZm9sbG93aW5nIHJlYXNvbnM6DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJ dCBpcyBub3QgYQ0KPiA+ID4gdmFsaWQgcGh5c2ljYWwgYWRkcmVzcy4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoZSBhZGRyZXNz IGlzDQo+ID4gPiBwcm9oaWJpdGVkIGJ5IFBNUCB0byBydW4gaW4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVydmlzb3IgbW9k ZS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIg ICAgSGFydElkIGlzIG5vdCBhDQo+ID4gPiB2YWxpZCBoYXJ0IGlkDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgIFRoZSBoYXJ0IGlzIGFscmVh ZHkNCj4gPiA+IHJ1bm5pbmcuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgb3RoZXIg ICAgICAgICAgICAgICAgICAgIFRoZSBzdGFydCByZXF1ZXN0DQo+ID4gPiBmYWlsZWQgZm9yIHVu a25vd24gcmVhc29ucy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICtTYmlIYXJ0U3RhcnQgKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnRJZCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpdg0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICApDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt7DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsICgNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgU0JJX0VYVF9IU00sDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgIFNCSV9FWFRfSFNNX0hBUlRfU1RBUlQsDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICAgICAgICAgICAgIDMsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAg ICAgICAgIEhhcnRJZCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgU3Rh cnRBZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBQcml2DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIHJldHVybiBUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gK30NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFJldHVybiBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgaGFy dCB0byBTQkkuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg TVVTVCBiZSBjYWxsZWQgaW4gUy1Nb2RlIHdpdGggdXNlciBpbnRlcnJ1cHRzDQo+ID4gPiBkaXNh YmxlZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhpcyBjYWxsIGlzIG5vdCBleHBlY3RlZCB0 byByZXR1cm4sIHVubGVzcyBhIGZhaWx1cmUNCj4gPiA+IG9jY3Vycy4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsICAgICBFRklfU1VDQ0VTUyAg ICAgICAgICBOZXZlciBvY2N1cnMuIFdoZW4NCj4gPiA+IHN1Y2Nlc3NmdWwsIHRoZSBjYWxsIGRv ZXMgbm90IHJldHVybi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCAgICAgb3RoZXIg ICAgICAgICAgICAgICAgRmFpbGVkIHRvIHN0b3AgaGFyZA0KPiA+ID4gZm9yIGFuIHVua25vd24g cmVhc29uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtF RklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gK1NiaUhhcnRTdG9wICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAo U0JJX0VYVF9IU00sDQo+ID4gPiBTQklfRVhUX0hTTV9IQVJUX1NUT1AsIDApOw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICByZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcik7DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBHZXQgdGhlIGN1cnJlbnQgc3RhdHVzIG9m IGEgaGFydC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBT aW5jZSBoYXJ0cyBjYW4gdHJhbnNpdGlvbiBiZXR3ZWVuIHN0YXRlcyBhdCBhbnkNCj4gPiA+IHRp bWUsIHRoZSBzdGF0dXMgcmV0cmlldmVkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIGJ5IHRoaXMg ZnVuY3Rpb24gbWF5IGFscmVhZHkgYmUgb3V0IG9mIGRhdGUsIG9uY2UgaXQNCj4gPiA+IHJldHVy bnMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgUG9zc2li bGUgdmFsdWVzIGZvciBIYXJ0U3RhdHVzIGFyZToNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgMDog U1RBUlRFRA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAxOiBTVE9QUEVEDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIDI6IFNUQVJUX1JFUVVFU1RfUEVORElORw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICAzOiBTVE9QX1JFUVVFU1RfUEVORElORw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEhhcnRTdGF0dXMgICAgICAgICAgIFRoZSBwb2lu dGVyIGluIHdoaWNoDQo+ID4gPiB0aGUgaGFydCdzIHN0YXR1cyBpcw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZWQuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIFRoZSBvcGVy YXRpb24NCj4gPiA+IHN1Y2NlZWRzLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgICBBIHBhcmFtZXRlciBpcw0KPiA+ID4gaW52YWxpZC4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlIYXJ0 R2V0U3RhdHVzICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXJ0SWQsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIE9VVCBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAqSGFydFN0YXR1cw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICApDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFNiaVJl dCBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0hTTSwNCj4gPiA+IFNCSV9FWFRfSFNNX0hBUlRfR0VU X1NUQVRVUywgMSwgSGFydElkKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBpZiAoIVJldC5FcnJvcikgew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICpI YXJ0U3RhdHVzID0gKFVJTlROKVJldC5WYWx1ZTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgfQ0K PiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIHJldHVybiBUcmFu c2xhdGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK30NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIENsZWFyIHBlbmRpbmcgdGltZXIgaW50ZXJydXB0IGJpdCBhbmQgc2V0IHRpbWVyIGZv cg0KPiA+ID4gbmV4dCBldmVudCBhZnRlciBUaW1lLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRvIGNsZWFyIHRoZSB0aW1lciB3aXRob3V0IHNjaGVkdWxp bmcgYSB0aW1lciBldmVudCwNCj4gPiA+IHNldCBUaW1lIHRvIGENCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgcHJhY3RpY2FsbHkgaW5maW5pdGUgdmFsdWUgb3IgbWFzayB0aGUgdGltZXINCj4gPiA+ IGludGVycnVwdCBieSBjbGVhcmluZyBzaWUuU1RJRS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBUaW1lICAgICAgICAgICAgICAgICBU aGUgdGltZSBvZmZzZXQgdG8NCj4gPiA+IHRoZSBuZXh0IHNjaGVkdWxlZCB0aW1lciBpbnRlcnJ1 cHQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1ZPSUQN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpU2V0 VGltZXIgKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICAgICAgIFRpbWUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBTYmlDYWxsIChTQklfRVhUX1RJTUUsIFNC SV9FWFRfVElNRV9TRVRfVElNRVIsIDEsDQo+ID4gPiBUaW1lKTsNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gK30NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NU QVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtT YmlTZW5kSXBpICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBT YmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAg ICAgIFNCSV9FWFRfSVBJLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBT QklfRVhUX0lQSV9TRU5EX0lQSSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAg ICAgMiwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKFVJTlROKUhhcnRN YXNrLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsv KioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHJlbW90ZSBoYXJ0cyB0byBleGVj dXRlIGEgRkVOQ0UuSQ0KPiA+ID4gaW5zdHJ1Y3Rpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2sgICAgICAgICAgICAg U2NhbGFyIGJpdC12ZWN0b3INCj4gPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0YXJ0aW5n IGhhcnRpZA0KPiA+ID4gZnJvbSB3aGljaCB0aGUgYml0LXZlY3Rvcg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IGJlIGNvbXB1dGVk LiBJZg0KPiA+ID4gc2V0IHRvIC0xLCBIYXJ0TWFzayBpcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGFuZCBhbGwNCj4gPiA+ IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFy Z2V0ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSICAgIEVpdGhlcg0KPiA+ID4gaGFydF9tYXNrX2Jhc2Ugb3IgYW55IG9mIHRoZSBo YXJ0aWQNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZnJvbSBoYXJ0X21hc2sgaXMNCj4gPiA+IG5vdCB2YWxpZCBpLmUuIGVpdGhlciB0aGUN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aGFydGlkIGlzIG5vdA0KPiA+ID4gZW5hYmxlZCBieSB0aGUgcGxhdGZvcm0gb3IgaXMNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGF2 YWlsYWJsZSB0byB0aGUNCj4gPiA+IHN1cGVydmlzb3IuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsq Ki8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+DQo+ID4gPg0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpUmVtb3RlRmVuY2VJICgNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFz aywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICBIYXJ0TWFza0Jhc2UNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAo DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBTQklfRVhUX1JGRU5DRV9SRU1P VEVfRkVOQ0VfSSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgMiwNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKFVJTlROKUhhcnRNYXNrLA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg cmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr fQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0ZSBv bmUgb3IgbW9yZQ0KPiA+ID4gU0ZFTkNFLlZNQSBpbnN0cnVjdGlvbnMuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgVGhlIFNGRU5DRS5WTUEgY292ZXJzIHRo ZSByYW5nZSBvZiB2aXJ0dWFsIGFkZHJlc3Nlcw0KPiA+ID4gYmV0d2VlbiBTdGFydEFhZGRyIGFu ZCBTaXplLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRo ZSByZW1vdGUgZmVuY2UgZnVuY3Rpb24gYWN0cyBhcyBhIGZ1bGwgdGxiIGZsdXNoIGlmDQo+ID4g PiAqIFN0YXJ0QWRkciBhbmQgc2l6ZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBhcmUgYm90aCAw ICogc2l6ZSBpcyBlcXVhbCB0byAyXlhMRU4tMQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrICAgICAgICAgICAgIFNjYWxh ciBiaXQtdmVjdG9yDQo+ID4gPiBjb250YWluaW5nIGhhcnQgaWRzDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gIEhhcnRNYXNrQmFzZSAgICAgICAgIFRoZSBzdGFydGluZyBoYXJ0 aWQNCj4gPiA+IGZyb20gd2hpY2ggdGhlIGJpdC12ZWN0b3INCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSBjb21wdXRlZC4gSWYN Cj4gPiA+IHNldCB0byAtMSwgSGFydE1hc2sgaXMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZCBhbmQgYWxsDQo+ID4gPiBoYXJ0 cyBhcmUgY29uc2lkZXJlZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU3Rh cnRBZGRyICAgICAgICAgICAgVGhlIGZpcnN0IGFkZHJlc3Mgb2YNCj4gPiA+IHRoZSBhZmZlY3Rl ZCByYW5nZS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgU2l6ZSAgICAgICAg ICAgICAgICAgSG93IG1hbnkgYWRkcmVzc2VzDQo+ID4gPiBhcmUgYWZmZWN0ZWQuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgIElQSSB3YXMg c2VudCB0byBhbGwNCj4gPiA+IHRoZSB0YXJnZXRlZCBoYXJ0cy4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgQHJldHZhbCBFRklfTE9BRF9FUlJPUiAgICAgICAgICAgU3RhcnRBZGRyIG9yIFNpemUg aXMNCj4gPiA+IG5vdCB2YWxpZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkg b2YgdGhlIGhhcnRpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0 aGVyIHRoZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBp cw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlSZW1vdGVTZmVuY2VWbWEg KA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgKkhhcnRNYXNrLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4g IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydEFkZHIsDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZQ0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICApDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt7DQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgU0JJX0VYVF9SRkVOQ0UsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFX1JFTU9URV9TRkVOQ0VfVk1BLA0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICA0LA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgICAoVUlOVE4pSGFydE1hc2ssDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgU3RhcnRBZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAg ICBTaXplDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIHJldHVybiBUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKTsNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gK30NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArLyoqDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEluc3RydWN0cyB0aGUgcmVtb3RlIGhh cnRzIHRvIGV4ZWN1dGUgb25lIG9yIG1vcmUNCj4gPiA+IFNGRU5DRS5WTUEgaW5zdHJ1Y3Rpb25z Lg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSBTRkVO Q0UuVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2YgdmlydHVhbCBhZGRyZXNzZXMNCj4gPiA+IGJldHdl ZW4gU3RhcnRBYWRkciBhbmQgU2l6ZS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQ292ZXJzIG9u bHkgdGhlIGdpdmVuIEFTSUQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgVGhlIHJlbW90ZSBmZW5jZSBmdW5jdGlvbiBhY3RzIGFzIGEgZnVsbCB0bGIgZmx1 c2ggaWYNCj4gPiA+ICogU3RhcnRBZGRyIGFuZCBzaXplDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg IGFyZSBib3RoIDAgKiBzaXplIGlzIGVxdWFsIHRvIDJeWExFTi0xDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2sgICAgICAg ICAgICAgU2NhbGFyIGJpdC12ZWN0b3INCj4gPiA+IGNvbnRhaW5pbmcgaGFydCBpZHMNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGFydE1hc2tCYXNlICAgICAgICAgVGhlIHN0 YXJ0aW5nIGhhcnRpZA0KPiA+ID4gZnJvbSB3aGljaCB0aGUgYml0LXZlY3Rvcg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IGJlIGNv bXB1dGVkLiBJZg0KPiA+ID4gc2V0IHRvIC0xLCBIYXJ0TWFzayBpcw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkIGFuZCBhbGwN Cj4gPiA+IGhhcnRzIGFyZSBjb25zaWRlcmVkLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFy YW1baW5dICBTdGFydEFkZHIgICAgICAgICAgICBUaGUgZmlyc3QgYWRkcmVzcyBvZg0KPiA+ID4g dGhlIGFmZmVjdGVkIHJhbmdlLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBT aXplICAgICAgICAgICAgICAgICBIb3cgbWFueSBhZGRyZXNzZXMNCj4gPiA+IGFyZSBhZmZlY3Rl ZC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg ICAgSVBJIHdhcyBzZW50IHRvIGFsbA0KPiA+ID4gdGhlIHRhcmdldGVkIGhhcnRzLg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9MT0FEX0VSUk9SICAgICAgICAgICBTdGFydEFk ZHIgb3IgU2l6ZSBpcw0KPiA+ID4gbm90IHZhbGlkLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBFaXRoZXINCj4gPiA+IGhhcnRfbWFza19i YXNlIG9yIGFueSBvZiB0aGUgaGFydGlkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGFydF9tYXNrIGlzDQo+ID4gPiBub3QgdmFs aWQgaS5lLiBlaXRoZXIgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhcnRpZCBpcyBub3QNCj4gPiA+IGVuYWJsZWQgYnkgdGhlIHBs YXRmb3JtIG9yIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUgdG8gdGhlDQo+ID4gPiBzdXBlcnZpc29yLg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK1NiaVJlbW90 ZVNmZW5jZVZtYUFzaWQgKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgKkhhcnRNYXNrLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEhhcnRNYXNrQmFzZSwNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydEFkZHIs DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgU2l6ZSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICBBc2lkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkNCj4gPiA+DQo+ID4gPg0K PiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNhbGwgKA0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBTQklfRVhUX1JGRU5DRSwNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgU0JJX0VYVF9SRkVOQ0VfUkVNT1RF X1NGRU5DRV9WTUFfQVNJRCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAg NSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKFVJTlROKUhhcnRNYXNr LA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgU2l6ZSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgQXNpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAg ICAgICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICByZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJl dC5FcnJvcik7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJbnN0cnVj dHMgdGhlIHJlbW90ZSBoYXJ0cyB0byBleGVjdXRlIG9uZSBvciBtb3JlDQo+ID4gPiBTRkVOQ0Uu R1ZNQSBpbnN0cnVjdGlvbnMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgVGhlIFNGRU5DRS5HVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2YgdmlydHVhbCBhZGRy ZXNzZXMNCj4gPiA+IGJldHdlZW4gU3RhcnRBYWRkciBhbmQgU2l6ZS4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgQ292ZXJzIG9ubHkgdGhlIGdpdmVuIFZNSUQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIFRoaXMgZnVuY3Rpb24gY2FsbCBpcyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+ID4gaW1w bGVtZW50aW5nIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMg YXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0KPiA+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTEN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5d ICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmlu ZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jh c2UgICAgICAgICBUaGUgc3RhcnRpbmcgaGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQt dmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlz DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4gaGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFN0YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBh ZGRyZXNzIG9mDQo+ID4gPiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0K PiA+ID4gYXJlIGFmZmVjdGVkLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFyZ2V0 ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1Ig ICAgICAgICAgIFN0YXJ0QWRkciBvciBTaXplIGlzDQo+ID4gPiBub3QgdmFsaWQuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2Vz IG5vdA0KPiA+ID4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gb3Igb25lDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQg aGFydHMNCj4gPiA+IGRvZXMgbm90IHN1cHBvcnQgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cGVydmlzb3INCj4gPiA+IGV4dGVu c2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9tIGhhcnRfbWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQg aXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxl IHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJ DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlSZW1vdGVIRmVuY2VHdm1hVm1pZCAoDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFydE1h c2ssDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFydE1hc2tCYXNlLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg SU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplLA0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIFZtaWQNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAg ICAgICAgICAgICBTQklfRVhUX1JGRU5DRV9SRU1PVEVfSEZFTkNFX0dWTUEsDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIDUsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIChVSU5UTilIYXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAg ICAgICAgICBTdGFydEFkZHIsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg IFNpemUsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIFZtaWQNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0 ZSBvbmUgb3IgbW9yZQ0KPiA+ID4gU0ZFTkNFLkdWTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSBTRkVOQ0UuR1ZNQSBjb3Zl cnMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ID4gPiBiZXR3ZWVuIFN0YXJ0QWFk ZHIgYW5kIFNpemUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbCBp cyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+ID4gaW1wbGVtZW50aW5nIHRoZSBoeXBlcnZpc29y IGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0K PiA+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgYXJlIGJv dGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBT Y2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmluZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2UgICAgICAgICBUaGUgc3RhcnRpbmcg aGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQu IElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4g aGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g IFN0YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBhZGRyZXNzIG9mDQo+ID4gPiB0aGUgYWZm ZWN0ZWQgcmFuZ2UuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAg ICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+ID4gYXJlIGFmZmVjdGVkLg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkg d2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFyZ2V0ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBvciBT aXplIGlzDQo+ID4gPiBub3QgdmFsaWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2VzIG5vdA0KPiA+ID4gaW1wbGVtZW50IHRo aXMgZnVuY3Rpb24gb3Igb25lDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQgaGFydHMNCj4gPiA+IGRvZXMgbm90IHN1 cHBvcnQgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh5cGVydmlzb3INCj4gPiA+IGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0 X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+ID4g bm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5 IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNv ci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NU QVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtT YmlSZW1vdGVIRmVuY2VHdm1hICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg SU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRB ZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgIFNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4g PiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArDQo+ID4gPiBTQklfRVhUX1JGRU5DRV9SRU1PVEVfSEZFTkNFX0dWTUFf Vk1JRCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgNCwNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKFVJTlROKUhhcnRNYXNrLA0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgU2l6ZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAg ICAgICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICByZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJl dC5FcnJvcik7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJbnN0cnVj dHMgdGhlIHJlbW90ZSBoYXJ0cyB0byBleGVjdXRlIG9uZSBvciBtb3JlDQo+ID4gPiBTRkVOQ0Uu VlZNQSBpbnN0cnVjdGlvbnMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgVGhlIFNGRU5DRS5HVk1BIGNvdmVycyB0aGUgcmFuZ2Ugb2YgdmlydHVhbCBhZGRy ZXNzZXMNCj4gPiA+IGJldHdlZW4gU3RhcnRBYWRkciBhbmQgU2l6ZS4NCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgQ292ZXJzIG9ubHkgdGhlIGdpdmVuIEFTSUQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIFRoaXMgZnVuY3Rpb24gY2FsbCBpcyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+ID4gaW1w bGVtZW50aW5nIHRoZSBoeXBlcnZpc29yIGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMg YXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0KPiA+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgYXJlIGJvdGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTEN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5d ICBIYXJ0TWFzayAgICAgICAgICAgICBTY2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmlu ZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jh c2UgICAgICAgICBUaGUgc3RhcnRpbmcgaGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQt dmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11c3QgYmUgY29tcHV0ZWQuIElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlz DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4gaGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFN0YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBh ZGRyZXNzIG9mDQo+ID4gPiB0aGUgYWZmZWN0ZWQgcmFuZ2UuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIFNpemUgICAgICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0K PiA+ID4gYXJlIGFmZmVjdGVkLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgICBJUEkgd2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFyZ2V0 ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1Ig ICAgICAgICAgIFN0YXJ0QWRkciBvciBTaXplIGlzDQo+ID4gPiBub3QgdmFsaWQuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2Vz IG5vdA0KPiA+ID4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24gb3Igb25lDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQg aGFydHMNCj4gPiA+IGRvZXMgbm90IHN1cHBvcnQgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cGVydmlzb3INCj4gPiA+IGV4dGVu c2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9tIGhhcnRfbWFzayBpcw0KPiA+ID4gbm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQg aXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxl IHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNvci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJ DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlSZW1vdGVIRmVuY2VWdm1hQXNpZCAoDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAqSGFydE1h c2ssDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgSGFydE1hc2tCYXNlLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg SU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplLA0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEFzaWQNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArew0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAg ICAgICAgICAgICBTQklfRVhUX1JGRU5DRV9SRU1PVEVfSEZFTkNFX1ZWTUEsDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIDUsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgIChVSU5UTilIYXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgSGFydE1hc2tCYXNlLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAg ICAgICAgICBTdGFydEFkZHIsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg IFNpemUsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIEFzaWQNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgcmV0dXJuIFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpOw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgSW5zdHJ1Y3RzIHRoZSByZW1vdGUgaGFydHMgdG8gZXhlY3V0 ZSBvbmUgb3IgbW9yZQ0KPiA+ID4gU0ZFTkNFLlZWTUEgaW5zdHJ1Y3Rpb25zLg0KPiA+ID4NCj4g PiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoZSBTRkVOQ0UuR1ZNQSBjb3Zl cnMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzDQo+ID4gPiBiZXR3ZWVuIFN0YXJ0QWFk ZHIgYW5kIFNpemUuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbCBp cyBvbmx5IHZhbGlkIGZvciBoYXJ0cw0KPiA+ID4gaW1wbGVtZW50aW5nIHRoZSBoeXBlcnZpc29y IGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBUaGUgcmVtb3RlIGZlbmNlIGZ1bmN0aW9uIGFjdHMgYXMgYSBmdWxsIHRsYiBmbHVzaCBpZg0K PiA+ID4gKiBTdGFydEFkZHIgYW5kIHNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgYXJlIGJv dGggMCAqIHNpemUgaXMgZXF1YWwgdG8gMl5YTEVOLTENCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFzayAgICAgICAgICAgICBT Y2FsYXIgYml0LXZlY3Rvcg0KPiA+ID4gY29udGFpbmluZyBoYXJ0IGlkcw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICBAcGFyYW1baW5dICBIYXJ0TWFza0Jhc2UgICAgICAgICBUaGUgc3RhcnRpbmcg aGFydGlkDQo+ID4gPiBmcm9tIHdoaWNoIHRoZSBiaXQtdmVjdG9yDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcHV0ZWQu IElmDQo+ID4gPiBzZXQgdG8gLTEsIEhhcnRNYXNrIGlzDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQgYW5kIGFsbA0KPiA+ID4g aGFydHMgYXJlIGNvbnNpZGVyZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g IFN0YXJ0QWRkciAgICAgICAgICAgIFRoZSBmaXJzdCBhZGRyZXNzIG9mDQo+ID4gPiB0aGUgYWZm ZWN0ZWQgcmFuZ2UuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFNpemUgICAg ICAgICAgICAgICAgIEhvdyBtYW55IGFkZHJlc3Nlcw0KPiA+ID4gYXJlIGFmZmVjdGVkLg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBJUEkg d2FzIHNlbnQgdG8gYWxsDQo+ID4gPiB0aGUgdGFyZ2V0ZWQgaGFydHMuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIEByZXR2YWwgRUZJX0xPQURfRVJST1IgICAgICAgICAgIFN0YXJ0QWRkciBvciBT aXplIGlzDQo+ID4gPiBub3QgdmFsaWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgICAgIFNCSSBkb2VzIG5vdA0KPiA+ID4gaW1wbGVtZW50IHRo aXMgZnVuY3Rpb24gb3Igb25lDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQgaGFydHMNCj4gPiA+IGRvZXMgbm90IHN1 cHBvcnQgdGhlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh5cGVydmlzb3INCj4gPiA+IGV4dGVuc2lvbi4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICAgRWl0aGVyDQo+ID4gPiBoYXJ0 X21hc2tfYmFzZSBvciBhbnkgb2YgdGhlIGhhcnRpZA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhhcnRfbWFzayBpcw0KPiA+ID4g bm90IHZhbGlkIGkuZS4gZWl0aGVyIHRoZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJ0aWQgaXMgbm90DQo+ID4gPiBlbmFibGVkIGJ5 IHRoZSBwbGF0Zm9ybSBvciBpcw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBub3QgYXZhaWxhYmxlIHRvIHRoZQ0KPiA+ID4gc3VwZXJ2aXNv ci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NU QVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtT YmlSZW1vdGVIRmVuY2VWdm1hICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgSU4gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICpIYXJ0TWFzaywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg SU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRB ZGRyLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgIFNpemUNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4g PiArew0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FWFRfUkZFTkNFLA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArDQo+ID4gPiBTQklfRVhUX1JGRU5DRV9SRU1PVEVfSEZFTkNFX1ZWTUFf QVNJRCwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgNCwNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgKFVJTlROKUhhcnRNYXNrLA0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICBIYXJ0TWFza0Jhc2UsDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgICAgICAgICAgICAgICAgIFN0YXJ0QWRkciwNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgU2l6ZQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAg ICAgICApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICByZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJl dC5FcnJvcik7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvLyBTQkkgaW50 ZXJmYWNlIGZ1bmN0aW9uIGZvciB0aGUgdmVuZG9yIGV4dGVuc2lvbg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArLy8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArLyoq DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIENhbGwgYSBmdW5jdGlvbiBpbiBhIHZlbmRvciBkZWZp bmVkIFNCSSBleHRlbnNpb24NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBBU1NFUlQoKSBpZiB0aGUgRXh0ZW5zaW9uSWQgaXMgbm90IGluIHRoZSBkZXNpZ25h dGVkDQo+ID4gPiBTQkkgVmVuZG9yIEV4dGVuc2lvbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBT cGFjZSBvciBOdW1BcmdzIGV4Y2VlZHMgU0JJX0NBTExfTUFYX0FSR1MuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRXh0ZW5zaW9uSWQg ICAgICAgICAgVGhlIFNCSSB2ZW5kb3INCj4gPiA+IGV4dGVuc2lvbiBJRC4NCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRnVuY3Rpb25JZCAgICAgICAgICAgVGhlIGZ1bmN0aW9u IElEIHRvDQo+ID4gPiBjYWxsIGluIHRoaXMgZXh0ZW5zaW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBAcGFyYW1baW5dICBOdW1BcmdzICAgICAgICAgICAgICBIb3cgbWFueSBhcmd1bWVudHMN Cj4gPiA+IGFyZSBwYXNzZWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIC4u LiAgICAgICAgICAgICAgICAgIEFjdHVhbCBBcmd1bWVudHMgdG8NCj4gPiA+IHRoZSBmdW5jdGlv bi4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyBpZiB0aGUgU0JJ IGZ1bmN0aW9uIHdhcyBjYWxsZWQNCj4gPiA+IGFuZCBpdCB3YXMgc3VjY2Vzc2Z1bA0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIG90aGVycyBpZiB0aGUgY2FsbGVkIFNCSSBmdW5jdGlv biByZXR1cm5zIGFuDQo+ID4gPiBlcnJvcg0KPiA+ID4NCj4gPiA+DQo+ID4gPiArKiovDQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICtFRklfU1RBVFVTDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtFRklBUEkN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gK1NiaVZlbmRvckNhbGwgKA0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuc2lvbklkLA0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEZ1 bmN0aW9uSWQsDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgTnVtQXJncywNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgLi4uDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgICBTYmlSZXQgUmV0Ow0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIFZBX0xJU1Qg QXJnczsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBWQV9TVEFSVCAoQXJncywgTnVtQXJncyk7 DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBBU1NFUlQg KEV4dGVuc2lvbklkID49IFNCSV9FWFRfVkVORE9SX1NUQVJUICYmDQo+ID4gPiBFeHRlbnNpb25J ZCA8PSBTQklfRVhUX1ZFTkRPUl9FTkQpOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIEFTU0VS VCAoTnVtQXJncyA8PSBTQklfQ0FMTF9NQVhfQVJHUyk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBzd2l0Y2ggKE51bUFyZ3MpIHsNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgICAgIGNhc2UgMDoNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgUmV0 ID0gU2JpQ2FsbCAoRXh0ZW5zaW9uSWQsIEZ1bmN0aW9uSWQsDQo+ID4gPiBOdW1BcmdzKTsNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsg ICAgICBjYXNlIDE6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgIFJldCA9IFNiaUNhbGwg KEV4dGVuc2lvbklkLCBGdW5jdGlvbklkLA0KPiA+ID4gTnVtQXJncywgVkFfQVJHIChBcmdzLCBV SU5UTikpOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICBicmVhazsNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgICAgIGNhc2UgMjoNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgUmV0 ID0gU2JpQ2FsbCAoRXh0ZW5zaW9uSWQsIEZ1bmN0aW9uSWQsDQo+ID4gPiBOdW1BcmdzLCBWQV9B UkcgKEFyZ3MsIFVJTlROKSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgVkFfQVJHIChBcmdzLCBVSU5UTikpOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAg ICBicmVhazsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgIGNhc2UgMzoNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgICAgICAgUmV0ID0gU2JpQ2FsbCAoRXh0ZW5zaW9uSWQsIEZ1bmN0aW9uSWQs DQo+ID4gPiBOdW1BcmdzLCBWQV9BUkcgKEFyZ3MsIFVJTlROKSwNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgVkFfQVJHIChBcmdzLCBVSU5UTiksIFZBX0FSRw0K PiA+ID4gKEFyZ3MsIFVJTlROKSk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgIGJyZWFr Ow0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgY2FzZSA0Og0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICAgICAgICBSZXQgPSBTYmlDYWxsIChFeHRlbnNpb25JZCwgRnVuY3Rpb25JZCwNCj4gPiA+ IE51bUFyZ3MsIFZBX0FSRyAoQXJncywgVUlOVE4pLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICBWQV9BUkcgKEFyZ3MsIFVJTlROKSwgVkFfQVJHDQo+ID4gPiAo QXJncywgVUlOVE4pLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICBWQV9BUkcgKEFyZ3MsIFVJTlROKSk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgIGJy ZWFrOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgY2FzZSA1Og0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICAgICAgICBSZXQgPSBTYmlDYWxsIChFeHRlbnNpb25JZCwgRnVuY3Rpb25JZCwNCj4g PiA+IE51bUFyZ3MsIFZBX0FSRyAoQXJncywgVUlOVE4pLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBWQV9BUkcgKEFyZ3MsIFVJTlROKSwgVkFfQVJHDQo+ID4g PiAoQXJncywgVUlOVE4pLA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICBWQV9BUkcgKEFyZ3MsIFVJTlROKSwgVkFfQVJHDQo+ID4gPiAoQXJncywgVUlOVE4pKTsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ ICsgICAgICBjYXNlIDY6DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgIFJldCA9IFNiaUNh bGwgKEV4dGVuc2lvbklkLCBGdW5jdGlvbklkLA0KPiA+ID4gTnVtQXJncywgVkFfQVJHIChBcmdz LCBVSU5UTiksDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFZB X0FSRyAoQXJncywgVUlOVE4pLCBWQV9BUkcNCj4gPiA+IChBcmdzLCBVSU5UTiksDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIFZBX0FSRyAoQXJncywgVUlOVE4p LCBWQV9BUkcNCj4gPiA+IChBcmdzLCBVSU5UTiksDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIFZBX0FSRyAoQXJncywgVUlOVE4pKTsNCj4gPiA+DQo+ID4gPg0K PiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICBkZWZhdWx0 Og0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgICAgICAvLyBUb28gbWFueSBhcmdzLiBJbiB0aGVv cnkgU0JJIGNhbiBoYW5kbGUgbW9yZQ0KPiA+ID4gYXJndW1lbnRzIHdoZW4gdGhleSBhcmUNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgLy8gcGFzc2VkIG9uIHRoZSBzdGFjayBidXQgbm8g U0JJIGV4dGVuc2lvbg0KPiA+ID4gdXNlcyB0aGlzLCB0aGVyZWZvcmUgaXQncw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgICAgICAvLyBub3QgeWV0IGltcGxlbWVudGVkIGhlcmUuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsgICAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICAgIFZBX0VORChBcmdzKTsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICBy ZXR1cm4gVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcik7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9 DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8vDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsvLyBTQkkgRmlybXdhcmUgZXh0ZW5zaW9uDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsvLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgR2V0IHNjcmF0Y2ggc3BhY2Ugb2YgdGhlIGN1cnJlbnQg aGFydC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBQbGVh c2UgY29uc2lkZXIgdXNpbmcgdGhlIHdyYXBwZXINCj4gPiA+IFNiaUdldEZpcm13YXJlQ29udGV4 dCBpZiB5b3Ugb25seSBuZWVkIHRvDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIGFjY2VzcyB0aGUg ZmlybXdhcmUgY29udGV4dC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBAcGFyYW1bb3V0XSBTY3JhdGNoU3BhY2UgICAgICAgICBUaGUgc2NyYXRjaCBzcGFj ZQ0KPiA+ID4gcG9pbnRlci4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbg0KPiA+ID4gc3VjY2VlZHMuDQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSV9TVEFUVVMNCj4gPiA+ DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArU2JpR2V0TXNjcmF0 Y2ggKA0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBPVVQgU0JJX1NDUkFUQ0ggICAgICAgICAgICAg ICAgICAgICoqU2NyYXRjaFNwYWNlDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkNCj4gPiA+DQo+ ID4gPg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU2JpUmV0IFJldCA9IFNiaUNh bGwgKFNCSV9FREsyX0ZXX0VYVCwNCj4gPiA+IFNCSV9FWFRfRldfTVNDUkFUQ0hfRlVOQywgMCk7 DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgaWYgKCFSZXQu RXJyb3IpIHsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAqU2NyYXRjaFNwYWNlID0gKFNCSV9T Q1JBVENIICopUmV0LlZhbHVlOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICB9DQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ID4NCj4gPiA+DQo+ID4gPiArfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgR2V0IHNjcmF0Y2ggc3BhY2Ug b2YgdGhlIGdpdmVuIGhhcnQgaWQuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSGFydElkICAgICAgICAgICAgICAgVGhlIGhhcnQgaWQu DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIFNjcmF0Y2hTcGFjZSAgICAgICAg IFRoZSBzY3JhdGNoIHNwYWNlDQo+ID4gPiBwb2ludGVyLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgb3BlcmF0aW9uDQo+ID4gPiBz dWNjZWVkcy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr RUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICtTYmlHZXRNc2NyYXRjaEhhcnRpZCAoDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIElOICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXJ0SWQsDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgIE9VVCBTQklfU0NSQVRDSCAgICAgICAgICAgICAgICAgICAgKipTY3JhdGNoU3BhY2UN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgKQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiArew0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICBTYmlSZXQgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgICAgICAgICAgICAgIFNCSV9FREsyX0ZXX0VYVCwNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgU0JJX0VYVF9GV19NU0NSQVRDSF9IQVJUSURfRlVOQywNCj4g PiA+DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgMSwNCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgICAgICAgICAgICAgICAgSGFydElkDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAgICAg ICAgICAgICAgICk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4g KyAgaWYgKCFSZXQuRXJyb3IpIHsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgICAqU2NyYXRjaFNw YWNlID0gKFNCSV9TQ1JBVENIICopUmV0LlZhbHVlOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICB9 DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPiAr DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsvKioNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgR2V0IGZp cm13YXJlIGNvbnRleHQgb2YgdGhlIGNhbGxpbmcgaGFydC4NCj4gPiA+DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1bb3V0XSBGaXJtd2FyZUNvbnRleHQgICAg ICBUaGUgZmlybXdhcmUgY29udGV4dA0KPiA+ID4gcG9pbnRlci4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhlIG9wZXJhdGlvbg0KPiA+ ID4gc3VjY2VlZHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsqKi8NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gK0VGSV9TVEFUVVMNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArU2JpR2V0RmlybXdhcmVDb250ZXh0ICgNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAg T1VUIEVGSV9SSVNDVl9PUEVOU0JJX0ZJUk1XQVJFX0NPTlRFWFQNCj4gPiA+ICoqRmlybXdhcmVD b250ZXh0DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkNCj4gPiA+DQo+ID4gPg0KPiA+ID4gK3sN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU0JJX1NDUkFUQ0ggICpTY3JhdGNoU3BhY2U7DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgIFNCSV9QTEFURk9STSAqU2JpUGxhdGZvcm07DQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsIChTQklfRURLMl9GV19FWFQsDQo+ID4g PiBTQklfRVhUX0ZXX01TQ1JBVENIX0ZVTkMsIDApOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArDQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICsgIGlmICghUmV0LkVycm9yKSB7DQo+ID4gPg0KPiA+ID4NCj4g PiA+ICsgICAgU2NyYXRjaFNwYWNlID0gKFNCSV9TQ1JBVENIICopUmV0LlZhbHVlOw0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArICAgIFNiaVBsYXRmb3JtID0gKFNCSV9QTEFURk9STQ0KPiA+ID4gKilz YmlfcGxhdGZvcm1fcHRyKFNjcmF0Y2hTcGFjZSk7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICAg KkZpcm13YXJlQ29udGV4dCA9DQo+ID4gPiAoRUZJX1JJU0NWX09QRU5TQklfRklSTVdBUkVfQ09O VEVYVCAqKVNiaVBsYXRmb3JtLQ0KPiA+ID4gPmZpcm13YXJlX2NvbnRleHQ7DQo+ID4gPg0KPiA+ ID4NCj4gPiA+ICsgIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4g PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0K PiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+DQo+ ID4gPiArICBTZXQgZmlybXdhcmUgY29udGV4dCBvZiB0aGUgY2FsbGluZyBoYXJ0Lg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gRmlybXdh cmVDb250ZXh0ICAgICAgIFRoZSBmaXJtd2FyZSBjb250ZXh0DQo+ID4gPiBwb2ludGVyLg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUg b3BlcmF0aW9uDQo+ID4gPiBzdWNjZWVkcy4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyoqLw0KPiA+ ID4NCj4gPiA+DQo+ID4gPiArRUZJX1NUQVRVUw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArRUZJQVBJ DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICtTYmlTZXRGaXJtd2FyZUNvbnRleHQgKA0KPiA+ID4NCj4g PiA+DQo+ID4gPiArICBJTiBFRklfUklTQ1ZfT1BFTlNCSV9GSVJNV0FSRV9DT05URVhUDQo+ID4g PiAqRmlybXdhcmVDb250ZXh0DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgICkNCj4gPiA+DQo+ID4g Pg0KPiA+ID4gK3sNCj4gPiA+DQo+ID4gPg0KPiA+ID4gKyAgU0JJX1NDUkFUQ0ggICpTY3JhdGNo U3BhY2U7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFNCSV9QTEFURk9STSAqU2JpUGxhdGZvcm07 DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIFNiaVJldCBSZXQgPSBTYmlDYWxsIChTQklfRURLMl9G V19FWFQsDQo+ID4gPiBTQklfRVhUX0ZXX01TQ1JBVENIX0ZVTkMsIDApOw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIGlmICghUmV0LkVycm9yKSB7DQo+ID4g Pg0KPiA+ID4NCj4gPiA+ICsgICAgU2NyYXRjaFNwYWNlID0gKFNCSV9TQ1JBVENIICopUmV0LlZh bHVlOw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICAgIFNiaVBsYXRmb3JtID0gKFNCSV9QTEFURk9S TSAqKXNiaV9wbGF0Zm9ybV9wdHINCj4gPiA+IChTY3JhdGNoU3BhY2UpOw0KPiA+ID4NCj4gPiA+ DQo+ID4gPiArICAgIFNiaVBsYXRmb3JtLT5maXJtd2FyZV9jb250ZXh0ID0NCj4gPiA+IChVSU5U TilGaXJtd2FyZUNvbnRleHQ7DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICsgIH0NCj4gPiA+DQo+ID4g Pg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+DQo+ID4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4gPg0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ID4NCj4gPiA+IC0tDQo+ID4gPiAyLjI2 LjENCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gDQo+IA0KPiANCg0K