From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 59B82D8095A for ; Fri, 12 Jan 2024 19:16:11 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=KUZp/QrhHotNTvecWfUGk887L4Bg/vHVswsrfSQbPgg=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1705086970; v=1; b=ebssDoXzIzC7uL1hHZxfOc3/YTTGgL11Qj6w1eGt1nyxQE/xOJKr2d61JwUi62a3tazEUueh 1fUgvuE06EPm4RSHrouuSMfsvbWO6yR8CP4CKYzbylgzkCJYvwoDwkELXKr+4JNRlHFKXbjoN1Z pZQAh4RTfxSkvuc4vXrO3ZNY= X-Received: by 127.0.0.2 with SMTP id EkRCYY7687511xBqjEYVX2DP; Fri, 12 Jan 2024 11:16:10 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by mx.groups.io with SMTP id smtpd.web10.1288.1705036823337515642 for ; Thu, 11 Jan 2024 21:20:23 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10950"; a="5811294" X-IronPort-AV: E=Sophos;i="6.04,188,1695711600"; d="scan'208";a="5811294" X-Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jan 2024 21:20:23 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10950"; a="782915035" X-IronPort-AV: E=Sophos;i="6.04,188,1695711600"; d="scan'208";a="782915035" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 11 Jan 2024 21:20:22 -0800 X-Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 11 Jan 2024 21:20:21 -0800 X-Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 11 Jan 2024 21:20:21 -0800 X-Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.41) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 11 Jan 2024 21:20:21 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WFjoUnLpejxomdIQVvGLFSNfyCyp0hEmkDxDkWlDmMxdLn3XS3ojXV/A2RrMGd5QxU8O3B7UfKBgwi7zD1Kfx8yB9LaPzjfTbwRiJEX6IAg+xy0DktF6cvDp7QvRY/x/WJDdJugGRqugGRjiWq6ZVOyAbVTCF/mQ/sr6Il0ERPEQB5zRQLMSJw3WqZTCj80RltnW+aOBA0O6ZN15LkYVLy+c5QX0Uymfk8W55iWq46qSdG5+ytGAP4krdjf2TQZ+KAnLnIAmKP6TGjM3bCUHPcHbrnvlReqbDwASaOQMRfMgpnxI+6aW0Zt39v+/rKP/P3bhUVhIrDhi6t/XYHtwcQ== 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=rQl4t0UXZ9aVVjAhbD0Oto8fnWMEuzI7hgdmbwJ5JVI=; b=FuZmqnooVBJZiv0kkXV7edwcSbG1L1JvsnXMOO28lV07pm59t4bw6P7QnQ3rotmxFFQgKPTTobWIlSpU996y9LtUPTsRZR235LPoXUwoay1AmieCxePaxaq1D+hPBwFRa/7DTRcyUhtOrBWeG9K8NNvj3WT0LZ0ptsTr87fIM8r58bJzNZK0lw4yia5wVHmhjIK0oJTUANI1PA4DGYOS+3BXdgWOKrVOtvlmpnxeyeQ82yDix/CmKjZphbyC+h3me4O0giLe0jtAOqvHS4DMk/ILV3aBwNJGK2dA0nuW6Tg09k/VH1IPPZN8JH0BnaKb7SzN/LW+bzHfN5Va5kUS8A== 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 X-Received: from SN6PR11MB2815.namprd11.prod.outlook.com (2603:10b6:805:62::13) by PH7PR11MB7606.namprd11.prod.outlook.com (2603:10b6:510:271::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Fri, 12 Jan 2024 05:20:12 +0000 X-Received: from SN6PR11MB2815.namprd11.prod.outlook.com ([fe80::7681:973c:dca7:345b]) by SN6PR11MB2815.namprd11.prod.outlook.com ([fe80::7681:973c:dca7:345b%7]) with mapi id 15.20.7181.018; Fri, 12 Jan 2024 05:20:12 +0000 From: "Zhang, Zifeng" To: "Yang, Yuting2" , "Gao, Liming" CC: "Chen, Christine" , "devel@edk2.groups.io" Subject: Re: [edk2-devel] [Patch V2] BaseTools: VfrCompiler Adds DefaultValueError Feature Thread-Topic: [Patch V2] BaseTools: VfrCompiler Adds DefaultValueError Feature Thread-Index: AQHaLNnMGjYrtcdNyUa0aNkUkL/J9rClWmeggAABsnCADe/wMIABilkggARvM4CAAGKvcIAcK4Jw Date: Fri, 12 Jan 2024 05:20:12 +0000 Message-ID: References: <20231212090119.1150-1-yuting2.yang@intel.com> <023101da36cf$a50bb8f0$ef232ad0$@byosoft.com.cn> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR11MB2815:EE_|PH7PR11MB7606:EE_ x-ms-office365-filtering-correlation-id: 70636d72-3477-4b06-8f86-08dc132e26e6 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: 5AbL8u/CDyXMo0B/u0tBeCT5xUspxmgZSw4gedDs4A/dUzy+02V8K+ej+oywmxyLQgmmMAgC4L6j9aoAAG7Bx70v+VLo5/XQ6zSqsrwIv9cqb9IHCgUGXb07AC1dE4PAqQ5Ars6qwnmGA1wdTHpz5nV1bue7OP8cW/zL/CDe6roJHI2ZGnlZ/TtfSVi06OhGUB81K5yPu8njk6LhXpBccGFLPKXZ14/oDb90tpG329YyvrdcWutWS/LnShZvPazE60AUNJuvSX6a4M7ilWbHgu7Ecl7f0NyE2WWNmKuoD1fvYxATtimsy5YtjwaukgSneTenxI5HrKPbQgAEW7/TjXxBzb86YuXomp9SI7NL1wldixGN4v7Wt6ZBZHNlRcS91a5k4wY3nH4THqCuwsLvlTtX/y1whs7ypkqioV1uZ1rAzXR+vQkUd1Lu9D0ClUGN0XV2ljb78qxO0oPwgVZsmvOvz9MaGluhipVNbs+ASjer7p/SSLRwg3TwKMl0eeYQm7Bi9rCLqLnQ68FY6zXlamA5lwn/qCEgE4zaTMouu3WqS2Mn4E4ojVMAutK/Vpv+byBVHUfG2zFbOVEVGMp5H0vkOR9F5O8kYAzfUDsxpYFX/xUi1yvSEG/3Cepln51nyhyC4Xei8UBGNDSTmPEkrA== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RjV5ZTRxSHM0TXBwTHZiV1VDY0srU25DZFlxblFrOG02aEEya3JMeVhxa1Zr?= =?utf-8?B?QllEK0xHMnI1Q2VnRkZIUkxZS0dHRkhMTHVIN3MrYjF1KzJmL3YrT2h2RG1L?= =?utf-8?B?NUNhYTg4M2R3TEd5UEhwVUhKbkZ4bWlaTFlKVjRpT2RNdVNjS21wVXUrQWJu?= =?utf-8?B?MW9HY2trTU0rVEVIdnFwVkVacjV6V1hKdWtzODBVZlcrbnBrRzk4UVRlSlor?= =?utf-8?B?MmRIdi9rYVdmSE8xR1p2dTJrMHN6NldpeTVMRDN6WEIzYzRJT2RzNlFQcGZF?= =?utf-8?B?UXRwYWc0R3hIaWdyZ2dFQzRhckhzUVlLVU9GK0lLM3JITGREaS9PeGhqUXln?= =?utf-8?B?MFRXREN5K0txMzBXaGZSR2VPMjR0aGVSOG9XNWR0L0VGYlIrTVlpOXNoclhW?= =?utf-8?B?UmVqRHZGSEkvZVpFbnQxeTJWZm1QTUczMjR4VGFFb1JxVytuOWUxR2d2bTl4?= =?utf-8?B?YVVLVzV6TGJuQlhBL1pzRDhZc1Z4OVFlM3RUMFByZGFHc1R3WjZrOEpEUW5N?= =?utf-8?B?UkFVWDNlalEreERZSWMvbDI3WVNRVmErMnBCZ2ZOb1djWXFXRUxTeGZxQkJV?= =?utf-8?B?ZG1ybWpmTFB4NkVTQmNwMUJtZEZycEc1T2lWb2xoNlV4T3lzMHdwME1hVnNz?= =?utf-8?B?cEFxUW9OcURDdFZaVjJlZUZzeDJMQWtXSXZOclBxaVd6Q1kwOEpBempCK2pV?= =?utf-8?B?M0l1S09PY013YWFGc09aQ3FUakZDWnc1cVNlaGZib3V4LzlMQXkrNUp2WkRR?= =?utf-8?B?VG5hRlBXR0VFVjdGbk9NcjJqNmhWYStKWS90TlAzQ3l6VTF1M2ZPRko1RWN5?= =?utf-8?B?NWdXTWNXeHg2dXhsSFNCeHN2dnU3MS9DQklNbGNaVURkWk1UZlZnU21qQ0xa?= =?utf-8?B?NHVueG1laEUydHdvT0tMYWFJY3VnRTI1YS9zY282cjZFanlBQmNPeFJOTXhC?= =?utf-8?B?UXg5OXNBTWcyS25pVVB5L3lYaVMwNmMxYVVoNGltZkdycTJHcHJxVTFDejdZ?= =?utf-8?B?azhFc2w4Unl0NUE4VGVYQmJ6Z3A5cXZNaE1IQVF3UDRMRFVVbUN0Nm5zd3Nn?= =?utf-8?B?YWJyMElsQ0pSUGppNkx4ZlFuNkVaS0RiM1o4alBtbklhaFNERm1mLzJGMTRF?= =?utf-8?B?bHduRVN1c0M0dEtXUkdOSjc2THU5YWNJTWZUOWtGekRPTmZOVWw5bm1aZmtL?= =?utf-8?B?ekxIYXVBeE5YenhKL0lGVUxEbUJlWGhSamdvK0VlVWZNdnNTbksyNFlLdDBn?= =?utf-8?B?ZXBJUG9VVS9GdnUvWjcySVNqR3d4MXlOU2tkSUN5WUd2bnRzbHVGOEVPTFM1?= =?utf-8?B?S015RTlpQXRhb0lldVVvb1BZc096NVlsWnh5dHVlS0Z0T2ZsMHdCTktDTkZz?= =?utf-8?B?WVlqcUtYTTRya01CZEhiVG5YWlg0WVdCeTVzR2orTmtuTVdBd1h5K2w0elFo?= =?utf-8?B?akhXWE4yZDU2YXZwbmh6Yit0aGlMZXVjcG5TVVVseFp0TkhlWjVBZ1pLcGt1?= =?utf-8?B?Q2RTM0N5UnpPZXVScHd3d05uanBuK0IydmxaOUI1WDR1MDVtQTdnRXV6Qy9I?= =?utf-8?B?YUg2aFhZL2txSTl2S3FYeFpEN3JHcHBsZi9mbDNjQnRtbCtkWk41MTU0MFhQ?= =?utf-8?B?KzBsNXNWMGNJU1NrR1dVbnVFWDNzN2JWMHVlN0RFS1B5UkVBUllCV05RbFhW?= =?utf-8?B?bGQ2cmFEVTgwbzBFTEovL3B2djhvcHFlcVNoUnZlT3kxR2NWa2ZJRDlVc2Nl?= =?utf-8?B?azVjeTJTYndIMFlsTVVhVHZSZW5RVjFpNFJ2eUNoK3VmWmc5M3hPblc3ekY0?= =?utf-8?B?NFVMdzZsUm1NNG4zWGVkL0M5MWE2UnRpOGFCM2M3T05ZR1I1Uzd6VHplZVBI?= =?utf-8?B?d1BPMVZqZkRYZjJEaU1XWnNJL01keElSejAzMmdRbnJvS0Z1MmJUV3FJQVh1?= =?utf-8?B?Qksvc3BhclhSN1gzVTZvZjM4bG1nZEQ1bUZ0N081ajUvdFg0NzZLK1B0MXh4?= =?utf-8?B?ZjVCc3l3b3NoSHFuTHlDMmVDNHdXQ2hTWW1hOVhkTXhGRlArVTFmaW1DRlRj?= =?utf-8?B?c3ZYOXo2Sm45WXVJRTYxZTZVLzlMZFlyN3lPcUl3UFFYKzRFYk0xYjI5aDdl?= =?utf-8?Q?Dx6Vo/Vac/A9L51psop56td87?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2815.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 70636d72-3477-4b06-8f86-08dc132e26e6 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2024 05:20:12.1419 (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: G0ikuQ2VPuvSlu37h2OCzsoMPkVnEz6vShnNAif3NxrJfht9xt/09LzK7/Ny+FD+Q1h0tkN5nCwnuggNvdeaRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7606 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,zifeng.zhang@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 4F4rlym9n54YWDwOqp5iS9Vfx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=ebssDoXz; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") SGkgTGltaW5nLA0KDQpDb3VsZCB5b3UgaGVscCB0byBzaGFyZSB0aGUgdXBkYXRlIGZvciB0aGlz IHBhdGNoIHNvbHV0aW9uPw0KDQpCZXN0IFJlZ2FyZHMsDQpaaWZlbmcNCg0KLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCkZyb206IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5j b20+IA0KU2VudDogTW9uZGF5LCBEZWNlbWJlciAyNSwgMjAyMyAzOjEwIFBNDQpUbzogR2FvLCBM aW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCkNjOiBaaGFuZywgWmlmZW5nIDx6aWZl bmcuemhhbmdAaW50ZWwuY29tPjsgQ2hlbiwgQ2hyaXN0aW5lIDx5dXdlaS5jaGVuQGludGVsLmNv bT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpTdWJqZWN0OiBSRTogW1BhdGNoIFYyXSBCYXNlVG9v bHM6IFZmckNvbXBpbGVyIEFkZHMgRGVmYXVsdFZhbHVlRXJyb3IgRmVhdHVyZQ0KDQpIaSBMaW1p bmcsDQoNClRoYW5rIHlvdSBmb3IgYWRkaW5nICB0aGUgYWNjb3VudCBmb3IgbWUuDQpJIGhhdmUg Y3JlYXRlZCBhIEJ1Z3ppbGxhIGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9NDYyOSBmb3IgdGhpcyBmZWF0dXJlIH4NCg0KQmVzdCBSZWdhcmRzLCwNCll1dGlu Zw0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZ2FvbGltaW5nIDxnYW9saW1p bmdAYnlvc29mdC5jb20uY24+DQpTZW50OiBNb25kYXksIERlY2VtYmVyIDI1LCAyMDIzIDk6MTQg QU0NClRvOiBZYW5nLCBZdXRpbmcyIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KU3ViamVjdDog 5Zue5aSNOiBbUGF0Y2ggVjJdIEJhc2VUb29sczogVmZyQ29tcGlsZXIgQWRkcyBEZWZhdWx0VmFs dWVFcnJvciBGZWF0dXJlDQoNCllvdXIgYWNjb3VudCB5dXRpbmcyLnlhbmdAaW50ZWwuY29tIGhh cyBiZWVuIGFkZGVkLiBQVzogdGlhbm9AMTIzDQoNCj4gLS0tLS3pgq7ku7bljp/ku7YtLS0tLQ0K PiDlj5Hku7bkuro6IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+DQo+IOWP kemAgeaXtumXtDogMjAyM+W5tDEy5pyIMjLml6UgMTM6NDENCj4g5pS25Lu25Lq6OiBHYW8sIExp bWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiDmioTpgIE6IFJlYmVjY2EgQ3JhbiA8 cmViZWNjYUBic2Rpby5jb20+OyBGZW5nLCBCb2IgQyANCj4gPGJvYi5jLmZlbmdAaW50ZWwuY29t PjsgQ2hlbiwgQXJ0aHVyIEcgPGFydGh1ci5nLmNoZW5AaW50ZWwuY29tPjsgDQo+IENoZW4sIENo cmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+OyBaaGFuZywgWmlmZW5nIA0KPiA8emlmZW5n LnpoYW5nQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IOS4u+mimDogUkU6IFtQ YXRjaCBWMl0gQmFzZVRvb2xzOiBWZnJDb21waWxlciBBZGRzIERlZmF1bHRWYWx1ZUVycm9yIA0K PiBGZWF0dXJlDQo+IA0KPiBIaSBMaW1pbmcsDQo+IA0KPiBUaGFuayB5b3UgZm9yIHJldmlld2lu ZyB+DQo+IENvdWxkIHlvdSBwbGVhc2UgaGVscCBtZSBjcmVhdGUgYSBCdWd6aWxsYSBhY2NvdW50 PyBDdXJyZW50bHksIEkgZG8gDQo+IG5vdA0KaGF2ZQ0KPiBhY2Nlc3MgdG8gdGhlIEJ1Z3ppbGxh Lg0KPiANCj4gQmVzdCBSZWdhcmRzLA0KPiBZdXRpbmcNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IFpoYW5nLCBaaWZlbmcgPHppZmVuZy56aGFuZ0BpbnRlbC5jb20+ DQo+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAyMSwgMjAyMyAyOjQ0IFBNDQo+IFRvOiBHYW8s IExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgWWFuZywgWXV0aW5nMiANCj4gPHl1 dGluZzIueWFuZ0BpbnRlbC5jb20+DQo+IENjOiBSZWJlY2NhIENyYW4gPHJlYmVjY2FAYnNkaW8u Y29tPjsgRmVuZywgQm9iIEMgDQo+IDxib2IuYy5mZW5nQGludGVsLmNvbT47IENoZW4sIEFydGh1 ciBHIDxhcnRodXIuZy5jaGVuQGludGVsLmNvbT47IA0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg Q2hlbiwgQ2hyaXN0aW5lIDx5dXdlaS5jaGVuQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQ YXRjaCBWMl0gQmFzZVRvb2xzOiBWZnJDb21waWxlciBBZGRzIERlZmF1bHRWYWx1ZUVycm9yIA0K PiBGZWF0dXJlDQo+IA0KPiBIaSBMaW1pbmcsDQo+IA0KPiBUaGFua3MgZm9yIHJldmlld2luZy4N Cj4gRm9yIGJhY2tncm91bmQgb2YgdGhpcyBjaGFuZ2UsIHdlIHdpbGwgcmVtb3ZlIGRlZmF1bHQg ZmxhZ3MgaW4gVkZSL0hGUiANCj4gaW4gbmV3IHBsYXRmb3JtLiBTbyB3ZSBuZWVkIGhlbHAgZnJv bSBWRlIgY29tcGxpZXIgdG8gbWFrZSBhIGRlZmF1bHQgDQo+IGZsYWcgY2hlY2sgdG8gYXZvaWQg bWFudWFsbHkgYWRkaW5nLg0KPiBAWWFuZywgWXV0aW5nMiwgY291bGQgeW91IGhlbHAgdG8gY3Jl YXRlIGEgQlogZm9yIHRoaXMgZmVhdHVyZSBhbmQgDQo+IHNoYXJlDQppbg0KPiBtYWlsIHRocmVh ZD8NCj4gVGhlbiBsZXQgbWUgbWFrZSBhIGNsYXJpZmljYXRpb24gZm9yIHlvdXIgcXVlc3Rpb25z Lg0KPiANCj4gIzE6IFRoZSBwdXJwb3NlIG9mIC0tY2F0Y2hfZGVmYXVsdA0KPiBXZSBzZW5kIC0t Y2F0Y2hfZGVmYXVsdCBmbGFnIGluIGJ1aWxkIG9wdGlvbiB0byBpbmRpY2F0ZSB3aGljaCANCj4g cGxhdGZvcm0NCnNob3VsZA0KPiBjaGVjayBkZWZhdWx0IGZsYWcgaW4gVkZSL0hGUi4NCj4gQWN0 dWFsbHkgbWF5YmUgc29tZSBwbGF0Zm9ybXMgdXNlZCBzYW1lIEVESzIgZG93bnN0cmVhbSBicmFu Y2gsIHNvIHdlIA0KPiBvbmx5IHNlbmQgLS1jYXRjaF9kZWZhdWx0IGZsYWcgZm9yIHRoZSBwbGF0 Zm9ybXMgd2hpY2ggbmVlZCB0aGlzIGNoZWNrLg0KPiANCj4gIzI6IFRoZSBwdXJwb3NlIG9mIC0t ZXhjZXB0X2xpc3QNCj4gVkZSIGNvbXBpbGVyIHdpbGwgcmVjZWl2ZSBWRlIvSEZSIGNvbmZpZ3Vy YXRpb25zIGZyb20gYWxsIGZvbGRlcnMNCmluY2x1ZGluZw0KPiBJbnRlbCBhbmQgRURLMi4gQnV0 IGluIG91ciBleHBlY3RhdGlvbiBWRlIgY29tcGlsZXIgb25seSBkbyB0aGlzIGNoZWNrIA0KPiBp biBJbnRlbC4NCj4gU28gV2UgdXNlIC0tZXhjZXB0X2xpc3QgdG8gZGVsaXZlciBwYWNrYWdlIGxp c3QgaW4gRURLMiB0byBhdm9pZCB0aGlzDQpjaGVjay4NCj4gDQo+IEJlc3QgUmVnYXJkcywNCj4g WmlmZW5nDQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZYW5nLCBZ dXRpbmcyIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBEZWNlbWJl ciAxMiwgMjAyMyA1OjEyIFBNDQo+IFRvOiBaaGFuZywgWmlmZW5nIDx6aWZlbmcuemhhbmdAaW50 ZWwuY29tPjsgQ2hlbiwgQXJ0aHVyIEcgDQo+IDxhcnRodXIuZy5jaGVuQGludGVsLmNvbT47IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBSZWJlY2NhIENyYW4gPHJlYmVjY2FAYnNkaW8uY29t PjsgR2FvLCBMaW1pbmcgDQo+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBGZW5nLCBCb2Ig QyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUGF0Y2ggVjJdIEJhc2VU b29sczogVmZyQ29tcGlsZXIgQWRkcyBEZWZhdWx0VmFsdWVFcnJvciANCj4gRmVhdHVyZQ0KPiAN Cj4gK0NjIFpoYW5nLCBaaWZlbmcsIENoZW4sIEFydGh1ciBHDQo+IA0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNoZW5AaW50ZWwu Y29tPg0KPiBTZW50OiBUdWVzZGF5LCBEZWNlbWJlciAxMiwgMjAyMyA1OjA0IFBNDQo+IFRvOiBZ YW5nLCBZdXRpbmcyIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMu aW8NCj4gQ2M6IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5jb20+OyBHYW8sIExpbWluZyAN Cj4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGlu dGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQYXRjaCBWMl0gQmFzZVRvb2xzOiBWZnJDb21waWxl ciBBZGRzIERlZmF1bHRWYWx1ZUVycm9yIA0KPiBGZWF0dXJlDQo+IA0KPiArQ2MgWWFuZywgWXV0 aW5nMg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFlhbmcs IFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+DQo+ID4gU2VudDogVHVlc2RheSwgRGVj ZW1iZXIgMTIsIDIwMjMgNTowMSBQTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ IENjOiBSZWJlY2NhIENyYW4gPHJlYmVjY2FAYnNkaW8uY29tPjsgR2FvLCBMaW1pbmcgDQo+ID4g PGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVs LmNvbT47IA0KPiA+IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+ID4g U3ViamVjdDogW1BhdGNoIFYyXSBCYXNlVG9vbHM6IFZmckNvbXBpbGVyIEFkZHMgRGVmYXVsdFZh bHVlRXJyb3IgDQo+ID4gRmVhdHVyZQ0KPiA+DQo+ID4gQWRkIC0tY2F0Y2hfZGVmYXVsdCBvcHRp b24NCj4gPiBSYWlzZSBhIERlZmF1bHRWYWx1ZUVycm9yIHdoZW4gZW5jb3VudGVyaW5nIFZGUiBk ZWZhdWx0IGRlZmluaXRpb25zIA0KPiA+IHRvIGhlbHAgcmVtb3ZlIGRlZmF1bHQgdmFyaWFibGVz Lg0KPiA+IEFkZCAtLWV4Y2VwdF9saXN0IG9wdGlvbg0KPiA+IEV4Y2x1ZGUgcGFja2FnZXMgdGhh dCBkb24ndCByZXF1aXJlIGVuYWJsaW5nIHRoZSBjYXRjaF9kZWZhdWx0IGZ1bmN0aW9uLg0KPiA+ DQo+ID4gQ2M6IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5jb20+DQo+ID4gQ2M6IExpbWlu ZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gPiBDYzogQm9iIEZlbmcgPGJvYi5j LmZlbmdAaW50ZWwuY29tPg0KPiA+IENjOiBDaHJpc3RpbmUgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRl bC5jb20+DQo+ID4gQ2M6IFl1dGluZyBZYW5nIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KPiA+ DQo+ID4gU2lnbmVkLW9mZi1ieTogWXV0aW5nIFlhbmcgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+ DQo+ID4gLS0tDQo+ID4gIEJhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckNvbXBpbGVy LmNwcCB8ICA0MCArKy0NCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyQ29t cGlsZXIuaCAgIHwgICAzICsNCj4gPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZy RXJyb3IuY3BwICAgIHwgICAzICstDQo+ID4gIEJhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl L1ZmckVycm9yLmggICAgICB8ICAgMyArLQ0KPiA+ICBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29t cGlsZS9WZnJGb3JtUGtnLmggICAgfCAgIDEgKw0KPiA+ICBCYXNlVG9vbHMvU291cmNlL0MvVmZy Q29tcGlsZS9WZnJTeW50YXguZyAgICAgfCAyMzgNCj4gKysrKysrKysrKy0tLS0tLS0tDQo+ID4g IDYgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMoKyksIDEwNCBkZWxldGlvbnMoLSkNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJDb21w aWxlci5jcHANCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckNvbXBpbGVy LmNwcA0KPiA+IGluZGV4IDVmNGQyNjJkODUuLmU5N2NlYmZmNjUgMTAwNjQ0DQo+ID4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyQ29tcGlsZXIuY3BwDQo+ID4gKysrIGIv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyQ29tcGlsZXIuY3BwDQo+ID4gQEAgLTc4 LDYgKzc4LDkgQEAgQ1ZmckNvbXBpbGVyOjpPcHRpb25Jbml0aWFsaXphdGlvbiAoDQo+ID4gICAg bU9wdGlvbnMuV2FybmluZ0FzRXJyb3IgICAgICAgICAgICAgICAgPSBGQUxTRTsNCj4gbU9wdGlv bnMuQXV0b0RlZmF1bHQNCj4gPiA9IEZBTFNFOyAgIG1PcHRpb25zLkNoZWNrRGVmYXVsdCAgICAg ICAgICAgICAgICAgID0gRkFMU0U7Kw0KPiA+IG1PcHRpb25zLklzQ2F0Y2hEZWZhdWx0RW5hYmxl ICAgICAgICAgID0gRkFMU0U7Kw0KPiBtT3B0aW9ucy5FeGNlcHRpb25MaXN0DQo+ID4gPSBOVUxM OysgIG1PcHRpb25zLkV4Y2VwdGlvbkxpc3RTaXplICAgICAgICAgICAgID0gMDsgICBtZW1zZXQN Cj4gPiAoJm1PcHRpb25zLk92ZXJyaWRlQ2xhc3NHdWlkLCAwLCBzaXplb2YgKEVGSV9HVUlEKSk7 ICAgIGlmIChBcmdjID09IDEpDQo+IHtAQCAtDQo+ID4gOTUsNiArOTgsMjMgQEAgQ1ZmckNvbXBp bGVyOjpPcHRpb25Jbml0aWFsaXphdGlvbiAoDQo+ID4gICAgICAgIFZlcnNpb24gKCk7ICAgICAg IFNFVF9SVU5fU1RBVFVTIChTVEFUVVNfREVBRCk7DQo+IHJldHVybjsrICAgIH0gZWxzZSBpZg0K PiA+IChzdHJpY21wKEFyZ3ZbSW5kZXhdLCAiLS1jYXRjaF9kZWZhdWx0IikgPT0gMCl7Kw0KPiA+ IG1PcHRpb25zLklzQ2F0Y2hEZWZhdWx0RW5hYmxlID0gVFJVRTsrICAgIH0gZWxzZSBpZg0KKHN0 cmljbXAoQXJndltJbmRleF0sDQo+ICItLQ0KPiA+IGV4Y2VwdF9saXN0IikgPT0gMCl7KyAgICAg IElOVDMyIFN0YXJ0ID0gKytJbmRleDsrICAgICAgaWYgKChTdGFydCA+PQ0KQXJnYykNCj4gfHwN Cj4gPiAoQXJndltTdGFydF1bMF0gPT0gJy0nKSkgeysgICAgICAgIERlYnVnRXJyb3IgKE5VTEws IDAsIDEwMDEsICJNaXNzaW5nDQo+IG9wdGlvbiIsICItDQo+ID4gZXhjZXB0aW9uX2xpc3QgbWlz c2luZyBleGNlcHQgbGlzdCIpOysgICAgICAgIGdvdG8gRmFpbDsrICAgICAgfSsNCj4gd2hpbGUN Cj4gPiAoKEFyZ3ZbSW5kZXhdWzBdICE9ICctJykgJiYgKEluZGV4IDwgQXJnYyAtIDEpKSB7KyAg ICAgICAgSW5kZXgrKzsrDQp9Kw0KPiBJTlQzMg0KPiA+IEVuZCA9IEluZGV4LS07KyAgICAgIG1P cHRpb25zLkV4Y2VwdGlvbkxpc3RTaXplID0gRW5kIC0gU3RhcnQ7KyAgICAgIGZvcg0KPiAoSU5U MzIgaSA9DQo+ID4gU3RhcnQ7IGkgPCBFbmQ7IGkrKykgeysgICAgICAgIG1PcHRpb25zLkV4Y2Vw dGlvbkxpc3QgPSAoQ0hBUjgqKikNCj4gPiByZWFsbG9jKG1PcHRpb25zLkV4Y2VwdGlvbkxpc3Qs IChpIC0gU3RhcnQgKyAxKSAqIHNpemVvZihDSEFSOCopKTsrDQo+ID4gbU9wdGlvbnMuRXhjZXB0 aW9uTGlzdFtpLVN0YXJ0XSA9IEFyZ3ZbaV07KyAgICAgIH0gICAgIH0gZWxzZSBpZg0KPiAoc3Ry aWNtcChBcmd2W0luZGV4XSwNCj4gPiAiLWwiKSA9PSAwKSB7ICAgICAgIG1PcHRpb25zLkNyZWF0 ZVJlY29yZExpc3RGaWxlID0gVFJVRTsNCj4gPiBnQ0lmclJlY29yZEluZm9EQi5UdXJuT24gKCk7 QEAgLTE3OSw3ICsxOTksMTEgQEAgDQo+ID4gQ1ZmckNvbXBpbGVyOjpPcHRpb25Jbml0aWFsaXph dGlvbiAoDQo+ID4gICAgICAgIGdvdG8gRmFpbDsgICAgIH0gICAgIHN0cmNweSAobU9wdGlvbnMu VmZyRmlsZU5hbWUsDQo+IEFyZ3ZbSW5kZXhdKTstKyAgICBmb3IgKGludCBpID0NCj4gPiAwOyBp IDwgbU9wdGlvbnMuRXhjZXB0aW9uTGlzdFNpemU7IGkrKykgeysgICAgICBpZg0KPiAoc3Ryc3Ry KG1PcHRpb25zLlZmckZpbGVOYW1lLA0KPiA+IG1PcHRpb25zLkV4Y2VwdGlvbkxpc3RbaV0pICE9 IE5VTEwpIHsrDQo+IG1PcHRpb25zLklzQ2F0Y2hEZWZhdWx0RW5hYmxlID0NCj4gPiBGQUxTRTsr ICAgICAgfSsgICAgfSAgICAgaWYgKG1PcHRpb25zLk91dHB1dERpcmVjdG9yeSA9PSBOVUxMKQ0K PiA+IHsgICAgICAgbU9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5ID0gKENIQVI4ICopIG1hbGxvYyAo MSk7ICAgICAgIGlmDQo+ID4gKG1PcHRpb25zLk91dHB1dERpcmVjdG9yeSA9PSBOVUxMKSB7QEAg LTIxNyw2ICsyNDEsMTEgQEAgRmFpbDoNCj4gPiAgICAgIGZyZWUgKG1PcHRpb25zLlZmckZpbGVO YW1lKTsgICAgIG1PcHRpb25zLlZmckZpbGVOYW1lDQo+ID0NCj4gPiBOVUxMOyAgIH0rICBpZiAo bU9wdGlvbnMuRXhjZXB0aW9uTGlzdCAhPSBOVUxMKSB7Kw0KPiA+IGZyZWUobU9wdGlvbnMuRXhj ZXB0aW9uTGlzdCk7KyAgICBtT3B0aW9ucy5FeGNlcHRpb25MaXN0DQo+ID0gTlVMTDsrKyAgfQ0K PiA+IGlmIChtT3B0aW9ucy5WZnJCYXNlRmlsZU5hbWUgIT0gTlVMTCkgeyAgICAgZnJlZQ0KPiAo bU9wdGlvbnMuVmZyQmFzZUZpbGVOYW1lKTsNCj4gPiBtT3B0aW9ucy5WZnJCYXNlRmlsZU5hbWUg ICAgICAgICAgICAgPSBOVUxMO0BAIC00OTYsNiArNTI1LDExDQo+IEBADQo+ID4gQ1ZmckNvbXBp bGVyOjp+Q1ZmckNvbXBpbGVyICgNCj4gPiAgICAgIG1PcHRpb25zLlZmckJhc2VGaWxlTmFtZSA9 IE5VTEw7ICAgfSArICBpZg0KPiAobU9wdGlvbnMuRXhjZXB0aW9uTGlzdCAhPQ0KPiA+IE5VTEwp IHsrICAgIGZyZWUgKG1PcHRpb25zLkV4Y2VwdGlvbkxpc3QpOysgICAgbU9wdGlvbnMuRXhjZXB0 aW9uTGlzdCA9DQo+ID4gTlVMTDsrICB9KyAgIGlmIChtT3B0aW9ucy5PdXRwdXREaXJlY3Rvcnkg IT0gTlVMTCkgeyAgICAgZnJlZQ0KPiA+IChtT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkpOyAgICAg bU9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5ID0gTlVMTDtAQA0KPiAtNjc5LDcNCj4gPiArNzEzLDcg QEAgQ1ZmckNvbXBpbGVyOjpDb21waWxlICgNCj4gPiAgICAgIERlYnVnRXJyb3IgKE5VTEwsIDAs IDAwMDEsICJFcnJvciBvcGVuaW5nIHRoZSBpbnB1dCBmaWxlIiwgIiVzIiwNCj4gPiBJbkZpbGVO YW1lKTsgICAgIGdvdG8gRmFpbDsgICB9LSsgIElucHV0SW5mby5Jc0NhdGNoRGVmYXVsdEVuYWJs ZSA9DQo+ID4gbU9wdGlvbnMuSXNDYXRjaERlZmF1bHRFbmFibGU7ICAgaWYgKG1PcHRpb25zLkhh c092ZXJyaWRlQ2xhc3NHdWlkKQ0KPiA+IHsgICAgIElucHV0SW5mby5PdmVycmlkZUNsYXNzR3Vp ZCA9ICZtT3B0aW9ucy5PdmVycmlkZUNsYXNzR3VpZDsgICB9DQo+IGVsc2UNCj4gPiB7QEAgLTkz Nyw1ICs5NzEsMyBAQCBtYWluICgNCj4gPiAgICAgcmV0dXJuIEdldFV0aWxpdHlTdGF0dXMgKCk7 IH0tLWRpZmYgLS1naXQgDQo+ID4gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJD b21waWxlci5oDQo+ID4gYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJDb21waWxl ci5oDQo+ID4gaW5kZXggYjZlMjA3ZDJjZS4uMzllMGE4OWEyOSAxMDA2NDQNCj4gPiAtLS0gYS9C YXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJDb21waWxlci5oDQo+ID4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyQ29tcGlsZXIuaA0KPiA+IEBAIC01Miw2ICs1 Miw5IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgICBCT09MRUFOIFdhcm5pbmdBc0Vycm9yOyAg IEJPT0xFQU4gQXV0b0RlZmF1bHQ7ICAgQk9PTEVBTg0KPiA+IENoZWNrRGVmYXVsdDsrICBCT09M RUFOIElzQ2F0Y2hEZWZhdWx0RW5hYmxlOysgIENIQVI4KioNCj4gRXhjZXB0aW9uTGlzdDsrDQo+ ID4gSU5UMTYgICAgRXhjZXB0aW9uTGlzdFNpemU7IH0gT1BUSU9OUzsgIHR5cGVkZWYgZW51bSB7 ZGlmZiAtLWdpdA0KPiA+IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJyb3Iu Y3BwDQo+ID4gYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJFcnJvci5jcHANCj4g PiBpbmRleCA2NWJiOGUzNGZkLi44YTcwNmY5MjliIDEwMDY0NA0KPiA+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckVycm9yLmNwcA0KPiA+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvQy9WZnJDb21waWxlL1ZmckVycm9yLmNwcA0KPiA+IEBAIC00OSw3ICs0OSw4IEBAIHN0 YXRpYyBTVkZSX1dBUk5JTkdfSEFORExFDQo+IFZGUl9XQVJOSU5HX0hBTkRMRV9UQUJMRQ0KPiA+ IFtdID0gew0KPiA+ICAgIHsgVkZSX1dBUk5JTkdfREVGQVVMVF9WQUxVRV9SRURFRklORUQsICI6 IGRlZmF1bHQgdmFsdWUNCj4gcmUtZGVmaW5lZA0KPiA+IHdpdGggZGlmZmVyZW50IHZhbHVlIn0s ICAgeyBWRlJfV0FSTklOR19BQ1RJT05fV0lUSF9URVhUX1RXTywgIjoNCj4gQWN0aW9uDQo+ID4g b3Bjb2RlIHNob3VsZCBub3QgaGF2ZSBUZXh0VHdvIHBhcnQifSwgeyANCj4gPiBWRlJfV0FSTklO R19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwgIjogTm90IHJlY29tbWVuZCB0bw0KPiB1c2UN Cj4gPiBvYnNvbGV0ZWQgZnJhbWV3b3JrIG9wY29kZSJ9LC0gIHsgVkZSX1dBUk5JTkdfQ09ERVVO REVGSU5FRCwgIjoNCj4gPiB1bmRlZmluZWQgV2FybmluZyBDb2RlIiB9KyAgeyBWRlJfV0FSTklO R19DT0RFVU5ERUZJTkVELCAiOg0KPiA+IHVuZGVmaW5lZCBXYXJuaW5nIENvZGUiIH0sKyAgeyBW RlJfV0FSTklOR19VTlNVUFBPUlRFRCwgIjogcGxzDQo+IHJlbW92ZQ0KPiA+IHRoZSBkZWZhdWx0 IHZhbHVlcyBpZiBuZWNlc3NhcnkiIH0gfTsgDQo+ID4gQ1ZmckVycm9ySGFuZGxlOjpDVmZyRXJy b3JIYW5kbGUgKGRpZmYgLS0gZ2l0IA0KPiA+IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBp bGUvVmZyRXJyb3IuaA0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJy b3IuaA0KPiA+IGluZGV4IDdkMTZiZDVmNzQuLjFiNGJjMTczZDIgMTAwNjQ0DQo+ID4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJyb3IuaA0KPiA+ICsrKyBiL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckVycm9yLmgNCj4gPiBAQCAtNDcsNyArNDcsOCBA QCB0eXBlZGVmIGVudW0gew0KPiA+ICAgIFZGUl9XQVJOSU5HX0RFRkFVTFRfVkFMVUVfUkVERUZJ TkVEID0gMCwgDQo+ID4gVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhfVEVYVF9UV08sDQo+ID4gVkZS X1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsLQ0KPiA+IFZGUl9XQVJOSU5HX0NP REVVTkRFRklORUQrICBWRlJfV0FSTklOR19DT0RFVU5ERUZJTkVELCsgDQo+ID4gVkZSX1dBUk5J TkdfVU5TVVBQT1JURUQgfSBFRklfVkZSX1dBUk5JTkdfQ09ERTsgIHR5cGVkZWYNCj4gc3RydWN0 DQo+ID4gX1NWRlJfRVJST1JfSEFORExFIHtkaWZmIC0tZ2l0DQo+ID4gYS9CYXNlVG9vbHMvU291 cmNlL0MvVmZyQ29tcGlsZS9WZnJGb3JtUGtnLmgNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvQy9W ZnJDb21waWxlL1ZmckZvcm1Qa2cuaA0KPiA+IGluZGV4IDllZjZmMDc3ODcuLmQ4ZmFkYTNiY2Ig MTAwNjQ0DQo+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRm9ybVBr Zy5oDQo+ID4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRm9ybVBrZy5o DQo+ID4gQEAgLTk2LDYgKzk2LDcgQEAgc3RydWN0IFNCdWZmZXJOb2RlIHsNCj4gPiAgIHR5cGVk ZWYgc3RydWN0IHsgICBFRklfR1VJRCAqT3ZlcnJpZGVDbGFzc0d1aWQ7KyAgQk9PTEVBTg0KPiA+ IElzQ2F0Y2hEZWZhdWx0RW5hYmxlOyB9IElOUFVUX0lORk9fVE9fU1lOVEFYOyAgY2xhc3MgQ0Zv cm1Qa2cge2RpZmYgDQo+ID4gLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJTeW50YXguZw0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyU3ludGF4 LmcNCj4gPiBpbmRleCA1NWZkMDY3ZjhhLi41ZGFmMWM0MjNjIDEwMDY0NA0KPiA+IC0tLSBhL0Jh c2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmclN5bnRheC5nDQo+ID4gKysrIGIvQmFzZVRv b2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyU3ludGF4LmcNCj4gPiBAQCAtNTAsNiArNTAsNyBA QCBWZnJQYXJzZXJTdGFydCAoDQo+ID4gIHsgICBQYXJzZXJCbGFja0JveDxDVmZyRExHTGV4ZXIs IEVmaVZmclBhcnNlciwgQU5UTFJUb2tlbj4NCj4gVmZyUGFyc2VyKEZpbGUpOw0KPiA+IFZmclBh cnNlci5wYXJzZXIoKS0+U2V0T3ZlcnJpZGVDbGFzc0d1aWQNCj4gPiAoSW5wdXRJbmZvLT5PdmVy cmlkZUNsYXNzR3VpZCk7Kw0KPiA+IFZmclBhcnNlci5wYXJzZXIoKS0+U2V0SXNDYXRjaERlZmF1 bHRFbmFibGUoSW5wdXRJbmZvLQ0KPiA+ID5Jc0NhdGNoRGVmYXVsdEVuYWJsZSk7ICAgcmV0dXJu DQo+IFZmclBhcnNlci5wYXJzZXIoKS0+dmZyUHJvZ3JhbSgpOyB9ID4+QEAgLQ0KPiA+IDM4Niw4 ICszODcsOCBAQCBkYXRhU3RydWN0RmllbGQzMiBbQk9PTEVBTiAgRmllbGRJblVuaW9uXToNCj4g PiAgICA7ICBkYXRhU3RydWN0RmllbGQxNiBbQk9PTEVBTiAgRmllbGRJblVuaW9uXTotICA8PCAt ICAgIFVJTlQzMg0KPiBBcnJheU51bSA9IDA7DQo+ID4gKyAgPDwrICAgIFVJTlQzMiBBcnJheU51 bSA9IDA7ICAgPj4gICAoIlVJTlQxNiIgfCAiQ0hBUjE2IikNCj4gPiBOOlN0cmluZ0lkZW50aWZp ZXJAQCAtNzM3LDcgKzczOCw3IEBAIHZmckZvcm1TZXRMaXN0IDoNCj4gPiAgICA7ICB2ZnJTdGF0 ZW1lbnRFeHRlbnNpb246LSAgPDwgKyAgPDwgICAgICBFRklfR1VJRCBHdWlkOw0KPiBDSWZyR3Vp ZCAqR3VpZE9iag0KPiA+ID0gTlVMTDsgICAgICBDSEFSOCAgICAqVHlwZU5hbWUgPSBOVUxMO0BA IC03NTEsNyArNzUyLDcgQEANCj4gPiB2ZnJTdGF0ZW1lbnRFeHRlbnNpb246DQo+ID4gICAgPj4g ICBMOkd1aWRPcCAgIFV1aWQgIj0iIGd1aWREZWZpbml0aW9uW0d1aWRdLSAgeyIsIiBEYXRhVHlw ZSAiPSIgKw0KPiB7IiwiDQo+ID4gRGF0YVR5cGUgIj0iICAgICAoICAgICAgICAgVTY0OiJVSU5U NjQiIHtPcGVuQnJhY2tldCBBTjE6TnVtYmVyDQo+IENsb3NlQnJhY2tldA0KPiA+IDw8QXJyYXlO dW0gPSBfU1RPVTMyKEFOMS0+Z2V0VGV4dCgpLCBBTjEtPmdldExpbmUoKSk7Pj59IDw8IFR5cGVO YW1lDQo+ID0NCj4gPiBVNjQtPmdldFRleHQoKTsgTGluZU51bSA9IFU2NC0+Z2V0TGluZSgpOyA+ PkBAIC03NzAsNw0KPiA+ICs3NzEsNyBAQCB2ZnJTdGF0ZW1lbnRFeHRlbnNpb246DQo+ID4gICAg ICAgIHwgVDoiRUZJX0hJSV9USU1FIiB7T3BlbkJyYWNrZXQgQU44Ok51bWJlciBDbG9zZUJyYWNr ZXQgDQo+ID4gPDxBcnJheU51bSA9IF9TVE9VMzIoQU44LT5nZXRUZXh0KCksIEFOOC0+Z2V0TGlu ZSgpKTs+Pn0gPDwgVHlwZU5hbWUgDQo+ID4gPSBULT5nZXRUZXh0KCk7IExpbmVOdW0gPSBULT5n ZXRMaW5lKCk7IElzU3RydWN0ID0gVFJVRTs+Pg0KPiB8DQo+ID4gUjoiRUZJX0hJSV9SRUYiIHtP cGVuQnJhY2tldCBBTjk6TnVtYmVyIENsb3NlQnJhY2tldCA8PEFycmF5TnVtID0gDQo+ID4gX1NU T1UzMihBTjktPmdldFRleHQoKSwgQU45LT5nZXRMaW5lKCkpOz4+fS0gPDwgVHlwZU5hbWUgPQ0K PiA+IFItPmdldFRleHQoKTsgTGluZU51bSA9IFItPmdldExpbmUoKTsgSXNTdHJ1Y3QgPSBUUlVF Oz4+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDw8DQo+IFR5cGVOYW1lID0NCj4gPiArIFItPmdldFRleHQoKTsgTGluZU51bSA9IFIt DQo+ID4gPmdldExpbmUoKTsgSXNTdHJ1Y3QgPSBUUlVFOz4+ICAgICAgIHwgVE46U3RyaW5nSWRl bnRpZmllciB7T3BlbkJyYWNrZXQNCj4gPiBBTjEwOk51bWJlciBDbG9zZUJyYWNrZXQgPDxBcnJh eU51bSA9IF9TVE9VMzIoQU4xMC0+Z2V0VGV4dCgpLA0KPiBBTjEwLQ0KPiA+ID5nZXRMaW5lKCkp Oz4+fQ0KPiA8PCBUeXBlTmFtZSA9IFROLT5nZXRUZXh0KCk7DQo+ID4gTGluZU51bSA9IFROLT5n ZXRMaW5lKCk7IElzU3RydWN0ID0gVFJVRTs+PiAgICAgKUBAIC04NzUsMTkgKzg3NiwxOQ0KPiBA QA0KPiA+IHZmckV4dGVuc2lvbkRhdGFbVUlOVDggKkRhdGFCdWZmLCBVSU5UMzIgU2l6ZSwgQ0hB UjggKlR5cGVOYW1lLA0KPiBVSU5UMzINCj4gPiBUeXBlU2l6ZSwNCj4gPiAgICAgICAgICAgICAg ICAgIG1lbWNweSAoQnl0ZU9mZnNldCwgJkRhdGFfVTY0LA0KPiBUeXBlU2l6ZSk7ICAgICAgICAg ICAgICAgfWVsc2UgaWYgKHN0cmNtcA0KPiA+ICgiVUlOVDMyIiwgVHlwZU5hbWUpID09IDApIHsg ICAgICAgICAgICAgICAgIERhdGFfVTMyID0NCj4gX1NUT1UzMihSRC0+Z2V0VGV4dCgpLA0KPiA+ IFJELT5nZXRMaW5lKCkpOy0gICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0 YV9VMzIsDQo+IFR5cGVTaXplKTsNCj4gPiArICAgICAgICAgICAgICAgIG1lbWNweSAoQnl0ZU9m ZnNldCwgJkRhdGFfVTMyLA0KPiBUeXBlU2l6ZSk7ICAgICAgICAgICAgICAgfWVsc2UgaWYgKHN0 cmNtcA0KPiA+ICgiVUlOVDE2IiwgVHlwZU5hbWUpID09IDApIHsgICAgICAgICAgICAgICAgIERh dGFfVTE2ID0NCj4gX1NUT1UxNihSRC0+Z2V0VGV4dCgpLA0KPiA+IFJELT5nZXRMaW5lKCkpOy0g ICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0YV9VMTYsDQo+IFR5cGVTaXpl KTsNCj4gPiArICAgICAgICAgICAgICAgIG1lbWNweSAoQnl0ZU9mZnNldCwgJkRhdGFfVTE2LA0K PiBUeXBlU2l6ZSk7ICAgICAgICAgICAgICAgfWVsc2UgaWYgKHN0cmNtcA0KPiA+ICgiVUlOVDgi LCBUeXBlTmFtZSkgPT0gMCkgeyAgICAgICAgICAgICAgICAgRGF0YV9VOCA9DQo+IF9TVE9VOChS RC0+Z2V0VGV4dCgpLCBSRC0NCj4gPiA+Z2V0TGluZSgpKTstICAgICAgICAgICAgICAgIG1lbWNw eSAoQnl0ZU9mZnNldCwgJkRhdGFfVTgsIFR5cGVTaXplKTsNCj4gPiArICAgICAgICAgICAgICAg IG1lbWNweSAoQnl0ZU9mZnNldCwgJkRhdGFfVTgsDQo+IFR5cGVTaXplKTsgICAgICAgICAgICAg ICB9ZWxzZSBpZiAoc3RyY21wDQo+ID4gKCJCT09MRUFOIiwgVHlwZU5hbWUpPT0gMCkgeyAgICAg ICAgICAgICAgICAgRGF0YV9CTCA9DQo+IF9TVE9VOChSRC0+Z2V0VGV4dCgpLA0KPiA+IFJELT5n ZXRMaW5lKCkpOy0gICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAmRGF0YV9CTCwN Cj4gVHlwZVNpemUpOw0KPiA+ICsgICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LCAm RGF0YV9CTCwNCj4gVHlwZVNpemUpOyAgICAgICAgICAgICAgIH1lbHNlIGlmIChzdHJjbXANCj4g PiAoIkVGSV9TVFJJTkdfSUQiLCBUeXBlTmFtZSkgPT0gMCkgeyAgICAgICAgICAgICAgICAgRGF0 YV9TSUQgPQ0KPiBfU1RPU0lEKFJELQ0KPiA+ID5nZXRUZXh0KCksIFJELT5nZXRMaW5lKCkpOy0g ICAgICAgICAgICAgICAgbWVtY3B5IChCeXRlT2Zmc2V0LA0KPiAmRGF0YV9TSUQsDQo+ID4gVHlw ZVNpemUpOw0KPiArICAgICAgICAgICAgICAgIG1lbWNweSAoQnl0ZU9mZnNldCwNCj4gPiAmRGF0 YV9TSUQsIFR5cGVTaXplKTsgICAgICAgICAgICAgICB9ICAgICAgICAgICAgIH0gZWxzZQ0KPiA+ IHsgICAgICAgICAgICAgICBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YUZpZWxkSW5mbyhURk5h bWUsDQo+IEZpZWxkT2Zmc2V0LA0KPiA+IEZpZWxkVHlwZSwgRmllbGRTaXplLCBCaXRGaWVsZCk7 QEAgLTk3NSw3ICs5NzYsMTUgQEANCj4gPiB2ZnJFeHRlbnNpb25EYXRhW1VJTlQ4ICpEYXRhQnVm ZiwgVUlOVDMyIFNpemUsIENIQVI4ICpUeXBlTmFtZSwNCj4gVUlOVDMyDQo+ID4gVHlwZVNpemUs DQo+ID4gICB2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUgOiAgIDw8IFVJTlQxNiAgRGVmYXVsdElk ID0NCj4gPiBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQ7ID4+LSAgRDpEZWZhdWx0U3Rv cmUNCj4gTjpTdHJpbmdJZGVudGlmaWVyDQo+ID4gIiwiKyAgRDpEZWZhdWx0U3RvcmUgTjpTdHJp bmdJZGVudGlmaWVyICIsIiAgICAgICAgICAgICA8PCsNCj4gPiBpZiAobUlzQ2F0Y2hEZWZhdWx0 RW5hYmxlKSB7Kw0KPiA+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyAoKw0KPiA+IFZG Ul9XQVJOSU5HX1VOU1VQUE9SVEVELCsNCj4gRC0NCj4gPiA+Z2V0TGluZSgpLCsNCj4gRC0NCj4g PiA+Z2V0VGV4dCgpKw0KPiAgICAgICAgKTsrDQo+ICB9Kw0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pg0KPiBQcm9tcHQgIj0iICJTVFJJ TkdfVE9LRU4iICJcKCIgUzpOdW1iZXINCj4gPiAiXCkiICAgeyAgICAgIiwiIEF0dHJpYnV0ZSAi PSIgQTpOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gRGVmYXVsdElkID0gX1NUT1Ux NihBLQ0KPiA+ID5nZXRUZXh0KCksIEEtPmdldExpbmUoKSk7ID4+QEAgLTEwNzQsNyArMTA4Myw3 IEBADQo+ID4gdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkgOg0KPiA+ICAgICAgfCBVNjQ6IlVJTlQ2 NCIgIiwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gVHlwZU5hbWUgPSBVNjQt PmdldFRleHQoKTsNCj4gPiBMaW5lTnVtID0gVTY0LT5nZXRMaW5lKCk7ID4+ICAgICB8IEQ6IkVG SV9ISUlfREFURSIgIiwiDQo+IDw8DQo+ID4gVHlwZU5hbWUgPSBELT5nZXRUZXh0KCk7IExpbmVO dW0gPSBELT5nZXRMaW5lKCk7ID4+ICAgICB8DQo+IFQ6IkVGSV9ISUlfVElNRSINCj4gPiAiLCIg ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IFR5cGVOYW1lID0gVC0+Z2V0VGV4dCgpOyBMaW5l TnVtID0NCj4gVC0+Z2V0TGluZSgpOyA+Pi0gICAgfA0KPiA+IFI6IkVGSV9ISUlfUkVGIiAiLCIg ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBUeXBlTmFtZSA9DQo+IFItPmdldFRleHQoKTsg TGluZU51bSA9IFItDQo+ID4gPmdldExpbmUoKTsgPj4gICAgKyAgICB8IFI6IkVGSV9ISUlfUkVG IiAiLCINCj4gPDwgVHlwZU5hbWUgPSBSLQ0KPiA+ID5nZXRUZXh0KCk7IExpbmVOdW0gPSBSLT5n ZXRMaW5lKCk7ID4+ICAgKSAgIHsgICAgIFZhcklkICI9IiBJRDpOdW1iZXINCj4gIiwiDQo+ID4g PDxAQCAtMTA5Miw4ICsxMTAxLDggQEAgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkgOg0KPiA+ICAg ICggICAgIE5hbWUgICAgIj0iIFNOOlN0cmluZ0lkZW50aWZpZXIgIiwiICAgICAgICAgICAgIDw8 DQo+IFN0b3JlTmFtZSA9IFNOLQ0KPiA+ID5nZXRUZXh0KCk7ICAgPj4gICAgfC0gICAgTmFtZSAg ICAiPSIgIlNUUklOR19UT0tFTiIgIlwoIg0KPiBWTjpOdW1iZXIgIlwpIiAiLCIgIC0NCj4gPiBW YXJTaXplICI9IiBOOk51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICAgICA8PCArICAgIE5h bWUNCj4gIj0iICJTVFJJTkdfVE9LRU4iDQo+ID4gIlwoIiBWTjpOdW1iZXIgIlwpIiAiLCIrICAg IFZhclNpemUgIj0iIE46TnVtYmVyICIsIg0KPiA8PA0KPiA+IElzVUVGSTIzRWZpVmFyc3RvcmUg PSBGQUxTRTsNCj4gU3RvcmVOYW1lID0NCj4gPiBnQ1ZmclN0cmluZ0RCLkdldFZhclN0b3JlTmFt ZUZvcm1TdHJpbmdJZChfU1RPU0lEKFZOLT5nZXRUZXh0KCksIFZOLQ0KPiA+ID5nZXRMaW5lKCkp KTsNCj4gaWYgKFN0b3JlTmFtZSA9PSBOVUxMKSB7QEAgLQ0KPiA+IDExMTYsNyArMTEyNSw3IEBA IHZmclN0YXRlbWVudFZhclN0b3JlRWZpIDoNCj4gPg0KPiBicmVhazsNCj4gY2FzZSA4Og0KPiA+ IFR5cGVOYW1lID0gKENIQVI4ICopICJVSU5UNjQiOy0NCj4gYnJlYWs7ICsNCj4gPiBicmVhazsN Cj4gZGVmYXVsdDoNCj4gPiBfUENBVENIIChWRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBOKTsgYnJl YWs7QEAgLTExMjQsNyArMTEzMyw3IEBAIA0KPiA+IHZmclN0YXRlbWVudFZhclN0b3JlRWZpIDoN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID4+ICAgKSAtDQo+IFV1aWQgIj0iIGd1aWREZWZpbml0aW9uW0d1aWRdDQo+ID4gPDwgKyAgVXVp ZCAiPSIgZ3VpZERlZmluaXRpb25bR3VpZF0gICAgICAgICAgICAgICAgICAgICA8PA0KPiA+IGlm IChJc1VFRkkyM0VmaVZhcnN0b3JlKQ0KPiA+DQo+IHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QQ0FUDQo+IENIKGdDVmZyRGF0YVN0b3Jh Z2UuRGVjbGFyZUJ1ZmZlclZhclMNCj4gPiB0b3JlDQo+ICgNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgU3RvcmVOYW1lLEBAIC0xMTUwLDcNCj4gPiArMTE1OSw3IEBAIHZmclN0YXRlbWVudFZh clN0b3JlRWZpIDoNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0gDQo+ID4gVlNFT2JqLlNldEd1aWQgKCZHdWlkKTsNCj4gVlNFT2Jq LlNldFZhclN0b3JlSWQNCj4gPiAoVmFyU3RvcmVJZCk7LQ0KPiArDQo+ID4gVlNFT2JqLlNldFNp emUgKChVSU5UMTYpIFNpemUpOw0KPiA+IFZTRU9iai5TZXROYW1lIChTdG9yZU5hbWUpOw0KPiBp Zg0KPiA+IChJc1VFRkkyM0VmaVZhcnN0b3JlID09IEZBTFNFICYmIFN0b3JlTmFtZSAhPSBOVUxM KSB7QEAgLTExODQsNw0KPiA+ICsxMTkzLDcgQEAgdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFs dWUgOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPj4gICB9DQo+ICgtICAgIE5hbWUgIj0iICJTVFJJTkdfVE9LRU4iICJcKCINCj4gPiBO Ok51bWJlciAiXCkiICIsIiAgPDwgKyAgICBOYW1lICI9IiAiU1RSSU5HX1RPS0VOIiAiXCgiIE46 TnVtYmVyDQo+ICJcKSIgIiwiDQo+ID4gPDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmDQo+ICghQ3JlYXRlZCkNCj4gPg0KPiB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QQw0K PiBBVENIKGdDVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZU5hbWVWYXINCj4gPiBTdG9yZUJlZ2luIChT Ti0+Z2V0VGV4dCgpLCBWYXJTdG9yZUlkKSwgU04pOyBDcmVhdGVkID0gVFJVRTtAQA0KPiA+IC0x MjQ1LDEyICsxMjU0LDEyIEBAIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQgOg0KPiA+ICB2 ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCA6ICAgPDwgQ0lmclN1cHByZXNzSWYgU0lPYmo7 Pj4NCj4gTDpTdXBwcmVzc0lmDQo+ID4gPDwtDQo+IFNJT2JqLlNldExpbmVObyhMLT5nZXRMaW5l KCkpOyArDQo+ID4NCj4gU0lPYmouU2V0TGluZU5vKEwtPmdldExpbmUoKSk7DQo+ICAgICAgICAg ICAgICAgICAgID4+ICAgeyBGTEFHUyAiPSINCj4gPiBmbGFnc0ZpZWxkICggIlx8IiBmbGFnc0Zp ZWxkICkqICIsIiB9ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyINCj4gPiB2ZnJGb3Jt U2V0TGlzdC0gIEU6IEVuZElmICsgIEU6IEVuZElmICAgIjsiDQo+IDw8DQo+ID4gQ1JUX0VORF9P UCAoRSk7ID4+ICAgOyBAQCAtMTQ5MSw3ICsxNTAwLDcgQEANCj4gdmZyUXVlc3Rpb25EYXRhRmll bGROYW1lDQo+ID4gW0VGSV9RVUVTVElPTl9JRCAmUUlkLCBVSU5UMzIgJk1hc2ssIENIQVI4ICom VmFySWRTdHIsDQo+ID4gICAgKCAgICAgU04yOlN0cmluZ0lkZW50aWZpZXIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPDwNCj4gX1NUUkNBVCAoJlZhcklkU3RyLCBTTjItDQo+ID4gPmdldFRl eHQoKSk7IExpbmVObyA9IFNOMi0+Z2V0TGluZSgpOyA+PiAgICAgKC0gICAgICAiLiINCj4gPDwg Kw0KPiA+ICIuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0K PiBfU1RSQ0FUDQo+ID4gKCZWYXJJZFN0ciwgIi4iKTsNCj4gaWYNCj4gPiAobUNvbnN0YW50T25s eUluRXhwcmVzc2lvbikNCj4gPg0KPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9QQw0KPiBBVENIKFZGUl9SRVRVUk5fQ09OU1RBTlRf T05MWSwNCj4gPiBMaW5lTm8pO0BAIC0xNTE4LDcgKzE1MjcsNyBAQCB2ZnJRdWVzdGlvbkRhdGFG aWVsZE5hbWUgDQo+ID4gW0VGSV9RVUVTVElPTl9JRCAmUUlkLCBVSU5UMzIgJk1hc2ssIENIQVI4 IComVmFySWRTdHIsDQo+ID4gICAgOyAgdmZyQ29uc3RhbnRWYWx1ZUZpZWxkW1VJTlQ4IFR5cGUs IEVGSV9JRlJfVFlQRV9WQUxVRSAmVmFsdWUsDQo+ID4gQk9PTEVBTiAmTGlzdFR5cGVdIDotICA8 PCAgKyAgPDwgICAgIEVGSV9HVUlEICAgIEd1aWQ7DQo+IEJPT0xFQU4gICAgIE5lZ2F0aXZlID0N Cj4gPiBGQUxTRTsgICAgIEJPT0xFQU4gICAgIEludERlY1N0eWxlID0gRkFMU0U7QEAgLTE2MzQs MTEgKzE2NDMsMTENCj4gQEANCj4gPiB2ZnJDb25zdGFudFZhbHVlRmllbGRbVUlOVDggVHlwZSwg RUZJX0lGUl9UWVBFX1ZBTFVFICZWYWx1ZSwNCj4gQk9PTEVBTg0KPiA+ICZMaXN0VHlwZV0NCj4g PiAgICB8IFo6WmVybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8 DQo+ICRWYWx1ZS51OCAgICAgPSBfU1RPVTgoWi0+Z2V0VGV4dCgpLCBaLQ0KPiA+ID5nZXRMaW5l KCkpOyA+PiAgIHwgSE9VUjpOdW1iZXIgIjoiIE1JTlVURTpOdW1iZXIgIjoiDQo+IFNFQ09ORDpO dW1iZXIgPDwNCj4gPiAkVmFsdWUudGltZSAgID0gX1NUT1QoSE9VUi0+Z2V0VGV4dCgpLCBNSU5V VEUtPmdldFRleHQoKSxTRUNPTkQtDQo+ID4gPmdldFRleHQoKSwgSE9VUi0+Z2V0TGluZSgpKTsg Pj4gICB8IFlFQVI6TnVtYmVyICIvIiBNT05USDpOdW1iZXINCj4gIi8iDQo+ID4gREFZOk51bWJl ciAgICAgPDwgJFZhbHVlLmRhdGUgICA9IF9TVE9EKFlFQVItPmdldFRleHQoKSwNCj4gTU9OVEgt PmdldFRleHQoKSwNCj4gPiBEQVktPmdldFRleHQoKSwgWUVBUi0+Z2V0TGluZSgpKTsgPj4tICB8 IFFJOk51bWJlciI7IiBGSTpOdW1iZXIiOyINCj4gPiBndWlkRGVmaW5pdGlvbltHdWlkXSAiOyIg IlNUUklOR19UT0tFTiIgIlwoIiBEUDpOdW1iZXIgIlwpIiArICB8IA0KPiA+IFFJOk51bWJlciI7 IiBGSTpOdW1iZXIiOyIgZ3VpZERlZmluaXRpb25bR3VpZF0gIjsiICJTVFJJTkdfVE9LRU4iICJc KCINCj4gPiBEUDpOdW1iZXIgIlwpIg0KPiA8PCAkVmFsdWUucmVmICAgID0gX1NUT1IoUUktDQo+ ID4gPmdldFRleHQoKSwgRkktPmdldFRleHQoKSwgJkd1aWQsIERQLT5nZXRUZXh0KCksIFFJLT5n ZXRMaW5lKCkpOyA+PiAgIHwNCj4gPiAiU1RSSU5HX1RPS0VOIiAiXCgiIFMxOk51bWJlciAiXCki ICAgICAgICAgICAgICA8PCAkVmFsdWUuc3RyaW5nID0NCj4gX1NUT1NJRChTMS0NCj4gPiA+Z2V0 VGV4dCgpLCBTMS0+Z2V0TGluZSgpKTsgPj4gICB8ICJceyINCj4gPDwgTGlzdFR5cGUgPQ0KPiA+ IFRSVUU7ID4+LSAgICAgIEwxOk51bWJlcg0KPiA8PCArICAgICAgTDE6TnVtYmVyDQo+ID4gPDwN Cj4gc3dpdGNoIChUeXBlKQ0KPiA+DQo+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZQ0KPiBFRklfSUZSX1RZUEVfTlVNX1NJWkVf OCA6DQo+ID4gVHlwZThbSW5kZXhdICA9IF9TVE9VOChMMS0+Z2V0VGV4dCgpLCBMMS0+Z2V0TGlu ZSgpKTtAQCAtMTY1OCw4DQo+ID4gKzE2NjcsOCBAQCB2ZnJDb25zdGFudFZhbHVlRmllbGRbVUlO VDggVHlwZSwgRUZJX0lGUl9UWVBFX1ZBTFVFDQo+ID4gJlZhbHVlLCBCT09MRUFOICZMaXN0VHlw ZV0NCj4gPg0KPiBJbmRleCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPj4NCj4gKC0NCj4gPiAiLCIgLSAgICAgICAgTDI6TnVtYmVyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCArDQo+ICIsIisgICAgICAgIEwyOk51bWJl cg0KPiA+IDw8DQo+IHN3aXRjaCAoVHlwZSkNCj4gPg0KPiB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UNCj4gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzggOg0KPiA+IFR5cGU4W0luZGV4XSAgPSBfU1RPVTgoTDItPmdldFRleHQoKSwg TDItPmdldExpbmUoKSk7QEAgLTE2NzksNw0KPiA+ICsxNjg4LDcgQEAgdmZyQ29uc3RhbnRWYWx1 ZUZpZWxkW1VJTlQ4IFR5cGUsIEVGSV9JRlJfVFlQRV9WQUxVRQ0KPiA+ICZWYWx1ZSwgQk9PTEVB TiAmTGlzdFR5cGVdDQo+ID4NCj4gPg0KPiBJbmRleCsrOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4NCj4gICAgICAgICkqLSAgICAiXH0iICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsNCj4gPiAiXH0iICAgOw0K PiA+DQo+IC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQo+ICoqDQo+ID4gKioqKioqKioqKioqKioqQEAgLTE3MTQsNyArMTcyMyw3 IEBAIHZmckZvcm1EZWZpbml0aW9uIDoNCj4gPiAgICA7ICB2ZnJGb3JtTWFwRGVmaW5pdGlvbiA6 LSAgPDwgKyAgPDwgICAgIENJZnJGb3JtTWFwICpGTWFwT2JqID0NCj4gTlVMTDsNCj4gPiBVSU5U MzIgICAgICBGb3JtTWFwTWV0aG9kTnVtYmVyID0gMDsgICAgIEVGSV9HVUlEICAgIEd1aWQ7QEAN Cj4gLTE3NzUsMTENCj4gPiArMTc4NCwxNSBAQCB2ZnJTdGF0ZW1lbnREZWZhdWx0IDoNCj4gPiAg ICAgICBDSWZyTnVtZXJpYyAgICAgICAgICAgKk51bWVyaWNRc3QgICA9IE5VTEw7ICAgID4+LQ0K PiBEOkRlZmF1bHQNCj4gPiArICBEOkRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDw8Kw0KPiBpZg0KPiA+IChtSXNDYXRjaERlZmF1bHRFbmFibGUpIHsrDQo+ ID4gRGVmYXVsdFZhbHVlRXJyb3IoVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgRC0NCj4gPiA+Z2V0 TGluZSgpKTsrDQo+ICAgICAgIH0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgID4+DQo+ID4gKCAgICAgKC0gICAgICAiPSIgdmZyQ29uc3RhbnRWYWx1 ZUZpZWxkW19HRVRfQ1VSUlFFU1RfREFUQVRZUEUoKSwNCj4gKlZhbCwNCj4gPiBBcnJheVR5cGVd ICIsIiAgLQ0KPiA8PCArICAgICAgIj0iDQo+ID4gdmZyQ29uc3RhbnRWYWx1ZUZpZWxkW19HRVRf Q1VSUlFFU1RfREFUQVRZUEUoKSwgKlZhbCwgQXJyYXlUeXBlXSAiLCIrDQo+ID4gPDwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZg0KPiAo Z0N1cnJlbnRNaW5NYXhEYXRhICE9IE5VTEwgJiYNCj4gPiBnQ3VycmVudE1pbk1heERhdGEtPklz TnVtZXJpY09wY29kZSgpKQ0KPiA+DQo+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYw0KPiBoZWNrIGRlZmF1bHQgdmFsdWUgaXMg dmFsaWQgZm9yIE51bWVyaWMNCj4gPiBPcGNvZGUNCj4gTnVtZXJpY1FzdCA9IChDSWZyTnVtZXJp YyAqKQ0KPiA+IGdDdXJyZW50UXVlc3Rpb247QEAgLTE4ODgsMTQgKzE5MDEsMTQgQEAgdmZyU3Rh dGVtZW50RGVmYXVsdCA6DQo+ID4gICAgICAgICAgdmZyU3RhdGVtZW50VmFsdWUgIiwiICAgICAg ICAgICAgICAgICAgICAgICA8PCBDSWZyRW5kDQo+IEVuZE9iajE7DQo+ID4gRW5kT2JqMS5TZXRM aW5lTm8oRC0+Z2V0TGluZSgpKTsgPj4gICAgICkgICAgIHstICAgICAgRGVmYXVsdFN0b3JlICI9 Ig0KPiA+IFNOOlN0cmluZ0lkZW50aWZpZXIgIiwiICAgICAgPDwgKyAgICAgIERlZmF1bHRTdG9y ZSAiPSINClNOOlN0cmluZ0lkZW50aWZpZXINCj4gIiwiICAgICAgPDwNCj4gPiBfUENBVENIKGdD VmZyRGVmYXVsdFN0b3JlLkdldERlZmF1bHRJZCAoU04tPmdldFRleHQoKSwgJkRlZmF1bHRJZCks IA0KPiA+IFNOKTsgaWYgKERPYmogIT0gTlVMTCkgey0NCj4gRE9iai0+U2V0RGVmYXVsdElkDQo+ ID4gKERlZmF1bHRJZCk7DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0gKw0KPiA+IERPYmotPlNldERlZmF1bHRJZA0KPiAoRGVmYXVs dElkKTsrDQo+ICAgICB9DQo+ID4gaWYgKERPYmoyICE9IE5VTEwpIHstDQo+IERPYmoyLT5TZXRE ZWZhdWx0SWQNCj4gPiAoRGVmYXVsdElkKTsgKw0KPiBET2JqMi0+U2V0RGVmYXVsdElkDQo+ID4N Cj4gKERlZmF1bHRJZCk7DQo+ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA+Pg0KPiA+ICB9QEAgLTE5MTcsOCArMTkzMCw4IEBAIHZmclN0 YXRlbWVudERlZmF1bHQgOg0KPiA+DQo+ICAgICAgICAgKTsNCj4gICAgICB9DQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfS0NCj4gaWYgKERPYmogICE9 IE5VTEwpDQo+ID4ge2RlbGV0ZSBET2JqO30gLQ0KPiBpZiAoRE9iajIgIT0gTlVMTCkge2RlbGV0 ZQ0KPiA+IERPYmoyO30gKw0KPiBpZiAoRE9iaiAgIT0gTlVMTCkge2RlbGV0ZSBET2JqO30rDQo+ ID4gaWYgKERPYmoyICE9IE5VTEwpIHtkZWxldGUNCj4gRE9iajI7fSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4NCj4gICApICAgO0BAIC0NCj4g PiAxOTcwLDExICsxOTgzLDE1IEBAIHZmclN0YXRlbWVudEludmFsaWQgOg0KPiA+ICAgIDsgIGZs YWdzRmllbGQgOi0gIE51bWJlciAtICB8IEludGVyYWN0aXZlRmxhZyAtICB8IA0KPiA+IE1hbnVm YWN0dXJpbmdGbGFnIC0gIHwgRGVmYXVsdEZsYWcgLSAgfCBSZXNldFJlcXVpcmVkRmxhZyArICBO dW1iZXIrDQo+ID4gfCBJbnRlcmFjdGl2ZUZsYWcrICB8DQo+ID4gTWFudWZhY3R1cmluZ0ZsYWcr ICB8IEQ6RGVmYXVsdEZsYWcNCj4gPDwrDQo+ID4gaWYgKG1Jc0NhdGNoRGVmYXVsdEVuYWJsZSkg eysNCj4gPiBEZWZhdWx0VmFsdWVFcnJvcihWRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBELQ0KPiA+ ID5nZXRMaW5lKCkpOysNCj4gICAgICAgICB9Kw0KPiA+ID4+KyAgfCBSZXNldFJlcXVpcmVkRmxh ZyAgIHwgUmVjb25uZWN0UmVxdWlyZWRGbGFnICAgfA0KPiBOOk5WQWNjZXNzRmxhZw0KPiA+IDw8 DQo+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyAoQEAgLQ0KPiA+IDE5ODksNyArMjAw Niw3IEBAIGZsYWdzRmllbGQgOg0KPiA+DQo+ID4gTC0+Z2V0TGluZSgpLA0KPiA+DQo+IEwtPmdl dFRleHQoKQ0KPiAgICAgICAgICApOy0NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAgIDsNCj4gPiB2ZnJTdGF0ZW1lbnRW YWx1ZSA6QEAgLTIwMDEsMTMgKzIwMTgsMTMgQEAgdmZyU3RhdGVtZW50VmFsdWUgOg0KPiA+ICB2 ZnJTdGF0ZW1lbnRSZWFkIDogICA8PCBDSWZyUmVhZCBST2JqOyA+PiAgIFI6UmVhZA0KPiA+IDw8 IFJPYmouU2V0TGluZU5vKFItPmdldExpbmUoKSk7ID4+LSAgdmZyU3RhdGVtZW50RXhwcmVzc2lv blswXSAiOyIgKw0KPiA+IHZmclN0YXRlbWVudEV4cHJlc3Npb25bMF0gIjsiICAgOyAgdmZyU3Rh dGVtZW50V3JpdGUgOiAgIDw8IENJZnJXcml0ZQ0KPiBXT2JqOyA+Pg0KPiA+IFc6V3JpdGUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gV09iai5TZXRM aW5lTm8oVy0+Z2V0TGluZSgpKTsgPj4tDQo+ID4gdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAi OyIgKyAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyIgICA7DQo+ID4gdmZyU3RhdGVtZW50 U3ViVGl0bGUgOkBAIC0yMTQwLDcgKzIxNTcsNyBAQCB2ZnJTdGF0ZW1lbnRHb3RvIDoNCj4gPiAg ICAgICAgRm9ybUlkICI9IiBGMzpOdW1iZXIgIiwiICAgICAgICAgICAgICAgICAgICAgICAgIDw8 DQo+IFJlZlR5cGUgPSAyOyBGSWQgPSBfU1RPRklEKEYzLQ0KPiA+ID5nZXRUZXh0KCksIEYzLT5n ZXRMaW5lKCkpOyA+PiAgICAgICBRdWVzdGlvbiAiPSIgICAgICAgKC0NCj4gUU4zOlN0cmluZ0lk ZW50aWZpZXINCj4gPiAiLCIgICAgICAgICAgICAgICAgICAgICA8PCArICAgICAgICAgIFFOMzpT dHJpbmdJZGVudGlmaWVyICIsIg0KPiA8PA0KPiA+IG1DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlv bklkIChRTjMtPmdldFRleHQgKCksIE5VTEwsIFFJZCwgQml0TWFzayk7IA0KPiA+IGlmIChRSWQg PT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpDQo+ID4NCj4gew0KPiBfUENBVENIKFZGUl9SRVRV Uk5fVU5ERUZJTkVELA0KPiA+IFFOMyk7QEAgLTIyMjIsNyArMjIzOSw3IEBAIHZmclN0YXRlbWVu dEdvdG8gOg0KPiA+ICAgICAgIiwiIEtleSAiPSIgS046TnVtYmVyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPDwNCj4gQXNzaWduUXVlc3Rpb25LZXkgKCpRSE9iaiwNCj4gPiBLTik7ID4+ ICAgfSAgIHstICAgIEU6IiwiICsgICAgRToiLCINCj4gdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0ICAgICAgICAgICAgICAgICAgIDw8DQo+ID4gT0hPYmotPlNldFNjb3BlKDEpOyBDUlRf RU5EX09QIChFKTs+PiAgIH0gICAiOyINCj4gPiA8PCBpZiAoUjFPYmogIT0gTlVMTCkge2RlbGV0 ZSBSMU9iajt9IGlmIChSMk9iaiAhPSBOVUxMKSB7ZGVsZXRlIA0KPiA+IFIyT2JqO30gaWYgKFIz T2JqICE9IE5VTEwpIHtkZWxldGUgUjNPYmo7fSBpZiAoUjRPYmogIT0gTlVMTCkgDQo+ID4ge2Rl bGV0ZSBSNE9iajt9IGlmIChSNU9iaiAhPQ0KPiA+IE5VTEwpIHtkZWxldGUgUjVPYmo7fT4+QEAg LTI1MTEsMjAgKzI1MjgsMjAgQEAgDQo+ID4gbWluTWF4RGF0ZVN0ZXBEZWZhdWx0W0VGSV9ISUlf REFURSAmIEQsIFVJTlQ4IEtleVZhbHVlXSA6DQo+ID4gICAgeyAgICAgImRlZmF1bHQiICI9IiBO Ok51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gPiBzd2l0Y2ggKEtleVZh bHVlKSB7LQ0KPiBjYXNlIDA6ICsNCj4gPiBjYXNlIDA6DQo+IEQuWWVhciAgPSBfU1RPVTE2KE4t PmdldFRleHQoKSwgTi0NCj4gPiA+Z2V0TGluZSgpKTsNCj4gaWYgKEQuWWVhciA8IF9TVE9VMTYg KE1pbk4tDQo+ID4gPmdldFRleHQoKSwgTWluTi0+Z2V0TGluZSgpKSB8fCBELlllYXIgPiBfU1RP VTE2IChNYXhOLT5nZXRUZXh0KCksDQo+ID4gPk1heE4tDQo+ID4gPmdldExpbmUoKSkpDQo+IHsN Cj4gICBfUENBVENIDQo+ID4gKFZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIE4tPmdldExp bmUoKSwgIlllYXIgZGVmYXVsdCB2YWx1ZQ0KPiBtdXN0DQo+ID4gYmUgYmV0d2VlbiBNaW4geWVh ciBhbmQgTWF4DQo+IHllYXIuIik7DQo+ICAgICAgfQ0KPiA+IGJyZWFrOy0NCj4gY2FzZSAxOiAt DQo+ID4gRC5Nb250aCA9IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tPmdldExpbmUoKSk7ICsgY2Fz ZSAxOisNCj4gRC5Nb250aCA9IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tDQo+ID4gPmdldExpbmUo KSk7DQo+IGlmIChELk1vbnRoIDwgMSB8fCBELk1vbnRoID4gMTIpDQo+ID4NCj4gew0KPiAgIF9Q Q0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTi0+Z2V0TGluZSgpLCAi TW9udGggZGVmYXVsdCB2YWx1ZSANCj4gPiBtdXN0IGJlIGJldHdlZW4gMSBhbmQNCj4gMTIuIik7 DQo+ICAgICB9DQo+ID4gYnJlYWs7LQ0KPiBjYXNlIDI6IC0NCj4gPiBELkRheSA9IF9TVE9VOChO LT5nZXRUZXh0KCksIE4tPmdldExpbmUoKSk7ICsgY2FzZSAyOisNCj4gRC5EYXkgPSBfU1RPVTgo Ti0+Z2V0VGV4dCgpLCBOLQ0KPiA+ID5nZXRMaW5lKCkpOw0KPiBpZiAoRC5EYXkgPCAxIHx8IEQu RGF5ID4gMzEpDQo+ID4NCj4gew0KPiAgIF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiwgTi0+Z2V0TGluZSgpLCAiRGF5IGRlZmF1bHQgdmFsdWUNCj4gbXVzdA0KPiA+ IGJlIGJldHdlZW4gMSBhbmQNCj4gMzEuIik7DQo+ICAgICB9QEAgLTI1NzAsNw0KPiA+ICsyNTg3 LDcgQEAgdmZyU2V0TWluTWF4U3RlcFtDSWZyTWluTWF4U3RlcERhdGEgJiBNTVNET2JqXSA6DQo+ ID4gICAgICAgQk9PTEVBTiBNaW5OZWdhdGl2ZSA9IEZBTFNFOyAgICAgIEJPT0xFQU4gTWF4TmVn YXRpdmUgPQ0KPiBGQUxTRTsgICA+Pi0NCj4gPiBNaW5pbXVtICAgIj0iICsgIE1pbmltdW0gICAi PSIgICB7ICAgICAiXC0iDQo+IDw8DQo+ID4gTWluTmVnYXRpdmUgPSBUUlVFOyA+PiAgIH1AQCAt MjY1OSw4ICsyNjc2LDggQEANCj4gPiB2ZnJTZXRNaW5NYXhTdGVwW0NJZnJNaW5NYXhTdGVwRGF0 YSAmIE1NU0RPYmpdIDoNCj4gPg0KPiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPj4tICBNYXhpbXVtICAgIj0iIC0NCj4geyArICBNYXhpbXVtICAgIj0i KyAgeyAgICAgIlwtIg0KPiA+IDw8IE1heE5lZ2F0aXZlID0gVFJVRTsgPj4gICB9ICAgQTpOdW1i ZXIgIiwiDQo+IDw8QEAgLQ0KPiA+IDI4ODksNyArMjkwNiw3IEBAIHZmclN0YXRlbWVudE51bWVy aWMgOg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgID4+DQo+ID4gdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0LSAg RTpFbmROdW1lcmljDQo+IDw8ICsNCj4gPiBFOkVuZE51bWVyaWMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDw8DQo+ID4gQ1JUX0VORF9PUCAoRSk7DQo+IGlmIChHdWlk T2JqICE9IE5VTEwpDQo+ID4NCj4gew0KPiBHdWlkT2JqLT5TZXRTY29wZSgxKTtAQCAtMzEzMSw3 DQo+ID4gKzMxNDgsNyBAQCB2ZnJTdGF0ZW1lbnRTdHJpbmcgOg0KPiA+ICAgIHsgICAgIEtleSAi PSIgS046TnVtYmVyICIsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8DQo+IEFzc2ln blF1ZXN0aW9uS2V5IChTT2JqLA0KPiA+IEtOKTsgPj4gICB9LSAgTWluU2l6ZSAiPSIgTUlOOk51 bWJlciAiLCINCj4gPDwgKyAgTWluU2l6ZSAiPSINCj4gPiBNSU46TnVtYmVyICIsIiAgICAgICAg ICAgICAgICAgICAgICAgICAgIDw8DQo+ID4gVmFyQXJyYXlTaXplID0gX0dFVF9DVVJSUUVTVF9B UlJBWV9TSVpFKCk7IFN0cmluZ01pblNpemUgPSANCj4gPiBfU1RPVTgoTUlOLT5nZXRUZXh0KCks IE1JTi0+Z2V0TGluZSgpKTsgaWYgKF9TVE9VNjQoTUlOLT5nZXRUZXh0KCksDQo+ID4gTUlOLT5n ZXRMaW5lKCkpID4gU3RyaW5nTWluU2l6ZSkge0BAIC0zMTQxLDcNCj4gPiArMzE1OCw3IEBAIHZm clN0YXRlbWVudFN0cmluZyA6DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9IA0KPiA+IFNPYmouU2V0TWluU2l6ZQ0KPiAoU3Ry aW5nTWluU2l6ZSk7DQo+ICAgICAgICA+Pi0gIE1heFNpemUNCj4gPiAiPSIgTUFYOk51bWJlciAi LCIgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCArICBNYXhTaXplICI9Ig0KPiBNQVg6TnVt YmVyICIsIg0KPiA+IDw8DQo+IFN0cmluZ01heFNpemUgPSBfU1RPVTgoTUFYLT5nZXRUZXh0KCks DQo+ID4gTUFYLT5nZXRMaW5lKCkpOw0KPiBpZiAoX1NUT1U2NChNQVgtDQo+ID4gPmdldFRleHQo KSwgTUFYLT5nZXRMaW5lKCkpID4gU3RyaW5nTWF4U2l6ZSkNCj4gPg0KPiB7DQo+IF9QQ0FUQ0gN Cj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTUFYLT5nZXRMaW5lKCksICJTdHJp bmcgTWF4U2l6ZQ0KPiB0YWtlcw0KPiA+IG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxh cmdlciB0aGFuIDB4RkYuIik7QEAgLTMxODUsNyArMzIwMiw3IA0KPiA+IEBAIHZmclN0YXRlbWVu dFBhc3N3b3JkIDoNCj4gPiAgICB7ICAgICBLZXkgIj0iIEtOOk51bWJlciAiLCIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8PA0KPiBBc3NpZ25RdWVzdGlvbktleSAoUE9iaiwNCj4gPiBL Tik7ID4+ICAgfS0gIE1pblNpemUgIj0iIE1JTjpOdW1iZXIgIiwiDQo+IDw8ICsgIE1pblNpemUg Ij0iDQo+ID4gTUlOOk51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiA+ IFZhckFycmF5U2l6ZSA9IF9HRVRfQ1VSUlFFU1RfQVJSQVlfU0laRSgpOyBQYXNzd29yZE1pblNp emUgPSANCj4gPiBfU1RPVTE2KE1JTi0+Z2V0VGV4dCgpLCBNSU4tPmdldExpbmUoKSk7IGlmIChf U1RPVTY0KE1JTi0+Z2V0VGV4dCgpLA0KPiA+IE1JTi0+Z2V0TGluZSgpKSA+IFBhc3N3b3JkTWlu U2l6ZSkge0BAIC0NCj4gPiAzMTk1LDcgKzMyMTIsNyBAQCB2ZnJTdGF0ZW1lbnRQYXNzd29yZCA6 DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9IA0KPiA+IFBPYmouU2V0TWluU2l6ZQ0KPiAoUGFzc3dvcmRNaW5TaXplKTsNCj4g ICAgICAgICAgID4+LQ0KPiA+IE1heFNpemUgIj0iIE1BWDpOdW1iZXIgIiwiICAgICAgICAgICAg ICAgICAgICAgICAgICAgPDwgKw0KPiBNYXhTaXplICI9IiBNQVg6TnVtYmVyDQo+ID4gIiwiICAg ICAgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gUGFzc3dvcmRNYXhTaXplID0NCj4gPiBfU1RP VTE2KE1BWC0+Z2V0VGV4dCgpLCBNQVgtPmdldExpbmUoKSk7DQo+IGlmDQo+ID4gKF9TVE9VNjQo TUFYLT5nZXRUZXh0KCksIE1BWC0+Z2V0TGluZSgpKSA+IFBhc3N3b3JkTWF4U2l6ZSkNCj4gPg0K PiB7DQo+IF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTUFYLT5n ZXRMaW5lKCksICJQYXNzd29yZCBNYXhTaXplDQo+IHRha2VzDQo+ID4gb25seSB0d28gYnl0ZSwg d2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gMHhGRkZGLiIpO0BAIC0zMjMwLDEyDQo+ID4gKzMy NDcsMTIgQEAgdmZyU3RhdGVtZW50T3JkZXJlZExpc3QgOg0KPiA+ICAgID4+ICAgTDpPcmRlcmVk TGlzdA0KPiA8PCBPTE9iai5TZXRMaW5lTm8oTC0+Z2V0TGluZSgpKTsNCj4gPiBnSXNPcmRlcmVk TGlzdCA9IFRSVUU7Pj4gICB2ZnJRdWVzdGlvbkhlYWRlcltPTE9ial0gIiwiLQ0KPiA+IDw8ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwN Cj4gPiBWYXJBcnJheVNpemUgPSBfR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKTsgT0xPYmouU2V0 TWF4Q29udGFpbmVycw0KPiA+ICgoVUlOVDgpIChWYXJBcnJheVNpemUgPiAweEZGID8gMHhGRiA6 DQo+ID4NCj4gVmFyQXJyYXlTaXplKSk7DQo+ICAgICAgID4+ICAgey0gICAgTWF4Q29udGFpbmVy cyAiPSINCj4gPiBNOk51bWJlciAiLCIgICAgICAgICAgICAgICAgICAgICA8PCArICAgIE1heENv bnRhaW5lcnMgIj0iDQo+IE06TnVtYmVyICIsIg0KPiA+IDw8DQo+IGlmIChfU1RPVTY0KE0tPmdl dFRleHQoKSwgTS0+Z2V0TGluZSgpKSA+DQo+ID4gX1NUT1U4KE0tPmdldFRleHQoKSwgTS0+Z2V0 TGluZSgpKSkNCj4gPg0KPiB7DQo+IF9QQ0FUQ0gNCj4gPiAoVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwgTS0+Z2V0TGluZSgpLCAiT3JkZXJlZExpc3QgDQo+ID4gTWF4Q29udGFpbmVycyB0 YWtlcyBvbmx5IG9uZSBieXRlLCB3aGljaCBjYW4ndCBiZSBsYXJnZXIgdGhhbg0KPiA+DQo+IDB4 RkYuIik7DQo+ICAgIH0gZWxzZSBpZiAoVmFyQXJyYXlTaXplICE9IDAgJiYNCj4gPiBfU1RPVTgo TS0+Z2V0VGV4dCgpLCBNLT5nZXRMaW5lKCkpID4gVmFyQXJyYXlTaXplKSB7QEAgLTMzMjgsMTkN Cj4gPiArMzM0NSwxOSBAQCBtaW5NYXhUaW1lU3RlcERlZmF1bHRbRUZJX0hJSV9USU1FICYgVCwg VUlOVDgNCj4gS2V5VmFsdWVdIDoNCj4gPiAgICB7ICAgICAiZGVmYXVsdCIgIj0iIE46TnVtYmVy ICIsIiAgICAgICAgICAgICAgICAgICAgICAgICA8PA0KPiA+IHN3aXRjaCAoS2V5VmFsdWUpIHst DQo+IGNhc2UgMDogLQ0KPiA+IFQuSG91ciAgID0gX1NUT1U4KE4tPmdldFRleHQoKSwgTi0+Z2V0 TGluZSgpKTsgKw0KPiA+IGNhc2UgMDorDQo+IFQuSG91ciAgID0gX1NUT1U4KE4tPmdldFRleHQo KSwgTi0NCj4gPiA+Z2V0TGluZSgpKTsNCj4gaWYgKFQuSG91ciA+IDIzKQ0KPiA+DQo+IHsNCj4g ICBfUENBVENIDQo+ID4gKFZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIE4tPmdldExpbmUo KSwgIkhvdXIgZGVmYXVsdCB2YWx1ZQ0KPiBtdXN0DQo+ID4gYmUgYmV0d2VlbiAwIGFuZA0KPiAy My4iKTsNCj4gICAgIH0NCj4gPiBicmVhazstDQo+IGNhc2UgMTogLQ0KPiA+IFQuTWludXRlID0g X1NUT1U4KE4tPmdldFRleHQoKSwgTi0+Z2V0TGluZSgpKTsgKyBjYXNlIDE6Kw0KPiBULk1pbnV0 ZSA9IF9TVE9VOChOLT5nZXRUZXh0KCksIE4tDQo+ID4gPmdldExpbmUoKSk7DQo+IGlmIChULk1p bnV0ZSA+IDU5KQ0KPiA+DQo+IHsNCj4gICBfUENBVENIDQo+ID4gKFZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsIE4tPmdldExpbmUoKSwgIk1pbnV0ZSBkZWZhdWx0IHZhbHVlIA0KPiA+IG11 c3QgYmUgYmV0d2VlbiAwIGFuZA0KPiA1OS4iKTsNCj4gICAgIH0NCj4gPiBicmVhazstDQo+IGNh c2UgMjogKw0KPiA+IGNhc2UgMjoNCj4gVC5TZWNvbmQgPSBfU1RPVTgoTi0+Z2V0VGV4dCgpLCBO LQ0KPiA+ID5nZXRMaW5lKCkpOw0KPiBpZiAoVC5TZWNvbmQgPiA1OSkNCj4gPg0KPiB7DQo+ICAg X1BDQVRDSA0KPiA+IChWRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBOLT5nZXRMaW5lKCks ICJTZWNvbmQgZGVmYXVsdCB2YWx1ZSANCj4gPiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNTkuIik7 QEAgLTM0MTksMTEgKzM0MzYsMTEgQEAgDQo+ID4gdmZyU3RhdGVtZW50U3RhdExpc3RPbGQgOg0K PiA+ICAgIDsgIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQgOi0gIDw8IC0gICAgQ0lmckRpc2Fi bGVJZiBESU9iajsgKyAgPDwrDQo+ID4gQ0lmckRpc2FibGVJZiBESU9iajsgICA+PiAgIEw6RGlz YWJsZUlmDQo+IDw8DQo+ID4gRElPYmouU2V0TGluZU5vKEwtPmdldExpbmUoKSk7ID4+LSAgdmZy U3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyIgKw0KPiA+IHZmclN0YXRlbWVudEV4cHJlc3Npb25b MF0gIjsiICAgKCB2ZnJTdGF0ZW1lbnRTdGF0TGlzdCApKiAgIEU6RW5kSWYNCj4gPiA8PCBDUlRf RU5EX09QIChFKTsgPj4gICAiOyJAQCAtMzU0OCw4ICszNTY1LDggQEANCj4gPiB2ZnJTdGF0ZW1l bnRXYXJuaW5nSWYgOg0KPiA+ICAgIDsgIHZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0IDotICA8 PCAtICAgIENJZnJEaXNhYmxlSWYgRElPYmo7ICsNCj4gPDwrDQo+ID4gQ0lmckRpc2FibGVJZiBE SU9iajsgICA+PiAgIEw6RGlzYWJsZUlmDQo+IDw8DQo+ID4gRElPYmouU2V0TGluZU5vKEwtPmdl dExpbmUoKSk7ID4+ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblswXSAiOyJAQCAtDQo+ID4gMzYx NiwxNSArMzYzMywxNSBAQCB2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiA6DQo+ID4gICAgICAgVUlO VDMyICAgICAgICAgICAgICpUeXBlMzIgICAgICAgPSAoVUlOVDMyICopIFZhbHVlTGlzdDsNCj4g VUlOVDY0DQo+ID4gKlR5cGU2NCAgICAgICA9IChVSU5UNjQgKikgVmFsdWVMaXN0OyAgID4+LSAg TDpPcHRpb24NCj4gPDwNCj4gPiArICBMOk9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDw8DQo+IGlmDQo+ID4gKF9HRVRfQ1VSUlFFU1RfREFUQVRZUEUo KSA9PSBFRklfSUZSX1RZUEVfT1RIRVIpDQo+ID4NCj4gew0KPiBfUENBVENIIChWRlJfUkVUVVJO X0ZBVEFMX0VSUk9SLCBMLQ0KPiA+ID5nZXRMaW5lKCksICJHZXQgZGF0YSB0eXBlDQo+ID4NCj4g ZXJyb3IuIik7DQo+ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA+DQo+ID4tDQo+ID4gVGV4dCAgIj0iICJTVFJJTkdfVE9LRU4iICJc KCIgUzpOdW1iZXIgIlwpIiAiLCIgICAgICArICBUZXh0ICAiPSINCj4gPiAiU1RSSU5HX1RPS0VO IiAiXCgiIFM6TnVtYmVyICJcKSIgIiwiICAgVmFsdWUgIj0iDQo+ID4gdmZyQ29uc3RhbnRWYWx1 ZUZpZWxkW19HRVRfQ1VSUlFFU1RfREFUQVRZUEUoKSwgKlZhbCwgQXJyYXlUeXBlXSAiLCItDQo+ ID4gPDwgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8PA0KPiBpZg0KPiA+IChnQ3VycmVudE1pbk1heERhdGEgIT0gTlVMTCkNCj4gew0KPiAv L3NldA0KPiA+IG1pbi9tYXggdmFsdWUgZm9yIG9uZW9mIG9wY29kZQ0KPiBVSU5UNjQNCj4gPiBT dGVwID0gZ0N1cnJlbnRNaW5NYXhEYXRhLT5HZXRTdGVwRGF0YShfR0VUX0NVUlJRRVNUX0RBVEFU WVBFKCksDQo+ID4gX0dFVF9DVVJSUUVTVF9WQVJUSU5GTygpLm1Jc0JpdFZhcik7QEAgLTM2OTYs NyArMzcxMyw3IEBAIA0KPiA+IHZmclN0YXRlbWVudE9uZU9mT3B0aW9uIDoNCj4gPg0KPiBTaXpl ICs9IE9GRlNFVF9PRg0KPiA+IChFRklfSUZSX09ORV9PRl9PUFRJT04sIFZhbHVlKTsNCj4gT09P T2JqID0NCj4gPiBuZXcgQ0lmck9uZU9mT3B0aW9uKChVSU5UOClTaXplKTsNCj4gT09PT2JqLQ0K PiA+ID5TZXRMaW5lTm8oTC0+Z2V0TGluZSgpKTstDQo+IE9PT09iai0NCj4gPiA+U2V0T3B0aW9u IChfU1RPU0lEKFMtPmdldFRleHQoKSwgUy0+Z2V0TGluZSgpKSk7ICsNCj4gPiBPT09PYmotPlNl dE9wdGlvbiAoX1NUT1NJRChTLT5nZXRUZXh0KCksIFMtPmdldExpbmUoKSkpOw0KPiA+IGlmIChB cnJheVR5cGUpDQo+IHsNCj4gT09PT2JqLT5TZXRUeXBlDQo+ID4NCj4gKEVGSV9JRlJfVFlQRV9C VUZGRVIpOw0KPiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7QEAgLTM3MDYsNw0KPiA+ICszNzIz LDcgQEAgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24gOg0KPiA+DQo+IE9PT09iai0+U2V0VHlwZQ0K PiA+DQo+IChfR0VUX0NVUlJRRVNUX0RBVEFUWVBFKCkpOw0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfS0NCj4g T09PT2JqLT5TZXRWYWx1ZQ0KPiA+ICgqVmFsKTsgKw0KPiBPT09PYmotPlNldFZhbHVlDQo+ID4N Cj4gKCpWYWwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPj4NCj4gRjpGTEFHUyAiPSINCj4gPiB2ZnJPbmVPZk9wdGlvbkZsYWdzWypPT09P YmosIEYtPmdldExpbmUoKV0gPDxAQCAtMzc5MCw3ICszODA3LDEyIEBAIA0KPiA+IG9uZW9mb3B0 aW9uRmxhZ3NGaWVsZCBbVUlOVDggJiBIRmxhZ3MsIFVJTlQ4ICYgTEZsYWdzXSA6DQo+ID4gICAg fCBSZXN0U3R5bGVGbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PA0K PiAkSEZsYWdzIHw9IDB4MjA7ID4+ICAgfA0KPiA+IFJlY29ubmVjdFJlcXVpcmVkRmxhZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICRIRmxhZ3MgfD0NCj4gMHg0MDsgPj4gICB8DQo+ ID4gTWFudWZhY3R1cmluZ0ZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg JExGbGFncyB8PQ0KPiAweDIwOyA+Pi0gIHwgRGVmYXVsdEZsYWcNCj4gPiA8PCAkTEZsYWdzIHw9 IDB4MTA7ID4+KyAgfCBEOkRlZmF1bHRGbGFnDQo+IDw8Kw0KPiA+ICRMRmxhZ3MgfD0gMHgxMDsr DQo+IGlmIChtSXNDYXRjaERlZmF1bHRFbmFibGUpDQo+ID4geysNCj4gPiBEZWZhdWx0VmFsdWVF cnJvcihWRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBELQ0KPiA+ID5nZXRMaW5lKCkpOysNCj4gICAg ICAgICAgIH0rDQo+ID4gID4+ICAgfCBBOk5WQWNjZXNzRmxhZyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8PA0KPiA+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZw0K PiA+DQo+ICgNCj4gVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SSw0KPiA+IF9PUENPREUs QEAgLTM5NjMsNyArMzk4NSw3IEBAIHZmclN0YXRlbWVudEV4cHJlc3Npb24gW1VJTlQzMiANCj4g PiBSb290TGV2ZWwsIFVJTlQzMiBFeHBPcENvdW50ID0gMF0gOg0KPiA+DQo+ICAgIH0NCj4gICAg fQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0tDQo+ ICsNCj4gPiBpZiAoJFJvb3RMZXZlbCA9PSAwKQ0KPiB7DQo+IF9DTEVBUl9TQVZFRF9PUEhEUg0K PiA+ICgpOw0KPiBtQ0lmck9wSGRySW5kZXggLS07QEAgLTQ0MDUsMTANCj4gPiArNDQyNywxMCBA QCBpZGVxdmFsbGlzdEV4cFtVSU5UMzIgJiBSb290TGV2ZWwsIFVJTlQzMiAmIEV4cE9wQ291bnRd IDoNCj4gPg0KPiBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBMaXN0TGVuOyBJbmRleCsrKQ0KPiA+ DQo+IHsNCj4gICBFSUxPYmouU2V0VmFsdWVMaXN0IChJbmRleCwNCj4gPg0KPiBWYWx1ZUxpc3Rb SW5kZXhdKTsNCj4gICAgICAgICAgICAgIH0tDQo+ID4gKw0KPiA+ICsgRUlMT2JqLlVwZGF0ZUlm ckJ1ZmZlcigpOy0NCj4gPiBfU0FWRV9PUEhEUl9DT05EIChFSUxPYmosICgkRXhwT3BDb3VudCA9 PSAwKSwgTC0+Z2V0TGluZSgpKTsNCj4gPiAtDQo+ICsNCj4gPiBfU0FWRV9PUEhEUl9DT05EIChF SUxPYmosICgkRXhwT3BDb3VudCA9PSAwKSwgTC0+Z2V0TGluZSgpKTsrIGlmIA0KPiA+IChRSWQg PT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpDQo+ID4NCj4gew0KPiAgIEVJTE9iai5TZXRRdWVz dGlvbklkIChRSWQsIFZhcklkU3RyLA0KPiA+DQo+IExpbmVObyk7DQo+ICAgICAgIH1AQCAtNDQ1 OCw5ICs0NDgwLDkgQEANCj4gPiBzdHJpbmdyZWYxRXhwW1VJTlQzMiAmIFJvb3RMZXZlbCwgVUlO VDMyICYgRXhwT3BDb3VudF0gOg0KPiA+ICAgID4+ICAgTDpTdHJpbmdSZWYgICAiXCgiLSAgICAg ICggKw0KPiAoICAgICAgICAgIlNUUklOR19UT0tFTiItICAgICAgICAiXCgiICsgICAgICAgICJc KCINCj4gPiBTOk51bWJlciA8PCBSZWZTdHJpbmdJZCA9IF9TVE9TSUQoUy0+Z2V0VGV4dCgpLCBT LT5nZXRMaW5lKCkpOyA+Pg0KPiAiXCkiDQo+ID4gfCBJOk51bWJlciA8PCBSZWZTdHJpbmdJZCA9 IF9TVE9TSUQoSS0+Z2V0VGV4dCgpLCBJLT5nZXRMaW5lKCkpOw0KPiA+IHwgPj5AQA0KPiA+IHwg LQ0KPiA+IDQ0OTksMTAgKzQ1MjEsMTAgQEAgZ2V0RXhwW1VJTlQzMiAmIFJvb3RMZXZlbCwgVUlO VDMyICYNCj4gRXhwT3BDb3VudF0gOg0KPiA+ICAgICAgIEluZm8ubVZhclN0b3JlSWQgPSAwOyAg ID4+ICAgTDpHZXQtICAiXCgiICsgICJcKCINCj4gdmZyU3RvcmFnZVZhcklkW0luZm8sDQo+ID4g VmFySWRTdHIsIEZBTFNFXSAgICAgICB7Ilx8IiBGTEFHUyAiPSIgbnVtZXJpY1ZhclN0b3JlVHlw ZSBbVmFyVHlwZV0gfS0NCj4gIlwpIg0KPiA+IDw8ICsgICJcKSIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwNCj4gPg0KPiB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkNCj4gZiAoSW5m by5tVmFyU3RvcmVJZCA9PSAwKQ0KPiA+DQo+IHsNCj4gICAvLyBzdXBwb3J0IERhdGUvVGltZSBx dWVzdGlvbkBAIC0NCj4gPiA0NTQ5LDkgKzQ1NzEsOSBAQCBnZXRFeHBbVUlOVDMyICYgUm9vdExl dmVsLCBVSU5UMzIgJiBFeHBPcENvdW50XSA6DQo+ID4NCj4gPiBfUENBVENIKFZGUl9SRVRVUk5f VU5TVVBQT1JURUQsIEwtDQo+ID4gPmdldExpbmUoKSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1 cHBvcnQgZGF0YQ0KPiA+DQo+IGFycmF5Iik7DQo+ICAgICAgICB9DQo+ICAgICAgICB9DQo+ID4g LQ0KPiBDSWZyR2V0IEdPYmooTC0+Z2V0TGluZSgpKTsgLQ0KPiA+IF9TQVZFX09QSERSX0NPTkQg KEdPYmosICgkRXhwT3BDb3VudCA9PSAwKSwgTC0+Z2V0TGluZSgpKTsgLSANCj4gPiBHT2JqLlNl dFZhckluZm8gKCZJbmZvKTsgKw0KPiBDSWZyR2V0IEdPYmooTC0NCj4gPiA+Z2V0TGluZSgpKTsr DQo+IF9TQVZFX09QSERSX0NPTkQgKEdPYmosDQo+ID4gKCRFeHBPcENvdW50ID09IDApLCBMLT5n ZXRMaW5lKCkpOysNCj4gPiBHT2JqLlNldFZhckluZm8gKCZJbmZvKTsNCj4gZGVsZXRlW10gVmFy SWRTdHI7DQo+ID4NCj4gJEV4cE9wQ291bnQrKzsNCj4gICAgICAgICAgICB9QEAgLTQ2MDgsNyAr NDYzMCw3IEBADQo+ID4gcXVlc3Rpb24yM3JlZkV4cFtVSU5UMzIgJiBSb290TGV2ZWwsIFVJTlQz MiAmIEV4cE9wQ291bnRdIDoNCj4gPiAgICAgICAgeyAgICAgICAgIFV1aWQgIj0iIGd1aWREZWZp bml0aW9uW0d1aWRdICIsIg0KPiA8PCBUeXBlID0gMHgzOyA+PiAgICAgICB9LQ0KPiA+IHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJbJFJvb3RMZXZlbCArIDEsICRFeHBPcENvdW50XSArDQo+ID4g dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YlskUm9vdExldmVsICsgMSwgJEV4cE9wQ291bnRdICAg IlwpIg0KPiA+IDw8DQo+IHN3aXRjaCAoVHlwZSkge0BAIC00Njc1LDkgKzQ2OTcsOSBAQA0KPiA+ IHNldEV4cFtVSU5UMzIgJiBSb290TGV2ZWwsIFVJTlQzMiAmIEV4cE9wQ291bnRdIDoNCj4gPiAg ICAiXCgiICAgICAgdmZyU3RvcmFnZVZhcklkW0luZm8sIFZhcklkU3RyLCBGQUxTRV0gICAgICB7 Ilx8IiBGTEFHICI9Ig0KPiA+IG51bWVyaWNWYXJTdG9yZVR5cGUgW1ZhclR5cGVdIH0tICAgICAi LCINCj4gPiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViWyRSb290TGV2ZWwgKyAxLCAkRXhwT3BD b3VudF0gKyAgICAgIiwiDQo+ID4gdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YlskUm9vdExldmVs ICsgMSwgJEV4cE9wQ291bnRdICAgIlwpIi0NCj4gPiA8PCArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8DQo+ID4NCj4geyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpDQo+IGYg KEluZm8ubVZhclN0b3JlSWQgPT0gMCkNCj4gPg0KPiB7DQo+ICAgLy8gc3VwcG9ydCBEYXRlL1Rp bWUgcXVlc3Rpb25AQCAtDQo+ID4gNDcyNCw4ICs0NzQ2LDggQEAgc2V0RXhwW1VJTlQzMiAmIFJv b3RMZXZlbCwgVUlOVDMyICYgRXhwT3BDb3VudF0gOg0KPiA+DQo+ID4gX1BDQVRDSChWRlJfUkVU VVJOX1VOU1VQUE9SVEVELCBMLQ0KPiA+ID5nZXRMaW5lKCksICJHZXQvU2V0IG9wY29kZSBkb24n dCBzdXBwb3J0IGRhdGENCj4gPg0KPiBhcnJheSIpOw0KPiAgICAgICAgfQ0KPiAgICAgICAgfQ0K PiA+IC0NCj4gQ0lmclNldCBUU09iaihMLT5nZXRMaW5lKCkpOyAtDQo+ID4gVFNPYmouU2V0VmFy SW5mbyAoJkluZm8pOyArDQo+IENJZnJTZXQgVFNPYmooTC0NCj4gPiA+Z2V0TGluZSgpKTsrDQo+ IFRTT2JqLlNldFZhckluZm8gKCZJbmZvKTsNCj4gPiBkZWxldGVbXSBWYXJJZFN0cjsNCj4gPg0K PiAkRXhwT3BDb3VudCsrOw0KPiAgICAgICAgICAgIH1AQCAtNDgwOCw5ICs0ODMwLDkgQEANCj4g PiBzcGFuRXhwW1VJTlQzMiAmIFJvb3RMZXZlbCwgVUlOVDMyICYgRXhwT3BDb3VudF0gOg0KPiA+ ICAgIDsgIHZmckV4cHJlc3Npb25NYXAgW1VJTlQzMiAmIFJvb3RMZXZlbCwgVUlOVDMyICYgRXhw T3BDb3VudF06LSANCj4gPiBMOk1hcA0KPiA+IC0gICJcKCIgLSAgdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YlskUm9vdExldmVsICsgMSwgJEV4cE9wQ291bnRdICArDQo+IEw6TWFwKw0KPiA+ICJc KCIrICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViWyRSb290TGV2ZWwgKyAxLCAkRXhwT3BDb3Vu dF0gICAiOiINCj4gPiA8PCB7IENJZnJNYXAgTU9iaihMLT5nZXRMaW5lKCkpOyB9ID4+DQo+ICgg ICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25bMF1AQCAtDQo+ID4gNDgzNyw2ICs0ODU5LDcgQEAg c3BhbkZsYWdzIFtVSU5UOCAmIEZsYWdzXSA6DQo+ID4gIGNsYXNzIEVmaVZmclBhcnNlciB7IDw8 IHByaXZhdGU6KyAgQk9PTEVBTg0KPiBtSXNDYXRjaERlZmF1bHRFbmFibGU7DQo+ID4gVUlOVDgg ICAgICAgICAgICAgICBtUGFyc2VyU3RhdHVzOyAgIEJPT0xFQU4NCj4gbUNvbnN0YW50T25seUlu RXhwcmVzc2lvbjsNCj4gPiBAQCAtNDg4MCw2ICs0OTAzLDcgQEAgcHVibGljOg0KPiA+ICAgIFZP SUQgICAgICAgICAgICAgICAgX1BDQVRDSCAoSU4gRUZJX1ZGUl9SRVRVUk5fQ09ERSwgSU4NCj4g QU5UTFJUb2tlblB0cik7DQo+ID4gVk9JRCAgICAgICAgICAgICAgICBfUENBVENIIChJTiBFRklf VkZSX1JFVFVSTl9DT0RFLCBJTiBVSU5UMzIpOw0KPiBWT0lEDQo+ID4gX1BDQVRDSCAoSU4gRUZJ X1ZGUl9SRVRVUk5fQ09ERSwgSU4gVUlOVDMyLCBJTiBDT05TVCBDSEFSOCAqKTsrDQo+IFZPSUQN Cj4gPiBEZWZhdWx0VmFsdWVFcnJvciAoSU4gRUZJX1ZGUl9SRVRVUk5fQ09ERSwgSU4gVUlOVDMy KTsgICAgVk9JRA0KPiA+IHN5biAgICAgKEFOVExSQWJzdHJhY3RUb2tlbiAgKiwgQU5UTFJDaGFy ICosIFNldFdvcmRUeXBlICosDQo+ID4gQU5UTFJUb2tlblR5cGUsIElOVDMyKTsgQEAgLTQ5MDks NiArNDkzMyw3IEBAIHB1YmxpYzoNCj4gPiAgICBWT0lEICAgICAgICAgICAgICAgIElkRXFJZERv U3BlY2lhbCAgICAgICAoSU4gVUlOVDMyICYsIElODQo+IFVJTlQzMiwgSU4NCj4gPiBFRklfUVVF U1RJT05fSUQsIElOIENIQVI4ICosIElOIFVJTlQzMiwgSU4gRUZJX1FVRVNUSU9OX0lELCBJTg0K PiBDSEFSOCAqLA0KPiA+IElOIFVJTlQzMiwgSU4gRUZJX0NPTVBBUkVfVFlQRSk7ICAgVk9JRA0K PiBJZEVxTGlzdERvU3BlY2lhbCAgICAgKElODQo+ID4gVUlOVDMyICYsIElOIFVJTlQzMiwgSU4g RUZJX1FVRVNUSU9OX0lELCBJTiBDSEFSOCAqLCBJTiBVSU5UMzIsIElODQo+ID4gVUlOVDE2LCBJ TiBVSU5UMTYgKik7ICAgVk9JRCAgICAgICAgICAgICAgICBTZXRPdmVycmlkZUNsYXNzR3VpZA0K PiAoSU4gRUZJX0dVSUQgKik7Kw0KPiA+IFZPSUQgICAgICAgICAgICAgICAgU2V0SXNDYXRjaERl ZmF1bHRFbmFibGUgKEJPT0xFQU4NCj4gSXNDYXRjaERlZmF1bHRFbmFibGUpOyA+PiB9DQo+ID4g QEAgLTUwODYsNiArNTExMSwxNyBAQCBFZmlWZnJQYXJzZXI6Ol9QQ0FUQ0ggKA0KPiA+ICAgIG1Q YXJzZXJTdGF0dXMgPSBtUGFyc2VyU3RhdHVzICsgZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVFcnJv ciANCj4gPiAoUmV0dXJuQ29kZSwgTGluZU51bSwgKENIQVI4ICopIEVycm9yTXNnKTsgfQ0KPiA+ ICtWT0lEK0VmaVZmclBhcnNlcjo6RGVmYXVsdFZhbHVlRXJyb3IgKCsgIElOIEVGSV9WRlJfUkVU VVJOX0NPREUNCj4gPiBSZXR1cm5Db2RlLCsgIElOIFVJTlQzMiAgICAgICAgICAgICAgTGluZU51 bSsgICkreysgIENIQVI4DQo+IEVycm9yTXNnWzEwMF07Kw0KPiA+IHNwcmludGYoRXJyb3JNc2cs ICJwbGVhc2UgcmVtb3ZlIHRoZSBkZWZhdWx0IHZhbHVlIC8gZGVmYXVsdHN0b3JlIGluIA0KPiA+ IGxpbmUgJWQiLCBMaW5lTnVtKTsrICBtUGFyc2VyU3RhdHVzID0gbVBhcnNlclN0YXR1cyArIA0K PiA+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxlRXJyb3IgKFJldHVybkNvZGUsIExpbmVOdW0sIEVy cm9yTXNnKTsrfSsgDQo+ID4gVk9JRA0KPiBFZmlWZnJQYXJzZXI6OnN5bg0KPiA+ICggICBBTlRM UkFic3RyYWN0VG9rZW4gICpUb2ssQEAgLTU2ODIsMTIgKzU3MTgsMTggQEANCj4gPiBFZmlWZnJQ YXJzZXI6OklkRXFMaXN0RG9TcGVjaWFsICgNCj4gPiAgICB9IH0gLVZPSUQgK1ZPSUQgRWZpVmZy UGFyc2VyOjpTZXRPdmVycmlkZUNsYXNzR3VpZCAoSU4gRUZJX0dVSUQNCj4gPiAqT3ZlcnJpZGVD bGFzc0d1aWQpIHsgICBtT3ZlcnJpZGVDbGFzc0d1aWQgPSBPdmVycmlkZUNsYXNzR3VpZDsgfQ0K PiA+ICtWT0lEK0VmaVZmclBhcnNlcjo6U2V0SXNDYXRjaERlZmF1bHRFbmFibGUgKEJPT0xFQU4N Cj4gPiBJc0NhdGNoRGVmYXVsdEVuYWJsZSkreysgIG1Jc0NhdGNoRGVmYXVsdEVuYWJsZSA9DQo+ IElzQ2F0Y2hEZWZhdWx0RW5hYmxlOyt9Kw0KPiA+IFZPSUQgRWZpVmZyUGFyc2VyOjpDaGVja0R1 cGxpY2F0ZURlZmF1bHRWYWx1ZSAoICAgSU4gRUZJX0RFRkFVTFRfSUQNCj4gPiBEZWZhdWx0SWQs LS0NCj4gPiAyLjI2LjIud2luZG93cy4xDQoNCg0KDQoNCg0KCi09LT0tPS09LT0tPS09LT0tPS09 LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhp cyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMTM3NjQpOiBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvbWVzc2FnZS8xMTM3NjQKTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vw cy5pby9tdC8xMDMxMjY4NzMvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5n cm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC91bnN1 YiBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09LT0tCgoNCg==