From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.26634.1643591418353194772 for ; Sun, 30 Jan 2022 17:10:19 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=ioI4d+h0; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643591418; x=1675127418; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=OqmE/In9BxbcDSmtfOWCSsC/42EzLTjefQ54TSMiiZk=; b=ioI4d+h0mfTQEyDchf++2FVKxDlENKhuqsut85A71W6DFPFLJo2BZk6y 1m/rS5dWFsEkqDPO3dLBoTkWjr4MbBTrc4LFKs/axdYUSbSdqUxdn/SiM MpftnghejkOeQXiw6l8XvV0bOQAk/PDFYlbf5N0c7U7OudRuPOgfe3dbM AiiC8XGjZSHHJAxK0w2NPEngL2r5TEYsybkOVNazXPm7Fmrk+Q3gNzXq2 D1H4l8AKVLKSfodPllHHnI7rJFyuzCnMvihOkOoIUd1ZIfsMyi5akVpE0 I5NcegdK4ALRmz5KeUPs4a3en+Lz2zFrBcYBMajIbJ5vetqMZfLsWNKdz A==; X-IronPort-AV: E=McAfee;i="6200,9189,10243"; a="228049812" X-IronPort-AV: E=Sophos;i="5.88,329,1635231600"; d="scan'208";a="228049812" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jan 2022 17:10:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,329,1635231600"; d="scan'208";a="675593972" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga001.fm.intel.com with ESMTP; 30 Jan 2022 17:10:17 -0800 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Sun, 30 Jan 2022 17:10:17 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Sun, 30 Jan 2022 17:10:17 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.176) 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.2308.20; Sun, 30 Jan 2022 17:10:16 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mwuxQHozp8mj+tIucXr1y5v7SE3jb1sKxA77UQdl7YMGCh97/T5IxpiwMcfPY3c6jRLMxtVBHxM/LPKG05shi+AUquTimi/TrE/QK6fnDQSK5hD55J0EZUYsfc+KSWFbrbl7NhQwlVxd9R7SBBJrSPA4pP7B7wp80SoCaYZrRkHXvGRbmBTfoHA//ysnMPL3GFEbIec1d8in3SVpTJhdSk/KCe+BsKaabQZ/+BnF3dm5FL3cbIhxX6IEidQOZD04CAzoYba8coR3kI5YpTAwdWl55aU9X/o1W99Ly99PSzObKXaEcWkInHcl5GjDNaUH/eKFPYoBGF8yGWZXAkP1Cg== 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=OqmE/In9BxbcDSmtfOWCSsC/42EzLTjefQ54TSMiiZk=; b=l2ZgOhsa19Fha6JsbgPssiMurt6IUkYSAqunvkdJhw/m40kJHyxRuGxUszsy+PJycPtNHg03n92QzfHMCzDMcnBEGmKFIvgoegJ4qoWxZy1qnrm3c6whDnrR+IvC2mNINJtya/82IRxjlOZ961ioqI7exzmTjuQD5fYijFtGn+jwlqtjdSv/9W+2Mtp506XVfC48NSaolOzfSRxUovgbH0cyupm03U/m/9VJtQ9vlxYm1U7PrKWyU+nLY2hAqZJ9EkPe7UFPnLC1WF4SoZx1aO5uF69SjRcCCeEeqXDJs2+paWMfiQSIAc5EOCog2MC4SbwwMf7KUPkvmYItB+I1Zg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by CO1PR11MB5108.namprd11.prod.outlook.com (2603:10b6:303:92::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Mon, 31 Jan 2022 01:10:09 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::b8a9:e4f7:e037:771b]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::b8a9:e4f7:e037:771b%8]) with mapi id 15.20.4930.021; Mon, 31 Jan 2022 01:10:09 +0000 From: "Yao, Jiewen" To: "Li, Yi1" CC: "devel@edk2.groups.io" , "Wang, Jian J" , Xiaoyu Lu , "Jiang, Guomin" Subject: Re: [PATCH 2/2] CryptoPkg: Add BigNum NullLib Thread-Topic: [PATCH 2/2] CryptoPkg: Add BigNum NullLib Thread-Index: AQHYFVz4C708xwXxBEWdCd3rOjWTLKx6rxshgAEeLwCAAIaQbw== Date: Mon, 31 Jan 2022 01:10:09 +0000 Message-ID: <4E330833-C8B3-4ECF-8F14-B8FE54F31420@intel.com> References: <2453B62F-8856-4915-A6B4-7819F9B991C4@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1fdfd719-5904-4d52-050c-08d9e4566ca8 x-ms-traffictypediagnostic: CO1PR11MB5108:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IUGgOFkmGRAvXFIS/es5xuv4lsP0HECvi4MPl6iVcgkEC3pIHSZGsjsqSdl89HJPK2RyCJ+d7liETwYIDxFSiXN0EnXpn6VVobEyYb7wYvcxEbVyal65UOodSMHlt7iUI+TcmJCq1oTEa1hc/T/2g+dON+WNCngJYDTAftoSbdiPWsUwKhaNJmhT6Iv2xo9cefaa8Ri1xORPl7gE/cJ9OLB/UNRyA3gZ+LRz8rd2ERIbNxyiQ2zzMb4qhSjCCKgoKxfP0LnfrSq2qrkV7WugKQqv4hwdJBdQ4k9AUJkGCISG2kY7SwbCykIhOvTsjTXH232OHw05g0RLsnet/cijC59S2QWWxANQm2vRv0u1/9OfLK6UKQIPiP7FTJw22Z+khrWm6wXkQc6c5O7TsuH/eoZEGJI6T7Hr8791KJDHZ7it7gnG5k9zQE2q8ys6EuMz4CVyVoSaxsQMhc/mdwRAbzQPFl6kVXu4MMl3bhTc/Wn0z1S5risrGiVsDq6PgAvZH/mYqxEwmeuYm512z8eWirgrKaIlkMMcek6tO5uHHSml8pWcjk/2fYjg/bSrtw2Lkj1R5W6HKJNztMFiRZVaiFrvx7Ymph8dFnmKOufubTrhDqnvvb6kVbuD99uJTwViUj+cCIlm6WZqzQ7E8l9BVeqkSh4tBuQuzE2x9MVnbcG5KZQMrgV8enKn/XpPGs1zmolLqUIkNsR04fWRjBO89Q3IzCr3p8bXjG1Na9pz2ngrruPPW3Kppu/IiHZpjI4y x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(76116006)(86362001)(66946007)(8936002)(66446008)(66556008)(91956017)(53546011)(6512007)(64756008)(66476007)(38070700005)(6486002)(8676002)(6862004)(4326008)(508600001)(316002)(6506007)(71200400001)(54906003)(6636002)(37006003)(83380400001)(122000001)(2616005)(36756003)(82960400001)(107886003)(38100700002)(30864003)(5660300002)(33656002)(2906002)(186003)(45980500001)(579004)(559001)(20210929001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?emtLb241SDBOd3ZqMVFXOElqWDNnWDFRV0Y5eVVjMkpLWmNpVTlSRytoV3c1?= =?utf-8?B?VTBWSkVtK0NDOHlvajROWklZN0lVOE1xb0JDM0RkaVkrdk83Q2xsa0psQldm?= =?utf-8?B?ZU1jdW9OS01rWStJY3FoTVlwb2d1NE9tRnhLaWpwRmRrZ3NUeDF4N2VtVEll?= =?utf-8?B?UGQ4Vy9JS2tTTndTaThpZE9QTFZYeEd2a1JKLzBCaHZGa0p4dE5TQURMdTJ0?= =?utf-8?B?UEhubVhxaFlLNFMwQThaSDBhQXdxc2dFMDZCVG8xTm1DNXNTOGhsb3kvRDFN?= =?utf-8?B?R0o5L05rNk8xbFhLSGNabFdqSWtmUTA2SnA2VUJrMDdFN1BWYjl1TFZHTkVN?= =?utf-8?B?NmplTTczUGwwZjJyVnR6cENjSU55UVc3RjZGQmNBWWhCUzloblYzeEhjMVJN?= =?utf-8?B?aCt0Z01pUlZVSSt1cC9nZEl6bDVpUWhZdk52QnFsUWNCK0lwbGlsUTVORS9p?= =?utf-8?B?ejhSUUtESnhUYUQwUnMwc3ZGOUprTEZqeFEzRmgvNHJCYSsreWMrWi9ZdmRk?= =?utf-8?B?MGhJM3dBKytmTzJ1SURmZmFPemhYbFNhZHBaRStZWG12eGFabmRyMVhTUC9B?= =?utf-8?B?VDhqTlV5NjJtNDY3YWFBTHRHMzJockFYVUZlTlNDOHEyU0ZjVUZZdnZoNDU5?= =?utf-8?B?MlJzTUJJR3JMWndMTUlDS2ttNGlnUk4zaXdFWTdSaGd4Yk1Fb0tieUQyUkhG?= =?utf-8?B?bmw4azZNclRubS9Yd2FaQnFhTktFQ2dOR2hONitFSGJ3OTAzZW9rY3lNbC9H?= =?utf-8?B?cG14TCtrUnppdndWNXVoTitXd1B5enJqcXBMK1EwSk40aTNjZFZDV0U3M1Zj?= =?utf-8?B?VHliVkdLckVlMVZTVEJmU2xMYjhDaUNRd0ZPSk02OGJlZ1h1OHEwR3ppR1JG?= =?utf-8?B?bmlPRE95YXg5MGNoSTNPa25JcGE3ZW0vWWllN3V6OGxCYXFrNWFnRmRsdXdl?= =?utf-8?B?eFRpdGRQQkNNOGVUYlpBSWxOTUVNYm1neHIrM3d0T3d6Z3JGc3JRNzVWcEtO?= =?utf-8?B?WkU2RXFMTWxWaFlZS0JyWE9DN2J4VUFRYkhIekhzbEE2MnBKWnE0czdpNG5u?= =?utf-8?B?MDF3bE9QMGppc0lvM3dVWExIQXViRXZGbzMzbk9RdUdLbUhYZUFYeTN6L3Rw?= =?utf-8?B?Nko3ZEcxNkZxUm9WOEFTdnJpMUt3SnR1QmFBODBQRHNOTFFJOGpESnNSYW5r?= =?utf-8?B?eDFhU0lMZzdCY3ZVZWtzcFZGMWhZWGo5UVhZczhsK204ejAycEZIVkQyWk9n?= =?utf-8?B?SWJ6WEhRRmJORWFvL3lQbXFnTDNxZnpsSm1jK3lidE9sUi90TWNaeVlHc29E?= =?utf-8?B?TnBGWlJEK1BFT0NKT1BGbm04QW1QQlcyR1QzdmhPSUJiN3hDUmFoQzVtSmpE?= =?utf-8?B?NlEycW4zU3EvZXNMVUJuQ3hGK0xsbWR4L0VEVk9Xekc3N0ZUZFBlZHRrUnZK?= =?utf-8?B?U0pIdGN2cXh3UmlSR285VUhHektvc2VJdmxDOU1WUEZoOVJweExGNU9MN0pu?= =?utf-8?B?Mnc1Ykx5WUZYeUVHUmhoNVVvM1l6YktwUUpBdlJVZVJlWXdjaGF4bnpEY0dX?= =?utf-8?B?RUo4ZjJYSkNTSkp2ZDJKL2FPVVIyZzdwZXp0a0FKQ1dZQTRzcDd5WHRqeWtU?= =?utf-8?B?NVN2dnpsRVJCNHk4N0c4a010cDg3WUQxOXRlcjFRR1hGWDFOZkh5bVBxMlZP?= =?utf-8?B?cGhGL24veVNLWjRYR1N6ZlNKU2lxYUlnVnVhWGVBdWNBTmlCelN4d0dqL2JD?= =?utf-8?B?SXBDNGpaTjg3dm41Z2FvYnZVVE5wVWt5ZmdSR1kxQnBUTHl0NVZwOTE5bFZZ?= =?utf-8?B?ODlxNDMvK0lnZFcvOVk4RUttdlZqazNjNmtmQjNuWlhrcWFaeUJqQW8rUUxp?= =?utf-8?B?YkdJKzY1c2F6c0hnclBMRVZSaHJhZnFGQTlkM05EMkdyQjVNTUhPYmtFT245?= =?utf-8?B?S0hsR2o2ZlZDaDJFU1prbGl3cjhRdkVIa3FOUGwzbGhmRGY3Ylcrbm1LUHBs?= =?utf-8?B?aGFYa3BEQ1JDRWhObU9ZTlJYdXhlKy84QlIyN0dhbjdkQkV0TlZobXRLVjB6?= =?utf-8?B?NkcrK2RSeFlkRnl5ZkljcnR4SFBiSWNwVk5kNnBRWWNpc3p3cEpRalRLTS83?= =?utf-8?B?UURyaU14ZHBFZ25LcC9oUmRqY2ZHMGVCRUsxcjVSQ0ZtSCtpaTlpWmdFZnVW?= =?utf-8?B?NmgrWVJXRFBLOUNEU3hISVYvdWhYbnh3alJFaXVXejhSY04yNjhxeWUvSVkz?= =?utf-8?Q?zLApBTAw+XZtC2QtiqEBug4Fag0d1TLGG2VISEJytM=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fdfd719-5904-4d52-050c-08d9e4566ca8 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jan 2022 01:10:09.0425 (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: +wX17unFswoVo4rvEDhvrTQnA55++u3kMQ24buf2VXRpoFnFw3vFe8So4goMZljl/f/oHZh7ZfgRSmYr/a2GMg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5108 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkNClRoZW4gSSBkb27igJl0IHVuZGVyc3RhbmQgd2h5IHdlIG5lZWQgdGhpcyBmZWF0dXJlLiBQ bGVhc2Ugc3VibWl0IGEgYnVnemlsbGEgdG8gZGVzY3JpYmUgdGhlIHByb2JsZW0gc3RhdGVtZW50 LiAoTm90IHRoZSBzb2x1dGlvbikNCg0KQWxzbyBwbGVhc2UgcHJvdmlkZSB0aGUgc2l6ZSBkaWZm ZXJlbmNlIGluIHBlaSBhbmQgc21tIGJlZm9yZSBhbmQgYWZ0ZXIgeW91ciBwYXRjaC4NCk5vdCBv bmx5IHRoZSBjcnlwdG8gYmluIGJ1dCBhbHNvIHRoZSBpbmRpdmlkdWFsIGRyaXZlciB1c2luZyBj cnlwdG8gbGliLCBzdWNoIGFzIHZhciBhdXRoIGRyaXZlci4gV2UgDQoNCnRoYW5rIHlvdSENCllh bywgSmlld2VuDQoNCg0KPiDlnKggMjAyMuW5tDHmnIgzMeaXpe+8jOS4iuWNiDE6MDjvvIxMaSwg WWkxIDx5aTEubGlAaW50ZWwuY29tPiDlhpnpgZPvvJoNCj4gDQo+IO+7v0hpIEppZXdlbg0KPiBX aXRoIGJ1aWxkIGNtZCAnYnVpbGQgLXAgLlxFZGsyXENyeXB0b1BrZ1xDcnlwdG9Qa2cuZHNjIC10 IFZTMjAxOSAtYSBYNjQgLUQgQ1JZUFRPX1NFUlZJQ0VTPUFMTCc6DQo+IENyeXB0RHhlLmVmaSB3 aWxsIGJlIDgxMyw1MDQgYnl0ZXMgd2l0aG91dCBDcnlwdEJuOw0KPiB3aWxsIGJlIDgxNSwwNDAg Ynl0ZXMgd2l0aCBDcnlwdEJuTnVsbDsNCj4gd2lsbCBiZSA4MTUsMzYwIGJ5dGVzIHdpdGggQ3J5 cHRCbjsNCj4gVGhpcyBwYXRjaCBoYXMgbGl0dGxlIGVmZmVjdCBvbiBiaW5hcnkgc2l6ZSBzaW5j ZSB0aGUgZGVwZW5kZW50IE9wZW5zc2wgbGlicmFyeSBpcyBhbHJlYWR5IGVuYWJsZWQgaW4gRURL Mi4NCj4gQW5kIENyeXB0Qm5OdWxsIGNhbiBhbHNvIGJlIHVzZWQgaW4gZHJpdmVycyhzdWNoIHBl aSxzbW0pIHdoaWNoIGRvIG5vdCBuZWVkIEJuIGluc3RhbmNlLg0KPiANCj4gVGhhbmtzLg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb20+IA0KPiBTZW50OiBTdW5kYXksIEphbnVhcnkgMzAsIDIwMjIgODowNCBBTQ0K PiBUbzogTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT4NCj4gQ2M6IGRldmVsQGVkazIuZ3JvdXBz LmlvOyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IFhpYW95dSBMdSA8eGlh b3l1eC5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDIvMl0gQ3J5cHRvUGtnOiBBZGQgQmlnTnVtIE51bGxM aWINCj4gDQo+IHRoYW5rIHlvdQ0KPiBzaW5jZSB5b3UgYXJlIHRhbGtpbmcgYWJvdXQgc2l6ZSBv cHRpbWl6YXRpb24sIHdvdWxkIHlvdSBwbGVhc2Ugc2hhcmUgdGhlIHJlc3VsdD8NCj4gDQo+IHRo YW5rIHlvdSENCj4gWWFvLCBKaWV3ZW4NCj4gDQo+IA0KPj4g5ZyoIDIwMjLlubQx5pyIMzDml6Xv vIzkuIrljYg2OjEw77yMTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT4g5YaZ6YGT77yaDQo+PiAN Cj4+IO+7v1RoaXMgcGF0Y2ggaXMgdXNlZCB0byBhZGQgQ3J5cHRCbk51bGwgbGlicmFyeSwgd2hp Y2ggaXMgdXNlZCB0byANCj4+IG9wdGltaXplIGNvZGUgc2l6ZS4NCj4+IA0KPj4gU2lnbmVkLW9m Zi1ieTogeWkxIGxpIDx5aTEubGlAaW50ZWwuY29tPg0KPj4gDQo+PiBDYzogSmlld2VuIFlhbyA8 amlld2VuLnlhb0BpbnRlbC5jb20+DQo+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGlu dGVsLmNvbT4NCj4+IENjOiBYaWFveXUgTHUgPHhpYW95dXgubHVAaW50ZWwuY29tPg0KPj4gQ2M6 IEd1b21pbiBKaWFuZyA8Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4+IC0tLQ0KPj4gLi4uL0xp YnJhcnkvQmFzZUNyeXB0TGliL0JuL0NyeXB0Qm5OdWxsLmMgICAgIHwgNTI1ICsrKysrKysrKysr KysrKysrKw0KPj4gLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZiAgICAg IHwgICAyICstDQo+PiAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mICAg ICAgfCAgIDIgKy0NCj4+IC4uLi9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5m ICAgICB8ICAgMSArDQo+PiAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0JuL0NyeXB0Qm5O dWxsLmMgfCA1MjUgKysrKysrKysrKysrKysrKysrDQo+PiA1IGZpbGVzIGNoYW5nZWQsIDEwNTMg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkgY3JlYXRlIG1vZGUgMTAwNjQ0IA0KPj4gQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0JuL0NyeXB0Qm5OdWxsLmMNCj4+IGNyZWF0ZSBt b2RlIDEwMDY0NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0JuL0NyeXB0Qm5O dWxsLmMNCj4+IA0KPj4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9Cbi9DcnlwdEJuTnVsbC5jIA0KPj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIv Qm4vQ3J5cHRCbk51bGwuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uOWYyMjBiYTQxMDU4DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9DcnlwdG9Q a2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQm4vQ3J5cHRCbk51bGwuYw0KPj4gQEAgLTAsMCArMSw1 MjUgQEANCj4+ICsvKiogQGZpbGUNCj4+ICsgIEJpZyBudW1iZXIgQVBJIGltcGxlbWVudGF0aW9u IGJhc2VkIG9uIE9wZW5TU0wNCj4+ICsNCj4+ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gKyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4+ICsNCj4+ICsqKi8NCj4+ICsNCj4+ ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlQ3J5cHRMaWIuaD4NCj4+ICsjaW5jbHVkZSA8TGlicmFy eS9EZWJ1Z0xpYi5oPg0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQWxsb2NhdGUgbmV3IEJpZyBOdW1i ZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIE5ldyBCaWdOdW0gb3BhcXVlIHN0cnVjdHVyZSBvciBO VUxMIG9uIGZhaWx1cmUuDQo+PiArKiovDQo+PiArVk9JRCAqDQo+PiArRUZJQVBJDQo+PiArQmln TnVtSW5pdCAoDQo+PiArICBWT0lEDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxT RSk7DQo+PiArICByZXR1cm4gTlVMTDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBBbGxv Y2F0ZSBuZXcgQmlnIE51bWJlciBhbmQgYXNzaWduIHRoZSBwcm92aWRlZCB2YWx1ZSB0byBpdC4N Cj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCdWYgICAgQmlnIGVuZGlhbiBlbmNvZGVkIGJ1ZmZl ci4NCj4+ICsgIEBwYXJhbVtpbl0gICBMZW4gICAgQnVmZmVyIGxlbmd0aC4NCj4+ICsNCj4+ICsg IEByZXR2YWwgTmV3IEJpZ051bSBvcGFxdWUgc3RydWN0dXJlIG9yIE5VTEwgb24gZmFpbHVyZS4N Cj4+ICsqKi8NCj4+ICtWT0lEICoNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Gcm9tQmluICgNCj4+ ICsgIElOIENPTlNUIFVJTlQ4ICAqQnVmLA0KPj4gKyAgSU4gVUlOVE4gICAgICAgIExlbg0KPj4g KyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIE5VTEw7DQo+ PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ29udmVydCB0aGUgYWJzb2x1dGUgdmFsdWUgb2Yg Qm4gaW50byBiaWctZW5kaWFuIGZvcm0gYW5kIHN0b3JlIGl0IGF0IEJ1Zi4NCj4+ICsgIFRoZSBC dWYgYXJyYXkgc2hvdWxkIGhhdmUgYXQgbGVhc3QgQmlnTnVtQnl0ZXMoKSBpbiBpdC4NCj4+ICsN Cj4+ICsgIEBwYXJhbVtpbl0gICBCbiAgICAgQmlnIG51bWJlciB0byBjb252ZXJ0Lg0KPj4gKyAg QHBhcmFtW291dF0gIEJ1ZiAgICBPdXRwdXQgYnVmZmVyLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBU aGUgbGVuZ3RoIG9mIHRoZSBiaWctZW5kaWFuIG51bWJlciBwbGFjZWQgYXQgQnVmIG9yIC0xIG9u IGVycm9yLg0KPj4gKyoqLw0KPj4gK0lOVE4NCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Ub0JpbiAo DQo+PiArICBJTiBWT0lEICAgICpCbiwNCj4+ICsgIE9VVCBVSU5UOCAgKkJ1Zg0KPj4gKyAgKQ0K Pj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIC0xOw0KPj4gK30NCj4+ ICsNCj4+ICsvKioNCj4+ICsgIEZyZWUgdGhlIEJpZyBOdW1iZXIuDQo+PiArDQo+PiArICBAcGFy YW1baW5dICAgQm4gICAgICBCaWcgbnVtYmVyIHRvIGZyZWUuDQo+PiArICBAcGFyYW1baW5dICAg Q2xlYXIgICBUUlVFIGlmIHRoZSBidWZmZXIgc2hvdWxkIGJlIGNsZWFyZWQuDQo+PiArKiovDQo+ PiArVk9JRA0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bUZyZWUgKA0KPj4gKyAgSU4gVk9JRCAgICAg KkJuLA0KPj4gKyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NF UlQgKEZBTFNFKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBDYWxjdWxhdGUgdGhlIHN1 bSBvZiB0d28gQmlnIE51bWJlcnMuDQo+PiArICBQbGVhc2Ugbm90ZSwgYWxsICJvdXQiIEJpZyBu dW1iZXIgYXJndW1lbnRzIHNob3VsZCBiZSBwcm9wZXJseSANCj4+ICtpbml0aWFsaXplZA0KPj4g KyAgYnkgY2FsbGluZyB0byBCaWdOdW1Jbml0KCkgb3IgQmlnTnVtRnJvbUJpbigpIGZ1bmN0aW9u cy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAgIEJpZyBudW1iZXIuDQo+PiArICBA cGFyYW1baW5dICAgQm5CICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW291dF0gIEJuUmVz ICAgVGhlIHJlc3VsdCBvZiBCbkEgKyBCbkIuDQo+PiArDQo+PiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJP UiAgIE90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJQVBJDQo+PiAr QmlnTnVtQWRkICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJTiBDT05TVCBW T0lEICAqQm5CLA0KPj4gKyAgT1VUIFZPSUQgICAgICAgKkJuUmVzDQo+PiArICApDQo+PiArew0K Pj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPj4g K30NCj4+ICsNCj4+ICsvKioNCj4+ICsgIFN1YnRyYWN0IHR3byBCaWcgTnVtYmVycy4NCj4+ICsg IFBsZWFzZSBub3RlLCBhbGwgIm91dCIgQmlnIG51bWJlciBhcmd1bWVudHMgc2hvdWxkIGJlIHBy b3Blcmx5IA0KPj4gK2luaXRpYWxpemVkDQo+PiArICBieSBjYWxsaW5nIHRvIEJpZ051bUluaXQo KSBvciBCaWdOdW1Gcm9tQmluKCkgZnVuY3Rpb25zLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAg IEJuQSAgICAgQmlnIG51bWJlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBCbkIgICAgIEJpZyBudW1i ZXIuDQo+PiArICBAcGFyYW1bb3V0XSAgQm5SZXMgICBUaGUgcmVzdWx0IG9mIEJuQSAtIEJuQi4N Cj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgT24gc3VjY2Vzcy4NCj4+ ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNlLg0KPj4gKyoqLw0KPj4g K0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1TdWIgKA0KPj4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkJuQSwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkIsDQo+PiArICBPVVQgVk9JRCAg ICAgICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsg IHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ2Fs Y3VsYXRlIHJlbWFpbmRlcjogQm5SZXMgPSBCbkEgJSBCbkIuDQo+PiArICBQbGVhc2Ugbm90ZSwg YWxsICJvdXQiIEJpZyBudW1iZXIgYXJndW1lbnRzIHNob3VsZCBiZSBwcm9wZXJseSANCj4+ICtp bml0aWFsaXplZA0KPj4gKyAgYnkgY2FsbGluZyB0byBCaWdOdW1Jbml0KCkgb3IgQmlnTnVtRnJv bUJpbigpIGZ1bmN0aW9ucy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAgIEJpZyBu dW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5CICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBh cmFtW291dF0gIEJuUmVzICAgVGhlIHJlc3VsdCBvZiBCbkEgJSBCbkIuDQo+PiArDQo+PiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBAcmV0dmFsIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTIEluIGNhc2Ugb2YgaW50ZXJuYWwgYWxsb2NhdGlvbiBmYWlsdXJl cy4NCj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNlLg0KPj4gKyoq Lw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Nb2QgKA0KPj4gKyAgSU4g Q09OU1QgVk9JRCAgKkJuQSwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkIsDQo+PiArICBPVVQg Vk9JRCAgICAgICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNFKTsN Cj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4g KyAgQ29tcHV0ZSBCbkEgdG8gdGhlIEJuUC10aCBwb3dlciBtb2R1bG8gQm5NLg0KPj4gKyAgUGxl YXNlIG5vdGUsIGFsbCAib3V0IiBCaWcgbnVtYmVyIGFyZ3VtZW50cyBzaG91bGQgYmUgcHJvcGVy bHkgaW5pdGlhbGl6ZWQuDQo+PiArICBieSBjYWxsaW5nIHRvIEJpZ051bUluaXQoKSBvciBCaWdO dW1Gcm9tQmluKCkgZnVuY3Rpb25zLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAgIEJuQSAgICAg QmlnIG51bWJlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBCblAgICAgIEJpZyBudW1iZXIgKHBvd2Vy KS4NCj4+ICsgIEBwYXJhbVtpbl0gICBCbk0gICAgIEJpZyBudW1iZXIgKG1vZHVsbykuDQo+PiAr ICBAcGFyYW1bb3V0XSAgQm5SZXMgICBUaGUgcmVzdWx0IG9mIChCbkEgXiBCblApICUgQm5NLg0K Pj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBPbiBzdWNjZXNzLg0KPj4g KyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBJbiBjYXNlIG9mIGludGVybmFsIGFsbG9j YXRpb24gZmFpbHVyZXMuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJPUiAgIE90aGVy d2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJQVBJDQo+PiArQmlnTnVtRXhw TW9kICgNCj4+ICsgIElOIFZPSUQgICAqQm5BLA0KPj4gKyAgSU4gVk9JRCAgICpCblAsDQo+PiAr ICBJTiBWT0lEICAgKkJuTSwNCj4+ICsgIE9VVCBWT0lEICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7 DQo+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ29tcHV0ZSBCbkEgaW52ZXJzZSBtb2R1bG8gQm5N Lg0KPj4gKyAgUGxlYXNlIG5vdGUsIGFsbCAib3V0IiBCaWcgbnVtYmVyIGFyZ3VtZW50cyBzaG91 bGQgYmUgcHJvcGVybHkgDQo+PiAraW5pdGlhbGl6ZWQNCj4+ICsgIGJ5IGNhbGxpbmcgdG8gQmln TnVtSW5pdCgpIG9yIEJpZ051bUZyb21CaW4oKSBmdW5jdGlvbnMuDQo+PiArDQo+PiArICBAcGFy YW1baW5dICAgQm5BICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW2luXSAgIEJuTSAgICAg QmlnIG51bWJlciAobW9kdWxvKS4NCj4+ICsgIEBwYXJhbVtvdXRdICBCblJlcyAgIFRoZSByZXN1 bHQsIHN1Y2ggdGhhdCAoQm5BICogQm5SZXMpICUgQm5NID09IDEuDQo+PiArDQo+PiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTIEluIGNhc2Ugb2YgaW50ZXJuYWwgYWxsb2NhdGlvbiBmYWlsdXJlcy4N Cj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNlLg0KPj4gKyoqLw0K Pj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1JbnZlcnNlTW9kICgNCj4+ICsg IElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5NLA0KPj4gKyAg T1VUIFZPSUQgICAgICAgKkJuUmVzDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxT RSk7DQo+PiArICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPj4gK30NCj4+ICsNCj4+ICsvKioN Cj4+ICsgIERpdmlkZSB0d28gQmlnIE51bWJlcnMuDQo+PiArICBQbGVhc2Ugbm90ZSwgYWxsICJv dXQiIEJpZyBudW1iZXIgYXJndW1lbnRzIHNob3VsZCBiZSBwcm9wZXJseSANCj4+ICtpbml0aWFs aXplZA0KPj4gKyAgYnkgY2FsbGluZyB0byBCaWdOdW1Jbml0KCkgb3IgQmlnTnVtRnJvbUJpbigp IGZ1bmN0aW9ucy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAgIEJpZyBudW1iZXIu DQo+PiArICBAcGFyYW1baW5dICAgQm5NICAgICBCaWcgbnVtYmVyIChtb2R1bG8pLg0KPj4gKyAg QHBhcmFtW291dF0gIEJuUmVzICAgVGhlIHJlc3VsdCwgc3VjaCB0aGF0IEJuQSAvIEJuQi4NCj4+ ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgT24gc3VjY2Vzcy4NCj4+ICsg IEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgSW4gY2FzZSBvZiBpbnRlcm5hbCBhbGxvY2F0 aW9uIGZhaWx1cmVzLg0KPj4gKyAgQHJldHZhbCBFRklfUFJPVE9DT0xfRVJST1IgICBPdGhlcndp c2UuDQo+PiArKiovDQo+PiArRUZJX1NUQVRVUw0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bURpdiAo DQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5BLA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuTSwN Cj4+ICsgIE9VVCBWT0lEICAgICAgICpCblJlcw0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICt9DQo+PiArDQo+ PiArLyoqDQo+PiArICBNdWx0aXBseSB0d28gQmlnIE51bWJlcnMgbW9kdWxvIEJuTS4NCj4+ICsg IFBsZWFzZSBub3RlLCBhbGwgIm91dCIgQmlnIG51bWJlciBhcmd1bWVudHMgc2hvdWxkIGJlIHBy b3Blcmx5IA0KPj4gK2luaXRpYWxpemVkDQo+PiArICBieSBjYWxsaW5nIHRvIEJpZ051bUluaXQo KSBvciBCaWdOdW1Gcm9tQmluKCkgZnVuY3Rpb25zLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAg IEJuQSAgICAgQmlnIG51bWJlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBCbkIgICAgIEJpZyBudW1i ZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5NICAgICBCaWcgbnVtYmVyIChtb2R1bG8pLg0KPj4g KyAgQHBhcmFtW291dF0gIEJuUmVzICAgVGhlIHJlc3VsdCwgc3VjaCB0aGF0IChCbkEgKiBCbkIp ICUgQm5NLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBPbiBzdWNj ZXNzLg0KPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBJbiBjYXNlIG9mIGludGVy bmFsIGFsbG9jYXRpb24gZmFpbHVyZXMuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJP UiAgIE90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJQVBJDQo+PiAr QmlnTnVtTXVsTW9kICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJTiBDT05T VCBWT0lEICAqQm5CLA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuTSwNCj4+ICsgIE9VVCBWT0lE ICAgICAgICpCblJlcw0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4g KyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBD b21wYXJlIHR3byBCaWcgTnVtYmVycy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAg IEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5CICAgICBCaWcgbnVtYmVyLg0KPj4g Kw0KPj4gKyAgQHJldHZhbCAwICAgICAgICAgIEJuQSA9PSBCbkIuDQo+PiArICBAcmV0dmFsIDEg ICAgICAgICAgQm5BID4gQm5CLg0KPj4gKyAgQHJldHZhbCAtMSAgICAgICAgIEJuQSA8IEJuQi4N Cj4+ICsqKi8NCj4+ICtJTlRODQo+PiArRUZJQVBJDQo+PiArQmlnTnVtQ21wICgNCj4+ICsgIElO IENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5CDQo+PiArICApDQo+ PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gMDsNCj4+ICt9DQo+PiAr DQo+PiArLyoqDQo+PiArICBHZXQgbnVtYmVyIG9mIGJpdHMgaW4gQm4uDQo+PiArDQo+PiArICBA cGFyYW1baW5dICAgQm4gICAgIEJpZyBudW1iZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIE51bWJl ciBvZiBiaXRzLg0KPj4gKyoqLw0KPj4gK1VJTlRODQo+PiArRUZJQVBJDQo+PiArQmlnTnVtQml0 cyAoDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm4NCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NF UlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsg IEdldCBudW1iZXIgb2YgYnl0ZXMgaW4gQm4uDQo+PiArDQo+PiArICBAcGFyYW1baW5dICAgQm4g ICAgIEJpZyBudW1iZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcy4NCj4+ ICsqKi8NCj4+ICtVSU5UTg0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bUJ5dGVzICgNCj4+ICsgIElO IENPTlNUIFZPSUQgICpCbg0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0K Pj4gKyAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ2hlY2tzIGlmIEJp ZyBOdW1iZXIgZXF1YWxzIHRvIHRoZSBnaXZlbiBOdW0uDQo+PiArDQo+PiArICBAcGFyYW1baW5d ICAgQm4gICAgIEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgTnVtICAgIE51bWJlci4N Cj4+ICsNCj4+ICsgIEByZXR2YWwgVFJVRSAgIGlmZiBCbiA9PSBOdW0uDQo+PiArICBAcmV0dmFs IEZBTFNFICBvdGhlcndpc2UuDQo+PiArKiovDQo+PiArQk9PTEVBTg0KPj4gK0VGSUFQSQ0KPj4g K0JpZ051bUlzV29yZCAoDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm4sDQo+PiArICBJTiBVSU5U TiAgICAgICBOdW0NCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsg IHJldHVybiBGQUxTRTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBDaGVja3MgaWYgQmln IE51bWJlciBpcyBvZGQuDQo+PiArDQo+PiArICBAcGFyYW1baW5dICAgQm4gICAgIEJpZyBudW1i ZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIFRSVUUgICBCbiBpcyBvZGQgKEJuICUgMiA9PSAxKS4N Cj4+ICsgIEByZXR2YWwgRkFMU0UgIG90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtCT09MRUFODQo+ PiArRUZJQVBJDQo+PiArQmlnTnVtSXNPZGQgKA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuDQo+ PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gRkFMU0U7 DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ29weSBCaWcgbnVtYmVyLg0KPj4gKw0KPj4g KyAgQHBhcmFtW291dF0gIEJuRHN0ICAgICBEZXN0aW5hdGlvbi4NCj4+ICsgIEBwYXJhbVtpbl0g ICBCblNyYyAgICAgU291cmNlLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBCbkRzdCBvbiBzdWNjZXNz Lg0KPj4gKyAgQHJldHZhbCBOVUxMIG90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtWT0lEICoNCj4+ ICtFRklBUEkNCj4+ICtCaWdOdW1Db3B5ICgNCj4+ICsgIE9VVCBWT0lEICAgICAgICpCbkRzdCwN Cj4+ICsgIElOIENPTlNUIFZPSUQgICpCblNyYw0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4g KyAgR2V0IGNvbnN0YW50IEJpZyBudW1iZXIgd2l0aCB2YWx1ZSBvZiAiMSIuDQo+PiArICBUaGlz IG1heSBiZSB1c2VkIHRvIHNhdmUgZXhwZW5zaXZlIGFsbG9jYXRpb25zLg0KPj4gKw0KPj4gKyAg QHJldHZhbCBCaWcgTnVtYmVyIHdpdGggdmFsdWUgb2YgMS4NCj4+ICsqKi8NCj4+ICtDT05TVCBW T0lEICoNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1WYWx1ZU9uZSAoDQo+PiArICBWT0lEDQo+PiAr ICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gTlVMTDsNCj4+ ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBTaGlmdCByaWdodCBCaWcgTnVtYmVyLg0KPj4gKyAg UGxlYXNlIG5vdGUsIGFsbCAib3V0IiBCaWcgbnVtYmVyIGFyZ3VtZW50cyBzaG91bGQgYmUgcHJv cGVybHkgDQo+PiAraW5pdGlhbGl6ZWQNCj4+ICsgIGJ5IGNhbGxpbmcgdG8gQmlnTnVtSW5pdCgp IG9yIEJpZ051bUZyb21CaW4oKSBmdW5jdGlvbnMuDQo+PiArDQo+PiArICBAcGFyYW1baW5dICAg Qm4gICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW2luXSAgIG4gICAgICAgTnVtYmVyIG9m IGJpdHMgdG8gc2hpZnQuDQo+PiArICBAcGFyYW1bb3V0XSAgQm5SZXMgICBUaGUgcmVzdWx0Lg0K Pj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBPbiBzdWNjZXNzLg0KPj4g KyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBJbiBjYXNlIG9mIGludGVybmFsIGFsbG9j YXRpb24gZmFpbHVyZXMuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJPUiAgIE90aGVy d2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJQVBJDQo+PiArQmlnTnVtUlNo aWZ0ICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbiwNCj4+ICsgIElOIFVJTlROICAgICAgIG4s DQo+PiArICBPVVQgVk9JRCAgICAgICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NF UlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiArfQ0KPj4gKw0K Pj4gKy8qKg0KPj4gKyAgTWFyayBCaWcgTnVtYmVyIGZvciBjb25zdGFudCB0aW1lIGNvbXB1dGF0 aW9ucy4NCj4+ICsgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IGNv bnN0YW50IHRpbWUgDQo+PiArY29tcHV0YXRpb25zIGFyZQ0KPj4gKyAgcGVyZm9ybWVkIG9uIHRo ZSBnaXZlbiBCaWcgbnVtYmVyLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAgIEJuICAgICBCaWcg bnVtYmVyLg0KPj4gKyoqLw0KPj4gK1ZPSUQNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Db25zdHRp bWUgKA0KPj4gKyAgSU4gVk9JRCAgKkJuDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChG QUxTRSk7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ2FsY3VsYXRlIHNxdWFyZSBtb2R1 bG8uDQo+PiArICBQbGVhc2Ugbm90ZSwgYWxsICJvdXQiIEJpZyBudW1iZXIgYXJndW1lbnRzIHNo b3VsZCBiZSBwcm9wZXJseSANCj4+ICtpbml0aWFsaXplZA0KPj4gKyAgYnkgY2FsbGluZyB0byBC aWdOdW1Jbml0KCkgb3IgQmlnTnVtRnJvbUJpbigpIGZ1bmN0aW9ucy4NCj4+ICsNCj4+ICsgIEBw YXJhbVtpbl0gICBCbkEgICAgIEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5NICAg ICBCaWcgbnVtYmVyIChtb2R1bG8pLg0KPj4gKyAgQHBhcmFtW291dF0gIEJuUmVzICAgVGhlIHJl c3VsdCwgc3VjaCB0aGF0IChCbkEgXiAyKSAlIEJuTS4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgT24gc3VjY2Vzcy4NCj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgSW4gY2FzZSBvZiBpbnRlcm5hbCBhbGxvY2F0aW9uIGZhaWx1cmVzLg0KPj4gKyAg QHJldHZhbCBFRklfUFJPVE9DT0xfRVJST1IgICBPdGhlcndpc2UuDQo+PiArKiovDQo+PiArRUZJ X1NUQVRVUw0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bVNxck1vZCAoDQo+PiArICBJTiBDT05TVCBW T0lEICAqQm5BLA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuTSwNCj4+ICsgIE9VVCBWT0lEICAg ICAgICpCblJlcw0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAg cmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBDcmVh dGUgbmV3IEJpZyBOdW1iZXIgY29tcHV0YXRpb24gY29udGV4dC4gVGhpcyBpcyBhbiBvcGFxdWUg DQo+PiArc3RydWN0dXJlDQo+PiArICB3aGljaCBzaG91bGQgYmUgcGFzc2VkIHRvIGFueSBmdW5j dGlvbiB0aGF0IHJlcXVpcmVzIGl0LiBUaGUgQk4gDQo+PiArY29udGV4dCBpcw0KPj4gKyAgbmVl ZGVkIHRvIG9wdGltaXplIGNhbGN1bGF0aW9ucyBhbmQgZXhwZW5zaXZlIGFsbG9jYXRpb25zLg0K Pj4gKw0KPj4gKyAgQHJldHZhbCBCaWcgTnVtYmVyIGNvbnRleHQgc3RydWN0IG9yIE5VTEwgb24g ZmFpbHVyZS4NCj4+ICsqKi8NCj4+ICtWT0lEICoNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1OZXdD b250ZXh0ICgNCj4+ICsgIFZPSUQNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNF KTsNCj4+ICsgIHJldHVybiBOVUxMOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgIEZyZWUg QmlnIE51bWJlciBjb250ZXh0IHRoYXQgd2FzIGFsbG9jYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRl eHQoKS4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkN0eCAgICAgQmlnIG51bWJlciBjb250 ZXh0IHRvIGZyZWUuDQo+PiArKiovDQo+PiArVk9JRA0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bUNv bnRleHRGcmVlICgNCj4+ICsgIElOIFZPSUQgICpCbkN0eA0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsg IEFTU0VSVCAoRkFMU0UpOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgIFNldCBCaWcgTnVt YmVyIHRvIGEgZ2l2ZW4gdmFsdWUuDQo+PiArDQo+PiArICBAcGFyYW1baW5dICAgQm4gICAgIEJp ZyBudW1iZXIgdG8gc2V0Lg0KPj4gKyAgQHBhcmFtW2luXSAgIFZhbCAgICBWYWx1ZSB0byBzZXQu DQo+PiArKiovDQo+PiArRUZJX1NUQVRVUw0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bVNldFVpbnQg KA0KPj4gKyAgSU4gVk9JRCAgICpCbiwNCj4+ICsgIElOIFVJTlROICBWYWwNCj4+ICsgICkNCj4+ ICt7DQo+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7 DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQWRkIHR3byBCaWcgTnVtYmVycyBtb2R1bG8g Qm5NLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAgIEJuQSAgICAgICBCaWcgbnVtYmVyLg0KPj4g KyAgQHBhcmFtW2luXSAgIEJuQiAgICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW2luXSAg IEJuTSAgICAgICBCaWcgbnVtYmVyIChtb2R1bG8pLg0KPj4gKyAgQHBhcmFtW291dF0gIEJuUmVz ICAgICBUaGUgcmVzdWx0LCBzdWNoIHRoYXQgKEJuQSArIEJuQikgJSBCbk0uDQo+PiArDQo+PiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBAcmV0dmFs IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEluIGNhc2Ugb2YgaW50ZXJuYWwgYWxsb2NhdGlvbiBmYWls dXJlcy4NCj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNlLg0KPj4g KyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1BZGRNb2QgKA0KPj4g KyAgSU4gQ09OU1QgVk9JRCAgKkJuQSwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkIsDQo+PiAr ICBJTiBDT05TVCBWT0lEICAqQm5NLA0KPj4gKyAgT1VUIFZPSUQgICAgICAgKkJuUmVzDQo+PiAr ICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gRUZJX1VOU1VQ UE9SVEVEOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvUGVpQ3J5cHRMaWIuaW5mIA0KPj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUGVpQ3J5cHRMaWIuaW5mDQo+PiBpbmRleCA3NWQ4N2FmYmRjMDMuLmQwODBlNjY1YzIxOCAx MDA2NDQNCj4+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExp Yi5pbmYNCj4+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExp Yi5pbmYNCj4+IEBAIC01OSw3ICs1OSw3IEBADQo+PiAgUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5j DQo+PiAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+PiAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4+IC0g IEJuL0NyeXB0Qm4uYw0KPj4gKyAgQm4vQ3J5cHRCbk51bGwuYw0KPj4gDQo+PiAgU3lzQ2FsbC9D cnRXcmFwcGVyLmMNCj4+ICBTeXNDYWxsL0NvbnN0YW50VGltZUNsb2NrLmMNCj4+IGRpZmYgLS1n aXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mIA0KPj4g Yi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+PiBpbmRl eCA0MjBjZWY4OGVmYjEuLjhhM2ZlYzliMDc2YyAxMDA2NDQNCj4+IC0tLSBhL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4+ICsrKyBiL0NyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4+IEBAIC01Niw3ICs1Niw3IEBA DQo+PiAgUGsvQ3J5cHRSc2FQc3MuYw0KPj4gIFBrL0NyeXB0UnNhUHNzU2lnbk51bGwuYw0KPj4g IFBlbS9DcnlwdFBlbS5jDQo+PiAtICBCbi9DcnlwdEJuLmMNCj4+ICsgIEJuL0NyeXB0Qm5OdWxs LmMNCj4+ICBTeXNDYWxsL0NydFdyYXBwZXIuYw0KPj4gIFN5c0NhbGwvQ29uc3RhbnRUaW1lQ2xv Y2suYw0KPj4gIFN5c0NhbGwvQmFzZU1lbUFsbG9jYXRpb24uYw0KPj4gZGlmZiAtLWdpdCBhL0Ny eXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYgDQo+ PiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5p bmYNCj4+IGluZGV4IGZhZjk1OTgyN2I5MC4uMWZiNGQ1YzU0ZDRmIDEwMDY0NA0KPj4gLS0tIGEv Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0K Pj4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJO dWxsLmluZg0KPj4gQEAgLTUyLDYgKzUyLDcgQEANCj4+ICBSYW5kL0NyeXB0UmFuZE51bGwuYw0K Pj4gIFBrL0NyeXB0UnNhUHNzTnVsbC5jDQo+PiAgUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5jDQo+ PiArICBCbi9DcnlwdEJuTnVsbC5jDQo+PiANCj4+IFtQYWNrYWdlc10NCj4+ICBNZGVQa2cvTWRl UGtnLmRlYw0KPj4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51 bGwvQm4vQ3J5cHRCbk51bGwuYyANCj4+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli TnVsbC9Cbi9DcnlwdEJuTnVsbC5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXgg MDAwMDAwMDAwMDAwLi45ZjIyMGJhNDEwNTgNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL0Ny eXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwvQm4vQ3J5cHRCbk51bGwuYw0KPj4gQEAg LTAsMCArMSw1MjUgQEANCj4+ICsvKiogQGZpbGUNCj4+ICsgIEJpZyBudW1iZXIgQVBJIGltcGxl bWVudGF0aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4+ICsNCj4+ICsgIENvcHlyaWdodCAoYykgMjAy MiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4+ICsNCj4+ICsqKi8N Cj4+ICsNCj4+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlQ3J5cHRMaWIuaD4NCj4+ICsjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQWxsb2NhdGUgbmV3 IEJpZyBOdW1iZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIE5ldyBCaWdOdW0gb3BhcXVlIHN0cnVj dHVyZSBvciBOVUxMIG9uIGZhaWx1cmUuDQo+PiArKiovDQo+PiArVk9JRCAqDQo+PiArRUZJQVBJ DQo+PiArQmlnTnVtSW5pdCAoDQo+PiArICBWT0lEDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNT RVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gTlVMTDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+ PiArICBBbGxvY2F0ZSBuZXcgQmlnIE51bWJlciBhbmQgYXNzaWduIHRoZSBwcm92aWRlZCB2YWx1 ZSB0byBpdC4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCdWYgICAgQmlnIGVuZGlhbiBlbmNv ZGVkIGJ1ZmZlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBMZW4gICAgQnVmZmVyIGxlbmd0aC4NCj4+ ICsNCj4+ICsgIEByZXR2YWwgTmV3IEJpZ051bSBvcGFxdWUgc3RydWN0dXJlIG9yIE5VTEwgb24g ZmFpbHVyZS4NCj4+ICsqKi8NCj4+ICtWT0lEICoNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Gcm9t QmluICgNCj4+ICsgIElOIENPTlNUIFVJTlQ4ICAqQnVmLA0KPj4gKyAgSU4gVUlOVE4gICAgICAg IExlbg0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJu IE5VTEw7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ29udmVydCB0aGUgYWJzb2x1dGUg dmFsdWUgb2YgQm4gaW50byBiaWctZW5kaWFuIGZvcm0gYW5kIHN0b3JlIGl0IGF0IEJ1Zi4NCj4+ ICsgIFRoZSBCdWYgYXJyYXkgc2hvdWxkIGhhdmUgYXQgbGVhc3QgQmlnTnVtQnl0ZXMoKSBpbiBp dC4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbiAgICAgQmlnIG51bWJlciB0byBjb252ZXJ0 Lg0KPj4gKyAgQHBhcmFtW291dF0gIEJ1ZiAgICBPdXRwdXQgYnVmZmVyLg0KPj4gKw0KPj4gKyAg QHJldHZhbCBUaGUgbGVuZ3RoIG9mIHRoZSBiaWctZW5kaWFuIG51bWJlciBwbGFjZWQgYXQgQnVm IG9yIC0xIG9uIGVycm9yLg0KPj4gKyoqLw0KPj4gK0lOVE4NCj4+ICtFRklBUEkNCj4+ICtCaWdO dW1Ub0JpbiAoDQo+PiArICBJTiBWT0lEICAgICpCbiwNCj4+ICsgIE9VVCBVSU5UOCAgKkJ1Zg0K Pj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIC0xOw0K Pj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgIEZyZWUgdGhlIEJpZyBOdW1iZXIuDQo+PiArDQo+ PiArICBAcGFyYW1baW5dICAgQm4gICAgICBCaWcgbnVtYmVyIHRvIGZyZWUuDQo+PiArICBAcGFy YW1baW5dICAgQ2xlYXIgICBUUlVFIGlmIHRoZSBidWZmZXIgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ PiArKiovDQo+PiArVk9JRA0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bUZyZWUgKA0KPj4gKyAgSU4g Vk9JRCAgICAgKkJuLA0KPj4gKyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4+ICsgICkNCj4+ICt7DQo+ PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBDYWxjdWxh dGUgdGhlIHN1bSBvZiB0d28gQmlnIE51bWJlcnMuDQo+PiArICBQbGVhc2Ugbm90ZSwgYWxsICJv dXQiIEJpZyBudW1iZXIgYXJndW1lbnRzIHNob3VsZCBiZSBwcm9wZXJseSANCj4+ICtpbml0aWFs aXplZA0KPj4gKyAgYnkgY2FsbGluZyB0byBCaWdOdW1Jbml0KCkgb3IgQmlnTnVtRnJvbUJpbigp IGZ1bmN0aW9ucy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAgIEJpZyBudW1iZXIu DQo+PiArICBAcGFyYW1baW5dICAgQm5CICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW291 dF0gIEJuUmVzICAgVGhlIHJlc3VsdCBvZiBCbkEgKyBCbkIuDQo+PiArDQo+PiArICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9U T0NPTF9FUlJPUiAgIE90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJ QVBJDQo+PiArQmlnTnVtQWRkICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJ TiBDT05TVCBWT0lEICAqQm5CLA0KPj4gKyAgT1VUIFZPSUQgICAgICAgKkJuUmVzDQo+PiArICAp DQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gRUZJX1VOU1VQUE9S VEVEOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgIFN1YnRyYWN0IHR3byBCaWcgTnVtYmVy cy4NCj4+ICsgIFBsZWFzZSBub3RlLCBhbGwgIm91dCIgQmlnIG51bWJlciBhcmd1bWVudHMgc2hv dWxkIGJlIHByb3Blcmx5IA0KPj4gK2luaXRpYWxpemVkDQo+PiArICBieSBjYWxsaW5nIHRvIEJp Z051bUluaXQoKSBvciBCaWdOdW1Gcm9tQmluKCkgZnVuY3Rpb25zLg0KPj4gKw0KPj4gKyAgQHBh cmFtW2luXSAgIEJuQSAgICAgQmlnIG51bWJlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBCbkIgICAg IEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1bb3V0XSAgQm5SZXMgICBUaGUgcmVzdWx0IG9mIEJu QSAtIEJuQi4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgT24gc3Vj Y2Vzcy4NCj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNlLg0KPj4g KyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1TdWIgKA0KPj4gKyAg SU4gQ09OU1QgVk9JRCAgKkJuQSwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkIsDQo+PiArICBP VVQgVk9JRCAgICAgICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNF KTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0K Pj4gKyAgQ2FsY3VsYXRlIHJlbWFpbmRlcjogQm5SZXMgPSBCbkEgJSBCbkIuDQo+PiArICBQbGVh c2Ugbm90ZSwgYWxsICJvdXQiIEJpZyBudW1iZXIgYXJndW1lbnRzIHNob3VsZCBiZSBwcm9wZXJs eSANCj4+ICtpbml0aWFsaXplZA0KPj4gKyAgYnkgY2FsbGluZyB0byBCaWdOdW1Jbml0KCkgb3Ig QmlnTnVtRnJvbUJpbigpIGZ1bmN0aW9ucy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEg ICAgIEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5CICAgICBCaWcgbnVtYmVyLg0K Pj4gKyAgQHBhcmFtW291dF0gIEJuUmVzICAgVGhlIHJlc3VsdCBvZiBCbkEgJSBCbkIuDQo+PiAr DQo+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEluIGNhc2Ugb2YgaW50ZXJuYWwgYWxsb2NhdGlv biBmYWlsdXJlcy4NCj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNl Lg0KPj4gKyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Nb2QgKA0K Pj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuQSwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkIsDQo+ PiArICBPVVQgVk9JRCAgICAgICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQg KEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiArfQ0KPj4gKw0KPj4g Ky8qKg0KPj4gKyAgQ29tcHV0ZSBCbkEgdG8gdGhlIEJuUC10aCBwb3dlciBtb2R1bG8gQm5NLg0K Pj4gKyAgUGxlYXNlIG5vdGUsIGFsbCAib3V0IiBCaWcgbnVtYmVyIGFyZ3VtZW50cyBzaG91bGQg YmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+PiArICBieSBjYWxsaW5nIHRvIEJpZ051bUluaXQo KSBvciBCaWdOdW1Gcm9tQmluKCkgZnVuY3Rpb25zLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAg IEJuQSAgICAgQmlnIG51bWJlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBCblAgICAgIEJpZyBudW1i ZXIgKHBvd2VyKS4NCj4+ICsgIEBwYXJhbVtpbl0gICBCbk0gICAgIEJpZyBudW1iZXIgKG1vZHVs bykuDQo+PiArICBAcGFyYW1bb3V0XSAgQm5SZXMgICBUaGUgcmVzdWx0IG9mIChCbkEgXiBCblAp ICUgQm5NLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBPbiBzdWNj ZXNzLg0KPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBJbiBjYXNlIG9mIGludGVy bmFsIGFsbG9jYXRpb24gZmFpbHVyZXMuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJP UiAgIE90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJQVBJDQo+PiAr QmlnTnVtRXhwTW9kICgNCj4+ICsgIElOIFZPSUQgICAqQm5BLA0KPj4gKyAgSU4gVk9JRCAgICpC blAsDQo+PiArICBJTiBWT0lEICAgKkJuTSwNCj4+ICsgIE9VVCBWT0lEICAqQm5SZXMNCj4+ICsg ICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQ T1JURUQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ29tcHV0ZSBCbkEgaW52ZXJzZSBt b2R1bG8gQm5NLg0KPj4gKyAgUGxlYXNlIG5vdGUsIGFsbCAib3V0IiBCaWcgbnVtYmVyIGFyZ3Vt ZW50cyBzaG91bGQgYmUgcHJvcGVybHkgDQo+PiAraW5pdGlhbGl6ZWQNCj4+ICsgIGJ5IGNhbGxp bmcgdG8gQmlnTnVtSW5pdCgpIG9yIEJpZ051bUZyb21CaW4oKSBmdW5jdGlvbnMuDQo+PiArDQo+ PiArICBAcGFyYW1baW5dICAgQm5BICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW2luXSAg IEJuTSAgICAgQmlnIG51bWJlciAobW9kdWxvKS4NCj4+ICsgIEBwYXJhbVtvdXRdICBCblJlcyAg IFRoZSByZXN1bHQsIHN1Y2ggdGhhdCAoQm5BICogQm5SZXMpICUgQm5NID09IDEuDQo+PiArDQo+ PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiArICBAcmV0 dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEluIGNhc2Ugb2YgaW50ZXJuYWwgYWxsb2NhdGlvbiBm YWlsdXJlcy4NCj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3aXNlLg0K Pj4gKyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1JbnZlcnNlTW9k ICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5N LA0KPj4gKyAgT1VUIFZPSUQgICAgICAgKkJuUmVzDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNT RVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPj4gK30NCj4+ICsN Cj4+ICsvKioNCj4+ICsgIERpdmlkZSB0d28gQmlnIE51bWJlcnMuDQo+PiArICBQbGVhc2Ugbm90 ZSwgYWxsICJvdXQiIEJpZyBudW1iZXIgYXJndW1lbnRzIHNob3VsZCBiZSBwcm9wZXJseSANCj4+ ICtpbml0aWFsaXplZA0KPj4gKyAgYnkgY2FsbGluZyB0byBCaWdOdW1Jbml0KCkgb3IgQmlnTnVt RnJvbUJpbigpIGZ1bmN0aW9ucy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAgIEJp ZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5NICAgICBCaWcgbnVtYmVyIChtb2R1bG8p Lg0KPj4gKyAgQHBhcmFtW291dF0gIEJuUmVzICAgVGhlIHJlc3VsdCwgc3VjaCB0aGF0IEJuQSAv IEJuQi4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgT24gc3VjY2Vz cy4NCj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgSW4gY2FzZSBvZiBpbnRlcm5h bCBhbGxvY2F0aW9uIGZhaWx1cmVzLg0KPj4gKyAgQHJldHZhbCBFRklfUFJPVE9DT0xfRVJST1Ig ICBPdGhlcndpc2UuDQo+PiArKiovDQo+PiArRUZJX1NUQVRVUw0KPj4gK0VGSUFQSQ0KPj4gK0Jp Z051bURpdiAoDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5BLA0KPj4gKyAgSU4gQ09OU1QgVk9J RCAgKkJuTSwNCj4+ICsgIE9VVCBWT0lEICAgICAgICpCblJlcw0KPj4gKyAgKQ0KPj4gK3sNCj4+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICt9 DQo+PiArDQo+PiArLyoqDQo+PiArICBNdWx0aXBseSB0d28gQmlnIE51bWJlcnMgbW9kdWxvIEJu TS4NCj4+ICsgIFBsZWFzZSBub3RlLCBhbGwgIm91dCIgQmlnIG51bWJlciBhcmd1bWVudHMgc2hv dWxkIGJlIHByb3Blcmx5IA0KPj4gK2luaXRpYWxpemVkDQo+PiArICBieSBjYWxsaW5nIHRvIEJp Z051bUluaXQoKSBvciBCaWdOdW1Gcm9tQmluKCkgZnVuY3Rpb25zLg0KPj4gKw0KPj4gKyAgQHBh cmFtW2luXSAgIEJuQSAgICAgQmlnIG51bWJlci4NCj4+ICsgIEBwYXJhbVtpbl0gICBCbkIgICAg IEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5NICAgICBCaWcgbnVtYmVyIChtb2R1 bG8pLg0KPj4gKyAgQHBhcmFtW291dF0gIEJuUmVzICAgVGhlIHJlc3VsdCwgc3VjaCB0aGF0IChC bkEgKiBCbkIpICUgQm5NLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICBPbiBzdWNjZXNzLg0KPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBJbiBjYXNl IG9mIGludGVybmFsIGFsbG9jYXRpb24gZmFpbHVyZXMuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9U T0NPTF9FUlJPUiAgIE90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJ QVBJDQo+PiArQmlnTnVtTXVsTW9kICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiAr ICBJTiBDT05TVCBWT0lEICAqQm5CLA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuTSwNCj4+ICsg IE9VVCBWT0lEICAgICAgICpCblJlcw0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPj4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICt9DQo+PiArDQo+PiArLyoq DQo+PiArICBDb21wYXJlIHR3byBCaWcgTnVtYmVycy4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0g ICBCbkEgICAgIEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgQm5CICAgICBCaWcgbnVt YmVyLg0KPj4gKw0KPj4gKyAgQHJldHZhbCAwICAgICAgICAgIEJuQSA9PSBCbkIuDQo+PiArICBA cmV0dmFsIDEgICAgICAgICAgQm5BID4gQm5CLg0KPj4gKyAgQHJldHZhbCAtMSAgICAgICAgIEJu QSA8IEJuQi4NCj4+ICsqKi8NCj4+ICtJTlRODQo+PiArRUZJQVBJDQo+PiArQmlnTnVtQ21wICgN Cj4+ICsgIElOIENPTlNUIFZPSUQgICpCbkEsDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5CDQo+ PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4gMDsNCj4+ ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBHZXQgbnVtYmVyIG9mIGJpdHMgaW4gQm4uDQo+PiAr DQo+PiArICBAcGFyYW1baW5dICAgQm4gICAgIEJpZyBudW1iZXIuDQo+PiArDQo+PiArICBAcmV0 dmFsIE51bWJlciBvZiBiaXRzLg0KPj4gKyoqLw0KPj4gK1VJTlRODQo+PiArRUZJQVBJDQo+PiAr QmlnTnVtQml0cyAoDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm4NCj4+ICsgICkNCj4+ICt7DQo+ PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsv KioNCj4+ICsgIEdldCBudW1iZXIgb2YgYnl0ZXMgaW4gQm4uDQo+PiArDQo+PiArICBAcGFyYW1b aW5dICAgQm4gICAgIEJpZyBudW1iZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIE51bWJlciBvZiBi eXRlcy4NCj4+ICsqKi8NCj4+ICtVSU5UTg0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bUJ5dGVzICgN Cj4+ICsgIElOIENPTlNUIFZPSUQgICpCbg0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAo RkFMU0UpOw0KPj4gKyAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ2hl Y2tzIGlmIEJpZyBOdW1iZXIgZXF1YWxzIHRvIHRoZSBnaXZlbiBOdW0uDQo+PiArDQo+PiArICBA cGFyYW1baW5dICAgQm4gICAgIEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5dICAgTnVtICAg IE51bWJlci4NCj4+ICsNCj4+ICsgIEByZXR2YWwgVFJVRSAgIGlmZiBCbiA9PSBOdW0uDQo+PiAr ICBAcmV0dmFsIEZBTFNFICBvdGhlcndpc2UuDQo+PiArKiovDQo+PiArQk9PTEVBTg0KPj4gK0VG SUFQSQ0KPj4gK0JpZ051bUlzV29yZCAoDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm4sDQo+PiAr ICBJTiBVSU5UTiAgICAgICBOdW0NCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNF KTsNCj4+ICsgIHJldHVybiBGQUxTRTsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBDaGVj a3MgaWYgQmlnIE51bWJlciBpcyBvZGQuDQo+PiArDQo+PiArICBAcGFyYW1baW5dICAgQm4gICAg IEJpZyBudW1iZXIuDQo+PiArDQo+PiArICBAcmV0dmFsIFRSVUUgICBCbiBpcyBvZGQgKEJuICUg MiA9PSAxKS4NCj4+ICsgIEByZXR2YWwgRkFMU0UgIG90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtC T09MRUFODQo+PiArRUZJQVBJDQo+PiArQmlnTnVtSXNPZGQgKA0KPj4gKyAgSU4gQ09OU1QgVk9J RCAgKkJuDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1 cm4gRkFMU0U7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ29weSBCaWcgbnVtYmVyLg0K Pj4gKw0KPj4gKyAgQHBhcmFtW291dF0gIEJuRHN0ICAgICBEZXN0aW5hdGlvbi4NCj4+ICsgIEBw YXJhbVtpbl0gICBCblNyYyAgICAgU291cmNlLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBCbkRzdCBv biBzdWNjZXNzLg0KPj4gKyAgQHJldHZhbCBOVUxMIG90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtW T0lEICoNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1Db3B5ICgNCj4+ICsgIE9VVCBWT0lEICAgICAg ICpCbkRzdCwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCblNyYw0KPj4gKyAgKQ0KPj4gK3sNCj4+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gKyAgcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4gKw0KPj4g Ky8qKg0KPj4gKyAgR2V0IGNvbnN0YW50IEJpZyBudW1iZXIgd2l0aCB2YWx1ZSBvZiAiMSIuDQo+ PiArICBUaGlzIG1heSBiZSB1c2VkIHRvIHNhdmUgZXhwZW5zaXZlIGFsbG9jYXRpb25zLg0KPj4g Kw0KPj4gKyAgQHJldHZhbCBCaWcgTnVtYmVyIHdpdGggdmFsdWUgb2YgMS4NCj4+ICsqKi8NCj4+ ICtDT05TVCBWT0lEICoNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1WYWx1ZU9uZSAoDQo+PiArICBW T0lEDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4g TlVMTDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+PiArICBTaGlmdCByaWdodCBCaWcgTnVtYmVy Lg0KPj4gKyAgUGxlYXNlIG5vdGUsIGFsbCAib3V0IiBCaWcgbnVtYmVyIGFyZ3VtZW50cyBzaG91 bGQgYmUgcHJvcGVybHkgDQo+PiAraW5pdGlhbGl6ZWQNCj4+ICsgIGJ5IGNhbGxpbmcgdG8gQmln TnVtSW5pdCgpIG9yIEJpZ051bUZyb21CaW4oKSBmdW5jdGlvbnMuDQo+PiArDQo+PiArICBAcGFy YW1baW5dICAgQm4gICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBhcmFtW2luXSAgIG4gICAgICAg TnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQuDQo+PiArICBAcGFyYW1bb3V0XSAgQm5SZXMgICBUaGUg cmVzdWx0Lg0KPj4gKw0KPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICBPbiBzdWNj ZXNzLg0KPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyBJbiBjYXNlIG9mIGludGVy bmFsIGFsbG9jYXRpb24gZmFpbHVyZXMuDQo+PiArICBAcmV0dmFsIEVGSV9QUk9UT0NPTF9FUlJP UiAgIE90aGVyd2lzZS4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVTDQo+PiArRUZJQVBJDQo+PiAr QmlnTnVtUlNoaWZ0ICgNCj4+ICsgIElOIENPTlNUIFZPSUQgICpCbiwNCj4+ICsgIElOIFVJTlRO ICAgICAgIG4sDQo+PiArICBPVVQgVk9JRCAgICAgICAqQm5SZXMNCj4+ICsgICkNCj4+ICt7DQo+ PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+PiAr fQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgTWFyayBCaWcgTnVtYmVyIGZvciBjb25zdGFudCB0aW1l IGNvbXB1dGF0aW9ucy4NCj4+ICsgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBiZWZv cmUgYW55IGNvbnN0YW50IHRpbWUgDQo+PiArY29tcHV0YXRpb25zIGFyZQ0KPj4gKyAgcGVyZm9y bWVkIG9uIHRoZSBnaXZlbiBCaWcgbnVtYmVyLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAgIEJu ICAgICBCaWcgbnVtYmVyLg0KPj4gKyoqLw0KPj4gK1ZPSUQNCj4+ICtFRklBUEkNCj4+ICtCaWdO dW1Db25zdHRpbWUgKA0KPj4gKyAgSU4gVk9JRCAgKkJuDQo+PiArICApDQo+PiArew0KPj4gKyAg QVNTRVJUIChGQUxTRSk7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQ2FsY3VsYXRlIHNx dWFyZSBtb2R1bG8uDQo+PiArICBQbGVhc2Ugbm90ZSwgYWxsICJvdXQiIEJpZyBudW1iZXIgYXJn dW1lbnRzIHNob3VsZCBiZSBwcm9wZXJseSANCj4+ICtpbml0aWFsaXplZA0KPj4gKyAgYnkgY2Fs bGluZyB0byBCaWdOdW1Jbml0KCkgb3IgQmlnTnVtRnJvbUJpbigpIGZ1bmN0aW9ucy4NCj4+ICsN Cj4+ICsgIEBwYXJhbVtpbl0gICBCbkEgICAgIEJpZyBudW1iZXIuDQo+PiArICBAcGFyYW1baW5d ICAgQm5NICAgICBCaWcgbnVtYmVyIChtb2R1bG8pLg0KPj4gKyAgQHBhcmFtW291dF0gIEJuUmVz ICAgVGhlIHJlc3VsdCwgc3VjaCB0aGF0IChCbkEgXiAyKSAlIEJuTS4NCj4+ICsNCj4+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgT24gc3VjY2Vzcy4NCj4+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgSW4gY2FzZSBvZiBpbnRlcm5hbCBhbGxvY2F0aW9uIGZhaWx1cmVz Lg0KPj4gKyAgQHJldHZhbCBFRklfUFJPVE9DT0xfRVJST1IgICBPdGhlcndpc2UuDQo+PiArKiov DQo+PiArRUZJX1NUQVRVUw0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051bVNxck1vZCAoDQo+PiArICBJ TiBDT05TVCBWT0lEICAqQm5BLA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuTSwNCj4+ICsgIE9V VCBWT0lEICAgICAgICpCblJlcw0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIEFTU0VSVCAoRkFMU0Up Ow0KPj4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+ICt9DQo+PiArDQo+PiArLyoqDQo+ PiArICBDcmVhdGUgbmV3IEJpZyBOdW1iZXIgY29tcHV0YXRpb24gY29udGV4dC4gVGhpcyBpcyBh biBvcGFxdWUgDQo+PiArc3RydWN0dXJlDQo+PiArICB3aGljaCBzaG91bGQgYmUgcGFzc2VkIHRv IGFueSBmdW5jdGlvbiB0aGF0IHJlcXVpcmVzIGl0LiBUaGUgQk4gDQo+PiArY29udGV4dCBpcw0K Pj4gKyAgbmVlZGVkIHRvIG9wdGltaXplIGNhbGN1bGF0aW9ucyBhbmQgZXhwZW5zaXZlIGFsbG9j YXRpb25zLg0KPj4gKw0KPj4gKyAgQHJldHZhbCBCaWcgTnVtYmVyIGNvbnRleHQgc3RydWN0IG9y IE5VTEwgb24gZmFpbHVyZS4NCj4+ICsqKi8NCj4+ICtWT0lEICoNCj4+ICtFRklBUEkNCj4+ICtC aWdOdW1OZXdDb250ZXh0ICgNCj4+ICsgIFZPSUQNCj4+ICsgICkNCj4+ICt7DQo+PiArICBBU1NF UlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBOVUxMOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ ICsgIEZyZWUgQmlnIE51bWJlciBjb250ZXh0IHRoYXQgd2FzIGFsbG9jYXRlZCB3aXRoIEJpZ051 bU5ld0NvbnRleHQoKS4NCj4+ICsNCj4+ICsgIEBwYXJhbVtpbl0gICBCbkN0eCAgICAgQmlnIG51 bWJlciBjb250ZXh0IHRvIGZyZWUuDQo+PiArKiovDQo+PiArVk9JRA0KPj4gK0VGSUFQSQ0KPj4g K0JpZ051bUNvbnRleHRGcmVlICgNCj4+ICsgIElOIFZPSUQgICpCbkN0eA0KPj4gKyAgKQ0KPj4g K3sNCj4+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPj4gK30NCj4+ICsNCj4+ICsvKioNCj4+ICsgIFNl dCBCaWcgTnVtYmVyIHRvIGEgZ2l2ZW4gdmFsdWUuDQo+PiArDQo+PiArICBAcGFyYW1baW5dICAg Qm4gICAgIEJpZyBudW1iZXIgdG8gc2V0Lg0KPj4gKyAgQHBhcmFtW2luXSAgIFZhbCAgICBWYWx1 ZSB0byBzZXQuDQo+PiArKiovDQo+PiArRUZJX1NUQVRVUw0KPj4gK0VGSUFQSQ0KPj4gK0JpZ051 bVNldFVpbnQgKA0KPj4gKyAgSU4gVk9JRCAgICpCbiwNCj4+ICsgIElOIFVJTlROICBWYWwNCj4+ ICsgICkNCj4+ICt7DQo+PiArICBBU1NFUlQgKEZBTFNFKTsNCj4+ICsgIHJldHVybiBFRklfVU5T VVBQT1JURUQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gKyAgQWRkIHR3byBCaWcgTnVtYmVy cyBtb2R1bG8gQm5NLg0KPj4gKw0KPj4gKyAgQHBhcmFtW2luXSAgIEJuQSAgICAgICBCaWcgbnVt YmVyLg0KPj4gKyAgQHBhcmFtW2luXSAgIEJuQiAgICAgICBCaWcgbnVtYmVyLg0KPj4gKyAgQHBh cmFtW2luXSAgIEJuTSAgICAgICBCaWcgbnVtYmVyIChtb2R1bG8pLg0KPj4gKyAgQHBhcmFtW291 dF0gIEJuUmVzICAgICBUaGUgcmVzdWx0LCBzdWNoIHRoYXQgKEJuQSArIEJuQikgJSBCbk0uDQo+ PiArDQo+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+PiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEluIGNhc2Ugb2YgaW50ZXJuYWwgYWxsb2Nh dGlvbiBmYWlsdXJlcy4NCj4+ICsgIEByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICAgT3RoZXJ3 aXNlLg0KPj4gKyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtFRklBUEkNCj4+ICtCaWdOdW1BZGRN b2QgKA0KPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuQSwNCj4+ICsgIElOIENPTlNUIFZPSUQgICpC bkIsDQo+PiArICBJTiBDT05TVCBWT0lEICAqQm5NLA0KPj4gKyAgT1VUIFZPSUQgICAgICAgKkJu UmVzDQo+PiArICApDQo+PiArew0KPj4gKyAgQVNTRVJUIChGQUxTRSk7DQo+PiArICByZXR1cm4g RUZJX1VOU1VQUE9SVEVEOw0KPj4gK30NCj4+IC0tDQo+PiAyLjMzLjAud2luZG93cy4yDQo+PiAN Cg==