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.web10.516.1604384146429065945 for ; Mon, 02 Nov 2020 22:15:46 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=FDgeVanI; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0576d3f819=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 0A36AG7d007766; Tue, 3 Nov 2020 06:15:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=nw1VsD4DVS5bTMA1oj24SjvLIRjJoY+Q+ChR+dgmfu8=; b=FDgeVanIMIOR3af7dbuFGPWmTKWVVff5wrx6hf+v6egadI0w4u+mblf3SXyQoIOxeIUj JYirJSRvPYt5F4tavfHgt9Y9iHZjXy+lb5pXAwQTcYa9WHKeWpyGB86E6gbEisBCrlo7 6woPAMjKS6bgD0TT+5H+BrbATkyFzN793PL74o6YEzv+Kac3cbPvg21+DSUDQVRxGIIG gav/jpQRq4EOE9YW8zoVm/LjhbWKj1eWOtyzEE0C5pmlr1vO42mAIE+Y7EX3IeNS5wAA uxXM5RGPTUfCIdWSmcEwJ1BjT/rx0fdn56PNyw8EkSWgs/IjTLX6ygPUqsB0sD3uqM5s /w== Received: from g9t5008.houston.hpe.com (g9t5008.houston.hpe.com [15.241.48.72]) by mx0b-002e3701.pphosted.com with ESMTP id 34h17nmswy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 03 Nov 2020 06:15:45 +0000 Received: from G9W8453.americas.hpqcorp.net (exchangepmrr1.us.hpecorp.net [16.216.160.211]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5008.houston.hpe.com (Postfix) with ESMTPS id 884C953; Tue, 3 Nov 2020 06:15:44 +0000 (UTC) Received: from G2W6309.americas.hpqcorp.net (2002:10c5:4033::10c5:4033) by G9W8453.americas.hpqcorp.net (2002:10d8:a0d3::10d8:a0d3) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 3 Nov 2020 06:15:44 +0000 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (15.241.52.11) by G2W6309.americas.hpqcorp.net (16.197.64.51) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Tue, 3 Nov 2020 06:15:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YEnX+YHdQtygGRul60Qb1OayDXOlCLaB2ZjUv0q3LQJoYeowkdNlqINKrhP0MZrePFil6cVM0zWbFMmBKeaDFSDeoe6ATf7kNY55uAmpDgEgl2zWfKJkGF9TA6arVhKI+NOgFMl447nbbnS+Bg2iDpU3NXMUBkmneFQkx2kMalQ4lyif8VzCBrtZA2Tzoi103in0C9T47Fdhj80xVwK3sPKYTlENhfOsJ/jJJaw/pu2cvPIXBFrOPO0kETvt8f8DMtiZjexY28o4EuX95qz9qOw42HNrN1yTwJ2pxbxgTy4LRIWZoVTBYNuVZa12D98F6U3IkW2lgXIIVAemN4RbuA== 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=rkYqAuL2I1rV6vtNn4fZuU9Ls9OXy5oBzb/X51mMoZ0=; b=dmO77gbiqHiN0shBH5oKiftzCtRcgkWEJ/pT+v6YxbLhd+ww7gAJJjPYUGEb8Gxl3FBeOGfFCfmUxBu+1f/A82v7WUh9lCLKazqFulPZOEbGx61iTk0+3oAhgKgW8S2M8MXT3K2tVPo8h6HbYQ1B0nnKob/1uZ/6HJh5P3ZDxi+1JuX2hOt47ZzFDIbfuCUwP+D2U2nHDUMkzriuT/H87h2Uu/zHVfHhsLJE/bMg1ppwMSCV5r5nDfbr9F4ToFNpGrxcMvu16Kqyz7Q4KdYcpYmAoKPbb5DOjxA3e4HV1ZEF/hBVkcQ2fbu1SzZLU8KradTknacTmZZ3f+4PiB6qpA== 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 CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0469.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7507::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18; Tue, 3 Nov 2020 06:15:41 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::f4a5:2722:be1c:7222]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::f4a5:2722:be1c:7222%6]) with mapi id 15.20.3499.030; Tue, 3 Nov 2020 06:15:41 +0000 From: "Abner Chang" To: "Rabeda, Maciej" , "devel@edk2.groups.io" CC: Jiaxin Wu , Siyuan Fu , "Wang, Nickle (HPS SW)" Subject: Re: [edk2-devel] [DxeHttpIoLib PATCH V2 1/3] NetworkPkg/Library: Implementation of Http IO Helper Library Thread-Topic: [edk2-devel] [DxeHttpIoLib PATCH V2 1/3] NetworkPkg/Library: Implementation of Http IO Helper Library Thread-Index: AQHWqVkEIIf+aozq3EiZb39ZTth0kqmpI2IggAQ57ICAAL9XAIAGvgQAgAARZrCAABAUgIABAdWA Date: Tue, 3 Nov 2020 06:15:40 +0000 Message-ID: References: <20201020023848.3015-1-abner.chang@hpe.com> <20201020023848.3015-2-abner.chang@hpe.com> <036e09c1-d1c8-8d8b-44fb-7f252ccf1bad@linux.intel.com> <909b9d7b-9018-fe0a-a9f7-f6477403f84d@linux.intel.com> <607b3aa1-8191-cb2e-daae-a693d5c8996b@linux.intel.com> In-Reply-To: <607b3aa1-8191-cb2e-daae-a693d5c8996b@linux.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linux.intel.com; dkim=none (message not signed) header.d=none;linux.intel.com; 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: 2ba800ad-aa77-47cb-11b5-08d87fbfe3fc x-ms-traffictypediagnostic: CS1PR8401MB0469: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7itCqxUJ9MdhRSS04hk6SWt1MMcjXSMs/C3nndz6ioBamWy9vsi8n0vkGfUIuEK3M2NwqYS+6IikiO0G+l4u0CWIXv5kQ6I3TsHq6El/r0XmahuoDqqeN4KyBcb5KqIRbJ3R0X0/HNIgrGM4tA+ZSUJmUMzr+jT6LLY41BkvfaEKVJBq+/KeSlYQRSkYhsEc3YYO0gDYMekeZOmNWxzA+vNkZEJYPtMzrArzdC098e7s+5AUIIRd8XmSrcLnfNTqVZrSMcA+dFkupDNHwLeY7gpyPgT6hCVW3hJxpmDcE8QRsZ3xCD9jcmHDRr3UtAWD1/8GVL3TC3MO/eHkXk5RK/dAB/t+WMEiWJ2WMqQqPvyL8UGssaxv2dENy9Tbzgc6WXRCYNwvXqIFY+m0p2iHFA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(6029001)(39860400002)(376002)(366004)(136003)(396003)(346002)(30864003)(55016002)(9686003)(26005)(53546011)(66946007)(64756008)(66476007)(6506007)(54906003)(66556008)(76116006)(5660300002)(110136005)(66446008)(19627235002)(4326008)(316002)(2906002)(71200400001)(8676002)(966005)(8936002)(52536014)(86362001)(83380400001)(33656002)(478600001)(7696005)(186003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: CieXShG7qP+3Jka60QWk7qzLUplAdqtJ7EQaZJRKR13wWnH0ZzMEQo0fM91E2Mum9xXC5luSTKTi0oe3n12NEcsSdN7dxK5RljuPntGjFs4CoaY7HpjLDW5LA9M+vT9XusHqknknPVD3Jnuc7O2a01QFB0BCVn/Bx8MbQpk8ObOKa/s7sk/YTcD/zqJA0cXlbybQaMqrVAQ8dGMWIbBOmW9hgpOr0l3qa3JbM/lhafBJUVNFpoSuDOzfpuf/Nlx2gDrutOA93rZOm3kn8TP7mBA2w+Sf1YVCXB15xts+RlKiVewQlFMy2cMynfEFDD11PsbwnNml522SWPE3RSMid/FQ7DLTx1ZwXApMAaL71K7URSH9p6aEM6L8GszjYzz1DJ5oeynoc+sWrSoZHi04Ay5ild5Es+BsMQl7FIkh1cp4XGeTUFR/oQ0SPkJri+1PTq4CJemJivkvRsw65SLaIzxHfINECmlPbXn/NoAqNT2CjoFD2z9xOFSkdLl/DJo84H1EEBaoVqDDAp6zp9HIWtLwCgn6wdRHRpYe5Kmoaryhlbq2ChfQwPN3NniZJo3+EyKWa/YgsrteZ0WjEWQqnVcwgdnlwMD4O8RZBOilEkv01oPSz5jBBe19FDnmxv5hgqxVAPb8esy+JR4SM2nBkA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 2ba800ad-aa77-47cb-11b5-08d87fbfe3fc X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Nov 2020 06:15:40.8726 (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: v+x/1jV11969IutOKVNpJOeOSJZHP+362sRzCdsya4Z9aBTB7lvmmb1BS2qvwRIVe1XpAVN3xbgvBE9AICh/Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0469 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.312,18.0.737 definitions=2020-11-03_02:2020-11-02,2020-11-03 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 mlxscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 adultscore=0 spamscore=0 impostorscore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2011030046 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T2suIEkgY3JlYXRlZCBhIFBDRCB1bmRlciBOZXR3b3JrUGtnIGZvciB0aGUgbWF4aW11bSBzaXpl IG9mIEhUVFAgY2h1bmsgdHJhbnNmZXIgcGF5bG9hZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgc2V0 IHRvIDEyIE1CIGFzIHRoZSBoZXggdmFsdWUgbG9va3MgbmljZXIgOikuDQpWNSBwYXRjaCBzZW50 Lg0KDQpUaGFua3MNCkFibmVyDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogUmFiZWRhLCBNYWNpZWogW21haWx0bzptYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbV0N Cj4gU2VudDogTW9uZGF5LCBOb3ZlbWJlciAyLCAyMDIwIDEwOjUwIFBNDQo+IFRvOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbzsgQ2hhbmcsIEFibmVyIChIUFMgU1cvRlcgVGVjaG5vbG9naXN0KQ0KPiA8 YWJuZXIuY2hhbmdAaHBlLmNvbT4NCj4gQ2M6IEppYXhpbiBXdSA8amlheGluLnd1QGludGVsLmNv bT47IFNpeXVhbiBGdSA8c2l5dWFuLmZ1QGludGVsLmNvbT47DQo+IFdhbmcsIE5pY2tsZSAoSFBT IFNXKSA8bmlja2xlLndhbmdAaHBlLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBb RHhlSHR0cElvTGliIFBBVENIIFYyIDEvM10gTmV0d29ya1BrZy9MaWJyYXJ5Og0KPiBJbXBsZW1l bnRhdGlvbiBvZiBIdHRwIElPIEhlbHBlciBMaWJyYXJ5DQo+IA0KPiANCj4gDQo+IE9uIDAyLU5v di0yMCAxNToxNCwgQWJuZXIgQ2hhbmcgd3JvdGU6DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogUmFiZWRhLCBNYWNpZWogW21haWx0bzptYWNpZWoucmFi ZWRhQGxpbnV4LmludGVsLmNvbV0NCj4gPj4gU2VudDogTW9uZGF5LCBOb3ZlbWJlciAyLCAyMDIw IDg6NTAgUE0NCj4gPj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGFuZywgQWJuZXIgKEhQ UyBTVy9GVyBUZWNobm9sb2dpc3QpDQo+ID4+IDxhYm5lci5jaGFuZ0BocGUuY29tPg0KPiA+PiBD YzogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50ZWwuY29tPjsgU2l5dWFuIEZ1IDxzaXl1YW4uZnVA aW50ZWwuY29tPjsNCj4gPj4gV2FuZywgTmlja2xlIChIUFMgU1cpIDxuaWNrbGUud2FuZ0BocGUu Y29tPg0KPiA+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtEeGVIdHRwSW9MaWIgUEFUQ0gg VjIgMS8zXQ0KPiBOZXR3b3JrUGtnL0xpYnJhcnk6DQo+ID4+IEltcGxlbWVudGF0aW9uIG9mIEh0 dHAgSU8gSGVscGVyIExpYnJhcnkNCj4gPj4NCj4gPj4gSGkgQWJuZXIsDQo+ID4+DQo+ID4+IENv bW1lbnRzIGlubGluZS4NCj4gPj4NCj4gPj4gVGhhbmtzLA0KPiA+PiBNYWNpZWoNCj4gPj4NCj4g Pj4gT24gMjktT2N0LTIwIDA3OjExLCBBYm5lciBDaGFuZyB3cm90ZToNCj4gPj4+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IFJhYmVkYSwgTWFjaWVqIFttYWlsdG86 bWFjaWVqLnJhYmVkYUBsaW51eC5pbnRlbC5jb21dDQo+ID4+Pj4gU2VudDogVGh1cnNkYXksIE9j dG9iZXIgMjksIDIwMjAgMjoyOCBBTQ0KPiA+Pj4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg Q2hhbmcsIEFibmVyIChIUFMgU1cvRlcgVGVjaG5vbG9naXN0KQ0KPiA+Pj4+IDxhYm5lci5jaGFu Z0BocGUuY29tPg0KPiA+Pj4+IENjOiBKaWF4aW4gV3UgPGppYXhpbi53dUBpbnRlbC5jb20+OyBT aXl1YW4gRnUgPHNpeXVhbi5mdUBpbnRlbC5jb20+Ow0KPiA+Pj4+IFdhbmcsIE5pY2tsZSAoSFBT IFNXKSA8bmlja2xlLndhbmdAaHBlLmNvbT4NCj4gPj4+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2 ZWxdIFtEeGVIdHRwSW9MaWIgUEFUQ0ggVjIgMS8zXQ0KPiA+PiBOZXR3b3JrUGtnL0xpYnJhcnk6 DQo+ID4+Pj4gSW1wbGVtZW50YXRpb24gb2YgSHR0cCBJTyBIZWxwZXIgTGlicmFyeQ0KPiA+Pj4+ DQo+ID4+Pj4gVGhhbmtzIGZvciBwYXRjaGluZyBzcGVsbGluZyBwcm9ibGVtcyBpbiBNZGVQa2cg aGVhZGVyLg0KPiA+Pj4+IEkgd2lsbCBzZW5kIG1vcmUgY29tbWVudHMgb24gdjMuIEFkZGVkIG9u ZSBoZXJlIHJlZ2FyZGluZyBjaHVuaw0KPiA+PiB0cmFuc2Zlcg0KPiA+Pj4+IHNlY3VyaXR5Lg0K PiA+Pj4+DQo+ID4+Pj4gVGhhbmtzLA0KPiA+Pj4+IE1hY2llag0KPiA+Pj4+DQo+ID4+Pj4gT24g MjYtT2N0LTIwIDA3OjUzLCBBYm5lciBDaGFuZyB3cm90ZToNCj4gPj4+Pj4gVGhhbmtzIGZvciBy ZXZpZXdpbmcgdGhpcyBNYWNpZWouDQo+ID4+Pj4+DQo+ID4+Pj4+IE1vc3Qgb2YgY29tbWVudHMg YXJlIGFkZHJlc3NlZC4gSSBhbHNvIHN1Ym1pdHRlZCBhIEJaIGZvciB0aGUgd3JvbmcNCj4gPj4+ PiBzcGVsbGluZyBvZiBDSFVOS19UUk5BU0ZFUl8qLCB0aGUgcGF0Y2ggaXMgYWxyZWFkeSBzZW50 Lg0KPiA+Pj4+PiBWMyBvZiB0aGlzIHBhdGNoIHNldCBpcyBhbHNvIHNlbnQgdG8gdGhlIG1haWxp bmcgbGlzdC4NCj4gPj4+Pj4NCj4gPj4+Pj4gT3RoZXIgZmVlZGJhY2tzICBhcmUgaW4gYmVsb3cs DQo+ID4+Pj4+DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4g RnJvbTogUmFiZWRhLCBNYWNpZWogW21haWx0bzptYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNv bV0NCj4gPj4+Pj4+IFNlbnQ6IFNhdHVyZGF5LCBPY3RvYmVyIDI0LCAyMDIwIDEyOjI1IEFNDQo+ ID4+Pj4+PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZX IFRlY2hub2xvZ2lzdCkNCj4gPj4+Pj4+IDxhYm5lci5jaGFuZ0BocGUuY29tPg0KPiA+Pj4+Pj4g Q2M6IEppYXhpbiBXdSA8amlheGluLnd1QGludGVsLmNvbT47IFNpeXVhbiBGdQ0KPiA8c2l5dWFu LmZ1QGludGVsLmNvbT47DQo+ID4+Pj4+PiBXYW5nLCBOaWNrbGUgKEhQUyBTVykgPG5pY2tsZS53 YW5nQGhwZS5jb20+DQo+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtEeGVIdHRw SW9MaWIgUEFUQ0ggVjIgMS8zXQ0KPiA+Pj4+IE5ldHdvcmtQa2cvTGlicmFyeToNCj4gPj4+Pj4+ IEltcGxlbWVudGF0aW9uIG9mIEh0dHAgSU8gSGVscGVyIExpYnJhcnkNCj4gPj4+Pj4+DQo+ID4+ Pj4+PiBIaSBBYm5lciwNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJIHVuZGVyc3RhbmQgdGhlIGNvbmNl cHQgb2YgbW92aW5nIEhUVFAgSS9PIGxheWVyIG91dHNpZGUNCj4gPj4gSHR0cEJvb3REeGUNCj4g Pj4+PiBhbmQNCj4gPj4+Pj4+IGludG8gYSBzZXBhcmF0ZSBsaWJyYXJ5IGFuZCBJIGFwcHJvdmUg aXQuDQo+ID4+Pj4+PiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSB0aGluZ3MgdGhhdCBoYXZlIHRv DQo+ID4+IGFkZHJlc3NlZC9maXhlZC9leHBsYWluZWQNCj4gPj4+Pj4+IGhlcmUuDQo+ID4+Pj4+ PiBTZWUgY29tbWVudHMgd2l0aGluIHRoZSBwYXRjaC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPbiAy MC1PY3QtMjAgMDQ6MzgsIEFibmVyIENoYW5nIHdyb3RlOg0KPiA+Pj4+Pj4+IEFkZCBIVFRQIElP IGhlbHBlciBsaWJyYXJ5IHdoaWNoIGNvdWxkIGJlIHN1ZWQgYnkgSFRUUA0KPiBhcHBsaWNhdGlv bnMNCj4gPj4+Pj4+PiBzdWNoIGFzIEhUVFAgQm9vdCwgUmVkZmlzaCBIVFRQIFJFU1QgRVggZHJp dmVyIGluc3RhbmNlIGFuZCBldGMuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5 OiBBYm5lciBDaGFuZyA8YWJuZXIuY2hhbmdAaHBlLmNvbT4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ IENjOiBNYWNpZWogUmFiZWRhIDxtYWNpZWoucmFiZWRhQGxpbnV4LmludGVsLmNvbT4NCj4gPj4+ Pj4+PiBDYzogSmlheGluIFd1IDxqaWF4aW4ud3VAaW50ZWwuY29tPg0KPiA+Pj4+Pj4+IENjOiBT aXl1YW4gRnUgPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+ID4+Pj4+Pj4gQ2M6IE5pY2tsZSBXYW5n IDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiA+Pj4+Pj4+IC0tLQ0KPiA+Pj4+Pj4+ICAgICAgTmV0 d29ya1BrZy9JbmNsdWRlL0xpYnJhcnkvSHR0cElvTGliLmggICAgICAgIHwgMzI4ICsrKysrKysN Cj4gPj4+Pj4+PiAgICAgIC4uLi9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9EeGVIdHRwSW9MaWIuYyAg ICAgICB8IDgwOQ0KPiA+Pj4+ICsrKysrKysrKysrKysrKysrKw0KPiA+Pj4+Pj4+ICAgICAgLi4u L0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0dHBJb0xpYi5pbmYgICAgIHwgIDQzICsNCj4gPj4+ Pj4+PiAgICAgIC4uLi9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9EeGVIdHRwSW9MaWIudW5pICAgICB8 ICAxMyArDQo+ID4+Pj4+Pj4gICAgICA0IGZpbGVzIGNoYW5nZWQsIDExOTMgaW5zZXJ0aW9ucygr KQ0KPiA+Pj4+Pj4+ICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IE5ldHdvcmtQa2cvSW5jbHVkZS9M aWJyYXJ5L0h0dHBJb0xpYi5oDQo+ID4+Pj4+Pj4gICAgICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4g Pj4gTmV0d29ya1BrZy9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9EeGVIdHRwSW9MaWIuYw0KPiA+Pj4+ Pj4+ICAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4+Pj4gTmV0d29ya1BrZy9MaWJyYXJ5L0R4 ZUh0dHBJb0xpYi9EeGVIdHRwSW9MaWIuaW5mDQo+ID4+Pj4+Pj4gICAgICBjcmVhdGUgbW9kZSAx MDA2NDQNCj4gPj4+PiBOZXR3b3JrUGtnL0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0dHBJb0xp Yi51bmkNCj4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9JbmNsdWRlL0xpYnJhcnkv SHR0cElvTGliLmgNCj4gPj4+Pj4+PiBiL05ldHdvcmtQa2cvSW5jbHVkZS9MaWJyYXJ5L0h0dHBJ b0xpYi5oDQo+ID4+Pj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+Pj4+PiBpbmRleCAw MDAwMDAwMDAwLi44ZjM4MDRjYTQyDQo+ID4+Pj4+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4+Pj4+ ICsrKyBiL05ldHdvcmtQa2cvSW5jbHVkZS9MaWJyYXJ5L0h0dHBJb0xpYi5oDQo+ID4+Pj4+Pj4g QEAgLTAsMCArMSwzMjggQEANCj4gPj4+Pj4+PiArLyoqIEBmaWxlDQo+ID4+Pj4+Pj4gKyAgSHR0 cElvTGliLmguDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsoQykgQ29weXJpZ2h0IDIwMjAgSGV3 bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksDQo+ID4+IEwuUC48QlI+DQo+ID4+Pj4+ Pj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+Pj4+ Pj4gKw0KPiA+Pj4+Pj4+ICsqKi8NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyNpZm5kZWYgSFRU UF9JT19MSUJfSF8NCj4gPj4+Pj4+PiArI2RlZmluZSBIVFRQX0lPX0xJQl9IXw0KPiA+Pj4+Pj4+ ICsNCj4gPj4+Pj4+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvSHR0cDExLmg+DQo+ID4+ Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9EcGNMaWIuaD4NCj4gPj4+Pj4+ PiArI2luY2x1ZGUgPExpYnJhcnkvSHR0cExpYi5oPg0KPiA+Pj4+Pj4+ICsjaW5jbHVkZSA8TGli cmFyeS9OZXRMaWIuaD4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyNkZWZpbmUgSFRUUF9JT19N QVhfU0VORF9QQVlMT0FEICAgICAgICAgICAgICAgICAgICAxMDI0DQo+ID4+Pj4+Pj4gKyNkZWZp bmUgSFRUUF9JT19DSFVOS19TSVpFX1NUUklOR19MRU4gICAgICAgICAgICAgICA1MA0KPiA+Pj4+ Pj4+ICsjZGVmaW5lIEhUVFBfSU9fQ0hVTktFRF9UUkFOU0ZFUl9DT0RJTkdfREFUQV9MRU5HVEgN Cj4gPj4gMjU2DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvLy8NCj4gPj4+Pj4+PiArLy8vIEhU VFBfSU9fQ0FMTEJBQ0tfRVZFTlQNCj4gPj4+Pj4+PiArLy8vDQo+ID4+Pj4+Pj4gK3R5cGVkZWYg ZW51bSB7DQo+ID4+Pj4+Pj4gKyAgSHR0cElvUmVxdWVzdCwNCj4gPj4+Pj4+PiArICBIdHRwSW9S ZXNwb25zZQ0KPiA+Pj4+Pj4+ICt9IEhUVFBfSU9fQ0FMTEJBQ0tfRVZFTlQ7DQo+ID4+Pj4+Pj4g Kw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICBIdHRwSW8gQ2FsbGJhY2sgZnVuY3Rpb24g d2hpY2ggd2lsbCBiZSBpbnZva2VkIHdoZW4gc3BlY2lmaWVkDQo+ID4+Pj4+PiBIVFRQX0lPX0NB TExCQUNLX0VWRU5UIGhhcHBlbmVkLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcGFyYW1b aW5dICAgIEV2ZW50VHlwZSAgICAgIEluZGljYXRlIHRoZSBFdmVudCB0eXBlIHRoYXQgb2NjdXJz IGluDQo+ID4+IHRoZQ0KPiA+Pj4+Pj4gY3VycmVudCBjYWxsYmFjay4NCj4gPj4+Pj4+PiArICBA cGFyYW1baW5dICAgIE1lc3NhZ2UgICAgICAgIEhUVFAgbWVzc2FnZSB3aGljaCB3aWxsIGJlIHNl bmQgdG8sDQo+IG9yDQo+ID4+IGp1c3QNCj4gPj4+Pj4+IHJlY2VpdmVkIGZyb20gSFRUUCBzZXJ2 ZXIuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgICBDb250ZXh0ICAgICAgICBUaGUgQ2FsbGJh Y2sgQ29udGV4dCBwb2ludGVyLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgIFRlbGxzIHRoZSBIdHRwSW8gdG8gY29udGludWUgdGhlIEhUVFAN Cj4gPj4+PiBwcm9jZXNzLg0KPiA+Pj4+Pj4+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAg ICAgVGVsbHMgdGhlIEh0dHBJbyB0byBhYm9ydCB0aGUgY3VycmVudCBIVFRQDQo+ID4+Pj4gcHJv Y2Vzcy4NCj4gPj4+Pj4+PiArKiovDQo+ID4+Pj4+Pj4gK3R5cGVkZWYNCj4gPj4+Pj4+PiArRUZJ X1NUQVRVUw0KPiA+Pj4+Pj4+ICsoRUZJQVBJICogSFRUUF9JT19DQUxMQkFDSykgKA0KPiA+Pj4+ Pj4+ICsgIElOICBIVFRQX0lPX0NBTExCQUNLX0VWRU5UICAgIEV2ZW50VHlwZSwNCj4gPj4+Pj4+ PiArICBJTiAgRUZJX0hUVFBfTUVTU0FHRSAgICAgICAgICAqTWVzc2FnZSwNCj4gPj4+Pj4+PiAr ICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+Pj4+Pj4+ICsgICk7 DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvLy8NCj4gPj4+Pj4+PiArLy8vIEEgd3JhcHBlciBz dHJ1Y3R1cmUgdG8gaG9sZCB0aGUgcmVjZWl2ZWQgSFRUUCByZXNwb25zZSBkYXRhLg0KPiA+Pj4+ Pj4+ICsvLy8NCj4gPj4+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+Pj4+ICsgIEVGSV9I VFRQX1JFU1BPTlNFX0RBVEEgICAgICBSZXNwb25zZTsNCj4gPj4+Pj4+PiArICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgSGVhZGVyQ291bnQ7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfSEVB REVSICAgICAgICAgICAgICpIZWFkZXJzOw0KPiA+Pj4+Pj4+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICBCb2R5TGVuZ3RoOw0KPiA+Pj4+Pj4+ICsgIENIQVI4ICAgICAgICAgICAgICAg ICAgICAgICAqQm9keTsNCj4gPj4+Pj4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAg U3RhdHVzOw0KPiA+Pj4+Pj4+ICt9IEhUVFBfSU9fUkVTUE9OU0VfREFUQTsNCj4gPj4+Pj4+PiAr DQo+ID4+Pj4+Pj4gKy8vLw0KPiA+Pj4+Pj4+ICsvLy8gSFRUUF9JTyBjb25maWd1cmF0aW9uIGRh dGEgZm9yIElQdjQgLy8vIHR5cGVkZWYgc3RydWN0IHsNCj4gPj4+Pj4+PiArICBFRklfSFRUUF9W RVJTSU9OICAgICAgICAgIEh0dHBWZXJzaW9uOw0KPiA+Pj4+Pj4+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgUmVxdWVzdFRpbWVPdXQ7ICAvLy88IEluIG1pbGxpc2Vjb25kcy4NCj4gPj4+ Pj4+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlVGltZU91dDsgLy8vPCBJ biBtaWxsaXNlY29uZHMuDQo+ID4+Pj4+Pj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICBV c2VEZWZhdWx0QWRkcmVzczsNCj4gPj4+Pj4+PiArICBFRklfSVB2NF9BRERSRVNTICAgICAgICAg IExvY2FsSXA7DQo+ID4+Pj4+Pj4gKyAgRUZJX0lQdjRfQUREUkVTUyAgICAgICAgICBTdWJuZXRN YXNrOw0KPiA+Pj4+Pj4+ICsgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgTG9jYWxQb3J0Ow0K PiA+Pj4+Pj4+ICt9IEhUVFA0X0lPX0NPTkZJR19EQVRBOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+ PiArLy8vDQo+ID4+Pj4+Pj4gKy8vLyBIVFRQX0lPIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgSVB2 NiAvLy8gdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+Pj4+ICsgIEVGSV9IVFRQX1ZFUlNJT04gICAg ICAgICAgSHR0cFZlcnNpb247DQo+ID4+Pj4+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBSZXF1ZXN0VGltZU91dDsgIC8vLzwgSW4gbWlsbGlzZWNvbmRzLg0KPiA+Pj4+Pj4+ICsgIEJP T0xFQU4gICAgICAgICAgICAgICAgICAgVXNlRGVmYXVsdEFkZHJlc3M7DQo+ID4+Pj4+Pj4gKyAg RUZJX0lQdjZfQUREUkVTUyAgICAgICAgICBMb2NhbElwOw0KPiA+Pj4+Pj4+ICsgIFVJTlQxNiAg ICAgICAgICAgICAgICAgICAgTG9jYWxQb3J0Ow0KPiA+Pj4+Pj4+ICt9IEhUVFA2X0lPX0NPTkZJ R19EQVRBOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArLy8vDQo+ID4+Pj4+Pj4gKy8vLyBIVFRQ X0lPIGNvbmZpZ3VyYXRpb24NCj4gPj4+Pj4+PiArLy8vDQo+ID4+Pj4+Pj4gK3R5cGVkZWYgdW5p b24gew0KPiA+Pj4+Pj4+ICsgIEhUVFA0X0lPX0NPTkZJR19EQVRBICAgICAgIENvbmZpZzQ7DQo+ ID4+Pj4+Pj4gKyAgSFRUUDZfSU9fQ09ORklHX0RBVEEgICAgICAgQ29uZmlnNjsNCj4gPj4+Pj4+ PiArfSBIVFRQX0lPX0NPTkZJR19EQVRBOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArLy8vDQo+ ID4+Pj4+Pj4gKy8vLyBIVFRQX0lPIHdyYXBwZXIgb2YgdGhlIEVGSSBIVFRQIHNlcnZpY2UuDQo+ ID4+Pj4+Pj4gKy8vLw0KPiA+Pj4+Pj4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4+Pj4+Pj4gKyAg VUlOVDggICAgICAgICAgICAgICAgICAgICBJcFZlcnNpb247DQo+ID4+Pj4+Pj4gKyAgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZTsNCj4gPj4+Pj4+PiArICBFRklfSEFORExFICAgICAg ICAgICAgICAgIENvbnRyb2xsZXI7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICBIYW5kbGU7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEVGSV9IVFRQX1BST1RPQ09M ICAgICAgICAgKkh0dHA7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEhUVFBfSU9fQ0FMTEJB Q0sgICAgICAgICAgQ2FsbGJhY2s7DQo+ID4+Pj4+Pj4gKyAgVk9JRCAgICAgICAgICAgICAgICAg ICAgICAqQ29udGV4dDsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfVE9LRU4g ICAgICAgICAgICBSZXFUb2tlbjsNCj4gPj4+Pj4+PiArICBFRklfSFRUUF9NRVNTQUdFICAgICAg ICAgIFJlcU1lc3NhZ2U7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfVE9LRU4gICAgICAgICAgICBS c3BUb2tlbjsNCj4gPj4+Pj4+PiArICBFRklfSFRUUF9NRVNTQUdFICAgICAgICAgIFJzcE1lc3Nh Z2U7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAg SXNUeERvbmU7DQo+ID4+Pj4+Pj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICBJc1J4RG9u ZTsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgRUZJX0VWRU5UICAgICAgICAgICAgICAgICBU aW1lb3V0RXZlbnQ7DQo+ID4+Pj4+Pj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBUaW1l b3V0Ow0KPiA+Pj4+Pj4+ICt9IEhUVFBfSU87DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvLy8N Cj4gPj4+Pj4+PiArLy8vIFByb2Nlc3MgY29kZSBvZiBIVFRQIGNodW5rIHRyYW5zZmVyLg0KPiA+ Pj4+Pj4+ICsvLy8NCj4gPj4+Pj4+PiArdHlwZWRlZiBlbnVtICB7DQo+ID4+Pj4+Pj4gKyAgSHR0 cElvU2VuZENodW5rTm9uZSA9IDAsDQo+ID4+Pj4+Pj4gKyAgSHR0cElvU2VuZENodW5rSGVhZGVy WmVyb0NvbnRlbnQsDQo+ID4+Pj4+Pj4gKyAgSHR0cElvU2VuZENodW5rQ29udGVudCwNCj4gPj4+ Pj4+PiArICBIdHRwSW9TZW5kQ2h1bmtFbmRDaHVuaywNCj4gPj4+Pj4+PiArICBIdHRwSW9TZW5k Q2h1bmtGaW5pc2gNCj4gPj4+Pj4+PiArfSBIVFRQX0lPX1NFTkRfQ0hVTktfUFJPQ0VTUzsNCj4g Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKy8vLw0KPiA+Pj4+Pj4+ICsvLy8gUHJvY2VzcyBjb2RlIG9m IEhUVFAgbm9uIGNodW5rIHRyYW5zZmVyLg0KPiA+Pj4+Pj4+ICsvLy8NCj4gPj4+Pj4+PiArdHlw ZWRlZiBlbnVtICB7DQo+ID4+Pj4+Pj4gKyAgSHR0cElvU2VuZE5vbkNodW5rTm9uZSA9IDAsDQo+ ID4+Pj4+Pj4gKyAgSHR0cElvU2VuZE5vbkNodW5rSGVhZGVyWmVyb0NvbnRlbnQsDQo+ID4+Pj4+ Pj4gKyAgSHR0cElvU2VuZE5vbkNodW5rQ29udGVudCwNCj4gPj4+Pj4+PiArICBIdHRwSW9TZW5k Tm9uQ2h1bmtGaW5pc2gNCj4gPj4+Pj4+PiArfSBIVFRQX0lPX1NFTkRfTk9OX0NIVU5LX1BST0NF U1M7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvLy8NCj4gPj4+Pj4+PiArLy8vIENodW5rIGxp bmtzIGZvciBIVFRQIGNodW5rZWQgdHJhbnNmZXIgY29kaW5nLg0KPiA+Pj4+Pj4+ICsvLy8NCj4g Pj4+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+Pj4+ICsgIExJU1RfRU5UUlkgIE5leHRD aHVuazsNCj4gPj4+Pj4+PiArICBVSU5UTiAgICAgICBMZW5ndGg7DQo+ID4+Pj4+Pj4gKyAgQ0hB UjggICAgICAgKkRhdGE7DQo+ID4+Pj4+Pj4gK30gSFRUUF9JT19DSFVOS1M7DQo+ID4+Pj4+Pj4g Kw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICBOb3RpZnkgdGhlIGNhbGxiYWNrIGZ1bmN0 aW9uIHdoZW4gYW4gZXZlbnQgaXMgdHJpZ2dlcmVkLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAr ICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgICAgVGhlIG9wYXF1ZSBwYXJhbWV0ZXIgdG8gdGhl IGZ1bmN0aW9uLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArKiovDQo+ID4+Pj4+Pj4gK1ZPSUQN Cj4gPj4+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+Pj4gK0h0dHBJb05vdGlmeURwYyAoDQo+ID4+Pj4+ Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+Pj4+Pj4+ICsgICk7DQo+ ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICBSZXF1ZXN0IEh0dHBJb05v dGlmeURwYyBhcyBhIERQQyBhdCBUUExfQ0FMTEJBQ0suDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICAgICAgICAgICAgICBUaGUgZXZlbnQgc2lnbmFsZWQu DQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICAgICAgICAgICAgIFRoZSBvcGFx dWUgcGFyYW1ldGVyIHRvIHRoZQ0KPiBmdW5jdGlvbi4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4g KyoqLw0KPiA+Pj4+Pj4+ICtWT0lEDQo+ID4+Pj4+Pj4gK0VGSUFQSQ0KPiA+Pj4+Pj4+ICtIdHRw SW9Ob3RpZnkgKA0KPiA+Pj4+Pj4+ICsgIElOIEVGSV9FVkVOVCAgICAgICAgICAgICAgRXZlbnQs DQo+ID4+Pj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+Pj4+ Pj4+ICsgICk7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICBEZXN0 cm95IHRoZSBIVFRQX0lPIGFuZCByZWxlYXNlIHRoZSByZXNvdXJjZXMuDQo+ID4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gIEh0dHBJbyAgICAgICAgICBUaGUgSFRUUF9JTyB3aGlj aCB3cmFwcyB0aGUgSFRUUA0KPiBzZXJ2aWNlDQo+ID4+IHRvDQo+ID4+Pj4gYmUNCj4gPj4+Pj4+ IGRlc3Ryb3llZC4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtWT0lE DQo+ID4+Pj4+Pj4gK0h0dHBJb0Rlc3Ryb3lJbyAoDQo+ID4+Pj4+Pj4gKyAgSU4gSFRUUF9JTyAg ICAgICAgICAgICAgICAqSHR0cElvDQo+ID4+Pj4+Pj4gKyAgKTsNCj4gPj4+Pj4+PiArDQo+ID4+ Pj4+Pj4gKy8qKg0KPiA+Pj4+Pj4+ICsgIENyZWF0ZSBhIEhUVFBfSU8gdG8gYWNjZXNzIHRoZSBI VFRQIHNlcnZpY2UuIEl0IHdpbGwgY3JlYXRlIGFuZA0KPiA+Pj4+Pj4+ICtjb25maWd1cmUNCj4g Pj4+Pj4+PiArICBhIEhUVFAgY2hpbGQgaGFuZGxlLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAr ICBAcGFyYW1baW5dICBJbWFnZSAgICAgICAgICBUaGUgaGFuZGxlIG9mIHRoZSBkcml2ZXIgaW1h Z2UuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgQ29udHJvbGxlciAgICAgVGhlIGhhbmRsZSBv ZiB0aGUgY29udHJvbGxlci4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICBJcFZlcnNpb24gICAg ICBJUF9WRVJTSU9OXzQgb3IgSVBfVkVSU0lPTl82Lg0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0g IENvbmZpZ0RhdGEgICAgIFRoZSBIVFRQX0lPIGNvbmZpZ3VyYXRpb24gZGF0YS4NCj4gPj4+Pj4+ PiArICBAcGFyYW1baW5dICBDYWxsYmFjayAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3 aWxsIGJlIGludm9rZWQNCj4gPj4gd2hlbg0KPiA+Pj4+Pj4gc3BlY2lmaWVkDQo+ID4+Pj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUF9JT19DQUxMQkFDS19FVkVOVCBoYXBw ZW5lZC4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgICBUaGUgQ29udGV4 dCBkYXRhIHdoaWNoIHdpbGwgYmUgcGFzc2VkDQo+IHRvDQo+ID4+IHRoZQ0KPiA+Pj4+Pj4gQ2Fs bGJhY2sgZnVuY3Rpb24uDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW291dF0gSHR0cElvICAgICAgICAg VGhlIEhUVFBfSU8uDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgICBUaGUgSFRUUF9JTyBpcyBjcmVhdGVkIGFuZA0KPiBjb25maWd1cmVkLg0K PiA+Pj4+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBPbmUgb3IgbW9yZSBw YXJhbWV0ZXJzIGFyZQ0KPiA+Pj4+IGludmFsaWQuDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICAgICAgIE9uZSBvciBtb3JlIG9mIHRoZSBjb250cm9sDQo+IG9wdGlvbnMN Cj4gPj4+PiBhcmUNCj4gPj4+Pj4+IG5vdA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdXBwb3J0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uLg0KPiA+Pj4+Pj4+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBGYWlsZWQgdG8gYWxsb2NhdGUgbWVt b3J5Lg0KPiA+Pj4+Pj4+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAgICBGYWlsZWQg dG8gY3JlYXRlIHRoZSBIVFRQX0lPIG9yIGNvbmZpZ3VyZQ0KPiBpdC4NCj4gPj4+Pj4+PiArDQo+ ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+Pj4gK0h0dHBJb0Ny ZWF0ZUlvICgNCj4gPj4+Pj4+PiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgIEltYWdlLA0K PiA+Pj4+Pj4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgQ29udHJvbGxlciwNCj4gPj4+ Pj4+PiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIElwVmVyc2lvbiwNCj4gPj4+Pj4+PiAr ICBJTiBIVFRQX0lPX0NPTkZJR19EQVRBICAgICpDb25maWdEYXRhLA0KPiA+Pj4+Pj4+ICsgIElO IEhUVFBfSU9fQ0FMTEJBQ0sgICAgICAgQ2FsbGJhY2ssDQo+ID4+Pj4+Pj4gKyAgSU4gVk9JRCAg ICAgICAgICAgICAgICAgICAqQ29udGV4dCwNCj4gPj4+Pj4+PiArICBPVVQgSFRUUF9JTyAgICAg ICAgICAgICAgICpIdHRwSW8NCj4gPj4+Pj4+PiArICApOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+ PiArLyoqDQo+ID4+Pj4+Pj4gKyAgU3luY2hyb25vdXNseSBzZW5kIGEgSFRUUCBSRVFVRVNUIG1l c3NhZ2UgdG8gdGhlIHNlcnZlci4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2lu XSAgIEh0dHBJbyAgICAgICAgICAgVGhlIEh0dHBJbyB3cmFwcGluZyB0aGUgSFRUUCBzZXJ2aWNl Lg0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gICBSZXF1ZXN0ICAgICAgICAgIEEgcG9pbnRlciB0 byBzdG9yYWdlIHN1Y2ggZGF0YSBhcyBVUkwNCj4gPj4gYW5kDQo+ID4+Pj4+PiBIVFRQIG1ldGhv ZC4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVyQ291bnQgICAgICBOdW1iZXIgb2Yg SFRUUCBoZWFkZXIgc3RydWN0dXJlcw0KPiBpbg0KPiA+Pj4+Pj4gSGVhZGVycyBsaXN0Lg0KPiA+ Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gICBIZWFkZXJzICAgICAgICAgIEFycmF5IGNvbnRhaW5pbmcg bGlzdCBvZiBIVFRQIGhlYWRlcnMuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIEJvZHlMZW5n dGggICAgICAgTGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBIVFRQIGJvZHkuDQo+ID4+Pj4+Pj4gKyAg QHBhcmFtW2luXSAgIEJvZHkgICAgICAgICAgICAgQm9keSBhc3NvY2lhdGVkIHdpdGggdGhlIEhU VFAgcmVxdWVzdC4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgIFRoZSBIVFRQIHJlcXVlc3QgaXMgdHJhbnNtaXR0ZWQuDQo+ID4+Pj4+Pj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIHBhcmFtZXRlcnMg YXJlDQo+ID4+Pj4gaW52YWxpZC4NCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4NCj4gPj4+Pj4+PiArICBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1IgICAgICAgQW4gdW5leHBlY3RlZCBuZXR3b3JrIG9yDQo+IHN5c3Rl bQ0KPiA+Pj4+IGVycm9yDQo+ID4+Pj4+PiBvY2N1cnJlZC4NCj4gPj4+Pj4+PiArICBAcmV0dmFs IE90aGVycyAgICAgICAgICAgICAgICAgT3RoZXIgZXJyb3JzIGFzIGluZGljYXRlZC4NCj4gPj4+ Pj4+PiArDQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+Pj4g K0h0dHBJb1NlbmRSZXF1ZXN0ICgNCj4gPj4+Pj4+PiArICBJTiAgSFRUUF9JTyAgICAgICAgICAg ICAgICAqSHR0cElvLA0KPiA+Pj4+Pj4+ICsgIElOICBFRklfSFRUUF9SRVFVRVNUX0RBVEEgICpS ZXF1ZXN0LCAgICAgIE9QVElPTkFMDQo+ID4+Pj4+Pj4gKyAgSU4gIFVJTlROICAgICAgICAgICAg ICAgICAgSGVhZGVyQ291bnQsDQo+ID4+Pj4+Pj4gKyAgSU4gIEVGSV9IVFRQX0hFQURFUiAgICAg ICAgKkhlYWRlcnMsICAgICAgT1BUSU9OQUwNCj4gPj4+Pj4+PiArICBJTiAgVUlOVE4gICAgICAg ICAgICAgICAgICBCb2R5TGVuZ3RoLA0KPiA+Pj4+Pj4+ICsgIElOICBWT0lEICAgICAgICAgICAg ICAgICAgICpCb2R5ICAgICAgICAgIE9QVElPTkFMDQo+ID4+Pj4+Pj4gKyAgKTsNCj4gPj4+Pj4+ PiArDQo+ID4+Pj4+Pj4gKy8qKg0KPiA+Pj4+Pj4+ICsgIFN5bmNocm9ub3VzbHkgcmVjZWl2ZSBh IEhUVFAgUkVTUE9OU0UgbWVzc2FnZSBmcm9tIHRoZQ0KPiBzZXJ2ZXIuDQo+ID4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gICBIdHRwSW8gICAgICAgICAgIFRoZSBIdHRwSW8gd3Jh cHBpbmcgdGhlIEhUVFAgc2VydmljZS4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICAgUmVjdk1z Z0hlYWRlciAgICBUUlVFIHRvIHJlY2VpdmUgYSBuZXcgSFRUUA0KPiA+PiByZXNwb25zZQ0KPiA+ Pj4+Pj4gKGZyb20gbWVzc2FnZSBoZWFkZXIpLg0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZBTFNFIHRvIGNvbnRpbnVlIHJlY2VpdmUgdGhlIHByZXZpb3VzIHJl c3BvbnNlDQo+ID4+Pj4gbWVzc2FnZS4NCj4gPj4+Pj4+PiArICBAcGFyYW1bb3V0XSAgUmVzcG9u c2VEYXRhICAgICBQb2ludCB0byBhIHdyYXBwZXIgb2YgdGhlDQo+IHJlY2VpdmVkDQo+ID4+Pj4+ PiByZXNwb25zZSBkYXRhLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgVGhlIEhUVFAgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuDQo+ID4+Pj4+ Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIHBhcmFtZXRl cnMgYXJlDQo+ID4+Pj4gaW52YWxpZC4NCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9PVVRfT0Zf UkVTT1VSQ0VTICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4NCj4gPj4+Pj4+PiArICBAcmV0 dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgQW4gdW5leHBlY3RlZCBuZXR3b3JrIG9yDQo+IHN5 c3RlbQ0KPiA+Pj4+IGVycm9yDQo+ID4+Pj4+PiBvY2N1cnJlZC4NCj4gPj4+Pj4+PiArICBAcmV0 dmFsIE90aGVycyAgICAgICAgICAgICAgICAgT3RoZXIgZXJyb3JzIGFzIGluZGljYXRlZC4NCj4g Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ Pj4gK0h0dHBJb1JlY3ZSZXNwb25zZSAoDQo+ID4+Pj4+Pj4gKyAgSU4gICAgICBIVFRQX0lPICAg ICAgICAgICAgICAgICAgKkh0dHBJbywNCj4gPj4+Pj4+PiArICBJTiAgICAgIEJPT0xFQU4gICAg ICAgICAgICAgICAgICBSZWN2TXNnSGVhZGVyLA0KPiA+Pj4+Pj4+ICsgIE9VVCAgICAgSFRUUF9J T19SRVNQT05TRV9EQVRBICAgICpSZXNwb25zZURhdGENCj4gPj4+Pj4+PiArICApOw0KPiA+Pj4+ Pj4+ICsNCj4gPj4+Pj4+PiArLyoqDQo+ID4+Pj4+Pj4gKyAgR2V0IHRoZSB2YWx1ZSBvZiB0aGUg Y29udGVudCBsZW5ndGggaWYgdGhlcmUgaXMgYSAiQ29udGVudC0NCj4gTGVuZ3RoIg0KPiA+Pj4+ IGhlYWRlci4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgICBIZWFkZXJD b3VudCAgICAgICAgTnVtYmVyIG9mIEhUVFAgaGVhZGVyDQo+IHN0cnVjdHVyZXMNCj4gPj4gaW4N Cj4gPj4+Pj4+IEhlYWRlcnMuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgICBIZWFkZXJzICAg ICAgICAgICAgQXJyYXkgY29udGFpbmluZyBsaXN0IG9mIEhUVFAgaGVhZGVycy4NCj4gPj4+Pj4+ PiArICBAcGFyYW1bb3V0XSAgIENvbnRlbnRMZW5ndGggICAgICBQb2ludGVyIHRvIHNhdmUgdGhl IHZhbHVlIG9mIHRoZQ0KPiA+Pj4+IGNvbnRlbnQNCj4gPj4+Pj4+IGxlbmd0aC4NCj4gPj4+Pj4+ PiArDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgU3VjY2Vz c2Z1bGx5IGdldCB0aGUgY29udGVudCBsZW5ndGguDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklf Tk9UX0ZPVU5EICAgICAgICAgICAgTm8gIkNvbnRlbnQtTGVuZ3RoIiBoZWFkZXIgaW4NCj4gdGhl DQo+ID4+Pj4+PiBIZWFkZXJzLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArKiovDQo+ID4+Pj4+ Pj4gK0VGSV9TVEFUVVMNCj4gPj4+Pj4+PiArSHR0cElvR2V0Q29udGVudExlbmd0aCAoDQo+ID4+ Pj4+Pj4gKyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgIEhlYWRlckNvdW50LA0KPiA+Pj4+ Pj4+ICsgIElOICAgICBFRklfSFRUUF9IRUFERVIgICAgICAqSGVhZGVycywNCj4gPj4+Pj4+PiAr ICBPVVQgICAgVUlOVE4gICAgICAgICAgICAgICAgKkNvbnRlbnRMZW5ndGgNCj4gPj4+Pj4+PiAr ICApOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArLyoqDQo+ID4+Pj4+Pj4gKyAgU3luY2hyb25v dXNseSByZWNlaXZlIGEgSFRUUCBSRVNQT05TRSBtZXNzYWdlIGZyb20gdGhlDQo+IHNlcnZlci4N Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIEh0dHBJbyAgICAgICAgICAg VGhlIEh0dHBJbyB3cmFwcGluZyB0aGUgSFRUUCBzZXJ2aWNlLg0KPiA+Pj4+Pj4+ICsgIEBwYXJh bVtpbl0gICBIZWFkZXJDb3VudCAgICAgIE51bWJlciBvZiBoZWFkZXJzIGluIEhlYWRlcnMuDQo+ ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIEhlYWRlcnMgICAgICAgICAgQXJyYXkgY29udGFpbmlu ZyBsaXN0IG9mIEhUVFAgaGVhZGVycy4NCj4gPj4+Pj4+PiArICBAcGFyYW1bb3V0XSAgQ2h1bmtM aXN0SGVhZCAgICBBIHBvaW50ZXIgdG8gcmVjZWl2Y2UgbGlzdCBoZWFkIG9mDQo+ID4+Pj4gY2h1 bmtlZA0KPiA+Pj4+Pj4gZGF0YS4NCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDYWxsZXIgaGFzIHRvIHJlbGVhc2UgbWVtb3J5IG9mIENodW5rTGlzdEhlYWQNCj4g Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYWxsIGxpc3QgZW50 cmllcy4NCj4gPj4+Pj4+PiArICBAcGFyYW1bb3V0XSAgQ29udGVudExlbmd0aCAgICBUb3RhbCBj b250ZW50IGxlbmd0aA0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgVGhlIEhUVFAgY2h1bmtlZCB0cmFuc2ZlciBpcw0KPiByZWNlaXZlZC4N Cj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgTm8gY2h1bmtlZCB0 cmFuc2ZlciBjb2RpbmcNCj4gaGVhZGVyDQo+ID4+Pj4gZm91bmQuDQo+ID4+Pj4+Pj4gKyAgQHJl dHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgIEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkuDQo+ ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEltcHJvcGVyIHBhcmFt ZXRlcnMuDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgIE90aGVy IGVycm9ycyBhcyBpbmRpY2F0ZWQuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsqKi8NCj4gPj4+ Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+Pj4+ICtIdHRwSW9HZXRDaHVua2VkVHJhbnNmZXJDb250 ZW50ICgNCj4gPj4+Pj4+PiArICBJTiAgICAgSFRUUF9JTyAgICAgICAgICAgICAgKkh0dHBJbywN Cj4gPj4+Pj4+PiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgSGVhZGVyQ291bnQsDQo+ ID4+Pj4+Pj4gKyAgSU4gICAgIEVGSV9IVFRQX0hFQURFUiAgICAgICpIZWFkZXJzLA0KPiA+Pj4+ Pj4+ICsgIE9VVCAgICBMSVNUX0VOVFJZICAgICAgICAgICAqKkNodW5rTGlzdEhlYWQsDQo+ID4+ Pj4+Pj4gKyAgT1VUICAgIFVJTlROICAgICAgICAgICAgICAgICpDb250ZW50TGVuZ3RoDQo+ID4+ Pj4+Pj4gKyAgKTsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKy8qKg0KPiA+Pj4+Pj4+ICsgIFNl bmQgSFRUUCByZXF1ZXN0IGluIGNodW5rcy4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBh cmFtW2luXSAgIEh0dHBJbyAgICAgICAgICAgICBUaGUgSHR0cElvIHdyYXBwaW5nIHRoZSBIVFRQ IHNlcnZpY2UuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIFNlbmRDaHVua1Byb2Nlc3MgICBQ b2ludGVyIHRvIGN1cnJlbnQgY2h1bmsNCj4gcHJvY2Vzcw0KPiA+Pj4+Pj4gc3RhdHVzLg0KPiA+ Pj4+Pj4+ICsgIEBwYXJhbVtvdXRdICBSZXF1ZXN0TWVzc2FnZSAgICAgUmVxdWVzdCB0byBzZW5k Lg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgIFN1Y2Nlc3NmdWxseSB0byBzZW5kIGNodW5rIGRhdGENCj4gPj4gYWNjb3JkaW5nDQo+ID4+ Pj4gdG8NCj4gPj4+Pj4+IFNlbmRDaHVua1Byb2Nlc3MuDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBP dGhlciAgICAgICAgICAgICAgICAgICBPdGhlciBlcnJvcnMuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+ Pj4+ICsqKi8NCj4gPj4+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+Pj4+ICtIdHRwSW9TZW5kQ2h1 bmtlZFRyYW5zZmVyICgNCj4gPj4+Pj4+PiArICBJTiAgSFRUUF9JTyAgICAgICAgICAgICAgICAg ICAgKkh0dHBJbywNCj4gPj4+Pj4+PiArICBJTiAgSFRUUF9JT19TRU5EX0NIVU5LX1BST0NFU1Mg KlNlbmRDaHVua1Byb2Nlc3MsDQo+ID4+Pj4+Pj4gKyAgSU4gIEVGSV9IVFRQX01FU1NBR0UgICAg ICAgICAgICpSZXF1ZXN0TWVzc2FnZQ0KPiA+Pj4+Pj4+ICspOw0KPiA+Pj4+Pj4+ICsjZW5kaWYN Cj4gPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvTmV0d29ya1BrZy9MaWJyYXJ5L0R4ZUh0dHBJb0xpYi9E eGVIdHRwSW9MaWIuYw0KPiA+Pj4+Pj4+IGIvTmV0d29ya1BrZy9MaWJyYXJ5L0R4ZUh0dHBJb0xp Yi9EeGVIdHRwSW9MaWIuYw0KPiA+Pj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+Pj4+ Pj4gaW5kZXggMDAwMDAwMDAwMC4uZmJjZTg2ZWE1Yw0KPiA+Pj4+Pj4+IC0tLSAvZGV2L251bGwN Cj4gPj4+Pj4+PiArKysgYi9OZXR3b3JrUGtnL0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0dHBJ b0xpYi5jDQo+ID4+Pj4+Pj4gQEAgLTAsMCArMSw4MDkgQEANCj4gPj4+Pj4+PiArLyoqIEBmaWxl DQo+ID4+Pj4+Pj4gKyAgSHR0cCBJTyBIZWxwZXIgTGlicmFyeS4NCj4gPj4+Pj4+PiArDQo+ID4+ Pj4+Pj4gKyAgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBD b21wYW55LA0KPiA+PiBMLlAuPEJSPg0KPiA+Pj4+Pj4+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICoqLw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArI2lu Y2x1ZGUgPFVlZmkuaD4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyNpbmNsdWRlIDxQcm90b2Nv bC9IdHRwLmg+DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNl TGliLmg+DQo+ID4+Pj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4g Pj4+Pj4+PiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPj4+Pj4+PiArI2luY2x1 ZGUgPExpYnJhcnkvSHR0cElvTGliLmg+DQo+ID4+Pj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01l bW9yeUFsbG9jYXRpb25MaWIuaD4gI2luY2x1ZGUNCj4gPj4+Pj4+PiArPExpYnJhcnkvUHJpbnRM aWIuaD4gI2luY2x1ZGUNCj4gPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICBOb3RpZnkgdGhlIGNhbGxi YWNrIGZ1bmN0aW9uIHdoZW4gYW4gZXZlbnQgaXMgdHJpZ2dlcmVkLg0KPiA+Pj4+Pj4+ICsNCj4g Pj4+Pj4+PiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgICAgVGhlIG9wYXF1ZSBwYXJhbWV0 ZXIgdG8gdGhlIGZ1bmN0aW9uLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArKiovDQo+ID4+Pj4+ Pj4gK1ZPSUQNCj4gPj4+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+Pj4gK0h0dHBJb05vdGlmeURwYyAo DQo+ID4+Pj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAqQ29udGV4dA0KPiA+Pj4+Pj4+ ICsgICkNCj4gPj4+Pj4+PiArew0KPiA+Pj4+Pj4+ICsgICooKEJPT0xFQU4gKikgQ29udGV4dCkg PSBUUlVFOw0KPiA+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+ Pj4+PiArICBSZXF1ZXN0IEh0dHBJb05vdGlmeURwYyBhcyBhIERQQyBhdCBUUExfQ0FMTEJBQ0su DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gIEV2ZW50ICAgICAgICAgICAg ICAgICBUaGUgZXZlbnQgc2lnbmFsZWQuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgQ29udGV4 dCAgICAgICAgICAgICAgIFRoZSBvcGFxdWUgcGFyYW1ldGVyIHRvIHRoZQ0KPiBmdW5jdGlvbi4N Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtWT0lEDQo+ID4+Pj4+Pj4g K0VGSUFQSQ0KPiA+Pj4+Pj4+ICtIdHRwSW9Ob3RpZnkgKA0KPiA+Pj4+Pj4+ICsgIElOIEVGSV9F VkVOVCAgICAgICAgICAgICAgRXZlbnQsDQo+ID4+Pj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAg ICAgICAgICAqQ29udGV4dA0KPiA+Pj4+Pj4+ICsgICkNCj4gPj4+Pj4+PiArew0KPiA+Pj4+Pj4+ ICsgIC8vDQo+ID4+Pj4+Pj4gKyAgLy8gUmVxdWVzdCBIdHRwSW9Ob3RpZnlEcGMgYXMgYSBEUEMg YXQgVFBMX0NBTExCQUNLDQo+ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+PiArICBRdWV1ZURwYyAo VFBMX0NBTExCQUNLLCBIdHRwSW9Ob3RpZnlEcGMsIENvbnRleHQpOyB9DQo+ID4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+PiArICBEZXN0cm95IHRoZSBIVFRQX0lPIGFuZCByZWxl YXNlIHRoZSByZXNvdXJjZXMuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0g IEh0dHBJbyAgICAgICAgICBUaGUgSFRUUF9JTyB3aGljaCB3cmFwcyB0aGUgSFRUUA0KPiBzZXJ2 aWNlDQo+ID4+IHRvDQo+ID4+Pj4gYmUNCj4gPj4+Pj4+IGRlc3Ryb3llZC4NCj4gPj4+Pj4+PiAr DQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtWT0lEDQo+ID4+Pj4+Pj4gK0h0dHBJb0Rlc3Ry b3lJbyAoDQo+ID4+Pj4+Pj4gKyAgSU4gSFRUUF9JTyAgICAgICAgICAgICAgICAqSHR0cElvDQo+ ID4+Pj4+Pj4gKyAgKQ0KPiA+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfUFJPVE9D T0wgICAgICAgICAqSHR0cDsNCj4gPj4+Pj4+PiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAg IEV2ZW50Ow0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBpZiAoSHR0cElvID09IE5VTEwpIHsN Cj4gPj4+Pj4+PiArICAgIHJldHVybjsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICsgIEV2ZW50ID0gSHR0cElvLT5SZXFUb2tlbi5FdmVudDsNCj4gPj4+Pj4+PiArICBp ZiAoRXZlbnQgIT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgZ0JTLT5DbG9zZUV2ZW50IChFdmVu dCk7DQo+ID4+Pj4+Pj4gKyAgfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBFdmVudCA9IEh0 dHBJby0+UnNwVG9rZW4uRXZlbnQ7DQo+ID4+Pj4+Pj4gKyAgaWYgKEV2ZW50ICE9IE5VTEwpIHsN Cj4gPj4+Pj4+PiArICAgIGdCUy0+Q2xvc2VFdmVudCAoRXZlbnQpOw0KPiA+Pj4+Pj4+ICsgIH0N Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgRXZlbnQgPSBIdHRwSW8tPlRpbWVvdXRFdmVudDsN Cj4gPj4+Pj4+PiArICBpZiAoRXZlbnQgIT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgZ0JTLT5D bG9zZUV2ZW50IChFdmVudCk7DQo+ID4+Pj4+Pj4gKyAgfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+ PiArICBIdHRwID0gSHR0cElvLT5IdHRwOw0KPiA+Pj4+Pj4+ICsgIGlmIChIdHRwICE9IE5VTEwp IHsNCj4gPj4+Pj4+PiArICAgIEh0dHAtPkNvbmZpZ3VyZSAoSHR0cCwgTlVMTCk7DQo+ID4+Pj4+ Pj4gKyAgICBnQlMtPkNsb3NlUHJvdG9jb2wgKA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgIEh0dHBJ by0+SGFuZGxlLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICZnRWZpSHR0cFByb3RvY29sR3VpZCwN Cj4gPj4+Pj4+PiArICAgICAgICAgICBIdHRwSW8tPkltYWdlLA0KPiA+Pj4+Pj4+ICsgICAgICAg ICAgIEh0dHBJby0+Q29udHJvbGxlcg0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICk7DQo+ID4+Pj4+ Pj4gKyAgfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBOZXRMaWJEZXN0cm95U2VydmljZUNo aWxkICgNCj4gPj4+Pj4+PiArICAgIEh0dHBJby0+Q29udHJvbGxlciwNCj4gPj4+Pj4+PiArICAg IEh0dHBJby0+SW1hZ2UsDQo+ID4+Pj4+Pj4gKyAgICAmZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1By b3RvY29sR3VpZCwNCj4gPj4+Pj4+PiArICAgIEh0dHBJby0+SGFuZGxlDQo+ID4+Pj4+Pj4gKyAg ICApOw0KPiA+Pj4+Pj4+ICt9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsvKioNCj4gPj4+Pj4+ PiArICBDcmVhdGUgYSBIVFRQX0lPIHRvIGFjY2VzcyB0aGUgSFRUUCBzZXJ2aWNlLiBJdCB3aWxs IGNyZWF0ZSBhbmQNCj4gPj4+Pj4+PiArY29uZmlndXJlDQo+ID4+Pj4+Pj4gKyAgYSBIVFRQIGNo aWxkIGhhbmRsZS4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgSW1hZ2Ug ICAgICAgICAgVGhlIGhhbmRsZSBvZiB0aGUgZHJpdmVyIGltYWdlLg0KPiA+Pj4+Pj4+ICsgIEBw YXJhbVtpbl0gIENvbnRyb2xsZXIgICAgIFRoZSBoYW5kbGUgb2YgdGhlIGNvbnRyb2xsZXIuDQo+ ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgSXBWZXJzaW9uICAgICAgSVBfVkVSU0lPTl80IG9yIElQ X1ZFUlNJT05fNi4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICBDb25maWdEYXRhICAgICBUaGUg SFRUUF9JTyBjb25maWd1cmF0aW9uIGRhdGEgLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwgbWVhbnMgbm90IHRvIGNvbmZpZ3VyZSB0aGUgSFRUUCBjaGlsZC4N Cj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICBDYWxsYmFjayAgICAgICBDYWxsYmFjayBmdW5jdGlv biB3aGljaCB3aWxsIGJlIGludm9rZWQNCj4gPj4gd2hlbg0KPiA+Pj4+Pj4gc3BlY2lmaWVkDQo+ ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUF9JT19DQUxMQkFDS19F VkVOVCBoYXBwZW5lZC4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICBDb250ZXh0ICAgICAgICBU aGUgQ29udGV4dCBkYXRhIHdoaWNoIHdpbGwgYmUgcGFzc2VkDQo+IHRvDQo+ID4+IHRoZQ0KPiA+ Pj4+Pj4gQ2FsbGJhY2sgZnVuY3Rpb24uDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW291dF0gSHR0cElv ICAgICAgICAgVGhlIEhUVFBfSU8uDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgSFRUUF9JTyBpcyBjcmVhdGVkIGFuZA0KPiBjb25m aWd1cmVkLg0KPiA+Pj4+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBPbmUg b3IgbW9yZSBwYXJhbWV0ZXJzIGFyZQ0KPiA+Pj4+IGludmFsaWQuDQo+ID4+Pj4+Pj4gKyAgQHJl dHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIE9uZSBvciBtb3JlIG9mIHRoZSBjb250cm9sDQo+ IG9wdGlvbnMNCj4gPj4+PiBhcmUNCj4gPj4+Pj4+IG5vdA0KPiA+Pj4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uLg0K PiA+Pj4+Pj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBGYWlsZWQgdG8gYWxs b2NhdGUgbWVtb3J5Lg0KPiA+Pj4+Pj4+ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgICAg ICBGYWlsZWQgdG8gY3JlYXRlIHRoZSBIVFRQX0lPIG9yIGNvbmZpZ3VyZQ0KPiBpdC4NCj4gPj4+ Pj4+PiArDQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+Pj4g K0h0dHBJb0NyZWF0ZUlvICgNCj4gPj4+Pj4+PiArICBJTiBFRklfSEFORExFICAgICAgICAgICAg IEltYWdlLA0KPiA+Pj4+Pj4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgQ29udHJvbGxl ciwNCj4gPj4+Pj4+PiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgIElwVmVyc2lvbiwNCj4g Pj4+Pj4+PiArICBJTiBIVFRQX0lPX0NPTkZJR19EQVRBICAgICpDb25maWdEYXRhLCBPUFRJT05B TA0KPiA+Pj4+Pj4+ICsgIElOIEhUVFBfSU9fQ0FMTEJBQ0sgICAgICAgQ2FsbGJhY2ssDQo+ID4+ Pj4+Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAqQ29udGV4dCwNCj4gPj4+Pj4+PiAr ICBPVVQgSFRUUF9JTyAgICAgICAgICAgICAgICpIdHRwSW8NCj4gPj4+Pj4+PiArICApDQo+ID4+ Pj4+Pj4gK3sNCj4gPj4+Pj4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPj4+Pj4+PiArICBFRklfSFRUUF9DT05GSUdfREFUQSAgICAgIEh0dHBDb25maWdEYXRhOw0K PiA+Pj4+Pj4+ICsgIEVGSV9IVFRQdjRfQUNDRVNTX1BPSU5UICAgSHR0cDRBY2Nlc3NQb2ludDsN Cj4gPj4+Pj4+PiArICBFRklfSFRUUHY2X0FDQ0VTU19QT0lOVCAgIEh0dHA2QWNjZXNzUG9pbnQ7 DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfUFJPVE9DT0wgICAgICAgICAqSHR0cDsNCj4gPj4+Pj4+ PiArICBFRklfRVZFTlQgICAgICAgICAgICAgICAgIEV2ZW50Ow0KPiA+Pj4+Pj4+ICsNCj4gPj4+ Pj4+PiArICBpZiAoKEltYWdlID09IE5VTEwpIHx8IChDb250cm9sbGVyID09IE5VTEwpIHx8IChI dHRwSW8gPT0gTlVMTCkpDQo+IHsNCj4gPj4+Pj4+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9Q QVJBTUVURVI7DQo+ID4+Pj4+Pj4gKyAgfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBpZiAo SXBWZXJzaW9uICE9IElQX1ZFUlNJT05fNCAmJiBJcFZlcnNpb24gIT0gSVBfVkVSU0lPTl82KSB7 DQo+ID4+Pj4+Pj4gKyAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+Pj4+Pj4+ICsgIH0N Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgWmVyb01lbSAoSHR0cElvLCBzaXplb2YgKEhUVFBf SU8pKTsgIFplcm9NZW0NCj4gKCZIdHRwQ29uZmlnRGF0YSwNCj4gPj4+Pj4+PiArIHNpemVvZiAo RUZJX0hUVFBfQ09ORklHX0RBVEEpKTsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgLy8NCj4g Pj4+Pj4+PiArICAvLyBDcmVhdGUgdGhlIEhUVFAgY2hpbGQgaW5zdGFuY2UgYW5kIGdldCB0aGUg SFRUUCBwcm90b2NvbC4NCj4gPj4+Pj4+PiArICAvLw0KPiA+Pj4+Pj4+ICsgIFN0YXR1cyA9IE5l dExpYkNyZWF0ZVNlcnZpY2VDaGlsZCAoDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICBDb250cm9s bGVyLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgSW1hZ2UsDQo+ID4+Pj4+Pj4gKyAgICAgICAg ICAgICAmZ0VmaUh0dHBTZXJ2aWNlQmluZGluZ1Byb3RvY29sR3VpZCwNCj4gPj4+Pj4+PiArICAg ICAgICAgICAgICZIdHRwSW8tPkhhbmRsZQ0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgKTsNCj4g Pj4+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+Pj4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgU3Rh dHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICBI dHRwSW8tPkhhbmRsZSwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgJmdFZmlIdHRwUHJv dG9jb2xHdWlkLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkh0dHAs DQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgIEltYWdlLA0KPiA+Pj4+Pj4+ICsgICAgICAg ICAgICAgICAgICBDb250cm9sbGVyLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICBFRklf T1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgKTsN Cj4gPj4+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChIdHRwID09IE5VTEwpKSB7 DQo+ID4+Pj4+Pj4gKyAgICBnb3RvIE9OX0VSUk9SOw0KPiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+ PiArDQo+ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+PiArICAvLyBJbml0IHRoZSBjb25maWd1cmF0 aW9uIGRhdGEgYW5kIGNvbmZpZ3VyZSB0aGUgSFRUUCBjaGlsZC4NCj4gPj4+Pj4+PiArICAvLw0K PiA+Pj4+Pj4+ICsgIEh0dHBJby0+SW1hZ2UgICAgICAgPSBJbWFnZTsNCj4gPj4+Pj4+PiArICBI dHRwSW8tPkNvbnRyb2xsZXIgID0gQ29udHJvbGxlcjsNCj4gPj4+Pj4+PiArICBIdHRwSW8tPklw VmVyc2lvbiAgID0gSXBWZXJzaW9uOw0KPiA+Pj4+Pj4+ICsgIEh0dHBJby0+SHR0cCAgICAgICAg PSBIdHRwOw0KPiA+Pj4+Pj4+ICsgIEh0dHBJby0+Q2FsbGJhY2sgICAgPSBDYWxsYmFjazsNCj4g Pj4+Pj4+PiArICBIdHRwSW8tPkNvbnRleHQgICAgID0gQ29udGV4dDsNCj4gPj4+Pj4+PiArDQo+ ID4+Pj4+Pj4gKyAgaWYgKENvbmZpZ0RhdGEgIT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgaWYg KEh0dHBJby0+SXBWZXJzaW9uID09IElQX1ZFUlNJT05fNCkgew0KPiA+Pj4+Pj4+ICsgICAgICBI dHRwQ29uZmlnRGF0YS5Mb2NhbEFkZHJlc3NJc0lQdjYgID0gRkFMU0U7DQo+ID4+Pj4+Pj4gKyAg ICAgIEh0dHBDb25maWdEYXRhLkh0dHBWZXJzaW9uICAgICAgICAgPSBDb25maWdEYXRhLQ0KPiA+ Pj4gQ29uZmlnNC5IdHRwVmVyc2lvbjsNCj4gPj4+Pj4+PiArICAgICAgSHR0cENvbmZpZ0RhdGEu VGltZU91dE1pbGxpc2VjICAgICA9IENvbmZpZ0RhdGEtDQo+ID4+Pj4+Pj4gQ29uZmlnNC5SZXF1 ZXN0VGltZU91dDsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgICAgIEh0dHA0QWNjZXNzUG9p bnQuVXNlRGVmYXVsdEFkZHJlc3MgPSBDb25maWdEYXRhLQ0KPiA+Pj4+Pj4+IENvbmZpZzQuVXNl RGVmYXVsdEFkZHJlc3M7DQo+ID4+Pj4+Pj4gKyAgICAgIEh0dHA0QWNjZXNzUG9pbnQuTG9jYWxQ b3J0ICAgICAgICAgPSBDb25maWdEYXRhLQ0KPiA+Q29uZmlnNC5Mb2NhbFBvcnQ7DQo+ID4+Pj4+ Pj4gKyAgICAgIElQNF9DT1BZX0FERFJFU1MgKCZIdHRwNEFjY2Vzc1BvaW50LkxvY2FsQWRkcmVz cywNCj4gPj4+PiAmQ29uZmlnRGF0YS0NCj4gPj4+Pj4+PiBDb25maWc0LkxvY2FsSXApOw0KPiA+ Pj4+Pj4+ICsgICAgICBJUDRfQ09QWV9BRERSRVNTICgmSHR0cDRBY2Nlc3NQb2ludC5Mb2NhbFN1 Ym5ldCwNCj4gPj4gJkNvbmZpZ0RhdGEtDQo+ID4+Pj4+Pj4gQ29uZmlnNC5TdWJuZXRNYXNrKTsN Cj4gPj4+Pj4+PiArICAgICAgSHR0cENvbmZpZ0RhdGEuQWNjZXNzUG9pbnQuSVB2NE5vZGUgPSAm SHR0cDRBY2Nlc3NQb2ludDsNCj4gPj4+Pj4+PiArICAgIH0gZWxzZSB7DQo+ID4+Pj4+Pj4gKyAg ICAgIEh0dHBDb25maWdEYXRhLkxvY2FsQWRkcmVzc0lzSVB2NiA9IFRSVUU7DQo+ID4+Pj4+Pj4g KyAgICAgIEh0dHBDb25maWdEYXRhLkh0dHBWZXJzaW9uICAgICAgICAgPSBDb25maWdEYXRhLQ0K PiA+Pj4gQ29uZmlnNi5IdHRwVmVyc2lvbjsNCj4gPj4+Pj4+PiArICAgICAgSHR0cENvbmZpZ0Rh dGEuVGltZU91dE1pbGxpc2VjICAgICA9IENvbmZpZ0RhdGEtDQo+ID4+Pj4+Pj4gQ29uZmlnNi5S ZXF1ZXN0VGltZU91dDsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgICAgIEh0dHA2QWNjZXNz UG9pbnQuTG9jYWxQb3J0ICAgICAgICAgPSBDb25maWdEYXRhLQ0KPiA+Q29uZmlnNi5Mb2NhbFBv cnQ7DQo+ID4+Pj4+Pj4gKyAgICAgIElQNl9DT1BZX0FERFJFU1MgKCZIdHRwNkFjY2Vzc1BvaW50 LkxvY2FsQWRkcmVzcywNCj4gPj4+PiAmQ29uZmlnRGF0YS0NCj4gPj4+Pj4+PiBDb25maWc2Lkxv Y2FsSXApOw0KPiA+Pj4+Pj4+ICsgICAgICBIdHRwQ29uZmlnRGF0YS5BY2Nlc3NQb2ludC5JUHY2 Tm9kZSA9ICZIdHRwNkFjY2Vzc1BvaW50Ow0KPiA+Pj4+Pj4+ICsgICAgfQ0KPiA+Pj4+Pj4+ICsN Cj4gPj4+Pj4+PiArICAgIFN0YXR1cyA9IEh0dHAtPkNvbmZpZ3VyZSAoSHR0cCwgJkh0dHBDb25m aWdEYXRhKTsNCj4gPj4+Pj4+PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+ Pj4+PiArICAgICAgZ290byBPTl9FUlJPUjsNCj4gPj4+Pj4+PiArICAgIH0NCj4gPj4+Pj4+PiAr ICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIC8vDQo+ID4+Pj4+Pj4gKyAgLy8gQ3JlYXRl IGV2ZW50cyBmb3IgdmFyaXVvcyBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy4NCj4gPj4+Pj4+PiAr ICAvLw0KPiA+Pj4+Pj4+ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQgKA0KPiA+Pj4+Pj4+ ICsgICAgICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCj4gPj4+Pj4+PiArICAgICAg ICAgICAgICAgICAgVFBMX05PVElGWSwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgSHR0 cElvTm90aWZ5LA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAmSHR0cElvLT5Jc1R4RG9u ZSwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgJkV2ZW50DQo+ID4+Pj4+Pj4gKyAgICAg ICAgICAgICAgICAgICk7DQo+ID4+Pj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+Pj4+Pj4+ICsgICAgZ290byBPTl9FUlJPUjsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4g KyAgSHR0cElvLT5SZXFUb2tlbi5FdmVudCA9IEV2ZW50Ow0KPiA+Pj4+Pj4+ICsgIEh0dHBJby0+ UmVxVG9rZW4uTWVzc2FnZSA9ICZIdHRwSW8tPlJlcU1lc3NhZ2U7DQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICsgIFN0YXR1cyA9IGdCUy0+Q3JlYXRlRXZlbnQgKA0KPiA+Pj4+Pj4+ICsgICAgICAg ICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAg ICAgVFBMX05PVElGWSwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgSHR0cElvTm90aWZ5 LA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAmSHR0cElvLT5Jc1J4RG9uZSwNCj4gPj4+ Pj4+PiArICAgICAgICAgICAgICAgICAgJkV2ZW50DQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAg ICAgICk7DQo+ID4+Pj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+Pj4+ ICsgICAgZ290byBPTl9FUlJPUjsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKyAgSHR0cElv LT5Sc3BUb2tlbi5FdmVudCA9IEV2ZW50Ow0KPiA+Pj4+Pj4+ICsgIEh0dHBJby0+UnNwVG9rZW4u TWVzc2FnZSA9ICZIdHRwSW8tPlJzcE1lc3NhZ2U7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsg IC8vDQo+ID4+Pj4+Pj4gKyAgLy8gQ3JlYXRlIFRpbWVvdXRFdmVudCBmb3IgcmVzcG9uc2UgIC8v ICBTdGF0dXMgPSBnQlMtDQo+ID5DcmVhdGVFdmVudA0KPiA+Pj4+Pj4+ICsgKA0KPiA+Pj4+Pj4+ ICsgICAgICAgICAgICAgICAgICBFVlRfVElNRVIsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAg ICAgIFRQTF9DQUxMQkFDSywNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4g Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPj4+Pj4+PiArICAgICAgICAgICAg ICAgICAgJkV2ZW50DQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+Pj4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+Pj4+ICsgICAgZ290byBPTl9FUlJP UjsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKyAgSHR0cElvLT5UaW1lb3V0RXZlbnQgPSBF dmVudDsNCj4gPj4+Pj4+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICtPTl9FUlJPUjoNCj4gPj4+Pj4+PiArICBIdHRwSW9EZXN0cm95SW8gKEh0dHBJbyk7 DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+Pj4gK30N Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKy8qKg0KPiA+Pj4+Pj4+ICsgIFN5bmNocm9ub3VzbHkg c2VuZCBhIEhUVFAgUkVRVUVTVCBtZXNzYWdlIHRvIHRoZSBzZXJ2ZXIuDQo+ID4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gICBIdHRwSW8gICAgICAgICAgIFRoZSBIdHRwSW8gd3Jh cHBpbmcgdGhlIEhUVFAgc2VydmljZS4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICAgUmVxdWVz dCAgICAgICAgICBBIHBvaW50ZXIgdG8gc3RvcmFnZSBzdWNoIGRhdGEgYXMgVVJMDQo+ID4+IGFu ZA0KPiA+Pj4+Pj4gSFRUUCBtZXRob2QuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIEhlYWRl ckNvdW50ICAgICAgTnVtYmVyIG9mIEhUVFAgaGVhZGVyIHN0cnVjdHVyZXMNCj4gaW4NCj4gPj4+ Pj4+IEhlYWRlcnMgbGlzdC4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICAgSGVhZGVycyAgICAg ICAgICBBcnJheSBjb250YWluaW5nIGxpc3Qgb2YgSFRUUCBoZWFkZXJzLg0KPiA+Pj4+Pj4+ICsg IEBwYXJhbVtpbl0gICBCb2R5TGVuZ3RoICAgICAgIExlbmd0aCBpbiBieXRlcyBvZiB0aGUgSFRU UCBib2R5Lg0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gICBCb2R5ICAgICAgICAgICAgIEJvZHkg YXNzb2NpYXRlZCB3aXRoIHRoZSBIVFRQIHJlcXVlc3QuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgSFRUUCByZXF1ZXN0IGlzIHRy YXNtaXR0ZWQuDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIE9u ZSBvciBtb3JlIHBhcmFtZXRlcnMgYXJlDQo+ID4+Pj4gaW52YWxpZC4NCj4gPj4+Pj4+PiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeS4N Cj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgQW4gdW5leHBlY3Rl ZCBuZXR3b3JrIG9yDQo+IHN5c3RlbQ0KPiA+Pj4+IGVycm9yDQo+ID4+Pj4+PiBvY2N1cnJlZC4N Cj4gPj4+Pj4+PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICAgT3RoZXIgZXJyb3Jz IGFzIGluZGljYXRlZC4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyoqLw0KPiA+Pj4+Pj4+ICtF RklfU1RBVFVTDQo+ID4+Pj4+Pj4gK0h0dHBJb1NlbmRSZXF1ZXN0ICgNCj4gPj4+Pj4+PiArICBJ TiAgSFRUUF9JTyAgICAgICAgICAgICAgICAqSHR0cElvLA0KPiA+Pj4+Pj4+ICsgIElOICBFRklf SFRUUF9SRVFVRVNUX0RBVEEgICpSZXF1ZXN0LA0KPiA+Pj4+Pj4+ICsgIElOICBVSU5UTiAgICAg ICAgICAgICAgICAgIEhlYWRlckNvdW50LA0KPiA+Pj4+Pj4+ICsgIElOICBFRklfSFRUUF9IRUFE RVIgICAgICAgICpIZWFkZXJzLA0KPiA+Pj4+Pj4+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAg ICAgIEJvZHlMZW5ndGgsDQo+ID4+Pj4+Pj4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICAg KkJvZHkNCj4gPj4+Pj4+PiArICApDQo+ID4+Pj4+Pj4gK3sNCj4gPj4+Pj4+PiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfUFJPVE9D T0wgICAgICAgICAgKkh0dHA7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIGlmIChIdHRwSW8g PT0gTlVMTCB8fCBIdHRwSW8tPkh0dHAgPT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICsgIEh0dHBJby0+UmVxVG9rZW4uU3RhdHVzICA9IEVGSV9OT1RfUkVBRFk7DQo+ID4+ Pj4+Pj4gKyBIdHRwSW8tPlJlcVRva2VuLk1lc3NhZ2UtPkRhdGEuUmVxdWVzdCA9IFJlcXVlc3Q7 DQo+ID4+Pj4+Pj4gKyBIdHRwSW8tPlJlcVRva2VuLk1lc3NhZ2UtPkhlYWRlckNvdW50ICA9IEhl YWRlckNvdW50Ow0KPiA+Pj4+Pj4+ICsgIEh0dHBJby0+UmVxVG9rZW4uTWVzc2FnZS0+SGVhZGVy cyAgICAgID0gSGVhZGVyczsNCj4gPj4+Pj4+PiArICBIdHRwSW8tPlJlcVRva2VuLk1lc3NhZ2Ut PkJvZHlMZW5ndGggICA9IEJvZHlMZW5ndGg7DQo+ID4+Pj4+Pj4gKyAgSHR0cElvLT5SZXFUb2tl bi5NZXNzYWdlLT5Cb2R5ICAgICAgICAgPSBCb2R5Ow0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAr ICBpZiAoSHR0cElvLT5DYWxsYmFjayAhPSBOVUxMKSB7DQo+ID4+Pj4+Pj4gKyAgICBTdGF0dXMg PSBIdHRwSW8tPkNhbGxiYWNrICgNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgSHR0cElvUmVx dWVzdCwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgSHR0cElvLT5SZXFUb2tlbi5NZXNzYWdl LA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICBIdHRwSW8tPkNvbnRleHQNCj4gPj4+Pj4+PiAr ICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4+PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPj4+Pj4+PiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4+PiArICAgIH0NCj4g Pj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIC8vDQo+ID4+Pj4+Pj4gKyAg Ly8gUXVldWUgdGhlIHJlcXVlc3QgdG9rZW4gdG8gSFRUUCBpbnN0YW5jZXMuDQo+ID4+Pj4+Pj4g KyAgLy8NCj4gPj4+Pj4+PiArICBIdHRwID0gSHR0cElvLT5IdHRwOw0KPiA+Pj4+Pj4+ICsgIEh0 dHBJby0+SXNUeERvbmUgPSBGQUxTRTsNCj4gPj4+Pj4+PiArICBTdGF0dXMgPSBIdHRwLT5SZXF1 ZXN0ICgNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgIEh0dHAsDQo+ID4+Pj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAmSHR0cElvLT5SZXFUb2tlbg0KPiA+Pj4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgKTsNCj4gPj4+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+ Pj4+Pj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+PiArDQo+ ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+PiArICAvLyBQb2xsIHRoZSBuZXR3b3JrIHVudGlsIHRy YW5zbWl0IGZpbmlzaC4NCj4gPj4+Pj4+PiArICAvLw0KPiA+Pj4+Pj4+ICsgIHdoaWxlICghSHR0 cElvLT5Jc1R4RG9uZSkgew0KPiA+Pj4+Pj4+ICsgICAgSHR0cC0+UG9sbCAoSHR0cCk7DQo+ID4+ Pj4+Pj4gKyAgfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICByZXR1cm4gSHR0cElvLT5SZXFU b2tlbi5TdGF0dXM7DQo+ID4+Pj4+Pj4gK30NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKy8qKg0K PiA+Pj4+Pj4+ICsgIFN5bmNocm9ub3VzbHkgcmVjZWl2ZSBhIEhUVFAgUkVTUE9OU0UgbWVzc2Fn ZSBmcm9tIHRoZQ0KPiBzZXJ2ZXIuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtp bl0gICBIdHRwSW8gICAgICAgICAgIFRoZSBIdHRwSW8gd3JhcHBpbmcgdGhlIEhUVFAgc2Vydmlj ZS4NCj4gPj4+Pj4+PiArICBAcGFyYW1baW5dICAgUmVjdk1zZ0hlYWRlciAgICBUUlVFIHRvIHJl Y2VpdmUgYSBuZXcgSFRUUA0KPiA+PiByZXNwb25zZQ0KPiA+Pj4+Pj4gKGZyb20gbWVzc2FnZSBo ZWFkZXIpLg0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF IHRvIGNvbnRpbnVlIHJlY2VpdmUgdGhlIHByZXZpb3VzIHJlc3BvbnNlDQo+ID4+Pj4gbWVzc2Fn ZS4NCj4gPj4+Pj4+PiArICBAcGFyYW1bb3V0XSAgUmVzcG9uc2VEYXRhICAgICBQb2ludCB0byBh IHdyYXBwZXIgb2YgdGhlDQo+IHJlY2VpdmVkDQo+ID4+Pj4+PiByZXNwb25zZSBkYXRhLg0KPiA+ Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhl IEhUVFAgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIHBhcmFtZXRlcnMgYXJlDQo+ID4+Pj4gaW52YWxp ZC4NCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgRmFpbGVkIHRv IGFsbG9jYXRlIG1lbW9yeS4NCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1Ig ICAgICAgQW4gdW5leHBlY3RlZCBuZXR3b3JrIG9yDQo+IHN5c3RlbQ0KPiA+Pj4+IGVycm9yDQo+ ID4+Pj4+PiBvY2N1cnJlZC4NCj4gPj4+Pj4+PiArICBAcmV0dmFsIE90aGVycyAgICAgICAgICAg ICAgICAgT3RoZXIgZXJyb3JzIGFzIGluZGljYXRlZC4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4g KyoqLw0KPiA+Pj4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+Pj4gK0h0dHBJb1JlY3ZSZXNwb25z ZSAoDQo+ID4+Pj4+Pj4gKyAgSU4gICAgICBIVFRQX0lPICAgICAgICAgICAgICAgICAgKkh0dHBJ bywNCj4gPj4+Pj4+PiArICBJTiAgICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICBSZWN2TXNn SGVhZGVyLA0KPiA+Pj4+Pj4+ICsgIE9VVCAgICAgSFRUUF9JT19SRVNQT05TRV9EQVRBICAgICpS ZXNwb25zZURhdGENCj4gPj4+Pj4+PiArICApDQo+ID4+Pj4+Pj4gK3sNCj4gPj4+Pj4+PiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBf UFJPVE9DT0wgICAgICAgICAgKkh0dHA7DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIGlmIChI dHRwSW8gPT0gTlVMTCB8fCBIdHRwSW8tPkh0dHAgPT0gTlVMTCB8fCBSZXNwb25zZURhdGEgPT0N Cj4gPj4gTlVMTCkNCj4gPj4+PiB7DQo+ID4+Pj4+Pj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOw0KPiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgLy8N Cj4gPj4+Pj4+PiArICAvLyBDcmVhdGUgbmV3IFRpbWVvdXRFdmVudCBmb3IgcmVzcG9uc2UgIC8v ICBpZg0KPiA+Pj4+Pj4+ICsgKEh0dHBJby0+VGltZW91dEV2ZW50ICE9IE5VTEwpIHsNCj4gPj4+ Pj4+PiArICAgIGdCUy0+Q2xvc2VFdmVudCAoSHR0cElvLT5UaW1lb3V0RXZlbnQpOw0KPiA+Pj4+ Pj4+ICsgICAgSHR0cElvLT5UaW1lb3V0RXZlbnQgPSBOVUxMOw0KPiA+Pj4+Pj4+ICsgIH0NCj4g Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoDQo+ID4+ Pj4+Pj4gKyAgICAgICAgICAgICAgICAgIEVWVF9USU1FUiwNCj4gPj4+Pj4+PiArICAgICAgICAg ICAgICAgICAgVFBMX0NBTExCQUNLLA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICBOVUxM LA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+Pj4+Pj4+ICsgICAgICAg ICAgICAgICAgICAmSHR0cElvLT5UaW1lb3V0RXZlbnQNCj4gPj4+Pj4+PiArICAgICAgICAgICAg ICAgICAgKTsNCj4gPj4+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ Pj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+IElzIGl0IG5l Y2Vzc2FyeSB0byByZWNyZWF0ZSB0aGUgZXZlbnQ/IFdvdWxkbid0IHRoaXMgYmUgZW5vdWdoIHRv DQo+IHJlc2V0DQo+ID4+IGl0Pw0KPiA+Pj4+PiBObywgd2UgZG9u4oCZdCBoYXZlIHRvIHJlY3Jl YXRlIHRoaXMgZXZlbnQuDQo+ID4+Pj4+PiBnQlMtPlNldFRpbWVyIChIdHRwSW8tPlRpbWVvdXRF dmVudCwgVGltZXJDYW5jZWwsIDApOw0KPiA+Pj4+PiBJIG1hZGUgc29tZSBjaGFuZ2VzIGluIHRo aXMgZnVuY3Rpb24uDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIC8vDQo+ID4+Pj4+Pj4gKyAg Ly8gU3RhcnQgdGhlIHRpbWVyLCBhbmQgd2FpdCBUaW1lb3V0IHNlY29uZHMgdG8gcmVjZWl2ZSB0 aGUNCj4gaGVhZGVyDQo+ID4+Pj4+PiBwYWNrZXQuDQo+ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+ PiArICBTdGF0dXMgPSBnQlMtPlNldFRpbWVyIChIdHRwSW8tPlRpbWVvdXRFdmVudCwgVGltZXJS ZWxhdGl2ZSwNCj4gPj4+Pj4+PiArIEh0dHBJby0+VGltZW91dCAqIFRJQ0tTX1BFUl9NUyk7ICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+Pj4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+PiAr ICAvLyBRdWV1ZSB0aGUgcmVzcG9uc2UgdG9rZW4gdG8gSFRUUCBpbnN0YW5jZXMuDQo+ID4+Pj4+ Pj4gKyAgLy8NCj4gPj4+Pj4+PiArICBIdHRwSW8tPlJzcFRva2VuLlN0YXR1cyAgPSBFRklfTk9U X1JFQURZOyAgaWYNCj4gKFJlY3ZNc2dIZWFkZXIpIHsNCj4gPj4+Pj4+PiArICAgIEh0dHBJby0+ UnNwVG9rZW4uTWVzc2FnZS0+RGF0YS5SZXNwb25zZSA9DQo+ID4+Pj4+Pj4gKyAmUmVzcG9uc2VE YXRhLT5SZXNwb25zZTsgIH0gZWxzZSB7DQo+ID4+Pj4+Pj4gKyAgICBIdHRwSW8tPlJzcFRva2Vu Lk1lc3NhZ2UtPkRhdGEuUmVzcG9uc2UgPSBOVUxMOyAgfQ0KPiA+Pj4+Pj4+ICsgIEh0dHBJby0+ UnNwVG9rZW4uTWVzc2FnZS0+SGVhZGVyQ291bnQgICA9IDA7DQo+ID4+Pj4+Pj4gKyAgSHR0cElv LT5Sc3BUb2tlbi5NZXNzYWdlLT5IZWFkZXJzICAgICAgID0gTlVMTDsNCj4gPj4+Pj4+PiArICBI dHRwSW8tPlJzcFRva2VuLk1lc3NhZ2UtPkJvZHlMZW5ndGggICAgPSBSZXNwb25zZURhdGEtDQo+ ID4+Pj4+Pj4gQm9keUxlbmd0aDsNCj4gPj4+Pj4+PiArICBIdHRwSW8tPlJzcFRva2VuLk1lc3Nh Z2UtPkJvZHkgICAgICAgICAgPSBSZXNwb25zZURhdGEtPkJvZHk7DQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICsgIEh0dHAgPSBIdHRwSW8tPkh0dHA7DQo+ID4+Pj4+Pj4gKyAgSHR0cElvLT5Jc1J4 RG9uZSA9IEZBTFNFOw0KPiA+Pj4+Pj4+ICsgIFN0YXR1cyA9IEh0dHAtPlJlc3BvbnNlICgNCj4g Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgIEh0dHAsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAmSHR0cElvLT5Sc3BUb2tlbg0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg KTsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+Pj4+Pj4+ICsgICAgZ0JTLT5TZXRUaW1lciAoSHR0cElvLT5UaW1lb3V0RXZlbnQsIFRpbWVy Q2FuY2VsLCAwKTsNCj4gPj4+Pj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+Pj4gKyAg fQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICAvLw0KPiA+Pj4+Pj4+ICsgIC8vIFBvbGwgdGhl IG5ldHdvcmsgdW50aWwgcmVjZWl2ZSBmaW5pc2guDQo+ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+ PiArICB3aGlsZSAoIUh0dHBJby0+SXNSeERvbmUgJiYgKChIdHRwSW8tPlRpbWVvdXRFdmVudCA9 PSBOVUxMKQ0KPiB8fA0KPiA+Pj4+Pj4gRUZJX0VSUk9SIChnQlMtPkNoZWNrRXZlbnQgKEh0dHBJ by0+VGltZW91dEV2ZW50KSkpKSB7DQo+ID4+Pj4+Pj4gKyAgICBIdHRwLT5Qb2xsIChIdHRwKTsN Cj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIGdCUy0+U2V0VGltZXIg KEh0dHBJby0+VGltZW91dEV2ZW50LCBUaW1lckNhbmNlbCwgMCk7DQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICsgIGlmICghSHR0cElvLT5Jc1J4RG9uZSkgew0KPiA+Pj4+Pj4+ICsgICAgLy8NCj4g Pj4+Pj4+PiArICAgIC8vIFRpbWVvdXQgb2NjdXJzLCBjYW5jZWwgdGhlIHJlc3BvbnNlIHRva2Vu Lg0KPiA+Pj4+Pj4+ICsgICAgLy8NCj4gPj4+Pj4+PiArICAgIEh0dHAtPkNhbmNlbCAoSHR0cCwg Jkh0dHBJby0+UnNwVG9rZW4pOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICAgIFN0YXR1cyA9 IEVGSV9USU1FT1VUOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICAgIHJldHVybiBTdGF0dXM7 DQo+ID4+Pj4+Pj4gKyAgfSBlbHNlIHsNCj4gPj4+Pj4+PiArICAgIEh0dHBJby0+SXNSeERvbmUg PSBGQUxTRTsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIGlmICgo SHR0cElvLT5DYWxsYmFjayAhPSBOVUxMKSAmJg0KPiA+Pj4+Pj4+ICsgICAgICAoSHR0cElvLT5S c3BUb2tlbi5TdGF0dXMgPT0gRUZJX1NVQ0NFU1MgfHwgSHR0cElvLQ0KPiA+Pj4+Pj4+IFJzcFRv a2VuLlN0YXR1cyA9PSBFRklfSFRUUF9FUlJPUikpIHsNCj4gPj4+Pj4+PiArICAgIFN0YXR1cyA9 IEh0dHBJby0+Q2FsbGJhY2sgKA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICBIdHRwSW9SZXNw b25zZSwNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgSHR0cElvLT5Sc3BUb2tlbi5NZXNzYWdl LA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICBIdHRwSW8tPkNvbnRleHQNCj4gPj4+Pj4+PiAr ICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4+PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPj4+Pj4+PiArICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4+PiArICAgIH0NCj4g Pj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIC8vDQo+ID4+Pj4+Pj4gKyAg Ly8gU3RvcmUgdGhlIHJlY2VpdmVkIGRhdGEgaW50byB0aGUgd3JhcHBlci4NCj4gPj4+Pj4+PiAr ICAvLw0KPiA+Pj4+Pj4+ICsgIFJlc3BvbnNlRGF0YS0+U3RhdHVzID0gSHR0cElvLT5Sc3BUb2tl bi5TdGF0dXM7DQo+ID4+Pj4+Pj4gKyBSZXNwb25zZURhdGEtPkhlYWRlckNvdW50ID0gSHR0cElv LT5Sc3BUb2tlbi5NZXNzYWdlLQ0KPiA+Pj4+Pj4+IEhlYWRlckNvdW50Ow0KPiA+Pj4+Pj4+ICsg IFJlc3BvbnNlRGF0YS0+SGVhZGVycyAgICAgPSBIdHRwSW8tPlJzcFRva2VuLk1lc3NhZ2UtDQo+ ID5IZWFkZXJzOw0KPiA+Pj4+Pj4+ICsgIFJlc3BvbnNlRGF0YS0+Qm9keUxlbmd0aCAgPSBIdHRw SW8tPlJzcFRva2VuLk1lc3NhZ2UtDQo+ID4+Pj4+Pj4gQm9keUxlbmd0aDsNCj4gPj4+Pj4+PiAr DQo+ID4+Pj4+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+ICsN Cj4gPj4+Pj4+PiArLyoqDQo+ID4+Pj4+Pj4gKyAgR2V0IHRoZSB2YWx1ZSBvZiB0aGUgY29udGVu dCBsZW5ndGggaWYgdGhlcmUgaXMgYSAiQ29udGVudC0NCj4gTGVuZ3RoIg0KPiA+Pj4+IGhlYWRl ci4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgICBIZWFkZXJDb3VudCAg ICAgICAgTnVtYmVyIG9mIEhUVFAgaGVhZGVyDQo+IHN0cnVjdHVyZXMNCj4gPj4gaW4NCj4gPj4+ Pj4+IEhlYWRlcnMuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgICBIZWFkZXJzICAgICAgICAg ICAgQXJyYXkgY29udGFpbmluZyBsaXN0IG9mIEhUVFAgaGVhZGVycy4NCj4gPj4+Pj4+PiArICBA cGFyYW1bb3V0XSAgIENvbnRlbnRMZW5ndGggICAgICBQb2ludGVyIHRvIHNhdmUgdGhlIHZhbHVl IG9mIHRoZQ0KPiA+Pj4+IGNvbnRlbnQNCj4gPj4+Pj4+IGxlbmd0aC4NCj4gPj4+Pj4+PiArDQo+ ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgU3VjY2Vzc2Z1bGx5 IGdldCB0aGUgY29udGVudCBsZW5ndGguDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfTk9UX0ZP VU5EICAgICAgICAgICAgTm8gIkNvbnRlbnQtTGVuZ3RoIiBoZWFkZXIgaW4NCj4gdGhlDQo+ID4+ Pj4+PiBIZWFkZXJzLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArKiovDQo+ID4+Pj4+Pj4gK0VG SV9TVEFUVVMNCj4gPj4+Pj4+PiArSHR0cElvR2V0Q29udGVudExlbmd0aCAoDQo+ID4+Pj4+Pj4g KyAgSU4gICAgIFVJTlROICAgICAgICAgICAgICAgIEhlYWRlckNvdW50LA0KPiA+Pj4+Pj4+ICsg IElOICAgICBFRklfSFRUUF9IRUFERVIgICAgICAqSGVhZGVycywNCj4gPj4+Pj4+PiArICBPVVQg ICAgVUlOVE4gICAgICAgICAgICAgICAgKkNvbnRlbnRMZW5ndGgNCj4gPj4+Pj4+PiArICApDQo+ ID4+Pj4+Pj4gK3sNCj4gPj4+Pj4+PiArICBFRklfSFRUUF9IRUFERVIgICAgICAgKkhlYWRlcjsN Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgSGVhZGVyID0gSHR0cEZpbmRIZWFkZXIgKEhlYWRl ckNvdW50LCBIZWFkZXJzLA0KPiA+Pj4+Pj4+ICsgSFRUUF9IRUFERVJfQ09OVEVOVF9MRU5HVEgp OyAgaWYgKEhlYWRlciA9PSBOVUxMKSB7DQo+ID4+Pj4+Pj4gKyAgICByZXR1cm4gRUZJX05PVF9G T1VORDsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIHJldHVybiBB c2NpaVN0ckRlY2ltYWxUb1VpbnRuUyAoSGVhZGVyLT5GaWVsZFZhbHVlLCAoQ0hBUjggKiopDQo+ ID4+Pj4+Pj4gK05VTEwsIENvbnRlbnRMZW5ndGgpOyB9DQo+ID4+Pj4+Pj4gKy8qKg0KPiA+Pj4+ Pj4+ICsgIFNlbmQgSFRUUCByZXF1ZXN0IGluIGNodW5rcy4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+ Pj4gKyAgQHBhcmFtW2luXSAgIEh0dHBJbyAgICAgICAgICAgICBUaGUgSHR0cElvIHdyYXBwaW5n IHRoZSBIVFRQIHNlcnZpY2UuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIFNlbmRDaHVua1By b2Nlc3MgICBQb2ludGVyIHRvIGN1cnJlbnQgY2h1bmsNCj4gcHJvY2Vzcw0KPiA+Pj4+Pj4gc3Rh dHVzLg0KPiA+Pj4+Pj4+ICsgIEBwYXJhbVtpbl0gICBSZXF1ZXN0TWVzc2FnZSAgICAgUmVxdWVz dCB0byBzZW5kLg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgIFN1Y2Nlc3NmdWxseSB0byBzZW5kIGNodW5rIGRhdGENCj4gPj4gYWNjb3Jk aW5nDQo+ID4+Pj4gdG8NCj4gPj4+Pj4+IFNlbmRDaHVua1Byb2Nlc3MuDQo+ID4+Pj4+Pj4gKyAg QHJldHZhbCBPdGhlciAgICAgICAgICAgICAgICAgICBPdGhlciBlcnJvcnMuDQo+ID4+Pj4+Pj4g Kw0KPiA+Pj4+Pj4+ICsqKi8NCj4gPj4+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+Pj4+ICtIdHRw SW9TZW5kQ2h1bmtlZFRyYW5zZmVyICgNCj4gPj4+Pj4+PiArICBJTiAgSFRUUF9JTyAgICAgICAg ICAgICAgICAgICAgKkh0dHBJbywNCj4gPj4+Pj4+PiArICBJTiAgSFRUUF9JT19TRU5EX0NIVU5L X1BST0NFU1MgKlNlbmRDaHVua1Byb2Nlc3MsDQo+ID4+Pj4+Pj4gKyAgSU4gIEVGSV9IVFRQX01F U1NBR0UgICAgICAgICAgICpSZXF1ZXN0TWVzc2FnZQ0KPiA+Pj4+Pj4+ICspDQo+ID4+Pj4+Pj4g K3sNCj4gPj4+Pj4+PiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4gPj4+Pj4+PiArICBFRklfSFRU UF9IRUFERVIgKk5ld0hlYWRlcnM7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfSEVBREVSICpDb250 ZW50TGVuZ3RoSGVhZGVyOw0KPiA+Pj4+Pj4+ICsgIFVJTlROIEFkZE5ld0hlYWRlcjsNCj4gPj4+ Pj4+PiArICBVSU5UTiBIZWFkZXJDb3VudDsNCj4gPj4+Pj4+PiArICBDSEFSOCAqTWVzc2FnZUJv ZHk7DQo+ID4+Pj4+Pj4gKyAgVUlOVE4gTWVzc2FnZUJvZHlMZW5ndGg7DQo+ID4+Pj4+Pj4gKyAg Q0hBUjggQ2h1bmtMZW5ndGhTdHIgW0hUVFBfSU9fQ0hVTktfU0laRV9TVFJJTkdfTEVOXTsNCj4g Pj4+Pj4+PiArICBFRklfSFRUUF9SRVFVRVNUX0RBVEEgKlNlbnRSZXF1ZXN0RGF0YTsNCj4gPj4+ Pj4+IFRoaXMgaXMgYSBuZXcgZnVuY3Rpb24gYW5kIEkgYWxyZWFkeSBzZWUgYSBkaWZmZXJlbmNl IGluIHRoZSBjb2RpbmcNCj4gPj4gc3RhbmRhcmQuDQo+ID4+Pj4+PiBQbGVhc2UgYWxpZ24gdmFy aWFibGUgbmFtZXMgbGlrZSBpbiBwcmV2aW91cyBmdW5jdGlvbnMuDQo+ID4+Pj4+IERvbmUNCj4g Pj4+Pj4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQWRkTmV3SGVhZGVyID0gMDsNCj4gPj4+ Pj4+PiArICBOZXdIZWFkZXJzID0gTlVMTDsNCj4gPj4+Pj4+PiArICBNZXNzYWdlQm9keSA9IE5V TEw7DQo+ID4+Pj4+Pj4gKyAgQ29udGVudExlbmd0aEhlYWRlciA9IE5VTEw7DQo+ID4+Pj4+Pj4g KyAgTWVzc2FnZUJvZHlMZW5ndGggPSAwOw0KPiA+Pj4+Pj4gQWxpZ25tZW50IG9mIGFzc2lnbm1l bnRzLg0KPiA+Pj4+PiBEb25lDQo+ID4+Pj4+DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIHN3 aXRjaCAoKlNlbmRDaHVua1Byb2Nlc3MpIHsNCj4gPj4+Pj4+PiArICBjYXNlIEh0dHBJb1NlbmRD aHVua0hlYWRlclplcm9Db250ZW50Og0KPiA+Pj4+Pj4gQ2FzZSBzcGFjaW5nOiAyIHNwYWNlcy4g QXBwbGllcyB0aHJvdWdob3V0IG5ldyBjb2RlLg0KPiA+Pj4+Pj4+ICsgICAgICBDb250ZW50TGVu Z3RoSGVhZGVyID0NCj4gPj4+Pj4+PiArIEh0dHBGaW5kSGVhZGVyKFJlcXVlc3RNZXNzYWdlLT5I ZWFkZXJDb3VudCwNCj4gPj4gUmVxdWVzdE1lc3NhZ2UtDQo+ID4+Pj4+Pj4gSGVhZGVycywNCj4g Pj4+Pj4+PiArIEhUVFBfSEVBREVSX0NPTlRFTlRfTEVOR1RIKTsNCj4gPj4+Pj4+IFNwYWNpbmcg YWZ0ZXIgZnVuY3Rpb24gY2FsbCBuYW1lLiBUaGlzIGFwcGxpZXMgZnJvbSB0aGlzIHBvaW50IHVu dGlsIHRoZQ0KPiA+PiBlbmQNCj4gPj4+PiBvZg0KPiA+Pj4+Pj4gcGF0Y2guDQo+ID4+Pj4+IERv bmUNCj4gPj4+Pj4+PiArICAgICAgaWYgKENvbnRlbnRMZW5ndGhIZWFkZXIgPT0gTlVMTCkgew0K PiA+Pj4+Pj4+ICsgICAgICAgIEFkZE5ld0hlYWRlciA9IDE7DQo+ID4+Pj4+Pj4gKyAgICAgIH0N Cj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgICAgIE5ld0hlYWRlcnMgPSBBbGxvY2F0ZVplcm9Q b29sKChSZXF1ZXN0TWVzc2FnZS0NCj4gPj4+IEhlYWRlckNvdW50DQo+ID4+Pj4gKw0KPiA+Pj4+ Pj4+ICsgQWRkTmV3SGVhZGVyKSAqIHNpemVvZihFRklfSFRUUF9IRUFERVIpKTsNCj4gPj4+Pj4+ IExhY2sgb2YgTlVMTCBwb2ludGVyIHRlc3QgZm9yIE5ld0hlYWRlcnMgKG91dCBvZiBtZW1vcnkg Y2FzZSkuDQo+ID4+Pj4+Pj4gKyAgICAgIENvcHlNZW0gKChWT0lEKilOZXdIZWFkZXJzLCAoVk9J RCAqKVJlcXVlc3RNZXNzYWdlLQ0KPiA+Pj4+PiBIZWFkZXJzLA0KPiA+Pj4+Pj4gUmVxdWVzdE1l c3NhZ2UtPkhlYWRlckNvdW50ICogc2l6ZW9mIChFRklfSFRUUF9IRUFERVIpKTsNCj4gPj4+Pj4+ PiArICAgICAgaWYgKEFkZE5ld0hlYWRlciA9PSAwKSB7DQo+ID4+Pj4+Pj4gKyAgICAgICAgLy8N Cj4gPj4+Pj4+PiArICAgICAgICAvLyBPdmVycmlkZSBjb250ZW50LWxlbmd0aCB0byBUcmFuc2Zl ci1FbmNvZGluZy4NCj4gPj4+Pj4+PiArICAgICAgICAvLw0KPiA+Pj4+Pj4+ICsgICAgICAgIENv bnRlbnRMZW5ndGhIZWFkZXIgPSBIdHRwRmluZEhlYWRlciAoUmVxdWVzdE1lc3NhZ2UtDQo+ID4+ Pj4+Pj4gSGVhZGVyQ291bnQsIE5ld0hlYWRlcnMsIEhUVFBfSEVBREVSX0NPTlRFTlRfTEVOR1RI KTsNCj4gPj4+Pj4+PiArICAgICAgICBDb250ZW50TGVuZ3RoSGVhZGVyLT5GaWVsZE5hbWUgPSBO VUxMOw0KPiA+Pj4+Pj4+ICsgICAgICAgIENvbnRlbnRMZW5ndGhIZWFkZXItPkZpZWxkVmFsdWUg PSBOVUxMOw0KPiA+Pj4+Pj4+ICsgICAgICB9IGVsc2Ugew0KPiA+Pj4+Pj4+ICsgICAgICAgIENv bnRlbnRMZW5ndGhIZWFkZXIgPSBOZXdIZWFkZXJzICsgUmVxdWVzdE1lc3NhZ2UtDQo+ID4+Pj4+ Pj4gSGVhZGVyQ291bnQ7DQo+ID4+Pj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4+PiArICAgICAgSHR0 cFNldEZpZWxkTmFtZUFuZFZhbHVlKENvbnRlbnRMZW5ndGhIZWFkZXIsDQo+ID4+Pj4+PiBIVFRQ X0hFQURFUl9UUkFOU0ZFUl9FTkNPRElORywNCj4gPj4+Pj4+IEhUVFBfSEVBREVSX1RSQU5TRkVS X0VOQ09ESU5HX0NIVU5LRUQpOw0KPiA+Pj4+Pj4+ICsgICAgICBIZWFkZXJDb3VudCA9IFJlcXVl c3RNZXNzYWdlLT5IZWFkZXJDb3VudCArDQo+ID4+IEFkZE5ld0hlYWRlcjsNCj4gPj4+Pj4+IE1v dmUgSGVhZGVyQ291bnQgYXNzaWdubWVudCBiZWZvcmUgTmV3SGVhZGVycyBhbGxvY2F0aW9uLiBV c2UNCj4gPj4+Pj4+IEhlYWRlckNvdW50IGFzIGFyZ3VtZW50IGZvciBOZXdIZWFkZXJzIGFsbG9j YXRpb24uDQo+ID4+Pj4+Pj4gKyAgICAgIE1lc3NhZ2VCb2R5TGVuZ3RoID0gMDsNCj4gPj4+Pj4+ PiArICAgICAgTWVzc2FnZUJvZHkgPSBOVUxMOw0KPiA+Pj4+Pj4+ICsgICAgICBTZW50UmVxdWVz dERhdGEgPSBSZXF1ZXN0TWVzc2FnZS0+RGF0YS5SZXF1ZXN0Ow0KPiA+Pj4+Pj4+ICsgICAgICBi cmVhazsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgY2FzZSBIdHRwSW9TZW5kQ2h1bmtDb250 ZW50Og0KPiA+Pj4+Pj4+ICsgICAgICBIZWFkZXJDb3VudCA9IDA7DQo+ID4+Pj4+Pj4gKyAgICAg IE5ld0hlYWRlcnMgPSBOVUxMOw0KPiA+Pj4+Pj4+ICsgICAgICBTZW50UmVxdWVzdERhdGEgPSBO VUxMOw0KPiA+Pj4+Pj4+ICsgICAgICBpZiAoUmVxdWVzdE1lc3NhZ2UtPkJvZHlMZW5ndGggPg0K PiA+Pj4+IEhUVFBfSU9fTUFYX1NFTkRfUEFZTE9BRCkgew0KPiA+Pj4+Pj4+ICsgICAgICAgIE1l c3NhZ2VCb2R5TGVuZ3RoID0gSFRUUF9JT19NQVhfU0VORF9QQVlMT0FEOw0KPiA+Pj4+Pj4+ICsg ICAgICB9IGVsc2Ugew0KPiA+Pj4+Pj4+ICsgICAgICAgIE1lc3NhZ2VCb2R5TGVuZ3RoID0gUmVx dWVzdE1lc3NhZ2UtPkJvZHlMZW5ndGg7DQo+ID4+Pj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4+PiAr ICAgICAgQXNjaWlTUHJpbnQgKENodW5rTGVuZ3RoU3RyLA0KPiBIVFRQX0lPX0NIVU5LX1NJWkVf U1RSSU5HX0xFTiwNCj4gPj4+Pj4+PiArICIleCVjJWMiLCBNZXNzYWdlQm9keUxlbmd0aCwNCj4g Pj4gQ0hVTktFRF9UUk5BU0ZFUl9DT0RJTkdfQ1IsDQo+ID4+Pj4+Pj4gKyBDSFVOS0VEX1RSTkFT RkVSX0NPRElOR19MRik7DQo+ID4+Pj4+PiBMaW5lIHRvbyBsb25nLCBicmVhayBkb3duIGluIGFj Y29yZGFuY2UgdG8gY29kaW5nIHN0YW5kYXJkLg0KPiA+Pj4+PiBEb25lDQo+ID4+Pj4+DQo+ID4+ Pj4+Pj4gKyAgICAgIE1lc3NhZ2VCb2R5ID0gQWxsb2NhdGVQb29sIChBc2NpaVN0ckxlbiAoQ2h1 bmtMZW5ndGhTdHIpICsNCj4gPj4+Pj4+IE1lc3NhZ2VCb2R5TGVuZ3RoICsgMik7DQo+ID4+Pj4+ Pj4gKyAgICAgIGlmIChNZXNzYWdlQm9keSA9PSBOVUxMKSB7DQo+ID4+Pj4+Pj4gKyAgICAgICAg REVCVUcoKERFQlVHX0VSUk9SLCAiTm90IGVub3VnaCBtZW1vcnkgZm9yIGNodW5rDQo+ID4+Pj4+ PiB0cmFuc2ZlclxuIikpOw0KPiA+Pj4+Pj4+ICsgICAgICAgIHJldHVybiBFRklfT1VUX09GX1JF U09VUkNFUzsNCj4gPj4+Pj4+PiArICAgICAgfQ0KPiA+Pj4+Pj4+ICsgICAgICBDb3B5TWVtIChN ZXNzYWdlQm9keSwgQ2h1bmtMZW5ndGhTdHIsIEFzY2lpU3RyTGVuDQo+ID4+Pj4+PiAoQ2h1bmtM ZW5ndGhTdHIpKTsNCj4gPj4+Pj4+PiArICAgICAgQ29weU1lbSAoTWVzc2FnZUJvZHkgKyBBc2Np aVN0ckxlbiAoQ2h1bmtMZW5ndGhTdHIpLA0KPiA+Pj4+Pj4gUmVxdWVzdE1lc3NhZ2UtPkJvZHks IE1lc3NhZ2VCb2R5TGVuZ3RoKTsNCj4gPj4+Pj4+PiArICAgICAgKihNZXNzYWdlQm9keSArIEFz Y2lpU3RyTGVuIChDaHVua0xlbmd0aFN0cikgKw0KPiA+Pj4+IE1lc3NhZ2VCb2R5TGVuZ3RoKQ0K PiA+Pj4+Pj4gPSBDSFVOS0VEX1RSTkFTRkVSX0NPRElOR19DUjsNCj4gPj4+Pj4+PiArICAgICAg KihNZXNzYWdlQm9keSArIEFzY2lpU3RyTGVuIChDaHVua0xlbmd0aFN0cikgKw0KPiA+Pj4+IE1l c3NhZ2VCb2R5TGVuZ3RoDQo+ID4+Pj4+PiArIDEpID0gQ0hVTktFRF9UUk5BU0ZFUl9DT0RJTkdf TEY7DQo+ID4+Pj4+Pj4gKyAgICAgIFJlcXVlc3RNZXNzYWdlLT5Cb2R5TGVuZ3RoIC09IE1lc3Nh Z2VCb2R5TGVuZ3RoOw0KPiA+Pj4+Pj4+ICsgICAgICBSZXF1ZXN0TWVzc2FnZS0+Qm9keSA9IChW T0lEICopKChDSEFSOA0KPiAqKVJlcXVlc3RNZXNzYWdlLQ0KPiA+Pj4+Pj4+IEJvZHkgKyBNZXNz YWdlQm9keUxlbmd0aCk7DQo+ID4+Pj4+Pj4gKyAgICAgIE1lc3NhZ2VCb2R5TGVuZ3RoICs9IChB c2NpaVN0ckxlbiAoQ2h1bmtMZW5ndGhTdHIpICsgMik7DQo+ID4+Pj4+PiBUaGlzIGJsb2NrIGNv dWxkIHVzZSBzb21lIHNwYWNpbmcgYW5kIGNvbW1lbnRzIHRvIGltcHJvdmUNCj4gPj4gcmVhZGFi aWxpdHkuDQo+ID4+Pj4+IERvbmUNCj4gPj4+Pj4NCj4gPj4+Pj4+PiArICAgICAgaWYgKFJlcXVl c3RNZXNzYWdlLT5Cb2R5TGVuZ3RoID09IDApIHsNCj4gPj4+Pj4+PiArICAgICAgICAqU2VuZENo dW5rUHJvY2VzcyA9IEh0dHBJb1NlbmRDaHVua0VuZENodW5rOw0KPiA+Pj4+Pj4+ICsgICAgICB9 DQo+ID4+Pj4+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBjYXNl IEh0dHBJb1NlbmRDaHVua0VuZENodW5rOg0KPiA+Pj4+Pj4+ICsgICAgICBIZWFkZXJDb3VudCA9 IDA7DQo+ID4+Pj4+Pj4gKyAgICAgIE5ld0hlYWRlcnMgPSBOVUxMOw0KPiA+Pj4+Pj4+ICsgICAg ICBTZW50UmVxdWVzdERhdGEgPSBOVUxMOw0KPiA+Pj4+Pj4+ICsgICAgICBBc2NpaVNQcmludCAo Q2h1bmtMZW5ndGhTdHIsDQo+IEhUVFBfSU9fQ0hVTktfU0laRV9TVFJJTkdfTEVOLA0KPiA+Pj4+ Pj4gIjAlYyVjJWMlYyIsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICBDSFVOS0VE X1RSTkFTRkVSX0NPRElOR19DUiwNCj4gPj4+Pj4+IENIVU5LRURfVFJOQVNGRVJfQ09ESU5HX0xG LA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgQ0hVTktFRF9UUk5BU0ZFUl9DT0RJ TkdfQ1IsDQo+ID4+Pj4+PiBDSFVOS0VEX1RSTkFTRkVSX0NPRElOR19MRg0KPiA+Pj4+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4+IFBsZWFzZSBicmVhayBmdW5jdGlvbiBj YWxscyBpbiBhY2NvcmRhbmNlIHdpdGggY29kaW5nIHN0YW5kYXJkLg0KPiA+Pj4+PiBEb25lDQo+ ID4+Pj4+Pj4gKyAgICAgIE1lc3NhZ2VCb2R5ID0gQWxsb2NhdGVQb29sIChBc2NpaVN0ckxlbihD aHVua0xlbmd0aFN0cikpOw0KPiA+Pj4+Pj4+ICsgICAgICBpZiAoTWVzc2FnZUJvZHkgPT0gTlVM TCkgew0KPiA+Pj4+Pj4+ICsgICAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIk5vdCBlbm91Z2gg bWVtb3J5IGZvciB0aGUgZW5kDQo+ID4+IGNodW5rDQo+ID4+Pj4+PiB0cmFuc2ZlclxuIikpOw0K PiA+Pj4+Pj4+ICsgICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4+ PiArICAgICAgfQ0KPiA+Pj4+Pj4+ICsgICAgICBDb3B5TWVtIChNZXNzYWdlQm9keSwgQ2h1bmtM ZW5ndGhTdHIsIEFzY2lpU3RyTGVuDQo+ID4+Pj4+PiAoQ2h1bmtMZW5ndGhTdHIpKTsNCj4gPj4+ Pj4+PiArICAgICAgTWVzc2FnZUJvZHlMZW5ndGggPSBBc2NpaVN0ckxlbihDaHVua0xlbmd0aFN0 cik7DQo+ID4+Pj4+Pj4gKyAgICAgICpTZW5kQ2h1bmtQcm9jZXNzID0gSHR0cElvU2VuZENodW5r RmluaXNoOw0KPiA+Pj4+Pj4+ICsgICAgICBicmVhazsNCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4g KyAgZGVmYXVsdDoNCj4gPj4+Pj4+PiArICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgIFN0YXR1cyA9IEh0 dHBJb1NlbmRSZXF1ZXN0KA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICBIdHRwSW8sDQo+ID4+ Pj4+Pj4gKyAgICAgICAgICAgICAgIFNlbnRSZXF1ZXN0RGF0YSwNCj4gPj4+Pj4+PiArICAgICAg ICAgICAgICAgSGVhZGVyQ291bnQsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgIE5ld0hlYWRl cnMsDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgIE1lc3NhZ2VCb2R5TGVuZ3RoLA0KPiA+Pj4+ Pj4+ICsgICAgICAgICAgICAgICBNZXNzYWdlQm9keQ0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAg ICApOw0KPiA+Pj4+Pj4+ICsgIGlmIChDb250ZW50TGVuZ3RoSGVhZGVyICE9IE5VTEwpIHsNCj4g Pj4+Pj4+PiArICAgIGlmIChDb250ZW50TGVuZ3RoSGVhZGVyLT5GaWVsZE5hbWUgIT0gTlVMTCkg ew0KPiA+Pj4+Pj4+ICsgICAgICBGcmVlUG9vbChDb250ZW50TGVuZ3RoSGVhZGVyLT5GaWVsZE5h bWUpOw0KPiA+Pj4+Pj4+ICsgICAgfQ0KPiA+Pj4+Pj4+ICsgICAgaWYgKENvbnRlbnRMZW5ndGhI ZWFkZXItPkZpZWxkVmFsdWUgIT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgICBGcmVlUG9vbChD b250ZW50TGVuZ3RoSGVhZGVyLT5GaWVsZFZhbHVlKTsNCj4gPj4+Pj4+PiArICAgIH0NCj4gPj4+ Pj4+PiArICAgIENvbnRlbnRMZW5ndGhIZWFkZXIgPSBOVUxMOw0KPiA+Pj4+Pj4gTlVMTCBhc3Np Z25tZW50cyBhcmUgbm90IG5lY2Vzc2FyeSBoZXJlIGFzIHdlIGFyZSBleGl0aW5nIHRoZQ0KPiA+ PiBmdW5jdGlvbg0KPiA+Pj4+IGFuZA0KPiA+Pj4+Pj4gdGhvc2UgdmFyaWFibGVzIHdpbGwgbm90 IGJlIHVzZWQuDQo+ID4+Pj4+IFJpZ2h0LCBmaXhlZC4NCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+ Pj4gKyAgaWYgKE5ld0hlYWRlcnMgIT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgRnJlZVBvb2wo TmV3SGVhZGVycyk7DQo+ID4+Pj4+Pj4gKyAgICBOZXdIZWFkZXJzID0gTlVMTDsNCj4gPj4+Pj4+ PiArICB9DQo+ID4+Pj4+Pj4gKyAgaWYgKE1lc3NhZ2VCb2R5ICE9IE5VTEwpIHsNCj4gPj4+Pj4+ PiArICAgIEZyZWVQb29sKE1lc3NhZ2VCb2R5KTsNCj4gPj4+Pj4+PiArICAgIE1lc3NhZ2VCb2R5 ID0gTlVMTDsNCj4gPj4+Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4g Pj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArLyoqDQo+ID4+Pj4+Pj4gKyAgU3lu Y2hyb25vdXNseSByZWNlaXZlIGEgSFRUUCBSRVNQT05TRSBtZXNzYWdlIGZyb20gdGhlDQo+IHNl cnZlci4NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIEh0dHBJbyAgICAg ICAgICAgVGhlIEh0dHBJbyB3cmFwcGluZyB0aGUgSFRUUCBzZXJ2aWNlLg0KPiA+Pj4+Pj4+ICsg IEBwYXJhbVtpbl0gICBIZWFkZXJDb3VudCAgICAgIE51bWJlciBvZiBoZWFkZXJzIGluIEhlYWRl cnMuDQo+ID4+Pj4+Pj4gKyAgQHBhcmFtW2luXSAgIEhlYWRlcnMgICAgICAgICAgQXJyYXkgY29u dGFpbmluZyBsaXN0IG9mIEhUVFAgaGVhZGVycy4NCj4gPj4+Pj4+PiArICBAcGFyYW1bb3V0XSAg Q2h1bmtMaXN0SGVhZCAgICBBIHBvaW50ZXIgdG8gcmVjZWl2Y2UgbGlzdCBoZWFkIG9mDQo+ID4+ Pj4gY2h1bmtlZA0KPiA+Pj4+Pj4gZGF0YS4NCj4gPj4+Pj4+IFNwZWxsaW5nOiByZWNlaXZlLg0K PiA+Pj4+PiBGaXhlZC4NCj4gPj4+Pj4NCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDYWxsZXIgaGFzIHRvIHJlbGVhc2UgbWVtb3J5IG9mIENodW5rTGlzdEhlYWQN Cj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYWxsIGxpc3Qg ZW50cmllcy4NCj4gPj4+Pj4+PiArICBAcGFyYW1bb3V0XSAgQ29udGVudExlbmd0aCAgICBUb3Rh bCBjb250ZW50IGxlbmd0aA0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgVGhlIEhUVFAgY2h1bmtlZCB0cmFuc2ZlciBpcw0KPiByZWNlaXZl ZC4NCj4gPj4+Pj4+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgTm8gY2h1bmtl ZCB0cmFuc2ZlciBjb2RpbmcNCj4gaGVhZGVyDQo+ID4+Pj4gZm91bmQuDQo+ID4+Pj4+Pj4gKyAg QHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgIEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnku DQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEltcHJvcGVyIHBh cmFtZXRlcnMuDQo+ID4+Pj4+Pj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgIE90 aGVyIGVycm9ycyBhcyBpbmRpY2F0ZWQuDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsqKi8NCj4g Pj4+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+Pj4+ICtIdHRwSW9HZXRDaHVua2VkVHJhbnNmZXJD b250ZW50ICgNCj4gPj4+Pj4+PiArICBJTiAgICAgSFRUUF9JTyAgICAgICAgICAgICAgKkh0dHBJ bywNCj4gPj4+Pj4+PiArICBJTiAgICAgVUlOVE4gICAgICAgICAgICAgICAgSGVhZGVyQ291bnQs DQo+ID4+Pj4+Pj4gKyAgSU4gICAgIEVGSV9IVFRQX0hFQURFUiAgICAgICpIZWFkZXJzLA0KPiA+ Pj4+Pj4+ICsgIE9VVCAgICBMSVNUX0VOVFJZICAgICAgICAgICAqKkNodW5rTGlzdEhlYWQsDQo+ ID4+Pj4+Pj4gKyAgT1VUICAgIFVJTlROICAgICAgICAgICAgICAgICpDb250ZW50TGVuZ3RoDQo+ ID4+Pj4+Pj4gKyAgKQ0KPiA+Pj4+Pj4+ICt7DQo+ID4+Pj4+Pj4gKyAgRUZJX0hUVFBfSEVBREVS ICAgICAgICpIZWFkZXI7DQo+ID4+Pj4+Pj4gKyAgQ0hBUjggICAgICAgICAgICAgICAgIENodW5r U2l6ZUFzY2lpWzI1Nl07DQo+ID4+Pj4+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgIFN0YXR1 czsNCj4gPj4+Pj4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4+Pj4+Pj4g KyAgSFRUUF9JT19SRVNQT05TRV9EQVRBIFJlc3BvbnNlRGF0YTsNCj4gPj4+Pj4+PiArICBVSU5U TiAgICAgICAgICAgICAgICAgVG90YWxMZW5ndGg7DQo+ID4+Pj4+Pj4gKyAgTElTVF9FTlRSWSAg ICAgICAgICAgICpIdHRwQ2h1bmtzOw0KPiA+Pj4+Pj4+ICsgIEhUVFBfSU9fQ0hVTktTICAgICAg ICpUaGlzQ2h1bms7DQo+ID4+Pj4+PiBWYXJpYWJsZSBhbGlnbm1lbnQuDQo+ID4+Pj4+Pj4gKyAg TElTVF9FTlRSWSAgICAgICAgICAgICpUaGlzTGlzdEVudHJ5Ow0KPiA+Pj4+Pj4+ICsNCj4gPj4+ Pj4+PiArICBpZiAoQ2h1bmtMaXN0SGVhZCA9PSBOVUxMIHx8IENvbnRlbnRMZW5ndGggPT0gTlVM TCkgew0KPiA+Pj4+Pj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+ Pj4+PiArICB9DQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICsgICpDb250ZW50TGVuZ3RoID0gMDsN Cj4gPj4+Pj4+PiArICBIZWFkZXIgPSBIdHRwRmluZEhlYWRlciAoSGVhZGVyQ291bnQsIEhlYWRl cnMsDQo+ID4+Pj4+Pj4gKyBIVFRQX0hFQURFUl9UUkFOU0ZFUl9FTkNPRElORyk7ICBpZiAoSGVh ZGVyID09IE5VTEwpIHsNCj4gPj4+Pj4+PiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+PiArICBpZiAoQXNjaWlTdHJDbXAgKEhlYWRlci0+RmllbGRW YWx1ZSwNCj4gPj4+Pj4+PiArIEhUVFBfSEVBREVSX1RSQU5TRkVSX0VOQ09ESU5HX0NIVU5LRUQp ID09IDApIHsNCj4gPj4+Pj4+IFBsZWFzZSBkbyBhIG5lZ2F0aW9uIGNvbXBhcmlzb24gaW5zdGVh ZCBhbmQgcmV0dXJuLiBJdCByZWR1Y2VzIG9uZQ0KPiA+PiBsZXZlbA0KPiA+Pj4+IG9mDQo+ID4+ Pj4+PiBpbmRlbnRhdGlvbi4NCj4gPj4+Pj4gRG9uZQ0KPiA+Pj4+Pj4+ICsgICAgLy8NCj4gPj4+ Pj4+PiArICAgIC8vIExvb3AgdG8gZ2V0IGFsbCBjaHVua3MuDQo+ID4+Pj4+Pj4gKyAgICAvLw0K PiA+Pj4+Pj4gUGxlYXNlIGF2b2lkIGVtcHR5IHNpbmdsZS1saW5lIGNvbW1lbnRzIHdoZW4gc3Rh cnRpbmcgYW5kIGVuZGluZw0KPiA+Pj4+Pj4gY29tbWVudCBibG9jay4NCj4gPj4+Pj4+PiArICAg IFRvdGFsTGVuZ3RoID0gMDsNCj4gPj4+Pj4+PiArICAgIEh0dHBDaHVua3MgPSAoTElTVF9FTlRS WSAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZg0KPiA+PiAoTElTVF9FTlRSWSkpOw0KPiA+Pj4+ Pj4+ICsgICAgaWYgKEh0dHBDaHVua3MgPT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgICBTdGF0 dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4+PiArICAgICAgZ290byBEZWxldGVy Q2h1bmtzOw0KPiA+Pj4+Pj4+ICsgICAgfQ0KPiA+Pj4+Pj4+ICsgICAgSW5pdGlhbGl6ZUxpc3RI ZWFkIChIdHRwQ2h1bmtzKTsNCj4gPj4+Pj4+IEFkZCBhIGJpdCBvZiBzcGFjaW5nIGFib3ZlIHRv IGltcHJvdmUgcmVhZGFiaWxpdHkuDQo+ID4+Pj4+IEZpeGVkDQo+ID4+Pj4+Pj4gKyAgICBERUJV RyAoKERFQlVHX0lORk8sICIgICAgIENodW5rZWQgdHJhbnNmZXJcbiIpKTsNCj4gPj4+Pj4+PiAr ICAgIHdoaWxlIChUUlVFKSB7DQo+ID4+Pj4+Pj4gKyAgICAgIFplcm9NZW0oKFZPSUQgKikmUmVz cG9uc2VEYXRhLA0KPiA+Pj4+Pj4gc2l6ZW9mKEhUVFBfSU9fUkVTUE9OU0VfREFUQSkpOw0KPiA+ Pj4+Pj4+ICsgICAgICBSZXNwb25zZURhdGEuQm9keUxlbmd0aCA9DQo+ID4+Pj4+PiBIVFRQX0lP X0NIVU5LRURfVFJBTlNGRVJfQ09ESU5HX0RBVEFfTEVOR1RIOw0KPiA+Pj4+Pj4+ICsgICAgICBS ZXNwb25zZURhdGEuQm9keSA9IENodW5rU2l6ZUFzY2lpOw0KPiA+Pj4+Pj4+ICsgICAgICBTdGF0 dXMgPSBIdHRwSW9SZWN2UmVzcG9uc2UgKA0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgIEh0 dHBJbywNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gPj4+Pj4+PiArICAg ICAgICAgICAgICAgICAmUmVzcG9uc2VEYXRhDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAg KTsNCj4gPj4+Pj4+PiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+Pj4+ ICsgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4+IFJl dHVybmluZyBoZXJlIGNyZWF0ZXMgbWVtb3J5IGxlYWsgcmlzayAtIGNodW5rcyBwcmV2aW91c2x5 DQo+IHJlY2VpdmVkDQo+ID4+IHdpbGwNCj4gPj4+PiBub3QNCj4gPj4+Pj4+IGJlIGZyZWVkLg0K PiA+Pj4+PiBGaXhlZA0KPiA+Pj4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+Pj4+ICsgICAgICAvLyBE ZWNvZGluZyBDaHVua2VkIFRyYW5zZmVyIENvZGluZy4NCj4gPj4+Pj4+PiArICAgICAgLy8gT25s eSBkZWNvZGUgY2h1bmstc2l6ZSBhbmQgbGFzdCBjaHVuay4NCj4gPj4+Pj4+PiArICAgICAgLy8N Cj4gPj4+Pj4+PiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiICAgICBDaHVuayBIVFRQIFJl c3BvbnNlIFN0YXR1c0NvZGUgLQ0KPiA+Pj4+ICVkXG4iLA0KPiA+Pj4+Pj4gUmVzcG9uc2VEYXRh LlJlc3BvbnNlLlN0YXR1c0NvZGUpKTsNCj4gPj4+Pj4+PiArICAgICAgLy8NCj4gPj4+Pj4+PiAr ICAgICAgLy8gQnJlYWsgaWYgdGhpcyBpcyBsYXN0IGNodW5rLg0KPiA+Pj4+Pj4+ICsgICAgICAv Lw0KPiA+Pj4+Pj4+ICsgICAgICBpZiAoQ2h1bmtTaXplQXNjaWkgWzBdID09DQo+ID4+Pj4gQ0hV TktFRF9UUk5BU0ZFUl9DT0RJTkdfTEFTVF9DSFVOSykNCj4gPj4+Pj4+IHsNCj4gPj4+Pj4+PiAr ICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPj4+Pj4+PiArICAgICAgICBERUJVRyAo KERFQlVHX0lORk8sICIgICAgIExhc3QgY2h1bmtcbiIpKTsNCj4gPj4+Pj4+PiArICAgICAgICBU aGlzQ2h1bmsgPSAoSFRUUF9JT19DSFVOS1MgKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YNCj4g Pj4+Pj4+IChIVFRQX0lPX0NIVU5LUykpOw0KPiA+Pj4+Pj4+ICsgICAgICAgIGlmIChUaGlzQ2h1 bmsgPT0gTlVMTCkgew0KPiA+Pj4+Pj4+ICsgICAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ID4+Pj4+Pj4gKyAgICAgICAgICBnb3RvIERlbGV0ZXJDaHVua3M7DQo+ID4+ Pj4+Pj4gKyAgICAgICAgfQ0KPiA+Pj4+Pj4+ICsgICAgICAgIEluaXRpYWxpemVMaXN0SGVhZCAo JlRoaXNDaHVuay0+TmV4dENodW5rKTsNCj4gPj4+Pj4+PiArICAgICAgICBUaGlzQ2h1bmstPkxl bmd0aCA9IFJlc3BvbnNlRGF0YS5Cb2R5TGVuZ3RoIC0gMSAtIDI7IC8vDQo+IE1pbnVzDQo+ID4+ Pj4+PiBzaXplb2YgJzAnIGFuZCBDUkxGLg0KPiA+Pj4+Pj4+ICsgICAgICAgIFRoaXNDaHVuay0+ RGF0YSA9IChDSEFSOCAqKUFsbG9jYXRlUG9vbCAoVGhpc0NodW5rLQ0KPiA+TGVuZ3RoKTsNCj4g Pj4+Pj4+PiArICAgICAgICBpZiAoVGhpc0NodW5rLT5EYXRhID09IE5VTEwpIHsNCj4gPj4+Pj4+ PiArICAgICAgICAgIEZyZWVQb29sICgoVUlOVDggKilUaGlzQ2h1bmspOw0KPiA+Pj4+Pj4+ICsg ICAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4+Pj4+Pj4gKyAgICAg ICAgICBnb3RvIERlbGV0ZXJDaHVua3M7DQo+ID4+Pj4+Pj4gKyAgICAgICAgfQ0KPiA+Pj4+Pj4+ ICsgICAgICAgIENvcHlNZW0gKChVSU5UOCAqKVRoaXNDaHVuay0+RGF0YSwgKFVJTlQ4DQo+ID4+ Pj4gKilSZXNwb25zZURhdGEuQm9keQ0KPiA+Pj4+Pj4gKyAxLCBUaGlzQ2h1bmstPkxlbmd0aCk7 DQo+ID4+Pj4+Pj4gKyAgICAgICAgVG90YWxMZW5ndGggKz0gVGhpc0NodW5rLT5MZW5ndGg7DQo+ ID4+Pj4+Pj4gKyAgICAgICAgSW5zZXJ0VGFpbExpc3QgKEh0dHBDaHVua3MsICZUaGlzQ2h1bmst Pk5leHRDaHVuayk7DQo+ID4+Pj4+Pj4gKyAgICAgICAgYnJlYWs7DQo+ID4+Pj4+Pj4gKyAgICAg IH0NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgICAgIC8vDQo+ID4+Pj4+Pj4gKyAgICAgIC8v IEdldCB0aGUgY2h1bmsgbGVuZ3RoDQo+ID4+Pj4+Pj4gKyAgICAgIC8vDQo+ID4+Pj4+Pj4gKyAg ICAgIEluZGV4ID0gMDsNCj4gPj4+Pj4+PiArICAgICAgd2hpbGUgKChDaHVua1NpemVBc2NpaSBb SW5kZXhdICE9DQo+ID4+Pj4+PiBDSFVOS0VEX1RSTkFTRkVSX0NPRElOR19FWFRFTlNJT05fU0FQ RVJBVE9SKSAmJg0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAgKENodW5rU2l6ZUFzY2lpIFtJbmRl eF0gIT0NCj4gPj4+Pj4+PiArIChDSEFSOClDSFVOS0VEX1RSTkFTRkVSX0NPRElOR19DUikgJiYN Cj4gPj4+Pj4+IFNwZWxsaW5nIGVycm9ycyBpbiBtYWNyb3MgYWJvdmUuDQo+ID4+Pj4+IE9vcHMu IEJaIGlzIHN1Ym1pdHRlZCBmb3IgdGhpcyB0eXBvIGluIGh0dHAxMS5oLg0KPiA+Pj4+PiBJTlZB TElEIFVSSSBSRU1PVkVEDQo+ID4+Pj4gM0FfX2J1Z3ppbGxhLnRpYW5vY29yZS5vcmdfc2hvdy01 RmJ1Zy5jZ2ktM0ZpZC0NCj4gPj4+Pg0KPiA+Pg0KPiAzRDMwMTkmZD1Ed0lEYVEmYz1DNWI4elJR TzFtaUdtQmVWWjJMRldnJnI9X1NONkZaQk40VmdpNFVsa3MNCj4gPj4NCj4ga3o2cVUzTllSTzAz bkhwOVA3WjVxNTlBM0UmbT1mNnpzX21yendDQ1l3UVNsM3A0TmJ1aWI3TG40Z1ZjTw0KPiA+Pj4+ IEtTNzRvLQ0KPiBYYzUyNCZzPWcxV0hMQ2w4VXptOFlLTFlrbk0yWTdUMGQ0Z1Q3ZnZfNThxaGM0 UWVqajAmZT0NCj4gPj4+Pj4gUGF0Y2ggaXMgc2V0IHRvIHRoZSBtYWlsaW5nIGxpc3QgZm9yIHJl dmlldy4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4+PiArICAgICAgICAgICAgIChJbmRleCAh PQ0KPiA+Pj4+Pj4gSFRUUF9JT19DSFVOS0VEX1RSQU5TRkVSX0NPRElOR19EQVRBX0xFTkdUSCkp IHsNCj4gPj4+Pj4+PiArICAgICAgICBJbmRleCArKzsNCj4gPj4+Pj4+PiArICAgICAgfTsNCj4g Pj4+Pj4+PiArICAgICAgaWYgKEluZGV4ID09DQo+ID4+Pj4gSFRUUF9JT19DSFVOS0VEX1RSQU5T RkVSX0NPRElOR19EQVRBX0xFTkdUSCkNCj4gPj4+Pj4+IHsNCj4gPj4+Pj4+PiArICAgICAgICBy ZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPj4+Pj4+PiArICAgICAgfQ0KPiA+Pj4+Pj4gQWdhaW4g LSBtZW1vcnkgbGVhay4NCj4gPj4+Pj4gRml4ZWQNCj4gPj4+Pj4NCj4gPj4+Pj4+PiArICAgICAg Q2h1bmtTaXplQXNjaWlbSW5kZXhdID0gMDsNCj4gPj4+Pj4+PiArICAgICAgQXNjaWlTdHJIZXhU b1VpbnRuUyAoQ2h1bmtTaXplQXNjaWksIE5VTEwsIENvbnRlbnRMZW5ndGgpOw0KPiA+Pj4+Pj4+ ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICIgICAgIExlbmd0aCBvZiB0aGlzIGNodW5rICVk XG4iLA0KPiA+Pj4+Pj4gKkNvbnRlbnRMZW5ndGgpKTsNCj4gPj4+Pj4+PiArICAgICAgLy8NCj4g Pj4+Pj4+PiArICAgICAgLy8gUmVjZWl2ZSB0aGUgZGF0YTsNCj4gPj4+Pj4+PiArICAgICAgLy8N Cj4gPj4+Pj4+PiArICAgICAgVGhpc0NodW5rID0gKEhUVFBfSU9fQ0hVTktTICopQWxsb2NhdGVa ZXJvUG9vbCAoc2l6ZW9mDQo+ID4+Pj4+PiAoSFRUUF9JT19DSFVOS1MpKTsNCj4gPj4+Pj4+PiAr ICAgICAgaWYgKFRoaXNDaHVuayA9PSBOVUxMKSB7DQo+ID4+Pj4+Pj4gKyAgICAgICAgU3RhdHVz ID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4+Pj4+Pj4gKyAgICAgICAgZ290byBEZWxldGVy Q2h1bmtzOw0KPiA+Pj4+Pj4+ICsgICAgICB9DQo+ID4+Pj4+Pj4gKyAgICAgIFJlc3BvbnNlRGF0 YS5Cb2R5TGVuZ3RoID0gKkNvbnRlbnRMZW5ndGg7DQo+ID4+Pj4+Pj4gKyAgICAgIFJlc3BvbnNl RGF0YS5Cb2R5ID0gKENIQVI4ICopQWxsb2NhdGVQb29sDQo+ICgqQ29udGVudExlbmd0aCk7DQo+ ID4+Pj4+Pj4gKyAgICAgIGlmIChSZXNwb25zZURhdGEuQm9keSA9PSBOVUxMKSB7DQo+ID4+Pj4+ Pj4gKyAgICAgICAgRnJlZVBvb2wgKFRoaXNDaHVuayk7DQo+ID4+Pj4+Pj4gKyAgICAgICAgU3Rh dHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4+Pj4+Pj4gKyAgICAgICAgZ290byBEZWxl dGVyQ2h1bmtzOw0KPiA+Pj4+Pj4+ICsgICAgICB9DQo+ID4+Pj4+Pj4gKyAgICAgIEluaXRpYWxp emVMaXN0SGVhZCAoJlRoaXNDaHVuay0+TmV4dENodW5rKTsNCj4gPj4+Pj4+PiArICAgICAgVGhp c0NodW5rLT5MZW5ndGggPSAqQ29udGVudExlbmd0aDsNCj4gPj4+Pj4+PiArICAgICAgVGhpc0No dW5rLT5EYXRhID0gUmVzcG9uc2VEYXRhLkJvZHk7DQo+ID4+Pj4+Pj4gKyAgICAgIEluc2VydFRh aWxMaXN0IChIdHRwQ2h1bmtzLCAmVGhpc0NodW5rLT5OZXh0Q2h1bmspOw0KPiA+Pj4+Pj4+ICsg ICAgICBTdGF0dXMgPSBIdHRwSW9SZWN2UmVzcG9uc2UgKA0KPiA+Pj4+Pj4+ICsgICAgICAgICAg ICAgICAgIEh0dHBJbywNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gPj4+ Pj4+PiArICAgICAgICAgICAgICAgICAmUmVzcG9uc2VEYXRhDQo+ID4+Pj4+Pj4gKyAgICAgICAg ICAgICAgICAgKTsNCj4gPj4+Pj4+PiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+Pj4+Pj4+ICsgICAgICAgIGdvdG8gRGVsZXRlckNodW5rczsNCj4gPj4+Pj4+PiArICAgICAg fQ0KPiA+Pj4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+Pj4+ICsgICAgICAvLyBSZWFkIENSTEYNCj4g Pj4+Pj4+PiArICAgICAgLy8NCj4gPj4+Pj4+PiArICAgICAgWmVyb01lbSgoVk9JRCAqKSZSZXNw b25zZURhdGEsDQo+ID4+Pj4+PiBzaXplb2YoSFRUUF9JT19SRVNQT05TRV9EQVRBKSk7DQo+ID4+ Pj4+Pj4gKyAgICAgIFJlc3BvbnNlRGF0YS5Cb2R5TGVuZ3RoID0gMjsNCj4gPj4+Pj4+PiArICAg ICAgUmVzcG9uc2VEYXRhLkJvZHkgPSBDaHVua1NpemVBc2NpaTsNCj4gPj4+Pj4+PiArICAgICAg U3RhdHVzID0gSHR0cElvUmVjdlJlc3BvbnNlICgNCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAg ICBIdHRwSW8sDQo+ID4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgRkFMU0UsDQo+ID4+Pj4+Pj4g KyAgICAgICAgICAgICAgICAgJlJlc3BvbnNlRGF0YQ0KPiA+Pj4+Pj4+ICsgICAgICAgICAgICAg ICAgICk7DQo+ID4+Pj4+Pj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+ Pj4+PiArICAgICAgICBnb3RvIERlbGV0ZXJDaHVua3M7DQo+ID4+Pj4+Pj4gKyAgICAgIH0NCj4g Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyAgICAgIFRvdGFsTGVuZ3RoICs9ICpDb250ZW50TGVuZ3Ro Ow0KPiA+Pj4+Pj4gVGhlIGZvbGxvd2luZyBjb2RlIHJlcXVpcmVzIHNvbWUga2luZCBvZiBwcm90 ZWN0aW9uIGFnYWluc3QNCj4gcmVjZWl2aW5nDQo+ID4+IGFuDQo+ID4+Pj4+PiBpbmZpbml0ZSBu dW1iZXIgb2YgY2h1bmtzLg0KPiA+Pj4+Pj4gQ3VycmVudGx5IEkgY291bGQganVzdCBub3Qgc2Vu ZCBhIGxhc3QgY2h1bmsgYW5kIHdhaXQgZm9yIHRoZSBwbGF0Zm9ybQ0KPiB0bw0KPiA+Pj4+IGNy YXNoDQo+ID4+Pj4+PiBvci9hbmQgcnVuIG91dCBvZiBtZW1vcnkgOikNCj4gPj4+Pj4+DQo+ID4+ Pj4+IEdvb2QgcG9pbnQhIEhvd2V2ZXIsIEkgY2FuJ3QgdGhpbmsgb2YgYW55IGdvb2Qgd2F5IHRv IHByZXZlbnQgZnJvbQ0KPiB0aGlzDQo+ID4+Pj4gaGFwcGVucy4gVGhpcyBkZXBlbmRzIG9uIHRo ZSByZWxpYWJpbGl0eSBvZiBjb250ZW50IHByb3ZpZGVyIGFuZCBob3cNCj4gdGhlDQo+ID4+Pj4g d2ViIHNlcnZpY2UgaGFuZGxlcyBjaHVuayB0cmFuc2ZlciwgcmlnaHQ/DQo+ID4+Pj4+ICAgIEZy b20gc3lzdGVtIGZpcm13YXJlIHZpZXdwb2ludCwgd2Ugd291bGQgY29ubmVjdCB0byBhIHRydXN0 ZWQNCj4gPj4gY29udGVudA0KPiA+Pj4+IHNvdXJjZSBmb3IgZWl0aGVyIEhUVFAgYm9vdCBpbWFn ZSBhbmQgUmVkZmlzaCBzZXJ2aWNlIHJlc291cmNlLg0KPiA+Pj4+PiBEbyB5b3UgdGhpbmsgdGhp cyBjb25jZXJuIGlzIHZhbGlkIGZvciB0aGUgcmVhbCBwcmFjdGljZT8NCj4gPj4+Pj4NCj4gPj4+ Pj4gT3IgZ2l2ZSBpdCBhIGxpbWl0ZWQgc2l6ZSBvZiBwYXlsb2FkPyBMaWtlIHRoZSBzaXplIGxh cmdlciB0aGFuIDFHIGNvdWxkDQo+IGJlDQo+ID4+Pj4gY29uc2lkZXJlZCBhcyBhbiBpbGwgY29u dGVudD8NCj4gPj4+PiBXaGF0IHdvdWxkIGJlIHRoZSBsYXJnZXN0IHBheWxvYWQgdGhhdCB5b3Ug d291bGQgbGlrZSB0byB1c2UNCj4gPj4+PiBjaHVuay10cmFuc2ZlciBmb3I/DQo+ID4+PiBGb3Ig dGhlIEhUVFAgcmVzcG9uc2UsIHdoZXRoZXIgdG8gdXNlIGNodW5rIHRyYW5zZmVyIGlzIGF0IHRo ZQ0KPiBkaXNjcmV0aW9uDQo+ID4+IG9mIFJlZGZpc2ggc2VydmljZS4gV2UgY3VycmVudGx5IGNh biBvbmx5IHRlbGwgaWYgdGhlIHJlc3BvbnNlIHBheWxvYWQgaXMgaW4NCj4gPj4gY2h1bmsgdHJh bnNmZXIgb3Igbm90IHVzaW5nIFRyYW5zZmVyLUVuY29kaW5nIEhUVFAgcmVzcG9uc2UgaGVhZGVy IGJ1dA0KPiBub3QNCj4gPj4gYWJsZSB0byBwcmVkaWN0IHRoZSBzaXplIG9mIHBheWxvYWQgdW5s ZXNzIHdlIGdldCB0aGUgZmlyc3QgY2h1bmsuDQo+ID4+PiBJbiB0aGUgcmVhbCBwcmFjdGljZSwg SSBzZWUgYSBsYXJnZSBwYXlsb2FkIGxpa2UgQXR0cmlidXRlUmVnaXN0cnkgaXMNCj4gPj4gdHJh bnNmZXJyZWQgYmFjayBpbiBjaHVuaywgaG93ZXZlciwgSSBhbHNvIHNlZSBzb21lIHNtYWxsIHNp emUgcGF5bG9hZCBpcw0KPiA+PiB0cmFuc2ZlcnJlZCBiYWNrIGluIGNodW5rIHRyYW5zZmVyIGFz IHdlbGwuDQo+ID4+Pj4gSSBzZWUgdGhhdCB0aGUgY2h1bmtlZCB0cmFuc2ZlciBpcyBub3QgYmVp bmcgY3VycmVudGx5IHVzZWQgaW4gSFRUUA0KPiA+Pj4+IEJvb3QsIHNvIHdlIHNob3VsZCBzdGlj ayB0byBjdXJyZW50IHVzZSBjYXNlIC3CoCBSZWRmaXNoLg0KPiA+Pj4gWWVzLCBjdXJyZW50bHkg b25seSBSZWRmaXNoUGtnIHVzZSBIVFRQIGNodW5rIHRyYW5zZmVyIEFQSXMgZGVmaW5lZCBpbg0K PiA+PiBEeGVIdHRwSW9MaWIuICBCdXQgd2hhdCBkbyB5b3UgbWVhbiB0byBzdGljayB0aGUgdXNl IGNhc2UgdG8gUmVkZmlzaCBvbmx5Pw0KPiA+PiBUaG9zZSBjaHVuayB0cmFuc2ZlciByZWxhdGVk IEFQSXMgY291bGQgYmUgY29tbW9ubHkgdXNlZCBieSBhbnkgZWRrMg0KPiA+PiBIVFRQIGNsaWVu dHMgbmVlZCBjaHVuayB0cmFuc2ZlciBhbHRob3VnaCB3ZSBvbmx5IGhhdmUgdHdvIHVzZSBjYXNl cw0KPiAoYW5kDQo+ID4+IG9ubHkgUmVkZmlzaCB1c2VzIGl0IHNvIGZhcikuDQo+ID4+IEkgb25s eSBtZWFudCB0aGF0IGl0IHdvdWxkIGJlIHJlYXNvbmFibGUgdG8gY29tZSB1cCB3aXRoIGENCj4g Pj4gY2h1bmstdHJhbnNmZXIgbGltaXQgdGhhdCBpcyBkaWN0YXRlZCBzb2xlbHkgYnkgUmVkZmlz aCB1c2UgY2FzZSwgc2luY2UNCj4gPj4gaXQgaXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBhcm91 bmQuDQo+ID4+IEluIGNhc2Ugb3RoZXIgU1cgcGllY2VzIHdvdWxkIGxpa2UgdG8gY29uc3VtZSBI VFRQIEkvTyBsaWJyYXJ5IGZvcg0KPiA+PiBjaHVuay10cmFuc2ZlciBhbmQgc2VlIHRoYXQgdGhl IGxpbWl0IGlzIHRvbyBzbWFsbCwgdGhleSBjb3VsZCBwcm9wb3NlIGENCj4gPj4gcGF0Y2ggdG8g ZXh0ZW5kIGl0Lg0KPiA+IFllcywgd2UgY2FuIGRvIGl0Lg0KPiA+PiBUaGUgb3RoZXIgYXBwcm9h Y2ggd291bGQgYmUgdG8gc29tZWhvdyBkeW5hbWljYWxseSBhc3Nlc3MgdGhlIGxpbWl0IGJ5DQo+ ID4+IGxvb2tpbmcgYXQgaG93IG11Y2ggZnJlZSBtZW1vcnkgaXMgYXZhaWxhYmxlIG9uIHRoZSBw bGF0Zm9ybS4NCj4gPj4gQ2FuIHdlIGVzdGltYXRlIHdoYXQgd291bGQgYmUgdGhlIGxhcmdlc3Qg cGF5bG9hZCBSZWRmaXNoIHdvdWxkIGxpa2UgdG8NCj4gPj4gcHVzaCB0aHJvdWdoPw0KPiA+IFRo ZSBiaWdnZXN0IHBheWxvYWQgb2YgUmVkZmlzaCByZXNvdXJjZSB3aGljaCBzZW50IGJhY2sgdG8g Y2xpZW50IGNvdWxkIGJlDQo+IEF0dGFpYnV0ZVJlZ2lzdHJ5LiBPbmUgZXhhbXBsZSBoZXJlIGlz IHRoZSByYXcgdGV4dCBKU09OIGZpbGUgb2YNCj4gQXR0YWlidXRlUmVnaXN0cnkgaXMgMS4yTUIs IGhvd2V2ZXIgaXQgaXMgcmVkdWNlZCB0byB+NjVLIHVzaW5nIGd6aXAuIEhvdyBiaWcNCj4gdGhl IEF0dGFpYnV0ZVJlZ2lzdHJ5IHBheWxvYWQgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0gYW5kIGFs c28gZGVwZW5kcyBvbg0KPiBpZiBSZWRmaXNoIHNlcnZpY2Ugc2VuZHMgYmFjayB0aGUgcGF5bG9h ZCB1c2luZyBnemlwLg0KPiA+IFdlIGNhbiBqdXN0IGxpbWl0IGl0IHRvIDEwTUIgZm9yIG5vdywg dGhhdCBzYXlzIHdlIGJyZWFrIHRoZSBjaHVuayB0cmFuc2Zlcg0KPiBpZiBUb3RhbExlbmd0aCA+ IDEwTUIuIFdlIGNhbiBhZGp1c3QgaXQgbGF0ZXIgaWYgYW55IHVzZXMgY2FzZSByZXF1ZXN0IGl0 LiBIb3cNCj4gZG8geW91IHRoaW5rPw0KPiBTaW5jZSB0aGUgbGltaXQgaXMgc28gc21hbGwsIHRo ZXJlIGlzIG5vIHBvaW50IGluIGNoZWNraW5nIGl0IGFnYWluc3QNCj4gdG90YWwgYW1vdW50IG9m IG1lbW9yeS4gRm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBzaG91bGQgYmUgZmluZSB3aXRoIHRoZQ0K PiBsaW1pdCB5b3UgaGF2ZSBzdWdnZXN0ZWQgOikNCj4gDQo+ID4+Pj4+Pj4gKyAgICB9Ow0KPiA+ Pj4+Pj4+ICsgICAgKkNvbnRlbnRMZW5ndGggPSBUb3RhbExlbmd0aDsNCj4gPj4+Pj4+PiArICAg ICpDaHVua0xpc3RIZWFkID0gSHR0cENodW5rczsNCj4gPj4+Pj4+PiArICAgIERFQlVHICgoREVC VUdfSU5GTywgIiAgICAgVG90YWwgb2YgbGVuZ2ggb2YgY2h1bmtzIDolZFxuIiwNCj4gPj4+Pj4+ IFRvdGFsTGVuZ3RoKSk7DQo+ID4+Pj4+Pj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ Pj4+Pj4gKyAgfSBlbHNlIHsNCj4gPj4+Pj4+PiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0K PiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+PiArRGVsZXRlckNodW5rczo7DQo+ID4+Pj4+PiBOYW1l IHRoaXMgbGFiZWwgRXhpdERlbGV0ZUNodW5rcyBhbmQgcmVtb3ZlIHRoZSBjb21tYS4NCj4gPj4+ Pj4+PiArICB3aGlsZSAoIUlzTGlzdEVtcHR5IChIdHRwQ2h1bmtzKSkgew0KPiA+Pj4+Pj4+ICsg ICAgVGhpc0xpc3RFbnRyeSA9IEdldEZpcnN0Tm9kZSAoSHR0cENodW5rcyk7DQo+ID4+Pj4+Pj4g KyAgICBSZW1vdmVFbnRyeUxpc3QgKFRoaXNMaXN0RW50cnkpOw0KPiA+Pj4+Pj4+ICsgIH07DQo+ ID4+Pj4+Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4+PiArfQ0KPiA+Pj4+Pj4+IGRpZmYg LS1naXQgYS9OZXR3b3JrUGtnL0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0dHBJb0xpYi5pbmYN Cj4gPj4+Pj4+PiBiL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9MaWIvRHhlSHR0cElvTGli LmluZg0KPiA+Pj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+Pj4+Pj4gaW5kZXggMDAw MDAwMDAwMC4uYTAyYjQwOTU0Nw0KPiA+Pj4+Pj4+IC0tLSAvZGV2L251bGwNCj4gPj4+Pj4+PiAr KysgYi9OZXR3b3JrUGtnL0xpYnJhcnkvRHhlSHR0cElvTGliL0R4ZUh0dHBJb0xpYi5pbmYNCj4g Pj4+Pj4+PiBAQCAtMCwwICsxLDQzIEBADQo+ID4+Pj4+Pj4gKyMjIEBmaWxlDQo+ID4+Pj4+Pj4g KyMgIFRoaXMgbGlicmFyeSBpbnN0YW5jZSBwcm92aWRlcyBIVFRQIElPIGhlbHBlciBmdW5jdGlv bnMuDQo+ID4+Pj4+Pj4gKyMNCj4gPj4+Pj4+PiArIyAgKEMpIENvcHlyaWdodCAyMDIwIEhld2xl dHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50DQo+ID4+IExQPEJSPg0KPiA+Pj4+ICMN Cj4gPj4+Pj4+PiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQg IyAjIw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArW0RlZmluZXNdDQo+ID4+Pj4+Pj4gKyAgSU5G X1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxYg0KPiA+Pj4+Pj4+ICsgIEJB U0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IER4ZUh0dHBJb0xpYg0KPiA+Pj4+Pj4+ICsg IE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9IER4ZUh0dHBJb0xpYi51bmkNCj4gPj4+ Pj4+PiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA1MEIxOThGOC03OTg2LTRG NTEtQTg1Ny1DRkU0NjQzRDU5RjMNCj4gPj4+Pj4+PiArICBNT0RVTEVfVFlQRSAgICAgICAgICAg ICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ID4+Pj4+Pj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAg ICAgICAgICAgID0gMS4wDQo+ID4+Pj4+Pj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAg ICAgID0gSHR0cElvTGlifCBEWEVfQ09SRSBEWEVfRFJJVkVSDQo+ID4+Pj4+PiBEWEVfUlVOVElN RV9EUklWRVIgRFhFX1NNTV9EUklWRVIgVUVGSV9BUFBMSUNBVElPTg0KPiA+Pj4+Pj4gVUVGSV9E UklWRVINCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKyMNCj4gPj4+Pj4+PiArIyBUaGUgZm9sbG93 aW5nIGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkDQo+ IGJ5DQo+ID4+Pj4gdGhlDQo+ID4+Pj4+PiBidWlsZCB0b29scy4NCj4gPj4+Pj4+PiArIw0KPiA+ Pj4+Pj4+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEVCQyBB Uk0gQUFSTTY0DQo+ID4+IFJJU0NWNjQNCj4gPj4+Pj4+PiArIw0KPiA+Pj4+Pj4+ICsNCj4gPj4+ Pj4+PiArW1NvdXJjZXNdDQo+ID4+Pj4+Pj4gKyAgRHhlSHR0cElvTGliLmMNCj4gPj4+Pj4+PiAr DQo+ID4+Pj4+Pj4gK1tQYWNrYWdlc10NCj4gPj4+Pj4+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0K PiA+Pj4+Pj4+ICsgIE5ldHdvcmtQa2cvTmV0d29ya1BrZy5kZWMNCj4gPj4+Pj4+PiArDQo+ID4+ Pj4+Pj4gKw0KPiA+Pj4+Pj4+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4+Pj4+Pj4gKyAgQmFzZUxp Yg0KPiA+Pj4+Pj4+ICsgIEJhc2VNZW1vcnlMaWINCj4gPj4+Pj4+PiArICBEZWJ1Z0xpYg0KPiA+ Pj4+Pj4+ICsgIERwY0xpYg0KPiA+Pj4+Pj4+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPj4+ Pj4+PiArICBQcmludExpYg0KPiA+Pj4+Pj4+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0K PiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArW1Byb3RvY29sc10NCj4gPj4+Pj4+PiArICBnRWZpSHR0 cFByb3RvY29sR3VpZCAgICAgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gPj4+Pj4+ PiArDQo+ID4+Pj4+Pj4gZGlmZiAtLWdpdCBhL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9M aWIvRHhlSHR0cElvTGliLnVuaQ0KPiA+Pj4+Pj4+IGIvTmV0d29ya1BrZy9MaWJyYXJ5L0R4ZUh0 dHBJb0xpYi9EeGVIdHRwSW9MaWIudW5pDQo+ID4+Pj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPj4+Pj4+PiBpbmRleCAwMDAwMDAwMDAwLi5kNDE5YjFhNDlkDQo+ID4+Pj4+Pj4gLS0tIC9k ZXYvbnVsbA0KPiA+Pj4+Pj4+ICsrKyBiL05ldHdvcmtQa2cvTGlicmFyeS9EeGVIdHRwSW9MaWIv RHhlSHR0cElvTGliLnVuaQ0KPiA+Pj4+Pj4+IEBAIC0wLDAgKzEsMTMgQEANCj4gPj4+Pj4+PiAr Ly8gLyoqIEBmaWxlDQo+ID4+Pj4+Pj4gKy8vIFRoZSBsaWJyYXJ5IGluc3RhbmNlIHByb3ZpZGVz IEhUVFAgSU8gaGVscGVyIGZ1bmN0aW9ucy4NCj4gPj4+Pj4+PiArLy8NCj4gPj4+Pj4+PiArLy8g KEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50 DQo+ID4+IExQPEJSPg0KPiA+Pj4+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudCAvLyAvLyAqKi8NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pj4gKw0KPiA+ Pj4+Pj4+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICJIVFRQIElPDQo+ID4+Pj4gSGVscGVyDQo+ID4+Pj4+PiBMaWJyYXJ5Ig0KPiA+Pj4+ Pj4+ICsNCj4gPj4+Pj4+PiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAg ICNsYW5ndWFnZSBlbi1VUyAiVGhlDQo+ID4+IGxpYnJhcnkNCj4gPj4+Pj4+IGluc3RhbmNlIHBy b3ZpZGVzIEhUVFAgSU8gaGVscGVyIGZ1bmN0aW9ucy4iDQo+ID4+Pj4+Pj4gKw0KPiA+Pj4+Pg0K PiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pg0KPiA+Pj4NCj4gPg0KPiA+DQo+ ID4gDQo+ID4NCj4gPg0KDQo=