From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web12.4445.1663910708570374270 for ; Thu, 22 Sep 2022 22:25:09 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=bIDcwfAr; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663910708; x=1695446708; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=LTFE66/ewjCp5mqKzkpOWMV3cgVR1Tr1Uh2rc/pKGb8=; b=bIDcwfArojVm/s+MkUBtczfKaYKL6jdcC6i7JHPBSPeW7XNs4qDlBl1E 6AL1opFJ9507cE0YLcZSUxGgy7JP+DRT+mzep/D/FGUrk5hFp3TGd7en1 pxggWldCU+Eu5NHhTdxWmIM46FLTHctpHtMWsQUNJtURJTLbZEf5DS3ls httBxqmbRCtuajC1ouxz/77YyY9Ri4W35c6BuNWmIlBsPLrN3L6Oerfsr L6Lb+8jI8BjkkmEE327ab4GU61ecClOBXW2ZjzWLFrATYf6qHcBQsrMDZ a/o0SaJUAUSrN7ky1q9UznR9BqE4v2Z/ZHCuKckn6WBvj6sbRaz2HRcp8 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="301394198" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="301394198" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 22:25:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="597745881" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga006.jf.intel.com with ESMTP; 22 Sep 2022 22:25:07 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 22:25:06 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 22:25:06 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Thu, 22 Sep 2022 22:25:06 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.175) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 22 Sep 2022 22:25:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HTIQd9t7NssP30E79/pKgAviKAIqo9RuUxUy3CP/uxZQRfg2mzfJkAOxWq9ehf5wlatuHFsAdptT37yWVUAZQKSvNe1HJRnB9CaJyahOjb3huoU+q1t+E2GLUJGL3wCKGOE1dao/iSY5Z0xwTzgGIY3mpFhhzbqG6bK4TZcxnQjo0hbHzUcDoE9lbHbIn2GV9T8E6Tkn2eHTY7u3vNE+dxAcAXft2/Pwwa219wZVUEY9SrdrDBLLIrNyoGTObM8CkHj+l6ZCDNY5xsfbQC1AudH8XKzvg2BRIlctKhzaiRg8EOrNTok+/Ruk+L4SlRnBMRUPhaktrwegD9NQOLGi1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LTFE66/ewjCp5mqKzkpOWMV3cgVR1Tr1Uh2rc/pKGb8=; b=Bw/+codfhjDTYa/CTeBJaUYf4OE4JeJmB9nJtLVfD7VAazNdkM3nXUs7o3JJb/uS6BaWw4HltwqVaXqG92RAqlohyzlJprNpcY2GCYb10NVtfZQ7ExzIUt1/pbIHS4UdiD+l7EVh42q96UjJ9Vmcvjoei1nm7hvRiYHRQ5uYu92Jz4QOOjHFkE1iK95oXcT5nFkQbS5hRcdeQRFo53OEeWcd1Re2OL8KsWmXNAAe3AlALYYNb1k1N6HKR+oDHxgNdjXIbv7sfDdt4LUWRzfyiU40KXUIxUDu9u2yNKQ5/dq4uzG8WXyRYYYRAzHE3/vSTnQntWmugs07cQS6JB1kxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by CH0PR11MB5394.namprd11.prod.outlook.com (2603:10b6:610:b9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.20; Fri, 23 Sep 2022 05:25:02 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2%7]) with mapi id 15.20.5654.019; Fri, 23 Sep 2022 05:25:02 +0000 From: "Michael D Kinney" To: "Li, Yi1" , "devel@edk2.groups.io" , "Chen, Christine" , "Feng, Bob C" , "Kinney, Michael D" CC: "Yao, Jiewen" , "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" Subject: Re: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Topic: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Index: AQHYzXZUSlj4dA4GnU+byMn1X74/Xa3qEDxAgACnSgCAABuVUIAAltwAgACfoRCAAE0RAIAAJi3Q Date: Fri, 23 Sep 2022 05:25:02 +0000 Message-ID: References: <9dcccc674996fa3fdcb8858e3609437e66ce82ac.1663735439.git.yi1.li@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|CH0PR11MB5394:EE_ x-ms-office365-filtering-correlation-id: d95fa913-02e2-4c7f-02b0-08da9d23f768 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xotC6sJyuc/lxTSskY3+nnuyMPTDa2cxsvJt3jemG8BSv4IcfpoOOUJwCHsM0o6JJkIwMabdM89+RtYIg9wRDt2tZI3oFyVFxB0r/2ztZwrtbNR35KL9r10+xiRIl9ET/7xiP2mAPV66OGBl4SWruajwwnQRH4R/sbY6dhbbiC2a8zTHcLj3mjukVPWqICxxornj9agC0GB0sP93jp3fooNaWch+EacxAZtpSlGVhR7gakfHSavLiJoEUG8qX+c1EJy43dLM2qryngbA3yFnQNGw/T28yTL/2VfpJvswo36eczKQ9/nu9u6agjtE5FlC/YiuNkj51HSw+FA5B8Y428jMN3n97LKHhJMILoaLtXvue4TNIrA1/LLAMQh5MSI5wPCdhzgknj82W5yb2yGd+txIbuK6EXKVS5vT0fFGPIOjKmH7lRwjUce6gV25rlWb/Qy7cCy5g4H43yRt98TUEwVBdhQ45/2EbwAM9/Y4cHx4vH1wgwS0p/RC29Od5iPsTZEZ3md6hi08pAGgqcYcVrCcsPWfvp0lX7/d+uDIx0jVTakAM3KX/sMzyumUau2sOe6ZjDqB/0in9B0Cz1Wm4EAdjHlow59Ql0bxMTaqPT+9PGps2aYRI4CghmJAkXPuAjJTevvWcCQsEYgo9JF3qxib9UBfeOptVNo4l7CUnVrJZHhfaBR3DoopKzrulhAD2ftPZFUClHEdUBbHZ4IPIe4Ph7ZC49sGgKLmTRgz8TvYfpKYDQiqOk9GzGkr7l/nxjLiYYfGGVdEoxLofqzMT2ZEKQAYh6+52vJNklscI4tRx0O3EsNGoN0GDWGOxAxgh8HZ0VqU59icOpEMSMF1lw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(376002)(396003)(39860400002)(366004)(346002)(451199015)(4326008)(8936002)(82960400001)(66446008)(76116006)(66476007)(66556008)(64756008)(122000001)(66946007)(38100700002)(33656002)(30864003)(86362001)(52536014)(38070700005)(5660300002)(2906002)(53546011)(26005)(9686003)(83380400001)(6506007)(186003)(478600001)(55016003)(71200400001)(107886003)(7696005)(966005)(8676002)(41300700001)(110136005)(54906003)(19627235002)(316002)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MjRXVWd3bUtyMU9uWXppK0l4NDBTMk1CQTlDcUswalBuYzQ4TjFpL2dhZTgv?= =?utf-8?B?dDFWY0lrSUhvZWR4SWpqWkxodTEvTFA5b0liNzhhbis2VkJJajB6YTJ4MVV3?= =?utf-8?B?blNUZlVnajZpL0NXeVJGdXVKcDlqTXJDbG5KU0MyNnRBU2JCYjNqVElUc2Fr?= =?utf-8?B?WWFNZGx0RUI2dkI3VncyVm9oNTY2cFBDNjcyUmNrSk1na1RQa1JWQTkrN0F5?= =?utf-8?B?eFFhb3F2SDRicTRvMDZtaTl3VURXMzZMYjFpSlpFcWEvQ3V5dzYvNVVSbzB4?= =?utf-8?B?V0NEcm13ZlJvTE1QaDVsTTNGTXFNV1dGOUR1aG9DSE1ESERJYnpNa1JNTytK?= =?utf-8?B?aTJFakdnYUJxZVRJNU9TSWE1WEdQOHZvZDVQRHk1TlBvc3BQaDRjOXY2eGk5?= =?utf-8?B?VEhqUE5ObkdDNGlxYUQvTloxS25qL0J0UFM3ZDVvWGVGMDc4UDRmbDQzT3pI?= =?utf-8?B?eXpFUGttSVFUOER0cElJaWNsQ0JYejdFMGxIYWRRdUl6QUlJREEvbEw3RnAw?= =?utf-8?B?bUVMdk0yUjRXYU5Ob2NZZ0E5NWM3b05WMjNJQ2dSSkprUjRnN0sxQ3VlanRU?= =?utf-8?B?VmJFUzBUb1BZVmF6YkNQcUpvNXFHYlZqRm5NbnBqenBqRENmbkZ3a1FaaDRF?= =?utf-8?B?bDhFUzBjZzBlWnVTUDd2a25uMzNaejlHZFNkK0Q5VmpmbE1KaWQrYUN6TVFn?= =?utf-8?B?d2laSENUZWczWTBFeWtmL0xicmRSNDJkcGQwaUJKZXB6Z1h3ZGRQSUNxQUlt?= =?utf-8?B?UVdTeWw3dVg5MGNoa2FuVFJwdFJ6T2pzRThIck5XcUc0SkpQelJxamxWWmoy?= =?utf-8?B?U3E2NUFmbzAwNERtTHZ2bDZhejRYTS9TNUgvL29HTy83a0o4cFp2aVVIY3FG?= =?utf-8?B?Zk1qN2RUMko3WUpCck9LWGZzNlhvY2hmbk1uVytaME8yNzlSa1J4ZkNMdy9w?= =?utf-8?B?Z0MyamxrTzBkUHZHUUtFbjJEdU9VZXlpR2lock43eHd4WkJKMnQ5TWZINzNl?= =?utf-8?B?WGNoT0g4dmNhLytBQk8wUVR3VTErNFZ6dkJQY2xrYUtMamtEY0d2NVNKSE90?= =?utf-8?B?dWhkY1lTdjB1MlBiYXoxMDZuL1ZVd1NMZFNhc0Vvdm1wdkRkcnFNQTVxSTlo?= =?utf-8?B?RU1IOGRmUEFjV1ZQa3dNMmc5bHZwMlhsVTJNaW8zMTdpWXZhdDNFQ3Q5SFhJ?= =?utf-8?B?YXNPYmdLOUpSM1BzRG5rOTcxVGVFY1VyUzBQV3Axcmdzc2tpbFNOL0hvYzU5?= =?utf-8?B?RWVMQ1VNMm5CYmp1bEgwblhxcFY0T0NoZGVnOVNYVkdDR1V1bmNMdUlYRWNj?= =?utf-8?B?TkVzRFBsSkpvZ0NjZzJFanhZclVrNEg2NUErUGtRT0lhbkxhOXhFR3pWbXBV?= =?utf-8?B?UU40cHAwbyt4a2NJTVFTempHaFo0WEpaUVFsZVY1QzB4aThscUNyQjNRNlc2?= =?utf-8?B?L04weUwwSmk0ellRdUlUclZWWTloSG95VDVSa1F4RlZRa2lEdmdnRHhqRDB3?= =?utf-8?B?WnFHcmh5eWdlSmtvZlVUdnBCdzVqYkFZRUtOOVdrV2FncUJ1SlJ4ZGo0Smtw?= =?utf-8?B?emt3c2N3MkM4eGozNGJTUWJ6WFlySEF5cUZ5cXg3MXg3TCs4dzdFVk9QUm9W?= =?utf-8?B?Qkk0ZElYVzVxRVVDcXVycEQ1c0N4NTkwYnVOUlBVMWZVQk1BSkc1SXpWd3Jw?= =?utf-8?B?THR2T3p0TU1WUzZjTEFUZks0eGM0WVFRNFVkSVl4UG1hdkM1MHBySDhKRVV1?= =?utf-8?B?ZU5ndXR0N0lRWFZyYXlZM3Y3T2VhalV6WWdDZ3FDYWdIR0dVdVBoMTROZXYz?= =?utf-8?B?U3IvQ3JoZlFuYSs3RVNqTTVhNTYrcTNrU2Z5bG1XdTlVWHkraUlQK0FMeEg0?= =?utf-8?B?czJIYTUzcVM3SjJlVE1ZbDk4VFNRZHZUNitzN0Q2UGl1VnRBa2ZYZDdKajRj?= =?utf-8?B?b1owOTd4SThpN0lOL1VKVVE0NG80T3ZoWVZHUEtJMkZpaEhyeXVzOHZGdFg3?= =?utf-8?B?VzlWVGlKWmYrbDM3RGJZd2hvQndhNDg0VU5FL1JUT1hlY3N0NnlMNmkreEFn?= =?utf-8?B?cmh4Y0VKQTdVN041dVI5U1MzSDVjQTdkdHN2Q1k0RktZcHJqUUo1ankwdHNy?= =?utf-8?B?K0dETi8velJpT1V5enFpZ0R5ZGpBU0FMdVcrbEF4OW5XNk50VWtBcHZsNkJ2?= =?utf-8?B?blE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d95fa913-02e2-4c7f-02b0-08da9d23f768 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 05:25:02.6239 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2rVmpFhcBIp+aop4spnDiOwQmjwE01rrLB8TsoGA+SF8UUPmfLg7hty4HD+9u5di3TfOS2H7g9rkl088s59Mm2aFWWSBbml/Q4j6D0CEmZI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5394 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgWWksDQoNCkkgYWdyZWUgdGhlcmUgYXJlIHNvbWUgY29tcGxleCBpbnRlcmFjdGlvbnMgaW4g dGhlIG9wZW5zbGwgc291cmNlcy4NCg0KU2luY2UgeW91IGFyZSBkZWZpbmluZyBhIGZhbWlseSBm b3IgRUMsIGNhbiB3ZSB1c2UgdGhlIEVDIEZhbWlseSAhPSAwIGluc3RlYWQgb2YNClBjZE9wZW5z c2xFY0VuYWJsZWQgYW5kIHJlbW92ZSBQY2RPcGVuc3NsRWNFbmFibGVkLg0KDQpJIHdhbnQgdG8g bWFrZSBzdXJlIGRldmVsb3BlcnMgZG8gbm90IHJ1biBpbnRvIHN0cmFuZ2UgYnVpbGQgZmFpbHVy ZXMgaWYNCnRoZXkgZG8gbm90IGtlZXAgdGhlIDIgZGlmZmVyZW50IFBDRHMgYWxpZ25lZC4gIEkg cHJlZmVyIGEgc2luZ2xlIFBDRCANCnNldHRpbmcgdG8gZW5hYmxlIHVzZSBvZiBFQyBzZXJ2aWNl cy4NCg0KSSBhbHNvIG5vdGljZWQgdGhhdCB0aGUgdXNlIG9mIGEgUENEIGV4cHJlc3Npb24gaW4g YW4gSU5GIHRvIHNlbGVjdCBzb3VyY2UNCmZpbGVzIGRvZXMgbm90IHdvcmsgaWYgdGhlIFBDRCB2 YWx1ZSBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgLS1wY2QgZmxhZyBvbg0KdGhlIGJ1aWxkIGNvbW1h bmQgbGluZS4gIFRoaXMgbG9va3MgbGlrZSBhIHNpZ25pZmljYW50IGJ1ZyB3aXRoIHRoZSBQQ0QN CmV4cHJlc3Npb24gaW4gYW4gSU5GIGZpbGUuICBUaGlzIGFsc28gbmVlZHMgdG8gYmUgZml4ZWQu DQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMaSwgWWkx IDx5aTEubGlAaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIyLCAyMDIy IDg6MDIgUE0NCj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBY aWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLA0KPiBHdW9taW4gPGd1b21pbi5q aWFuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEv M10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiANCj4gSGkgTWlrZSwNCj4gDQo+IDEuIFll cywgaXQgbWF0Y2hlcy4NCj4gQnkgSW50ZWwgc2lkZSwgMTAwK2tiKDIwJSspIEZWIHNpemUgaW5j cmVhc2Ugd2lsbCBiZSBhIGJpZyBjb25jZXJuLCBwbGVhc2UgcmVmZXIgdG8gYW5vdGhlciBpbnRl cm5hbCBlbWFpbC4NCj4gDQo+IDIuIEFkZGl0aW9uYWwgc2l6ZSBpcyBjb21pbmcgZnJvbSBtb2R1 bGVzIG1heSBjb25zdW1lZCBFQyBBUElzLCBlZy4gVExTIFBFTSBYNTA5ICAuLi4NCj4gDQo+IElm IHdlIGFkZGVkIEVDIHNvdXJjZSB0byBPcGVuc3NsTGliLmluZiBhbmQgZGlzYWJsZWQgbWFjcm8g T1BFTlNTTF9OT19FQywgdGhvc2UgbW9kdWxlcyB3aWxsIGxpbmsgRUMgQVBJcyBhbmQgaW5jcmVh c2UgYmluYXJ5DQo+IHNpemUsDQo+IFRoaXMgYW4gZXhhbXBsZSBmcm9tIHg1MDkveF9wdWJrZXku YyAsIG90aGVyIG1vZHVsZXMgaXMgc2ltaWxhcjoNCj4gI2lmbmRlZiBPUEVOU1NMX05PX0VDDQo+ IEVDX0tFWSAqZDJpX0VDX1BVQktFWShFQ19LRVkgKiphLCBjb25zdCB1bnNpZ25lZCBjaGFyICoq cHAsIGxvbmcgbGVuZ3RoKQ0KPiB7DQo+ICAgICBFVlBfUEtFWSAqcGtleTsNCj4gICAgIEVDX0tF WSAqa2V5ID0gTlVMTDsNCj4gICAgIC8vLi4uLiBjYWxsIEVDIGZ1bmN0aW9ucw0KPiB9DQo+ICNl bmRpZg0KPiANCj4gSWYgd2UgYWRkZWQgRUMgc291cmNlIHRvIE9wZW5zc2xMaWIuaW5mIGFuZCBl bmFibGUgbWFjcm8gT1BFTlNTTF9OT19FQywgRUMgbW9kdWxlIHdpbGwgdGhyb3cgYnVpbGQgZXJy b3IsDQo+IFNpbmNlIHNvbWUgRUMgaW50ZXJuYWwgQVBJcyBvciBzdHJ1Y3RzIGhhdmUgYmVlbiBk aXNhYmxlZCBieSBPUEVOU1NMX05PX0VDIGJ1dCAgbm90IGFub3RoZXIuDQo+IFRoaXMgYW4gZXhh bXBsZSBmcm9tIGVjL2VjX2xvY2FsLmggLCBvdGhlciBlcnJvciBpcyBzaW1pbGFyOg0KPiANCj4g I2lmbmRlZiBPUEVOU1NMX05PX0VDDQo+IHR5cGVkZWYgc3RydWN0IGVjX2dyb3VwX3N0IEVDX0dS T1VQOw0KPiB0eXBlZGVmIHN0cnVjdCBlY19wb2ludF9zdCBFQ19QT0lOVDsNCj4gI2VuZGlmDQo+ IA0KPiAvLyBidXQgdGhpcyBmdW5jdGlvbiBub3QgYmVlbiBlbmNsb3NlZCBieSBPUEVOU1NMX05P X0VDLCBhbmQgd2lsbCB0aHJvdyBidWlsZCBlcnJvcg0KPiAgICAgaW50ICgqcG9pbnRfc2V0X0pw cm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcCkgKGNvbnN0IEVDX0dST1VQICosDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNfUE9JTlQgKiwgY29u c3QgQklHTlVNICp4LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEJJR05VTSAqeSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKnosIEJOX0NUWCAqKTsNCj4gDQo+ IFRvIGF2b2lkIHRoaXMgYW5ub3lpbmcgb3BlbnNzbCBlcnJvciwgd2UgaW50cm9kdWNlZCBjb25k aXRpb25hbCBFQy4NCj4gDQo+IFRoYW5rcywNCj4gWWkNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT4NCj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMjIgNjo0NyBBTQ0KPiBU bzogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBZYW8sIEpp ZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGlu dGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLA0KPiBH dW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZl bF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiANCj4gSGkgWWks DQo+IA0KPiBJIGFncmVlIEVDIGlzIGFuIGltcG9ydGFudCBmZWF0dXJlLg0KPiANCj4gSSBkaWQg c29tZSBhbmFseXNpcyBvZiB0aGUgc2l6ZSBpbXBhY3QgdG8gdGhlIENyeXB0b1BrZyBtb2R1bGVz IG9uIGN1cnJlbnQgdHJ1bmsNCj4gd2l0aCBFQyBvbiBhbmQgb2ZmLiBVbmNvbXByZXNzZWQgc2l6 ZSBpcyBpbXBvcnRhbnQgZm9yIFBFSSBQaGFzZS4gIEZvciBEWEUgYW5kDQo+IFNNTSBwaGFzZSwg dGhlIENyeXB0byBzZXJ2aWNlcyBjYW4gYWx3YXlzIGJlIGNvbXByZXNzZWQuICBGcm9tIHRoZSB0 YWJsZSBiZWxvdywNCj4gYnVpbGRpbmcgYWxsIHRoZSBFQyBzZXJ2aWNlcyBpbiB0aGUgT3BlbnNz bExpYiBoYXMgbm8gc2l6ZSBpbXBhY3QgdG8gdGhlIE5PTkUNCj4gcHJvZmlsZSBhbmQgdGhlIE1J Tl9QRUkgcHJvZmlsZS4gIEl0IGhhcyB+MTA1IEtCIGltcGFjdCB0byBjb21wcmVzc2VkIERYRS9T TU0NCj4gdXNhZ2VzIHRoYXQgbWF5IHVzZSB0aGUgTUlOX0RYRV9NSU5fU01NIG9yIEFMTCBwcm9m aWxlcy4NCj4gDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5jb21wcmVz c2VkICAgICAgTFpNQSBDb21wcmVzc2VkDQo+IENQVSAgIENSWVBUT19TRVJWSUNFUyAgICBNb2R1 bGUgIEVDPUZBTFNFICBFQz1UUlVFICBFQz1GQUxTRSAgRUM9VFJVRSAgSW5jcmVhc2UNCj4gPT09 PSAgPT09PT09PT09PT09PT09ICA9PT09PT09PSAgPT09PT09PT0gID09PT09PT0gID09PT09PT09 ICA9PT09PT09ICA9PT09PT09PQ0KPiBJQTMyICBOT05FICAgICAgICAgICAgIENyeXB0b1BlaSAg ICAyMTUzNiAgICAyMTU2OCAgICAgICAgICAgICAgICAgICAgICAgICAwIEtCDQo+IElBMzIgIE5P TkUgICAgICAgICAgICAgQ3J5cHRvRHhlICAgIDIxNjMyICAgIDIxNjk2ICAgICAgICAgICAgICAg ICAgICAgICAgIDAgS0INCj4gSUEzMiAgTk9ORSAgICAgICAgICAgICBDcnlwdG9TbW0gICAgMjI5 NzYgICAgMjMwNzIgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KPiBJQTMyICBNSU5fUEVJ ICAgICAgICAgIENyeXB0b1BlaSAgIDI0ODk5MiAgIDI0OTEyMCAgICAgICAgICAgICAgICAgICAg ICAgICAwIEtCDQo+IElBMzIgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvRHhlICAgNjM2NjcyICAg ODI5NTY4ICAgIDI4ODUyMCAgIDQwMTAzNCAgICAxMTMgS0INCj4gSUEzMiAgTUlOX0RYRV9NSU5f U01NICBDcnlwdG9TbW0gICA0MjYwNDggICA2MDE0NzIgICAgMTkxNTE3ICAgMjk2MDIyICAgIDEw NSBLQg0KPiBJQTMyICBBTEwgICAgICAgICAgICAgIENyeXB0b1BlaSAgIDQyMzg0MCAgIDU5ODk3 NiAgICAxODkwNDcgICAyOTM3NTkgICAgMTA0IEtCDQo+IElBMzIgIEFMTCAgICAgICAgICAgICAg Q3J5cHRvRHhlICAgNjQ1MjgwICAgODM4MTQ0ICAgIDI5Mjk1NSAgIDQwNTI3NyAgICAxMTMgS0IN Cj4gSUEzMiAgQUxMICAgICAgICAgICAgICBDcnlwdG9TbW0gICA0NDE4ODggICA2MTcxODQgICAg MTk4Nzc5ICAgMzAzNjI4ICAgIDEwNSBLQg0KPiBYNjQgICBOT05FICAgICAgICAgICAgIENyeXB0 b1BlaSAgICAyOTYzMiAgICAyOTY2NCAgICAgICAgICAgICAgICAgICAgICAgICAwIEtCDQo+IFg2 NCAgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvRHhlICAgIDI5NzkyICAgIDI5NzkyICAgICAgICAg ICAgICAgICAgICAgICAgIDAgS0INCj4gWDY0ICAgTk9ORSAgICAgICAgICAgICBDcnlwdG9TbW0g ICAgMzEyOTYgICAgMzEyOTYgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KPiBYNjQgICBN SU5fUEVJICAgICAgICAgIENyeXB0b1BlaSAgIDMxMDc4NCAgIDMxMDg0OCAgICAgICAgICAgICAg ICAgICAgICAgICAwIEtCDQo+IFg2NCAgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvRHhlICAgODA0 Mjg4ICAxMDE2MjU2ICAgIDMxMTQzNiAgIDQyNjU5NiAgICAxMTUgS0INCj4gWDY0ICAgTUlOX0RY RV9NSU5fU01NICBDcnlwdG9TbW0gICA1NDM3NzYgICA3MzM5MjAgICAgMjA0NDgzICAgMzEwNzc1 ICAgIDEwNiBLQg0KPiBYNjQgICBBTEwgICAgICAgICAgICAgIENyeXB0b1BlaSAgIDU0MDM4NCAg IDczMDI0MCAgICAyMDI0OTQgICAzMDg0NjcgICAgMTA2IEtCDQo+IFg2NCAgIEFMTCAgICAgICAg ICAgICAgQ3J5cHRvRHhlICAgODE1MzkyICAxMDI3Mjk2ICAgIDMxNjIyOCAgIDQzMTMyMSAgICAx MTUgS0INCj4gWDY0ICAgQUxMICAgICAgICAgICAgICBDcnlwdG9TbW0gICA1NjM2NDggICA3NTM2 OTYgICAgMjEzNDg4ICAgMzE5NjQ0ICAgIDEwNiBLQg0KPiANCj4gTk9URTogRXZlbiBpZiBtdWx0 aXBsZSBtb2R1bGVzIGluIGFuIEZWIHVzZSBzdGF0aWMgbGlua2luZyBvZiBDcnlwdG8gbGlicywg aWYgdGhlDQo+ICAgICAgIGVudGlyZSBGViBpcyBjb21wcmVzc2VkLCB0aGUgdG90YWwgc2l6ZSBp bXBhY3QgaXMgdHlwaWNhbGx5IHRoZSBzaXplIG9mIGENCj4gICAgICAgc2luZ2xlIGluc3RhbmNl IG9mIGEgY29tcHJlc3NlZCBDcnlwdG9MaWIuICBUaGUgc2l6ZXMgb2YgdGhlIENyeXB0byogbW9k dWxlcw0KPiAgICAgICBpbiB0aGUgdGFibGUgYWJvdmUgc2hvdWxkIGJlIGEgY2xvc2UgYXBwcm94 aW1hdGlvbiBvZiB0aGUgc2l6ZSBpbXBhY3QgdG8gYQ0KPiAgICAgICBzaW5nbGUgRlYuDQo+IA0K PiBEb2VzIHRoaXMgbWF0Y2ggeW91ciBwcmV2aW91cyBzaXplIGFuYWx5c2lzPw0KPiANCj4gVGhl IGNyaXRpY2FsIGlzc3VlIHRvIGV2YWx1YXRlIGhlcmUgaXMgd2h5IGFkZGluZyB0aGUgRUMgc291 cmNlcyB0byBPcGVuc2xsTGliLmluZg0KPiBjYXVzZXMgdGhlIG1vZHVsZXMgdGhhdCBkbyBub3Qg dXNlIGFueSBFQyBzZXJ2aWNlcyB0byBncm93IGJ5IH4xMDVLQi4gIEhhcyBhbnkNCj4gZGV0YWls ZWQgYW5hbHlzaXMgb2YgdGhlIGZpbmFsIGxpbmtlZCBpbWFnZXMgYmVlbiBwZXJmb3JtZWQgdG8g c2VlIHdoZXJlIHRoaXMNCj4gYWRkaXRpb25hbCBzaXplIGlzIGNvbWluZyBmcm9tPw0KPiANCj4g VGhhbmtzLA0KPiANCj4gTWlrZQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+IEZyb206IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+DQo+ID4gU2VudDogVGh1cnNkYXks IFNlcHRlbWJlciAyMiwgMjAyMiA1OjU0IEFNDQo+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaXNob3Jl LCBTaGVsbHkgPHNoZWxseS5raXNob3JlQGludGVsLmNvbT4NCj4gPiBDYzogWWFvLCBKaWV3ZW4g PGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5j b20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4gPiBHdW9t aW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVs XSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ID4NCj4gPiBIaSBN aWtlLA0KPiA+IEkgaGF2ZSBkaWQgc29tZSBQT0MgdGhhdCBzZWVtcyBleGlzdGVkIHN0cnVjdHVy ZWQgUENEIGlzIGhhcmQgdG8gY29udHJvbCBiaW5hcnkgc2l6ZSwNCj4gPiBIZXJlIGlzIHRoZSBw cmV2aW91cyBkaXNjdXNzaW9uIGZvciByZWZlcmVuY2UuDQo+ID4gaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjc5DQo+ID4gaHR0cHM6Ly9lZGsyLmdyb3Vw cy5pby9nL2RldmVsL3RvcGljLzg2MjU3ODEwIzgxODE0DQo+ID4gaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2DQo+ID4NCj4gPiBBbnl3YXkgRUMgaXMg YW4gaW1wb3J0YW50IGZlYXR1cmUgd2hpY2ggY29uc3VtZWQgYnkgdmFyeSBtb2Rlcm4gc2VjdXJp dHkgZmVhdHVyZXMgc3VjaCBXUEEzICwgU1BETSwgVExTMS4zIGV0Yy4NCj4gPiBIb3BlIGl0IGNh biBiZSBhZGRlZCB0byBlZGsyLCBhbmQgSSBhbSBnbGFkIHRvIHRha2UgdGhlIGNvZGUgYW5kIHRl c3Qgd29yayBpZiB0aGVyZSBhcmUgb3RoZXIgd2F5cyB0byBjb250cm9sIHRoZSBzaXplLg0KPiA+ DQo+ID4gVGhhbmtzLA0KPiA+IFlpDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIyLCAyMDIyIDExOjU2IEFNDQo+ID4g VG86IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lz aG9yZSwgU2hlbGx5IDxzaGVsbHkua2lzaG9yZUBpbnRlbC5jb20+DQo+ID4gQ2M6IFlhbywgSmll d2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50 ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ID4g R3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1k ZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiA+DQo+ID4g VGhhdCBjaGFuZ2UgdG8gT3BlbnNzbExpYi5pbmYgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZG9uZSBl aXRoZXIuDQo+ID4NCj4gPiBMb29rcyBsaWtlIHRoaXMgRUMgZmVhdHVyZSBuZWVkcyBtb3JlIGV2 YWx1YXRpb24gdG8gZml0IGludG8gdGhlDQo+ID4gc3RydWN0dXJlZCBQQ0QgY29udHJvbCBvZiB0 aGUgbGliIHNpemVzLg0KPiA+DQo+ID4gTWlrZQ0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT4NCj4gPiA+ IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDIxLCAyMDIyIDc6MTYgUE0NCj4gPiA+IFRvOiBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBkZXZlbEBlZGsy Lmdyb3Vwcy5pbw0KPiA+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47 IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95 dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ID4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRl bC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENy eXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4gPiA+DQo+ID4gPiBIaSBNaWtlLA0KPiA+ID4gVGhh bmtzIGZvciByZXZpZXcuDQo+ID4gPg0KPiA+ID4gRXZlbiBQQ0RfQ1JZUFRPX1NFUlZJQ0VfRkFN SUxZX0VOQUJMRSBpcyBzZXQgdG8gMCwgQ3J5cHRvRWMuYyB3aWxsIGFsc28gYmUgY29tcGlsZWQg YW5kIHRocm93IGJ1aWxkIGVycm9yOg0KPiA+ID4NCj4gPiA+IGQ6XHdvcmtzcGFjZVx0aWFub2Nv cmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy5jKDc3KTog ZXJyb3IgQzIyMjA6IHRoZSBmb2xsb3dpbmcgd2FybmluZyBpcyB0cmVhdGVkDQo+ID4gYXMNCj4g PiA+IGFuIGVycm9yDQo+ID4gPiAgICAgICAgIDEgZmlsZShzKSBjb3BpZWQuDQo+ID4gPiBkOlx3 b3Jrc3BhY2VcdGlhbm9jb3JlXGVkazJcQ3J5cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGliXFBr XENyeXB0RWMuYyg3Nyk6IHdhcm5pbmcgQzQwMTM6ICdFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFt ZScNCj4gPiA+IHVuZGVmaW5lZDsgYXNzdW1pbmcgZXh0ZXJuIHJldHVybmluZyBpbnQNCj4gPiA+ IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNlQ3J5cHRM aWJcUGtcQ3J5cHRFYy5jKDc3KTogd2FybmluZyBDNDA0NzogJ3JldHVybic6ICd2b2lkIConIGRp ZmZlcnMgaW4NCj4gPiA+IGxldmVscyBvZiBpbmRpcmVjdGlvbiBmcm9tICdpbnQnDQo+ID4gPiBk Olx3b3Jrc3BhY2VcdGlhbm9jb3JlXGVkazJcQ3J5cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGli XFBrXENyeXB0RWMuYygxMDUpOiB3YXJuaW5nIEM0MDEzOiAnRUNfR1JPVVBfZ2V0X2N1cnZlJw0K PiB1bmRlZmluZWQ7DQo+ID4gPiBhc3N1bWluZyBleHRlcm4gcmV0dXJuaW5nIGludA0KPiA+ID4N Cj4gPiA+IEkgdGhpbmsgdGhlIHJvb3QgY2F1c2UgaXMgdGhhdCB3ZSBoYXZlIGVuYWJsZWQgY29u ZGl0aW9uYWwgZWMgaW4gT3BlbnNzbExpYi5pbmYgYmVmb3JlIGJ5IFBjZE9wZW5zc2xFY0VuYWJs ZWQsDQo+ID4gPg0KPiA+DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9i LzJjMTdkNjc2ZTQwMmQ3NWEzYTY3NDQ5OTM0MmY3ZGRhY2NmMzg3YmQvQ3J5cHRvUGtnL0xpYnJh cnkvT3BlbnNzbExpYi9PcGVuc3NsTGliLmluZiNMMg0KPiA+ID4gMDItTDIzOA0KPiA+ID4gIGlm IFBjZE9wZW5zc2xFY0VuYWJsZWQgbm90IHRydWUsIGFsbCBlYyBmaWxlcyB3aWxsIG5vdCBiZSBj b21waWxlZC4NCj4gPiA+IFRoaXMgd2lsbCBzYXZlIDIwMCtrYiBtZW1vcnkgb24gcGxhdGZvcm1z IHdoaWNoIHVzZSBkeGUgZHJpdmVyIGJ1dCBkbyBub3QgbmVlZCBlYyBmZWF0dXJlLg0KPiA+ID4N Cj4gPiA+IFNvIEkgYWRkIHRoaXMgUENEIHRvIEJhc2VDcnlwdExpYi5pbmYgYWxzbyB0byBhdm9p ZCBidWlsZCBlcnJvciwgTm90IHN1cmUgaWYgdGhlcmUgaXMgYW55IG90aGVyIHdheSwgb3RoZXIg YmV0dGVyIGlkZWFzDQo+IGFyZQ0KPiA+ID4gd2VsY29tZS4NCj4gPiA+DQo+ID4gPiBUaGFua3Ms DQo+ID4gPiBZaQ0KPiA+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ ID4gPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDIyLCAyMDIyIDEyOjIyIEFNDQo+ID4gPiBU bzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBDYzogWWFv LCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywN Cj4gPiA+IEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJF OiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0K PiA+ID4NCj4gPiA+IENvbW1lbnRzIGVtYmVkZGVkIGJlbG93Lg0KPiA+ID4NCj4gPiA+IE1pa2UN Cj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206 IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9m IHlpMSBsaQ0KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMjAsIDIwMjIgOTo1NSBQ TQ0KPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IExpLCBZaTEg PHlpMS5saUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBX YW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxDQo+ID4gPiA+ IDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRl bC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlw dG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ID4gPiA+DQo+ID4gPiA+IFJFRjogaHR0cHM6Ly9idWd6 aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zODI4DQo+ID4gPiA+DQo+ID4gPiA+ IFRoaXMgcGF0Y2ggaXMgdXNlZCB0byBhZGQgQ3J5cHRFYyBsaWJyYXJ5LCB3aGljaCBpcyB3cmFw cGVkDQo+ID4gPiA+IG92ZXIgT3BlblNTTC4NCj4gPiA+ID4NCj4gPiA+ID4gQ2M6IEppZXdlbiBZ YW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogSmlhbiBKIFdhbmcgPGppYW4u ai53YW5nQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IFhpYW95dSBMdSA8eGlhb3l1MS5sdUBpbnRl bC5jb20+DQo+ID4gPiA+IENjOiBHdW9taW4gSmlhbmcgPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+ DQo+ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFlpIExpIDx5aTEubGlAaW50ZWwuY29t Pg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIENyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNy eXB0TGliLmggICAgICB8IDQyNCArKysrKysrKysrDQo+ID4gPiA+ICAuLi4vTGlicmFyeS9CYXNl Q3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZiAgICAgfCAgIDIgKw0KPiA+ID4gPiAgLi4uL0xpYnJh cnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZiAgICAgIHwgICAxICsNCj4gPiA+ID4gIENy eXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMgICB8IDc2NSArKysrKysr KysrKysrKysrKysNCj4gPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVj TnVsbC5jICAgICB8IDQ5NiArKysrKysrKysrKysNCj4gPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9TbW1DcnlwdExpYi5pbmYgICAgICB8ICAgMSArDQo+ID4gPiA+ICAuLi4vQmFzZUNy eXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZiAgICAgfCAgIDEgKw0KPiA+ID4gPiAgLi4u L0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jIHwgNDk2ICsrKysrKysr KysrKw0KPiA+ID4gPiAgOCBmaWxlcyBjaGFuZ2VkLCAyMTg2IGluc2VydGlvbnMoKykNCj4gPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsv Q3J5cHRFYy5jDQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1BrL0NyeXB0RWNOdWxsLmMNCj4g PiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFz ZUNyeXB0TGliLmggYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ ID4gPiA+IGluZGV4IGIyNTM5MjNkZDguLmQ3NGZjMjFjMWUgMTAwNjQ0DQo+ID4gPiA+IC0tLSBh L0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmgNCj4gPiA+ID4gKysrIGIv Q3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiBAQCAtMTQs NiArMTQsMTMgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPiA+ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxVZWZpL1VlZmlCYXNlVHlwZS5oPg0KPiA+ID4g Pg0KPiA+ID4gPiArI2RlZmluZSBDUllQVE9fTklEX05VTEwgIDB4MDAwMA0KPiA+ID4gPiArDQo+ ID4gPiA+ICsvLyBLZXkgRXhjaGFuZ2UNCj4gPiA+ID4gKyNkZWZpbmUgQ1JZUFRPX05JRF9TRUNQ MjU2UjEgIDB4MDIwNA0KPiA+ID4gPiArI2RlZmluZSBDUllQVE9fTklEX1NFQ1AzODRSMSAgMHgw MjA1DQo+ID4gPiA+ICsjZGVmaW5lIENSWVBUT19OSURfU0VDUDUyMVIxICAweDAyMDYNCj4gPiA+ ID4gKw0KPiA+ID4gPiAgLy8vDQo+ID4gPiA+ICAvLy8gTUQ1IGRpZ2VzdCBzaXplIGluIGJ5dGVz DQo+ID4gPiA+ICAvLy8NCj4gPiA+ID4gQEAgLTI4NTAsNCArMjg1Nyw0MjEgQEAgQmlnTnVtQWRk TW9kICgNCj4gPiA+ID4gICAgT1VUIFZPSUQgICAgICAgKkJuUmVzDQo+ID4gPiA+ICAgICk7DQo+ ID4gPiA+DQo+ID4gPiA+ICsvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ ICsvLyAgICBCYXNpYyBFbGxpcHRpYyBDdXJ2ZSBQcmltaXRpdmVzDQo+ID4gPiA+ICsvLyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4g PiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRWNHcm91cCBvYmplY3QuIFRoaXMgb2JqZWN0IHJl cHJlc2VudHMgYW4gRUMgY3VydmUgYW5kDQo+ID4gPiA+ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxj dWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4gVGhpcyBvYmplY3Qgc2hvdWxkIGJlIGZyZWVkDQo+ ID4gPiA+ICsgIHVzaW5nIEVjR3JvdXBGcmVlKCkgZnVuY3Rpb24uDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUg RUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IEJhc2VDcnlwdExpYi5oKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIEVjR3JvdXAg b2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICBP biBmYWlsdXJlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiArRWNHcm91cEluaXQgKA0KPiA+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRvTmlk DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXQg RUMgY3VydmUgcGFyYW1ldGVycy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMgWV4y IG1vZCBQID0gKFheMyArIEFYICsgQikgTW9kIFAuDQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24g d2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlIGNvcnJlc3Bv bmRpbmcNCj4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBh bGwgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiA+ICsgIGFyZSBwcm9wZXJs eSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3Vw ICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5QcmltZSAgICBH cm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAgQSBj b2VmZmljaWVudC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5CICAgICAgICBCIGNvZWZmaWNp ZW50Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQuDQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4g PiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHcm91cEdldEN1cnZl ICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBW T0lEICAgICAgICpCblByaW1lLA0KPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5BLA0KPiA+ ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5CLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsg IEdldCBFQyBncm91cCBvcmRlci4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0 aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ ID4gKyAgdmFsdWUuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQi IEJpZ051bWJlciBwYXJhbWV0ZXINCj4gPiA+ID4gKyAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQu DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9i amVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5PcmRlciAgIEdyb3VwIHByaW1lIG51bWJl ci4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vz cy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4g KyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3Vw R2V0T3JkZXIgKA0KPiA+ID4gPiArICBJTiBWT0lEICAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9V VCBWT0lEICAqQm5PcmRlcg0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91cCBvYmplY3QgdXNp bmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dy b3VwICAgRUMgZ3JvdXAgb2JqZWN0IHRvIGZyZWUuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZP SUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gPiArICBJ TiBWT0lEICAqRWNHcm91cA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVDIFBvaW50IG9iamVjdC4gVGhpcyBv YmplY3QgcmVwcmVzZW50cyBhbiBFQyBwb2ludA0KPiA+ID4gPiArICB3aXRoaW4gdGhlIGdpdmVu IEVDIGdyb3VwIChjdXJ2ZSkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRUMg R3JvdXAsIHByb3Blcmx5IGluaXRpYWxpemVkIHVzaW5nIEVjR3JvdXBJbml0KCkuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBFQyBQb2ludCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4g PiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4gPiArKiov DQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEluaXQg KA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cA0KPiA+ID4gPiArICApOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRl ZCBFQyBQb2ludCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9pbnQgdG8gZnJlZS4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFy ZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsvKioNCj4gPiA+ID4gKyAgR2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRl cy4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51 bWJlciBvYmplY3RzIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ICsgIHZhbHVlcy4gVGhl IGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1l dGVycw0KPiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiArICBA cGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBhcmFtW291 dF0gQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4 ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50R2V0QWZmaW5l Q29vcmRpbmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAg ICpCblgsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiA+ICsgIElOIFZP SUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiArICBA cGFyYW1baW5dICBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgp Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNz Lg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiAr KiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRT ZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3Vw LA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWSwNCj4gPiA+ID4g KyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVj UG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVj UG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hv dWxkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkg aW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICAgICAgICAgRUMg UG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICAgICAgICAgRUMgUG9pbnQu DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3Jl YXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0 dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAg ICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4g PiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0K PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4g PiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBWYXJpYWJsZSBF QyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnQgKiBCblBTY2Fs YXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICAgICAgICBF QyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAg RUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBTY2FsYXIuDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051 bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAg ICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lz ZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ICtFY1BvaW50TXVsICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0KPiA+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxh ciwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICk7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2Yg dGhlIHN1cHBsaWVkIEVDIHBvaW50Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g ICAgIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbixvdXRd IEVjUG9pbnQgICBFQyBwb2ludCB0byBpbnZlcnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAg IEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiov DQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJbnZl cnQgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4g T1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0K PiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQ2hlY2sg aWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIG9uIEVDIGN1cnZlLg0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4gPiA+ID4gKyAgQHBhcmFt W2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0 KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIGN1cnZl Lg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiAr KiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJ c09uQ3VydmUgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpC bkN0eA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAg Q2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmluaXR5Lg0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAo DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNQb2ludA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAgQ2hlY2sgaWYgRUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY1BvaW50QSAgRUMgcG9pbnQgQS4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNQb2ludEIgIEVDIHBvaW50IEIuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAg ICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiA+ICsgIEBy ZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JP T0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50QSwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gPiAr ICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4g PiArLyoqDQo+ID4gPiA+ICsgIFNldCBFQyBwb2ludCBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBQ b2ludHMgY2FuIGJlIGRlc2NyaWJlZCBpbiB0ZXJtcyBvZg0KPiA+ID4gPiArICB0aGVpciBjb21w cmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSksIGZvciBhbnkgZ2l2ZW4gdmFs dWUgZm9yIHgNCj4gPiA+ID4gKyAgc3VjaCB0aGF0IHRoZSBwb2ludCBpcyBvbiB0aGUgY3VydmUg dGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUgdHdvIHBvc3NpYmxlDQo+ID4gPiA+ICsgIHZhbHVlcyBm b3IgeS4gVGhlcmVmb3JlLCBhIHBvaW50IGNhbiBiZSBzZXQgdXNpbmcgdGhpcyBmdW5jdGlvbiB3 aGVyZSBCblggaXMNCj4gPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBpcyBhIHZh bHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUgdHdvDQo+ID4gPiA+ICsgIHBvc3Np YmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNlZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBA cGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAg ICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBv ciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ID4gKyAgQHBhcmFt W2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4 dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNj ZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g PiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9p bnRTZXRDb21wcmVzc2VkQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ICsvLyAg ICBFbGxpcHRpYyBDdXJ2ZSBEaWZmaWUgSGVsbG1hbiBQcmltaXRpdmVzDQo+ID4gPiA+ICsvLyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICBBbGxvY2F0ZXMgYW5kIEluaXRpYWxpemVzIG9uZSBFbGxpcHRpYyBDdXJ2ZSBDb250 ZXh0IGZvciBzdWJzZXF1ZW50IHVzZQ0KPiA+ID4gPiArICB3aXRoIHRoZSBOSUQuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgTmlkIGNpcGhlciBOSUQNCj4gPiA+ID4gKyAgQHJl dHVybiAgICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0IGhhcyBi ZWVuIGluaXRpYWxpemVkLg0KPiA+ID4gPiArICAgICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlv bnMgZmFpbHMsIEVjTmV3QnlOaWQoKSByZXR1cm5zIE5VTEwuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY05ld0J5TmlkICgNCj4gPiA+ ID4gKyAgSU4gVUlOVE4gIE5pZA0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KioNCj4gPiA+ID4gKyAgUmVsZWFzZSB0aGUgc3BlY2lmaWVkIEVDIGNvbnRleHQuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBj b250ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEDQo+ID4g PiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjRnJlZSAoDQo+ID4gPiA+ICsgIElOICBWT0lEICAqRWND b250ZXh0DQo+ID4gPiA+ICsgICk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiAr ICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgsIFkpLCBQbGVh c2Ugbm90ZSwgdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiA+ICsgIHBzZXVkbyByYW5kb20gbnVt YmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZSBSYW5kb21TZWVkKCkNCj4g PiA+ID4gKyAgZnVuY3Rpb24gd2FzIHByb3Blcmx5IGNhbGxlZCBiZWZvcmUuDQo+ID4gPiA+ICsg IFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdC eU5pZC4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgcmFuZG9tIHNlY3JldCwg YW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMga2V5IChYLCBZKSwgd2hpY2ggaXMNCj4gPiA+ID4gKyAg cmV0dXJuZWQgdmlhIHBhcmFtZXRlciBQdWJsaWMsIFB1YmxpY1NpemUuDQo+ID4gPiA+ICsgIFgg aXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8g MiwNCj4gPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBi ZWluZyBQdWJsaWNTaXplIC8gMi4NCj4gPiA+ID4gKyAgRUMgY29udGV4dCBpcyB1cGRhdGVkIGFj Y29yZGluZ2x5Lg0KPiA+ID4gPiArICBJZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0b28gc21hbGwg dG8gaG9sZCB0aGUgcHVibGljIFgsIFksIEZBTFNFIGlzIHJldHVybmVkIGFuZA0KPiA+ID4gPiAr ICBQdWJsaWNTaXplIGlzIHNldCB0byB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWlu IHRoZSBwdWJsaWMgWCwgWS4NCj4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBp cyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ID4gPiAr ICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNl Y29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUg aXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiA+ ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAg SWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgSWYg UHVibGljU2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICBQb2lu dGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIFB1Ymxp Y0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQgcHVibGlj IFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1 dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0 dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVF ICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ID4gKyAgQHJldHZh bCBGQUxTRSAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgUHVibGljS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gPiAr KiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR2VuZXJh dGVLZXkgKA0KPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0LA0KPiA+ID4gPiAr ICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiArICBJTiBPVVQgIFVJTlROICAq UHVibGljS2V5U2l6ZQ0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4g PiA+ID4gKyAgR2V0cyB0aGUgcHVibGljIGtleSBjb21wb25lbnQgZnJvbSB0aGUgZXN0YWJsaXNo ZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJl Y3RseSBpbml0aWFsaXplZCBieSBFY05ld0J5TmlkLCBhbmQgc3VjY2Vzc2Z1bGx5DQo+ID4gPiA+ ICsgIGdlbmVyYXRlIGtleSBwYWlyIGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gPiArICBG b3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29u ZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMg OTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAg Rm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vj b25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQg ICAgICBQb2ludGVyIHRvIEVDIGNvbnRleHQgYmVpbmcgc2V0Lg0KPiA+ID4gPiArICBAcGFyYW1b b3V0XSAgICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZSBn ZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNL ZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBz aXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4g KyAgQHJldHZhbCAgVFJVRSAgIEVDIGtleSBjb21wb25lbnQgd2FzIHJldHJpZXZlZCBzdWNjZXNz ZnVsbHkuDQo+ID4gPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25l bnQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiArRWNHZXRQdWJLZXkgKA0KPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0 LA0KPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiArICBJTiBP VVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gPiArICApOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsvKioNCj4gPiA+ID4gKyAgQ29tcHV0ZXMgZXhjaGFuZ2VkIGNvbW1vbiBrZXkuDQo+ID4g PiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZKSwgdGhpcyBmdW5jdGlvbiBjb21w dXRlcyB0aGUgZXhjaGFuZ2VkIGNvbW1vbiBrZXksDQo+ID4gPiA+ICsgIGJhc2VkIG9uIGl0cyBv d24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZCByYW5kb20g c2VjcmV0Lg0KPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0 aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4gKyAgWSBpcyB0aGUgc2Vj b25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAy Lg0KPiA+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ ID4gPiA+ICsgIElmIFBlZXJQdWJsaWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4g PiA+ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4g PiArICBJZiBLZXkgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIEtl eVNpemUgaXMgbm90IGxhcmdlIGVub3VnaCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsg IEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgs IFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFBlZXJQdWJs aWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYt Ynl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91 dF0gIEVjQ29udGV4dCAgICAgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4g PiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAgICBQb2ludGVyIHRvIHRoZSBw ZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGlj U2l6ZSAgICAgU2l6ZSBvZiBwZWVyJ3MgcHVibGljIFgsWSBpbiBieXRlcy4NCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlz IGNvbXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEtleSAgICAg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQga2V5 Lg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEtleVNpemUgICAgICAgICAgICBPbiBpbnB1 dCwgdGhlIHNpemUgb2YgS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJl dHVybmVkIGluIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAg IEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gKyoq Lw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0RoQ29tcHV0 ZUtleSAoDQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICAgICAgICpFY0NvbnRleHQsDQo+ID4g PiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpQZWVyUHVibGljLA0KPiA+ID4gPiArICBJTiAg ICAgIFVJTlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ID4gKyAgSU4gICAgICBDT05T VCBJTlQzMiAgKkNvbXByZXNzRmxhZywNCj4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAg KktleSwNCj4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ID4g KyAgKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgI2VuZGlmIC8vIF9fQkFTRV9DUllQVF9MSUJfSF9f DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFz ZUNyeXB0TGliLmluZiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRM aWIuaW5mDQo+ID4gPiA+IGluZGV4IDllNGJlMmZiMGQuLmFkZTZlZTNmZGQgMTAwNjQ0DQo+ID4g PiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5m DQo+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRM aWIuaW5mDQo+ID4gPiA+IEBAIC01Miw2ICs1Miw4IEBADQo+ID4gPiA+ICAgIFBrL0NyeXB0VHMu Yw0KPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzcy5jDQo+ID4gPiA+ICAgIFBrL0NyeXB0UnNhUHNz U2lnbi5jDQo+ID4gPiA+ICsgIFBrL0NyeXB0RWNOdWxsLmMgICAgfCp8KnwqfCFnRWZpQ3J5cHRv UGtnVG9rZW5TcGFjZUd1aWQuUGNkT3BlbnNzbEVjRW5hYmxlZA0KPiA+ID4gPiArICBQay9Dcnlw dEVjLmMgICAgfCp8KnwqfGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RPcGVuc3NsRWNF bmFibGVkDQo+ID4gPg0KPiA+ID4gVGhlIHVzZSBvZiB0aGUgUENEIHRvIHNlbGVjdCB0aGUgZmls ZSBzaG91bGQgbm90IGJlIG5lZWRlZCBoZXJlLiAgVGhlDQo+ID4gPiBFYyBGYW1pbHkgYW5kIGlu ZGl2aWR1YWwgc2VydmljZSBlbmFibGUvZGlzYWJsZSBmaWVsZHMgaW4gdGhlDQo+ID4gPiBQQ0Rf Q1JZUFRPX1NFUlZJQ0VfRkFNSUxZX0VOQUJMRSBzdHJ1Y3R1cmVkIFBDRCBhcmUgYWxsIHRoYXQg aXMgbmVlZGVkIHRvDQo+ID4gPiBkaXNhYmxlIHRoZSBFYyBzZXJ2aWNlcy4NCj4gPiA+DQo+ID4g PiBUaGUgUENEIGdFZmlDcnlwdG9Qa2dUb2tlblNwYWNlR3VpZC5QY2RPcGVuc3NsRWNFbmFibGVk IHNob3VsZCBiZSByZW1vdmVkDQo+ID4gPiBjb21wbGV0ZWx5IGFzIHBhcnQgb2YgdGhpcyBwYXRj aCBzZXJpZXMuDQo+ID4gPg0KPiA+ID4gPiAgICBQZW0vQ3J5cHRQZW0uYw0KPiA+ID4gPiAgICBC bi9DcnlwdEJuLmMNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNl Q3J5cHRMaWIvUGVpQ3J5cHRMaWIuaW5mDQo+ID4gPiA+IGluZGV4IDY1YWQyM2ZiODEuLjM4M2Rm MmIyM2MgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9QZWlDcnlwdExpYi5pbmYNCj4gPiA+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1BlaUNyeXB0TGliLmluZg0KPiA+ID4gPiBAQCAtNTgsNiArNTgsNyBAQA0KPiA+ID4g PiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4gPiA+ICAgIFBrL0NyeXB0UnNhUHNzLmMNCj4gPiA+ ID4gICAgUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5jDQo+ID4gPiA+ICsgIFBrL0NyeXB0RWNOdWxs LmMNCj4gPiA+ID4gICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ID4gPiA+ICAgIFJhbmQvQ3J5cHRS YW5kTnVsbC5jDQo+ID4gPiA+ICAgIEJuL0NyeXB0Qm5OdWxsLmMNCj4gPiA+ID4gZGlmZiAtLWdp dCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMgYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFYy5jDQo+ID4gPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjM5NmM4MTk4MzQNCj4gPiA+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUGsvQ3J5cHRFYy5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsNzY1IEBADQo+ID4gPiA+ICsvKiog QGZpbGUNCj4gPiA+ID4gKyAgRWxsaXB0aWMgQ3VydmUgYW5kIEVDREggQVBJIGltcGxlbWVudGF0 aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBDb3B5cmlnaHQgKGMp IDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNsdWRlICJJbnRlcm5h bENyeXB0TGliLmgiDQo+ID4gPiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+DQo+ID4g PiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPG9wZW5zc2wv ZWMuaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiArLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KPiA+ID4gPiArLy8gICAgQmFzaWMgRWxsaXB0aWMgQ3VydmUgUHJpbWl0aXZlcw0KPiA+ID4g PiArLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KioNCj4gPiA+ID4gKyAgUmV0dXJuIHRoZSBOaWQgb2YgY2VydGFpbiBFQ0MgY3VydmUuDQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRlbnRpZnlpbmcgbnVt YmVyIGZvciB0aGUgRUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0 dmFsICE9LTEgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCAtMSAgICAgIEVDQyBj dXJ2ZSBub3Qgc3VwcG9ydGVkLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ ID4gK0lOVDMyDQo+ID4gPiA+ICtDcnlwdG9OaWRUb09wZW5zc2xOaWQgKA0KPiA+ID4gPiArICBJ TiBVSU5UTiAgQ3J5cHRvTmlkDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAg SU5UMzIgIE5pZDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBzd2l0Y2ggKENyeXB0b05pZCkgew0K PiA+ID4gPiArICAgIGNhc2UgQ1JZUFRPX05JRF9TRUNQMjU2UjE6DQo+ID4gPiA+ICsgICAgICBO aWQgPSBOSURfWDlfNjJfcHJpbWUyNTZ2MTsNCj4gPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4g PiArICAgIGNhc2UgQ1JZUFRPX05JRF9TRUNQMzg0UjE6DQo+ID4gPiA+ICsgICAgICBOaWQgPSBO SURfc2VjcDM4NHIxOw0KPiA+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPiA+ICsgICAgY2FzZSBD UllQVE9fTklEX1NFQ1A1MjFSMToNCj4gPiA+ID4gKyAgICAgIE5pZCA9IE5JRF9zZWNwNTIxcjE7 DQo+ID4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ID4gKyAgICBkZWZhdWx0Og0KPiA+ID4gPiAr ICAgICAgcmV0dXJuIC0xOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgcmV0 dXJuIE5pZDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsg IEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVz ZW50cyBhbiBFQyBjdXJ2ZSBhbmQNCj4gPiA+ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNhbGN1bGF0 aW9uIHdpdGhpbiB0aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBzaG91bGQgYmUgZnJlZWQNCj4gPiA+ ID4gKyAgdXNpbmcgRWNHcm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBDcnlwdG9OaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0Mg Y3VydmUgKERlZmluZWQgaW4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFz ZUNyeXB0TGliLmgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmpl Y3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgIE9uIGZh aWx1cmUuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBDcnlwdG9OaWQNCj4g PiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBJTlQzMiAgTmlkOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIE5pZCA9IENyeXB0b05pZFRvT3BlbnNzbE5pZCAoQ3J5cHRvTmlkKTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArICBpZiAoTmlkIDwgMCkgew0KPiA+ID4gPiArICAgIHJldHVybiBO VUxMOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgcmV0dXJuIEVDX0dST1VQ X25ld19ieV9jdXJ2ZV9uYW1lIChOaWQpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyAgR2V0IEVDIGN1cnZlIHBhcmFtZXRlcnMuIFdoaWxlIGVsbGlwdGlj IGN1cnZlIGVxdWF0aW9uIGlzIFleMiBtb2QgUCA9IChYXjMgKyBBWCArIEIpIE1vZCBQLg0KPiA+ ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9i amVjdHMgIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxl ciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0K PiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBw YXJhbVtvdXRdIEJuUHJpbWUgICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiArICBAcGFy YW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRd IEJuQiAgICAgICAgQiBjb2VmZmljaWVudC4uDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4 ICAgICAgQk4gY29udGV4dC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAg ICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVy d2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNH cm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuUHJpbWUsDQo+ID4gPiA+ICsgIE9V VCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkIsDQo+ID4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19HUk9VUF9nZXRfY3VydmUgKEVjR3JvdXAsIEJu UHJpbWUsIEJuQSwgQm5CLCBCbkN0eCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICBHZXQgRUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiA+ICsgIFRoaXMgZnVu Y3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0IHRvIHRoZSBjb3Jy ZXNwb25kaW5nDQo+ID4gPiA+ICsgIHZhbHVlLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3Vy ZSB0aGF0IHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVyDQo+ID4gPiA+ICsgIGlzIHByb3Bl cmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3Jv dXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuT3JkZXIgICBH cm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhl cndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiArRWNHcm91cEdldE9yZGVyICgNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3Vw LA0KPiA+ID4gPiArICBPVVQgVk9JRCAgKkJuT3JkZXINCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiAr ew0KPiA+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfR1JPVVBfZ2V0X29yZGVyIChFY0dyb3Vw LCBCbk9yZGVyLCBOVUxMKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgRUMgZ3JvdXAgb2JqZWN0IHVzaW5n IEVjR3JvdXBJbml0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91 cCAgIEVDIGdyb3VwIG9iamVjdCB0byBmcmVlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lE DQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR3JvdXBGcmVlICgNCj4gPiA+ID4gKyAgSU4g Vk9JRCAgKkVjR3JvdXANCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBFQ19H Uk9VUF9mcmVlIChFY0dyb3VwKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoq DQo+ID4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQb2ludCBvYmplY3QuIFRoaXMg b2JqZWN0IHJlcHJlc2VudHMgYW4gRUMgcG9pbnQNCj4gPiA+ID4gKyAgd2l0aGluIHRoZSBnaXZl biBFQyBncm91cCAoY3VydmUpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVD IEdyb3VwLCBwcm9wZXJseSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIEByZXR2YWwgRUMgUG9pbnQgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gKyoq Lw0KPiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJbml0 ICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXANCj4gPiA+ID4gKyAgKQ0KPiA+ ID4gPiArew0KPiA+ID4gPiArICByZXR1cm4gRUNfUE9JTlRfbmV3IChFY0dyb3VwKTsNCj4gPiA+ ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNs eSBhbGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIFBvaW50IHRvIGZyZWUuDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUgbWVtb3J5IHNob3Vs ZCBiZSBjbGVhcmVkLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ICtFRklB UEkNCj4gPiA+ID4gK0VjUG9pbnREZUluaXQgKA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAqRWNQ b2ludCwNCj4gPiA+ID4gKyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4gPiA+ID4gKyAgKQ0KPiA+ID4g PiArew0KPiA+ID4gPiArICBpZiAoQ2xlYXIpIHsNCj4gPiA+ID4gKyAgICBFQ19QT0lOVF9jbGVh cl9mcmVlIChFY1BvaW50KTsNCj4gPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ID4gKyAgICBFQ19Q T0lOVF9mcmVlIChFY1BvaW50KTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgR2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29y ZGluYXRlcy4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQg QmlnIE51bWJlciBvYmplY3RzIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ICsgIHZhbHVl cy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIg cGFyYW1ldGVycw0KPiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4g PiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBh cmFtW291dF0gQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4N Cj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoq Lw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50R2V0 QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwN Cj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIE9VVCBWT0lE ICAgICAgICpCblgsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiA+ICsg IElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ ICsgIHJldHVybiAoQk9PTEVBTilFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzIChFY0dy b3VwLCBFY1BvaW50LCBCblgsIEJuWSwgQm5DdHgpOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGlu YXRlcy4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdy b3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBv YmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0K PiA+ID4gPiArICBAcGFyYW1baW5dICBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVt TmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gK0VjUG9pbnRTZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJu WSwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX3NldF9hZmZpbmVfY29v cmRpbmF0ZXMgKEVjR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLCBCbkN0eCk7DQo+ID4gPiA+ICt9 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBFQyBQb2ludCBhZGRpdGlvbi4g RWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVz dWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVj UG9pbnRBICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRC ICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAg ICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAg ICpFY1BvaW50UmVzdWx0LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ID4gKyAgSU4gVk9JRCAg ICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJu IChCT09MRUFOKUVDX1BPSU5UX2FkZCAoRWNHcm91cCwgRWNQb2ludFJlc3VsdCwgRWNQb2ludEEs IEVjUG9pbnRCLCBCbkN0eCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2ludFJlc3Vs dCA9IEVjUG9pbnQgKiBCblBTY2FsYXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNHcm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtv dXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9p bnQgc2hvdWxkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJv cGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAg ICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBT Y2FsYXIuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4 dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0K PiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50TXVsICgNCj4gPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVz dWx0LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkJuUFNjYWxhciwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVD X1BPSU5UX211bCAoRWNHcm91cCwgRWNQb2ludFJlc3VsdCwgTlVMTCwgRWNQb2ludCwgQm5QU2Nh bGFyLCBCbkN0eCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4g PiArICBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2YgdGhlIHN1cHBsaWVkIEVDIHBvaW50Lg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEVjR3JvdXAgICBFQyBncm91cCBvYmpl Y3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbixvdXRdIEVjUG9pbnQgICBFQyBwb2ludCB0byBpbnZl cnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVh dGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJbnZlcnQgKA0KPiA+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19QT0lOVF9pbnZlcnQgKEVjR3JvdXAsIEVjUG9p bnQsIEJuQ3R4KTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVt TmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBjdXJ2ZS4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4N Cj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ ICtFY1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAs DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBWT0lE ICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICByZXR1 cm4gRUNfUE9JTlRfaXNfb25fY3VydmUgKEVjR3JvdXAsIEVjUG9pbnQsIEJuQ3R4KSA9PSAxOw0K PiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQ2hlY2sgaWYg dGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmluaXR5Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiA+ICsgIEByZXR2YWwg RkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludElzQXRJbmZpbml0eSAoDQo+ID4gPiA+ ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNQb2ludA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJldHVybiBFQ19Q T0lOVF9pc19hdF9pbmZpbml0eSAoRWNHcm91cCwgRWNQb2ludCkgPT0gMTsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIENoZWNrIGlmIEVDIHBvaW50cyBh cmUgZXF1YWwuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVD IGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEEgIEVDIHBvaW50 IEEuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICBFQyBwb2ludCBCLg0KPiA+ID4g PiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051 bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAg ICAgQSA9PSBCLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g K0VjUG9pbnRFcXVhbCAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpFY1BvaW50QiwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIEVDX1BPSU5UX2NtcCAoRWNHcm91 cCwgRWNQb2ludEEsIEVjUG9pbnRCLCBCbkN0eCkgPT0gMDsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFNldCBFQyBwb2ludCBjb21wcmVzc2VkIGNvb3Jk aW5hdGVzLiBQb2ludHMgY2FuIGJlIGRlc2NyaWJlZCBpbiB0ZXJtcyBvZg0KPiA+ID4gPiArICB0 aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSksIGZvciBhbnkg Z2l2ZW4gdmFsdWUgZm9yIHgNCj4gPiA+ID4gKyAgc3VjaCB0aGF0IHRoZSBwb2ludCBpcyBvbiB0 aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUgdHdvIHBvc3NpYmxlDQo+ID4gPiA+ICsg IHZhbHVlcyBmb3IgeS4gVGhlcmVmb3JlLCBhIHBvaW50IGNhbiBiZSBzZXQgdXNpbmcgdGhpcyBm dW5jdGlvbiB3aGVyZSBCblggaXMNCj4gPiA+ID4gKyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJp dCBpcyBhIHZhbHVlIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBvZiB0aGUgdHdvDQo+ID4gPiA+ ICsgIHBvc3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNlZC4NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIFlCaXQg ICAgICAgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFsdWUgaXMgdXNlZC4NCj4gPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVt TmV3Q29udGV4dCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gK0VjUG9pbnRTZXRDb21wcmVzc2VkQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAg IFlCaXQsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19QT0lOVF9zZXRfY29tcHJl c3NlZF9jb29yZGluYXRlcyAoRWNHcm91cCwgRWNQb2ludCwgQm5YLCBZQml0LCBCbkN0eCk7DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCj4gPiA+ID4gKy8vICAgIEVsbGlwdGljIEN1cnZlIERpZmZpZSBIZWxsbWFuIFByaW1p dGl2ZXMNCj4gPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25l IEVsbGlwdGljIEN1cnZlIENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4gPiA+ICsgIHdp dGggdGhlIE5JRC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBOaWQgICBJZGVu dGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUgKERlZmluZWQgaW4NCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgpLg0KPiA+ID4gPiArICBAcmV0dXJuICAg ICBQb2ludGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IHRoYXQgaGFzIGJlZW4gaW5p dGlhbGl6ZWQuDQo+ID4gPiA+ICsgICAgICAgICAgICAgIElmIHRoZSBhbGxvY2F0aW9ucyBmYWls cywgRWNOZXdCeU5pZCgpIHJldHVybnMgTlVMTC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArVk9J RCAqDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjTmV3QnlOaWQgKA0KPiA+ID4gPiArICBJ TiBVSU5UTiAgTmlkDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgSU5UMzIg IE9wZW5Tc2xOaWQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgT3BlblNzbE5pZCA9IENyeXB0b05p ZFRvT3BlbnNzbE5pZCAoTmlkKTsNCj4gPiA+ID4gKyAgaWYgKE9wZW5Tc2xOaWQgPCAwKSB7DQo+ ID4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4g PiArICByZXR1cm4gKFZPSUQgKilFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUgKE9wZW5Tc2xOaWQp Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgUmVsZWFz ZSB0aGUgc3BlY2lmaWVkIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRvIGJlIHJlbGVhc2Vk Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g K0VjRnJlZSAoDQo+ID4gPiA+ICsgIElOICBWT0lEICAqRWNDb250ZXh0DQo+ID4gPiA+ICsgICkN Cj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgRUNfS0VZX2ZyZWUgKChFQ19LRVkgKilFY0NvbnRleHQp Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgR2VuZXJh dGVzIEVDIGtleSBhbmQgcmV0dXJucyBFQyBwdWJsaWMga2V5IChYLCBZKSwgUGxlYXNlIG5vdGUs IHRoaXMgZnVuY3Rpb24gdXNlcw0KPiA+ID4gPiArICBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5l cmF0b3IuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUgUmFuZG9tU2VlZCgpDQo+ID4gPiA+ICsg IGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxsZWQgYmVmb3JlLg0KPiA+ID4gPiArICBUaGUgRWMg Y29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQuDQo+ ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBjb21w dXRlcyB0aGUgcHVibGljIGtleSAoWCwgWSksIHdoaWNoIGlzDQo+ID4gPiA+ICsgIHJldHVybmVk IHZpYSBwYXJhbWV0ZXIgUHVibGljLCBQdWJsaWNTaXplLg0KPiA+ID4gPiArICBYIGlzIHRoZSBm aXJzdCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIsDQo+ID4g PiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVi bGljU2l6ZSAvIDIuDQo+ID4gPiA+ICsgIEVDIGNvbnRleHQgaXMgdXBkYXRlZCBhY2NvcmRpbmds eS4NCj4gPiA+ID4gKyAgSWYgdGhlIFB1YmxpYyBidWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQg dGhlIHB1YmxpYyBYLCBZLCBGQUxTRSBpcyByZXR1cm5lZCBhbmQNCj4gPiA+ID4gKyAgUHVibGlj U2l6ZSBpcyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9idGFpbiB0aGUgcHVi bGljIFgsIFkuDQo+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZp cnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAt Mzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgt Ynl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4g Rmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBJZiBF Y0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIFB1Ymxp Y1NpemUgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIFB1YmxpY1Np emUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJsaWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0Uu DQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byB0 aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAg ICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBz aXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGlu IFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIHB1 YmxpYyBYLFkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug IEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFM U0UgIFB1YmxpY0tleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gKyoqLw0KPiA+ ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dlbmVyYXRlS2V5ICgN Cj4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gKyAgT1VUICAg ICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tl eVNpemUNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBFQ19LRVkgICAgICAg ICAgKkVjS2V5Ow0KPiA+ID4gPiArICBDT05TVCBFQ19HUk9VUCAgKkdyb3VwOw0KPiA+ID4gPiAr ICBDT05TVCBFQ19QT0lOVCAgKkVjUG9pbnQ7DQo+ID4gPiA+ICsgIEJPT0xFQU4gICAgICAgICBS ZXRWYWw7DQo+ID4gPiA+ICsgIEJJR05VTSAgICAgICAgICAqQm5YOw0KPiA+ID4gPiArICBCSUdO VU0gICAgICAgICAgKkJuWTsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgIEhhbGZTaXplOw0K PiA+ID4gPiArICBJTlROICAgICAgICAgICAgWFNpemU7DQo+ID4gPiA+ICsgIElOVE4gICAgICAg ICAgICBZU2l6ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoKEVjQ29udGV4dCA9PSBOVUxM KSB8fCAoUHVibGljS2V5U2l6ZSA9PSBOVUxMKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxT RTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmICgoUHVibGljS2V5ID09 IE5VTEwpICYmICgqUHVibGljS2V5U2l6ZSAhPSAwKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBG QUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEVjS2V5ICAgID0gKEVD X0tFWSAqKUVjQ29udGV4dDsNCj4gPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91 cCAoRWNLZXkpOw0KPiA+ID4gPiArICBIYWxmU2l6ZSA9IChFQ19HUk9VUF9nZXRfZGVncmVlIChH cm91cCkgKyA3KSAvIDg7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgLy8gQXNzdW1lIFJBTkRfc2Vl ZCB3YXMgY2FsbGVkDQo+ID4gPiA+ICsgIGlmIChFQ19LRVlfZ2VuZXJhdGVfa2V5IChFY0tleSkg IT0gMSkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIGlmICgqUHVibGljS2V5U2l6ZSA8IEhhbGZTaXplICogMikgew0KPiA+ ID4gPiArICAgICpQdWJsaWNLZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ID4gPiArICAgIHJl dHVybiBGQUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICpQdWJsaWNL ZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEVjUG9pbnQgPSBF Q19LRVlfZ2V0MF9wdWJsaWNfa2V5IChFY0tleSk7DQo+ID4gPiA+ICsgIGlmIChFY1BvaW50ID09 IE5VTEwpIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBSZXRWYWwgPSBGQUxTRTsNCj4gPiA+ID4gKyAgQm5YICAgID0gQk5f bmV3ICgpOw0KPiA+ID4gPiArICBCblkgICAgPSBCTl9uZXcgKCk7DQo+ID4gPiA+ICsgIGlmICgo Qm5YID09IE5VTEwpIHx8IChCblkgPT0gTlVMTCkpIHsNCj4gPiA+ID4gKyAgICBnb3RvIGZhaWw7 DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoRUNfUE9JTlRfZ2V0X2Fm ZmluZV9jb29yZGluYXRlcyAoR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLCBOVUxMKSAhPSAxKSB7 DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgWFNpemUgPSBCTl9udW1fYnl0ZXMgKEJuWCk7DQo+ID4gPiA+ICsgIFlTaXplID0gQk5f bnVtX2J5dGVzIChCblkpOw0KPiA+ID4gPiArICBpZiAoKFhTaXplIDw9IDApIHx8IChZU2l6ZSA8 PSAwKSkgew0KPiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEFTU0VSVCAoKFVJTlROKVhTaXplIDw9IEhhbGZTaXplICYmIChVSU5UTilZ U2l6ZSA8PSBIYWxmU2l6ZSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgWmVyb01lbSAoUHVibGlj S2V5LCAqUHVibGljS2V5U2l6ZSk7DQo+ID4gPiA+ICsgIEJOX2JuMmJpbiAoQm5YLCAmUHVibGlj S2V5WzAgKyBIYWxmU2l6ZSAtIFhTaXplXSk7DQo+ID4gPiA+ICsgIEJOX2JuMmJpbiAoQm5ZLCAm UHVibGljS2V5W0hhbGZTaXplICsgSGFsZlNpemUgLSBZU2l6ZV0pOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsgIFJldFZhbCA9IFRSVUU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gK2ZhaWw6DQo+ID4gPiA+ ICsgIEJOX2ZyZWUgKEJuWCk7DQo+ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWSk7DQo+ID4gPiA+ICsg IHJldHVybiBSZXRWYWw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICBHZXRzIHRoZSBwdWJsaWMga2V5IGNvbXBvbmVudCBmcm9tIHRoZSBlc3RhYmxpc2hl ZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVj dGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQsIGFuZCBzdWNjZXNzZnVsbHkNCj4gPiA+ID4g KyAgZ2VuZXJhdGUga2V5IHBhaXIgZnJvbSBFY0dlbmVyYXRlS2V5KCkuDQo+ID4gPiA+ICsgIEZv ciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25k IDMyLWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5 Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBG b3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNv bmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAg ICAgIFBvaW50ZXIgdG8gRUMgY29udGV4dCBiZWluZyBzZXQuDQo+ID4gPiA+ICsgIEBwYXJhbVtv dXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdl bmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tl eVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNp emUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiAr ICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3Nm dWxseS4NCj4gPiA+ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgRUMga2V5IGNvbXBvbmVu dC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ICtFY0dldFB1YktleSAoDQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQs DQo+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiA+ICsgIElOIE9V VCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ ID4gKyAgRUNfS0VZICAgICAgICAgICpFY0tleTsNCj4gPiA+ID4gKyAgQ09OU1QgRUNfR1JPVVAg ICpHcm91cDsNCj4gPiA+ID4gKyAgQ09OU1QgRUNfUE9JTlQgICpFY1BvaW50Ow0KPiA+ID4gPiAr ICBCSUdOVU0gICAgICAgICAgKkJuWDsNCj4gPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblk7 DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICBIYWxmU2l6ZTsNCj4gPiA+ID4gKyAgSU5UTiAg ICAgICAgICAgIFhTaXplOw0KPiA+ID4gPiArICBJTlROICAgICAgICAgICAgWVNpemU7DQo+ID4g PiA+ICsgIEJPT0xFQU4gICAgICAgICBSZXRWYWw7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYg KChFY0NvbnRleHQgPT0gTlVMTCkgfHwgKFB1YmxpY0tleVNpemUgPT0gTlVMTCkpIHsNCj4gPiA+ ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBpZiAoKFB1YmxpY0tleSA9PSBOVUxMKSAmJiAoKlB1YmxpY0tleVNpemUgIT0gMCkpIHsNCj4g PiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBFY0tleSAgICA9IChFQ19LRVkgKilFY0NvbnRleHQ7DQo+ID4gPiA+ICsgIEdyb3VwICAg ID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVjS2V5KTsNCj4gPiA+ID4gKyAgSGFsZlNpemUgPSAoRUNf R1JPVVBfZ2V0X2RlZ3JlZSAoR3JvdXApICsgNykgLyA4Ow0KPiA+ID4gPiArICBpZiAoKlB1Ymxp Y0tleVNpemUgPCBIYWxmU2l6ZSAqIDIpIHsNCj4gPiA+ID4gKyAgICAqUHVibGljS2V5U2l6ZSA9 IEhhbGZTaXplICogMjsNCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICAqUHVibGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsNCj4g PiA+ID4gKw0KPiA+ID4gPiArICBFY1BvaW50ID0gRUNfS0VZX2dldDBfcHVibGljX2tleSAoRWNL ZXkpOw0KPiA+ID4gPiArICBpZiAoRWNQb2ludCA9PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgcmV0 dXJuIEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgUmV0VmFsID0g RkFMU0U7DQo+ID4gPiA+ICsgIEJuWCAgICA9IEJOX25ldyAoKTsNCj4gPiA+ID4gKyAgQm5ZICAg ID0gQk5fbmV3ICgpOw0KPiA+ID4gPiArICBpZiAoKEJuWCA9PSBOVUxMKSB8fCAoQm5ZID09IE5V TEwpKSB7DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgaWYgKEVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXMgKEdyb3VwLCBF Y1BvaW50LCBCblgsIEJuWSwgTlVMTCkgIT0gMSkgew0KPiA+ID4gPiArICAgIGdvdG8gZmFpbDsN Cj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFhTaXplID0gQk5fbnVtX2J5dGVz IChCblgpOw0KPiA+ID4gPiArICBZU2l6ZSA9IEJOX251bV9ieXRlcyAoQm5ZKTsNCj4gPiA+ID4g KyAgaWYgKChYU2l6ZSA8PSAwKSB8fCAoWVNpemUgPD0gMCkpIHsNCj4gPiA+ID4gKyAgICBnb3Rv IGZhaWw7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBBU1NFUlQgKChVSU5U TilYU2l6ZSA8PSBIYWxmU2l6ZSAmJiAoVUlOVE4pWVNpemUgPD0gSGFsZlNpemUpOw0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIGlmIChQdWJsaWNLZXkgIT0gTlVMTCkgew0KPiA+ID4gPiArICAgIFpl cm9NZW0gKFB1YmxpY0tleSwgKlB1YmxpY0tleVNpemUpOw0KPiA+ID4gPiArICAgIEJOX2JuMmJp biAoQm5YLCAmUHVibGljS2V5WzAgKyBIYWxmU2l6ZSAtIFhTaXplXSk7DQo+ID4gPiA+ICsgICAg Qk5fYm4yYmluIChCblksICZQdWJsaWNLZXlbSGFsZlNpemUgKyBIYWxmU2l6ZSAtIFlTaXplXSk7 DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBSZXRWYWwgPSBUUlVFOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICtmYWlsOg0KPiA+ID4gPiArICBCTl9mcmVlIChCblgpOw0KPiA+ID4g PiArICBCTl9mcmVlIChCblkpOw0KPiA+ID4gPiArICByZXR1cm4gUmV0VmFsOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQ29tcHV0ZXMgZXhjaGFuZ2Vk IGNvbW1vbiBrZXkuDQo+ID4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZKSwg dGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNvbW1vbiBrZXksDQo+ID4gPiA+ ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFy YW1ldGVyIGFuZCByYW5kb20gc2VjcmV0Lg0KPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxm IG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMiwNCj4gPiA+ ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcg UGVlclB1YmxpY1NpemUgLyAyLg0KPiA+ID4gPiArICBJZiBwdWJsaWMga2V5IGlzIGNvbXByZXNz ZWQsIHRoZSBQZWVyUHVibGljIHdpbGwgb25seSBjb250YWluIGhhbGYga2V5IChYKS4NCj4gPiA+ ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiAr ICBJZiBQZWVyUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJ ZiBQZWVyUHVibGljU2l6ZSBpcyAwLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgSWYg S2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBLZXlTaXplIGlz IG5vdCBsYXJnZSBlbm91Z2gsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBGb3IgUC0y NTYsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQg MzItYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQZWVyUHVibGljU2l6ZSBp cyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gPiAr ICBGb3IgUC01MjEsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMg WCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0Nv bnRleHQgICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gKyAgQHBh cmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUgcGVlcidzIHB1 YmxpYyBYLFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgUGVlclB1YmxpY1NpemUgICAg IFNpemUgb2YgcGVlcidzIHB1YmxpYyBYLFkgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gICAgICAgQ29tcHJlc3NGbGFnICAgICAgIEZsYWcgb2YgUGVlclB1YmxpYyBpcyBjb21wcmVz c2VkIG9yIG5vdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkgICAgICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIGtleS4NCj4gPiA+ ID4gKyAgQHBhcmFtW2luLCBvdXRdICBLZXlTaXplICAgICAgICAgICAgT24gaW5wdXQsIHRoZSBz aXplIG9mIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBp biBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBleGNo YW5nZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNF ICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiArICBAcmV0dmFs IEZBTFNFICBLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiA+ICsqKi8NCj4gPiA+ ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0K PiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ID4gPiArICBJ TiAgICAgIENPTlNUIFVJTlQ4ICAqUGVlclB1YmxpYywNCj4gPiA+ID4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgUGVlclB1YmxpY1NpemUsDQo+ID4gPiA+ICsgIElOICAgICAgQ09OU1QgSU5UMzIg ICpDb21wcmVzc0ZsYWcsDQo+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICAgICAgICpLZXksDQo+ ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICpLZXlTaXplDQo+ID4gPiA+ICsgICkNCj4g PiA+ID4gK3sNCj4gPiA+ID4gKyAgRUNfS0VZICAgICAgICAgICpFY0tleTsNCj4gPiA+ID4gKyAg RUNfS0VZICAgICAgICAgICpQZWVyRWNLZXk7DQo+ID4gPiA+ICsgIENPTlNUIEVDX0dST1VQICAq R3JvdXA7DQo+ID4gPiA+ICsgIEJPT0xFQU4gICAgICAgICBSZXRWYWw7DQo+ID4gPiA+ICsgIEJJ R05VTSAgICAgICAgICAqQm5YOw0KPiA+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJuWTsNCj4g PiA+ID4gKyAgRUNfUE9JTlQgICAgICAgICpQb2ludDsNCj4gPiA+ID4gKyAgSU5UMzIgICAgICAg ICAgIE9wZW5Tc2xOaWQ7DQo+ID4gPiA+ICsgIFVJTlROICAgICAgICAgICBIYWxmU2l6ZTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArICBpZiAoKEVjQ29udGV4dCA9PSBOVUxMKSB8fCAoUGVlclB1Ymxp YyA9PSBOVUxMKSB8fCAoS2V5U2l6ZSA9PSBOVUxMKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBG QUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmICgoS2V5ID09IE5V TEwpICYmICgqS2V5U2l6ZSAhPSAwKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4g PiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmIChQZWVyUHVibGljU2l6ZSA+IElO VF9NQVgpIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBFY0tleSAgICA9IChFQ19LRVkgKilFY0NvbnRleHQ7DQo+ID4gPiA+ ICsgIEdyb3VwICAgID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVjS2V5KTsNCj4gPiA+ID4gKyAgSGFs ZlNpemUgPSAoRUNfR1JPVVBfZ2V0X2RlZ3JlZSAoR3JvdXApICsgNykgLyA4Ow0KPiA+ID4gPiAr ICBpZiAoKENvbXByZXNzRmxhZyA9PSBOVUxMKSAmJiAoUGVlclB1YmxpY1NpemUgIT0gSGFsZlNp emUgKiAyKSkgew0KPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIGlmICgoQ29tcHJlc3NGbGFnICE9IE5VTEwpICYmIChQZWVyUHVi bGljU2l6ZSAhPSBIYWxmU2l6ZSkpIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAoKktleVNpemUgPCBIYWxmU2l6ZSkg ew0KPiA+ID4gPiArICAgICpLZXlTaXplID0gSGFsZlNpemU7DQo+ID4gPiA+ICsgICAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgKktleVNpemUgPSBI YWxmU2l6ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBSZXRWYWwgICAgPSBGQUxTRTsNCj4gPiA+ ID4gKyAgUG9pbnQgICAgID0gTlVMTDsNCj4gPiA+ID4gKyAgQm5YICAgICAgID0gQk5fYmluMmJu IChQZWVyUHVibGljLCAoSU5UMzIpSGFsZlNpemUsIE5VTEwpOw0KPiA+ID4gPiArICBCblkgICAg ICAgPSBOVUxMOw0KPiA+ID4gPiArICBQb2ludCAgICAgPSBFQ19QT0lOVF9uZXcgKEdyb3VwKTsN Cj4gPiA+ID4gKyAgUGVlckVjS2V5ID0gTlVMTDsNCj4gPiA+ID4gKyAgaWYgKChCblggPT0gTlVM TCkgfHwgKFBvaW50ID09IE5VTEwpKSB7DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4g PiArICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKENvbXByZXNzRmxhZyA9PSBOVUxMKSB7 DQo+ID4gPiA+ICsgICAgQm5ZID0gQk5fYmluMmJuIChQZWVyUHVibGljICsgSGFsZlNpemUsIChJ TlQzMilIYWxmU2l6ZSwgTlVMTCk7DQo+ID4gPiA+ICsgICAgaWYgKEJuWSA9PSBOVUxMKSB7DQo+ ID4gPiA+ICsgICAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICsgICAgaWYgKEVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXMgKEdyb3VwLCBQb2lu dCwgQm5YLCBCblksIE5VTEwpICE9IDEpIHsNCj4gPiA+ID4gKyAgICAgIGdvdG8gZmFpbDsNCj4g PiA+ID4gKyAgICB9DQo+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiA+ICsgICAgaWYgKEVDX1BP SU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzIChHcm91cCwgUG9pbnQsIEJuWCwgKkNvbXBy ZXNzRmxhZywgTlVMTCkgIT0gMSkgew0KPiA+ID4gPiArICAgICAgZ290byBmYWlsOw0KPiA+ID4g PiArICAgIH0NCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8vIFZhbGlkYXRl IE5JU1QgRUNESCBwdWJsaWMga2V5DQo+ID4gPiA+ICsgIE9wZW5Tc2xOaWQgPSBFQ19HUk9VUF9n ZXRfY3VydmVfbmFtZSAoR3JvdXApOw0KPiA+ID4gPiArICBQZWVyRWNLZXkgID0gRUNfS0VZX25l d19ieV9jdXJ2ZV9uYW1lIChPcGVuU3NsTmlkKTsNCj4gPiA+ID4gKyAgaWYgKFBlZXJFY0tleSA9 PSBOVUxMKSB7DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiArICB9DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgaWYgKEVDX0tFWV9zZXRfcHVibGljX2tleSAoUGVlckVjS2V5LCBQb2lu dCkgIT0gMSkgew0KPiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIGlmIChFQ19LRVlfY2hlY2tfa2V5IChQZWVyRWNLZXkpICE9IDEpIHsN Cj4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ICsgIH0NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBpZiAoRUNESF9jb21wdXRlX2tleSAoS2V5LCAqS2V5U2l6ZSwgUG9pbnQsIEVjS2V5LCBO VUxMKSA8PSAwKSB7DQo+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiArICB9DQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgUmV0VmFsID0gVFJVRTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArZmFp bDoNCj4gPiA+ID4gKyAgQk5fZnJlZSAoQm5YKTsNCj4gPiA+ID4gKyAgQk5fZnJlZSAoQm5ZKTsN Cj4gPiA+ID4gKyAgRUNfUE9JTlRfZnJlZSAoUG9pbnQpOw0KPiA+ID4gPiArICBFQ19LRVlfZnJl ZSAoUGVlckVjS2V5KTsNCj4gPiA+ID4gKyAgcmV0dXJuIFJldFZhbDsNCj4gPiA+ID4gK30NCj4g PiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9Dcnlw dEVjTnVsbC5jIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxs LmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAw MC4uZDlmMTAwNGY2Yw0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjTnVsbC5jDQo+ID4gPiA+IEBAIC0w LDAgKzEsNDk2IEBADQo+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gKyAgRWxsaXB0aWMgQ3Vy dmUgYW5kIEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VDcnlwdExpYi5oPg0KPiA+ID4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4g PiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3Qg cmVwcmVzZW50cyBhbiBFQyBjdXJ2ZSBhbmQNCj4gPiA+ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNh bGN1bGF0aW9uIHdpdGhpbiB0aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBzaG91bGQgYmUgZnJlZWQN Cj4gPiA+ID4gKyAgdXNpbmcgRWNHcm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBDcnlwdG9OaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRo ZSBFQ0MgY3VydmUgKERlZmluZWQgaW4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgQmFzZUNyeXB0TGliLmgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91 cCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAg IE9uIGZhaWx1cmUuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJ QVBJDQo+ID4gPiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBDcnlwdG9O aWQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICBHZXQgRUMgY3VydmUgcGFyYW1ldGVycy4gV2hpbGUgZWxsaXB0aWMg Y3VydmUgZXF1YXRpb24gaXMgWV4yIG1vZCBQID0gKFheMyArIEFYICsgQikgTW9kIFAuDQo+ID4g PiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2Jq ZWN0cyAgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVy IG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ ID4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gKyAgQHBh cmFtW291dF0gQm5QcmltZSAgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ICsgIEBwYXJh bVtvdXRdIEJuQSAgICAgICAgQSBjb2VmZmljaWVudC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0g Qm5CICAgICAgICBCIGNvZWZmaWNpZW50Li4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHgg ICAgICBCTiBjb250ZXh0Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gK0VjR3JvdXBHZXRDdXJ2ZSAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dy b3VwLA0KPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5QcmltZSwNCj4gPiA+ID4gKyAgT1VU IFZPSUQgICAgICAgKkJuQSwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQiwNCj4gPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4g PiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdldCBFQyBncm91cCBv cmRlci4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmln IE51bWJlciBvYmplY3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4gKyAgdmFsdWUuIFRo ZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJlciBwYXJh bWV0ZXINCj4gPiA+ID4gKyAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW291dF0gQm5PcmRlciAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAg QHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwR2V0T3JkZXIgKA0KPiA+ ID4gPiArICBJTiBWT0lEICAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAqQm5PcmRl cg0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0K PiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIEVDIGdyb3VwIG9iamVj dCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4g PiArVk9JRA0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwRnJlZSAoDQo+ID4gPiA+ ICsgIElOIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4g KyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9i amVjdCByZXByZXNlbnRzIGFuIEVDIHBvaW50DQo+ID4gPiA+ICsgIHdpdGhpbiB0aGUgZ2l2ZW4g RUMgZ3JvdXAgKGN1cnZlKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFQyBH cm91cCwgcHJvcGVybHkgaW5pdGlhbGl6ZWQgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBAcmV0dmFsIEVDIFBvaW50IG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50SW5pdCAo DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ICsgICkNCj4gPiA+ ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBOVUxM Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgRnJlZSBw cmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2ludCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9pbnQgdG8g ZnJlZS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1v cnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiA+ICsgIElOIFZPSUQg ICAgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gPiArICAp DQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgR2V0IEVDIHBvaW50IGFmZmluZSAoeCx5 KSBjb29yZGluYXRlcy4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJv dmlkZWQgQmlnIE51bWJlciBvYmplY3RzIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ICsg IHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdO dW1iZXIgcGFyYW1ldGVycw0KPiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmpl Y3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0K PiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4g KyAgQHBhcmFtW291dF0gQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRl eHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3Vj Y2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1Bv aW50R2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNH cm91cCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIE9V VCBWT0lEICAgICAgICpCblgsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4g PiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBTZXQgRUMgcG9pbnQg YWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAg ICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBj b29yZGluYXRlLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQs IGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4g PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAg ICAgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqQm5ZLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgN Cj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KioNCj4gPiA+ID4gKyAgRUMgUG9pbnQgYWRkaXRpb24uIEVjUG9pbnRSZXN1bHQgPSBFY1BvaW50 QSArIEVjUG9pbnRCLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAg ICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBFY1BvaW50 UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlIHBvaW50IHNob3VsZA0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRp YWxpemVkLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgICAgICAgIEVDIFBvaW50 Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgICAgICAgIEVDIFBvaW50Lg0KPiA+ ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQg d2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBU UlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg ICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPiArRWNQb2ludEFkZCAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y0dyb3VwLA0KPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqRWNQb2ludEIsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiAr ICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICBy ZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4g PiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVj UG9pbnQgKiBCblBTY2FsYXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVj UG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hv dWxkDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkg aW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMg UG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAgICAgUCBTY2FsYXIu DQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3Jl YXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0 dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAg ICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4g PiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50TXVsICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0K PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkJuUFNjYWxhciwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4g PiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ ID4gPiA+ICsgIENhbGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQu DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAgIEVDIGdyb3Vw IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAgIEVDIHBvaW50IHRv IGludmVydC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAgIEJOIGNvbnRleHQs IGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEludmVydCAoDQo+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwN Cj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4g K3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIENoZWNrIGlm IHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFy YW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgp Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBjdXJ2ZS4N Cj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoq Lw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1BvaW50SXNP bkN1cnZlICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5D dHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmlu aXR5Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91 cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBj aGVjay4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgQXQgaW5m aW5pdHkuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4g PiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQ b2ludElzQXRJbmZpbml0eSAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0K PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludA0KPiA+ID4gPiArICApDQo+ID4gPiA+ ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7 DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDaGVjayBp ZiBFQyBwb2ludHMgYXJlIGVxdWFsLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9p bnRBICBFQyBwb2ludCBBLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9p bnQgQi4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0 ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgIEEgPT0gQi4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAg IE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJ QVBJDQo+ID4gPiA+ICtFY1BvaW50RXF1YWwgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpC bkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0Up Ow0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4g UG9pbnRzIGNhbiBiZSBkZXNjcmliZWQgaW4gdGVybXMgb2YNCj4gPiA+ID4gKyAgdGhlaXIgY29t cHJlc3NlZCBjb29yZGluYXRlcy4gRm9yIGEgcG9pbnQgKHgsIHkpLCBmb3IgYW55IGdpdmVuIHZh bHVlIGZvciB4DQo+ID4gPiA+ICsgIHN1Y2ggdGhhdCB0aGUgcG9pbnQgaXMgb24gdGhlIGN1cnZl IHRoZXJlIHdpbGwgb25seSBldmVyIGJlIHR3byBwb3NzaWJsZQ0KPiA+ID4gPiArICB2YWx1ZXMg Zm9yIHkuIFRoZXJlZm9yZSwgYSBwb2ludCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24g d2hlcmUgQm5YIGlzDQo+ID4gPiA+ICsgIHRoZSB4IGNvb3JkaW5hdGUgYW5kIFlCaXQgaXMgYSB2 YWx1ZSAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggb2YgdGhlIHR3bw0KPiA+ID4gPiArICBwb3Nz aWJsZSB2YWx1ZXMgZm9yIHkgc2hvdWxkIGJlIHVzZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjUG9pbnQgICAgRUMgUG9pbnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAg ICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBZQml0ICAgICAgIDAg b3IgMSB0byBpZGVudGlmeSB3aGljaCBZIHZhbHVlIGlzIHVzZWQuDQo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRl eHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3Vj Y2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY1Bv aW50U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiArICBJTiBVSU5UOCAgICAgICBZQml0LA0K PiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiAr ew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0K PiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgQWxsb2NhdGVz IGFuZCBJbml0aWFsaXplcyBvbmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2VxdWVu dCB1c2UNCj4gPiA+ID4gKyAgd2l0aCB0aGUgTklELg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIE5pZCBjaXBoZXIgTklEDQo+ID4gPiA+ICsgIEByZXR1cm4gICAgIFBvaW50ZXIg dG8gdGhlIEVsbGlwdGljIEN1cnZlIENvbnRleHQgdGhhdCBoYXMgYmVlbiBpbml0aWFsaXplZC4N Cj4gPiA+ID4gKyAgICAgICAgICAgICAgSWYgdGhlIGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5 TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNOZXdCeU5pZCAoDQo+ID4gPiA+ICsgIElOIFVJTlROICBO aWQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMgY29udGV4dC4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVD IGNvbnRleHQgdG8gYmUgcmVsZWFzZWQuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNGcmVlICgNCj4gPiA+ID4gKyAgSU4gIFZPSUQgICpF Y0NvbnRleHQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdl bmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMgRUMgcHVibGljIGtleSAoWCwgWSksIFBsZWFzZSBu b3RlLCB0aGlzIGZ1bmN0aW9uIHVzZXMNCj4gPiA+ID4gKyAgcHNldWRvIHJhbmRvbSBudW1iZXIg Z2VuZXJhdG9yLiBUaGUgY2FsbGVyIG11c3QgbWFrZSBzdXJlIFJhbmRvbVNlZWQoKQ0KPiA+ID4g PiArICBmdW5jdGlvbiB3YXMgcHJvcGVybHkgY2FsbGVkIGJlZm9yZS4NCj4gPiA+ID4gKyAgVGhl IEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFY05ld0J5Tmlk Lg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyByYW5kb20gc2VjcmV0LCBhbmQg Y29tcHV0ZXMgdGhlIHB1YmxpYyBrZXkgKFgsIFkpLCB3aGljaCBpcw0KPiA+ID4gPiArICByZXR1 cm5lZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywgUHVibGljU2l6ZS4NCj4gPiA+ID4gKyAgWCBpcyB0 aGUgZmlyc3QgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLA0K PiA+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5n IFB1YmxpY1NpemUgLyAyLg0KPiA+ID4gPiArICBFQyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3Jk aW5nbHkuDQo+ID4gPiA+ICsgIElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBo b2xkIHRoZSBwdWJsaWMgWCwgWSwgRkFMU0UgaXMgcmV0dXJuZWQgYW5kDQo+ID4gPiA+ICsgIFB1 YmxpY1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0byBvYnRhaW4gdGhl IHB1YmxpYyBYLCBZLg0KPiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0 LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZv ciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25k IDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAx MzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAg SWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBQ dWJsaWNTaXplIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBQdWJs aWNTaXplIGlzIGxhcmdlIGVub3VnaCBidXQgUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZB TFNFLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50ZXIg dG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5 ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZ Lg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0 aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5l ZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBF QyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPiArICBAcmV0dmFsIEZB TFNFICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiArICBAcmV0dmFs IEZBTFNFICBQdWJsaWNLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHZW5lcmF0ZUtl eSAoDQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ICsgIE9V VCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJs aWNLZXlTaXplDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0K PiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdldHMgdGhlIHB1YmxpYyBrZXkgY29tcG9uZW50IGZy b20gdGhlIGVzdGFibGlzaGVkIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0 IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kIHN1Y2Nl c3NmdWxseQ0KPiA+ID4gPiArICBnZW5lcmF0ZSBrZXkgcGFpciBmcm9tIEVjR2VuZXJhdGVLZXko KS4NCj4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzIt Ynl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC0zODQsIHRo ZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlz IFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2 Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbiwg b3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4g PiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVm ZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtp biwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZm ZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4g Ynl0ZXMuDQo+ID4gPiA+ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyBy ZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gPiArICBAcmV0dmFsICBGQUxTRSAgSW52YWxp ZCBFQyBrZXkgY29tcG9uZW50Lg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4g PiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ID4gKyAgSU4gT1VUICBW T0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwN Cj4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gKyAgKQ0K PiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAg Q29tcHV0ZXMgZXhjaGFuZ2VkIGNvbW1vbiBrZXkuDQo+ID4gPiA+ICsgIEdpdmVuIHBlZXIncyBw dWJsaWMga2V5IChYLCBZKSwgdGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNv bW1vbiBrZXksDQo+ID4gPiA+ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNsdWRpbmcg dmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZCByYW5kb20gc2VjcmV0Lg0KPiA+ID4gPiArICBY IGlzIHRoZSBmaXJzdCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJs aWNTaXplIC8gMiwNCj4gPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1Ymxp YyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLg0KPiA+ID4gPiArICBJZiBFY0Nv bnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIFBlZXJQdWJs aWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWNT aXplIGlzIDAsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIElmIEtleVNpemUgaXMgbm90IGxhcmdlIGVu b3VnaCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQ dWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFku DQo+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0 OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTUyMSwg dGhlIFBlZXJQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYt Ynl0ZSBpcyBZLg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAg IFBlZXJQdWJsaWMgICAgICAgICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljU2l6ZSAgICAgU2l6ZSBvZiBwZWVy J3MgcHVibGljIFgsWSBpbiBieXRlcy4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBDb21w cmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlzIGNvbXByZXNzZWQgb3Igbm90Lg0K PiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gPiArICBAcGFyYW1b aW4sIG91dF0gIEtleVNpemUgICAgICAgICAgICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgS2V5IGJ1 ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIEtleSBidWZmZXIg aW4gYnl0ZXMuDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2Vu ZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIGV4Y2hhbmdl ZCBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEtleVNp emUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVBTg0K PiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0RoQ29tcHV0ZUtleSAoDQo+ID4gPiA+ICsgIElO IE9VVCAgVk9JRCAgICAgICAgICpFY0NvbnRleHQsDQo+ID4gPiA+ICsgIElOICAgICAgQ09OU1Qg VUlOVDggICpQZWVyUHVibGljLA0KPiA+ID4gPiArICBJTiAgICAgIFVJTlROICAgICAgICBQZWVy UHVibGljU2l6ZSwNCj4gPiA+ID4gKyAgSU4gICAgICBDT05TVCBJTlQzMiAgKkNvbXByZXNzRmxh ZywNCj4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ID4gKyAgSU4g T1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L1NtbUNyeXB0TGliLmluZiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1Dcnlw dExpYi5pbmYNCj4gPiA+ID4gaW5kZXggY2U2YTc4OWRmZC4uNGJjMzA2MzQ4NSAxMDA2NDQNCj4g PiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1NtbUNyeXB0TGliLmlu Zg0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRM aWIuaW5mDQo+ID4gPiA+IEBAIC01OSw2ICs1OSw3IEBADQo+ID4gPiA+ICAgIFBrL0NyeXB0VHNO dWxsLmMNCj4gPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3MuYw0KPiA+ID4gPiAgICBQay9DcnlwdFJz YVBzc1NpZ25OdWxsLmMNCj4gPiA+ID4gKyAgUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiAgICBQ ZW0vQ3J5cHRQZW0uYw0KPiA+ID4gPiAgICBCbi9DcnlwdEJuTnVsbC5jDQo+ID4gPiA+DQo+ID4g PiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VD cnlwdExpYk51bGwuaW5mDQo+ID4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51 bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+ID4gaW5kZXggMzU0ZjNkODBhYS4uZTFhNTdl ZjA5ZiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli TnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFy eS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4gPiA+IEBAIC00OSw2 ICs0OSw3IEBADQo+ID4gPiA+ICAgIFBrL0NyeXB0WDUwOU51bGwuYw0KPiA+ID4gPiAgICBQay9D cnlwdEF1dGhlbnRpY29kZU51bGwuYw0KPiA+ID4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4g PiA+ICsgIFBrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ID4gICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ ID4gPiA+ICAgIFJhbmQvQ3J5cHRSYW5kTnVsbC5jDQo+ID4gPiA+ICAgIFBrL0NyeXB0UnNhUHNz TnVsbC5jDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWJOdWxsL1BrL0NyeXB0RWNOdWxsLmMgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJO dWxsL1BrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ ID4gaW5kZXggMDAwMDAwMDAwMC4uZDlmMTAwNGY2Yw0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRF Y051bGwuYw0KPiA+ID4gPiBAQCAtMCwwICsxLDQ5NiBAQA0KPiA+ID4gPiArLyoqIEBmaWxlDQo+ ID4gPiA+ICsgIEVsbGlwdGljIEN1cnZlIGFuZCBFQ0RIIEFQSSBpbXBsZW1lbnRhdGlvbiBiYXNl ZCBvbiBPcGVuU1NMDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIyLCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ICsgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ICsNCj4g PiA+ID4gKyoqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlQ3J5 cHRMaWIuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRWNHcm91 cCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYW4gRUMgY3VydmUgYW5kDQo+ID4gPiA+ ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4gVGhpcyBv YmplY3Qgc2hvdWxkIGJlIGZyZWVkDQo+ID4gPiA+ICsgIHVzaW5nIEVjR3JvdXBGcmVlKCkgZnVu Y3Rpb24uDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRl bnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICBAcmV0dmFsIEVjR3JvdXAgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gPiArICBA cmV0dmFsIE5VTEwgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNHcm91cEluaXQgKA0KPiA+ID4g PiArICBJTiBVSU5UTiAgQ3J5cHRvTmlkDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgR2V0IEVDIGN1cnZlIHBhcmFt ZXRlcnMuIFdoaWxlIGVsbGlwdGljIGN1cnZlIGVxdWF0aW9uIGlzIFleMiBtb2QgUCA9IChYXjMg KyBBWCArIEIpIE1vZCBQLg0KPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBw cm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgIHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBC aWdOdW1iZXIgcGFyYW1ldGVycw0KPiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQu DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBv YmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuUHJpbWUgICAgR3JvdXAgcHJpbWUgbnVt YmVyLg0KPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQuDQo+ ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAgICAgICAgQiBjb2VmZmljaWVudC4uDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dC4NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gKyAgQHJldHZh bCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArQk9PTEVB Tg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJu UHJpbWUsDQo+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiA+ICsgIE9VVCBW T0lEICAgICAgICpCbkIsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4g PiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiAr ICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ ID4gPiArICBHZXQgRUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2ls bCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0IHRvIHRoZSBjb3JyZXNwb25kaW5n DQo+ID4gPiA+ICsgIHZhbHVlLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVyDQo+ID4gPiA+ICsgIGlzIHByb3Blcmx5IGluaXRp YWxpemVkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBn cm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuT3JkZXIgICBHcm91cCBwcmlt ZSBudW1iZXIuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9u IHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiAr RWNHcm91cEdldE9yZGVyICgNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4g PiArICBPVVQgVk9JRCAgKkJuT3JkZXINCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFs bG9jYXRlZCBFQyBncm91cCBvYmplY3QgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0IHRvIGZyZWUu DQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiAr RWNHcm91cEZyZWUgKA0KPiA+ID4gPiArICBJTiBWT0lEICAqRWNHcm91cA0KPiA+ID4gPiArICAp DQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVD IFBvaW50IG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBwb2ludA0KPiA+ID4g PiArICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2ZSkuDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRUMgR3JvdXAsIHByb3Blcmx5IGluaXRpYWxpemVkIHVzaW5nIEVj R3JvdXBJbml0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBFQyBQb2ludCBvYmpl Y3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBm YWlsdXJlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiArRWNQb2ludEluaXQgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0K PiA+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiAr LyoqDQo+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0 IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNQb2ludCAgIEVDIFBvaW50IHRvIGZyZWUuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENsZWFy ICAgICBUUlVFIGlmZiB0aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVhcmVkLg0KPiA+ID4gPiArKiov DQo+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnREZUluaXQg KA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQk9PTEVB TiAgQ2xlYXINCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZB TFNFKTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEdl dCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiA+ICsgIFRoaXMgZnVu Y3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyB0byB0aGUgY29y cmVzcG9uZGluZw0KPiA+ID4gPiArICB2YWx1ZXMuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBz dXJlIGFsbCB0aGUgIm91dCIgQmlnTnVtYmVyIHBhcmFtZXRlcnMNCj4gPiA+ID4gKyAgYXJlIHBy b3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVj R3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50 ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5YICAgICAgICBY IGNvb3JkaW5hdGUuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWSAgICAgICAgWSBjb29yZGlu YXRlLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0 ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEdldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50LA0KPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5YLA0KPiA+ID4gPiArICBPVVQg Vk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4g KyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4g PiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4g PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiArICBAcGFy YW1baW5dICBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAg Qm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiov DQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRTZXRB ZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0K PiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkJuWCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWSwNCj4gPiA+ID4gKyAg SU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4g KyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIEVDIFBvaW50IGFkZGl0aW9uLiBF Y1BvaW50UmVzdWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g KyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1 bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIg ICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAg ICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiAr ICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAg KkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4g PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQg KEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgVmFyaWFibGUgRUMgcG9pbnQgbXVsdGlwbGljYXRp b24uIEVjUG9pbnRSZXN1bHQgPSBFY1BvaW50ICogQm5QU2NhbGFyLg0KPiA+ID4gPiArDQo+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ ID4gPiArICBAcGFyYW1bb3V0XSBFY1BvaW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhl IHJlc3VsdC4gVGhlIHBvaW50IHNob3VsZA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiArICBAcGFyYW1baW5d ICBFY1BvaW50ICAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCblBT Y2FsYXIgICAgICAgIFAgU2NhbGFyLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAg ICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4g PiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4g PiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludE11bCAoDQo+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBPVVQgVk9JRCAg ICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQs DQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblBTY2FsYXIsDQo+ID4gPiA+ICsgIElOIFZP SUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2Yg dGhlIHN1cHBsaWVkIEVDIHBvaW50Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g ICAgIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbixvdXRd IEVjUG9pbnQgICBFQyBwb2ludCB0byBpbnZlcnQuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAg IEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0K PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiov DQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJbnZl cnQgKA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4g T1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0K PiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8q Kg0KPiA+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQgaXMgb24gRUMgY3VydmUu DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9i amVjdC4NCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNr Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3 aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFsIFRS VUUgICAgICAgICAgT24gY3VydmUuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBP dGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gPiArRWNQb2ludElzT25DdXJ2ZSAoDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4g KyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4g K30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBw bGllZCBwb2ludCBpcyBhdCBpbmZpbml0eS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1b aW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgIEF0IGluZmluaXR5Lg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAg ICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gK0VjUG9pbnRJc0F0SW5maW5pdHkgKA0KPiA+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQN Cj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsv KioNCj4gPiA+ID4gKyAgQ2hlY2sgaWYgRUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ID4gKw0K PiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4g PiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgRUMgcG9pbnQgQS4NCj4gPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNQb2ludEIgIEVDIHBvaW50IEIuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4 ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY1BvaW50QSwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4g PiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGNv bXByZXNzZWQgY29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3JpYmVkIGluIHRlcm1zIG9m DQo+ID4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZvciBhIHBvaW50ICh4 LCB5KSwgZm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4gPiArICBzdWNoIHRoYXQgdGhl IHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0d28gcG9zc2li bGUNCj4gPiA+ID4gKyAgdmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNl dCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdoZXJlIEJuWCBpcw0KPiA+ID4gPiArICB0aGUgeCBjb29y ZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIG9mIHRo ZSB0d28NCj4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVzIGZvciB5IHNob3VsZCBiZSB1c2VkLg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2Jq ZWN0Lg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ID4g PiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gKyAgQHBh cmFtW2luXSAgWUJpdCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1 c2VkLg0KPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0 ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGluYXRlcyAoDQo+ID4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiArICBJTiBWT0lEICAgICAg ICAqRWNQb2ludCwNCj4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gKyAg SU4gVUlOVDggICAgICAgWUJpdCwNCj4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoq DQo+ID4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25lIEVsbGlwdGljIEN1cnZl IENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4gPiA+ICsgIHdpdGggdGhlIE5JRC4NCj4g PiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW1baW5dICBOaWQgY2lwaGVyIE5JRA0KPiA+ID4gPiAr ICBAcmV0dXJuICAgICBQb2ludGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IHRoYXQg aGFzIGJlZW4gaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgICAgICAgICAgICAgIElmIHRoZSBhbGxv Y2F0aW9ucyBmYWlscywgRWNOZXdCeU5pZCgpIHJldHVybnMgTlVMTC4NCj4gPiA+ID4gKyoqLw0K PiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjTmV3QnlOaWQgKA0K PiA+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gPiAr fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgUmVsZWFzZSB0aGUgc3BlY2lm aWVkIEVDIGNvbnRleHQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNDb250 ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ID4gPiAr KiovDQo+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK0VjRnJlZSAoDQo+ ID4gPiA+ICsgIElOICBWT0lEICAqRWNDb250ZXh0DQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sN Cj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qKg0KPiA+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVDIHB1Ymxp YyBrZXkgKFgsIFkpLCBQbGVhc2Ugbm90ZSwgdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiA+ICsg IHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3Vy ZSBSYW5kb21TZWVkKCkNCj4gPiA+ID4gKyAgZnVuY3Rpb24gd2FzIHByb3Blcmx5IGNhbGxlZCBi ZWZvcmUuDQo+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5p dGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0 ZXMgcmFuZG9tIHNlY3JldCwgYW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMga2V5IChYLCBZKSwgd2hp Y2ggaXMNCj4gPiA+ID4gKyAgcmV0dXJuZWQgdmlhIHBhcmFtZXRlciBQdWJsaWMsIFB1YmxpY1Np emUuDQo+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBi ZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2Yg UHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMi4NCj4gPiA+ID4gKyAgRUMgY29u dGV4dCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5Lg0KPiA+ID4gPiArICBJZiB0aGUgUHVibGljIGJ1 ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgsIFksIEZBTFNFIGlzIHJldHVy bmVkIGFuZA0KPiA+ID4gPiArICBQdWJsaWNTaXplIGlzIHNldCB0byB0aGUgcmVxdWlyZWQgYnVm ZmVyIHNpemUgdG8gb2J0YWluIHRoZSBwdWJsaWMgWCwgWS4NCj4gPiA+ID4gKyAgRm9yIFAtMjU2 LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0 ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJz dCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiA+ICsgIEZvciBQLTUy MSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1i eXRlIGlzIFkuDQo+ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBp cyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBF Y0NvbnRleHQgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiArICBAcGFy YW1bb3V0XSAgICAgIFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2 ZSBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJs aWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4N Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRo ZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4N Cj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIGZhaWxl ZC4NCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgUHVibGljS2V5U2l6ZSBpcyBub3QgbGFyZ2Ug ZW5vdWdoLg0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gK0VjR2VuZXJhdGVLZXkgKA0KPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWND b250ZXh0LA0KPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiAr ICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBHZXRzIHRoZSBw dWJsaWMga2V5IGNvbXBvbmVudCBmcm9tIHRoZSBlc3RhYmxpc2hlZCBFQyBjb250ZXh0Lg0KPiA+ ID4gPiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5 IEVjTmV3QnlOaWQsIGFuZCBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gKyAgZ2VuZXJhdGUga2V5IHBh aXIgZnJvbSBFY0dlbmVyYXRlS2V5KCkuDQo+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1Ymxp Y1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4g PiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBp cyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJs aWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0K PiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50ZXIgdG8gRUMg Y29udGV4dCBiZWluZyBzZXQuDQo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5 ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZ Lg0KPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0 aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5l ZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICBAcmV0dmFsICBUUlVFICAg RUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gKyAg QHJldHZhbCAgRkFMU0UgIEludmFsaWQgRUMga2V5IGNvbXBvbmVudC4NCj4gPiA+ID4gKyoqLw0K PiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtFY0dldFB1YktleSAo DQo+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ICsgIE9VVCAg ICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJsaWNL ZXlTaXplDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxT RSk7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ ID4gPiArLyoqDQo+ID4gPiA+ICsgIENvbXB1dGVzIGV4Y2hhbmdlZCBjb21tb24ga2V5Lg0KPiA+ ID4gPiArICBHaXZlbiBwZWVyJ3MgcHVibGljIGtleSAoWCwgWSksIHRoaXMgZnVuY3Rpb24gY29t cHV0ZXMgdGhlIGV4Y2hhbmdlZCBjb21tb24ga2V5LA0KPiA+ID4gPiArICBiYXNlZCBvbiBpdHMg b3duIGNvbnRleHQgaW5jbHVkaW5nIHZhbHVlIG9mIGN1cnZlIHBhcmFtZXRlciBhbmQgcmFuZG9t IHNlY3JldC4NCj4gPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQZWVyUHVibGljIHdp dGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIsDQo+ID4gPiA+ICsgIFkgaXMgdGhlIHNl Y29uZCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8g Mi4NCj4gPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0K PiA+ID4gPiArICBJZiBQZWVyUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ ID4gPiArICBJZiBQZWVyUHVibGljU2l6ZSBpcyAwLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiArICBJZiBL ZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2gsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiAr ICBGb3IgUC0yNTYsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBY LCBTZWNvbmQgMzItYnl0ZSBpcyBZLg0KPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQZWVyUHVi bGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZSBpcyBZLg0K PiA+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2 LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBv dXRdICBFY0NvbnRleHQgICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUg cGVlcidzIHB1YmxpYyBYLFkuDQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgUGVlclB1Ymxp Y1NpemUgICAgIFNpemUgb2YgcGVlcidzIHB1YmxpYyBYLFkgaW4gYnl0ZXMuDQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gICAgICAgQ29tcHJlc3NGbGFnICAgICAgIEZsYWcgb2YgUGVlclB1YmxpYyBp cyBjb21wcmVzc2VkIG9yIG5vdC4NCj4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkgICAg ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIGtl eS4NCj4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBLZXlTaXplICAgICAgICAgICAgT24gaW5w dXQsIHRoZSBzaXplIG9mIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSBy ZXR1cm5lZCBpbiBLZXkgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gPiArICBAcmV0dmFsIFRSVUUg ICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPiArICBAcmV0 dmFsIEZBTFNFICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiAr ICBAcmV0dmFsIEZBTFNFICBLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiA+ICsq Ki8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArRWNEaENvbXB1 dGVLZXkgKA0KPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ ID4gPiArICBJTiAgICAgIENPTlNUIFVJTlQ4ICAqUGVlclB1YmxpYywNCj4gPiA+ID4gKyAgSU4g ICAgICBVSU5UTiAgICAgICAgUGVlclB1YmxpY1NpemUsDQo+ID4gPiA+ICsgIElOICAgICAgQ09O U1QgSU5UMzIgICpDb21wcmVzc0ZsYWcsDQo+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDggICAgICAg ICpLZXksDQo+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICpLZXlTaXplDQo+ID4gPiA+ ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4gLS0NCj4gPiA+ID4gMi4zMS4xLndp bmRvd3MuMQ0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiANCj4gPiA+ID4NCg0K