From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.3838.1628568720965798092 for ; Mon, 09 Aug 2021 21:12:01 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=OrZiVzzJ; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: hao.a.wu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10070"; a="214560530" X-IronPort-AV: E=Sophos;i="5.84,309,1620716400"; d="scan'208";a="214560530" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Aug 2021 21:11:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,309,1620716400"; d="scan'208";a="483907048" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga008.fm.intel.com with ESMTP; 09 Aug 2021 21:11:58 -0700 Received: from orsmsx606.amr.corp.intel.com (10.22.229.19) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Mon, 9 Aug 2021 21:11:58 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Mon, 9 Aug 2021 21:11:58 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Mon, 9 Aug 2021 21:11:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CiLzdt8rJnaWX/n1eQFh9grIjvXBp4pieMtb7jkNAiChBOc4FQeGBa9pw0llFrZmivZD/UQAu3l9xUozSdUiqj8Nwssi/OQIcWSIuv2aXDbe+Si2yVUEMGhLMARye0wX71aA2OJvQj49ZQzBeEHuQL6LPrnzx/2FFjfLRLrQulMGSQSmpQ3YIgSxmvZ6rLD5qHvNEPPntwZrE7nyjXsKWIcPF1n8LiUS9Y3+QbM/bisJnSz5mVIRPG/+AE3TfxYgYWMA3kAirizWn0dDj8mdve03a9VWi6PmRH6qtM0JSLEKhm0lt81XtrtB02go7x/8uYoAubc3MP5bb3n4wCCLYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fhTsQG7sJ/7r6TLSNJiegOQ/MMNiKncqf8QqlxwQN/Y=; b=HJPIH1dHEE5QjWGqGoqkc56+lL6NKukU7dl/gBLg/Uis6mqJrq/FgAg3SwALPs+Uy7fkXxj5vQ4Mr07H1WF81lofCwfdBpF+wcmhLupkX9wjjQbBAu3LsWJLElqOq+0b78Wm2HQ3Lwpl/UrjWSF3h/trW5yrAKZ6xWj8G303nft7rc9ihsqIThcxAQtg0T5BC3Hz/rmqRaK9OusilTcksshtEZAuB20GWI/fkIMZ1Y5etDmJfWOG8kOtNWlI3lhsLL+6v7PbfgTf7v/irqo3tPkHM/uhgh8aGuqgi1cqYHgf+KoBkAEhHq4z9JVzZEFCCDP5a0Fl+7Niol5Z4isrUQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fhTsQG7sJ/7r6TLSNJiegOQ/MMNiKncqf8QqlxwQN/Y=; b=OrZiVzzJ9awqKbgLOzMwKyyNh4JvHGGtM734RIKpxUd8kkLf5DA39SRqaaVY6Kw1bKwstfvyh+NA3NktsT9unEcDG3wfgaYkromBDtBJKUhvaVsSF4N7auafAeS/bT4LucDyFabU3KyLwr5+b7Hw+MY4m7TxpnKfHfYnMn6Irq8= Received: from BN8PR11MB3666.namprd11.prod.outlook.com (2603:10b6:408:8c::19) by BN6PR1101MB2244.namprd11.prod.outlook.com (2603:10b6:405:52::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.20; Tue, 10 Aug 2021 04:11:51 +0000 Received: from BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::1d8:daf8:84de:1666]) by BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::1d8:daf8:84de:1666%3]) with mapi id 15.20.4394.023; Tue, 10 Aug 2021 04:11:51 +0000 From: "Wu, Hao A" To: "Kinney, Michael D" , "devel@edk2.groups.io" , "xiewenyi (A)" CC: "songdongkuang@huawei.com" , "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test Thread-Topic: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test Thread-Index: AQHXhFCY+A90Om5Y5UC1zTkAVbhwTqtZneIAgAXbYPCAA4zlgIAABA1wgAknzRA= Date: Tue, 10 Aug 2021 04:11:51 +0000 Message-ID: References: <1627545672-84944-1-git-send-email-xiewenyi2@huawei.com> <1627545672-84944-2-git-send-email-xiewenyi2@huawei.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fbbdb14f-2d1f-4be7-b7fd-08d95bb4fb38 x-ms-traffictypediagnostic: BN6PR1101MB2244: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:983; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bST5kJz+5QvN8i+DoHw7KOz3GXMNEMzCpQTCmx+qcNDV8tDrn5G8+4zGv58m/aNeIByA/ZzxtXLRUATeLtxmDn76ZmsKi7HueZZUGVKpi0sz6w9mnjubhcIV/LrHPDbzdLhQfKgnULe6W2QfHluY4TmHoEW9D4AKl1rywrAbHEQLcf8F7mgEqoNhnYgREpypZW7xgugVIH/yLtb7PCb20Zc/kx35W23/aLz0qZgK+sS8tuoPc7URaTSkrWbY+tmUGh9czsAT6UVLSij9yfhgg0h1ZPZNVC0HjESjhuxfZUqfGR94nesmvNMRvmcF33YqYLIfJGsO9gUGKCtiZmL2QJVNORzX+nsWCRv/74Otl8ImZaUPT2Sd3yUiDzelSQjWcxpVTJ9qIAGi7WRYqJCPqVuWBbfWplvNb99aSbfiIWzZGdko3EHQY+VQMh/RnRBbg/hk3iarAzEilIwMayxmuq9m+Ach73bvFPEyqlxeFsvjOyU5yK1G9pwtHKLCtQah02GbZIxZSMgC+ZjFD60aU/BR1h76sd21s5kn22BKukSYIYN9tG6i6Zj6/DDoAUSBT1pM+YmIw4XGBvIlzuIG3aDZGGhLHBw9xa3tn9gVkP1FH3MLp0EtQgi3Cizc+HNgEs2/PpcIFprl58sBSt6tiEprR4Lat50i9RFoC4IZ+WWW1pnoFjlinP5P2MwqPgpcneiXyaaTx9lhYjYZKBoezIQvNCeVTKDGPCAX30gakPM5W4s5mSUew3f/L6i5FcTkVd8EGFObnPEloyOld5Njd/KFvdIFZo3hjajOMmtiFz+LlJC/b2LwP/oJU1t+ogAA2R4cSOtUKLCHdbbGO/3d0Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR11MB3666.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(136003)(39860400002)(346002)(396003)(376002)(966005)(478600001)(316002)(8936002)(110136005)(45080400002)(8676002)(71200400001)(9686003)(66946007)(76116006)(83380400001)(86362001)(33656002)(54906003)(66476007)(66556008)(26005)(4326008)(6506007)(53546011)(2906002)(55016002)(7696005)(52536014)(122000001)(38100700002)(64756008)(66446008)(107886003)(186003)(5660300002)(30864003)(38070700005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RHM2MHEvK3YxczFLWFR3c1pHZHlDQ09Tb1Z4WHpGOUpMaG5nYzVHdjRsYjJJ?= =?utf-8?B?RU56dTdKbllaTE95djdEOTVpYjBzT0JEVHVhbGtQd3U3NEFISlJIOCtHa0ww?= =?utf-8?B?L1NUaGlldVhFc2VpenR5NnBsMVZ6SjM1U3hibnp2Yi8wT2dEUUZqZ2NIV3Zl?= =?utf-8?B?Z2wrTXFlcmZnbzNvN3hqN1pzdlZsbHkzWG5QTnlMN0JqUE5vaW02ZlhoUU5I?= =?utf-8?B?NXlrR0FLR3BraUdQN001ZUhwTUNiZVRTRXQxd0hSQldEQ3pHZU4wWkpVRG03?= =?utf-8?B?d3U2Ly92NG1vUkdBelJCTTIycUU4NHNxRjRMVlMwcEc2Y1BzUDhjcCs3Z3Mx?= =?utf-8?B?TGtPb3IvVnZxY1pUOUtJbDh0NHJ5N3VGM2pGMG5TejZxeEJEUTd0bTEralAy?= =?utf-8?B?elJ6Mjd5N0V1VGx2dUpyWkc2enl6WnV6SXVWNklMZzFPS0lvVjZ6dUxjajhC?= =?utf-8?B?UWlWMGhyRHVEYmZHR05IZmNTV2k0aTQrWmJHaWNUWUJiTXYvOTJUc2llRDBn?= =?utf-8?B?MjZaSUxGMFJUQkQ3NExBTUwzT2VzQVJDL1pxSjZjcU1vMDd6MnYzSTErNzM3?= =?utf-8?B?VnZvVy9SYk0zNXFqcDVRZGRhZjNER01PMUZ0TU91YWtwaUhud3UvTW1FK29a?= =?utf-8?B?VEh1RzVHV3JHTDV5bXNKekhEaVp3MWtFYmlaTG1tUkoxVGNQOVMrOUw4YmZN?= =?utf-8?B?YVc3MEVhL0ovdDdzdEpXa3Fmc0l2WG5tVW8wK2hCa3ZzeERmTThSUEFXMnh1?= =?utf-8?B?OXFTcGh4NHE0RGovQjdYV09LSGVlTTJzK2IxNnBCNG9ucktyKzdyWHE2bmtD?= =?utf-8?B?QXhKTkNhTjRlR2xpQWgvMnNRRFM3S3VaU0lxNGVzNmI2WkpLL2ZwMUdMclUw?= =?utf-8?B?RkxzeFNPZzg4UmdPMWwrZDF0UVJjRHkxWGM5ZDNkN2RiY01VRDdMcWc0Q1h1?= =?utf-8?B?dUZaUlRNU0xONERzZ053ekZ0bzJMNUNlemF3RnFZUFpDZ2s2RkxwSHI4dGFj?= =?utf-8?B?bWdZelFRVXBpN21EVmE2SWZQQ1lRMmF2b2tTbC9UdG5xSVdCM01WalFpWWZ2?= =?utf-8?B?SzVNL0ZJR0x1RjQ1RG1YWGhINUlXQjFqdHNzNlRTdWZkejB6cFVFWFI1bFdx?= =?utf-8?B?SjhYVGZSN0hGQ3MxZlZRYWE0OGxTaUtKcUxUWTNqK3plTWxvdzdNNXhieUlV?= =?utf-8?B?WE1aUDZpUnVGZjc1NDFTWjV4TkM0U0hDbVlWcFRaSUg2cmlHenNSL3c4aUhl?= =?utf-8?B?S3FmVTQzQ3MzZDRXZTBsS2dHTXh0dUJxYjZEdkhxaGFIeTVFdXJtYlB3QUxj?= =?utf-8?B?Z2RXQWx0d0s0cUJ6UC9zOC84SW93blYrT2svclg5YTVuNGwwcE1JTG02YXBL?= =?utf-8?B?Zjlnc0Z1NFBVVTFTcW0vc0tuSjY2MGdveU85V05nZFd5Q3FiVjNNZ2xTMFpQ?= =?utf-8?B?R3FCVnBlQ3l2b1dHQ2ZHcGZuUTBwRWwrQzVaNGZoYlQ3VXBhZWt1dTRqdkhU?= =?utf-8?B?eWtOOTg3aDBHU3RmbGc1Y1Nzbkh6NjhWbEs3WU1JTXk1bVMwbjhBMThVamZz?= =?utf-8?B?bG9qUEI2dXFXYU9JNUhzeVZRUWYyQUgwUm8xNm9CeTNXN0RhUTBkVUJqNFFM?= =?utf-8?B?N2VFSEQ2emN4bzNROUNtTFBRUnhjZFJxbGRtVWV1elB3d2lKdm9vcWlGaUYv?= =?utf-8?B?NzhEYkIxVHdSeVllZHpiNU9aRFNORGV0L0IzcXI3M05oM3A5N3MvVnRRc3hO?= =?utf-8?Q?1132TS5QbxRkOy866nub5qGScUC8BmWkf63coxh?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3666.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbbdb14f-2d1f-4be7-b7fd-08d95bb4fb38 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Aug 2021 04:11:51.4986 (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: XAqR+Gvn+PqsghAEbfqvQgrYqNq4qENIhEG59ANXr+WKkc6rqMX0vUqaO8LROzIm8KHW/ocBDzjyG1WbiyVLvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1101MB2244 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U29ycnkgTWlrZSwNCg0KRG8geW91IGhhdmUgYWR2aWNlIG9uIGhvdyB0byBkZWFsIHdpdGggRUND IHJlcG9ydGluZyBmdW5jdGlvbiBuYW1pbmcgaXNzdWUgb24gdGhlICdtYWluJyBmdW5jdGlvbiBm b3IgdW5pdCB0ZXN0IGNhc2VzPw0KU28gZmFyLCBJIHRoaW5rIFdlbnlpIGhhcyB0cmllZCBmb2xs b3dpbmcgdGhlIHNhbWUgcGF0dGVybiBpbiBmaWxlIE1kZU1vZHVsZVBrZ1xVbml2ZXJzYWxcVmFy aWFibGVcUnVudGltZUR4ZVxSdW50aW1lRHhlVW5pdFRlc3RcVmFyaWFibGVMb2NrUmVxdWVzdFRv TG9ja1VuaXRUZXN0LmM6DQoNCi8vLw0KLy8vIEF2b2lkIEVDQyBlcnJvciBmb3IgZnVuY3Rpb24g bmFtZSB0aGF0IHN0YXJ0cyB3aXRoIGxvd2VyIGNhc2UgbGV0dGVyDQovLy8NCiNkZWZpbmUgTWFp biBtYWluDQoNCi8qKg0KICBTdGFuZGFyZCBQT1NJWCBDIGVudHJ5IHBvaW50IGZvciBob3N0IGJh c2VkIHVuaXQgdGVzdCBleGVjdXRpb24uDQoNCiAgQHBhcmFtW2luXSBBcmdjICBOdW1iZXIgb2Yg YXJndW1lbnRzDQogIEBwYXJhbVtpbl0gQXJndiAgQXJyYXkgb2YgcG9pbnRlcnMgdG8gYXJndW1l bnRzDQoNCiAgQHJldHZhbCAwICAgICAgU3VjY2Vzcw0KICBAcmV0dmFsIG90aGVyICBFcnJvcg0K KiovDQpJTlQzMg0KTWFpbiAoDQogIElOIElOVDMyICBBcmdjLA0KICBJTiBDSEFSOCAgKkFyZ3Zb XQ0KICApDQoNCkJ1dCBpdCBsb29rcyBsaWtlIHRoZSBFQ0MgY2hlY2tlciBpbiB0aGUgbWVyZ2Ug dGVzdCBpcyBzdGlsbCBjb21wbGFpbmluZy4NCg0KQmVzdCBSZWdhcmRzLA0KSGFvIFd1DQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8g PGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgV3UsIEhhbw0KPiBBDQo+IFNlbnQ6 IFdlZG5lc2RheSwgQXVndXN0IDQsIDIwMjEgNDoyNCBQTQ0KPiBUbzogeGlld2VueWkgKEEpIDx4 aWV3ZW55aTJAaHVhd2VpLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBzb25nZG9uZ2t1YW5n QGh1YXdlaS5jb207IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiBTdWJq ZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCBFREsyIHYyIDEvMV0NCj4gTWRlTW9kdWxlUGtn L1VlZmlTb3J0TGliOkFkZCBVZWZpU29ydExpYiB1bml0IHRlc3QNCj4gDQo+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiB4aWV3ZW55aSAoQSkgPHhpZXdlbnlpMkBodWF3 ZWkuY29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVndXN0IDQsIDIwMjEgNDowNSBQTQ0KPiA+ IFRvOiBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlv DQo+ID4gQ2M6IHNvbmdkb25na3VhbmdAaHVhd2VpLmNvbTsgV2FuZywgSmlhbiBKIDxqaWFuLmou d2FuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggRURL MiB2MiAxLzFdDQo+ID4gTWRlTW9kdWxlUGtnL1VlZmlTb3J0TGliOkFkZCBVZWZpU29ydExpYiB1 bml0IHRlc3QNCj4gPg0KPiA+DQo+ID4NCj4gPiBPbiAyMDIxLzgvMiA5OjU2LCBXdSwgSGFvIEEg d3JvdGU6DQo+ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+PiBGcm9tOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBX dSwNCj4gPiA+PiBIYW8gQQ0KPiA+ID4+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDI5LCAyMDIxIDQ6 MjYgUE0NCj4gPiA+PiBUbzogV2VueWkgWGllIDx4aWV3ZW55aTJAaHVhd2VpLmNvbT47IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBXYW5nLA0KPiA+ID4+IEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwu Y29tPg0KPiA+ID4+IENjOiBzb25nZG9uZ2t1YW5nQGh1YXdlaS5jb20NCj4gPiA+PiBTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCBFREsyIHYyIDEvMV0NCj4gPiA+PiBNZGVNb2R1bGVQ a2cvVWVmaVNvcnRMaWI6QWRkIFVlZmlTb3J0TGliIHVuaXQgdGVzdA0KPiA+ID4+DQo+ID4gPj4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPj4+IEZyb206IFdlbnlpIFhpZSA8eGll d2VueWkyQGh1YXdlaS5jb20+DQo+ID4gPj4+IFNlbnQ6IFRodXJzZGF5LCBKdWx5IDI5LCAyMDIx IDQ6MDEgUE0NCj4gPiA+Pj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBXYW5nLCBKaWFuIEog PGppYW4uai53YW5nQGludGVsLmNvbT47DQo+ID4gPj4+IFd1LCBIYW8gQSA8aGFvLmEud3VAaW50 ZWwuY29tPg0KPiA+ID4+PiBDYzogc29uZ2RvbmdrdWFuZ0BodWF3ZWkuY29tOyB4aWV3ZW55aTJA aHVhd2VpLmNvbQ0KPiA+ID4+PiBTdWJqZWN0OiBbUEFUQ0ggRURLMiB2MiAxLzFdIE1kZU1vZHVs ZVBrZy9VZWZpU29ydExpYjpBZGQNCj4gPiA+Pj4gVWVmaVNvcnRMaWIgdW5pdCB0ZXN0DQo+ID4g Pj4+DQo+ID4gPj4+IEFkZGluZyB0d28gdW5pdCB0ZXN0IGNhc2UgZm9yIFVlZmlTb3J0TGliLiBP bmUgaXMgYSB0ZXN0IG9uDQo+ID4gPj4+IHNvcnRpbmcgYW4gYXJyYXkgb2YNCj4gPiA+Pj4gVUlO VDMyIGJ5IHVzaW5nIFBlcmZvcm1RdWlja1NvcnQsIGFub3RoZXIgaXMgYSB0ZXN0IG9uIGNvbXBh cmluZw0KPiA+ID4+PiB0aGUgc2FtZSBidWZmZXIgYnkgdXNpbmcgU3RyaW5nQ29tcGFyZS4NCj4g PiA+Pg0KPiA+ID4+DQo+ID4gPj4gVGhhbmtzLg0KPiA+ID4+IFJldmlld2VkLWJ5OiBIYW8gQSBX dSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBTb3JyeSwgSSBmb3Vu ZCB0aGF0IHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBjb2RpbmcgZm9ybWF0IHN0eWxlIGNoZWNrDQo+ ID4gPiBmYWlsdXJlcw0KPiA+IHdoZW4gbWVyZ2luZyB0aGUgcGF0Y2guDQo+ID4gPiBDb3VsZCB5 b3UgaGVscCB0byByZXNvbHZlIHRoZW0gYW5kIHRoZW4gY3JlYXRlIGEgdGVzdCBwdWxsIHJlcXVl c3QNCj4gPiA+IG9uIHRoZQ0KPiA+IEdpdEh1YiBmb3IgdmVyaWZpY2F0aW9uPyBUaGFua3MgaW4g YWR2YW5jZS4NCj4gPiA+IChJIHRoaW5rIHlvdSBjYW4gdGFrZSB0aGUgY2FzZSB1bmRlcg0KPiA+ ID4gTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1J1bnRpbWVEeGVV bml0VGVzdC8NCj4gZm9yDQo+ID4gPiByZWZlcmVuY2UuKQ0KPiA+ID4NCj4gPg0KPiA+IEhpLCBX dSBIYW8NCj4gPg0KPiA+IEkgdHJ5IHRvIGRlYWwgd2l0aCB0aGUgY29kaW5nIGZvcm1hdCBzdHls ZSBjaGVjayBmYWlsdXJlcywgYW5kIG1lZXQgYQ0KPiA+IGZhaWx1cmUgd2hpY2ggSSBhbSBub3Qg c3VyZSBob3cgdG8gc29sdmUuDQo+ID4gSSB0YWtlIHRoZSBjYXNlIHlvdSB0b2xkIGZvciByZWZl cmVuY2UsIGJ1dCBzdGlsbCB0aGVyZSdzIGEgZmFpbHVyZQ0KPiA+IHNhaWQgdGhlIGRlZmluZSBz aG91bGQgYmUgY2FwaXRhbCBsZXR0ZXJzLg0KPiA+IGJ1dCBpZiBjaGFuZ2UgaXQgdG8gY2FwaXRh bCBsZXR0ZXJzLCB0aGVyZSB3aWxsIGJlIGFub3RoZXIgZXJyb3INCj4gPiBGdW5jdGlvbiBuYW1l IGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZXM6IDEuIEZpcnN0IGNoYXJhY3RlciBzaG91bGQgYmUN Cj4gPiB1cHBlciBjYXNlIDIuIE11c3QgY29udGFpbiBsb3dlciBjYXNlIGNoYXJhY3RlcnMgMy4g Tm8gd2hpdGUgc3BhY2UNCj4gPiBjaGFyYWN0ZXJzDQo+ID4NCj4gPiAjZGVmaW5lIE1haW4gbWFp bg0KPiA+DQo+ID4gSU5UMzINCj4gPiBNYWluICgNCj4gPiAgIElOIElOVDMyICBBcmdjLA0KPiA+ ICAgSU4gQ0hBUjggICpBcmd2W10NCj4gPiAgICkNCj4gPiB7DQo+ID4gICBVbml0VGVzdGluZ0Vu dHJ5ICgpOw0KPiA+ICAgcmV0dXJuIDA7DQo+ID4gfQ0KPiANCj4gDQo+IEhlbGxvIE1pa2UsDQo+ IA0KPiBJIHNhdyB0aGUgYmVsb3cgY29tbWl0Og0KPiAgIFNIQS0xOiBkY2FhOTM5MzY1OTE4ODNh YTc4MjZlYjQ1ZWYwMDQxNmFkODJlZjA4DQo+ICAgKiBNZGVNb2R1bGVQa2cvVmFyaWFibGUvUnVu dGltZUR4ZTogQWRkIFZhcmlhYmxlIExvY2sgUHJvdG9jb2wgVW5pdA0KPiBUZXN0cyBoYXMgYSBz aW1pbGFyIGNhc2UgdGhhdCBzaG91bGQgaW52b2x2ZSB0aGUgbmFtaW5nIG9mIHRoZSAnbWFpbicg ZnVuY3Rpb24NCj4gd2l0aGluIHRoZSB1bml0IHRlc3QgY29kZXMuDQo+IA0KPiBJIGFtIHdvbmRl cmluZyBob3cgdGhlIG9wZW4gcmFpc2VkIGJ5IFdlbnlpIHdhcyBoYW5kbGVkIGJhY2sgdGhlbi4N Cj4gRG8geW91IGhhdmUgc3VnZ2VzdGlvbnMgZm9yIHRoaXMgY2FzZT8gVGhhbmtzIGluIGFkdmFu Y2UuDQo+IA0KPiBCZXN0IFJlZ2FyZHMsDQo+IEhhbyBXdQ0KPiANCj4gDQo+ID4NCj4gPiBUaGFu a3MNCj4gPiBXZW55aQ0KPiA+DQo+ID4gPiBFcnJvciBkZXRhaWxzOg0KPiA+ID4gMjAyMS0wOC0w MlQwMTowOToyOC41OTU1ODIwWiAjI1tzZWN0aW9uXVN0YXJ0aW5nOiBCdWlsZCBhbmQgVGVzdA0K PiA+ID4gTWRlTW9kdWxlUGtnIElBMzIsWDY0LEFSTSxBQVJDSDY0LFJJU0NWNjQgMjAyMS0wOC0N Cj4gPiAwMlQwMTowOToyOC41OTYwNzMzWg0KPiA+DQo+ID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PQ0KPiA+ID09PT09 PT09PT09PT0NCj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MjguNTk2MTAxOFogVGFzayAgICAgICAg IDogQ29tbWFuZCBMaW5lDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjI4LjU5NjEyNThaIERlc2Ny aXB0aW9uICA6IFJ1biBhIGNvbW1hbmQgbGluZSB3aXRoDQo+ID4gYXJndW1lbnRzDQo+ID4gPiAy MDIxLTA4LTAyVDAxOjA5OjI4LjU5NjE1MDJaIFZlcnNpb24gICAgICA6IDEuMS4zDQo+ID4gPiAy MDIxLTA4LTAyVDAxOjA5OjI4LjU5NjE4OTdaIEF1dGhvciAgICAgICA6IE1pY3Jvc29mdCBDb3Jw b3JhdGlvbg0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOC41OTYyMjU5WiBIZWxwICAgICAgICAg OiBbTW9yZQ0KPiA+IEluZm9ybWF0aW9uXShodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5r Lz9MaW5rSUQ9NjEzNzM1KQ0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOC41OTYyNjc4Wg0KPiA+ ID4NCj4gPg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQo+ID09PT09PT0NCj4gPiA9PT09PQ0KPiA+ID4gPT09PT09PT0gMjAyMS0w OC0wMlQwMTowOToyOS4zNTA0OTQ2WiAobm9kZTozNjU5KSBXYXJuaW5nOiBVc2UNCj4gPiA+IENp cGhlcml2IGZvciBjb3VudGVyIG1vZGUgb2YgYWVzLTI1Ni1jdHINCj4gPiA+IDIwMjEtMDgtMDJU MDE6MDk6MjkuMzUxMDAyMFoNCj4gPiA+IChub2RlOjM2NTkpIFdhcm5pbmc6IFVzZSBDaXBoZXJp diBmb3IgY291bnRlciBtb2RlIG9mIGFlcy0yNTYtY3RyDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5 OjI5LjM1MTE1NTFaIChub2RlOjM2NTkpIFdhcm5pbmc6IFVzZSBDaXBoZXJpdiBmb3INCj4gPiA+ IGNvdW50ZXIgbW9kZSBvZiBhZXMtMjU2LWN0ciAyMDIxLTA4LTAyVDAxOjA5OjI5LjM1MTM2MDVa IChub2RlOjM2NTkpDQo+ID4gPiBXYXJuaW5nOiBVc2UgQ2lwaGVyaXYgZm9yIGNvdW50ZXIgbW9k ZSBvZiBhZXMtMjU2LWN0cg0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOS4zNTE2Nzk4WiAobm9k ZTozNjU5KSBXYXJuaW5nOiBVc2UgQ2lwaGVyaXYgZm9yDQo+ID4gPiBjb3VudGVyIG1vZGUgb2Yg YWVzLTI1Ni1jdHIgMjAyMS0wOC0wMlQwMTowOToyOS4zNTE3NTM2WiAobm9kZTozNjU5KQ0KPiA+ ID4gV2FybmluZzogVXNlIENpcGhlcml2IGZvciBjb3VudGVyIG1vZGUgb2YgYWVzLTI1Ni1jdHIN Cj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MjkuMzUxODE3OFogKG5vZGU6MzY1OSkgV2FybmluZzog VXNlIENpcGhlcml2IGZvcg0KPiA+ID4gY291bnRlciBtb2RlIG9mIGFlcy0yNTYtY3RyIDIwMjEt MDgtMDJUMDE6MDk6MjkuMzU0NTQ2MVoNCj4gPiA+IFtjb21tYW5kXS9vcHQvaG9zdGVkdG9vbGNh Y2hlL1B5dGhvbi8zLjguMTEveDY0L2Jpbi9zdHVhcnRfY2lfYnVpbGQNCj4gPiA+IC1jIC5weXRv b2wvQ0lTZXR0aW5ncy5weSAtcCBNZGVNb2R1bGVQa2cgLXQgUkVMRUFTRSxOTy1UQVJHRVQgLWEN Cj4gPiA+IElBMzIsWDY0LEFSTSxBQVJDSDY0LFJJU0NWNjQgVE9PTF9DSEFJTl9UQUc9R0NDNQ0K PiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOS4zNTQ2NzA3WiBTRUNUSU9OIC0gSW5pdCBTREUNCj4g PiA+IDIwMjEtMDgtMDJUMDE6MDk6MjkuMzU0NzU3MVogV0FSTklORyAtIFVzaW5nIFBpcCBUb29s cyBiYXNlZA0KPiA+ID4gQmFzZVRvb2xzIDIwMjEtMDgtMDJUMDE6MDk6MjkuMzU0ODM5NVogU0VD VElPTiAtIExvYWRpbmcgUGx1Z2lucw0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOToyOS4zNTQ5MjEy WiBTRUNUSU9OIC0gU3RhcnQgSW52b2NhYmxlIFRvb2wNCj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6 MjkuMzU1MDAxOFogU0VDVElPTiAtIEdldHRpbmcgRW52aXJvbm1lbnQNCj4gPiA+IDIwMjEtMDgt MDJUMDE6MDk6MjkuMzU1MDc5NFogU0VDVElPTiAtIExvYWRpbmcgcGx1Z2lucw0KPiA+ID4gMjAy MS0wOC0wMlQwMTowOToyOS4zNTUxNjc1WiBTRUNUSU9OIC0gQnVpbGRpbmcgTWRlTW9kdWxlUGtn DQo+IFBhY2thZ2UNCj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MjkuMzU1MjY5M1ogUFJPR1JFU1Mg LSAtLVJ1bm5pbmcgTWRlTW9kdWxlUGtnOg0KPiA+ID4gRWNjQ2hlY2sgVGVzdCBOTy1UQVJHRVQg LS0gMjAyMS0wOC0wMlQwMTowOTozMy4wNjk3MDA2WiBFUlJPUiAtDQo+ID4gPiAyMDIxLTA4LTAy VDAxOjA5OjMzLjA2OTgwMThaIEVSUk9SIC0gRUZJIGNvZGluZyBzdHlsZSBlcnJvcg0KPiA+ID4g MjAyMS0wOC0wMlQwMTowOTozMy4wNjk4NzQ4WiBFUlJPUiAtICpFcnJvciBjb2RlOiA1MDA3DQo+ ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MDA2MzFaIEVSUk9SIC0gKlRoZXJlIHNob3VsZCBi ZSBubw0KPiA+ID4gaW5pdGlhbGl6YXRpb24gb2YgYSB2YXJpYWJsZSBhcyBwYXJ0IG9mIGl0cyBk ZWNsYXJhdGlvbg0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzAyNjc1WiBFUlJPUiAtICpm aWxlOg0KPiA+ID4NCj4gLy9ob21lL3ZzdHMvd29yay8xL3MvTWRlTW9kdWxlUGtnL0xpYnJhcnkv VWVmaVNvcnRMaWIvVW5pdFRlc3QvVWVmaVMNCj4gPiA+IG9yIHRMaWJVbml0VGVzdC5jIDIwMjEt MDgtMDJUMDE6MDk6MzMuMDcwMzQyMVogRVJST1IgLSAqTGluZSBudW1iZXI6DQo+ID4gPiA3NyAy MDIxLTA4LTAyVDAxOjA5OjMzLjA3MDM5MjlaIEVSUk9SIC0gKlZhcmlhYmxlIE5hbWU6IFRlc3RD b3VudA0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzE1Njg0WiBFUlJPUiAtIDIwMjEtMDgt MDJUMDE6MDk6MzMuMDcxNjYzNFoNCj4gPiA+IEVSUk9SIC0gRUZJIGNvZGluZyBzdHlsZSBlcnJv ciAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MTczNzJaIEVSUk9SIC0NCj4gPiA+ICpFcnJvciBjb2Rl OiA1MDA3IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcxODIxNFogRVJST1IgLSAqVGhlcmUgc2hvdWxk DQo+ID4gPiBiZSBubyBpbml0aWFsaXphdGlvbiBvZiBhIHZhcmlhYmxlIGFzIHBhcnQgb2YgaXRz IGRlY2xhcmF0aW9uDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MTkxOTVaIEVSUk9SIC0g KmZpbGU6DQo+ID4gPg0KPiAvL2hvbWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvTGlicmFy eS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpUw0KPiA+ID4gb3IgdExpYlVuaXRUZXN0LmMgMjAy MS0wOC0wMlQwMTowOTozMy4wNzIwNjMxWiBFUlJPUiAtICpMaW5lIG51bWJlcjoNCj4gPiA+IDc4 IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyMTQ1MVogRVJST1IgLSAqVmFyaWFibGUgTmFtZTogVGVz dEJ1ZmZlcg0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzIyMTE0WiBFUlJPUiAtIDIwMjEt MDgtMDJUMDE6MDk6MzMuMDcyNDk1M1oNCj4gPiA+IEVSUk9SIC0gRUZJIGNvZGluZyBzdHlsZSBl cnJvciAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MjU3MTNaIEVSUk9SIC0NCj4gPiA+ICpFcnJvciBj b2RlOiA1MDA3IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyNjU2MlogRVJST1IgLSAqVGhlcmUgc2hv dWxkDQo+ID4gPiBiZSBubyBpbml0aWFsaXphdGlvbiBvZiBhIHZhcmlhYmxlIGFzIHBhcnQgb2Yg aXRzIGRlY2xhcmF0aW9uDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3Mjc1MjZaIEVSUk9S IC0gKmZpbGU6DQo+ID4gPg0KPiAvL2hvbWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvTGli cmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpUw0KPiA+ID4gb3IgdExpYlVuaXRUZXN0LmMg MjAyMS0wOC0wMlQwMTowOTozMy4wNzI4MzQ1WiBFUlJPUiAtICpMaW5lIG51bWJlcjoNCj4gPiA+ IDc5IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDcyOTA0NlogRVJST1IgLSAqVmFyaWFibGUgTmFtZTog VGVzdFJlc3VsdA0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzI5Njk0WiBFUlJPUiAtIDIw MjEtMDgtMDJUMDE6MDk6MzMuMDczMjQ5NloNCj4gPiA+IEVSUk9SIC0gRUZJIGNvZGluZyBzdHls ZSBlcnJvciAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MzMyMjRaIEVSUk9SIC0NCj4gPiA+ICpFcnJv ciBjb2RlOiA3MDAxIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDczNDExNFogRVJST1IgLSAqVGhlcmUg c2hvdWxkDQo+ID4gPiBiZSBubyB1c2Ugb2YgaW50LCB1bnNpZ25lZCwgY2hhciwgdm9pZCwgbG9u ZyBpbiBhbnkgLmMsIC5oIG9yIC5hc2wNCj4gPiA+IGZpbGVzIDIwMjEtMDgtMDJUMDE6MDk6MzMu MDczNzYyMFogRVJST1IgLSAqZmlsZToNCj4gPiA+DQo+IC8vaG9tZS92c3RzL3dvcmsvMS9zL01k ZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTDQo+ID4gPiBvciB0 TGliVW5pdFRlc3QuYyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3MzkxODVaIEVSUk9SIC0gKkxpbmUg bnVtYmVyOg0KPiA+ID4gMTE3IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc0MTMwMVogRVJST1IgLSAq W21haW5dIFJldHVybiB0eXBlIGludA0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzQ0MDk5 WiBFUlJPUiAtIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc0NDgyOVoNCj4gPiA+IEVSUk9SIC0gRUZJ IGNvZGluZyBzdHlsZSBlcnJvciAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NDU0NTlaIEVSUk9SIC0N Cj4gPiA+ICpFcnJvciBjb2RlOiA3MDAxIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc0NjgyMVogRVJS T1IgLSAqVGhlcmUgc2hvdWxkDQo+ID4gPiBiZSBubyB1c2Ugb2YgaW50LCB1bnNpZ25lZCwgY2hh ciwgdm9pZCwgbG9uZyBpbiBhbnkgLmMsIC5oIG9yIC5hc2wNCj4gPiA+IGZpbGVzIDIwMjEtMDgt MDJUMDE6MDk6MzMuMDc0Nzc3NFogRVJST1IgLSAqZmlsZToNCj4gPiA+DQo+IC8vaG9tZS92c3Rz L3dvcmsvMS9zL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlT DQo+ID4gPiBvciB0TGliVW5pdFRlc3QuYyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NDkwNzZaIEVS Uk9SIC0gKkxpbmUgbnVtYmVyOg0KPiA+ID4gMTE3IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc0OTcx M1ogRVJST1IgLSAqUGFyYW1ldGVyIGFyZ2MNCj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc1 MDk5OVogRVJST1IgLSAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NTE2MDdaDQo+ID4gPiBFUlJPUiAt IEVGSSBjb2Rpbmcgc3R5bGUgZXJyb3IgMjAyMS0wOC0wMlQwMTowOTozMy4wNzU0NTk5WiBFUlJP UiAtDQo+ID4gPiAqRXJyb3IgY29kZTogNzAwMSAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3NjExNzVa IEVSUk9SIC0gKlRoZXJlIHNob3VsZA0KPiA+ID4gYmUgbm8gdXNlIG9mIGludCwgdW5zaWduZWQs IGNoYXIsIHZvaWQsIGxvbmcgaW4gYW55IC5jLCAuaCBvciAuYXNsDQo+ID4gPiBmaWxlcyAyMDIx LTA4LTAyVDAxOjA5OjMzLjA3NjIxNjdaIEVSUk9SIC0gKmZpbGU6DQo+ID4gPg0KPiAvL2hvbWUv dnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9V ZWZpUw0KPiA+ID4gb3IgdExpYlVuaXRUZXN0LmMgMjAyMS0wOC0wMlQwMTowOTozMy4wNzYzMTYw WiBFUlJPUiAtICpMaW5lIG51bWJlcjoNCj4gPiA+IDExNyAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3 NjM3NDFaIEVSUk9SIC0gKlBhcmFtZXRlciBhcmd2DQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMz LjA3NjQyOTBaIEVSUk9SIC0gMjAyMS0wOC0wMlQwMTowOTozMy4wNzY0ODQzWg0KPiA+ID4gRVJS T1IgLSBFRkkgY29kaW5nIHN0eWxlIGVycm9yIDIwMjEtMDgtMDJUMDE6MDk6MzMuMDc2NjgxMFog RVJST1IgLQ0KPiA+ID4gKkVycm9yIGNvZGU6IDgwMDYgMjAyMS0wOC0wMlQwMTowOTozMy4wNzY3 ODE5WiBFUlJPUiAtICpGdW5jdGlvbg0KPiA+ID4gbmFtZSBkb2VzIG5vdCBmb2xsb3cgdGhlIHJ1 bGVzOiAxLiBGaXJzdCBjaGFyYWN0ZXIgc2hvdWxkIGJlIHVwcGVyIGNhc2UgMi4NCj4gPiA+IE11 c3QgY29udGFpbiBsb3dlciBjYXNlIGNoYXJhY3RlcnMgMy4gTm8gd2hpdGUgc3BhY2UgY2hhcmFj dGVycw0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzY4ODgxWiBFUlJPUiAtICpmaWxlOg0K PiA+ID4NCj4gLy9ob21lL3ZzdHMvd29yay8xL3MvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNv cnRMaWIvVW5pdFRlc3QvVWVmaVMNCj4gPiA+IG9yIHRMaWJVbml0VGVzdC5jIDIwMjEtMDgtMDJU MDE6MDk6MzMuMDc2OTYxOVogRVJST1IgLSAqTGluZSBudW1iZXI6DQo+ID4gPiAxODEgMjAyMS0w OC0wMlQwMTowOTozMy4wNzczMzI5WiBFUlJPUiAtICpUaGUgZnVuY3Rpb24gbmFtZSBbbWFpbl0N Cj4gPiA+IGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZXMgMjAyMS0wOC0wMlQwMTowOTozMy4wNzkx OTM1WiBFUlJPUiAtDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3OTM4NjVaIEVSUk9SIC0g RUZJIGNvZGluZyBzdHlsZSBlcnJvcg0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy4wNzk0NTU1 WiBFUlJPUiAtICpFcnJvciBjb2RlOiA5MDAyDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3 OTUzNTBaIEVSUk9SIC0gKlRoZSBmdW5jdGlvbiBoZWFkZXJzIHNob3VsZA0KPiA+ID4gZm9sbG93 IERveHlnZW4gc3BlY2lhbCBkb2N1bWVudGF0aW9uIGJsb2NrcyBpbiBzZWN0aW9uIDIuMy41DQo+ ID4gPiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3OTYyNzFaIEVSUk9SIC0gKmZpbGU6DQo+ID4gPg0K PiAvL2hvbWUvdnN0cy93b3JrLzEvcy9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9V bml0VGVzdC9VZWZpUw0KPiA+ID4gb3IgdExpYlVuaXRUZXN0LmMgMjAyMS0wOC0wMlQwMTowOToz My4wNzk2OTg1WiBFUlJPUiAtICpMaW5lIG51bWJlcjoNCj4gPiA+IDE3OCAyMDIxLTA4LTAyVDAx OjA5OjMzLjA3OTc2MTBaIEVSUk9SIC0gKk5vIGRveHlnZW4gdGFncyBpbiBjb21tZW50DQo+ID4g PiAyMDIxLTA4LTAyVDAxOjA5OjMzLjA3OTgyMDhaIEVSUk9SIC0gMjAyMS0wOC0wMlQwMTowOToz My4wNzk4ODU5Wg0KPiA+ID4gRVJST1IgLSAtLS0+VGVzdCBGYWlsZWQ6IEVjY0NoZWNrIFRlc3Qg Tk8tVEFSR0VUIHJldHVybmVkIDENCj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMDgwNzM1MVog UFJPR1JFU1MgLSAtLVJ1bm5pbmcgTWRlTW9kdWxlUGtnOg0KPiBEc2MNCj4gPiA+IENvbXBsZXRl IENoZWNrIFRlc3QgTk8tVEFSR0VUIC0tIDIwMjEtMDgtMDJUMDE6MDk6MzMuMTUyNDc5MFoNCj4g PiBQUk9HUkVTUw0KPiA+ID4gLSAtLS0+VGVzdCBTdWNjZXNzOiBEc2MgQ29tcGxldGUgQ2hlY2sg VGVzdCBOTy1UQVJHRVQNCj4gPiA+IDIwMjEtMDgtMDJUMDE6MDk6MzMuMTUzNjAwNFogUFJPR1JF U1MgLSAtLVJ1bm5pbmcgTWRlTW9kdWxlUGtnOg0KPiBDaGFyDQo+ID4gPiBFbmNvZGluZyBDaGVj ayBUZXN0IE5PLVRBUkdFVCAtLSAyMDIxLTA4LTAyVDAxOjA5OjMzLjYyODAzODBaDQo+ID4gUFJP R1JFU1MNCj4gPiA+IC0gLS0tPlRlc3QgU3VjY2VzczogQ2hhciBFbmNvZGluZyBDaGVjayBUZXN0 IE5PLVRBUkdFVA0KPiA+ID4gMjAyMS0wOC0wMlQwMTowOTozMy42Mjg5MDc2WiBQUk9HUkVTUyAt IC0tUnVubmluZyBNZGVNb2R1bGVQa2c6DQo+ID4gPiBMaWNlbnNlIENoZWNrIFRlc3QgTk8tVEFS R0VUIC0tIDIwMjEtMDgtMDJUMDE6MDk6MzMuNjQ5NTY0MloNCj4gPiA+IFBST0dSRVNTDQo+ID4g PiAtIC0tLT5UZXN0IFN1Y2Nlc3M6IExpY2Vuc2UgQ2hlY2sgVGVzdCBOTy1UQVJHRVQNCj4gPiA+ IDIwMjEtMDgtMDJUMDE6MDk6MzMuNjUwODEyNVogUFJPR1JFU1MgLSAtLVJ1bm5pbmcgTWRlTW9k dWxlUGtnOg0KPiA+ID4gQ29tcGlsZXIgUGx1Z2luIFJFTEVBU0UgLS0gMjAyMS0wOC0wMlQwMTow OTozMy42Nzg1MTc4WiBQUk9HUkVTUyAtDQo+ID4gPiBTdGFydCB0aW1lOiAyMDIxLTA4LTAyIDAx OjA5OjMzLjY3Nzk1MiAyMDIxLTA4LTAyVDAxOjA5OjMzLjY3ODc3MTZaDQo+ID4gUFJPR1JFU1Mg LSBTZXR0aW5nIHVwIHRoZSBFbnZpcm9ubWVudCAyMDIxLTA4LTAyVDAxOjA5OjMzLjc3MjUyNDRa DQo+ID4gUFJPR1JFU1MgLSBSdW5uaW5nIFByZSBCdWlsZCAyMDIxLTA4LTAyVDAxOjA5OjMzLjc3 NDAzNTdaIFBST0dSRVNTIC0NCj4gPiBSdW5uaW5nIEJ1aWxkIFJFTEVBU0UgMjAyMS0wOC0wMlQw MToxNzoxOC41NDc5ODg1WiBQUk9HUkVTUyAtIFJ1bm5pbmcNCj4gPiBQb3N0IEJ1aWxkDQo+ID4g PiAyMDIxLTA4LTAyVDAxOjE3OjE4LjU1MTE4MDdaIFBST0dSRVNTIC0gRW5kIHRpbWU6IDIwMjEt MDgtMDINCj4gPiAwMToxNzoxOC41NDk5NzQJIFRvdGFsIHRpbWUgRWxhcHNlZDogMDowNzo0NA0K PiA+ID4gMjAyMS0wOC0wMlQwMToxNzoxOC41NTEyOTk3WiBQUk9HUkVTUyAtIC0tLT5UZXN0IFN1 Y2Nlc3M6IENvbXBpbGVyDQo+ID4gPiBQbHVnaW4gUkVMRUFTRSAyMDIxLTA4LTAyVDAxOjE3OjE4 LjU1MTkyODRaIFBST0dSRVNTIC0gLS1SdW5uaW5nDQo+ID4gPiBNZGVNb2R1bGVQa2c6IExpYnJh cnkgQ2xhc3MgQ2hlY2sgVGVzdCBOTy1UQVJHRVQgLS0NCj4gPiA+IDIwMjEtMDgtMDJUMDE6MTc6 MTguNTYzOTIxNlogUFJPR1JFU1MgLSAtLS0+VGVzdCBTdWNjZXNzOiBMaWJyYXJ5DQo+ID4gPiBD bGFzcyBDaGVjayBUZXN0IE5PLVRBUkdFVCAyMDIxLTA4LTAyVDAxOjE3OjE4LjU2NDg3OTFaIFBS T0dSRVNTIC0NCj4gPiA+IC0tUnVubmluZyBNZGVNb2R1bGVQa2c6IERlcGVuZGVuY3kgQ2hlY2sg VGVzdCBOTy1UQVJHRVQgLS0NCj4gPiA+IDIwMjEtMDgtMDJUMDE6MTc6MTguNzMwNjYxMVogUFJP R1JFU1MgLSAtLS0+VGVzdCBTdWNjZXNzOiBEZXBlbmRlbmN5DQo+ID4gPiBDaGVjayBUZXN0IE5P LVRBUkdFVCAyMDIxLTA4LTAyVDAxOjE3OjE4LjczMTYxNjJaIFBST0dSRVNTIC0NCj4gPiA+IC0t UnVubmluZw0KPiA+ID4gTWRlTW9kdWxlUGtnOiBTcGVsbCBDaGVjayBUZXN0IE5PLVRBUkdFVCAt LQ0KPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoyMy43OTIyMTY2WiBXQVJOSU5HIC0gLS0tPlRlc3Qg U2tpcHBlZDogaW4gcGx1Z2luIQ0KPiA+ID4gU3BlbGwgQ2hlY2sgVGVzdCBOTy1UQVJHRVQgMjAy MS0wOC0wMlQwMToxNzoyMy43OTM0MTEyWiBQUk9HUkVTUyAtDQo+ID4gPiAtLVJ1bm5pbmcgTWRl TW9kdWxlUGtnOiBHdWlkIENoZWNrIFRlc3QgTk8tVEFSR0VUIC0tDQo+ID4gPiAyMDIxLTA4LTAy VDAxOjE3OjI3LjE5Mjg4NTBaIFBST0dSRVNTIC0gLS0tPlRlc3QgU3VjY2VzczogR3VpZCBDaGVj aw0KPiA+ID4gVGVzdCBOTy1UQVJHRVQgMjAyMS0wOC0wMlQwMToxNzoyNy4xOTM5MTI5WiBQUk9H UkVTUyAtIC0tUnVubmluZw0KPiA+ID4gTWRlTW9kdWxlUGtnOiBIb3N0IFVuaXQgVGVzdCBEc2Mg Q29tcGxldGUgQ2hlY2sgVGVzdCBOTy1UQVJHRVQgLS0NCj4gPiA+IDIwMjEtMDgtMDJUMDE6MTc6 MjcuMzcwMzY0MFogUFJPR1JFU1MgLSAtLS0+VGVzdCBTdWNjZXNzOiBIb3N0IFVuaXQNCj4gPiA+ IFRlc3QgRHNjIENvbXBsZXRlIENoZWNrIFRlc3QgTk8tVEFSR0VUIDIwMjEtMDgtMDJUMDE6MTc6 MjcuMzczMTY3NloNCj4gPiA+IEVSUk9SIC0gT3ZlcmFsbCBCdWlsZCBTdGF0dXM6IEVycm9yIDIw MjEtMDgtMDJUMDE6MTc6MjcuMzczMzI4M1oNCj4gPiA+IFBST0dSRVNTIC0gVGhlcmUgd2VyZSAx IGZhaWx1cmVzIG91dCBvZiAxMCBhdHRlbXB0cw0KPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoyNy4z NzM0NTAxWiBTRUNUSU9OIC0gU3VtbWFyeQ0KPiA+ID4gMjAyMS0wOC0wMlQwMToxNzoyNy4zNzM1 NjEzWiBFUlJPUiAtIEVycm9yDQo+ID4gPiAyMDIxLTA4LTAyVDAxOjE3OjI3LjQxNTk4NDJaDQo+ ID4gPiAjI1tlcnJvcl0vb3B0L2hvc3RlZHRvb2xjYWNoZS9QeXRob24vMy44LjExL3g2NC9iaW4v c3R1YXJ0X2NpX2J1aWxkDQo+ID4gPiBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogMSAyMDIxLTA4 LTAyVDAxOjE3OjI3LjQxNzMxMzRaDQo+ID4gPiAjI1tlcnJvcl0vb3B0L2hvc3RlZHRvb2xjYWNo ZS9QeXRob24vMy44LjExL3g2NC9iaW4vc3R1YXJ0X2NpX2J1aWxkDQo+ID4gPiBmYWlsZWQgd2l0 aCBlcnJvcjoNCj4gPiA+IC9vcHQvaG9zdGVkdG9vbGNhY2hlL1B5dGhvbi8zLjguMTEveDY0L2Jp bi9zdHVhcnRfY2lfYnVpbGQgZmFpbGVkDQo+ID4gPiB3aXRoIHJldHVybiBjb2RlOiAxIDIwMjEt MDgtMDJUMDE6MTc6MjcuNDE3ODI1MlogIyNbc2VjdGlvbl1GaW5pc2hpbmc6DQo+ID4gPiBCdWls ZCBhbmQgVGVzdCBNZGVNb2R1bGVQa2cgSUEzMixYNjQsQVJNLEFBUkNINjQsUklTQ1Y2NA0KPiA+ ID4NCj4gPiA+IEJlc3QgUmVnYXJkcywNCj4gPiA+IEhhbyBXdQ0KPiA+ID4NCj4gPiA+DQo+ID4g Pj4NCj4gPiA+PiBJIHdpbGwgd2FpdCBhIGNvdXBsZSBkYXlzIGJlZm9yZSBtZXJnaW5nIHRvIHNl ZSBpZiBhbnkgYWRkaXRpb25hbA0KPiA+ID4+IGNvbW1lbnQgZnJvbSBvdGhlciByZXZpZXdlcnMu DQo+ID4gPj4NCj4gPiA+PiBCZXN0IFJlZ2FyZHMsDQo+ID4gPj4gSGFvIFd1DQo+ID4gPj4NCj4g PiA+Pg0KPiA+ID4+Pg0KPiA+ID4+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVs LmNvbT4NCj4gPiA+Pj4gQ2M6IEhhbyBBIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+DQo+ID4gPj4+ IFNpZ25lZC1vZmYtYnk6IFdlbnlpIFhpZSA8eGlld2VueWkyQGh1YXdlaS5jb20+DQo+ID4gPj4+ IC0tLQ0KPiA+ID4+PiAgTWRlTW9kdWxlUGtnL1Rlc3QvTWRlTW9kdWxlUGtnSG9zdFRlc3QuZHNj ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KPiA+ID4+PiAgTWRlTW9kdWxlUGtnL0xp YnJhcnkvVWVmaVNvcnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0VGVzdC5pbmYNCj4gPiA+ Pj4gfA0KPiA+ID4+PiAzMg0KPiA+ID4+PiArKysrDQo+ID4gPj4+ICBNZGVNb2R1bGVQa2cvTGli cmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpU29ydExpYlVuaXRUZXN0LmMNCj4gfCAxODgN Cj4gPiA+Pj4gKysrKysrKysrKysrKysrKysrKysNCj4gPiA+Pj4gIDMgZmlsZXMgY2hhbmdlZCwg MjI2IGluc2VydGlvbnMoKykNCj4gPiA+Pj4NCj4gPiA+Pj4gZGlmZiAtLWdpdCBhL01kZU1vZHVs ZVBrZy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0KPiA+ID4+PiBiL01kZU1vZHVsZVBr Zy9UZXN0L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0KPiA+ID4+PiBpbmRleCA0ZGE0NjkyYzg0 NTEuLmM5ZWM4MzVkZjY1ZCAxMDA2NDQNCj4gPiA+Pj4gLS0tIGEvTWRlTW9kdWxlUGtnL1Rlc3Qv TWRlTW9kdWxlUGtnSG9zdFRlc3QuZHNjDQo+ID4gPj4+ICsrKyBiL01kZU1vZHVsZVBrZy9UZXN0 L01kZU1vZHVsZVBrZ0hvc3RUZXN0LmRzYw0KPiA+ID4+PiBAQCAtNDEsMyArNDEsOSBAQCBbQ29t cG9uZW50c10NCj4gPiA+Pj4gICAgICA8UGNkc0ZpeGVkQXRCdWlsZD4NCj4gPiA+Pj4NCj4gPiA+ Pj4NCj4gPiA+Pg0KPiBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWxsb3dWYXJp YWJsZVBvbGljeUVuZm9yY2VtZW50RGlzDQo+ID4gPj4+IGFibGV8VFJVRQ0KPiA+ID4+PiAgICB9 DQo+ID4gPj4+ICsNCj4gPiA+Pj4gKw0KPiBNZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExp Yi9Vbml0VGVzdC9VZWZpU29ydExpYlVuaXRUZXN0LmluZiB7DQo+ID4gPj4+ICsgICAgPExpYnJh cnlDbGFzc2VzPg0KPiA+ID4+PiArDQo+ID4gPj4+ICsgVWVmaVNvcnRMaWJ8TWRlTW9kdWxlUGtn L0xpYnJhcnkvVWVmaVNvcnRMaWIvVWVmaVNvcnRMaWIuaW5mDQo+ID4gPj4+ICsNCj4gPiA+Pj4g Kw0KPiBEZXZpY2VQYXRoTGlifE1kZVBrZy9MaWJyYXJ5L1VlZmlEZXZpY2VQYXRoTGliL1VlZmlE ZXZpY2VQYXRoTGliDQo+ID4gPj4+ICsgRGV2aWNlUGF0aExpYnwuaQ0KPiA+ID4+PiArIERldmlj ZVBhdGhMaWJ8bmYNCj4gPiA+Pj4gKyAgfQ0KPiA+ID4+PiBkaWZmIC0tZ2l0DQo+ID4gPj4+IGEv TWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaVNvcnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0 VGVzdC5pbg0KPiA+ID4+PiBmDQo+ID4gPj4+DQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVm aVNvcnRMaWIvVW5pdFRlc3QvVWVmaVNvcnRMaWJVbml0VGVzdC5pbg0KPiA+ID4+PiBmDQo+ID4g Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODVk OGRjZDY5NjE5DQo+ID4gPj4+IC0tLSAvZGV2L251bGwNCj4gPiA+Pj4gKysrDQo+ID4gPj4gYi9N ZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpU29ydExpYi9Vbml0VGVzdC9VZWZpU29ydExpYlVuaXRU ZXN0LmluDQo+ID4gPj4+ICsrKyBmDQo+ID4gPj4+IEBAIC0wLDAgKzEsMzIgQEANCj4gPiA+Pj4g KyMjIEBmaWxlDQo+ID4gPj4+ICsjIFRoaXMgaXMgYSB1bml0IHRlc3QgZm9yIHRoZSBVZWZpU29y dExpYi4NCj4gPiA+Pj4gKyMNCj4gPiA+Pj4gKyMgQ29weXJpZ2h0IChDKSBIdWF3ZWkgVGVjaG5v bG9naWVzIENvLiwgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkDQo+ID4gPj4+ICsjDQo+ID4gPj4+ ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjIw0KPiA+ID4+ PiArDQo+ID4gPj4+ICtbRGVmaW5lc10NCj4gPiA+Pj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICA9 IDB4MDAwMTAwMTcNCj4gPiA+Pj4gKyAgQkFTRV9OQU1FICAgICAgICAgICA9IFVlZmlTb3J0TGli VW5pdFRlc3QNCj4gPiA+Pj4gKyAgRklMRV9HVUlEICAgICAgICAgICA9IDI3MTMzN0EzLTBENzkt QkEzRS1CQzAzLTcxNEU1MThFM0IxQg0KPiA+ID4+PiArICBWRVJTSU9OX1NUUklORyAgICAgID0g MS4wDQo+ID4gPj4+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgPSBIT1NUX0FQUExJQ0FUSU9ODQo+ ID4gPj4+ICsNCj4gPiA+Pj4gKyMNCj4gPiA+Pj4gKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlv biBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdA0KPiA+ID4+PiArcmVxdWlyZWQgYnkgdGhl DQo+ID4gPj4+IGJ1aWxkIHRvb2xzLg0KPiA+ID4+PiArIw0KPiA+ID4+PiArIyAgVkFMSURfQVJD SElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NA0KPiA+ID4+PiArIw0KPiA+ID4+PiArDQo+ ID4gPj4+ICtbU291cmNlc10NCj4gPiA+Pj4gKyAgVWVmaVNvcnRMaWJVbml0VGVzdC5jDQo+ID4g Pj4+ICsNCj4gPiA+Pj4gK1tQYWNrYWdlc10NCj4gPiA+Pj4gKyAgTWRlUGtnL01kZVBrZy5kZWMN Cj4gPiA+Pj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+Pj4gKyAgVW5p dFRlc3RGcmFtZXdvcmtQa2cvVW5pdFRlc3RGcmFtZXdvcmtQa2cuZGVjDQo+ID4gPj4+ICsNCj4g PiA+Pj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+Pj4gKyAgVW5pdFRlc3RMaWINCj4gPiA+Pj4g KyAgRGVidWdMaWINCj4gPiA+Pj4gKyAgVWVmaVNvcnRMaWINCj4gPiA+Pj4gZGlmZiAtLWdpdA0K PiA+ID4+PiBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlT b3J0TGliVW5pdFRlc3QuYw0KPiA+ID4+PiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0 TGliL1VuaXRUZXN0L1VlZmlTb3J0TGliVW5pdFRlc3QuYw0KPiA+ID4+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjcxZjMwZDhiOWY3Zg0KPiA+ID4+ PiAtLS0gL2Rldi9udWxsDQo+ID4gPj4+ICsrKw0KPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1Vl ZmlTb3J0TGliL1VuaXRUZXN0L1VlZmlTb3J0TGliVW5pdFRlc3QuDQo+ID4gPj4+ICsrKyBjDQo+ ID4gPj4+IEBAIC0wLDAgKzEsMTg4IEBADQo+ID4gPj4+ICsvKiogQGZpbGUNCj4gPiA+Pj4gKyAg VW5pdCB0ZXN0cyBvZiB0aGUgVWVmaVNvcnRMaWINCj4gPiA+Pj4gKw0KPiA+ID4+PiArICBDb3B5 cmlnaHQgKEMpIEh1YXdlaSBUZWNobm9sb2dpZXMgQ28uLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQNCj4gPiA+Pj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPiA+Pj4gKw0KPiA+ID4+PiArKiovDQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyNpbmNsdWRl IDxzdGRpby5oPg0KPiA+ID4+PiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+ID4+PiArI2luY2x1 ZGUgPHN0ZGFyZy5oPg0KPiA+ID4+PiArI2luY2x1ZGUgPHN0ZGRlZi5oPg0KPiA+ID4+PiArI2lu Y2x1ZGUgPHNldGptcC5oPg0KPiA+ID4+PiArI2luY2x1ZGUgPGNtb2NrYS5oPg0KPiA+ID4+PiAr DQo+ID4gPj4+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ID4+PiArI2luY2x1ZGUgPExpYnJhcnkv QmFzZUxpYi5oPg0KPiA+ID4+PiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiA+ Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiA+Pj4gKw0K PiA+ID4+PiArI2luY2x1ZGUgPExpYnJhcnkvVW5pdFRlc3RMaWIuaD4NCj4gPiA+Pj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1NvcnRMaWIuaD4NCj4gPiA+Pj4gKw0KPiA+ID4+PiArI2RlZmluZSBVTklU X1RFU1RfQVBQX05BTUUgICAgICAgICJVZWZpU29ydExpYiBVbml0IFRlc3RzIg0KPiA+ID4+PiAr I2RlZmluZSBVTklUX1RFU1RfQVBQX1ZFUlNJT04gICAgICIxLjAiDQo+ID4gPj4+ICsNCj4gPiA+ Pj4gKyNkZWZpbmUgVEVTVF9BUlJBWV9TSVpFXzkgICAgICAgICA5DQo+ID4gPj4+ICsNCj4gPiA+ Pj4gKy8qKg0KPiA+ID4+PiArICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFBlcmZvcm1RdWlj a1NvcnQgdG8gY29tcGFyZSBpbnQgdmFsdWVzLg0KPiA+ID4+PiArDQo+ID4gPj4+ICsgIEBwYXJh bVtpbl0gTGVmdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIGZpcnN0IGJ1ZmZlci4NCj4gPiA+ Pj4gKyAgQHBhcmFtW2luXSBSaWdodCAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gc2Vjb25kIGJ1 ZmZlci4NCj4gPiA+Pj4gKw0KPiA+ID4+PiArICBAcmV0dmFsIDAgICAgICAgICAgICAgICAgICBC dWZmZXIxIGVxdWFsIHRvIEJ1ZmZlcjIuDQo+ID4gPj4+ICsgIEByZXR1cm4gPDAgICAgICAgICAg ICAgICAgIEJ1ZmZlcjEgaXMgbGVzcyB0aGFuIEJ1ZmZlcjIuDQo+ID4gPj4+ICsgIEByZXR1cm4g PjAgICAgICAgICAgICAgICAgIEJ1ZmZlcjEgaXMgZ3JlYXRlciB0aGFuIEJ1ZmZlcjIuDQo+ID4g Pj4+ICsNCj4gPiA+Pj4gKyoqLw0KPiA+ID4+PiArSU5UTg0KPiA+ID4+PiArRUZJQVBJDQo+ID4g Pj4+ICtUZXN0Q29tcGFyZUZ1bmN0aW9uICgNCj4gPiA+Pj4gKyAgSU4gQ09OU1QgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAgICAqTGVmdCwNCj4gPiA+Pj4gKyAgSU4gQ09OU1QgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAgICAqUmlnaHQNCj4gPiA+Pj4gKyAgKQ0KPiA+ID4+PiArew0KPiA+ ID4+PiArICBpZiAoKihVSU5UMzIqKVJpZ2h0ID4gKihVSU5UMzIqKUxlZnQpIHsNCj4gPiA+Pj4g KyAgICByZXR1cm4gMTsNCj4gPiA+Pj4gKyAgfSBlbHNlIGlmICgqKFVJTlQzMiopUmlnaHQgPCAq KFVJTlQzMiopTGVmdCkgew0KPiA+ID4+PiArICAgIHJldHVybiAtMTsNCj4gPiA+Pj4gKyAgfQ0K PiA+ID4+PiArDQo+ID4gPj4+ICsgIHJldHVybiAwOw0KPiA+ID4+PiArfQ0KPiA+ID4+PiArDQo+ ID4gPj4+ICsvKioNCj4gPiA+Pj4gKyAgVW5pdCB0ZXN0IGZvciBQZXJmb3JtUXVpY2tTb3J0ICgp IEFQSSBvZiB0aGUgVWVmaVNvcnRMaWIuDQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgQHBhcmFtW2lu XSAgQ29udGV4dCAgICBbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0DQo+IGVu YWJsZXM6DQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJl dXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVk IGENCj4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICByZWJvb3QuICBUaGlzIHBhcmFt ZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBpcyB0aGUNCj4gPiA+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQg dGhlDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwg dW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heQ0KPiA+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN1bWUgaXQuDQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgQHJldHZh bCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0 ZWQgYW5kDQo+IHRoZQ0KPiA+ID4+PiB0ZXN0DQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCj4gPiA+Pj4gKyAgQHJl dHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24g aGFzDQo+ID4gPj4gZmFpbGVkLg0KPiA+ID4+PiArKiovDQo+ID4gPj4+ICtVTklUX1RFU1RfU1RB VFVTDQo+ID4gPj4+ICtFRklBUEkNCj4gPiA+Pj4gK1NvcnRVSU5UMzJBcnJheVNob3VsZFN1Y2Nl ZWQgKA0KPiA+ID4+PiArICBJTiBVTklUX1RFU1RfQ09OVEVYVCAgQ29udGV4dA0KPiA+ID4+PiAr ICApDQo+ID4gPj4+ICt7DQo+ID4gPj4+ICsgIFVJTlROIFRlc3RDb3VudCA9IFRFU1RfQVJSQVlf U0laRV85Ow0KPiA+ID4+PiArICBVSU5UMzIgVGVzdEJ1ZmZlcltURVNUX0FSUkFZX1NJWkVfOV0g PSB7MSwgMiwgMywgNCwgNSwgNiwgNyAsOCwNCj4gPiA+Pj4gKzl9Ow0KPiA+ID4+PiArICBVSU5U MzIgVGVzdFJlc3VsdFtURVNUX0FSUkFZX1NJWkVfOV0gPSB7OSwgOCwgNywgNiwgNSwgNCwgMywg MiwNCj4gPiA+Pj4gKzF9Ow0KPiA+ID4+PiArDQo+ID4gPj4+ICsgIFBlcmZvcm1RdWlja1NvcnQg KFRlc3RCdWZmZXIsIFRlc3RDb3VudCwgc2l6ZW9mIChVSU5UMzIpLA0KPiA+ID4+PiArIChTT1JU X0NPTVBBUkUpVGVzdENvbXBhcmVGdW5jdGlvbik7DQo+ID4gPj4+ICsgIFVUX0FTU0VSVF9NRU1f RVFVQUwgKFRlc3RCdWZmZXIsIFRlc3RSZXN1bHQsIHNpemVvZiAoVUlOVDMyKSAqDQo+ID4gPj4+ ICsgVEVTVF9BUlJBWV9TSVpFXzkpOw0KPiA+ID4+PiArDQo+ID4gPj4+ICsgIHJldHVybiBVTklU X1RFU1RfUEFTU0VEOw0KPiA+ID4+PiArfQ0KPiA+ID4+PiArDQo+ID4gPj4+ICsvKioNCj4gPiA+ Pj4gKyAgVW5pdCB0ZXN0IGZvciBTdHJpbmdDb21wYXJlICgpIEFQSSBvZiB0aGUgVWVmaVNvcnRM aWIuDQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9u YWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0DQo+IGVuYWJsZXM6DQo+ID4gPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFt ZXRlcnMgYW5kDQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNl IHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGENCj4gPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICByZWJvb3QuICBUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBp dCBpcyB0aGUNCj4gPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0 eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQo+ID4gPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVz dCBjYXNlcyB0aGF0IG1heQ0KPiA+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1 bWUgaXQuDQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAg ICAgICAgICAgICBUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kDQo+IHRoZQ0KPiA+ID4+ PiB0ZXN0DQo+ID4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCj4gPiA+Pj4gKyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9S X1RFU1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzDQo+ID4gPj4gZmFpbGVkLg0K PiA+ID4+PiArKiovDQo+ID4gPj4+ICtVTklUX1RFU1RfU1RBVFVTDQo+ID4gPj4+ICtFRklBUEkN Cj4gPiA+Pj4gK0NvbXBhcmVTYW1lQnVmZmVyU2hvdWxkU3VjY2VlZCAoDQo+ID4gPj4+ICsgIElO IFVOSVRfVEVTVF9DT05URVhUICBDb250ZXh0DQo+ID4gPj4+ICsgICkNCj4gPiA+Pj4gK3sNCj4g PiA+Pj4gKyAgSU5UTiByZXR2YWw7DQo+ID4gPj4+ICsgIENPTlNUIENIQVIxNiogVGVzdEJ1ZmZl cltdID0geyBMImFiY2RlZmciIH07DQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAgcmV0dmFsID0gU3Ry aW5nQ29tcGFyZSAoVGVzdEJ1ZmZlciwgVGVzdEJ1ZmZlcik7DQo+ID4gPj4+ICsgVVRfQVNTRVJU X1RSVUUgKHJldHZhbCA9PSAwKTsNCj4gPiA+Pj4gKw0KPiA+ID4+PiArICByZXR1cm4gVU5JVF9U RVNUX1BBU1NFRDsNCj4gPiA+Pj4gK30NCj4gPiA+Pj4gKw0KPiA+ID4+PiArLyoqDQo+ID4gPj4+ ICsgIEluaXRpYWx6ZSB0aGUgdW5pdCB0ZXN0IGZyYW1ld29yaywgc3VpdGUsIGFuZCB1bml0IHRl c3RzIGZvcg0KPiA+ID4+PiArdGhlDQo+ID4gPj4+ICsgIFVlZmlTb3J0TGliIGFuZCBydW4gdGhl IFVlZmlTb3J0TGliIHVuaXQgdGVzdC4NCj4gPiA+Pj4gKw0KPiA+ID4+PiArICBAcmV0dmFsICBF RklfU1VDQ0VTUyAgICAgICAgICAgQWxsIHRlc3QgY2FzZXMgd2VyZSBkaXNwYXRjaGVkLg0KPiA+ ID4+PiArICBAcmV0dmFsICBFRklfT1VUX09GX1JFU09VUkNFUyAgVGhlcmUgYXJlIG5vdCBlbm91 Z2ggcmVzb3VyY2VzDQo+ID4gPj4+IGF2YWlsYWJsZSB0bw0KPiA+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSB0aGUgdW5pdCB0ZXN0cy4NCj4gPiA+Pj4g KyoqLw0KPiA+ID4+PiArU1RBVElDDQo+ID4gPj4+ICtFRklfU1RBVFVTDQo+ID4gPj4+ICtFRklB UEkNCj4gPiA+Pj4gK1VuaXRUZXN0aW5nRW50cnkgKA0KPiA+ID4+PiArICBWT0lEDQo+ID4gPj4+ ICsgICkNCj4gPiA+Pj4gK3sNCj4gPiA+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAg IFN0YXR1czsNCj4gPiA+Pj4gKyAgVU5JVF9URVNUX0ZSQU1FV09SS19IQU5ETEUgIEZyYW1ld29y azsNCj4gPiA+Pj4gKyAgVU5JVF9URVNUX1NVSVRFX0hBTkRMRSAgICAgIFNvcnRUZXN0czsNCj4g PiA+Pj4gKw0KPiA+ID4+PiArICBGcmFtZXdvcmsgPSBOVUxMOw0KPiA+ID4+PiArDQo+ID4gPj4+ ICsgIERFQlVHKCggREVCVUdfSU5GTywgIiVhIHYlYVxuIiwgVU5JVF9URVNUX0FQUF9OQU1FLA0K PiA+ID4+PiArIFVOSVRfVEVTVF9BUFBfVkVSU0lPTiApKTsNCj4gPiA+Pj4gKw0KPiA+ID4+PiAr ICAvLw0KPiA+ID4+PiArICAvLyBTdGFydCBzZXR0aW5nIHVwIHRoZSB0ZXN0IGZyYW1ld29yayBm b3IgcnVubmluZyB0aGUgdGVzdHMuDQo+ID4gPj4+ICsgIC8vDQo+ID4gPj4+ICsgIFN0YXR1cyA9 IEluaXRVbml0VGVzdEZyYW1ld29yayAoJkZyYW1ld29yaywNCj4gVU5JVF9URVNUX0FQUF9OQU1F LA0KPiA+ID4+PiArIGdFZmlDYWxsZXJCYXNlTmFtZSwgVU5JVF9URVNUX0FQUF9WRVJTSU9OKTsg IGlmIChFRklfRVJST1INCj4gPiA+Pj4gKyAoU3RhdHVzKSkNCj4gPiA+PiB7DQo+ID4gPj4+ICsg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWxlZCBpbiBJbml0VW5pdFRlc3RGcmFtZXdvcmsu IFN0YXR1cw0KPiA+ID4+PiA9ICVyXG4iLCBTdGF0dXMpKTsNCj4gPiA+Pj4gKyAgICBnb3RvIEVY SVQ7DQo+ID4gPj4+ICsgIH0NCj4gPiA+Pj4gKw0KPiA+ID4+PiArICAvLw0KPiA+ID4+PiArICAv LyBQb3B1bGF0ZSB0aGUgVWVmaVNvcnRMaWIgVW5pdCBUZXN0IFN1aXRlLg0KPiA+ID4+PiArICAv Lw0KPiA+ID4+PiArICBTdGF0dXMgPSBDcmVhdGVVbml0VGVzdFN1aXRlICgmU29ydFRlc3RzLCBG cmFtZXdvcmssDQo+ID4gPj4+ICsgIlVlZmlTb3J0TGliIFNvcnQgVGVzdHMiLCAiVWVmaVNvcnRM aWIuU29ydExpYiIsIE5VTEwsIE5VTEwpOyAgaWYNCj4gKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiA+ID4+PiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJGYWlsZWQgaW4gQ3JlYXRlVW5pdFRl c3RTdWl0ZSBmb3INCj4gPiA+Pj4gKyBVZWZpU29ydExpYg0KPiA+ID4+PiBBUEkgVGVzdHNcbiIp KTsNCj4gPiA+Pj4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiA+Pj4g KyAgICBnb3RvIEVYSVQ7DQo+ID4gPj4+ICsgIH0NCj4gPiA+Pj4gKw0KPiA+ID4+PiArICAvLw0K PiA+ID4+PiArICAvLw0KPiA+ID4+PiArIC0tLS0tLS0tLS0tLS0tU3VpdGUtLS0tLS0tLURlc2Ny aXB0aW9uLS0tLS0tLS0tLS0tTmFtZS0tLS0tLS0tLS0NCj4gPiA+Pj4gKyAtLQ0KPiA+ID4+PiAr IC0tDQo+ID4gPj4+ICsgRnUNCj4gPiA+Pj4gKyBuY3Rpb24tLS0tLS0tLS0tLS0tLS0tUHJlLS0t UG9zdC0tLUNvbnRleHQtLS0tLS0tLS0tLQ0KPiA+ID4+PiArICAvLw0KPiA+ID4+PiArICBBZGRU ZXN0Q2FzZSAoU29ydFRlc3RzLCAiU29ydCB0aGUgQXJyYXkiLCAgICAgICAgIlNvcnQiLA0KPiA+ ID4+PiBTb3J0VUlOVDMyQXJyYXlTaG91bGRTdWNjZWVkLCAgIE5VTEwsIE5VTEwsIE5VTEwpOw0K PiA+ID4+PiArICBBZGRUZXN0Q2FzZSAoU29ydFRlc3RzLCAiQ29tcGFyZSB0aGUgQnVmZmVyIiwg ICAgIkNvbXBhcmUiLA0KPiA+ID4+PiBDb21wYXJlU2FtZUJ1ZmZlclNob3VsZFN1Y2NlZWQsIE5V TEwsIE5VTEwsIE5VTEwpOw0KPiA+ID4+PiArDQo+ID4gPj4+ICsgIC8vDQo+ID4gPj4+ICsgIC8v IEV4ZWN1dGUgdGhlIHRlc3RzLg0KPiA+ID4+PiArICAvLw0KPiA+ID4+PiArICBTdGF0dXMgPSBS dW5BbGxUZXN0U3VpdGVzIChGcmFtZXdvcmspOw0KPiA+ID4+PiArDQo+ID4gPj4+ICtFWElUOg0K PiA+ID4+PiArICBpZiAoRnJhbWV3b3JrKSB7DQo+ID4gPj4+ICsgICAgRnJlZVVuaXRUZXN0RnJh bWV3b3JrIChGcmFtZXdvcmspOw0KPiA+ID4+PiArICB9DQo+ID4gPj4+ICsNCj4gPiA+Pj4gKyAg cmV0dXJuIFN0YXR1czsNCj4gPiA+Pj4gK30NCj4gPiA+Pj4gKw0KPiA+ID4+PiArLyoqDQo+ID4g Pj4+ICsgIFN0YW5kYXJkIFBPU0lYIEMgZW50cnkgcG9pbnQgZm9yIGhvc3QgYmFzZWQgdW5pdCB0 ZXN0IGV4ZWN1dGlvbi4NCj4gPiA+Pj4gKyoqLw0KPiA+ID4+PiAraW50DQo+ID4gPj4+ICttYWlu ICgNCj4gPiA+Pj4gKyAgaW50IGFyZ2MsDQo+ID4gPj4+ICsgIGNoYXIgKmFyZ3ZbXQ0KPiA+ID4+ PiArICApDQo+ID4gPj4+ICt7DQo+ID4gPj4+ICsgIHJldHVybiBVbml0VGVzdGluZ0VudHJ5ICgp Ow0KPiA+ID4+PiArfQ0KPiA+ID4+PiAtLQ0KPiA+ID4+PiAyLjIwLjEud2luZG93cy4xDQo+ID4g Pj4NCj4gPiA+Pg0KPiA+ID4+DQo+ID4gPj4NCj4gPiA+Pg0KPiA+ID4NCj4gPiA+IC4NCj4gPiA+ DQo+IA0KPiANCj4gDQo+IA0KDQo=