From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.2634.1668122096356525373 for ; Thu, 10 Nov 2022 15:14:57 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=AMCMI5Oz; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668122096; x=1699658096; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=Vws6yyQKMf1Xr7UUgR8I8N6b4i6dtRRlEZ/rwyuwK4Y=; b=AMCMI5Ozb9uz+v/9n0hi1IbUWxnXoD0FQIsf8CQGEjYEDVDkf1LBkUkb 0UXq+faR+CwZtxF0mNcqgh7KF5+2Zn+G5LzuDs2RmpTDn9MrG8dcp8tsC ZYSjagEW+5VO5haIN4cncnJ1hWFaJ5UhtfebD5V4OC1Tii22lFREVbPnH vg+eJu4RCFe5/xv0QC8XiqDdHDy6pJAZ4AuPs1h9MIoTNgmDKA2wJhbL0 5k2bZPLhcyoJ70X1jkFieLVz5wEtAO1XAiMKpqiM5NKLfZDhFlQcPDvmN +J3Qq5senLWeP9gz3K9SnsWMkfNMFrBl5zphsRVTn2zCtAdQ9YuNYspXu w==; X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="397763740" X-IronPort-AV: E=Sophos;i="5.96,155,1665471600"; d="scan'208";a="397763740" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Nov 2022 15:14:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10527"; a="700999014" X-IronPort-AV: E=Sophos;i="5.96,155,1665471600"; d="scan'208";a="700999014" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga008.fm.intel.com with ESMTP; 10 Nov 2022 15:14:54 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 10 Nov 2022 15:14:54 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 10 Nov 2022 15:14:53 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Thu, 10 Nov 2022 15:14:53 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 10 Nov 2022 15:14:53 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QCyOHvDmxWPvV+oNwpVsLoAJt5m+njNhwFeCRR4Jw0KybHLbwWapu8y9YdHhWvUee+ChyBFRVs/VHTz0IWKiyT3KIa8RA8F26voWyNA3H/mO3QCfBrfwhnZ6Pg84CgIMUffiaJA4utLizQZHnbH9rT/9kFcxIFSmSoOc1i5Zl3y7r9D9Dyh2b19UaT+W24OLs75Nr9sQgAa4vOcaf+IvYITJKvMutfXVzMLLZnlpLMt0QdtHzinl93yQ0i5kyiQMNl/K+nAKD6BZonSTESl9Milevpd7pLZOpsr04UhdylWTTITnDITaQ151mcW+JPacj1qQUi9XQVGS+3WwqJlTyg== 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=Vws6yyQKMf1Xr7UUgR8I8N6b4i6dtRRlEZ/rwyuwK4Y=; b=TQHMJw4CVxFuWkWLzP2qFZuG6GmSMreWh9NsMP4t57F9JgPVton802JtT4IwTx79ea6YU5H1qpSxc8w2XCVsxsLD2psuBcEtaBuvd5DiekUtUCMrSUoWvVcaUdmfrrrLikPmso/j0F7eUDDnTDL7FNP69HYcLIEnrcEY3eSibrF+7Ps2LvFkTNqubxmTYN3t9sxT7+D4ki+da+TnkSMZAh6DJmBpnXiaBZOdxaF4EHM4o83KEttpMQOSTxOv0D0V5vflbC4SNCvB5GkiIfp/7O78enZOZRwvgnjwi7OqKiaCQtIMlSDYUTqj6ec2taiaHBvywgiBMLbn1DEnDh4/BA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by CY5PR11MB6510.namprd11.prod.outlook.com (2603:10b6:930:42::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 23:14:50 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::d936:6054:442a:9dde]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::d936:6054:442a:9dde%6]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 23:14:50 +0000 From: "Michael D Kinney" To: Rebecca Cran , "devel@edk2.groups.io" , "Gao, Liming" , "Liu, Zhiguang" , Andrew Fish , "Kinney, Michael D" Subject: Re: [PATCH v4 1/1] MdePkg: Use ANSI colors to indicate debug message severity Thread-Topic: [PATCH v4 1/1] MdePkg: Use ANSI colors to indicate debug message severity Thread-Index: AQHY6jU9gBlkaH4MY0CmJekZl7EPla44mSvwgABB+gA= Date: Thu, 10 Nov 2022 23:14:49 +0000 Message-ID: References: <20221027185117.758157-1-rebecca@quicinc.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|CY5PR11MB6510:EE_ x-ms-office365-filtering-correlation-id: 1a58ee77-62b7-498a-95b0-08dac3715df5 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: t/tagjzcbkDT4v9MkGeYbBpuAG+xFwRrhT+AVQMam6rtDK7D6hjBj8nDL1DqRQfHJUTeAkLFKlUZDgEavj33629l0T5p19vxV9I3Rer1QxJYLVlGU8fItuzB6NPS/hqCgO5Vv6lpxVZSXzLTOjY/3+5XieWPCXHuSnSOV3UdbVwLCOMTp5K0//fGk2gC/NaKpHOziVe6ZJY8507B7NvKwkx+YM1mJgCzZTf29UTjVayqAcG1PZgJXc+43BoGJzZ5H/b3X7yTEp86RLkau2AS69rSlLMaK6MoofW1EbPYWXwfbvpo2fzpE6iKu7YglzzAXa+tCL6B95yAof00zKStdfUwHDDvssbGz/tajpv75awGpSzzoFqgn+QQu+FmbAOhcao80wSHYR2ctx8zmyG/VP60caNRcPKsp9l3Ncan12UUL3bTe+9BxNfE+QM53tjQSm4Uy0cr8seMMg9oinECi1cSP2xYOimLGvaYRoyDiT4jljLuyvwAKvZ5I02S20eGyaNrmek5V/beDgOXy5OgXysU79iRhsn6fkaDKFw0pkIlJlzwrv0q3tbejJPVWTCkxMuYuejbPXCw75QkiSy8PZg9sUSRpgVon4YxXFj1Ektl/NtldS8beUmL0qk0mDpgc/3RUAPrg6L7ca8oc6S0cAJBOJB1AtWYlQPVSmIVVS6vSW1ZE8Wh12NJfoFtkpT8xsH4AKFxzcnukC17Lee3d1OZluPVUMriQyzwJ8xwO/xIIEquBVvfVFqC/Tm6TOyiRLr/5IjmuBOv0nJGd179o1ODD1q1XX6hmZhuBOsfMqCQOocQOvMcKKqAZP7rC8KB2nbB8gR567YSBsJjZmjLHg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(396003)(136003)(366004)(346002)(376002)(451199015)(66446008)(64756008)(2906002)(66476007)(52536014)(316002)(110136005)(76116006)(86362001)(55016003)(122000001)(6506007)(966005)(478600001)(7696005)(30864003)(71200400001)(9686003)(2940100002)(26005)(8936002)(15650500001)(41300700001)(5660300002)(38070700005)(38100700002)(66946007)(82960400001)(8676002)(53546011)(66556008)(83380400001)(33656002)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MHNuTEZFMHpPUGxxWmdOVzJoNHBEaXRDd0Z0Z1pLWUM3QW1WZy9hNm90bVRj?= =?utf-8?B?VkdBdVlHbUtMK0crRTFMZks2bllsY2E5Y1RFQ09FMUFzQ0UyZzdkSTFXSTlw?= =?utf-8?B?bUg1V2dqK1gxOWtJWHl3cW0wVUdobmVkczBHQ0NaUDFKb1hVK3FrUUZwdXRt?= =?utf-8?B?bkJVcVoyYXYxTjhOT003QURVWDRhalR0QUpkOVNtZ29HWlpEY2FJT29DNnY2?= =?utf-8?B?WGxYRVlkZXJRQkorTEF0cFlCTnJXSFFocXB1dVJmQTVpak9oRW9kQnFGSi9o?= =?utf-8?B?NHJWWERjU1JkVTVOcko2YnJ0STVzY0JwSXZ3VXdUaDRRT0VIYjlxeEFZQVdG?= =?utf-8?B?UGdQYjJJZGZyVmhiS0xIS0t1NEZmRjlCZ3pmMzNKbTJka3BoeERiNFNpME1F?= =?utf-8?B?TFloRUZjSjZma0JwZkNKZCtLc2JMK2tVajlvT3kwelNNT3JUbHEyU2M2R0hM?= =?utf-8?B?SWRWNnFtSkpoV3FKdnYzUVYyRFZ0UkJTaFlTdzVjOGYybzg1bjJLNVI5MHNp?= =?utf-8?B?NWJBUForYXRRMFN4dmtQN25QVnp3TUNLSG0rQUxxWW1kOHR5Y0R5SkpiY0ZS?= =?utf-8?B?WnVua1NmOWpXVGtuSlI1cllvNUdGbWJobUp3ck1QRHZtZnVBMFBHVW5hWWNt?= =?utf-8?B?MUJGdk9PK1RENVFyUkRJaGhxeVpCbEpEcDlDTk1Pci9nYndPcytieUhmWnR6?= =?utf-8?B?ejZDQWFYQ1lzNDh1b1R5aXZab3htSlFuQVpLMFBxWUtwWURVdTNUMEJZWVpX?= =?utf-8?B?SDNPUklHaDEwRTAyd1hXcVBTQnlZblU3Q2FIZnNTMDMwUFRpb2FVMkdtUTJG?= =?utf-8?B?ckFwS2VRTlF4cE4vQURUNkZCdDNoSmtHTkhYTlY4Q1BJemxMUmJtb1BRZVFm?= =?utf-8?B?elRnVm5rVWdESWNJOTAzRmhLLzYzM1ByYVBvcGFFbUQ3VXFyUFNZRjJ4clZX?= =?utf-8?B?czF4Sm8yMzJNWnRLZU9WMXdGazJQdmJNbHRDMEpVNXNUUUpCa3RadWNFdGxQ?= =?utf-8?B?N2J6cm5XWkNMMGRhRTRzUXo5M0cwZHRobWprUUJ6S3RTdi9nOWJmVnFZOGc0?= =?utf-8?B?SHpGQlFpbC9SY2ZpcHV5SWs3UVBRRE85QTg5MENNbmU2K2ovZTZ0bVlxVUlz?= =?utf-8?B?NThYODFqbFp3TWcrOWZIZW5TWTZhL2I2VjBxQ1Z3NWV0RktyZjhYQ2R6UE9w?= =?utf-8?B?anJaKzIwbWY5dWFndWU3WCtsMWc1SXNzeXRtV3gxM0RGcGlOV25VNURuQ2dH?= =?utf-8?B?aWNseDFqNFZKUXFkajdMZTZLdGg5bEd2RTZLSzNJdjdSV3R4dStlMmovbk80?= =?utf-8?B?NVZkMFlsZURORUh6bGdmN0cxVE51M0tiU2NvNXFoKzlkbDNRRUdpRmVIWU1p?= =?utf-8?B?MVdzQXhYd3VEMktQaktyejJpM2pvL2dHNlREV0RsVjNjR1NuOHRXbVM5UVJu?= =?utf-8?B?Y3czZkppMFdLbXl1clg0Y2Z5amZDdkd5aWNLK1JKejY3VUVIdDhyY2RBbDds?= =?utf-8?B?ZDB1cTN5dDkxSzBIa0NWNjBxWWlXeEQwZzFoc0hCZVlWb2g0cFZQVnQxLy9L?= =?utf-8?B?L3BlangrOXFkRnVDUzdqK3ZqcFVkcUFEb0lKOGxKZ3h2MEJacWJ0ZFNCaGEz?= =?utf-8?B?WHh4QTg0eGlPZ3Uzb1BxZ1hpZW45Mk9xWU5Pa29zbjl5SzZhcDlTQTVRVHJ6?= =?utf-8?B?T21hM3I3QkYrMVdobGJSVFFkUjNheStEaHJmTWVkVmJVVU1GL0lyblhGQXRW?= =?utf-8?B?am1WZDRzdlovU2pzYVFSaWJPTzhLbkQ2UkFGdUhnOFVLM3V6OGdLN0VoM1pY?= =?utf-8?B?ZnJ0SmhycGdBWGdLblArRjBjZS9tNzNEQ1pCZ2VBTW01cHhVRGxLa05ZZitm?= =?utf-8?B?enR4Qk1LRWFJRDB1QmRYa29OMC85RjdyTWZ1SWNPaVNKeDMya1VJWEhuSmxo?= =?utf-8?B?dittM05nVjJrRDBCVGxqeFhRSjlKSXltZDNKT1JQKzM5cW43K01wRTVEZDB2?= =?utf-8?B?dWJTWG1PcmF3M2tRNnMwUnNMQkdEQU9ScCtxYVFZdm1IYUs5TkNjY01Nd25h?= =?utf-8?B?YXBtNVpVM0tKd0w0R1hvdGhuWHRpZW1oZWRseU5UMXZteUg5N1RpMzBEcjly?= =?utf-8?B?TExXNUdBdzhHckRNMHd5WjJrUDhBcUhvenEyTDNPcDRMQ2toV0Q2Wm02b0ht?= =?utf-8?B?bWc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a58ee77-62b7-498a-95b0-08dac3715df5 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Nov 2022 23:14:50.0818 (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: Itjm+r1ZPJvn7ZPfJ2OHP0287Q91y23U7ZuvXBJbWR753B8NYRp1cGGVZTqij0o3jbi0XlPl0rr8CgB5f1+U2b/BsaAopuQeRhbDNNhz/ZQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6510 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUmViZWNjYSwNCg0KSGVyZSBpcyBhbiBhbHRlcm5hdGUgd2F5IHRvIGltcGxlbWVudCB0aGlz IGZlYXR1cmUuICBKdXN0IGFuDQpleHBlcmltZW50IGJlY2F1c2UgaXQgZG9lcyBub3QgZm9sbG93 IHRoZSByZWNvbW1lbmRlZCBtZXRob2RzDQp0byBhZGQgYSBmZWF0dXJlIHRoYXQgY2FuIGJlIGVu YWJsZWQvZGlzYWJsZWQuICBJIGhhdmUgdGVzdGVkDQp0aGlzIG9uIEVtdWxhdG9yUGtnIGFuZCBP dm1mUGtnIGFuZCBpdCB3b3JrcyBhcyBleHBlY3RlZC4NCkRvZXMgbm90IHJlcXVpcmUgYW55IHVw ZGF0ZXMgdG8gYW55IERlYnVnTGliIGluc3RhbmNlcy4NCg0KaHR0cHM6Ly9naXRodWIuY29tL21k a2lubmV5L2VkazIvdHJlZS9QT0NfRGVidWdMaWJBbnNpDQpodHRwczovL2dpdGh1Yi5jb20vbWRr aW5uZXkvZWRrMi9jb21taXQvODk2MWVlODJlOTU0OTU2NTFlY2E1MzE0NWFlNzZjNGYwMDk3YzYz Nw0KDQpJbiBnZW5lcmFsIHdlIGRvIG5vdCBsaWtlIHVzaW5nICNpZiB0byBlbmFibGUvZGlzYWJs ZSBmZWF0dXJlcy4NCkhvd2V2ZXIsIHRoaXMgZmVhdHVyZSBkb2VzIGluY3JlYXNlIHRoZSBzaXpl IG9mIG1vZHVsZXMgdG8gZW5hYmxlDQpBTlNJIGNvbG9yIHNlcXVlbmNlcy4gIFRoaXMgYXBwcm9h Y2ggaGFzIHplcm8gc2l6ZSBpbXBhY3QNCmlmIE1ERVBLR19ERUJVR0FOU0kgaXMgbm90IGRlZmlu ZWQuDQoNClRoZXJlIGFyZSBhbHNvIGNoYWxsZW5nZXMgd2l0aCB0aGlzIGZlYXR1cmUgZm9yIHBs YXRmb3JtIEZXDQpidWlsZHMgdGhhdCBtYXkgaW50ZWdyYXRlIGJpbmFyaWVzIGZyb20gb3RoZXIg c291cmNlcyBpZiB0aGVyZSANCmlzIGEgbWl4IG9mIG1vZHVsZXMgdGhhdCBlbmFibGUgb3IgZGlz YWJsZSB0aGUgZmVhdHVyZS4NCg0KT25seSB0aGUgcGxhdGZvcm0gZGV2ZWxvcGVyIGtub3dzIGlm IHRoZSBkZXZpY2UgdGhhdCBhbGwNCkRFQlVHKCkvQVNTRVJUKCkgbWVzc2FnZXMgYXJlIHJvdXRl ZCBzdXBwb3J0cyBBTlNJIGNvbG9yDQpzZXF1ZW5jZXMgb3Igbm90LiAgVGhpcyBtZWFucyBhZGRp bmcgdGhlIHNlcXVlbmNlcyBuZWVkcw0KdG8gYmUgaW4gYSBwbGF0Zm9ybSBjb21wb25lbnQuICBP ciB3ZSBuZWVkIGEgbW9kZSB3aGVyZSBhbGwgDQpnZW5lcmF0ZWQgbWVzc2FnZXMgYXJlIG1vcmUg bGlrZSB0cmFjZSBtZXNzYWdlcyB0aGF0IGluY2x1ZGUNCnRoZSBtZXNzYWdlIHR5cGUgYW5kIGVy cm9yIGxldmVsLCBhbmQgbGV0IHRoZSByZWNlaXZlciBvZg0KdGhlIHRyYWNlIG1lc3NhZ2VzIHJl Zm9ybWF0IGFzIG5lZWRlZC4NCg0KQmVzdCByZWdhcmRzLA0KDQpNaWtlDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMTAsIDIwMjIgMTE6 MTIgQU0NCj4gVG86IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBxdWljaW5jLmNvbT47IGRldmVsQGVk azIuZ3JvdXBzLmlvOyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1 LCBaaGlndWFuZw0KPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEFuZHJldyBGaXNoIDxhZmlz aEBhcHBsZS5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjQgMS8xXSBNZGVQa2c6IFVzZSBBTlNJIGNvbG9y cyB0byBpbmRpY2F0ZSBkZWJ1ZyBtZXNzYWdlIHNldmVyaXR5DQo+IA0KPiBIaSBSZWJlY2NhLA0K PiANCj4gSW4gdGhlIGVkazIgcmVwbywgSSBzZWUgdGhlIGZvbGxvd2luZyBpbnN0YW5jZXMgb2Yg dGhlIERlYnVnUHJpbnRNYXJrZXIoKSBBUEkNCj4gd2hlcmUgeW91IGFyZSBjdXJyZW50bHkgYWRk aW5nIGhlIEFOU0kgY29sb3Igc2VxdWVuY2VzLiAgU2hvdWxkIGFsbCBvZiB0aGVzZQ0KPiBiZSB1 cGRhdGVkPyAgSSBkaWQgbm90IHJldmlldyB0aGUgZWRrMi1wbGF0Zm9ybXMgcmVwby4gIEFuZCB0 aGVyZSBtYXkgYmUNCj4gZG93bnN0cmVhbSBjdXN0b20gRGVidWdMaWIgaW5zdGFuY2VzLiAgSXQg d291bGQgYmV0dGVyIGlmIHRoaXMgZmVhdHVyZSBjb3VsZA0KPiBiZSBlbmFibGVkIGZvciBhbGwg ZXhpc3RpbmcgRGVidWdMaWIgaW5zdGFuY2VzLCBidXQgdGhlIG9ubHkgY29tbW9uIGxvY2F0aW9u DQo+IGlzIHRoZSBERUJVRygpIG1hY3JvIGRlZmluaXRpb24gaW4gTWRlUGtnL0luY2x1ZGUvTGli cmFyeS9EZWJ1Z0xpYi5oIGFuZA0KPiBhZGRpbmcgY29kZSB0byB0aGF0IG1hY3JvIGFkZHMgc3Rh dGVtZW50cyB0byB0aGUgbW9kdWxlIGNhbGxpbmcgdGhlIERlYnVnTGliDQo+IHNlcnZpY2VzLCB3 aGljaCBjYW4gaW5jcmVhc2UgY29kZSBzaXplLg0KPiANCj4gQXJtUGtnXExpYnJhcnlcU2VtaUhv c3RpbmdEZWJ1Z0xpYlxEZWJ1Z0xpYi5jOg0KPiAgICA3NSAgVk9JRA0KPiAgICA3NjogRGVidWdQ cmludE1hcmtlciAoDQo+ICAgIDc3ICAgIElOICBVSU5UTiAgICAgICAgRXJyb3JMZXZlbCwNCj4g DQo+IEludGVsRnNwMlBrZ1xMaWJyYXJ5XEJhc2VGc3BEZWJ1Z0xpYlNlcmlhbFBvcnRcRGVidWdM aWIuYzoNCj4gICAgODkgIFZPSUQNCj4gICAgOTA6IERlYnVnUHJpbnRNYXJrZXIgKA0KPiAgICA5 MSAgICBJTiAgVUlOVE4gICAgICAgIEVycm9yTGV2ZWwsDQo+IA0KPiBNZGVNb2R1bGVQa2dcTGli cmFyeVxQZWlEeGVEZWJ1Z0xpYlJlcG9ydFN0YXR1c0NvZGVcRGVidWdMaWIuYzoNCj4gICAgODUg IFZPSUQNCj4gICAgODY6IERlYnVnUHJpbnRNYXJrZXIgKA0KPiAgICA4NyAgICBJTiAgVUlOVE4g ICAgICAgIEVycm9yTGV2ZWwsDQo+IA0KPiBNZGVQa2dcTGlicmFyeVxCYXNlRGVidWdMaWJTZXJp YWxQb3J0XERlYnVnTGliLmM6DQo+ICAgIDk3ICBWT0lEDQo+ICAgIDk4OiBEZWJ1Z1ByaW50TWFy a2VyICgNCj4gICAgOTkgICAgSU4gIFVJTlROICAgICAgICBFcnJvckxldmVsLA0KPiANCj4gTWRl UGtnXExpYnJhcnlcRHhlUnVudGltZURlYnVnTGliU2VyaWFsUG9ydFxEZWJ1Z0xpYi5jOg0KPiAg IDE1NiAgVk9JRA0KPiAgIDE1NzogRGVidWdQcmludE1hcmtlciAoDQo+ICAgMTU4ICAgIElOICBV SU5UTiAgICAgICAgRXJyb3JMZXZlbCwNCj4gDQo+IE1kZVBrZ1xMaWJyYXJ5XFVlZmlEZWJ1Z0xp YkNvbk91dFxEZWJ1Z0xpYi5jOg0KPiAgICA3OSAgVk9JRA0KPiAgICA4MDogRGVidWdQcmludE1h cmtlciAoDQo+ICAgIDgxICAgIElOICBVSU5UTiAgICAgICAgRXJyb3JMZXZlbCwNCj4gDQo+IE1k ZVBrZ1xMaWJyYXJ5XFVlZmlEZWJ1Z0xpYkRlYnVnUG9ydFByb3RvY29sXERlYnVnTGliLmM6DQo+ ICAgMTM3ICBWT0lEDQo+ICAgMTM4OiBEZWJ1Z1ByaW50TWFya2VyICgNCj4gICAxMzkgICAgSU4g IFVJTlROICAgICAgICBFcnJvckxldmVsLA0KPiANCj4gTWRlUGtnXExpYnJhcnlcVWVmaURlYnVn TGliU3RkRXJyXERlYnVnTGliLmM6DQo+ICAgIDc5ICBWT0lEDQo+ICAgIDgwOiBEZWJ1Z1ByaW50 TWFya2VyICgNCj4gICAgODEgICAgSU4gIFVJTlROICAgICAgICBFcnJvckxldmVsLA0KPiANCj4g T3ZtZlBrZ1xMaWJyYXJ5XFBsYXRmb3JtRGVidWdMaWJJb1BvcnRcRGVidWdMaWIuYzoNCj4gICAg NzkgIFZPSUQNCj4gICAgODA6IERlYnVnUHJpbnRNYXJrZXIgKA0KPiAgICA4MSAgICBJTiAgVUlO VE4gICAgICAgIEVycm9yTGV2ZWwsDQo+IA0KPiBBbHNvLCB0aGUgRXJyb3JMZXZlbCBwYXJhbWV0 ZXIgaXMgYSBiaXRtYXNrLiAgSXQgY2Fubm90IGJlIHVzZWQgaW4NCj4gYSBzd2l0Y2gvY2FzZSBz dGF0ZW1lbnQgZm9yIG9ubHkgMSBiaXQgYmVpbmcgc2V0LiAgVG8gdGVzdCBmb3IgYQ0KPiBkZWJ1 ZyBtZXNzYWdlIG9mIHR5cGUgRVJST1Igb3IgV0FSTiwgYSBjaGVjayBtdXN0IGJlIGRvbmUgZm9y IHRoYXQNCj4gb25lIGJpdCBiZWluZyBzZXQgaW4gRXJyb3JMZXZlbC4NCj4gDQo+IFRoZSBEZWJ1 Z0xpYiBhbHNvIHByb3ZpZGVzIHN1cHBvcnQgZm9yIEFTU0VSVCgpIG1hY3Jvcy4gIFNob3VsZA0K PiBBU1NFUlQoKSBtZXNzYWdlcyBoYXZlIHRoZSBzYW1lIGNvbG9yIGFzIGFuIEVSUk9SIG1lc3Nh Z2U/ICBPcg0KPiBpdHMgb3duIGNvbG9yPw0KPiANCj4gVGhlIGxvZ2ljIGJlbG93IGNoYW5nZXMg dGhlIGNvbG9yIGZvciB0aGUgbWVzc2FnZSBiYXNlZCBvbiBtZXNzYWdlDQo+IHR5cGUuICBCdXQg aXMgZG9lcyBub3Qgc2F2ZS9yZXN0b3JlIHRoZSBjdXJyZW50IEFOU0kgY29sb3Igc2V0dGluZy4N Cj4gSXQgc2VlIGl0IHVzaW5nIHRoZSBFTkRfRVNDX1NFUS4gIERvZXMgdGhhdCBwdXQgdGhlIGNv bG9yIHNldHRpbmdzDQo+IGJhY2sgdG8gdGhlIHByZXZpb3VzIHNldHRpbmc/DQo+IA0KPiBUaGFu a3MsDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g RnJvbTogUmViZWNjYSBDcmFuIDxyZWJlY2NhQHF1aWNpbmMuY29tPg0KPiA+IFNlbnQ6IFRodXJz ZGF5LCBPY3RvYmVyIDI3LCAyMDIyIDExOjUxIEFNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBz LmlvOyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8s IExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LA0KPiBaaGlndWFuZw0KPiA+ IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbT4N Cj4gPiBDYzogUmViZWNjYSBDcmFuIDxyZWJlY2NhQHF1aWNpbmMuY29tPg0KPiA+IFN1YmplY3Q6 IFtQQVRDSCB2NCAxLzFdIE1kZVBrZzogVXNlIEFOU0kgY29sb3JzIHRvIGluZGljYXRlIGRlYnVn IG1lc3NhZ2Ugc2V2ZXJpdHkNCj4gPg0KPiA+IFRoZXJlIGN1cnJlbnRseSBpc24ndCBhIHdheSB0 byBkaWZmZXJlbnRpYXRlIHRoZSBkaWZmZXJlbnQNCj4gPiBsZXZlbHMgb2YgREVCVUcgb3V0cHV0 OiBERUJVR19FUlJPUiwgREVCVUdfV0FSTiwgREVCVUdfSU5GTw0KPiA+IGV0Yy4NCj4gPg0KPiA+ IFRvIGltcHJvdmUgdGhpcywgd3JhcCBERUJVR19FUlJPUiBhbmQgREVCVUdfV0FSTiBsZXZlbA0K PiA+IG1lc3NhZ2VzIGluIEFOU0kgY29sb3IgY29kZSBlc2NhcGUgc2VxdWVuY2VzLiBERUJVR19F UlJPUg0KPiA+IG1lc3NhZ2VzIHdpbGwgYmUgZGlzcGxheWVkIGluIHJlZCB0ZXh0LCBhbmQgREVC VUdfV0FSTg0KPiA+IGluIHllbGxvdy4NCj4gPg0KPiA+IE9ubHkgZW5hYmxlIHRoaXMgbmV3IGZ1 bmN0aW9uYWxpdHkgaWYgdGhlIEZlYXR1cmVGbGFnDQo+ID4gZ0VmaU1kZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZERlYnVnQW5zaVNlcVN1cHBvcnQNCj4gPiBpcyBzZXQgdG8gVFJVRS4gQnkgZGVmYXVs dCBpdCdzIEZBTFNFLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUmViZWNjYSBDcmFuIDxyZWJl Y2NhQHF1aWNpbmMuY29tPg0KPiA+IC0tLQ0KPiA+ICBNZGVQa2cvTWRlUGtnLmRlYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysNCj4gPiAgTWRl UGtnL0xpYnJhcnkvQmFzZURlYnVnTGliU2VyaWFsUG9ydC9CYXNlRGVidWdMaWJTZXJpYWxQb3J0 LmluZiB8ICAyICstDQo+ID4gIE1kZVBrZy9MaWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91dC9VZWZp RGVidWdMaWJDb25PdXQuaW5mICAgICAgICAgfCAgMiArLQ0KPiA+ICBNZGVQa2cvTGlicmFyeS9C YXNlRGVidWdMaWJTZXJpYWxQb3J0L0RlYnVnTGliLmMgICAgICAgICAgICAgICAgIHwgNjQgKysr KysrKysrKysrKysrKysrKysNCj4gPiAgTWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGliQ29uT3V0 L0RlYnVnTGliLmMgICAgICAgICAgICAgICAgICAgICB8IDY0ICsrKysrKysrKysrKysrKysrKysr DQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtn LmRlYw0KPiA+IGluZGV4IDRjODFjYmQ3NWFiMi4uOGRkYzQ2YjYyZTdkIDEwMDY0NA0KPiA+IC0t LSBhL01kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKysrIGIvTWRlUGtnL01kZVBrZy5kZWMNCj4gPiBA QCAtNCw2ICs0LDcgQEANCj4gPiAgIyBJdCBhbHNvIHByb3ZpZGVzIHRoZSBkZWZpbml0aW9ucyhp bmNsdWRpbmcgUFBJcy9QUk9UT0NPTHMvR1VJRHMpIG9mDQo+ID4gICMgRUZJMS4xMC9VRUZJMi43 L1BJMS43IGFuZCBzb21lIEluZHVzdHJ5IFN0YW5kYXJkcy4NCj4gPiAgIw0KPiA+ICsjIENvcHly aWdodCAoYykgMjAyMiwgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gICMgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAyMiwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICAjIFBvcnRpb25zIGNv cHlyaWdodCAoYykgMjAwOCAtIDIwMDksIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gICMgKEMpIENvcHlyaWdodCAyMDE2IC0gMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50 ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiBAQCAtMTk3Nyw2ICsxOTc4LDExIEBAIFtQ Y2RzRmVhdHVyZUZsYWddDQo+ID4gICAgIyBAUHJvbXB0IFZhbGlkYXRlIE9SREVSRURfQ09MTEVD VElPTiBzdHJ1Y3R1cmUNCj4gPiAgICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmFsaWRh dGVPcmRlcmVkQ29sbGVjdGlvbnxGQUxTRXxCT09MRUFOfDB4MDAwMDAwMmENCj4gPg0KPiA+ICsg ICMjIEluZGljYXRlcyBpZiBERUJVRyBvdXRwdXQgc2hvdWxkIHVzZSBBTlNJIHNlcXVlbmNlcy48 QlI+PEJSPg0KPiA+ICsgICMgICBUUlVFICAtIFdpbGwgdXNlIEFOU0kgc2VxdWVuY2VzIGluIERF QlVHIG91dHB1dC48QlI+DQo+ID4gKyAgIyAgIEZBTFNFIC0gV2lsbCBub3QgdXNlIEFOU0kgc2Vx dWVuY2VzIGluIERFQlVHIG91dHB1dC48QlI+DQo+ID4gKyAgZ0VmaU1kZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZERlYnVnQW5zaVNlcVN1cHBvcnR8RkFMU0V8Qk9PTEVBTnwweDAwMDAwMDJmDQo+ID4g Kw0KPiA+ICBbUGNkc0ZpeGVkQXRCdWlsZF0NCj4gPiAgICAjIyBTdGF0dXMgY29kZSB2YWx1ZSBm b3IgaW5kaWNhdGluZyBhIHdhdGNoZG9nIHRpbWVyIGhhcyBleHBpcmVkLg0KPiA+ICAgICMgRUZJ X0NPTVBVVElOR19VTklUX0hPU1RfUFJPQ0VTU09SIHwgRUZJX0NVX0hQX0VDX1RJTUVSX0VYUElS RUQNCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZURlYnVnTGliU2VyaWFsUG9y dC9CYXNlRGVidWdMaWJTZXJpYWxQb3J0LmluZg0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZURl YnVnTGliU2VyaWFsUG9ydC9CYXNlRGVidWdMaWJTZXJpYWxQb3J0LmluZg0KPiA+IGluZGV4IDc1 MDRmYWVlNjdmMC4uOGQ2ZWQ3NTllOTc0IDEwMDY0NA0KPiA+IC0tLSBhL01kZVBrZy9MaWJyYXJ5 L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvQmFzZURlYnVnTGliU2VyaWFsUG9ydC5pbmYNCj4gPiAr KysgYi9NZGVQa2cvTGlicmFyeS9CYXNlRGVidWdMaWJTZXJpYWxQb3J0L0Jhc2VEZWJ1Z0xpYlNl cmlhbFBvcnQuaW5mDQo+ID4gQEAgLTQxLDQgKzQxLDQgQEAgW1BjZF0NCj4gPiAgICBnRWZpTWRl UGtnVG9rZW5TcGFjZUd1aWQuUGNkRGVidWdDbGVhck1lbW9yeVZhbHVlICAjIyBTT01FVElNRVNf Q09OU1VNRVMNCj4gPiAgICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRGVidWdQcm9wZXJ0 eU1hc2sgICAgICAjIyBDT05TVU1FUw0KPiA+ICAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5Q Y2RGaXhlZERlYnVnUHJpbnRFcnJvckxldmVsICMjIENPTlNVTUVTDQo+ID4gLQ0KPiA+ICsgIGdF ZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2REZWJ1Z0Fuc2lTZXFTdXBwb3J0ICAgICAgICMjIENP TlNVTUVTDQo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91 dC9VZWZpRGVidWdMaWJDb25PdXQuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGli Q29uT3V0L1VlZmlEZWJ1Z0xpYkNvbk91dC5pbmYNCj4gPiBpbmRleCA1M2JiYzhjZTNmNjUuLjY5 NDQ5NGZmYzdhMyAxMDA2NDQNCj4gPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9VZWZpRGVidWdMaWJD b25PdXQvVWVmaURlYnVnTGliQ29uT3V0LmluZg0KPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L1Vl ZmlEZWJ1Z0xpYkNvbk91dC9VZWZpRGVidWdMaWJDb25PdXQuaW5mDQo+ID4gQEAgLTUwLDQgKzUw LDQgQEAgW1BjZF0NCj4gPiAgICBnRWZpTWRlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRGVidWdDbGVh ck1lbW9yeVZhbHVlICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gPiAgICBnRWZpTWRl UGtnVG9rZW5TcGFjZUd1aWQuUGNkRGVidWdQcm9wZXJ0eU1hc2sgICAgICAgICAgICAjIyBDT05T VU1FUw0KPiA+ICAgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGaXhlZERlYnVnUHJpbnRF cnJvckxldmVsICAgICMjIENPTlNVTUVTDQo+ID4gLQ0KPiA+ICsgIGdFZmlNZGVQa2dUb2tlblNw YWNlR3VpZC5QY2REZWJ1Z0Fuc2lTZXFTdXBwb3J0ICAgICAgICAgICMjIENPTlNVTUVTDQo+ID4g ZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvRGVidWdM aWIuYyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvRGVidWdMaWIuYw0K PiA+IGluZGV4IGJkNTY4Njk0NzcxMi4uZGYzMWJkMWZmYjlmIDEwMDY0NA0KPiA+IC0tLSBhL01k ZVBrZy9MaWJyYXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvRGVidWdMaWIuYw0KPiA+ICsrKyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQvRGVidWdMaWIuYw0KPiA+IEBA IC0yNiw2ICsyNiwxMCBAQA0KPiA+ICAvLw0KPiA+ICAjZGVmaW5lIE1BWF9ERUJVR19NRVNTQUdF X0xFTkdUSCAgMHgxMDANCj4gPg0KPiA+ICsjZGVmaW5lIFJFRF9FU0NfU0VRICAgICAiXDAzM1sz MW0iDQo+ID4gKyNkZWZpbmUgWUVMTE9XX0VTQ19TRVEgICJcMDMzWzMzbSINCj4gPiArI2RlZmlu ZSBFTkRfRVNDX1NFUSAgICAgIlwwMzNbMG0iDQo+ID4gKw0KPiA+ICAvLw0KPiA+ICAvLyBWQV9M SVNUIGNhbiBub3QgaW5pdGlhbGl6ZSB0byBOVUxMIGZvciBhbGwgY29tcGlsZXIsIHNvIHdlIHVz ZSB0aGlzIHRvDQo+ID4gIC8vIGluZGljYXRlIGEgbnVsbCBWQV9MSVNUDQo+ID4gQEAgLTc3LDYg KzgxLDYyIEBAIERlYnVnUHJpbnQgKA0KPiA+ICAgIFZBX0VORCAoTWFya2VyKTsNCj4gPiAgfQ0K PiA+DQo+ID4gKy8qKg0KPiA+ICsgIFdyYXBzIGEgbWVzc2FnZSB3aXRoIEFOU0kgY29sb3IgZXNj YXBlIGNvZGVzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gU3RyaW5nICAgICBUaGUgc3RyaW5nIHRv IHdyYXAuDQo+ID4gKyAgQHBhcmFtIFN0cmluZ0xlbiAgVGhlIHNpemUgb2YgdGhlIFN0cmluZyBi dWZmZXIgaW4gY2hhcmFjdGVycy4NCj4gPiArICBAcGFyYW0gRXJyb3JMZXZlbCBUaGUgZXJyb3Ig bGV2ZWwuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgICAgVGhl IHN0cmluZyB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5f QlVGRkVSX1RPT19TTUFMTCBUaGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4NCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtTVEFUSUMNCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtBc2NpaURlYnVnR2V0Q29s b3JTdHJpbmcgKA0KPiA+ICsgIElOIE9VVCBDSEFSOCAgKlN0cmluZywNCj4gPiArICBJTiBVSU5U TiAgICAgIFN0cmluZ0xlbiwNCj4gPiArICBJTiBVSU5UTiAgICAgIEVycm9yTGV2ZWwNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBDSEFSOCAgQnVmZmVyW01BWF9ERUJVR19NRVNTQUdFX0xFTkdU SF07DQo+ID4gKyAgVUlOVE4gIFJlcUJ1ZmZlckxlbjsNCj4gPiArDQo+ID4gKyAgUmVxQnVmZmVy TGVuID0gQXNjaWlTdHJMZW4gKFN0cmluZykgKw0KPiA+ICsgICAgICAgICAgICAgICAgIEFzY2lp U3RyTGVuIChSRURfRVNDX1NFUSkgKw0KPiA+ICsgICAgICAgICAgICAgICAgIEFzY2lpU3RyTGVu IChFTkRfRVNDX1NFUSkgKw0KPiA+ICsgICAgICAgICAgICAgICAgIDE7DQo+ID4gKw0KPiA+ICsg IGlmIChTdHJpbmdMZW4gPCBSZXFCdWZmZXJMZW4pIHsNCj4gPiArICAgIHJldHVybiBSRVRVUk5f QlVGRkVSX1RPT19TTUFMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFplcm9NZW0gKEJ1ZmZl ciwgc2l6ZW9mIChCdWZmZXIpKTsNCj4gPiArDQo+ID4gKyAgc3dpdGNoIChFcnJvckxldmVsKSB7 DQo+ID4gKyAgICBjYXNlIERFQlVHX1dBUk46DQo+ID4gKyAgICAgIEFzY2lpU3RyQ3B5UyAoQnVm ZmVyLCBNQVhfREVCVUdfTUVTU0FHRV9MRU5HVEgsIFlFTExPV19FU0NfU0VRKTsNCj4gPiArICAg ICAgYnJlYWs7DQo+ID4gKyAgICBjYXNlIERFQlVHX0VSUk9SOg0KPiA+ICsgICAgICBBc2NpaVN0 ckNweVMgKEJ1ZmZlciwgTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILCBSRURfRVNDX1NFUSk7DQo+ ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQXNjaWlTdHJDYXRTIChC dWZmZXIsIE1BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCwgU3RyaW5nKTsNCj4gPiArDQo+ID4gKyAg c3dpdGNoIChFcnJvckxldmVsKSB7DQo+ID4gKyAgICBjYXNlIERFQlVHX1dBUk46DQo+ID4gKyAg ICBjYXNlIERFQlVHX0VSUk9SOg0KPiA+ICsgICAgICBBc2NpaVN0ckNhdFMgKEJ1ZmZlciwgTUFY X0RFQlVHX01FU1NBR0VfTEVOR1RILCBFTkRfRVNDX1NFUSk7DQo+ID4gKyAgICAgIGJyZWFrOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQXNjaWlTdHJDcHlTIChTdHJpbmcsIFN0cmluZ0xlbiwg QnVmZmVyKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICAvKioNCj4gPiAgICBQcmludHMgYSBkZWJ1ZyBtZXNzYWdlIHRvIHRoZSBkZWJ1 ZyBvdXRwdXQgZGV2aWNlIGlmIHRoZSBzcGVjaWZpZWQNCj4gPiAgICBlcnJvciBsZXZlbCBpcyBl bmFibGVkIGJhc2Ugb24gTnVsbC10ZXJtaW5hdGVkIGZvcm1hdCBzdHJpbmcgYW5kIGENCj4gPiBA QCAtMTI1LDYgKzE4NSwxMCBAQCBEZWJ1Z1ByaW50TWFya2VyICgNCj4gPiAgICAgIEFzY2lpQlNQ cmludCAoQnVmZmVyLCBzaXplb2YgKEJ1ZmZlciksIEZvcm1hdCwgQmFzZUxpc3RNYXJrZXIpOw0K PiA+ICAgIH0NCj4gPg0KPiA+ICsgIGlmIChGZWF0dXJlUGNkR2V0IChQY2REZWJ1Z0Fuc2lTZXFT dXBwb3J0KSkgew0KPiA+ICsgICAgQXNjaWlEZWJ1Z0dldENvbG9yU3RyaW5nIChCdWZmZXIsIE1B WF9ERUJVR19NRVNTQUdFX0xFTkdUSCwgRXJyb3JMZXZlbCk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiAgICAvLw0KPiA+ICAgIC8vIFNlbmQgdGhlIHByaW50IHN0cmluZyB0byBhIFNlcmlhbCBQb3J0 DQo+ID4gICAgLy8NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGli Q29uT3V0L0RlYnVnTGliLmMgYi9NZGVQa2cvTGlicmFyeS9VZWZpRGVidWdMaWJDb25PdXQvRGVi dWdMaWIuYw0KPiA+IGluZGV4IDY1YzhkYzJiNDY1NC4uNTIxMjk4YTdjOGE3IDEwMDY0NA0KPiA+ IC0tLSBhL01kZVBrZy9MaWJyYXJ5L1VlZmlEZWJ1Z0xpYkNvbk91dC9EZWJ1Z0xpYi5jDQo+ID4g KysrIGIvTWRlUGtnL0xpYnJhcnkvVWVmaURlYnVnTGliQ29uT3V0L0RlYnVnTGliLmMNCj4gPiBA QCAtMjAsNiArMjAsMTAgQEANCj4gPiAgLy8NCj4gPiAgI2RlZmluZSBNQVhfREVCVUdfTUVTU0FH RV9MRU5HVEggIDB4MTAwDQo+ID4NCj4gPiArI2RlZmluZSBSRURfRVNDX1NFUSAgICAgTCJcMDMz WzMxbSINCj4gPiArI2RlZmluZSBZRUxMT1dfRVNDX1NFUSAgTCJcMDMzWzMzbSINCj4gPiArI2Rl ZmluZSBFTkRfRVNDX1NFUSAgICAgTCJcMDMzWzBtIg0KPiA+ICsNCj4gPiAgLy8NCj4gPiAgLy8g VkFfTElTVCBjYW4gbm90IGluaXRpYWxpemUgdG8gTlVMTCBmb3IgYWxsIGNvbXBpbGVyLCBzbyB3 ZSB1c2UgdGhpcyB0bw0KPiA+ICAvLyBpbmRpY2F0ZSBhIG51bGwgVkFfTElTVA0KPiA+IEBAIC01 OSw2ICs2Myw2MiBAQCBEZWJ1Z1ByaW50ICgNCj4gPiAgICBWQV9FTkQgKE1hcmtlcik7DQo+ID4g IH0NCj4gPg0KPiA+ICsvKioNCj4gPiArICBXcmFwcyBhIG1lc3NhZ2Ugd2l0aCBBTlNJIGNvbG9y IGVzY2FwZSBjb2Rlcy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFN0cmluZyAgICAgVGhlIHN0cmlu ZyB0byB3cmFwLg0KPiA+ICsgIEBwYXJhbSBTdHJpbmdMZW4gIFRoZSBzaXplIG9mIHRoZSBTdHJp bmcgYnVmZmVyIGluIFVuaWNvZGUgY2hhcmFjdGVycy4NCj4gPiArICBAcGFyYW0gRXJyb3JMZXZl bCBUaGUgZXJyb3IgbGV2ZWwuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1Mg ICAgICAgICAgVGhlIHN0cmluZyB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuDQo+ID4gKyAgQHJl dHZhbCBSRVRVUk5fQlVGRkVSX1RPT19TTUFMTCBUaGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtVbmlj b2RlRGVidWdHZXRDb2xvclN0cmluZyAoDQo+ID4gKyAgSU4gT1VUIENIQVIxNiAgKlN0cmluZywN Cj4gPiArICBJTiBVSU5UTiAgICAgICBTdHJpbmdMZW4sDQo+ID4gKyAgSU4gVUlOVE4gICAgICAg RXJyb3JMZXZlbA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIENIQVIxNiAgQnVmZmVyW01BWF9E RUJVR19NRVNTQUdFX0xFTkdUSF07DQo+ID4gKyAgVUlOVE4gICBSZXFCdWZmZXJMZW47DQo+ID4g Kw0KPiA+ICsgIFJlcUJ1ZmZlckxlbiA9IFN0ckxlbiAoU3RyaW5nKSArDQo+ID4gKyAgICAgICAg ICAgICAgICAgU3RyTGVuIChSRURfRVNDX1NFUSkgKw0KPiA+ICsgICAgICAgICAgICAgICAgIFN0 ckxlbiAoRU5EX0VTQ19TRVEpICsNCj4gPiArICAgICAgICAgICAgICAgICAxOw0KPiA+ICsNCj4g PiArICBpZiAoU3RyaW5nTGVuIDwgUmVxQnVmZmVyTGVuKSB7DQo+ID4gKyAgICByZXR1cm4gUkVU VVJOX0JVRkZFUl9UT09fU01BTEw7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBaZXJvTWVtIChC dWZmZXIsIHNpemVvZiAoQnVmZmVyKSk7DQo+ID4gKw0KPiA+ICsgIHN3aXRjaCAoRXJyb3JMZXZl bCkgew0KPiA+ICsgICAgY2FzZSBERUJVR19XQVJOOg0KPiA+ICsgICAgICBTdHJDcHlTIChCdWZm ZXIsIE1BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCwgWUVMTE9XX0VTQ19TRVEpOw0KPiA+ICsgICAg ICBicmVhazsNCj4gPiArICAgIGNhc2UgREVCVUdfRVJST1I6DQo+ID4gKyAgICAgIFN0ckNweVMg KEJ1ZmZlciwgTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILCBSRURfRVNDX1NFUSk7DQo+ID4gKyAg ICAgIGJyZWFrOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RyQ2F0UyAoQnVmZmVyLCBNQVhf REVCVUdfTUVTU0FHRV9MRU5HVEgsIFN0cmluZyk7DQo+ID4gKw0KPiA+ICsgIHN3aXRjaCAoRXJy b3JMZXZlbCkgew0KPiA+ICsgICAgY2FzZSBERUJVR19XQVJOOg0KPiA+ICsgICAgY2FzZSBERUJV R19FUlJPUjoNCj4gPiArICAgICAgU3RyQ2F0UyAoQnVmZmVyLCBNQVhfREVCVUdfTUVTU0FHRV9M RU5HVEgsIEVORF9FU0NfU0VRKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBTdHJDcHlTIChTdHJpbmcsIFN0cmluZ0xlbiwgQnVmZmVyKTsNCj4gPiArDQo+ID4g KyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKioNCj4gPiAg ICBQcmludHMgYSBkZWJ1ZyBtZXNzYWdlIHRvIHRoZSBkZWJ1ZyBvdXRwdXQgZGV2aWNlIGlmIHRo ZSBzcGVjaWZpZWQNCj4gPiAgICBlcnJvciBsZXZlbCBpcyBlbmFibGVkIGJhc2Ugb24gTnVsbC10 ZXJtaW5hdGVkIGZvcm1hdCBzdHJpbmcgYW5kIGENCj4gPiBAQCAtMTA4LDYgKzE2OCwxMCBAQCBE ZWJ1Z1ByaW50TWFya2VyICgNCj4gPiAgICAgICAgVW5pY29kZUJTUHJpbnRBc2NpaUZvcm1hdCAo QnVmZmVyLCBzaXplb2YgKEJ1ZmZlciksIEZvcm1hdCwgQmFzZUxpc3RNYXJrZXIpOw0KPiA+ICAg ICAgfQ0KPiA+DQo+ID4gKyAgICBpZiAoRmVhdHVyZVBjZEdldCAoUGNkRGVidWdBbnNpU2VxU3Vw cG9ydCkpIHsNCj4gPiArICAgICAgVW5pY29kZURlYnVnR2V0Q29sb3JTdHJpbmcgKEJ1ZmZlciwg TUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILCBFcnJvckxldmVsKTsNCj4gPiArICAgIH0NCj4gPiAr DQo+ID4gICAgICAvLw0KPiA+ICAgICAgLy8gU2VuZCB0aGUgcHJpbnQgc3RyaW5nIHRvIHRoZSBD b25zb2xlIE91dHB1dCBkZXZpY2UNCj4gPiAgICAgIC8vDQo+ID4gLS0NCj4gPiAyLjMwLjINCg0K