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.928.1681964742518624558 for ; Wed, 19 Apr 2023 21:25:42 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=cJwf/6ii; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: benny.lin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681964742; x=1713500742; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=MTqKp6syn//Agq7wimOKtzHGrhKmz2NomEpJuEKPGhw=; b=cJwf/6iixFLJMAzG4fS3Y0FNyrm7zXMC0O3ZDDpd5llACbCJ7fMt5WhL TAx+361nwMPitC09dLF9BsTcsE3eEHZAPrqJKmgZoMUAjLNyewC/1u+Tw FCCVvet8RQ5nlowTcOUs3tsMEDh2Nmz1QoGs3nlBzxBpAWNF+/gc47C/M bg7g4IcLf2N9sE8s4DsCbx5BHQH4p6Q9aeCJ41GnvOMBtDz9UScwZmKQ/ wKPKw0Qzl5bInMHSaJnLi5J+gkdZPYokYywGOeC+bORbPULKksjB/9jDw p//yiFGg5cur0esa021jI1uFWo/yY8zMhWTdfPktoDzFsHSgpW7CzVTSk Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10685"; a="345630641" X-IronPort-AV: E=Sophos;i="5.99,211,1677571200"; d="scan'208";a="345630641" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2023 21:25:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10685"; a="937903112" X-IronPort-AV: E=Sophos;i="5.99,211,1677571200"; d="scan'208";a="937903112" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga006.fm.intel.com with ESMTP; 19 Apr 2023 21:25:34 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 19 Apr 2023 21:25:33 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 19 Apr 2023 21:25:33 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.175) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 19 Apr 2023 21:25:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BzrPyqRpg8tAJOyXwXstoCpins7+CYmB7ZZ9gJA1V0o/mNshIYopbRS9feQINycz8EuoYt2EIjm02h9dTYZRlZvWnLWnrm6yQODrBR45BMpqo32tgR/FxbwyX7qklCPpWQ41Tt5CyNuoMLWyWrucqiGVkzgO682w1zozftEgLzPOZq04n6vH1m8BvNKikKctBT3Q3HuYd3xyb3NdnPSrhJXr6pbWG3LBnFMqSBugq0egx6FOxJMOmuRYuhMebINi6sCseQLGzcnp9xik4LhgkvjZiBZyQwnOM594jS23Pq5jrkPxovTgVVeAdBSKdUIVPjuwuxJONR8bUdDi4l3O1w== 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=MTqKp6syn//Agq7wimOKtzHGrhKmz2NomEpJuEKPGhw=; b=E6KQzkSShOPggUuvSFuWFcH6qFiC1F3YBAEyqu/giNNa+ihilVZoyixNNLoTR0UMGDhcL1NkRyUhzDBOJ3eAC0zzc8HJzkO3usAcnQ+Btc/cvvxVqt2YgRGuDf0NPiPGsIjGH/XUQVlHRM8MKy0Fb3+obpTq5XMjIDl5fmDDDXNumzf48VPf7nahJCpNPGDk8TPZl0kYIbwCQ86oLQvLC5def+fuWzEG67V2oP1pIZm/IVoL8LUuSJGKWJMzS05Bq8Q41IovxYlzg/Wzc/RwWBfIo0c/AdPFtYYR8MoLg7sXXLr3W47hvTK9tsPzu2OKBBsj/0igY6S6Ctc+zvdxug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BYAPR11MB3557.namprd11.prod.outlook.com (2603:10b6:a03:b4::21) by CH0PR11MB5539.namprd11.prod.outlook.com (2603:10b6:610:d6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Thu, 20 Apr 2023 04:25:29 +0000 Received: from BYAPR11MB3557.namprd11.prod.outlook.com ([fe80::98f:a972:7cba:4655]) by BYAPR11MB3557.namprd11.prod.outlook.com ([fe80::98f:a972:7cba:4655%5]) with mapi id 15.20.6319.022; Thu, 20 Apr 2023 04:25:29 +0000 From: "Benny Lin" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , Pedro Falcato Subject: Re: [PATCH v3 2/3] MdePkg: Support FDT library. Thread-Topic: [PATCH v3 2/3] MdePkg: Support FDT library. Thread-Index: AQHZcO5qW6oN5UWoSkGio7T2Nj6xsq8yzIKAgAALeHCAAEsXgIAAYPkQ Date: Thu, 20 Apr 2023 04:25:29 +0000 Message-ID: References: <20230417053505.670-1-benny.lin@intel.com> <20230417053505.670-3-benny.lin@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-traffictypediagnostic: BYAPR11MB3557:EE_|CH0PR11MB5539:EE_ x-ms-office365-filtering-correlation-id: 9e83aece-eb15-4323-63e7-08db415745f5 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rT922Hg5KErtCCl/KbFRtCjPABSu7U2J7t7UBDfRs2qOr2VQ5JvP6aipIzeIyyM4CzEpaDrq+FavOjr09H0+7nJ6bfAzaaDH7BIFor1ze5aHJVGv8RMGVCrGCsfuboE462Y2iEVmrVF6+2dR6yOeBYmt6dKHE2bMbz0AlAwzp88ak3ZDet+xJdQn3QlYJE7392m+R4PisXVB/in4CFDr9BInK/66kfXraEJwpLYvikU39RrHhDVFM5k+jHfO+gD4OsMI2i4JLYvssj0c/PAwzgzycQ/Yef86Ijv9uxs+WF4koJlU0BGxnZkm2vGCHuToORIhi5IAdZvIkv0nr0//WEp2QaHf9fKEUUxCp3LD6RWl90yUojn4CgGsHnOVYiYDXAMTShpFCyw2psraJHMw+SCgcdg2fDBSx6CMc2awWTWM3+OW7Vuwv21Id/fSbbBLlKMBnqZbYNCTco0wmn/wjPSVqrxE+o1xUPNjgSJ7SkxbQBjrTDc/QpyLNE5NpdajY0jA2ydQ8lN676k/Hu6byNRdO7wbIlBnBwfhjfETCpdiSv8pSWQYwskpisWqAdFar9nWa/A7ebnXDgEmDb3B52K8kY9KJF0zgymUaAoMhgKvn1gxjileD5UnJGNK+XxAGPSmSDSG+s5xP23348c9Pg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3557.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(366004)(396003)(136003)(39860400002)(376002)(451199021)(86362001)(33656002)(30864003)(38070700005)(2906002)(55016003)(7696005)(71200400001)(9686003)(45080400002)(53546011)(186003)(83380400001)(26005)(6506007)(966005)(478600001)(66476007)(4326008)(66556008)(64756008)(66946007)(66446008)(82960400001)(122000001)(41300700001)(52536014)(38100700002)(76116006)(54906003)(110136005)(19627235002)(316002)(8676002)(8936002)(5660300002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Sk1FYjM2UXRuMDRMY1BnT0dRcjBQRE5XVnBOZjJpMThJM0QwQi9GdGNTNitt?= =?utf-8?B?T1BCZmNyL1NqbWhBaXZCS0NWK0dTMUd0SWh4ZUNUelhPNjcvSFNuVUs3NGtF?= =?utf-8?B?Z2lNSkc2UEFRdEtWNWlMU0FqcGJSeG5PaVU3elg1SjRLVVpMaGVvRHNHSkJx?= =?utf-8?B?Sm1oanZJMFQ3c04ycnhNWDMwd1drdHpaWVI5bVFTbGo4eFFtenY4UWppVFV6?= =?utf-8?B?ZkpnVXloUXdFdDFyZnZKZndiU3J2TjJkczVWbFhNSEFQRlFib1VSNzZvY25r?= =?utf-8?B?TDhia08rMDk0endQOWdDWVdXVWNqSXZEeTRaUkpUQmFlTDRoWFhVeC9nL1BU?= =?utf-8?B?NU9FdGwwUjBab3hBcUE0dzR1MjBlSWdCN0U0Q1kyd3dQNjBSRjZMeU1EQ1dZ?= =?utf-8?B?K2hzczJQamdDNVMzZ0RDS0Z6Yk91Vm5MWW1PNDk5N1Rpby9BbHdtV05ET2V6?= =?utf-8?B?WHpPRHNYRW95OWdadkx6OFpCUEZyQXRXYkhIRWNjOUJwOTJJWkVydU8rSm1o?= =?utf-8?B?c2poZXNOVHdSaURFYUZCekd3aDZVa1BmMVZHOWxxZ2VvQmEycWwwd0Uxelc3?= =?utf-8?B?aEdCZk00NHJld1huMHpYOHUrSUpwZndNVG5JRDdITU4xcmFteTZtaE0xWXdQ?= =?utf-8?B?aU5ZTExVMERrcFluOUlrUHR6Yy9BaFBkUXh5d2ZnNkI5L0d0SUx0QjFSSEp3?= =?utf-8?B?cFZZUHlCREcvSHExcnJsSENvYytsMDRjTTgrNUQ2ejNvMS94enpGL1ErQXRT?= =?utf-8?B?eHZ5UXZUaitnTkRvMzA3MWFvaWF3QzBRdytXTFdkWXQzdVVuYkdtODd5dE5x?= =?utf-8?B?dElNd0szckhTV2dtQ2ZSQXQrdTRGWklJUFBBelBJZDVBRHBlZncybTM2QzdL?= =?utf-8?B?Mk9CNnF3eE1MUVo5WmpqbWQ2Mm1iVG1ndUF0WnBUL1Buc1MyMlpxakVjSE1i?= =?utf-8?B?WE91V3R5dUU5a3hWNWthTGFXajZTYUh4Tm9PYithK084L1lTZVpLR0w2ZGhC?= =?utf-8?B?YmxzYmVwd0w1MDlYQjRleHhiUFVFTU5ySktxd05idXkxZzg2YnQ5ditmT2My?= =?utf-8?B?bTVOdXpjYnVQNWVoYVBYY0tXeDZicDVvVm02Vi83OGwwNjk1TkdDY0doRjMr?= =?utf-8?B?cXRDaGdLTjFZT3Fpc3E4ZmVnd2g3cWJnUHRodmVGV2sxaVcxRWFDSnZUQzhH?= =?utf-8?B?YVZUeHFxcU40MithVUFaV1pHWGVGMjFqU3REM3VrMjZKYWdvZ0hPWU53VWF0?= =?utf-8?B?U0x0K1RWaG9wRWkyUm91THlpNWk2ODRCZkVNU1ZXVEJKZXVBbjhLdFNyd3Jw?= =?utf-8?B?LzRxUjdkT25Zbmt6TTArR0FzL1NuUWpjOUZGbFBKeXJPSlQ3dmk5cGpjT0g5?= =?utf-8?B?bjIydDFSRnl1dDJaclcrdlFhS042cHFhUFpVMWVOelAwazdvNHVOdW9tbkhY?= =?utf-8?B?S3pTUlVma1l1VmZRMG9JYy9BV296QWNKWW9NSmpiNEtCRjI2OWd6bEVmMnpt?= =?utf-8?B?bW9FeGZ2Q3VpdFNZcXpkc1ZYeElUQ09oRWpGdFZON05XUTl0ekxMVkFVOHlh?= =?utf-8?B?NHd1dGZ6eTE0UVdmVXBQbUtMZFZGVXVRNlVtM0FtQ096ZjRETnVuWU9iS1FR?= =?utf-8?B?MzNlMG54YytieW9qd0Zldk5rVkVvUUZuYStPOTJBUEM1MFZLRCt0S0JrdVZj?= =?utf-8?B?YkZzd3B5NURmVGRwSUxIekhOUmllL3JPUHZwSmdIS1R4WUR4WWVMU3VyYkN3?= =?utf-8?B?dnZNR1pGL1JwOVZQU1FBZkgxMzZDcmxkbGU0enlVMW5WTGxXeHY4OHFhZjhV?= =?utf-8?B?SmYxNDlUTE1DWXNPaVh5dDNYSDVqVWNNMEdCMGlOYmZvMk8zaWlVbTNVSUZU?= =?utf-8?B?ejRPaGJjSytQdGFRNU93ajd1ZldyQVRBa1k4RzNJVjRKVkY4TGNzMWJjMTJF?= =?utf-8?B?UkQ0eDkwcGZpR05YS2cyd0pvdDVMeDBGNkZtVVNQcnZRakR2MjNWWXV3bWg3?= =?utf-8?B?RjBTWXNobHNSSlRaZ0gzL1JKWWpxbkRCT0Q3TUFtczJtaEgydFFhVndoY25a?= =?utf-8?B?SGlJY1ZlNXhNeldrZ1hXTk1OL2JBejBCNHdLaDhwb0JGMjBoNEZ2b0Ywa3NB?= =?utf-8?Q?Hqt7ZH34JRQBJkgBlKaeEZuEs?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3557.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e83aece-eb15-4323-63e7-08db415745f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2023 04:25:29.4312 (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: WI9sWyjEtP9c2LshWtDAxdqf1two4EJ9LdecE05UntL9ZxMMd35SPL3qcVTSPUqfOpMyHjDW5+pn+qOwnZ9g9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5539 Return-Path: benny.lin@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4gDQo+U2VudDogVGh1cnNkYXksIEFwcmlsIDIw LCAyMDIzIDU6MDQgQU0NCj5UbzogTGluLCBCZW5ueSA8YmVubnkubGluQGludGVsLmNvbT47IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+Q2M6IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgUGVkcm8gRmFs Y2F0byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+DQo+U3ViamVjdDogUkU6IFtQQVRDSCB2MyAyLzNdIE1kZVBr ZzogU3VwcG9ydCBGRFQgbGlicmFyeS4NCj4NCj5SZXNwb25zZXMgYmVsb3cNCj4NCj5NaWtlDQo+ DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogTGluLCBCZW5ueSA8YmVu bnkubGluQGludGVsLmNvbT4NCj4+IFNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMTksIDIwMjMgMTA6 MTIgQU0NCj4+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+OyANCj4+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+PiBDYzogR2FvLCBMaW1pbmcgPGdhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcgDQo+PiA8emhpZ3VhbmcubGl1QGlu dGVsLmNvbT47IFBlZHJvIEZhbGNhdG8gPHBlZHJvLmZhbGNhdG9AZ21haWwuY29tPg0KPj4gU3Vi amVjdDogUkU6IFtQQVRDSCB2MyAyLzNdIE1kZVBrZzogU3VwcG9ydCBGRFQgbGlicmFyeS4NCj4+ IA0KPj4gUGxlYXNlIGZpbmQgbXkgZmVlZGJhY2sgYmVsb3cuDQo+PiBXZSBjYW4gcmVtb3ZlIEZE VF9SRVNFUlZFX0VOVFJZIGJ1dCBrZWVwIEZEVF9OT0RFX0hFQURFUiwgd2hhdCBkbyB5b3UgdGhp bms/DQo+PiANCj4+IFFRUQ0KPj4gQmVubnkNCj4+IA0KPj4gPi0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+PiA+RnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPj4gPlNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMTksIDIwMjMgMTE6NTQgUE0NCj4+ ID5UbzogTGluLCBCZW5ueSA8YmVubnkubGluQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBz LmlvDQo+PiA+Q2M6IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUs IFpoaWd1YW5nIA0KPj4gPjx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgUGVkcm8gRmFsY2F0byA8 cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+OyANCj4+ID5LaW5uZXksDQo+PiBNaWNoYWVsIEQgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPj4gPlN1YmplY3Q6IFJFOiBbUEFUQ0ggdjMgMi8z XSBNZGVQa2c6IFN1cHBvcnQgRkRUIGxpYnJhcnkuDQo+PiA+DQo+PiA+QSBmZXcgY29tbWVudHMg YmVsb3cuDQo+PiA+DQo+PiA+TWlrZQ0KPj4gPg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4+ID4+IEZyb206IExpbiwgQmVubnkgPGJlbm55LmxpbkBpbnRlbC5jb20+DQo+PiA+ PiBTZW50OiBTdW5kYXksIEFwcmlsIDE2LCAyMDIzIDEwOjM1IFBNDQo+PiA+PiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4+ID4+IENjOiBMaW4sIEJlbm55IDxiZW5ueS5saW5AaW50ZWwuY29t PjsgS2lubmV5LCBNaWNoYWVsIEQgDQo+PiA+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ OyBHYW8sIExpbWluZyANCj4+ID4+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpo aWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgDQo+PiA+PiBQZWRybyBGYWxjYXRvIDxw ZWRyby5mYWxjYXRvQGdtYWlsLmNvbT4NCj4+ID4+IFN1YmplY3Q6IFtQQVRDSCB2MyAyLzNdIE1k ZVBrZzogU3VwcG9ydCBGRFQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiBGcm9tOiBCZW5ueSBMaW4g PGJlbm55LmxpbkBpbnRlbC5jb20+DQo+PiA+Pg0KPj4gPj4gUkVGOiBodHRwczovL2J1Z3ppbGxh LnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTINCj4+ID4+IEFkZCBGRFQgc3VwcG9y dCBpbiBFREsyIGJ5IHN1Ym1vZHVsZSAzcmQgcGFydHkgbGliZmR0DQo+PiA+PiAoaHR0cHM6Ly9n aXRodWIuY29tL2RldmljZXRyZWUtb3JnL3B5bGliZmR0L3RyZWUvbWFpbi9saWJmZHQpDQo+PiA+ PiBhbmQgcmVmZXIgdG8gTGliY0xpYiBpbXBsZW1lbnRhdGlvbiBieSBQZWRyby4NCj4+ID4+DQo+ PiA+PiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ PiA+PiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPj4gPj4gQ2M6 IFpoaWd1YW5nIExpdSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4+ID4+IEFja2VkLWJ5OiBQ ZWRybyBGYWxjYXRvIDxwZWRyby5mYWxjYXRvQGdtYWlsLmNvbT4NCj4+ID4+IFNpZ25lZC1vZmYt Ynk6IEJlbm55IExpbiA8YmVubnkubGluQGludGVsLmNvbT4NCj4+ID4+IC0tLQ0KPj4gPj4gIE1k ZVBrZy9JbmNsdWRlL0xpYnJhcnkvRmR0TGliLmggICAgICAgICAgIHwgMzE0ICsrKysrKysrKysr KysrKysrKysrDQo+PiA+PiAgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9CYXNlRmR0TGliLmlu ZiAgfCAgNjIgKysrKyANCj4+ID4+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExp Yi51bmkgIHwgIDE0ICsNCj4+ID4+ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0ZkdExpYi5j ICAgICAgICB8IDMwMSArKysrKysrKysrKysrKysrKysrDQo+PiA+PiAgTWRlUGtnL0xpYnJhcnkv QmFzZUZkdExpYi9MaWJGZHRTdXBwb3J0LmggfCAgOTkgKysrKysrIA0KPj4gPj4gTWRlUGtnL0xp YnJhcnkvQmFzZUZkdExpYi9MaWJGZHRXcmFwcGVyLmMgfCAxNzMgKysrKysrKysrKysNCj4+ID4+ ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL2xpbWl0cy5oICAgICAgICB8ICAxMCArDQo+PiA+ PiAgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRib29sLmggICAgICAgfCAgMTAgKw0KPj4g Pj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkZGVmLmggICAgICAgIHwgIDEwICsNCj4+ ID4+ICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL3N0ZGludC5oICAgICAgICB8ICAxMCArDQo+ PiA+PiAgTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9zdGRsaWIuaCAgICAgICAgfCAgMTAgKw0K Pj4gPj4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvc3RyaW5nLmggICAgICAgIHwgIDEwICsN Cj4+ID4+ICBNZGVQa2cvTWRlUGtnLmNpLnlhbWwgICAgICAgICAgICAgICAgICAgICB8ICAxNyAr LQ0KPj4gPj4gIE1kZVBrZy9NZGVQa2cuZGVjICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICsNCj4+ID4+ICBNZGVQa2cvTWRlUGtnLmRzYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArDQo+PiA+PiAgMTUgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQ0KPj4gPj4NCj4+ID4+IGRpZmYgLS1naXQgYS9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5 L0ZkdExpYi5oIA0KPj4gPj4gYi9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZkdExpYi5oIG5ldyBm aWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+PiA+PiAwMDAwMDAwMDAwLi5kNTliNzQ5YzI1DQo+PiA+ PiAtLS0gL2Rldi9udWxsDQo+PiA+PiArKysgYi9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZkdExp Yi5oDQo+PiA+PiBAQCAtMCwwICsxLDMxNCBAQA0KPj4gPj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ ID4+ICsgIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBMaWJyYXJ5Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ ID4+DQo+PiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4+ID4+DQo+PiA+PiArICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAr KiovDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaWZuZGVmIEZEVF9MSUJfSF8NCj4+ ID4+DQo+PiA+PiArI2RlZmluZSBGRFRfTElCX0hfDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsvLy8NCj4+ID4+DQo+PiA+PiArLy8vIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBkZWZpbml0 aW9uDQo+PiA+Pg0KPj4gPj4gKy8vLw0KPj4gPj4NCj4+ID4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ PiA+Pg0KPj4gPj4gKyAgVUlOVDMyICAgIE1hZ2ljOyAgICAgICAgICAgICAgIC8qIG1hZ2ljIHdv cmQgRkRUX01BR0lDICovDQo+PiA+Pg0KPj4gPj4gKyAgVUlOVDMyICAgIFRvdGFsU2l6ZTsgICAg ICAgICAgIC8qIHRvdGFsIHNpemUgb2YgRFQgYmxvY2sgKi8NCj4+ID4+DQo+PiA+PiArICBVSU5U MzIgICAgT2Zmc2V0RHRTdHJ1Y3Q7ICAgICAgLyogb2Zmc2V0IHRvIHN0cnVjdHVyZSAqLw0KPj4g Pj4NCj4+ID4+ICsgIFVJTlQzMiAgICBPZmZzZXREdFN0cmluZ3M7ICAgICAvKiBvZmZzZXQgdG8g c3RyaW5ncyAqLw0KPj4gPj4NCj4+ID4+ICsgIFVJTlQzMiAgICBPZmZzZXRNZW1Sc3ZtYXA7ICAg ICAvKiBvZmZzZXQgdG8gbWVtb3J5IHJlc2VydmUgbWFwICovDQo+PiA+Pg0KPj4gPj4gKyAgVUlO VDMyICAgIFZlcnNpb247ICAgICAgICAgICAgIC8qIGZvcm1hdCB2ZXJzaW9uICovDQo+PiA+Pg0K Pj4gPj4gKyAgVUlOVDMyICAgIExhc3RDb21wVmVyc2lvbjsgICAgIC8qIGxhc3QgY29tcGF0aWJs ZSB2ZXJzaW9uICovDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIC8qIHZlcnNpb24g MiBmaWVsZHMgYmVsb3cgKi8NCj4+ID4+DQo+PiA+PiArICBVSU5UMzIgICAgQm9vdENwdWlkUGh5 czsgICAgICAgLyogV2hpY2ggcGh5c2ljYWwgQ1BVIGlkIHdlJ3JlDQo+PiA+Pg0KPj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rpbmcgb24gKi8NCj4+ID4+DQo+ PiA+PiArICAvKiB2ZXJzaW9uIDMgZmllbGRzIGJlbG93ICovDQo+PiA+Pg0KPj4gPj4gKyAgVUlO VDMyICAgIFNpemVEdFN0cmluZ3M7ICAgICAgIC8qIHNpemUgb2YgdGhlIHN0cmluZ3MgYmxvY2sg Ki8NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgLyogdmVyc2lvbiAxNyBmaWVsZHMg YmVsb3cgKi8NCj4+ID4+DQo+PiA+PiArICBVSU5UMzIgICAgU2l6ZUR0U3RydWN0OyAgICAgICAg Lyogc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGJsb2NrICovDQo+PiA+Pg0KPj4gPj4gK30gRkRUX0hF QURFUjsNCj4+ID4NCj4+ID5JIHNlZSB0aGUgbWFjcm9zIGJlbG93IHVzZSBTd2FwQnl0ZXMzMigp IG9uIGFsbCB0aGUgZmllbGRzIGZyb20gdGhpcyANCj4+ID5zdHJ1Y3R1cmUuICBEb2VzIHRoaXMg bWVhbiB0aGlzIHN0cnVjdHVyZSBpcyBiaWcgPmVuZGlhbj8gIElmDQo+PiB0aGF0IGlzIHRoZSBj YXNlLCB0aGVuIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGlzIHN0cnVjdHVyZSBhbmQgYWxsIA0KPj4g aW5kaXZpZHVhbCBmaWVsZHMgbXVzdCBtYWtlIHRoYXQgdmVyeSBjbGVhciA+c28gYW55IGNvbnN1 bWVyIG9mIHRoZSANCj4+IHN0cnVjdHVyZSBrbm93cyBpdCBkb2VzIG5vdCBmb2xsb3cgdGhlIGRl ZmF1bHQgZW5kaWFubmVzcyBvZiBVRUZJL1BJIGFuZCB0aGF0IGNvbnN1bWVycyA+bXVzdCBlaXRo ZXIgdXNlIHRoZSBtYWNyb3Mgb3IgY29uc3VtZXJzIG11c3QgdXNlIFN3YXBCeXRlczMyKCkgb24g dGhlaXIgb3duIHdoZW4gdXNpbmcgdGhpcyBzdHJ1Y3R1cmUgZGlyZWN0bHkuDQo+PiANCj4+IFll cywgaXQncyBiaWcgZW5kaWFuLiBJIHdpbGwgY29tcGxldGUgbW9yZSBkZXNjcmlwdGlvbnMgaW4g cGF0Y2ggdjQuDQo+DQo+V291bGQgaXQgYmUgc2ltcGxlciBpZiB3ZSBoYXZlIGEgbGliIHNlcnZp Y2UgdGhhdCBjb252ZXJ0cyB0aGUgZW50aXJlIGhlYWRlciBmcm9tIGJpZyBlbmRpYW4gdG8gbGl0 dGxlIGVuZGlhbi4NCj5UaGF0IHdheSwgdGhlIGNvbnN1bWVyIGNhbiB1c2UgdGhlIEZEVF9IRUFE RVIgZGlyZWN0bHkgd2l0aG91dCBhbnkgb2YgdGhlIG1hY3Jvcz8NCj4NCj5BbHNvLCBpcyB0aGUg cmVzdCBvZiB0aGUgRkRUIGJsb2IgYWxzbyBiaWcgZW5kaWFuPw0KDQpGRFQgYmxvYiBmb3JtYXQg aXMgYmluYXJ5IGVuY29kaW5nIG9mIEZEVCBkYXRhIHdpdGggYmlnIGVuZGlhbi4gSW4gYWRkaXRp b24sIHRoZSBjb25zdW1lciB3aWxsIHNldCBvciBnZXQgRkRUIGRhdGEgd2l0aCBGRFQgYmxvYi4g V2UgY2FuIGNvbXBsZXRlIG1vcmUgZGVzY3JpcHRpb25zIHRvIHdhcm4gY29uc3VtZXJzIHRvIGJl IGNhcmVmdWwgaWYganVzdCB1c2UgaGVhZGVyIHN0cnVjdCBmb3IgbWFwcGluZyBhbmQgZ2V0L3Nl dCBGRFQgZGF0YSB3aXRoIEZEVCBibG9iLiANCg0KRm9yIHByb3ZpZGUgbGliIHNlcnZpY2VzIHRo YXQgY29udmVydHMgYmV0d2VlbiBiaWcgZW5kaWFuIGFuZCBsaXR0bGUgZW5kaWFuLCB3ZSBjYW4g cHJvdmlkZSBhIGdldCBoZWFkZXIgZnVuY3Rpb24gdG8gY29udmVydCBiZXR3ZWVuIGJpZyBlbmRp YW4gYW5kIGxpdHRsZSBlbmRpYW4uIEhvd2V2ZXIsIHdlIGFsc28gbmVlZCB0byBjb25zaWRlciB0 aGUgcHJvcGVydHkgdmFsdWUgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgdGhlbiB3ZSBjYW4gY29u dmVydCBpbiB3cmFwcGVyIGZ1bmN0aW9ucy4NCg0KRm9yIGV4YW1wbGUsDQoNCklOVDMyDQpFRklB UEkNCkZkdFNldFByb3AgKA0KICBJTiBWT0lEICAgICAgICAgKkZkdCwNCiAgSU4gSU5UMzIgICAg ICAgIE5vZGVPZmZzZXQsDQogIElOIENPTlNUIENIQVI4ICAqTmFtZSwNCiAgSU4gQ09OU1QgVk9J RCAgICpWYWx1ZSwNCiAgSU4gVUlOVDMyICAgICAgIExlbmd0aA0KICApDQp7DQogIHJldHVybiBm ZHRfc2V0cHJvcCAoRmR0LCBOb2RlT2Zmc2V0LCBOYW1lLCBWYWx1ZSwgKGludClMZW5ndGgpOw0K fQ0KDQpNb3JlIGZ1bmN0aW9ucyBmb3IgdmFyaW91cyBieXRlIHdpZHRoLg0KSU5UMzINCkVGSUFQ SQ0KRmR0U2V0UHJvcDE2ICgNCiAgSU4gVk9JRCAgICAgICAgICpGZHQsDQogIElOIElOVDMyICAg ICAgICBOb2RlT2Zmc2V0LA0KICBJTiBDT05TVCBDSEFSOCAgKk5hbWUsDQogIElOIENPTlNUIFVJ TlQxNiAgICpWYWx1ZSwNCiAgSU4gVUlOVDMyICAgICAgIExlbmd0aA0KICApDQp7DQogIHJldHVy biBmZHRfc2V0cHJvcCAoRmR0LCBOb2RlT2Zmc2V0LCBOYW1lLCBTd2FwQnl0ZXMxNihWYWx1ZSks IChpbnQpTGVuZ3RoKTsNCn0NCg0KSU5UMzINCkVGSUFQSQ0KRmR0U2V0UHJvcDMyICgNCiAgSU4g Vk9JRCAgICAgICAgICpGZHQsDQogIElOIElOVDMyICAgICAgICBOb2RlT2Zmc2V0LA0KICBJTiBD T05TVCBDSEFSOCAgKk5hbWUsDQogIElOIENPTlNUIFVJTlQzMiAgICpWYWx1ZSwNCiAgSU4gVUlO VDMyICAgICAgIExlbmd0aA0KICApDQp7DQogIHJldHVybiBmZHRfc2V0cHJvcCAoRmR0LCBOb2Rl T2Zmc2V0LCBOYW1lLCBTd2FwQnl0ZXMzMihWYWx1ZSksIChpbnQpTGVuZ3RoKTsNCn0NCg0KPj4g DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+PiA+Pg0K Pj4gPj4gKyAgVUlOVDY0ICAgIEFkZHJlc3M7DQo+PiA+Pg0KPj4gPj4gKyAgVUlOVDY0ICAgIFNp emU7DQo+PiA+Pg0KPj4gPj4gK30gRkRUX1JFU0VSVkVfRU5UUlk7DQo+PiA+DQo+PiA+DQo+PiA+ SSBkbyBub3Qgc2VlIHRoaXMgdHlwZSB1c2VkIGFueXdoZXJlIGluIHRoZSBsaWIgY2xhc3Mgb3Ig dGhlIGxpYiBpbnN0YW5jZS4NCj4+ID5DYW4gaXQgYmUgcmVtb3ZlZD8NCj4+IA0KPj4gSSB0aGlu ayB3ZSBjYW4gcmVtb3ZlIGl0IGJlY2F1c2UgaXQgbWlnaHQgYmUgbm90IHVzZWQgZm9yIGZ1cnRo ZXIgdXNhZ2Ugb2YgRkRUIHN1cHBvcnQuDQo+PiANCj4+ID4NCj4+ID4+DQo+PiA+PiArDQo+PiA+ Pg0KPj4gPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4+ID4+DQo+PiA+PiArICBVSU5UMzIgICAgVGFn Ow0KPj4gPj4NCj4+ID4+ICsgIENIQVI4ICAgICBOYW1lW107DQo+PiA+Pg0KPj4gPj4gK30gRkRU X05PREVfSEVBREVSOw0KPj4gPg0KPj4gPg0KPj4gPkkgZG8gbm90IHNlZSB0aGlzIHR5cGUgdXNl ZCBhbnl3aGVyZSBpbiB0aGUgbGliIGNsYXNzIG9yIHRoZSBsaWIgaW5zdGFuY2UuDQo+PiA+Q2Fu IGl0IGJlIHJlbW92ZWQ/DQo+PiANCj4+IFdoZW4gd2UgbmVlZCByZXRyaWV2ZSBhIG5vZGUgZnJv bSBhIEZEVCBibG9iLCB3ZSB3aWxsIGdldCBhIG5vZGUgDQo+PiBvZmZzZXQgdGhlbiB3ZSBjb3Vs ZCB1c2UgdGhlIHN0cnVjdCB0byBtYXAgdGhlIG5vZGUgY29udGVudC4gSXQncyB2ZXJ5IHVzZWZ1 bC4NCj4NCj5QbGVhc2UgYWRkIGEgY29tbWVudCBoZWFkZXIgZm9yIHRoaXMgc3RydWN0dXJlIGFu ZCBkZXNjcmliZSB0aGUgdXNhZ2UgYXMgaXQgcmVsYXRlZCB0byB0aGUgcmVzdCBvZiB0aGUgRmR0 TGliID5zZXJ2aWNlcy4NCg0KSSB3aWxsIGFkZCBkZXNjcmlwdGlvbnMgZm9yIHRoZSB1c2FnZSBh bmQgcmVtb3ZlIEZEVF9SRVNFUlZFX0VOVFJZIGluIHBhdGNoIHY0Lg0KDQo+DQo+PiANCj4+ID4N Cj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4+ID4+DQo+ PiA+PiArICBVSU5UMzIgICAgVGFnOw0KPj4gPj4NCj4+ID4+ICsgIFVJTlQzMiAgICBMZW5ndGg7 DQo+PiA+Pg0KPj4gPj4gKyAgVUlOVDMyICAgIE5hbWVPZmZzZXQ7DQo+PiA+Pg0KPj4gPj4gKyAg Q0hBUjggICAgIERhdGFbXTsNCj4+ID4+DQo+PiA+PiArfSBGRFRfUFJPUEVSVFk7DQo+PiA+Pg0K Pj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIEZEVF9HRVRfSEVBREVSKEZkdCwgRmllbGQp ICBTd2FwQnl0ZXMzMigoKENPTlNUIEZEVF9IRUFERVINCj4+ID4+ICsqKShGZHQpKS0+RmllbGQp DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIEZEVF9NQUdJQyhGZHQpICAg ICAgICAgICAgICAoRkRUX0dFVF9IRUFERVIoRmR0LCBNYWdpYykpDQo+PiA+Pg0KPj4gPj4gKyNk ZWZpbmUgRkRUX1RPVEFMX1NJWkUoRmR0KSAgICAgICAgIChGRFRfR0VUX0hFQURFUihGZHQsIFRv dGFsU2l6ZSkpDQo+PiA+Pg0KPj4gPj4gKyNkZWZpbmUgRkRUX09GRlNFVF9EVF9TVFJVQ1QoRmR0 KSAgIChGRFRfR0VUX0hFQURFUihGZHQsIE9mZnNldER0U3RydWN0KSkNCj4+ID4+DQo+PiA+PiAr I2RlZmluZSBGRFRfT0ZGU0VUX0RUX1NUUklOR1MoRmR0KSAgKEZEVF9HRVRfSEVBREVSKEZkdCwN Cj4+ID4+ICtPZmZzZXREdFN0cmluZ3MpKQ0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIEZEVF9PRkZT RVRfTUVNX1JTVk1BUChGZHQpICAoRkRUX0dFVF9IRUFERVIoRmR0LA0KPj4gPj4gK09mZnNldE1l bVJzdm1hcCkpDQo+PiA+Pg0KPj4gPj4gKyNkZWZpbmUgRkRUX1ZFUlNJT04oRmR0KSAgICAgICAg ICAgIChGRFRfR0VUX0hFQURFUihGZHQsIFZlcnNpb24pKQ0KPj4gPj4NCj4+ID4+ICsjZGVmaW5l IEZEVF9MQVNUX0NPTVBfVkVSU0lPTihGZHQpICAoRkRUX0dFVF9IRUFERVIoRmR0LA0KPj4gPj4g K0xhc3RDb21wVmVyc2lvbikpDQo+PiA+Pg0KPj4gPj4gKyNkZWZpbmUgRkRUX0JPT1RfQ1BVSURf UEhZUyhGZHQpICAgIChGRFRfR0VUX0hFQURFUihGZHQsIEJvb3RDcHVpZFBoeXMpKQ0KPj4gPj4N Cj4+ID4+ICsjZGVmaW5lIEZEVF9TSVpFX0RUX1NUUklOR1MoRmR0KSAgICAoRkRUX0dFVF9IRUFE RVIoRmR0LCBTaXplRHRTdHJpbmdzKSkNCj4+ID4+DQo+PiA+PiArI2RlZmluZSBGRFRfU0laRV9E VF9TVFJVQ1QoRmR0KSAgICAgKEZEVF9HRVRfSEVBREVSKEZkdCwgU2l6ZUR0U3RydWN0KSkNCj4+ ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIFZlcmlmeSB0 aGUgaGVhZGVyIG9mIHRoZSBGbGF0dGVuZWQgRGV2aWNlIFRyZWUNCj4+ID4+DQo+PiA+PiArDQo+ PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBG RFQgYmxvYi4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHJldHVybiBaZXJvIGZv ciBzdWNjZXNzZnVsbHksIG90aGVyd2lzZSBmYWlsZWQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4N Cj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArSU5UMzINCj4+ID4+DQo+PiA+PiArRUZJQVBJDQo+ PiA+Pg0KPj4gPj4gK0ZkdENoZWNrSGVhZGVyICgNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBW T0lEICAqRmR0DQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4g Pj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIENyZWF0ZSBhIGVtcHR5IEZsYXR0ZW5lZCBEZXZpY2Ug VHJlZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBCdWZmZXIg ICAgICAgICBUaGUgcG9pbnRlciB0byBhbGxvY2F0ZSBhIHBvb2wgZm9yIEZEVCBibG9iLg0KPj4g Pj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gQnVmZmVyU2l6ZSAgICAgVGhlIEJ1ZmZlclNpemUgdG8g dGhlIHBvb2wgc2l6ZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHJldHVybiBa ZXJvIGZvciBzdWNjZXNzZnVsbHksIG90aGVyd2lzZSBmYWlsZWQuDQo+PiA+Pg0KPj4gPj4gKw0K Pj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArUkVUVVJOX1NUQVRVUw0KPj4gPj4NCj4+ ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0Q3JlYXRlRW1wdHlUcmVlICgNCj4+ID4+DQo+ PiA+PiArICBJTiBWT0lEICAgKkJ1ZmZlciwNCj4+ID4+DQo+PiA+PiArICBJTiBVSU5UTiAgQnVm ZmVyU2l6ZQ0KPj4gPj4NCj4+ID4+ICsgICk7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIG5leHQgbm9kZSBmcm9t IHRoZSBnaXZlbiBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1b aW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBub2Rl Lg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gRGVwdGggICAgICAgICAgVGhlIGRlcHRoIHRv IHRoZSBsZXZlbCBvZiB0cmVlIGhpZXJhcmNoeS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4g Pj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgbm9kZSBvZmZzZXQuDQo+PiA+Pg0KPj4g Pj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArSU5UMzINCj4+ID4+DQo+PiA+ PiArRUZJQVBJDQo+PiA+Pg0KPj4gPj4gK0ZkdE5leHROb2RlICgNCj4+ID4+DQo+PiA+PiArICBJ TiBDT05TVCBWT0lEICAqRmR0LA0KPj4gPj4NCj4+ID4+ICsgIElOIElOVDMyICAgICAgIE9mZnNl dCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAqRGVwdGgNCj4+ID4+DQo+PiA+PiAr ICApOw0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4gPj4gKyAg UmV0dXJucyBhIG9mZnNldCBvZiBmaXJzdCBub2RlIHVuZGVyIHRoZSBnaXZlbiBub2RlLg0KPj4g Pj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRo ZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0 ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ ID4+DQo+PiA+PiArICBAcmV0dXJuIFRoZSBvZmZzZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4+ ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyoqLw0KPj4gPj4NCj4+ID4+ICtJTlQzMg0KPj4g Pj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0Rmlyc3RTdWJub2RlICgNCj4+ID4+ DQo+PiA+PiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPj4gPj4NCj4+ID4+ICsgIElOIElOVDMy ICAgICAgIE9mZnNldA0KPj4gPj4NCj4+ID4+ICsgICk7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4N Cj4+ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIG5leHQgbm9k ZSBmcm9tIHRoZSBnaXZlbiBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBA cGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4N Cj4+ID4+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91 cyBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcmV0dXJuIFRoZSBvZmZz ZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyoq Lw0KPj4gPj4NCj4+ID4+ICtJTlQzMg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+ PiArRmR0TmV4dFN1Ym5vZGUgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICpGZHQs DQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0DQo+PiA+Pg0KPj4gPj4gKyAg KTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIFJl dHVybnMgYSBvZmZzZXQgb2YgZmlyc3Qgbm9kZSB3aGljaCBpbmNsdWRlcyB0aGUgZ2l2ZW4gbmFt ZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAg ICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2lu XSBQYXJlbnRPZmZzZXQgICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSB3aGljaCBzdGFydCBmaW5k IHVuZGVyLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAgICAgIFRoZSBu YW1lIHRvIHNlYXJjaCB0aGUgbm9kZSB3aXRoIHRoZSBuYW1lLg0KPj4gPj4NCj4+ID4+ICsgIEBw YXJhbVtpbl0gTmFtZUxlbmd0aCAgICAgIFRoZSBsZW5ndGggb2YgdGhlIG5hbWUgdG8gY2hlY2sg b25seS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0 IHRvIG5vZGUgb2Zmc2V0IHdpdGggZ2l2ZW4gbm9kZSBuYW1lLg0KPj4gPj4NCj4+ID4+ICsNCj4+ ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQ SQ0KPj4gPj4NCj4+ID4+ICtGZHRTdWJub2RlT2Zmc2V0TmFtZUxlbiAoDQo+PiA+Pg0KPj4gPj4g KyAgSU4gQ09OU1QgVk9JRCAgICpGZHQsDQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAg IFBhcmVudE9mZnNldCwNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBDSEFSOCAgKk5hbWUsDQo+ PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgIE5hbWVMZW5ndGgNCj4+ID4+DQo+PiA+PiAr ICApOw0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4gPj4gKyAg UmV0dXJucyBhIG9mZnNldCBvZiBmaXJzdCBub2RlIHdoaWNoIGluY2x1ZGVzIHRoZSBnaXZlbiBw cm9wZXJ0eSBuYW1lIGFuZCB2YWx1ZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAg QHBhcmFtW2luXSBGZHQgICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+ Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBTdGFydE9mZnNldCAgICAgVGhlIG9mZnNldCB0byB0aGUg c3RhcnRpbmcgbm9kZSB0byBmaW5kLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gUHJvcGVy dHlOYW1lICAgIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIHNlYXJjaCB0aGUgbm9kZSBpbmNsdWRpbmcg dGhlIG5hbWVkIHByb3BlcnR5Lg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gUHJvcGVydHlW YWx1ZSAgIFRoZSBwcm9wZXJ0eSB2YWx1ZSB0byBjaGVjayB0aGUgc2FtZSBwcm9wZXJ0eSB2YWx1 ZS4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIFByb3BlcnR5TGVuZ3RoICBUaGUgbGVuZ3Ro IG9mIHRoZSB2YWx1ZSBpbiBQcm9wZXJ0VmFsdWUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBub2RlIG9mZnNldCB3aXRoIGdpdmVuIHByb3Bl cnR5Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0lO VDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtGZHROb2RlT2Zmc2V0QnlQ cm9wVmFsdWUgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0LA0KPj4gPj4N Cj4+ID4+ICsgIElOIElOVDMyICAgICAgICBTdGFydE9mZnNldCwNCj4+ID4+DQo+PiA+PiArICBJ TiBDT05TVCBDSEFSOCAgKlByb3BlcnR5TmFtZSwNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBW T0lEICAgKlByb3BlcnR5VmFsdWUsDQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgIFBy b3BlcnR5TGVuZ3RoDQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0K Pj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIFJldHVybnMgYSBwcm9wZXJ0eSB3aXRoIHRoZSBn aXZlbiBuYW1lIGZyb20gdGhlIGdpdmVuIG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2Iu DQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBOb2RlT2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRv IHRoZSBnaXZlbiBub2RlLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAg ICAgVGhlIG5hbWUgdG8gdGhlIHByb3BlcnR5IHdoaWNoIG5lZWQgYmUgc2VhcmNoZWQNCj4+ID4+ DQo+PiA+PiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBsZW5ndGggdG8gdGhlIHNp emUgb2YgdGhlIHByb3BlcnR5IGZvdW5kLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAr ICBAcmV0dXJuIFRoZSBwcm9wZXJ0eSB0byB0aGUgc3RydWN0dXJlIG9mIHRoZSBmb3VuZCBwcm9w ZXJ0eS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyoqLw0KPj4gPj4NCj4+ID4+ICtD T05TVCBGRFRfUFJPUEVSVFkgKg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiAr RmR0R2V0UHJvcGVydHkgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0LA0K Pj4gPj4NCj4+ID4+ICsgIElOIElOVDMyICAgICAgICBOb2RlT2Zmc2V0LA0KPj4gPj4NCj4+ID4+ ICsgIElOIENPTlNUIENIQVI4ICAqTmFtZSwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAg ICAgKkxlbmd0aA0KPj4gPj4NCj4+ID4+ICsgICk7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIGZpcnN0IHByb3Bl cnR5IGluIHRoZSBnaXZlbiBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBA cGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4N Cj4+ID4+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byB0aGUgbm9k ZSB3aGljaCBuZWVkIGJlIHNlYXJjaGVkLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAr ICBAcmV0dXJuIFRoZSBvZmZzZXQgdG8gZmlyc3QgcHJvcGVydHkgb2Zmc2V0IGluIHRoZSBnaXZl biBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4g K0lOVDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtGZHRGaXJzdFByb3Bl cnR5T2Zmc2V0ICgNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPj4gPj4N Cj4+ID4+ICsgIElOIElOVDMyICAgICAgIE5vZGVPZmZzZXQNCj4+ID4+DQo+PiA+PiArICApOw0K Pj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4gPj4gKyAgUmV0dXJu cyBhIG9mZnNldCBvZiBuZXh0IHByb3BlcnR5IGZyb20gdGhlIGdpdmVuIHByb3BlcnR5Lg0KPj4g Pj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRo ZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0 ICAgICAgICAgVGhlIG9mZnNldCB0byBwcmV2aW91cyBwcm9wZXJ0eS4NCj4+ID4+DQo+PiA+PiAr DQo+PiA+Pg0KPj4gPj4gKyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5leHQgcHJvcGVydHkgb2Zm c2V0Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0lO VDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtGZHROZXh0UHJvcGVydHlP ZmZzZXQgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+PiA+Pg0KPj4g Pj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0DQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ID4+DQo+ PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIFJldHVybnMgYSBwcm9w ZXJ0eSBmcm9tIHRoZSBnaXZlbiBvZmZzZXQgb2YgdGhlIHByb3BlcnR5Lg0KPj4gPj4NCj4+ID4+ ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVy IHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gT2Zmc2V0ICAgICAgICAg VGhlIG9mZnNldCB0byB0aGUgZ2l2ZW4gb2Zmc2V0IG9mIHRoZSBwcm9wZXJ0eS4NCj4+ID4+DQo+ PiA+PiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBsZW5ndGggdG8gdGhlIHNpemUg b2YgdGhlIHByb3BlcnR5IGZvdW5kLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBA cmV0dXJuIFRoZSBwcm9wZXJ0eSB0byB0aGUgc3RydWN0dXJlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0 eSBvZmZzZXQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+ PiArQ09OU1QgRkRUX1BST1BFUlRZICoNCj4+ID4+DQo+PiA+PiArRUZJQVBJDQo+PiA+Pg0KPj4g Pj4gK0ZkdEdldFByb3BlcnR5QnlPZmZzZXQgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZP SUQgICpGZHQsDQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0LA0KPj4gPj4N Cj4+ID4+ICsgIElOIElOVDMyICAgICAgICpMZW5ndGgNCj4+ID4+DQo+PiA+PiArICApOw0KPj4g Pj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4gPj4gKyAgUmV0dXJucyBh IHN0cmluZyBieSB0aGUgZ2l2ZW4gc3RyaW5nIG9mZnNldC4NCj4+ID4+DQo+PiA+PiArDQo+PiA+ Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQg YmxvYi4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIFN0ck9mZnNldCAgICAgIFRoZSBvZmZz ZXQgdG8gdGhlIGxvY2F0aW9uIGluIHRoZSBzdHJpbmdzIGJsb2NrIG9mIEZEVC4NCj4+ID4+DQo+ PiA+PiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBsZW5ndGggdG8gdGhlIHNpemUg b2Ygc3RyaW5nIHdoaWNoIG5lZWQgYmUgcmV0cmlldmVkLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+ DQo+PiA+PiArICBAcmV0dXJuIFRoZSBzdHJpbmcgdG8gdGhlIGdpdmVuIHN0cmluZyBvZmZzZXQu DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArQ09OU1Qg Q0hBUjggKg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0R2V0U3RyaW5n ICgNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPj4gPj4NCj4+ID4+ICsg IElOIElOVDMyICAgICAgIFN0ck9mZnNldCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAg ICAqTGVuZ3RoICAgICAgICBPUFRJT05BTA0KPj4gPj4NCj4+ID4+ICsgICk7DQo+PiA+Pg0KPj4g Pj4gKw0KPj4gPj4NCj4+ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBBZGQgYSBuZXcgbm9kZSB0 byB0aGUgRkRULg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZk dCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBw YXJhbVtpbl0gUGFyZW50T2Zmc2V0ICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSBvZmZzZXQgd2hp Y2ggd2FudCB0byBhZGQgaW4uDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAg ICAgICBUaGUgbmFtZSB0byBuYW1lIHRoZSBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+ PiA+PiArICBAcmV0dXJuICBUaGUgb2Zmc2V0IHRvIHRoZSBuZXcgbm9kZS4NCj4+ID4+DQo+PiA+ PiArDQo+PiA+Pg0KPj4gPj4gKyoqLw0KPj4gPj4NCj4+ID4+ICtJTlQzMg0KPj4gPj4NCj4+ID4+ ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0QWRkU3Vibm9kZSAoDQo+PiA+Pg0KPj4gPj4gKyAg SU4gVk9JRCAgICAgICAgICpGZHQsDQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgIFBh cmVudE9mZnNldCwNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBDSEFSOCAgKk5hbWUNCj4+ID4+ DQo+PiA+PiArICApOw0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0K Pj4gPj4gKyAgQWRkIG9yIG1vZGlmeSBhIHByb3BlcnR5IGluIHRoZSBnaXZlbiBub2RlLg0KPj4g Pj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRo ZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gTm9kZU9m ZnNldCAgICAgVGhlIG9mZnNldCB0byB0aGUgbm9kZSBvZmZzZXQgd2hpY2ggd2FudCB0byBhZGQg aW4uDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICBUaGUgbmFtZSB0 byBuYW1lIHRoZSBwcm9wZXJ0eS4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIFZhbHVlICAg ICAgICAgIFRoZSB2YWx1ZSB0byB0aGUgcHJvcGVydHkgdmFsdWUuDQo+PiA+Pg0KPj4gPj4gKyAg QHBhcmFtW2luXSBMZW5ndGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBw cm9wZXJ0eS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHJldHVybiAgWmVybyBm b3Igc3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgZmFpbGVkLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+ DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0K Pj4gPj4NCj4+ID4+ICtGZHRTZXRQcm9wICgNCj4+ID4+DQo+PiA+PiArICBJTiBWT0lEICAgICAg ICAgKkZkdCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAgTm9kZU9mZnNldCwNCj4+ ID4+DQo+PiA+PiArICBJTiBDT05TVCBDSEFSOCAgKk5hbWUsDQo+PiA+Pg0KPj4gPj4gKyAgSU4g Q09OU1QgVk9JRCAgICpWYWx1ZSwNCj4+ID4+DQo+PiA+PiArICBJTiBVSU5UMzIgICAgICAgTGVu Z3RoDQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyNl bmRpZiAvKiBGRFRfTElCX0hfICovDQo+PiA+Pg0KPj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9M aWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi5pbmYNCj4+ID4+IGIvTWRlUGtnL0xpYnJhcnkv QmFzZUZkdExpYi9CYXNlRmR0TGliLmluZg0KPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+ ID4+IGluZGV4IDAwMDAwMDAwMDAuLjczMGU1NjhmZjYNCj4+ID4+IC0tLSAvZGV2L251bGwNCj4+ ID4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi5pbmYNCj4+ID4+ IEBAIC0wLDAgKzEsNjIgQEANCj4+ID4+ICsjIyBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsjIEZsYXR0 ZW5lZCBEZXZpY2UgVHJlZSBMaWJyYXJ5Lg0KPj4gPj4NCj4+ID4+ICsjDQo+PiA+Pg0KPj4gPj4g KyMgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+PiA+Pg0KPj4gPj4gKyMNCj4+ID4+DQo+PiA+PiArIyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4+ID4+DQo+PiA+PiArIw0KPj4gPj4N Cj4+ID4+ICsjDQo+PiA+Pg0KPj4gPj4gKyMjDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ ICtbRGVmaW5lc10NCj4+ID4+DQo+PiA+PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAg ICAgPSAweDAwMDEwMDFCDQo+PiA+Pg0KPj4gPj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAg ICAgICAgID0gQmFzZUZkdExpYg0KPj4gPj4NCj4+ID4+ICsgIE1PRFVMRV9VTklfRklMRSAgICAg ICAgICAgICAgICA9IEJhc2VGZHRMaWIudW5pDQo+PiA+Pg0KPj4gPj4gKyAgRklMRV9HVUlEICAg ICAgICAgICAgICAgICAgICAgID0gQzY0RENCMDEtQjAzNy00RkY2LTlDRjMtRThDRUMyMDZERTA0 DQo+PiA+Pg0KPj4gPj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0K Pj4gPj4NCj4+ID4+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPj4g Pj4NCj4+ID4+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IEZkdExpYg0KPj4g Pj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBERUZJTkUgRkRUX0xJQl9QQVRIICAgICAgICAg ICAgPSBsaWJmZHQvbGliZmR0DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjDQo+PiA+ Pg0KPj4gPj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQNCj4+ ID4+DQo+PiA+PiArIw0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArW1NvdXJjZXNdDQo+ PiA+Pg0KPj4gPj4gKyAgRmR0TGliLmMNCj4+ID4+DQo+PiA+PiArICBMaWJGZHRXcmFwcGVyLmMN Cj4+ID4+DQo+PiA+PiArICAjIGhlYWRlciBXcmFwcGVyIGZpbGVzDQo+PiA+Pg0KPj4gPj4gKyAg bGltaXRzLmgNCj4+ID4+DQo+PiA+PiArICBzdGRib29sLmgNCj4+ID4+DQo+PiA+PiArICBzdGRk ZWYuaA0KPj4gPj4NCj4+ID4+ICsgIHN0ZGludC5oDQo+PiA+Pg0KPj4gPj4gKyAgc3RkbGliLmgN Cj4+ID4+DQo+PiA+PiArICBzdHJpbmcuaA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAr ICAkKEZEVF9MSUJfUEFUSCkvZmR0LmMNCj4+ID4+DQo+PiA+PiArICAkKEZEVF9MSUJfUEFUSCkv ZmR0LmgNCj4+ID4+DQo+PiA+PiArICAkKEZEVF9MSUJfUEFUSCkvZmR0X2FkZHJlc3Nlcy5jDQo+ PiA+Pg0KPj4gPj4gKyAgJChGRFRfTElCX1BBVEgpL2ZkdF9jaGVjay5jDQo+PiA+Pg0KPj4gPj4g KyAgJChGRFRfTElCX1BBVEgpL2ZkdF9lbXB0eV90cmVlLmMNCj4+ID4+DQo+PiA+PiArICAkKEZE VF9MSUJfUEFUSCkvZmR0X292ZXJsYXkuYw0KPj4gPj4NCj4+ID4+ICsgICQoRkRUX0xJQl9QQVRI KS9mZHRfcm8uYw0KPj4gPj4NCj4+ID4+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfcncuYw0KPj4g Pj4NCj4+ID4+ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfc3RyZXJyb3IuYw0KPj4gPj4NCj4+ID4+ ICsgICQoRkRUX0xJQl9QQVRIKS9mZHRfc3cuYw0KPj4gPj4NCj4+ID4+ICsgICQoRkRUX0xJQl9Q QVRIKS9mZHRfd2lwLmMNCj4+ID4+DQo+PiA+PiArICAkKEZEVF9MSUJfUEFUSCkvbGliZmR0LmgN Cj4+ID4+DQo+PiA+PiArICAkKEZEVF9MSUJfUEFUSCkvbGliZmR0X2Vudi5oDQo+PiA+Pg0KPj4g Pj4gKyAgJChGRFRfTElCX1BBVEgpL2xpYmZkdF9pbnRlcm5hbC5oDQo+PiA+Pg0KPj4gPj4gKw0K Pj4gPj4NCj4+ID4+ICtbUGFja2FnZXNdDQo+PiA+Pg0KPj4gPj4gKyAgTWRlUGtnL01kZVBrZy5k ZWMNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4+ID4+ DQo+PiA+PiArICBCYXNlTGliDQo+PiA+Pg0KPj4gPj4gKyAgQmFzZU1lbW9yeUxpYg0KPj4gPj4N Cj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArW0J1aWxkT3B0aW9uc10NCj4+ID4+DQo+PiA+PiArICBN U0ZUOipfKl9JQTMyX0NDX0ZMQUdTID0gL3dkNDE0NiAvd2Q0MjQ1DQo+PiA+Pg0KPj4gPj4gKyAg TVNGVDoqXypfWDY0X0NDX0ZMQUdTICA9IC93ZDQxNDYgL3dkNDI0NCAvd2Q0MjQ1IC93ZDQyNjcN Cj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5 L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi51bmkNCj4+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZk dExpYi9CYXNlRmR0TGliLnVuaQ0KPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+ID4+IGlu ZGV4IDAwMDAwMDAwMDAuLjNmN2U0NWVhNmYNCj4+ID4+IC0tLSAvZGV2L251bGwNCj4+ID4+ICsr KyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VGZHRMaWIvQmFzZUZkdExpYi51bmkNCj4+ID4+IEBAIC0w LDAgKzEsMTQgQEANCj4+ID4+ICsvLyAvKiogQGZpbGUNCj4+ID4+DQo+PiA+PiArLy8gRmxhdHRl bmVkIERldmljZSBUcmVlIExpYnJhcnkuDQo+PiA+Pg0KPj4gPj4gKy8vDQo+PiA+Pg0KPj4gPj4g Ky8vIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICsvLw0KPj4gPj4NCj4+ID4+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsvLw0KPj4g Pj4NCj4+ID4+ICsvLyAqKi8NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4N Cj4+ID4+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICJJbnN0YW5jZSBvZiBGRFQgTGlicmFyeSINCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0K Pj4gPj4gKyNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMgIlRoaXMgbW9kdWxlIHByb3ZpZGVzIEZEVCBMaWJyYXJ5IGltcGxlbWVudGF0aW9uLiIN Cj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5 L0Jhc2VGZHRMaWIvRmR0TGliLmMNCj4+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9G ZHRMaWIuYw0KPj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+ID4+IGluZGV4IDAwMDAwMDAw MDAuLjIwMGE0OTZjN2UNCj4+ID4+IC0tLSAvZGV2L251bGwNCj4+ID4+ICsrKyBiL01kZVBrZy9M aWJyYXJ5L0Jhc2VGZHRMaWIvRmR0TGliLmMNCj4+ID4+IEBAIC0wLDAgKzEsMzAxIEBADQo+PiA+ PiArLyoqIEBmaWxlDQo+PiA+Pg0KPj4gPj4gKyAgRmxhdHRlbmVkIERldmljZSBUcmVlIExpYnJh cnkuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIENvcHlyaWdodCAoYykgMjAyMywg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+PiA+Pg0K Pj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4g KyNpbmNsdWRlIDxsaWJmZHQvbGliZmR0L2xpYmZkdC5oPg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+ DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4gPj4gKyAgVmVyaWZ5IHRoZSBoZWFkZXIgb2YgdGhlIEZs YXR0ZW5lZCBEZXZpY2UgVHJlZQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFy YW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcmV0dXJuIFplcm8gZm9yIHN1Y2Nlc3NmdWxseSwgb3Ro ZXJ3aXNlIGZhaWxlZC4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyoqLw0KPj4gPj4N Cj4+ID4+ICtJTlQzMg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0Q2hl Y2tIZWFkZXIgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICpGZHQNCj4+ID4+DQo+ PiA+PiArICApDQo+PiA+Pg0KPj4gPj4gK3sNCj4+ID4+DQo+PiA+PiArICByZXR1cm4gZmR0X2No ZWNrX2hlYWRlcihGZHQpOw0KPj4gPj4NCj4+ID4+ICt9DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4N Cj4+ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBDcmVhdGUgYSBlbXB0eSBGbGF0dGVuZWQgRGV2 aWNlIFRyZWUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gQnVm ZmVyICAgICAgICAgVGhlIHBvaW50ZXIgdG8gYWxsb2NhdGUgYSBwb29sIGZvciBGRFQgYmxvYi4N Cj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEJ1ZmZlclNpemUgICAgIFRoZSBCdWZmZXJTaXpl IHRvIHRoZSBwb29sIHNpemUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEByZXR1 cm4gWmVybyBmb3Igc3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgZmFpbGVkLg0KPj4gPj4NCj4+ID4+ ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4g K0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtGZHRDcmVhdGVFbXB0eVRyZWUgKA0KPj4gPj4NCj4+ID4+ ICsgIElOIFZPSUQgICAgKkJ1ZmZlciwNCj4+ID4+DQo+PiA+PiArICBJTiBVSU5UMzIgIEJ1ZmZl clNpemUNCj4+ID4+DQo+PiA+PiArICApDQo+PiA+Pg0KPj4gPj4gK3sNCj4+ID4+DQo+PiA+PiAr ICByZXR1cm4gZmR0X2NyZWF0ZV9lbXB0eV90cmVlIChCdWZmZXIsIChpbnQpQnVmZmVyU2l6ZSk7 DQo+PiA+Pg0KPj4gPj4gK30NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4g Pj4NCj4+ID4+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgbmV4dCBub2RlIGZyb20gdGhlIGdpdmVu IG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gRmR0ICAg ICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFt W2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHByZXZpb3VzIG5vZGUuDQo+PiA+Pg0K Pj4gPj4gKyAgQHBhcmFtW2luXSBEZXB0aCAgICAgICAgICBUaGUgZGVwdGggdG8gdGhlIGxldmVs IG9mIHRyZWUgaGllcmFyY2h5Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcmV0 dXJuIFRoZSBvZmZzZXQgdG8gbmV4dCBub2RlIG9mZnNldC4NCj4+ID4+DQo+PiA+PiArDQo+PiA+ Pg0KPj4gPj4gKyoqLw0KPj4gPj4NCj4+ID4+ICtJTlQzMg0KPj4gPj4NCj4+ID4+ICtFRklBUEkN Cj4+ID4+DQo+PiA+PiArRmR0TmV4dE5vZGUgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZP SUQgICpGZHQsDQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0LA0KPj4gPj4N Cj4+ID4+ICsgIElOIElOVDMyICAgICAgICpEZXB0aA0KPj4gPj4NCj4+ID4+ICsgICkNCj4+ID4+ DQo+PiA+PiArew0KPj4gPj4NCj4+ID4+ICsgIHJldHVybiBmZHRfbmV4dF9ub2RlIChGZHQsIE9m ZnNldCwgRGVwdGgpOw0KPj4gPj4NCj4+ID4+ICt9DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIGZpcnN0IG5vZGUg dW5kZXIgdGhlIGdpdmVuIG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEBw YXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+Pg0K Pj4gPj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHByZXZpb3Vz IG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEByZXR1cm4gVGhlIG9mZnNl dCB0byBuZXh0IG5vZGUgb2Zmc2V0Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiov DQo+PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0KPj4gPj4NCj4+ID4+ ICtGZHRGaXJzdFN1Ym5vZGUgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICpGZHQs DQo+PiA+Pg0KPj4gPj4gKyAgSU4gSU5UMzIgICAgICAgT2Zmc2V0DQo+PiA+Pg0KPj4gPj4gKyAg KQ0KPj4gPj4NCj4+ID4+ICt7DQo+PiA+Pg0KPj4gPj4gKyAgcmV0dXJuIGZkdF9maXJzdF9zdWJu b2RlIChGZHQsIE9mZnNldCk7DQo+PiA+Pg0KPj4gPj4gK30NCj4+ID4+DQo+PiA+PiArDQo+PiA+ Pg0KPj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgbmV4dCBu b2RlIGZyb20gdGhlIGdpdmVuIG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsg IEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+ Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHByZXZp b3VzIG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEByZXR1cm4gVGhlIG9m ZnNldCB0byBuZXh0IG5vZGUgb2Zmc2V0Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAr KiovDQo+PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0KPj4gPj4NCj4+ ID4+ICtGZHROZXh0U3Vibm9kZSAoDQo+PiA+Pg0KPj4gPj4gKyAgSU4gQ09OU1QgVk9JRCAgKkZk dCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICBPZmZzZXQNCj4+ID4+DQo+PiA+PiAr ICApDQo+PiA+Pg0KPj4gPj4gK3sNCj4+ID4+DQo+PiA+PiArICByZXR1cm4gZmR0X25leHRfc3Vi bm9kZSAoRmR0LCBPZmZzZXQpOw0KPj4gPj4NCj4+ID4+ICt9DQo+PiA+Pg0KPj4gPj4gKw0KPj4g Pj4NCj4+ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIGZpcnN0 IG5vZGUgd2hpY2ggaW5jbHVkZXMgdGhlIGdpdmVuIG5hbWUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4g Pj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZE VCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gUGFyZW50T2Zmc2V0ICAgIFRoZSBv ZmZzZXQgdG8gdGhlIG5vZGUgd2hpY2ggc3RhcnQgZmluZCB1bmRlci4NCj4+ID4+DQo+PiA+PiAr ICBAcGFyYW1baW5dIE5hbWUgICAgICAgICAgICBUaGUgbmFtZSB0byBzZWFyY2ggdGhlIG5vZGUg d2l0aCB0aGUgbmFtZS4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIE5hbWVMZW5ndGggICAg ICBUaGUgbGVuZ3RoIG9mIHRoZSBuYW1lIHRvIGNoZWNrIG9ubHkuDQo+PiA+Pg0KPj4gPj4gKw0K Pj4gPj4NCj4+ID4+ICsgIEByZXR1cm4gVGhlIG9mZnNldCB0byBub2RlIG9mZnNldCB3aXRoIGdp dmVuIG5vZGUgbmFtZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyoqLw0KPj4gPj4N Cj4+ID4+ICtJTlQzMg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0U3Vi bm9kZU9mZnNldE5hbWVMZW4gKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0 LA0KPj4gPj4NCj4+ID4+ICsgIElOIElOVDMyICAgICAgICBQYXJlbnRPZmZzZXQsDQo+PiA+Pg0K Pj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjggICpOYW1lLA0KPj4gPj4NCj4+ID4+ICsgIElOIElOVDMy ICAgICAgICBOYW1lTGVuZ3RoDQo+PiA+Pg0KPj4gPj4gKyAgKQ0KPj4gPj4NCj4+ID4+ICt7DQo+ PiA+Pg0KPj4gPj4gKyAgcmV0dXJuIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuIChGZHQsIFBh cmVudE9mZnNldCwgTmFtZSwgDQo+PiA+PiArIE5hbWVMZW5ndGgpOw0KPj4gPj4NCj4+ID4+ICt9 DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1 cm5zIGEgb2Zmc2V0IG9mIGZpcnN0IG5vZGUgd2hpY2ggaW5jbHVkZXMgdGhlIGdpdmVuIHByb3Bl cnR5IG5hbWUgYW5kIHZhbHVlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFy YW1baW5dIEZkdCAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4+ID4+DQo+ PiA+PiArICBAcGFyYW1baW5dIFN0YXJ0T2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBzdGFy dGluZyBub2RlIHRvIGZpbmQuDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBQcm9wZXJ0eU5h bWUgICAgVGhlIHByb3BlcnR5IG5hbWUgdG8gc2VhcmNoIHRoZSBub2RlIGluY2x1ZGluZyB0aGUg bmFtZWQgcHJvcGVydHkuDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBQcm9wZXJ0eVZhbHVl ICAgVGhlIHByb3BlcnR5IHZhbHVlIHRvIGNoZWNrIHRoZSBzYW1lIHByb3BlcnR5IHZhbHVlLg0K Pj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gUHJvcGVydHlMZW5ndGggIFRoZSBsZW5ndGggb2Yg dGhlIHZhbHVlIGluIFByb3BlcnRWYWx1ZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4g KyAgQHJldHVybiBUaGUgb2Zmc2V0IHRvIG5vZGUgb2Zmc2V0IHdpdGggZ2l2ZW4gcHJvcGVydHku DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArSU5UMzIN Cj4+ID4+DQo+PiA+PiArRUZJQVBJDQo+PiA+Pg0KPj4gPj4gK0ZkdE5vZGVPZmZzZXRCeVByb3BW YWx1ZSAoDQo+PiA+Pg0KPj4gPj4gKyAgSU4gQ09OU1QgVk9JRCAgICpGZHQsDQo+PiA+Pg0KPj4g Pj4gKyAgSU4gSU5UMzIgICAgICAgIFN0YXJ0T2Zmc2V0LA0KPj4gPj4NCj4+ID4+ICsgIElOIENP TlNUIENIQVI4ICAqUHJvcGVydHlOYW1lLA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQg ICAqUHJvcGVydHlWYWx1ZSwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAgUHJvcGVy dHlMZW5ndGgNCj4+ID4+DQo+PiA+PiArICApDQo+PiA+Pg0KPj4gPj4gK3sNCj4+ID4+DQo+PiA+ PiArICByZXR1cm4gZmR0X25vZGVfb2Zmc2V0X2J5X3Byb3BfdmFsdWUgKEZkdCwgU3RhcnRPZmZz ZXQsIA0KPj4gPj4gKyBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5VmFsdWUsIFByb3BlcnR5TGVuZ3Ro KTsNCj4+ID4+DQo+PiA+PiArfQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+ PiA+Pg0KPj4gPj4gKyAgUmV0dXJucyBhIHByb3BlcnR5IHdpdGggdGhlIGdpdmVuIG5hbWUgZnJv bSB0aGUgZ2l2ZW4gbm9kZS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFt W2luXSBGZHQgICAgICAgICAgICBUaGUgcG9pbnRlciB0byBGRFQgYmxvYi4NCj4+ID4+DQo+PiA+ PiArICBAcGFyYW1baW5dIE5vZGVPZmZzZXQgICAgIFRoZSBvZmZzZXQgdG8gdGhlIGdpdmVuIG5v ZGUuDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICBUaGUgbmFtZSB0 byB0aGUgcHJvcGVydHkgd2hpY2ggbmVlZCBiZSBzZWFyY2hlZA0KPj4gPj4NCj4+ID4+ICsgIEBw YXJhbVtpbl0gTGVuZ3RoICAgICAgICAgVGhlIGxlbmd0aCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJv cGVydHkgZm91bmQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEByZXR1cm4gVGhl IHByb3BlcnR5IHRvIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZvdW5kIHByb3BlcnR5Lg0KPj4gPj4N Cj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0NPTlNUIHN0cnVjdCBm ZHRfcHJvcGVydHkgKg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+PiArRmR0R2V0 UHJvcGVydHkgKA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICAqRmR0LA0KPj4gPj4N Cj4+ID4+ICsgIElOIElOVDMyICAgICAgICBOb2RlT2Zmc2V0LA0KPj4gPj4NCj4+ID4+ICsgIElO IENPTlNUIENIQVI4ICAqTmFtZSwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAgKkxl bmd0aA0KPj4gPj4NCj4+ID4+ICsgICkNCj4+ID4+DQo+PiA+PiArew0KPj4gPj4NCj4+ID4+ICsg IHJldHVybiBmZHRfZ2V0X3Byb3BlcnR5IChGZHQsIE5vZGVPZmZzZXQsIE5hbWUsIExlbmd0aCk7 DQo+PiA+Pg0KPj4gPj4gK30NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4g Pj4NCj4+ID4+ICsgIFJldHVybnMgYSBvZmZzZXQgb2YgZmlyc3QgcHJvcGVydHkgaW4gdGhlIGdp dmVuIG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gRmR0 ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+Pg0KPj4gPj4gKyAgQHBh cmFtW2luXSBOb2RlT2Zmc2V0ICAgICBUaGUgb2Zmc2V0IHRvIHRoZSBub2RlIHdoaWNoIG5lZWQg YmUgc2VhcmNoZWQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEByZXR1cm4gVGhl IG9mZnNldCB0byBmaXJzdCBwcm9wZXJ0eSBvZmZzZXQgaW4gdGhlIGdpdmVuIG5vZGUuDQo+PiA+ Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArSU5UMzINCj4+ID4+ DQo+PiA+PiArRUZJQVBJDQo+PiA+Pg0KPj4gPj4gK0ZkdEZpcnN0UHJvcGVydHlPZmZzZXQgKA0K Pj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIFZPSUQgICpGZHQsDQo+PiA+Pg0KPj4gPj4gKyAgSU4g SU5UMzIgICAgICAgTm9kZU9mZnNldA0KPj4gPj4NCj4+ID4+ICsgICkNCj4+ID4+DQo+PiA+PiAr ew0KPj4gPj4NCj4+ID4+ICsgIHJldHVybiBmZHRfZmlyc3RfcHJvcGVydHlfb2Zmc2V0IChGZHQs IE5vZGVPZmZzZXQpOw0KPj4gPj4NCj4+ID4+ICt9DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsvKioNCj4+ID4+DQo+PiA+PiArICBSZXR1cm5zIGEgb2Zmc2V0IG9mIG5leHQgcHJvcGVy dHkgZnJvbSB0aGUgZ2l2ZW4gcHJvcGVydHkuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ ICsgIEBwYXJhbVtpbl0gRmR0ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+ PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAgICBUaGUgb2Zmc2V0IHRvIHBy ZXZpb3VzIHByb3BlcnR5Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcmV0dXJu IFRoZSBvZmZzZXQgdG8gbmV4dCBwcm9wZXJ0eSBvZmZzZXQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4g Pj4NCj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArSU5UMzINCj4+ID4+DQo+PiA+PiArRUZJQVBJ DQo+PiA+Pg0KPj4gPj4gK0ZkdE5leHRQcm9wZXJ0eU9mZnNldCAoDQo+PiA+Pg0KPj4gPj4gKyAg SU4gQ09OU1QgVk9JRCAgKkZkdCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICBPZmZz ZXQNCj4+ID4+DQo+PiA+PiArICApDQo+PiA+Pg0KPj4gPj4gK3sNCj4+ID4+DQo+PiA+PiArICBy ZXR1cm4gZmR0X25leHRfcHJvcGVydHlfb2Zmc2V0IChGZHQsIE9mZnNldCk7DQo+PiA+Pg0KPj4g Pj4gK30NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsg IFJldHVybnMgYSBwcm9wZXJ0eSBmcm9tIHRoZSBnaXZlbiBvZmZzZXQgb2YgdGhlIHByb3BlcnR5 Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAg ICAgIFRoZSBwb2ludGVyIHRvIEZEVCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0g T2Zmc2V0ICAgICAgICAgVGhlIG9mZnNldCB0byB0aGUgZ2l2ZW4gb2Zmc2V0IG9mIHRoZSBwcm9w ZXJ0eS4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBsZW5n dGggdG8gdGhlIHNpemUgb2YgdGhlIHByb3BlcnR5IGZvdW5kLg0KPj4gPj4NCj4+ID4+ICsNCj4+ ID4+DQo+PiA+PiArICBAcmV0dXJuIFRoZSBwcm9wZXJ0eSB0byB0aGUgc3RydWN0dXJlIG9mIHRo ZSBnaXZlbiBwcm9wZXJ0eSBvZmZzZXQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsq Ki8NCj4+ID4+DQo+PiA+PiArQ09OU1Qgc3RydWN0IGZkdF9wcm9wZXJ0eSAqDQo+PiA+Pg0KPj4g Pj4gK0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtGZHRHZXRQcm9wZXJ0eUJ5T2Zmc2V0ICgNCj4+ID4+ DQo+PiA+PiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0KPj4gPj4NCj4+ID4+ICsgIElOIElOVDMy ICAgICAgIE9mZnNldCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAqTGVuZ3RoDQo+ PiA+Pg0KPj4gPj4gKyAgKQ0KPj4gPj4NCj4+ID4+ICt7DQo+PiA+Pg0KPj4gPj4gKyAgcmV0dXJu IGZkdF9nZXRfcHJvcGVydHlfYnlfb2Zmc2V0IChGZHQsIE9mZnNldCwgTGVuZ3RoKTsNCj4+ID4+ DQo+PiA+PiArfQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4g Pj4gKyAgUmV0dXJucyBhIHN0cmluZyBieSB0aGUgZ2l2ZW4gc3RyaW5nIG9mZnNldC4NCj4+ID4+ DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBGZHQgICAgICAgICAgICBUaGUg cG9pbnRlciB0byBGRFQgYmxvYi4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIFN0ck9mZnNl dCAgICAgIFRoZSBvZmZzZXQgdG8gdGhlIGxvY2F0aW9uIGluIHRoZSBzdHJpbmdzIGJsb2NrIG9m IEZEVC4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgIFRoZSBsZW5n dGggdG8gdGhlIHNpemUgb2Ygc3RyaW5nIHdoaWNoIG5lZWQgYmUgcmV0cmlldmVkLg0KPj4gPj4N Cj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBAcmV0dXJuIFRoZSBzdHJpbmcgdG8gdGhlIGdpdmVu IHN0cmluZyBvZmZzZXQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsqKi8NCj4+ID4+ DQo+PiA+PiArQ09OU1QgQ0hBUjggKg0KPj4gPj4NCj4+ID4+ICtFRklBUEkNCj4+ID4+DQo+PiA+ PiArRmR0R2V0U3RyaW5nICgNCj4+ID4+DQo+PiA+PiArICBJTiBDT05TVCBWT0lEICAqRmR0LA0K Pj4gPj4NCj4+ID4+ICsgIElOIElOVDMyICAgICAgIFN0ck9mZnNldCwNCj4+ID4+DQo+PiA+PiAr ICBJTiBJTlQzMiAgICAgICAqTGVuZ3RoICAgICAgICBPUFRJT05BTA0KPj4gPj4NCj4+ID4+ICsg ICkNCj4+ID4+DQo+PiA+PiArew0KPj4gPj4NCj4+ID4+ICsgIHJldHVybiBmZHRfZ2V0X3N0cmlu ZyAoRmR0LCBTdHJPZmZzZXQsIExlbmd0aCk7DQo+PiA+Pg0KPj4gPj4gK30NCj4+ID4+DQo+PiA+ PiArDQo+PiA+Pg0KPj4gPj4gKy8qKg0KPj4gPj4NCj4+ID4+ICsgIEFkZCBhIG5ldyBub2RlIHRv IHRoZSBGRFQuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gRmR0 ICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gRkRUIGJsb2IuDQo+PiA+Pg0KPj4gPj4gKyAgQHBh cmFtW2luXSBQYXJlbnRPZmZzZXQgICBUaGUgb2Zmc2V0IHRvIHRoZSBub2RlIG9mZnNldCB3aGlj aCB3YW50IHRvIGFkZCBpbi4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIE5hbWUgICAgICAg ICAgIFRoZSBuYW1lIHRvIG5hbWUgdGhlIG5vZGUuDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsgIEByZXR1cm4gIFRoZSBvZmZzZXQgdG8gdGhlIG5ldyBub2RlLg0KPj4gPj4NCj4+ID4+ ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4g K0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtGZHRBZGRTdWJub2RlICgNCj4+ID4+DQo+PiA+PiArICBJ TiBWT0lEICAgICAgICAgKkZkdCwNCj4+ID4+DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAgUGFy ZW50T2Zmc2V0LA0KPj4gPj4NCj4+ID4+ICsgIElOIENPTlNUIENIQVI4ICAqTmFtZQ0KPj4gPj4N Cj4+ID4+ICsgICkNCj4+ID4+DQo+PiA+PiArew0KPj4gPj4NCj4+ID4+ICsgIHJldHVybiBmZHRf YWRkX3N1Ym5vZGUgKEZkdCwgUGFyZW50T2Zmc2V0LCBOYW1lKTsNCj4+ID4+DQo+PiA+PiArfQ0K Pj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLyoqDQo+PiA+Pg0KPj4gPj4gKyAgQWRkIG9y IG1vZGlmeSBhIHByb3BlcnR5IGluIHRoZSBnaXZlbiBub2RlLg0KPj4gPj4NCj4+ID4+ICsNCj4+ ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIEZkdCAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIEZE VCBibG9iLg0KPj4gPj4NCj4+ID4+ICsgIEBwYXJhbVtpbl0gTm9kZU9mZnNldCAgICAgVGhlIG9m ZnNldCB0byB0aGUgbm9kZSBvZmZzZXQgd2hpY2ggd2FudCB0byBhZGQgaW4uDQo+PiA+Pg0KPj4g Pj4gKyAgQHBhcmFtW2luXSBOYW1lICAgICAgICAgICBUaGUgbmFtZSB0byBuYW1lIHRoZSBwcm9w ZXJ0eS4NCj4+ID4+DQo+PiA+PiArICBAcGFyYW1baW5dIFZhbHVlICAgICAgICAgIFRoZSB2YWx1 ZSB0byB0aGUgcHJvcGVydHkgdmFsdWUuDQo+PiA+Pg0KPj4gPj4gKyAgQHBhcmFtW2luXSBMZW5n dGggICAgICAgICBUaGUgbGVuZ3RoIHRvIHRoZSBzaXplIG9mIHRoZSBwcm9wZXJ0eS4NCj4+ID4+ DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgQHJldHVybiAgWmVybyBmb3Igc3VjY2Vzc2Z1bGx5 LCBvdGhlcndpc2UgZmFpbGVkLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+ PiA+Pg0KPj4gPj4gK0lOVDMyDQo+PiA+Pg0KPj4gPj4gK0VGSUFQSQ0KPj4gPj4NCj4+ID4+ICtG ZHRTZXRQcm9wICgNCj4+ID4+DQo+PiA+PiArICBJTiBWT0lEICAgICAgICAgKkZkdCwNCj4+ID4+ DQo+PiA+PiArICBJTiBJTlQzMiAgICAgICAgTm9kZU9mZnNldCwNCj4+ID4+DQo+PiA+PiArICBJ TiBDT05TVCBDSEFSOCAgKk5hbWUsDQo+PiA+Pg0KPj4gPj4gKyAgSU4gQ09OU1QgVk9JRCAgICpW YWx1ZSwNCj4+ID4+DQo+PiA+PiArICBJTiBVSU5UMzIgICAgICAgTGVuZ3RoDQo+PiA+Pg0KPj4g Pj4gKyAgKQ0KPj4gPj4NCj4+ID4+ICt7DQo+PiA+Pg0KPj4gPj4gKyAgcmV0dXJuIGZkdF9zZXRw cm9wIChGZHQsIE5vZGVPZmZzZXQsIE5hbWUsIFZhbHVlLCAoaW50KUxlbmd0aCk7DQo+PiA+Pg0K Pj4gPj4gK30NCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZk dExpYi9MaWJGZHRTdXBwb3J0LmgNCj4+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9M aWJGZHRTdXBwb3J0LmgNCj4+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiA+PiBpbmRleCAw MDAwMDAwMDAwLi5lNzM4ZjRkZWQ0DQo+PiA+PiAtLS0gL2Rldi9udWxsDQo+PiA+PiArKysgYi9N ZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL0xpYkZkdFN1cHBvcnQuaA0KPj4gPj4gQEAgLTAsMCAr MSw5OSBAQA0KPj4gPj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIFJvb3QgaW5jbHVkZSBm aWxlIG9mIEMgcnVudGltZSBsaWJyYXJ5IHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIA0KPj4gPj4g KyB0aGlyZC1wYXJ0eQ0KPj4gPj4NCj4+ID4+ICsgIGxpYmZkdCBsaWJyYXJ5Lg0KPj4gPj4NCj4+ ID4+ICsNCj4+ID4+DQo+PiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4+ID4+DQo+PiA+PiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+ DQo+PiA+PiArKiovDQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaWZuZGVmIEZEVF9M SUJfU1VQUE9SVF9IXw0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIEZEVF9MSUJfU1VQUE9SVF9IXw0K Pj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArI2luY2x1ZGUgPEJhc2UuaD4NCj4+ID4+DQo+ PiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPj4gPj4NCj4+ID4+ICsjaW5jbHVk ZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ ICt0eXBlZGVmIFVJTlQ4ICAgIHVpbnQ4X3Q7DQo+PiA+Pg0KPj4gPj4gK3R5cGVkZWYgVUlOVDE2 ICAgdWludDE2X3Q7DQo+PiA+Pg0KPj4gPj4gK3R5cGVkZWYgSU5UMzIgICAgaW50MzJfdDsNCj4+ ID4+DQo+PiA+PiArdHlwZWRlZiBVSU5UMzIgICB1aW50MzJfdDsNCj4+ID4+DQo+PiA+PiArdHlw ZWRlZiBVSU5UNjQgICB1aW50NjRfdDsNCj4+ID4+DQo+PiA+PiArdHlwZWRlZiBVSU5UTiAgICB1 aW50cHRyX3Q7DQo+PiA+Pg0KPj4gPj4gK3R5cGVkZWYgVUlOVE4gICAgc2l6ZV90Ow0KPj4gPj4N Cj4+ID4+ICt0eXBlZGVmIEJPT0xFQU4gIGJvb2w7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsjZGVmaW5lIHRydWUgICAoMSA9PSAxKQ0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIGZhbHNl ICAoMSA9PSAwKQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLy8NCj4+ID4+DQo+PiA+ PiArLy8gRGVmaW5pdGlvbnMgZm9yIGdsb2JhbCBjb25zdGFudHMgdXNlZCBieSBsaWJmZHQgbGli cmFyeSANCj4+ID4+ICtyb3V0aW5lcw0KPj4gPj4NCj4+ID4+ICsvLw0KPj4gPj4NCj4+ID4+ICsj ZGVmaW5lIElOVF9NQVggICAgICAgICAgMHg3RkZGRkZGRiAgICAgIC8qIE1heGltdW0gKHNpZ25l ZCkgaW50IHZhbHVlICovDQo+PiA+Pg0KPj4gPj4gKyNkZWZpbmUgSU5UMzJfTUFYICAgICAgICAw eDdGRkZGRkZGICAgICAgLyogTWF4aW11bSAoc2lnbmVkKSBpbnQzMiB2YWx1ZSAqLw0KPj4gPj4N Cj4+ID4+ICsjZGVmaW5lIFVJTlQzMl9NQVggICAgICAgMHhGRkZGRkZGRiAgICAgIC8qIE1heGlt dW0gdW5zaWduZWQgaW50MzIgdmFsdWUgKi8NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4g Ky8vDQo+PiA+Pg0KPj4gPj4gKy8vIEZ1bmN0aW9uIHByb3RvdHlwZXMgb2YgbGliZmR0IExpYnJh cnkgcm91dGluZXMNCj4+ID4+DQo+PiA+PiArLy8NCj4+ID4+DQo+PiA+PiArdm9pZCAqDQo+PiA+ Pg0KPj4gPj4gK21lbXNldCAgICAgKA0KPj4gPj4NCj4+ID4+ICsgIHZvaWQgKiwNCj4+ID4+DQo+ PiA+PiArICBpbnQsDQo+PiA+Pg0KPj4gPj4gKyAgc2l6ZV90DQo+PiA+Pg0KPj4gPj4gKyAgKTsN Cj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gK2ludA0KPj4gPj4NCj4+ID4+ICttZW1jbXAg ICAgICAoDQo+PiA+Pg0KPj4gPj4gKyAgY29uc3Qgdm9pZCAqLA0KPj4gPj4NCj4+ID4+ICsgIGNv bnN0IHZvaWQgKiwNCj4+ID4+DQo+PiA+PiArICBzaXplX3QNCj4+ID4+DQo+PiA+PiArICApOw0K Pj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAraW50DQo+PiA+Pg0KPj4gPj4gK3N0cmNtcCAg ICAgICgNCj4+ID4+DQo+PiA+PiArICBjb25zdCBjaGFyICosDQo+PiA+Pg0KPj4gPj4gKyAgY29u c3QgY2hhciAqDQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4g Pj4gK2NoYXIgKg0KPj4gPj4NCj4+ID4+ICtzdHJjaHIgICAgICgNCj4+ID4+DQo+PiA+PiArICBj b25zdCBjaGFyICosDQo+PiA+Pg0KPj4gPj4gKyAgaW50DQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gK2NoYXIgKg0KPj4gPj4NCj4+ID4+ICtzdHJyY2hy ICAgICgNCj4+ID4+DQo+PiA+PiArICBjb25zdCBjaGFyICosDQo+PiA+Pg0KPj4gPj4gKyAgaW50 DQo+PiA+Pg0KPj4gPj4gKyAgKTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gK3Vuc2ln bmVkIGxvbmcNCj4+ID4+DQo+PiA+PiArc3RydG91bCAgICAgKA0KPj4gPj4NCj4+ID4+ICsgIGNv bnN0IGNoYXIgKiwNCj4+ID4+DQo+PiA+PiArICBjaGFyICoqLA0KPj4gPj4NCj4+ID4+ICsgIGlu dA0KPj4gPj4NCj4+ID4+ICsgICk7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICtjaGFy ICoNCj4+ID4+DQo+PiA+PiArc3RyY3B5ICgNCj4+ID4+DQo+PiA+PiArICBjaGFyICAgICAgICAq c3RyRGVzdCwNCj4+ID4+DQo+PiA+PiArICBjb25zdCBjaGFyICAqc3RyU291cmNlDQo+PiA+Pg0K Pj4gPj4gKyAgKTsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKy8vDQo+PiA+Pg0KPj4g Pj4gKy8vIE1hY3JvcyB0aGF0IGRpcmVjdGx5IG1hcCBmdW5jdGlvbnMgdG8gQmFzZUxpYiwgQmFz ZU1lbW9yeUxpYiwgDQo+PiA+PiArYW5kIERlYnVnTGliIGZ1bmN0aW9ucw0KPj4gPj4NCj4+ID4+ ICsvLw0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIG1lbWNweShkZXN0LCBzb3VyY2UsIGNvdW50KSAg ICAgICAgIENvcHlNZW0oZGVzdCxzb3VyY2UsIChVSU5UTikoY291bnQpKQ0KPj4gPj4NCj4+ID4+ ICsjZGVmaW5lIG1lbXNldChkZXN0LCBjaCwgY291bnQpICAgICAgICAgICAgIFNldE1lbShkZXN0 LCAoVUlOVE4pKGNvdW50KSwoVUlOVDgpKGNoKSkNCj4+ID4+DQo+PiA+PiArI2RlZmluZSBtZW1j aHIoYnVmLCBjaCwgY291bnQpICAgICAgICAgICAgICBTY2FuTWVtOChidWYsIChVSU5UTikoY291 bnQpLChVSU5UOCljaCkNCj4+ID4+DQo+PiA+PiArI2RlZmluZSBtZW1jbXAoYnVmMSwgYnVmMiwg Y291bnQpICAgICAgICAgICAoaW50KShDb21wYXJlTWVtKGJ1ZjEsIGJ1ZjIsIChVSU5UTikoY291 bnQpKSkNCj4+ID4+DQo+PiA+PiArI2RlZmluZSBtZW1tb3ZlKGRlc3QsIHNvdXJjZSwgY291bnQp ICAgICAgICBDb3B5TWVtKGRlc3QsIHNvdXJjZSwgKFVJTlROKShjb3VudCkpDQo+PiA+Pg0KPj4g Pj4gKyNkZWZpbmUgc3RybGVuKHN0cikgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemVfdCko QXNjaWlTdHJMZW4oc3RyKSkNCj4+ID4+DQo+PiA+PiArI2RlZmluZSBzdHJubGVuKHN0ciwgY291 bnQpICAgICAgICAgICAgICAgICAoc2l6ZV90KShBc2NpaVN0cm5MZW5TKHN0ciwgY291bnQpKQ0K Pj4gPj4NCj4+ID4+ICsjZGVmaW5lIHN0cm5jcHkoc3RyRGVzdCwgc3RyU291cmNlLCBjb3VudCkg IEFzY2lpU3RybkNweVMoc3RyRGVzdCwgDQo+PiA+PiArTUFYX1NUUklOR19TSVpFLCBzdHJTb3Vy Y2UsIChVSU5UTiljb3VudCkNCj4+ID4+DQo+PiA+PiArI2RlZmluZSBzdHJjYXQoc3RyRGVzdCwg c3RyU291cmNlKSAgICAgICAgICBBc2NpaVN0ckNhdFMoc3RyRGVzdCwgTUFYX1NUUklOR19TSVpF LCBzdHJTb3VyY2UpDQo+PiA+Pg0KPj4gPj4gKyNkZWZpbmUgc3RyY21wKHN0cmluZzEsIHN0cmlu ZzIsIGNvdW50KSAgICAgKGludCkoQXNjaWlTdHJDbXAoc3RyaW5nMSwgc3RyaW5nMikpDQo+PiA+ Pg0KPj4gPj4gKyNkZWZpbmUgc3RybmNtcChzdHJpbmcxLCBzdHJpbmcyLCBjb3VudCkgICAgKGlu dCkoQXNjaWlTdHJuQ21wKHN0cmluZzEsIHN0cmluZzIsIChVSU5UTikoY291bnQpKSkNCj4+ID4+ DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyNlbmRpZiAvKiBGRFRfTElCX1NVUFBPUlRfSF8gKi8N Cj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9MaWJG ZHRXcmFwcGVyLmMNCj4+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9MaWJGZHRXcmFw cGVyLmMNCj4+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiA+PiBpbmRleCAwMDAwMDAwMDAw Li43NzJiYmE0ODM5DQo+PiA+PiAtLS0gL2Rldi9udWxsDQo+PiA+PiArKysgYi9NZGVQa2cvTGli cmFyeS9CYXNlRmR0TGliL0xpYkZkdFdyYXBwZXIuYw0KPj4gPj4gQEAgLTAsMCArMSwxNzMgQEAN Cj4+ID4+ICsvKiogQGZpbGUNCj4+ID4+DQo+PiA+PiArICBJU08gQyBpbXBsZW1lbnRhdGlvbnMg b2Ygc3RyY2hyLCBzdHJyY2hyIGFuZCBzdHJ0b3VsLg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+ PiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4+ID4+DQo+PiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMjMgUGVkcm8g RmFsY2F0byBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPj4gPj4NCj4+ID4+ICsgIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4N Cj4+ID4+ICsqKi8NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyNpbmNsdWRlIDxCYXNl Lmg+DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjZGVmaW5lIFVMT05HX01BWCAgICAg ICAgMHhGRkZGRkZGRiAgICAgIC8qIE1heGltdW0gdW5zaWduZWQgbG9uZyB2YWx1ZSAqLw0KPj4g Pj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArLy8gVmVyeSBxdWljayBub3RlczoNCj4+ID4+DQo+ PiA+PiArLy8gV2Ugb25seSBnbyB0aHJvdWdoIHRoZSBzdHJpbmcgb25jZSBmb3IgYm90aCBmdW5j dGlvbnMNCj4+ID4+DQo+PiA+PiArLy8gVGhleSBhcmUgbWluaW1hbCBpbXBsZW1lbnRhdGlvbnMg KG5vdCBzcGVlZCBvcHRpbWl6ZWQpIG9mIElTTyBDIA0KPj4gPj4gK3NlbWFudGljcw0KPj4gPj4N Cj4+ID4+ICsvLyBzdHJjaHIgYW5kIHN0cnJjaHIgYWxzbyBpbmNsdWRlIHRoZSBudWxsIHRlcm1p bmF0b3IgYXMgcGFydCBvZiANCj4+ID4+ICt0aGUgc3RyaW5nDQo+PiA+Pg0KPj4gPj4gKy8vIHNv IHRoZSBjb2RlIGdldHMgYSBiaXQgY2x1bmt5IHRvIGhhbmRsZSB0aGF0IGNhc2Ugc3BlY2lmaWNh bGx5Lg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArY2hhciAqDQo+PiA+Pg0KPj4gPj4g K3N0cmNociAoDQo+PiA+Pg0KPj4gPj4gKyAgY29uc3QgY2hhciAgKlN0ciwNCj4+ID4+DQo+PiA+ PiArICBpbnQgICAgICAgICBDaGFyDQo+PiA+Pg0KPj4gPj4gKyAgKQ0KPj4gPj4NCj4+ID4+ICt7 DQo+PiA+Pg0KPj4gPj4gKyAgY2hhciAgKlM7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ ICsgIFMgPSAoY2hhciAqKVN0cjsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgZm9y ICggOyA7IFMrKykgew0KPj4gPj4NCj4+ID4+ICsgICAgaWYgKCpTID09IENoYXIpIHsNCj4+ID4+ DQo+PiA+PiArICAgICAgcmV0dXJuIFM7DQo+PiA+Pg0KPj4gPj4gKyAgICB9DQo+PiA+Pg0KPj4g Pj4gKw0KPj4gPj4NCj4+ID4+ICsgICAgaWYgKCpTID09ICdcMCcpIHsNCj4+ID4+DQo+PiA+PiAr ICAgICAgcmV0dXJuIE5VTEw7DQo+PiA+Pg0KPj4gPj4gKyAgICB9DQo+PiA+Pg0KPj4gPj4gKyAg fQ0KPj4gPj4NCj4+ID4+ICt9DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICtjaGFyICoN Cj4+ID4+DQo+PiA+PiArc3RycmNociAoDQo+PiA+Pg0KPj4gPj4gKyAgY29uc3QgY2hhciAgKlN0 ciwNCj4+ID4+DQo+PiA+PiArICBpbnQgICAgICAgICBDaGFyDQo+PiA+Pg0KPj4gPj4gKyAgKQ0K Pj4gPj4NCj4+ID4+ICt7DQo+PiA+Pg0KPj4gPj4gKyAgY2hhciAgKlMsICpsYXN0Ow0KPj4gPj4N Cj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICBTICAgID0gKGNoYXIgKilTdHI7DQo+PiA+Pg0KPj4g Pj4gKyAgbGFzdCA9IE5VTEw7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgIGZvciAo IDsgOyBTKyspIHsNCj4+ID4+DQo+PiA+PiArICAgIGlmICgqUyA9PSBDaGFyKSB7DQo+PiA+Pg0K Pj4gPj4gKyAgICAgIGxhc3QgPSBTOw0KPj4gPj4NCj4+ID4+ICsgICAgfQ0KPj4gPj4NCj4+ID4+ ICsNCj4+ID4+DQo+PiA+PiArICAgIGlmICgqUyA9PSAnXDAnKSB7DQo+PiA+Pg0KPj4gPj4gKyAg ICAgIHJldHVybiBsYXN0Ow0KPj4gPj4NCj4+ID4+ICsgICAgfQ0KPj4gPj4NCj4+ID4+ICsgIH0N Cj4+ID4+DQo+PiA+PiArfQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArU1RBVElDDQo+ PiA+Pg0KPj4gPj4gK2ludA0KPj4gPj4NCj4+ID4+ICtfX2lzc3BhY2UgKA0KPj4gPj4NCj4+ID4+ ICsgIGludCAgY2gNCj4+ID4+DQo+PiA+PiArICApDQo+PiA+Pg0KPj4gPj4gK3sNCj4+ID4+DQo+ PiA+PiArICAvLyBiYXNpYyBBU0NJSSBjdHlwZS5oOmlzc3BhY2UoKS4gTm90IGVmZmljaWVudA0K Pj4gPj4NCj4+ID4+ICsgIHJldHVybiBjaCA9PSAnXHInIHx8IGNoID09ICdcbicgfHwgY2ggPT0g JyAnIHx8IGNoID09ICdcdCcgfHwgY2ggDQo+PiA+PiArID09ICdcdicgfHwgY2ggPT0gJ1xmJzsN Cj4+ID4+DQo+PiA+PiArfQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArdW5zaWduZWQg bG9uZw0KPj4gPj4NCj4+ID4+ICtzdHJ0b3VsICgNCj4+ID4+DQo+PiA+PiArICBjb25zdCBjaGFy ICAqTnB0ciwNCj4+ID4+DQo+PiA+PiArICBjaGFyICAgICAgICAqKkVuZFB0ciwNCj4+ID4+DQo+ PiA+PiArICBpbnQgICAgICAgICBCYXNlDQo+PiA+Pg0KPj4gPj4gKyAgKQ0KPj4gPj4NCj4+ID4+ ICt7DQo+PiA+Pg0KPj4gPj4gKyAgQk9PTEVBTiAgICAgICAgTmVnYXRlOw0KPj4gPj4NCj4+ID4+ ICsgIEJPT0xFQU4gICAgICAgIE92ZXJmbG93Ow0KPj4gPj4NCj4+ID4+ICsgIHVuc2lnbmVkIGxv bmcgIFZhbDsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgTmVnYXRlICAgPSBGQUxT RTsNCj4+ID4+DQo+PiA+PiArICBPdmVyZmxvdyA9IEZBTFNFOw0KPj4gPj4NCj4+ID4+ICsgIFZh bCAgICAgID0gMDsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgLy8gUmVqZWN0IGJh ZCBudW1lcmljIGJhc2VzDQo+PiA+Pg0KPj4gPj4gKyAgaWYgKChCYXNlIDwgMCkgfHwgKEJhc2Ug PT0gMSkgfHwgKEJhc2UgPiAzNikpIHsNCj4+ID4+DQo+PiA+PiArICAgIHJldHVybiAwOw0KPj4g Pj4NCj4+ID4+ICsgIH0NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgLy8gU2tpcCB3 aGl0ZXNwYWNlDQo+PiA+Pg0KPj4gPj4gKyAgd2hpbGUgKF9faXNzcGFjZSAoKk5wdHIpKSB7DQo+ PiA+Pg0KPj4gPj4gKyAgICBOcHRyKys7DQo+PiA+Pg0KPj4gPj4gKyAgfQ0KPj4gPj4NCj4+ID4+ ICsNCj4+ID4+DQo+PiA+PiArICAvLyBDaGVjayBmb3IgKyBvciAtIHByZWZpeGVzDQo+PiA+Pg0K Pj4gPj4gKyAgaWYgKCpOcHRyID09ICctJykgew0KPj4gPj4NCj4+ID4+ICsgICAgTmVnYXRlID0g VFJVRTsNCj4+ID4+DQo+PiA+PiArICAgIE5wdHIrKzsNCj4+ID4+DQo+PiA+PiArICB9IGVsc2Ug aWYgKCpOcHRyID09ICcrJykgew0KPj4gPj4NCj4+ID4+ICsgICAgTnB0cisrOw0KPj4gPj4NCj4+ ID4+ICsgIH0NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgLy8gQ29uc3VtZSB0aGUg c3RhcnQsIGF1dG9kZXRlY3RpbmcgYmFzZSBpZiBuZWVkZWQNCj4+ID4+DQo+PiA+PiArICBpZiAo KE5wdHJbMF0gPT0gJzAnKSAmJiAoKE5wdHJbMV0gPT0gJ3gnKSB8fCAoTnB0clsxXSA9PSAnWCcp KSANCj4+ID4+ICsgJiYgKChCYXNlID09IDApIHx8IChCYXNlID09IDE2KSkpIHsNCj4+ID4+DQo+ PiA+PiArICAgIC8vIEhleA0KPj4gPj4NCj4+ID4+ICsgICAgTnB0ciArPSAyOw0KPj4gPj4NCj4+ ID4+ICsgICAgQmFzZSAgPSAxNjsNCj4+ID4+DQo+PiA+PiArICB9IGVsc2UgaWYgKChOcHRyWzBd ID09ICcwJykgJiYgKChOcHRyWzFdID09ICdiJykgfHwgKE5wdHJbMV0gPT0NCj4+ID4+ICsgJ0In KSkgJiYgKChCYXNlID09IDApIHx8IChCYXNlID09IDIpKSkgew0KPj4gPj4NCj4+ID4+ICsgICAg Ly8gQmluYXJ5IChzdGFuZGFyZCBwZW5kaW5nIEMyMykNCj4+ID4+DQo+PiA+PiArICAgIE5wdHIg Kz0gMjsNCj4+ID4+DQo+PiA+PiArICAgIEJhc2UgID0gMjsNCj4+ID4+DQo+PiA+PiArICB9IGVs c2UgaWYgKChOcHRyWzBdID09ICcwJykgJiYgKChCYXNlID09IDApIHx8IChCYXNlID09IDgpKSkg ew0KPj4gPj4NCj4+ID4+ICsgICAgLy8gT2N0YWwNCj4+ID4+DQo+PiA+PiArICAgIE5wdHIrKzsN Cj4+ID4+DQo+PiA+PiArICAgIEJhc2UgPSA4Ow0KPj4gPj4NCj4+ID4+ICsgIH0gZWxzZSB7DQo+ PiA+Pg0KPj4gPj4gKyAgICBpZiAoQmFzZSA9PSAwKSB7DQo+PiA+Pg0KPj4gPj4gKyAgICAgIC8v IEFzc3VtZSBkZWNpbWFsDQo+PiA+Pg0KPj4gPj4gKyAgICAgIEJhc2UgPSAxMDsNCj4+ID4+DQo+ PiA+PiArICAgIH0NCj4+ID4+DQo+PiA+PiArICB9DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ ID4+ICsgIHdoaWxlIChUUlVFKSB7DQo+PiA+Pg0KPj4gPj4gKyAgICBpbnQgICAgICAgICAgICBE aWdpdDsNCj4+ID4+DQo+PiA+PiArICAgIGNoYXIgICAgICAgICAgIEM7DQo+PiA+Pg0KPj4gPj4g KyAgICB1bnNpZ25lZCBsb25nICBOZXdWYWw7DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ ICsgICAgQyAgICAgPSAqTnB0cjsNCj4+ID4+DQo+PiA+PiArICAgIERpZ2l0ID0gLTE7DQo+PiA+ Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsgICAgaWYgKChDID49ICcwJykgJiYgKEMgPD0gJzkn KSkgew0KPj4gPj4NCj4+ID4+ICsgICAgICBEaWdpdCA9IEMgLSAnMCc7DQo+PiA+Pg0KPj4gPj4g KyAgICB9IGVsc2UgaWYgKChDID49ICdhJykgJiYgKEMgPD0gJ3onKSkgew0KPj4gPj4NCj4+ID4+ ICsgICAgICBEaWdpdCA9IEMgLSAnYScgKyAxMDsNCj4+ID4+DQo+PiA+PiArICAgIH0gZWxzZSBp ZiAoKEMgPj0gJ0EnKSAmJiAoQyA8PSAnWicpKSB7DQo+PiA+Pg0KPj4gPj4gKyAgICAgIERpZ2l0 ID0gQyAtICdBJyArIDEwOw0KPj4gPj4NCj4+ID4+ICsgICAgfQ0KPj4gPj4NCj4+ID4+ICsNCj4+ ID4+DQo+PiA+PiArICAgIGlmICgoRGlnaXQgPT0gLTEpIHx8IChEaWdpdCA+PSBCYXNlKSkgew0K Pj4gPj4NCj4+ID4+ICsgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBjYXNlIGFsc28gaGFuZGxlcyB0 aGUgXDANCj4+ID4+DQo+PiA+PiArICAgICAgaWYgKEVuZFB0cikgew0KPj4gPj4NCj4+ID4+ICsg ICAgICAgICpFbmRQdHIgPSAoY2hhciAqKU5wdHI7DQo+PiA+Pg0KPj4gPj4gKyAgICAgIH0NCj4+ ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgICAgIGJyZWFrOw0KPj4gPj4NCj4+ID4+ICsg ICAgfQ0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArICAgIE5ld1ZhbCA9IFZhbCAqIEJh c2UgKyBEaWdpdDsNCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgICBpZiAoTmV3VmFs IDwgVmFsKSB7DQo+PiA+Pg0KPj4gPj4gKyAgICAgIC8vIE92ZXJmbG93DQo+PiA+Pg0KPj4gPj4g KyAgICAgIE92ZXJmbG93ID0gVFJVRTsNCj4+ID4+DQo+PiA+PiArICAgIH0NCj4+ID4+DQo+PiA+ PiArDQo+PiA+Pg0KPj4gPj4gKyAgICBWYWwgPSBOZXdWYWw7DQo+PiA+Pg0KPj4gPj4gKw0KPj4g Pj4NCj4+ID4+ICsgICAgTnB0cisrOw0KPj4gPj4NCj4+ID4+ICsgIH0NCj4+ID4+DQo+PiA+PiAr DQo+PiA+Pg0KPj4gPj4gKyAgaWYgKE5lZ2F0ZSkgew0KPj4gPj4NCj4+ID4+ICsgICAgVmFsID0g LVZhbDsNCj4+ID4+DQo+PiA+PiArICB9DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsg IGlmIChPdmVyZmxvdykgew0KPj4gPj4NCj4+ID4+ICsgICAgVmFsID0gVUxPTkdfTUFYOw0KPj4g Pj4NCj4+ID4+ICsgIH0NCj4+ID4+DQo+PiA+PiArDQo+PiA+Pg0KPj4gPj4gKyAgLy8gVE9ETzog V2UncmUgbGFja2luZyBlcnJubyBoZXJlLg0KPj4gPj4NCj4+ID4+ICsgIHJldHVybiBWYWw7DQo+ PiA+Pg0KPj4gPj4gK30NCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkv QmFzZUZkdExpYi9saW1pdHMuaA0KPj4gPj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGliL2xp bWl0cy5oDQo+PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gPj4gaW5kZXggMDAwMDAwMDAw MC4uZjZjZjhkNTcwMg0KPj4gPj4gLS0tIC9kZXYvbnVsbA0KPj4gPj4gKysrIGIvTWRlUGtnL0xp YnJhcnkvQmFzZUZkdExpYi9saW1pdHMuaA0KPj4gPj4gQEAgLTAsMCArMSwxMCBAQA0KPj4gPj4g Ky8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxk aW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiArDQo+PiA+ Pg0KPj4gPj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiovDQo+ PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5oPg0K Pj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkv QmFzZUZkdExpYi9zdGRib29sLmgNCj4+ID4+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUZkdExpYi9z dGRib29sLmgNCj4+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiA+PiBpbmRleCAwMDAwMDAw MDAwLi5mNmNmOGQ1NzAyDQo+PiA+PiAtLS0gL2Rldi9udWxsDQo+PiA+PiArKysgYi9NZGVQa2cv TGlicmFyeS9CYXNlRmR0TGliL3N0ZGJvb2wuaA0KPj4gPj4gQEAgLTAsMCArMSwxMCBAQA0KPj4g Pj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiArDQo+ PiA+Pg0KPj4gPj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiov DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJh cnkvQmFzZUZkdExpYi9zdGRkZWYuaA0KPj4gPj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGli L3N0ZGRlZi5oDQo+PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gPj4gaW5kZXggMDAwMDAw MDAwMC4uZjZjZjhkNTcwMg0KPj4gPj4gLS0tIC9kZXYvbnVsbA0KPj4gPj4gKysrIGIvTWRlUGtn L0xpYnJhcnkvQmFzZUZkdExpYi9zdGRkZWYuaA0KPj4gPj4gQEAgLTAsMCArMSwxMCBAQA0KPj4g Pj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiArDQo+ PiA+Pg0KPj4gPj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiov DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJh cnkvQmFzZUZkdExpYi9zdGRpbnQuaA0KPj4gPj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGli L3N0ZGludC5oDQo+PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gPj4gaW5kZXggMDAwMDAw MDAwMC4uZjZjZjhkNTcwMg0KPj4gPj4gLS0tIC9kZXYvbnVsbA0KPj4gPj4gKysrIGIvTWRlUGtn L0xpYnJhcnkvQmFzZUZkdExpYi9zdGRpbnQuaA0KPj4gPj4gQEAgLTAsMCArMSwxMCBAQA0KPj4g Pj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiArDQo+ PiA+Pg0KPj4gPj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiov DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJh cnkvQmFzZUZkdExpYi9zdGRsaWIuaA0KPj4gPj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGli L3N0ZGxpYi5oDQo+PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gPj4gaW5kZXggMDAwMDAw MDAwMC4uZjZjZjhkNTcwMg0KPj4gPj4gLS0tIC9kZXYvbnVsbA0KPj4gPj4gKysrIGIvTWRlUGtn L0xpYnJhcnkvQmFzZUZkdExpYi9zdGRsaWIuaA0KPj4gPj4gQEAgLTAsMCArMSwxMCBAQA0KPj4g Pj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiArDQo+ PiA+Pg0KPj4gPj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiov DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJh cnkvQmFzZUZkdExpYi9zdHJpbmcuaA0KPj4gPj4gYi9NZGVQa2cvTGlicmFyeS9CYXNlRmR0TGli L3N0cmluZy5oDQo+PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gPj4gaW5kZXggMDAwMDAw MDAwMC4uZjZjZjhkNTcwMg0KPj4gPj4gLS0tIC9kZXYvbnVsbA0KPj4gPj4gKysrIGIvTWRlUGtn L0xpYnJhcnkvQmFzZUZkdExpYi9zdHJpbmcuaA0KPj4gPj4gQEAgLTAsMCArMSwxMCBAQA0KPj4g Pj4gKy8qKiBAZmlsZQ0KPj4gPj4NCj4+ID4+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBsaWJmZHQgbGlicmFyeS4NCj4+ID4+DQo+PiA+PiArDQo+ PiA+Pg0KPj4gPj4gK0NvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4gPj4NCj4+ID4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiArKiov DQo+PiA+Pg0KPj4gPj4gKw0KPj4gPj4NCj4+ID4+ICsjaW5jbHVkZSA8TGliRmR0U3VwcG9ydC5o Pg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBr Zy5jaS55YW1sIGIvTWRlUGtnL01kZVBrZy5jaS55YW1sIGluZGV4IA0KPj4gPj4gNmJhODVlYmU2 MS4uZjAzOWRhY2NkYiAxMDA2NDQNCj4+ID4+IC0tLSBhL01kZVBrZy9NZGVQa2cuY2kueWFtbA0K Pj4gPj4gKysrIGIvTWRlUGtnL01kZVBrZy5jaS55YW1sDQo+PiA+PiBAQCAtMiw3ICsyLDcgQEAN Cj4+ID4+ICAjIENJIGNvbmZpZ3VyYXRpb24gZm9yIE1kZVBrZw0KPj4gPj4NCj4+ID4+ICAjDQo+ PiA+Pg0KPj4gPj4gICMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24NCj4+ID4+ DQo+PiA+PiAtIyBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4+ID4+DQo+PiA+PiArIyBDb3B5cmlnaHQgKGMpIDIwMjMsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4+ID4+DQo+PiA+PiAg IyBDb3B5cmlnaHQgKGMpIDIwMjEsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4+ID4+DQo+PiA+PiAgIyBDb3B5cmlnaHQgKGMpIDIwMjMsIExvb25nc29uIFRlY2hub2xv Z3kgQ29ycG9yYXRpb24gTGltaXRlZC4gQWxsIA0KPj4gPj4gcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4+ID4+DQo+PiA+PiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPj4gPj4NCj4+ID4+IEBAIC02Nyw3ICs2Nyw4IEBADQo+PiA+PiAgICAgICAgICAgICAg IkluY2x1ZGUvTGlicmFyeS9QY2RMaWIuaCIsDQo+PiA+Pg0KPj4gPj4gICAgICAgICAgICAgICJJ bmNsdWRlL0xpYnJhcnkvU2FmZUludExpYi5oIiwNCj4+ID4+DQo+PiA+PiAgICAgICAgICAgICAg IkluY2x1ZGUvUHJvdG9jb2wvRGVidWdTdXBwb3J0LmgiLA0KPj4gPj4NCj4+ID4+IC0gICAgICAg ICAgICAiVGVzdC9Vbml0VGVzdC9MaWJyYXJ5L0Jhc2VTYWZlSW50TGliL1Rlc3RCYXNlU2FmZUlu dExpYi5jIg0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+ICsgIlRlc3QvVW5pdFRlc3QvTGlicmFyeS9C YXNlU2FmZUludExpYi9UZXN0QmFzZVNhZmVJbnRMaWIuYyIsDQo+PiA+Pg0KPj4gPj4gKyAgICAg ICAgICAgICJMaWJyYXJ5L0Jhc2VGZHRMaWIiDQo+PiA+Pg0KPj4gPj4gICAgICAgICAgXQ0KPj4g Pj4NCj4+ID4+ICAgICAgfSwNCj4+ID4+DQo+PiA+PiAgICAgICMjIG9wdGlvbnMgZGVmaW5lZCBj aS9QbHVnaW4vQ29tcGlsZXJQbHVnaW4NCj4+ID4+DQo+PiA+PiBAQCAtMTY0LDUgKzE2NSwxNyBA QA0KPj4gPj4gICAgICAgICAgIkV4dGVuZFdvcmRzIjogW10sICAgICAgICAgICAjIHdvcmRzIHRv IGV4dGVuZCB0byB0aGUgZGljdGlvbmFyeSBmb3IgdGhpcyBwYWNrYWdlDQo+PiA+Pg0KPj4gPj4g ICAgICAgICAgIklnbm9yZVN0YW5kYXJkUGF0aHMiOiBbXSwgICAjIFN0YW5kYXJkIFBsdWdpbiBk ZWZpbmVkIHBhdGhzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZQ0KPj4gPj4NCj4+ID4+ICAgICAgICAg ICJBZGRpdGlvbmFsSW5jbHVkZVBhdGhzIjogW10gIyBBZGRpdGlvbmFsIHBhdGhzIHRvIHNwZWxs IA0KPj4gPj4gY2hlY2sgKHdpbGRjYXJkcyBzdXBwb3J0ZWQpDQo+PiA+Pg0KPj4gPj4gKyAgICB9 LA0KPj4gPj4NCj4+ID4+ICsgICAgIyBvcHRpb25zIGRlZmluZWQgaW4gLnB5dG9vbC9QbHVnaW4v VW5jcnVzdGlmeUNoZWNrDQo+PiA+Pg0KPj4gPj4gKyAgICAiVW5jcnVzdGlmeUNoZWNrIjogew0K Pj4gPj4NCj4+ID4+ICsgICAgICAgICJJZ25vcmVGaWxlcyI6IFsNCj4+ID4+DQo+PiA+PiArICAg ICAgICAgICAgIkxpYnJhcnkvQmFzZUZkdExpYi9saWJmZHQiLA0KPj4gPj4NCj4+ID4+ICsgICAg ICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL2xpbWl0cy5oIiwNCj4+ID4+DQo+PiA+PiArICAg ICAgICAgICAgIkxpYnJhcnkvQmFzZUZkdExpYi9zdGRib29sLmgiLA0KPj4gPj4NCj4+ID4+ICsg ICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL3N0ZGRlZi5oIiwNCj4+ID4+DQo+PiA+PiAr ICAgICAgICAgICAgIkxpYnJhcnkvQmFzZUZkdExpYi9zdGRpbnQuaCIsDQo+PiA+Pg0KPj4gPj4g KyAgICAgICAgICAgICJMaWJyYXJ5L0Jhc2VGZHRMaWIvc3RkbGliLmgiLA0KPj4gPj4NCj4+ID4+ ICsgICAgICAgICAgICAiTGlicmFyeS9CYXNlRmR0TGliL3N0cmluZy5oIg0KPj4gPj4NCj4+ID4+ ICsgICAgICAgIF0NCj4+ID4+DQo+PiA+PiAgICAgIH0NCj4+ID4+DQo+PiA+PiAgfQ0KPj4gPj4N Cj4+ID4+IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRlUGtnLmRlYyBiL01kZVBrZy9NZGVQa2cuZGVj IGluZGV4IA0KPj4gPj4gZTcwMTgyYmY3Zi4uOTgwNGE3YTZiZCAxMDA2NDQNCj4+ID4+IC0tLSBh L01kZVBrZy9NZGVQa2cuZGVjDQo+PiA+PiArKysgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPj4gPj4g QEAgLTI4OSw2ICsyODksMTAgQEANCj4+ID4+ICAgICMNCj4+ID4+DQo+PiA+PiAgICBBcm1Ucm5n TGlifEluY2x1ZGUvTGlicmFyeS9Bcm1Ucm5nTGliLmgNCj4+ID4+DQo+PiA+Pg0KPj4gPj4NCj4+ ID4+ICsgICMjICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyBBUElzIGZvciB0aGlyZC1wYXJ0eSBs aWJyYXJ5IGxpYmZkdC4NCj4+ID4+DQo+PiA+PiArICAjDQo+PiA+Pg0KPj4gPj4gKyAgRmR0TGli fEluY2x1ZGUvTGlicmFyeS9GZHRMaWIuaA0KPj4gPj4NCj4+ID4+ICsNCj4+ID4+DQo+PiA+PiAg W0xpYnJhcnlDbGFzc2VzLklBMzIsIExpYnJhcnlDbGFzc2VzLlg2NCwgTGlicmFyeUNsYXNzZXMu QUFSQ0g2NF0NCj4+ID4+DQo+PiA+PiAgICAjIyAgQGxpYnJhcnljbGFzcyAgUHJvdmlkZXMgc2Vy dmljZXMgdG8gZ2VuZXJhdGUgcmFuZG9tIG51bWJlci4NCj4+ID4+DQo+PiA+PiAgICAjDQo+PiA+ Pg0KPj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuZHNjIGIvTWRlUGtnL01kZVBrZy5k c2MgaW5kZXgNCj4+ID4+IDE1MmMwMjk5MWEuLmIzOGM4NjM4MTIgMTAwNjQ0DQo+PiA+PiAtLS0g YS9NZGVQa2cvTWRlUGtnLmRzYw0KPj4gPj4gKysrIGIvTWRlUGtnL01kZVBrZy5kc2MNCj4+ID4+ IEBAIC0xMzcsNiArMTM3LDcgQEANCj4+ID4+ICAgIA0KPj4gPj4gTWRlUGtnL0xpYnJhcnkvU21t Q3B1UmVuZGV6dm91c0xpYk51bGwvU21tQ3B1UmVuZGV6dm91c0xpYk51bGwuaW5mDQo+PiA+Pg0K Pj4gPj4NCj4+ID4+DQo+PiA+PiAgICBNZGVQa2cvTGlicmFyeS9KZWRlY0plcDEwNkxpYi9KZWRl Y0plcDEwNkxpYi5pbmYNCj4+ID4+DQo+PiA+PiArICBNZGVQa2cvTGlicmFyeS9CYXNlRmR0TGli L0Jhc2VGZHRMaWIuaW5mDQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiAgW0NvbXBvbmVudHMu SUEzMiwgQ29tcG9uZW50cy5YNjQsIENvbXBvbmVudHMuQVJNLCANCj4+ID4+IENvbXBvbmVudHMu QUFSQ0g2NF0NCj4+ID4+DQo+PiA+PiAgICAjDQo+PiA+Pg0KPj4gPj4gLS0NCj4+ID4+IDIuMzku MS53aW5kb3dzLjENCj4NCj4NCg==