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 033E0941B7D for ; Thu, 24 Aug 2023 19:02:53 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=K3t1ZgMOeWvWiYuJ3Y+j7Z5k/Vhrh/OWfjZ3zu+0c+4=; c=relaxed/simple; d=groups.io; h=Received-SPF: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:Authentication-Results-Original:nodisclaimer:MIME-Version:Original-Authentication-Results: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=1692903772; v=1; b=leV6Rwn/QfeXeIh81piNFfzUPURzI9QScireGMTbMAE0ZXXEfe+7sTMmGgQoZ/+92QNBT6VI w977OOFUz9N+oiiEEoX7VOL/T2zEV3Pb8DqjLg2OcueomjIsY0RtiyY0FioWIMeiVSoNTyRkJqb OO4ET7pV/c+eML5r40SpA0LU= X-Received: by 127.0.0.2 with SMTP id 73B0YY7687511xrIKJFX0RBN; Thu, 24 Aug 2023 12:02:52 -0700 X-Received: from EUR01-DB5-obe.outbound.protection.outlook.com (EUR01-DB5-obe.outbound.protection.outlook.com [40.107.15.85]) by mx.groups.io with SMTP id smtpd.web10.300.1692903770576867095 for ; Thu, 24 Aug 2023 12:02:51 -0700 X-Received: from DUZPR01CA0286.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::12) by AM9PR08MB6706.eurprd08.prod.outlook.com (2603:10a6:20b:303::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.29; Thu, 24 Aug 2023 19:02:45 +0000 X-Received: from DBAEUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:4b7:cafe::57) by DUZPR01CA0286.outlook.office365.com (2603:10a6:10:4b7::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.27 via Frontend Transport; Thu, 24 Aug 2023 19:02:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C X-Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT039.mail.protection.outlook.com (100.127.142.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6723.17 via Frontend Transport; Thu, 24 Aug 2023 19:02:45 +0000 X-Received: ("Tessian outbound b5a0f4347031:v175"); Thu, 24 Aug 2023 19:02:45 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: eac5b3875b68b4ff X-CR-MTA-TID: 64aa7808 X-Received: from 12307ce0f129.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 372B82F5-8BD2-4A34-B77B-3CB1A5869523.1; Thu, 24 Aug 2023 19:02:33 +0000 X-Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 12307ce0f129.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 24 Aug 2023 19:02:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SELvpmRMfBnnSXv6hHz4WMoeenM3KM1f41vV87dcik+mXMTwBqvGszSvs/GYlLvzMmKOQvVykeiKwnmG72M7+zImNFwdlERXQMngBcJJtitQvwSA4zhZK3EQZB2x36lju2SW2JdA6KPzMCvfh1LXnVfE0pyrwQyYJ+1NguFec9K1YF17hXmDP7v+7ULyGNJwn6zQF4vQRuP8OBQ1UEt3AjKWiFLFTGCuBKEHw59gKLfFLRwNsyXqVxzLJJWT+w7kl9Lvp/ShKrjoqZhSAJzrGsp0C+QY5EKB9pxhuuLu/SvHlJS6uF0UbtzpxiVTkM0xgtb88HZq7kyjfoVMfOzEug== 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=qk37fTB0gKLoaAaN/AP66RTCXARwcdvhlWu6ou+/gZk=; b=jRDWwZMhhHchOmPRVEt3vG2aO/hpPShVQ+m00TUjrdpIM2La7/mpdA6Ado/3YtVXDu2hzNRewRfMGsQi9cXZRZha+c4QE78yCilkUu1hgNM6wcQsv615jWHkPr7s0WasN7As8aD/WWJTI2Jb3hTM9EOkHzp0G+tHpdTPneQvhdvj0P9U8uYj25bdcPAji8Bg9r8yggPTWSBaToCe3ffCjDE+iWbOsaVQteLxigk9tdqJ2c5bAAA7jJhLoef2ZdgONoHLJTmVGcAN2q7KXq6o29xpyucM0BShO8YYbytNKLCRck1xEM9N89TtnQlSjoyb4YmCk2lXkz/nRA4n0nLQ+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none X-Received: from DBBPR08MB6012.eurprd08.prod.outlook.com (2603:10a6:10:205::9) by VI1PR08MB5312.eurprd08.prod.outlook.com (2603:10a6:803:139::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.25; Thu, 24 Aug 2023 19:02:29 +0000 X-Received: from DBBPR08MB6012.eurprd08.prod.outlook.com ([fe80::c7de:7a71:8ff6:7e25]) by DBBPR08MB6012.eurprd08.prod.outlook.com ([fe80::c7de:7a71:8ff6:7e25%5]) with mapi id 15.20.6699.027; Thu, 24 Aug 2023 19:02:29 +0000 From: "Jose Marinho" To: "devel@edk2.groups.io" , "gmahadevan@nvidia.com" , Sami Mujawar CC: Alexei Fedorov , Pierre Gondois , "Jeff Brasen (jbrasen@nvidia.com)" , "ashishsingha@nvidia.com" , "nramirez@nvidia.com" , nd Subject: Re: [edk2-devel] [PATCH v3 1/5] DynamicTablesPkg: Add SMBIOS table generation Thread-Topic: [edk2-devel] [PATCH v3 1/5] DynamicTablesPkg: Add SMBIOS table generation Thread-Index: AQHZv1FNq47VchfvUEifpPqlcPyJ5q/5wnQA Date: Thu, 24 Aug 2023 19:02:28 +0000 Message-ID: References: <20230725233805.646668-1-gmahadevan@nvidia.com> <20230725233805.646668-2-gmahadevan@nvidia.com> In-Reply-To: <20230725233805.646668-2-gmahadevan@nvidia.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: DBBPR08MB6012:EE_|VI1PR08MB5312:EE_|DBAEUR03FT039:EE_|AM9PR08MB6706:EE_ X-MS-Office365-Filtering-Correlation-Id: c0a7bc41-e9b1-4488-a514-08dba4d4b376 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ZZMIixCN/xzOwPA/kmwu6YDc8HGF3hK6lUE5TQe6RuWDo2+jiX2mk1G6d8ej5n3xBKpC0hp3hwdP8aEUJCkftdftadsr3PuGGli6Ol7CIxFDcO15k8pRMmQ1+orRXzHFeEIz1d7v87zu/ynLgM6Rm+NzJ8XuwRStdzySoJRXkyIDXznakUY/1x2gi4p71UAIoblW9LNTgCeTGe6ARnFqW5OI3YIZBW4jY/LlMnOHdOc8Z3G6vwiTDMZQFbG+1BoCSXBeb082RYcwcY5GxJJJogh7pSlF0ST7prRS3ir19cM9VhCVaZSX5cwThkfDJAc6vvy5/FDHyXObJ/q4/9ccbN5mkpSbVubtxmScN2ayVBaFL9ytrVvziNJAqiB25AtjJ3lJEq5OgEMILSJDckXvpSYtFRqCQ+23ATb1gVVxwSD7d++eZ8Hb4GCbbK9IhPjwdzUJRkxK59Yw5d7w1ZcZnPLRLqkNWFne6e6YKLI3+SQMnjrr8JS1kLWuaeIHXxhwjOKXRJtk36M1rE7xjYnCcOhKT8RzM1c4081+ivF2ZNhHTtwFqEDCHbyNKiC8k6W/SaJlwx9F9TYJNTXnEdT3mxor4zDfNfVamL1malaSvCc= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBBPR08MB6012.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(396003)(136003)(366004)(376002)(39860400002)(451199024)(1800799009)(186009)(478600001)(966005)(33656002)(86362001)(6636002)(54906003)(6506007)(66476007)(66556008)(7696005)(316002)(71200400001)(64756008)(76116006)(66946007)(110136005)(53546011)(41300700001)(9686003)(38100700002)(8676002)(38070700005)(4326008)(8936002)(122000001)(52536014)(5660300002)(26005)(30864003)(83380400001)(66446008)(66899024)(2906002)(55016003)(579004)(559001);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5312 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 23b294c8-5af9-45b0-a9a7-08dba4d4a99c X-Microsoft-Antispam-Message-Info: 91V834R5ZEcJTsUYHQGaaCl3L0s1xajiAzFnvzpX5Tvl/nLh7yPSH54KsSVF573sq3fYx03Z10ccSmJYSj/Z+G51A11KzUF+5dYMwLiX/60EmgFYW+ZO/JTMz9hcb27nh6pzhzwRdXsQG200QzOSSLtiUCI4qB6bwBR93DSJkwt7SM6jhh7TBrAatUxnVqJlma6khGA06Kn9EKUh5AEkGlHGqcXpigtL5TXgYe9XhLXcCu1HpjjrnunE8jlG2k/zl6leNVgNDwgEnddknkuczMpFRG0W/mkErd2ewa2CTJh3n0Wd2vu/Ggi1UY28yzU+YvNfU9Zcqbl16T2dqdaur6FCRHifuXhQheTTugB0z/KKTgCsVCTDJn974E6M3urcxh0jx4E0RoC35eONr9UbYwCzqjXyxknlddDlfbdg6dCSRHWswEGEP22LG4TQdmGgMhjJZI5gS6UonXW1E/Kjm3IdZku5Mu0cpkR614SBpd54my7ANuUcd2DIYMzx0e+EvMOpcGaPBrjWajsydVG4HRhlKrCC4AckxGCd7qDZwqhRYd1BgA73w8eDplw3jl+xQEKhkT1Irq6zObI1wWhuSgbqIq9zlH2o5T/f8oP8/NLl8n1Vs+IhGhcsFEuQ799UDa8zdAQpNxE6D8WZS8KX0LekQC7jqfseX95ZNOLi7nb/o00SZpMz0KQra8CsrcrA1GsXGZLTqmbk6tJGGW+lMFCVLqg55yJRgu0+yCiJFl0= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2023 19:02:45.3663 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c0a7bc41-e9b1-4488-a514-08dba4d4b376 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6706 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,jose.marinho@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 6fbc1Oo9n63Z6KVNrtKnMd6jx7686176AA= 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="leV6Rwn/"; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SGksDQoNCkkgaGF2ZSBhIGNvdXBsZSBvZiBtaW5vciBjb21tZW50cy4NCg0KcmV2aWV3ZWQtYnk6 IEpvc2UgTWFyaW5obyA8am9zZS5tYXJpbmhvQGFybS5jb20+DQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiBPbiBCZWhhbGYgT2YgR2lyaXNoDQo+IE1haGFkZXZhbiB2aWEgZ3JvdXBzLmlvDQo+ IFNlbnQ6IFdlZG5lc2RheSwgSnVseSAyNiwgMjAyMyAxMjozOCBBTQ0KPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW87IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFybS5jb20+DQo+IENjOiBn bWFoYWRldmFuQG52aWRpYS5jb207IEFsZXhlaSBGZWRvcm92IDxBbGV4ZWkuRmVkb3JvdkBhcm0u Y29tPjsNCj4gUGllcnJlIEdvbmRvaXMgPFBpZXJyZS5Hb25kb2lzQGFybS5jb20+OyBKZWZmIEJy YXNlbiAoamJyYXNlbkBudmlkaWEuY29tKQ0KPiA8amJyYXNlbkBudmlkaWEuY29tPjsgYXNoaXNo c2luZ2hhQG52aWRpYS5jb207IG5yYW1pcmV6QG52aWRpYS5jb20NCj4gU3ViamVjdDogW2VkazIt ZGV2ZWxdIFtQQVRDSCB2MyAxLzVdIER5bmFtaWNUYWJsZXNQa2c6IEFkZCBTTUJJT1MgdGFibGUN Cj4gZ2VuZXJhdGlvbg0KPiANCj4gQWRkIHRoZSBTTUJJT1MgVGFibGUgZ2VuZXJhdG9yIGNvZGUg dG8gdGhlIER5bmFtaWNUYWJsZXNQa2cuDQo+IA0KPiBUaGlzIGNoYW5nZSBpbmNsdWRlcyBhZGRp bmcgbmV3IGxvZ2ljIHRvIHRoZSBEeW5hbWljVGFibGVNYW5hZ2VyIHRvDQo+IHByb2Nlc3MgYW5k IGFkZCBTTUJJT1MgdGFibGVzIGFuZCBhdWdtZW50aW5nIHRoZSBleGlzdGluZyBTTUJJT1MgRmFj dG9yeQ0KPiBnZW5lcmF0b3IgdG8gaW5jbHVkZSBpbnN0YWxsaW5nIG11bHRpcGxlIFNNQklPUyB0 YWJsZXMgLg0KPiBBbHNvIGluY2x1ZGVkIGlzIHJ1bm5pbmcgdGhlIFNNQklPUyBhbmQgQUNQSSB0 YWJsZSBnZW5lcmF0aW9uIGFzIHBhcnQgb2YgdGhlDQo+IFNNQklPUyBhbmQgQUNQSSBwcm90b2Nv bCBHVUlEIGNhbGxiYWNrIG5vdGlmaWNhdGlvbnMgcmVzcGVjdGl2ZWx5Lg0KPiANCj4gQ2hhbmdl LUlkOiBJY2MwOTAxMDhjMTZlODc2NTcyNjBhZjZkYWY4NTZmM2Q2OWI2MDJlMw0KPiBTaWduZWQt b2ZmLWJ5OiBHaXJpc2ggTWFoYWRldmFuIDxnbWFoYWRldmFuQG52aWRpYS5jb20+DQo+IFJldmll d2VkLWJ5OiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiAtLS0NCj4gIC4uLi9E eW5hbWljVGFibGVGYWN0b3J5LmggICAgICAgICAgICAgICAgICAgICB8ICAgNSArDQo+ICAuLi4v RHluYW1pY1RhYmxlRmFjdG9yeUR4ZS5jICAgICAgICAgICAgICAgICAgfCAgMTAgKw0KPiAgLi4u L1NtYmlvc1RhYmxlRmFjdG9yeS9TbWJpb3NUYWJsZUZhY3RvcnkuYyAgIHwgMTA4ICsrKw0KPiAg Li4uL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUuYyAgICAgICAgICAgICAgICAgIHwgNjc3ICsrKysr KysrKysrKysrKysrLQ0KPiAgLi4uL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUuaW5mICAgICAgICAg ICAgICAgIHwgICAzICstDQo+ICAuLi4vUHJvdG9jb2wvRHluYW1pY1RhYmxlRmFjdG9yeVByb3Rv Y29sLmggICAgfCAgMTAgKw0KPiAgLi4uL0luY2x1ZGUvU21iaW9zVGFibGVHZW5lcmF0b3IuaCAg ICAgICAgICAgIHwgMjA0ICsrKysrLQ0KPiAgTWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy ZC9TbUJpb3MuaCAgICAgIHwgICA4ICsNCj4gIDggZmlsZXMgY2hhbmdlZCwgOTk0IGluc2VydGlv bnMoKyksIDMxIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdA0KPiBhL0R5bmFtaWNUYWJs ZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVGYWN0b3J5RHhlL0R5bmFtaWNUYWJsZUZhY3Rvcnku aA0KPiBiL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVGYWN0b3J5RHhlL0R5 bmFtaWNUYWJsZUZhY3RvcnkuDQo+IGgNCj4gaW5kZXggYjE2MGRjZjhhZC4uMjBlNDM4ZWE3MCAx MDA2NDQNCj4gLS0tDQo+IGEvRHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZUZh Y3RvcnlEeGUvRHluYW1pY1RhYmxlRmFjdG9yeS5oDQo+ICsrKw0KPiBiL0R5bmFtaWNUYWJsZXNQ a2cvRHJpdmVycy9EeW5hbWljVGFibGVGYWN0b3J5RHhlL0R5bmFtaWNUYWJsZUZhY3Rvcg0KPiAr KysgeS5oDQo+IEBAIC00OSw2ICs0OSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBEeW5hbWljVGFibGVG YWN0b3J5SW5mbyB7DQo+ICAgICAgICAgIEN1c3RvbUR0VGFibGVHZW5lcmF0b3JMaXN0W0ZpeGVk UGNkR2V0MTYgKA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGNkTWF4Q3Vz dG9tRFRHZW5lcmF0b3JzDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXTsN Cj4gKw0KPiArICAvLy8gQW4gYXJyYXkgZm9yIGhvbGRpbmcgYSBtYXAgb2YgU01CSU9TIGhhbmRs ZXMgYW5kIHRoZSBDTSBPYmplY3QNCj4gKyAvLy8gdG9rZW4gdXNlZCB0byBidWlsZCB0aGUgU01C SU9TIHJlY29yZC4NCj4gKyAgU01CSU9TX0hBTkRMRV9NQVANCj4gKyAgICAgICAgU21iaW9zSGFu ZGxlTWFwW01BWF9TTUJJT1NfSEFORExFU107DQo+ICB9IEVES0lJX0RZTkFNSUNfVEFCTEVfRkFD VE9SWV9JTkZPOw0KPiANCj4gIC8qKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxl IGdlbmVyYXRvci4NCj4gZGlmZiAtLWdpdA0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9E eW5hbWljVGFibGVGYWN0b3J5RHhlL0R5bmFtaWNUYWJsZUZhY3RvcnlEDQo+IHhlLmMNCj4gYi9E eW5hbWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlRmFjdG9yeUR4ZS9EeW5hbWljVGFi bGVGYWN0b3J5RA0KPiB4ZS5jDQo+IGluZGV4IDZkNmQzZmE3NDYuLjU3N2NkYjU3NmUgMTAwNjQ0 DQo+IC0tLQ0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVGYWN0b3J5 RHhlL0R5bmFtaWNUYWJsZUZhY3RvcnlEDQo+IHhlLmMNCj4gKysrDQo+IGIvRHluYW1pY1RhYmxl c1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZUZhY3RvcnlEeGUvRHluYW1pY1RhYmxlRmFjdG9yDQo+ ICsrKyB5RHhlLmMNCj4gQEAgLTEsNiArMSw3IEBADQo+ICAvKiogQGZpbGUNCj4gICAgRHluYW1p YyBUYWJsZSBGYWN0b3J5IER4ZQ0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBOVklESUEg Q09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgICBDb3B5 cmlnaHQgKGMpIDIwMTcgLSAyMDE5LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gDQo+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50IEBA IC00NCw2ICs0NSw5IEBADQo+IEVES0lJX0RZTkFNSUNfVEFCTEVfRkFDVE9SWV9QUk9UT0NPTCAg RHluYW1pY1RhYmxlRmFjdG9yeVByb3RvY29sID0NCj4gew0KPiAgICBHZXREdFRhYmxlR2VuZXJh dG9yLA0KPiAgICBSZWdpc3RlckR0VGFibGVHZW5lcmF0b3IsDQo+ICAgIERlcmVnaXN0ZXJEdFRh YmxlR2VuZXJhdG9yLA0KPiArICBBZGRTbWJpb3NIYW5kbGUsDQo+ICsgIEZpbmRTbWJpb3NIYW5k bGUsDQo+ICsgIEZpbmRTbWJpb3NIYW5kbGVFeCwNCj4gICAgJlRhYmxlRmFjdG9yeUluZm8NCj4g IH07DQo+IA0KPiBAQCAtNjUsNiArNjksMTIgQEAgRHluYW1pY1RhYmxlRmFjdG9yeUR4ZUluaXRp YWxpemUgKA0KPiAgICApDQo+ICB7DQo+ICAgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gKyAgVUlO VE4gICAgICAgSWR4Ow0KPiArDQo+ICsgIGZvciAoSWR4ID0gMDsgSWR4IDwgTUFYX1NNQklPU19I QU5ETEVTOyBJZHgrKykgew0KPiArICAgIFRhYmxlRmFjdG9yeUluZm8uU21iaW9zSGFuZGxlTWFw W0lkeF0uU21iaW9zVGJsSGFuZGxlID0NCj4gU01CSU9TX0hBTkRMRV9QSV9SRVNFUlZFRDsNCj4g KyAgICBUYWJsZUZhY3RvcnlJbmZvLlNtYmlvc0hhbmRsZU1hcFtJZHhdLlNtYmlvc0NtVG9rZW4g ICA9IDA7DQo+ICsgIH0NCj4gDQo+ICAgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbFByb3RvY29sSW50 ZXJmYWNlICgNCj4gICAgICAgICAgICAgICAgICAgICZJbWFnZUhhbmRsZSwNCj4gZGlmZiAtLWdp dA0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVGYWN0b3J5RHhlL1Nt Ymlvc1RhYmxlRmFjdG9yeS9TDQo+IG1iaW9zVGFibGVGYWN0b3J5LmMNCj4gYi9EeW5hbWljVGFi bGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlRmFjdG9yeUR4ZS9TbWJpb3NUYWJsZUZhY3Rvcnkv Uw0KPiBtYmlvc1RhYmxlRmFjdG9yeS5jDQo+IGluZGV4IDg3Nzk1OTE5ZjguLmI5MjhjMjhhMTQg MTAwNjQ0DQo+IC0tLQ0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVG YWN0b3J5RHhlL1NtYmlvc1RhYmxlRmFjdG9yeS9TDQo+IG1iaW9zVGFibGVGYWN0b3J5LmMNCj4g KysrDQo+IGIvRHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZUZhY3RvcnlEeGUv U21iaW9zVGFibGVGYWN0b3J5DQo+ICsrKyAvU21iaW9zVGFibGVGYWN0b3J5LmMNCj4gQEAgLTEs NiArMSw3IEBADQo+ICAvKiogQGZpbGUNCj4gICAgU01CSU9TIFRhYmxlIEZhY3RvcnkNCj4gDQo+ ICsgIENvcHlyaWdodCAoYykgMjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRFUy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gICAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOSwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IA0KPiAgICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCBAQCAtMTIsNiArMTMsNyBAQCAgI2luY2x1ZGUN Cj4gPEluZHVzdHJ5U3RhbmRhcmQvU21CaW9zLmg+ICAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGli Lmg+ICAjaW5jbHVkZQ0KPiA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ICAjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KPiANCj4gIC8vIE1vZHVsZSBzcGVjaWZpYyBpbmNsdWRlIGZpbGVzLg0KPiBAQCAt MjQsNiArMjYsNzEgQEANCj4gDQo+ICBleHRlcm4gRURLSUlfRFlOQU1JQ19UQUJMRV9GQUNUT1JZ X0lORk8gIFRhYmxlRmFjdG9yeUluZm87DQo+IA0KPiArLyoqIEFkZCBhIG5ldyBlbnRyeSB0byB0 aGUgU01CSU9TIHRhYmxlIE1hcC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgU21iaW9zICAgICAg ICAgU01CSU9TIFByb3RvY29sIHBvaW50ZXIuDQo+ICsgIEBwYXJhbSBbaW5dICBTbWJpb3NIYW5k bGUgICBTTUJJT1MgSGFuZGxlIHRvIGJlIGFkZGVkLCBpZiB0aGUgdmFsdWUNCj4gU01CSU9TX0hB TkRMRV9QSV9SRVNFUlZFRA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcGFz c2VkIHRoZW4gYSBuZXcgU21iaW9zSGFuZGxlIGlzIGFzc2lnbmVkLg0KPiArICBAcGFyYW0gW2lu XSAgQ21PYmplY3RUb2tlbiAgQ21PYmplY3RUb2tlbiBvZiB0aGUgQ01fT0JKRUNUIHVzZWQgdG8N Cj4gYnVpbGQgdGhlIFNNQklPUyBUYWJsZQ0KPiArICBAcGFyYW0gW2luXSAgR2VuZXJhdG9ySWQg ICAgU21iaW9zIFRhYmxlIEdlbmVyYXRvciBJZC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgICAgU3VjY2Vzc2Z1bGx5IGFkZGVkL2dlbmVyYXRlZCB0aGUgaGFuZGxl Lg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTTlVMTCAgRmFpbHVyZSB0byBhZGQv Z2VuZXJhdGUgdGhlIGhhbmRsZS4NCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ ICtBZGRTbWJpb3NIYW5kbGUgKA0KPiArICBJTiBFRklfU01CSU9TX1BST1RPQ09MICAgICAgICAg KlNtYmlvcywNCj4gKyAgSU4gU01CSU9TX0hBTkRMRSAgICAgICAgICAgICAgICpTbWJpb3NIYW5k bGUsDQo+ICsgIElOIENNX09CSkVDVF9UT0tFTiAgICAgICAgICAgICBDbU9iamVjdFRva2VuLA0K PiArICBJTiAgU01CSU9TX1RBQkxFX0dFTkVSQVRPUl9JRCAgR2VuZXJhdG9ySWQNCj4gKyAgKQ0K PiArew0KPiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ICsgIFVJTlROICAgICAgIEluZGV4Ow0K DQpuaXQ6IERvZXMgaXQgbWFrZSBzZW5zZSB0byBuYW1lIGluZGV4IHZhcmlhYmxlcyBpbiBhIGNv aGVyZW50IHdheT8gWW91IHVzZWQgIklkeCIgYWJvdmUuDQoNCj4gKw0KPiArICBTdGF0dXMgPSBF RklfT1VUX09GX1JFU09VUkNFUzsNCj4gKw0KPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBN QVhfU01CSU9TX0hBTkRMRVM7IEluZGV4KyspIHsNCj4gKyAgICBpZiAoVGFibGVGYWN0b3J5SW5m by5TbWJpb3NIYW5kbGVNYXBbSW5kZXhdLlNtYmlvc1RibEhhbmRsZSA9PQ0KPiBTTUJJT1NfSEFO RExFX1BJX1JFU0VSVkVEKSB7DQo+ICsgICAgICBUYWJsZUZhY3RvcnlJbmZvLlNtYmlvc0hhbmRs ZU1hcFtJbmRleF0uU21iaW9zVGJsSGFuZGxlICAgPQ0KPiAqU21iaW9zSGFuZGxlOw0KPiArICAg ICAgVGFibGVGYWN0b3J5SW5mby5TbWJpb3NIYW5kbGVNYXBbSW5kZXhdLlNtYmlvc0NtVG9rZW4g ICAgID0NCj4gQ21PYmplY3RUb2tlbjsNCj4gKyAgICAgIFRhYmxlRmFjdG9yeUluZm8uU21iaW9z SGFuZGxlTWFwW0luZGV4XS5TbWJpb3NHZW5lcmF0b3JJZCA9DQo+IEdlbmVyYXRvcklkOw0KPiAr ICAgICAgU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID0gRUZJX1NVQ0NFU1M7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgIH0N Cj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKiogUmV0dXJuIGEgcG9p bnRlciB0byB0aGUgU01CSU9TIHRhYmxlIE1hcC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgR2Vu ZXJhdG9ySWQgIFRoZSBDbU9iamVjdFRva2VuIHRvIGxvb2sgdXAgYW4gU01CSU9TDQo+IEhhbmRs ZS4NCj4gKw0KPiArICBAcmV0dmFsIFNNQklPU19IQU5ETEVfTUFQIGlmIHRoZSBDbU9iamVjdFRv a2VuIGlzIGZvdW5kLg0KPiArICBAcmV0dmFsIE5VTEwgaWYgbm90IGZvdW5kLg0KPiArKiovDQo+ ICtTTUJJT1NfSEFORExFX01BUCAqDQo+ICtFRklBUEkNCj4gK0ZpbmRTbWJpb3NIYW5kbGUgKA0K PiArICBDTV9PQkpFQ1RfVE9LRU4gIENtT2JqZWN0VG9rZW4NCj4gKyAgKQ0KPiArew0KPiArICBV SU5UTiAgICAgICAgICAgICAgSW5kZXg7DQo+ICsgIFNNQklPU19IQU5ETEVfTUFQICAqU21iaW9z SGFuZGxlTWFwOw0KPiArDQo+ICsgIFNtYmlvc0hhbmRsZU1hcCA9IE5VTEw7DQo+ICsgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IE1BWF9TTUJJT1NfSEFORExFUzsgSW5kZXgrKykgew0KPiArICAg IGlmIChUYWJsZUZhY3RvcnlJbmZvLlNtYmlvc0hhbmRsZU1hcFtJbmRleF0uU21iaW9zQ21Ub2tl biA9PQ0KPiBDbU9iamVjdFRva2VuKSB7DQo+ICsgICAgICBTbWJpb3NIYW5kbGVNYXAgPSAmVGFi bGVGYWN0b3J5SW5mby5TbWJpb3NIYW5kbGVNYXBbSW5kZXhdOw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFNtYmlvc0hhbmRsZU1hcDsNCj4gK30N Cj4gKw0KPiAgLyoqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIFNNQklPUyB0YWJsZSBnZW5lcmF0 b3IuDQo+IA0KPiAgICBAcGFyYW0gW2luXSAgVGhpcyAgICAgICAgIFBvaW50ZXIgdG8gdGhlIER5 bmFtaWMgVGFibGUgRmFjdG9yeSBQcm90b2NvbC4NCj4gQEAgLTIyOSwzICsyOTYsNDQgQEAgRGVy ZWdpc3RlclNtYmlvc1RhYmxlR2VuZXJhdG9yICgNCj4gICAgREVCVUcgKChERUJVR19JTkZPLCAi RGVyZWdpc3RlcmluZyAlc1xuIiwgR2VuZXJhdG9yLT5EZXNjcmlwdGlvbikpOw0KPiAgICByZXR1 cm4gRUZJX1NVQ0NFU1M7DQo+ICB9DQo+ICsNCj4gKy8qKiBGaW5kIGFuZCByZXR1cm4gU01CSU9T IGhhbmRsZSBiYXNlZCBvbiBhc3NvY2lhdGVkIENNIG9iamVjdCB0b2tlbi4NCj4gKw0KPiArICBA cGFyYW0gW2luXSAgR2VuZXJhdG9ySWQgICAgIFNNQklPUyBnZW5lcmF0b3IgSUQgdXNlZCB0byBi dWlsZCB0aGUgU01CSU9TDQo+IFRhYmxlLg0KPiArICBAcGFyYW0gW2luXSAgQ21PYmplY3RUb2tl biAgIFRva2VuIG9mIHRoZSBDTV9PQkpFQ1QgdXNlZCB0byBidWlsZCB0aGUNCj4gU01CSU9TIFRh YmxlLg0KPiArDQo+ICsgIEByZXR1cm4gIFNNQklPUyBoYW5kbGUgb2YgdGhlIHRhYmxlIGFzc29j aWF0ZWQgd2l0aCBTbWJpb3NHZW5lcmF0b3JJZA0KPiBhbmQNCj4gKyAgICAgICAgICAgQ21PYmpl Y3RUb2tlbiBpZiBmb3VuZC4gT3RoZXJ3aXNlLCByZXR1cm5zIDB4RkZGRi4NCj4gKyoqLw0KPiAr VUlOVDE2DQo+ICtFRklBUEkNCj4gK0ZpbmRTbWJpb3NIYW5kbGVFeCAoDQo+ICsgIElOICBTTUJJ T1NfVEFCTEVfR0VORVJBVE9SX0lEICBHZW5lcmF0b3JJZCwNCj4gKyAgSU4gIENNX09CSkVDVF9U T0tFTiAgICAgICAgICAgIENtT2JqVG9rZW4NCj4gKyAgKQ0KPiArew0KPiArICBTTUJJT1NfSEFO RExFX01BUCAgKkhhbmRsZU1hcDsNCj4gKw0KPiArICBpZiAoQ21PYmpUb2tlbiA9PSBDTV9OVUxM X1RPS0VOKSB7DQo+ICsgICAgcmV0dXJuIFNNQklPU19IQU5ETEVfSU5WQUxJRDsNCj4gKyAgfQ0K PiArDQo+ICsgIEhhbmRsZU1hcCA9IEZpbmRTbWJpb3NIYW5kbGUgKENtT2JqVG9rZW4pOyAgaWYg KEhhbmRsZU1hcCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuIFNNQklPU19IQU5ETEVfSU5WQUxJ RDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChIYW5kbGVNYXAtPlNtYmlvc0dlbmVyYXRvcklkICE9 IEdlbmVyYXRvcklkKSB7DQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0K PiArICAgICAgIiVhOiBFeHBlY3QgSUQgJWQgYnV0IGdldCAlZFxuIiwNCj4gKyAgICAgIF9fRlVO Q1RJT05fXywNCj4gKyAgICAgIEdlbmVyYXRvcklkLA0KPiArICAgICAgSGFuZGxlTWFwLT5TbWJp b3NHZW5lcmF0b3JJZA0KPiArICAgICAgKSk7DQo+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ICsg ICAgcmV0dXJuIFNNQklPU19IQU5ETEVfSU5WQUxJRDsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVy biBIYW5kbGVNYXAtPlNtYmlvc1RibEhhbmRsZTsNCj4gK30NCj4gZGlmZiAtLWdpdA0KPiBhL0R5 bmFtaWNUYWJsZXNQa2cvRHJpdmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJs ZU1hbmFnDQo+IGVyRHhlLmMNCj4gYi9EeW5hbWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1Rh YmxlTWFuYWdlckR4ZS9EeW5hbWljVGFibGVNYW5hZw0KPiBlckR4ZS5jDQo+IGluZGV4IDFlOWI4 MTFjNDAuLjI2YWE5YjU1Y2YgMTAwNjQ0DQo+IC0tLQ0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvRHJp dmVycy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1hbmFnDQo+IGVyRHhlLmMN Cj4gKysrDQo+IGIvRHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJE eGUvRHluYW1pY1RhYmxlTWFuYWcNCj4gZQ0KPiArKysgckR4ZS5jDQo+IEBAIC04LDEwICs4LDEz IEBADQo+ICAqKi8NCj4gDQo+ICAjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiAgI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+ DQo+ICAjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gICNp bmNsdWRlIDxQcm90b2NvbC9BY3BpU3lzdGVtRGVzY3JpcHRpb25UYWJsZS5oPg0KPiAgI2luY2x1 ZGUgPFByb3RvY29sL0FjcGlUYWJsZS5oPg0KPiArI2luY2x1ZGUgPFByb3RvY29sL1NtYmlvcy5o Pg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiANCj4gIC8vIE1vZHVs ZSBzcGVjaWZpYyBpbmNsdWRlIGZpbGVzLg0KPiAgI2luY2x1ZGUgPEFjcGlUYWJsZUdlbmVyYXRv ci5oPg0KPiBAQCAtMjIsNiArMjUsNyBAQA0KPiAgI2luY2x1ZGUgPFByb3RvY29sL0NvbmZpZ3Vy YXRpb25NYW5hZ2VyUHJvdG9jb2wuaD4NCj4gICNpbmNsdWRlIDxQcm90b2NvbC9EeW5hbWljVGFi bGVGYWN0b3J5UHJvdG9jb2wuaD4NCj4gICNpbmNsdWRlIDxTbWJpb3NUYWJsZUdlbmVyYXRvci5o Pg0KPiArI2luY2x1ZGUgPFNtYmlvc1RhYmxlRGlzcGF0Y2hlci5oPg0KPiANCj4gIC8vLw0KPiAg Ly8vIEJpdCBkZWZpbml0aW9ucyBmb3IgYWNjZXB0YWJsZSBBQ1BJIHRhYmxlIHByZXNlbmNlIGZv cm1hdHMuDQo+IEBAIC04NCw2ICs4OCwxOCBAQCBHRVRfT0JKRUNUX0xJU1QgKA0KPiAgICBDTV9T VERfT0JKX0FDUElfVEFCTEVfSU5GTw0KPiAgICApDQo+IA0KPiArLyoqIFRoaXMgbWFjcm8gZXhw YW5kcyB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0cmlldmVzIHRoZSBTTUJJT1MgVGFibGUNCj4gKyAg ICBMaXN0IGZyb20gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlci4NCj4gKyovDQo+ICtHRVRfT0JK RUNUX0xJU1QgKA0KPiArICBFT2JqTmFtZVNwYWNlU3RhbmRhcmQsDQo+ICsgIEVTdGRPYmpTbWJp b3NUYWJsZUxpc3QsDQo+ICsgIENNX1NURF9PQkpfU01CSU9TX1RBQkxFX0lORk8NCj4gKyAgKQ0K PiArDQo+ICtTVEFUSUMgVk9JRCAqQWNwaVRhYmxlUHJvdG9jb2xSZWdpc3RyYXRpb247IFNUQVRJ QyBWT0lEDQo+ICsqU21iaW9zUHJvdG9jb2xSZWdpc3RyYXRpb247DQo+ICsNCj4gIC8qKiBBIGhl bHBlciBmdW5jdGlvbiB0byBidWlsZCBhbmQgaW5zdGFsbCBhIHNpbmdsZSBBQ1BJIHRhYmxlLg0K PiANCj4gICAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIFRhYmxl IGdlbmVyYXRvciBpbnRlcmZhY2UgQEAgLQ0KPiA1MzAsNiArNTQ2LDQ5MCBAQCBWZXJpZnlNYW5k YXRvcnlUYWJsZXNBcmVQcmVzZW50ICgNCj4gICAgcmV0dXJuIFN0YXR1czsNCj4gIH0NCj4gDQo+ ICsvKiogQSBoZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgYW5kIGluc3RhbGwgYW4gU01CSU9TIHRh YmxlLg0KPiArDQo+ICsgIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRo ZSBUYWJsZSBnZW5lcmF0b3IgaW50ZXJmYWNlDQo+ICsgZm9yIGJ1aWxkaW5nIGFuIFNNQklPUyB0 YWJsZS4gSXQgdXNlcyB0aGUgU21iaW9zUHJvdG9jb2wgdG8gaW5zdGFsbA0KPiArIHRoZSAgdGFi bGUsIHRoZW4gZnJlZXMgdGhlIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIGdlbmVyYXRpbmcgaXQu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFRhYmxlRmFjdG9yeVByb3RvY29sIFBvaW50ZXIgdG8g dGhlIFRhYmxlIEZhY3RvcnkgUHJvdG9jb2wNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludGVyZmFjZS4NCj4gKyAgQHBhcmFtIFtpbl0gIENmZ01nclByb3RvY29sICAg ICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wgSW50ZXJmYWNlLg0KPiArICBAcGFyYW0g W2luXSAgU21iaW9zUHJvdG9jb2wgICAgICAgUG9pbnRlciB0byB0aGUgU01CSU9TIHByb3RvY29s Lg0KPiArICBAcGFyYW0gW2luXSAgU21iaW9zVGFibGVJbmZvICAgICAgUG9pbnRlciB0byB0aGUg U01CSU9TIHRhYmxlIEluZm8uDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgU3VjY2Vzcy4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0 ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgUmVxdWly ZWQgb2JqZWN0IGlzIG5vdCBmb3VuZC4NCj4gKyAgQHJldHZhbCBFRklfQkFEX0JVRkZFUl9TSVpF ICAgU2l6ZSByZXR1cm5lZCBieSB0aGUgQ29uZmlndXJhdGlvbg0KPiBNYW5hZ2VyDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxlc3MgdGhhbiB0aGUgT2JqZWN0IHNpemUg Zm9yIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWQgb2Jq ZWN0Lg0KPiArKiovDQo+ICtTVEFUSUMNCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQnVp bGRBbmRJbnN0YWxsU2luZ2xlU21iaW9zVGFibGUgKA0KPiArICBJTiBDT05TVCBFREtJSV9EWU5B TUlDX1RBQkxFX0ZBQ1RPUllfUFJPVE9DT0wgICpDT05TVA0KPiArVGFibGVGYWN0b3J5UHJvdG9j b2wsDQo+ICsgIElOIENPTlNUIEVES0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAg KkNPTlNUDQo+IENmZ01nclByb3RvY29sLA0KPiArICBJTiBDT05TVCBTTUJJT1NfVEFCTEVfR0VO RVJBVE9SICAgICAgICAgICAgICAgICpDT05TVCAgR2VuZXJhdG9yLA0KPiArICBJTiAgICAgICBF RklfU01CSU9TX1BST1RPQ09MICAgICAgICAgICAgICAgICAgICAgICAgICAgKlNtYmlvc1Byb3Rv Y29sLA0KPiArICBJTiAgICAgICBDTV9TVERfT0JKX1NNQklPU19UQUJMRV9JTkZPICAgICAgICAg ICpDT05TVCAgU21iaW9zVGFibGVJbmZvDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgIFN0YXR1czsNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgIFN0YXR1czE7DQo+ICsgIFNN QklPU19TVFJVQ1RVUkUgICAqU21iaW9zVGFibGU7DQo+ICsgIENNX09CSkVDVF9UT0tFTiAgICBD bU9ialRva2VuOw0KPiArICBFRklfU01CSU9TX0hBTkRMRSAgVGFibGVIYW5kbGU7DQo+ICsNCj4g KyAgU21iaW9zVGFibGUgPSBOVUxMOw0KPiArICBTdGF0dXMgICAgICA9IEdlbmVyYXRvci0+QnVp bGRTbWJpb3NUYWJsZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRv ciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9jb2ws DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYmlvc1RhYmxlSW5mbywNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2ZnTWdyUHJvdG9jb2wsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZTbWJpb3NUYWJsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJkNtT2JqVG9rZW4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAg ICBERUJVR19FUlJPUiwNCj4gKyAgICAgICJFUlJPUjogRmFpbGVkIHRvIEJ1aWxkIFRhYmxlLiIg XA0KPiArICAgICAgIiBUYWJsZUdlbmVyYXRvcklkID0gMHgleC4gU3RhdHVzID0gJXJcbiIsDQo+ ICsgICAgICBTbWJpb3NUYWJsZUluZm8tPlRhYmxlR2VuZXJhdG9ySWQsDQo+ICsgICAgICBTdGF0 dXMNCj4gKyAgICAgICkpOw0KPiArICAgIC8vIEZyZWUgYW55IGFsbG9jYXRlZCByZXNvdXJjZXMu DQo+ICsgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBpZiAoU21iaW9z VGFibGUgPT0gTlVMTCkgew0KPiArICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ICsgICAg Z290byBleGl0X2hhbmRsZXI7DQo+ICsgIH0NCj4gKw0KPiArICBUYWJsZUhhbmRsZSA9IFNNQklP U19IQU5ETEVfUElfUkVTRVJWRUQ7ICAvLyBJbnN0YWxsIFNNQklPUyB0YWJsZQ0KPiArIFN0YXR1 cyA9IFNtYmlvc1Byb3RvY29sLT5BZGQgKA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTbWJpb3NQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRhYmxlSGFuZGxlLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTbWJpb3NUYWJsZQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVC VUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIkVSUk9SOiBGYWlsZWQgdG8g SW5zdGFsbCBTTUJJT1MgVGFibGUuIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ ICsgICAgICApKTsNCj4gKyAgICAvLyBGcmVlIGFueSBhbGxvY2F0ZWQgcmVzb3VyY2VzLg0KPiAr ICAgIGdvdG8gZXhpdF9oYW5kbGVyOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gVGFibGVG YWN0b3J5UHJvdG9jb2wtPkFkZFNtYmlvc0hhbmRsZSAoDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNtYmlvc1Byb3RvY29sLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmVGFibGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENtT2JqVG9rZW4sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNtYmlvc1RhYmxlSW5mby0+VGFibGVHZW5lcmF0b3JJZA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIkVSUk9SOiBG YWlsZWQgdG8gQWRkIFNNQklPUyBIYW5kbGUuIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU3Rh dHVzDQo+ICsgICAgICApKTsNCj4gKyAgICAvLyBGcmVlIGFueSBhbGxvY2F0ZWQgcmVzb3VyY2Vz Lg0KPiArICAgIGdvdG8gZXhpdF9oYW5kbGVyOw0KPiArICB9DQo+ICsNCj4gKyAgREVCVUcgKCgN Cj4gKyAgICBERUJVR19JTkZPLA0KPiArICAgICJJTkZPOiBTTUJJT1MgVGFibGUgaW5zdGFsbGVk LiBTdGF0dXMgPSAlclxuIiwNCj4gKyAgICBTdGF0dXMNCj4gKyAgICApKTsNCj4gKw0KPiArZXhp dF9oYW5kbGVyOg0KPiArICAvLyBGcmVlIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBnZW5l cmF0aW5nIHRoZSB0YWJsZXMuDQo+ICsgIGlmIChHZW5lcmF0b3ItPkZyZWVUYWJsZVJlc291cmNl cyAhPSBOVUxMKSB7DQo+ICsgICAgU3RhdHVzMSA9IEdlbmVyYXRvci0+RnJlZVRhYmxlUmVzb3Vy Y2VzICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvciwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgU21iaW9zVGFibGVJbmZvLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ2ZnTWdyUHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAm U21iaW9zVGFibGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICsgICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzMSkpIHsNCj4gKyAgICAgIERFQlVHICgoDQo+ICsgICAgICAgIERF QlVHX0VSUk9SLA0KPiArICAgICAgICAiRVJST1I6IEZhaWxlZCB0byBGcmVlIFRhYmxlIFJlc291 cmNlcy4iIFwNCj4gKyAgICAgICAgIlRhYmxlR2VuZXJhdG9ySWQgPSAweCV4LiBTdGF0dXMgPSAl clxuIiwNCj4gKyAgICAgICAgU21iaW9zVGFibGVJbmZvLT5UYWJsZUdlbmVyYXRvcklkLA0KPiAr ICAgICAgICBTdGF0dXMxDQo+ICsgICAgICAgICkpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8v IFJldHVybiB0aGUgZmlyc3QgZXJyb3Igc3RhdHVzIGluIGNhc2Ugb2YgZmFpbHVyZQ0KPiArICAg IGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBTdGF0dXMgPSBTdGF0dXMxOw0K PiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4g Ky8qKiBBIGhlbHBlciBmdW5jdGlvbiB0byBidWlsZCBhbmQgaW5zdGFsbCBtdWx0aXBsZSBTTUJJ T1MgdGFibGVzLg0KPiArDQo+ICsgIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBpbnZv a2VzIHRoZSBUYWJsZSBnZW5lcmF0b3IgaW50ZXJmYWNlDQo+ICsgZm9yIGJ1aWxkaW5nIFNNQklP UyB0YWJsZXMuIEl0IHVzZXMgdGhlIFNtYmlvc1Byb3RvY29sIHRvIGluc3RhbGwgdGhlDQo+ICsg dGFibGVzLCB0aGVuIGZyZWVzIHRoZSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBnZW5lcmF0aW5n IGl0Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBUYWJsZUZhY3RvcnlQcm90b2NvbCBQb2ludGVy IHRvIHRoZSBUYWJsZSBGYWN0b3J5IFByb3RvY29sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnRlcmZhY2UuDQo+ICsgIEBwYXJhbSBbaW5dICBDZmdNZ3JQcm90b2Nv bCAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXINCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sIEludGVyZmFjZS4NCj4gKyAgQHBh cmFtIFtpbl0gIEdlbmVyYXRvciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIFNtYmlvc1RhYmxl IGdlbmVyYXRvci4NCj4gKyAgQHBhcmFtIFtpbl0gIFNtYmlvc1Byb3RvY29sICAgICAgIFBvaW50 ZXIgdG8gdGhlIFNtYmlvcyBwcm90b2NvbC4NCj4gKyAgQHBhcmFtIFtpbl0gIEFjcGlUYWJsZUlu Zm8gICAgICAgIFBvaW50ZXIgdG8gdGhlIFNNQklPUyB0YWJsZSBJbmZvLg0KPiArDQo+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgIFJlcXVpcmVkIG9iamVjdCBpcyBub3QgZm91bmQuDQo+ICsgIEBy ZXR2YWwgRUZJX0JBRF9CVUZGRVJfU0laRSAgIFNpemUgcmV0dXJuZWQgYnkgdGhlIENvbmZpZ3Vy YXRpb24NCj4gTWFuYWdlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBs ZXNzIHRoYW4gdGhlIE9iamVjdCBzaXplIGZvciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVxdWVzdGVkIG9iamVjdC4NCj4gKyoqLw0KPiArU1RBVElDDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0J1aWxkQW5kSW5zdGFsbE11bHRpcGxlU21iaW9zVGFibGVz ICgNCj4gKyAgSU4gQ09OU1QgRURLSUlfRFlOQU1JQ19UQUJMRV9GQUNUT1JZX1BST1RPQ09MICAq Q09OU1QNCj4gK1RhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArICBJTiBDT05TVCBFREtJSV9DT05G SUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICpDT05TVA0KPiBDZmdNZ3JQcm90b2NvbCwNCj4g KyAgSU4gQ09OU1QgU01CSU9TX1RBQkxFX0dFTkVSQVRPUiAgICAgICAgICAgICAgICAqQ09OU1Qg IEdlbmVyYXRvciwNCj4gKyAgSU4gICAgICAgRUZJX1NNQklPU19QUk9UT0NPTCAgICAgICAgICAg ICAgICAgICAgICAgICAgICpTbWJpb3NQcm90b2NvbCwNCj4gKyAgSU4gICAgICAgQ01fU1REX09C Sl9TTUJJT1NfVEFCTEVfSU5GTyAgICAgICAgICAqQ09OU1QgIFNtYmlvc1RhYmxlSW5mbw0KPiAr ICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9TVEFU VVMgICAgICAgICBTdGF0dXMxOw0KPiArICBTTUJJT1NfU1RSVUNUVVJFICAgKipTbWJpb3NUYWJs ZTsNCj4gKyAgQ01fT0JKRUNUX1RPS0VOICAgICpDbU9ialRva2VuOw0KPiArICBFRklfU01CSU9T X0hBTkRMRSAgVGFibGVIYW5kbGU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICBUYWJsZUNvdW50 Ow0KPiArICBVSU5UTiAgICAgICAgICAgICAgSW5kZXg7DQo+ICsNCj4gKyAgVGFibGVDb3VudCA9 IDA7DQo+ICsgIFN0YXR1cyAgICAgPSBHZW5lcmF0b3ItPkJ1aWxkU21iaW9zVGFibGVFeCAoDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNtYmlvc1RhYmxlSW5mbywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDZmdNZ3JQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU21i aW9zVGFibGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNtT2JqVG9rZW4sDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRhYmxlQ291bnQNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsg ICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIkVSUk9SOiBGYWls ZWQgdG8gQnVpbGQgVGFibGUuIiBcDQo+ICsgICAgICAiIFRhYmxlR2VuZXJhdG9ySWQgPSAweCV4 LiBTdGF0dXMgPSAlclxuIiwNCj4gKyAgICAgIFNtYmlvc1RhYmxlSW5mby0+VGFibGVHZW5lcmF0 b3JJZCwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgICAgLy8gRnJlZSBhbnkg YWxsb2NhdGVkIHJlc291cmNlcy4NCj4gKyAgICBnb3RvIGV4aXRfaGFuZGxlcjsNCj4gKyAgfQ0K PiArDQo+ICsgIGlmICgoU21iaW9zVGFibGUgPT0gTlVMTCkgfHwgKFRhYmxlQ291bnQgPT0gMCkp IHsNCj4gKyAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KPiArICAgIERFQlVHICgoDQo+ICsg ICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICIlYTogVGFibGVDb3VudCAldSBTbWJpb3NUYWJs ZSAlcCBcbiIsDQo+ICsgICAgICBfX0ZVTkNUSU9OX18sDQo+ICsgICAgICBUYWJsZUNvdW50LA0K PiArICAgICAgU21iaW9zVGFibGUNCj4gKyAgICAgICkpOw0KPiArICAgIGdvdG8gZXhpdF9oYW5k bGVyOw0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgVGFibGVDb3Vu dDsgSW5kZXgrKykgew0KPiArICAgIFRhYmxlSGFuZGxlID0gU01CSU9TX0hBTkRMRV9QSV9SRVNF UlZFRDsNCj4gKw0KDQpEb2VzIHRoZSBsb2dpYyBiZWxvdyByZWltcGxlbWVudCBCdWlsZEFuZElu c3RhbGxTaW5nbGVTbWJpb3NUYWJsZT8NCklmIHllcywgY291bGQgdGhhdCBmdW5jdGlvbiBiZSBj YWxsZWQgaGVyZSBpbnN0ZWFkPw0KDQo+ICsgICAgLy8gSW5zdGFsbCBTTUJJT1MgdGFibGUNCj4g KyAgICBTdGF0dXMgPSBTbWJpb3NQcm90b2NvbC0+QWRkICgNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTbWJpb3NQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUYWJsZUhh bmRsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWJpb3NUYWJsZVtJbmRl eF0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIERFQlVHICgoDQo+ICsgICAgICAgIERFQlVHX0VS Uk9SLA0KPiArICAgICAgICAiRVJST1I6IEZhaWxlZCB0byBJbnN0YWxsIFNNQklPUyBUYWJsZS4g U3RhdHVzID0gJXJcbiIsDQo+ICsgICAgICAgIFN0YXR1cw0KPiArICAgICAgICApKTsNCj4gKyAg ICAgIC8vIEZyZWUgYW55IGFsbG9jYXRlZCByZXNvdXJjZXMuDQo+ICsgICAgICBnb3RvIGV4aXRf aGFuZGxlcjsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBTdGF0dXMgPSBUYWJsZUZhY3RvcnlQcm90 b2NvbC0+QWRkU21iaW9zSGFuZGxlICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTbWJpb3NQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmVGFibGVIYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ21PYmpUb2tlbltJbmRleF0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU21iaW9zVGFibGVJbmZvLT5UYWJsZUdlbmVyYXRvcklkDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19FUlJPUiwNCj4gKyAg ICAgICAgIkVSUk9SOiBGYWlsZWQgdG8gQWRkIFNNQklPUyBIYW5kbGUuIFN0YXR1cyA9ICVyXG4i LA0KPiArICAgICAgICBTdGF0dXMNCj4gKyAgICAgICAgKSk7DQo+ICsgICAgICAvLyBGcmVlIGFu eSBhbGxvY2F0ZWQgcmVzb3VyY2VzLg0KPiArICAgICAgZ290byBleGl0X2hhbmRsZXI7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0lORk8sDQo+ICsgICAg ICAiSU5GTzogU01CSU9TIFRhYmxlIGluc3RhbGxlZC4gU3RhdHVzID0gJXJcbiIsDQo+ICsgICAg ICBTdGF0dXMNCj4gKyAgICAgICkpOw0KPiArICB9DQo+ICsNCj4gK2V4aXRfaGFuZGxlcjoNCj4g KyAgLy8gRnJlZSBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgZ2VuZXJhdGluZyB0aGUgdGFi bGVzLg0KPiArICBpZiAoR2VuZXJhdG9yLT5GcmVlVGFibGVSZXNvdXJjZXNFeCAhPSBOVUxMKSB7 DQo+ICsgICAgU3RhdHVzMSA9IEdlbmVyYXRvci0+RnJlZVRhYmxlUmVzb3VyY2VzRXggKA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICBTbWJpb3NUYWJsZUluZm8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBD ZmdNZ3JQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZTbWJpb3NUYWJs ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZDbU9ialRva2VuLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGFibGVDb3VudA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMxKSkgew0KPiArICAgICAgREVC VUcgKCgNCj4gKyAgICAgICAgREVCVUdfRVJST1IsDQo+ICsgICAgICAgICJFUlJPUjogRmFpbGVk IHRvIEZyZWUgVGFibGUgUmVzb3VyY2VzLiIgXA0KPiArICAgICAgICAiVGFibGVHZW5lcmF0b3JJ ZCA9IDB4JXguIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgICBTbWJpb3NUYWJsZUluZm8tPlRh YmxlR2VuZXJhdG9ySWQsDQo+ICsgICAgICAgIFN0YXR1czENCj4gKyAgICAgICAgKSk7DQo+ICsg ICAgfQ0KPiArDQo+ICsgICAgLy8gUmV0dXJuIHRoZSBmaXJzdCBlcnJvciBzdGF0dXMgaW4gY2Fz ZSBvZiBmYWlsdXJlDQo+ICsgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAg IFN0YXR1cyA9IFN0YXR1czE7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgREVCVUcgKChE RUJVR19FUlJPUiwgIiVhOiBSZXR1cm5pbmcgJXJcbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7 DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKiBBIGhlbHBlciBmdW5jdGlv biB0byBpbnZva2UgYSBUYWJsZSBnZW5lcmF0b3INCj4gKw0KPiArICBUaGlzIGlzIGEgaGVscGVy IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgVGFibGUgZ2VuZXJhdG9yIGludGVyZmFjZQ0KPiAr IGZvciBidWlsZGluZyBhbiBTTUJJT1MgdGFibGUuIEl0IHVzZXMgdGhlIFNtYmlvc1Byb3RvY29s IHRvIGluc3RhbGwNCj4gKyB0aGUgIHRhYmxlLCB0aGVuIGZyZWVzIHRoZSByZXNvdXJjZXMgYWxs b2NhdGVkIGZvciBnZW5lcmF0aW5nIGl0Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBUYWJsZUZh Y3RvcnlQcm90b2NvbCBQb2ludGVyIHRvIHRoZSBUYWJsZSBGYWN0b3J5IFByb3RvY29sDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UuDQo+ICsgIEBwYXJh bSBbaW5dICBDZmdNZ3JQcm90b2NvbCAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9u IE1hbmFnZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29s IEludGVyZmFjZS4NCj4gKyAgQHBhcmFtIFtpbl0gIFNtYmlvc1Byb3RvY29sICAgICAgIFBvaW50 ZXIgdG8gdGhlIFNNQklPUyBwcm90b2NvbC4NCj4gKyAgQHBhcmFtIFtpbl0gIFNtYmlvc1RhYmxl SW5mbyAgICAgIFBvaW50ZXIgdG8gdGhlIFNNQklPUyB0YWJsZSBJbmZvLg0KPiArDQo+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgIFJlcXVpcmVkIG9iamVjdCBpcyBub3QgZm91bmQuDQo+ICsgIEBy ZXR2YWwgRUZJX0JBRF9CVUZGRVJfU0laRSAgIFNpemUgcmV0dXJuZWQgYnkgdGhlIENvbmZpZ3Vy YXRpb24NCj4gTWFuYWdlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBs ZXNzIHRoYW4gdGhlIE9iamVjdCBzaXplIGZvciB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVxdWVzdGVkIG9iamVjdC4NCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiAr RUZJQVBJDQo+ICtCdWlsZEFuZEluc3RhbGxTbWJpb3NUYWJsZSAoDQo+ICsgIElOIENPTlNUIEVE S0lJX0RZTkFNSUNfVEFCTEVfRkFDVE9SWV9QUk9UT0NPTCAgKkNPTlNUDQo+ICtUYWJsZUZhY3Rv cnlQcm90b2NvbCwNCj4gKyAgSU4gQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BS T1RPQ09MICAqQ09OU1QNCj4gQ2ZnTWdyUHJvdG9jb2wsDQo+ICsgIElOICAgICAgIEVGSV9TTUJJ T1NfUFJPVE9DT0wgICAgICAgICAgICAgICAgICAgICAgICAgICAqU21iaW9zUHJvdG9jb2wsDQo+ ICsgIElOICAgICAgIENNX1NURF9PQkpfU01CSU9TX1RBQkxFX0lORk8gICAgICAgICAgKkNPTlNU ICBTbWJpb3NUYWJsZUluZm8NCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICBTdGF0dXM7DQo+ICsgIENPTlNUIFNNQklPU19UQUJMRV9HRU5FUkFUT1IgICpH ZW5lcmF0b3I7DQo+ICsNCj4gKyAgQVNTRVJUIChUYWJsZUZhY3RvcnlQcm90b2NvbCAhPSBOVUxM KTsgIEFTU0VSVCAoQ2ZnTWdyUHJvdG9jb2wgIT0NCj4gKyBOVUxMKTsgIEFTU0VSVCAoU21iaW9z UHJvdG9jb2wgIT0gTlVMTCk7ICBBU1NFUlQgKFNtYmlvc1RhYmxlSW5mbyAhPQ0KPiArIE5VTEwp Ow0KPiArDQo+ICsgIERFQlVHICgoDQo+ICsgICAgREVCVUdfSU5GTywNCj4gKyAgICAiSU5GTzog RVN0ZE9ialNtYmlvc1RhYmxlTGlzdDogQWRkcmVzcyA9IDB4JXAsIiBcDQo+ICsgICAgIiBUYWJs ZUdlbmVyYXRvcklkID0gMHgleFxuIiwNCj4gKyAgICBTbWJpb3NUYWJsZUluZm8sDQo+ICsgICAg U21iaW9zVGFibGVJbmZvLT5UYWJsZUdlbmVyYXRvcklkDQo+ICsgICAgKSk7DQo+ICsNCj4gKyAg R2VuZXJhdG9yID0gTlVMTDsNCj4gKyAgU3RhdHVzICAgID0gVGFibGVGYWN0b3J5UHJvdG9jb2wt PkdldFNtYmlvc1RhYmxlR2VuZXJhdG9yICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNtYmlvc1RhYmxlSW5mby0+VGFibGVHZW5lcmF0b3JJZCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdlbmVyYXRvcg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAg ICJFUlJPUjogVGFibGUgR2VuZXJhdG9yIG5vdCBmb3VuZC4iIFwNCj4gKyAgICAgICIgVGFibGVH ZW5lcmF0b3JJZCA9IDB4JXguIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU21iaW9zVGFibGVJ bmZvLT5UYWJsZUdlbmVyYXRvcklkLA0KPiArICAgICAgU3RhdHVzDQo+ICsgICAgICApKTsNCj4g KyAgICByZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKEdlbmVyYXRvciA9PSBO VUxMKSB7DQo+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ICsgIH0NCj4gKw0KPiArICBE RUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8sDQo+ICsgICAgIklORk86IEdlbmVyYXRvciBmb3Vu ZCA6ICVzXG4iLA0KPiArICAgIEdlbmVyYXRvci0+RGVzY3JpcHRpb24NCj4gKyAgICApKTsNCj4g Kw0KPiArICBpZiAoR2VuZXJhdG9yLT5CdWlsZFNtYmlvc1RhYmxlRXggIT0gTlVMTCkgew0KPiAr ICAgIFN0YXR1cyA9IEJ1aWxkQW5kSW5zdGFsbE11bHRpcGxlU21iaW9zVGFibGVzICgNCj4gKyAg ICAgICAgICAgICAgIFRhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArICAgICAgICAgICAgICAgQ2Zn TWdyUHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgICBHZW5lcmF0b3IsDQo+ICsgICAgICAgICAg ICAgICBTbWJpb3NQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgIFNtYmlvc1RhYmxlSW5mbw0K PiArICAgICAgICAgICAgICAgKTsNCj4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICAgIkVS Uk9SOiBGYWlsZWQgdG8gZmluZCBidWlsZCBhbmQgaW5zdGFsbCBTTUJJT1MgVGFibGVzLiIgXA0K PiArICAgICAgICAiIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgICBTdGF0dXMNCj4gKyAgICAg ICAgKSk7DQo+ICsgICAgfQ0KPiArICB9IGVsc2UgaWYgKEdlbmVyYXRvci0+QnVpbGRTbWJpb3NU YWJsZSAhPSBOVUxMKSB7DQo+ICsgICAgU3RhdHVzID0gQnVpbGRBbmRJbnN0YWxsU2luZ2xlU21i aW9zVGFibGUgKA0KPiArICAgICAgICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9jb2wsDQo+ICsg ICAgICAgICAgICAgICBDZmdNZ3JQcm90b2NvbCwNCj4gKyAgICAgICAgICAgICAgIEdlbmVyYXRv ciwNCj4gKyAgICAgICAgICAgICAgIFNtYmlvc1Byb3RvY29sLA0KPiArICAgICAgICAgICAgICAg U21iaW9zVGFibGVJbmZvDQo+ICsgICAgICAgICAgICAgICApOw0KPiArICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gKyAgICAgIERFQlVHICgoDQo+ICsgICAgICAgIERFQlVHX0VSUk9S LA0KPiArICAgICAgICAiRVJST1I6IEZhaWxlZCB0byBmaW5kIGJ1aWxkIGFuZCBpbnN0YWxsIFNN QklPUyBUYWJsZS4iIFwNCj4gKyAgICAgICAgIiBTdGF0dXMgPSAlclxuIiwNCj4gKyAgICAgICAg U3RhdHVzDQo+ICsgICAgICAgICkpOw0KPiArICAgIH0NCj4gKyAgfSBlbHNlIHsNCj4gKyAgICBT dGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAg IERFQlVHX0VSUk9SLA0KPiArICAgICAgIkVSUk9SOiBUYWJsZSBHZW5lcmF0b3IgZG9lcyBub3Qg aW1wbGVtZW50IHRoZSIgXA0KPiArICAgICAgIlNNQklPU19UQUJMRV9HRU5FUkFUT1JfQlVJTERf VEFCTEUgIGludGVyZmFjZS4iIFwNCj4gKyAgICAgICIgVGFibGVHZW5lcmF0b3JJZCA9IDB4JXgu IFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU21iaW9zVGFibGVJbmZvLT5UYWJsZUdlbmVyYXRv cklkLA0KPiArICAgICAgU3RhdHVzDQo+ICsgICAgICApKTsNCj4gKyAgfQ0KPiArDQo+ICsgIERF QlVHICgoREVCVUdfRVJST1IsICIlYTogUmV0dXJuaW5nICVyXG4iLCBfX0ZVTkNUSU9OX18sIFN0 YXR1cykpOw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKiogR2VuZXJhdGUg YW5kIGluc3RhbGwgU01CSU9TIHRhYmxlcy4NCj4gKw0KPiArICBUaGUgZnVuY3Rpb24gZ2F0aGVy cyB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IGZvciBpbnN0YWxsaW5nIHRoZQ0KPiArIFNNQklP UyB0YWJsZXMgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyLCBpbnZva2VzIHRoZSBnZW5l cmF0b3JzDQo+ICsgYW5kIGluc3RhbGxzIHRoZW0gKHZpYSBCdWlsZEFuZEluc3RhbGxBY3BpVGFi bGUpLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBUYWJsZUZhY3RvcnlQcm90b2NvbCBQb2ludGVy IHRvIHRoZSBUYWJsZSBGYWN0b3J5IFByb3RvY29sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnRlcmZhY2UuDQo+ICsgIEBwYXJhbSBbaW5dICBDZmdNZ3JQcm90b2Nv bCAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXINCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sIEludGVyZmFjZS4NCj4gKw0KPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgU3VjY2Vzcy4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZP VU5EIElmIGEgbWFuZGF0b3J5IHRhYmxlIG9yIGEgZ2VuZXJhdG9yIGlzIG5vdCBmb3VuZC4NCj4g KyoqLw0KPiArU1RBVElDDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1Byb2Nlc3NTbWJp b3NUYWJsZXMgKA0KPiArICBJTiBDT05TVCBFREtJSV9EWU5BTUlDX1RBQkxFX0ZBQ1RPUllfUFJP VE9DT0wgICpDT05TVA0KPiArVGFibGVGYWN0b3J5UHJvdG9jb2wsDQo+ICsgIElOIENPTlNUIEVE S0lJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAgKkNPTlNUDQo+IENmZ01nclByb3Rv Y29sDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KPiArICBFRklfU01CSU9TX1BST1RPQ09MICAgICAgICAgICAqU21iaW9zUHJvdG9jb2w7 DQo+ICsgIENNX1NURF9PQkpfU01CSU9TX1RBQkxFX0lORk8gICpTbWJpb3NUYWJsZUluZm87DQo+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgIFNtYmlvc1RhYmxlQ291bnQ7DQo+ICsN Cj4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoJmdFZmlTbWJpb3NQcm90b2NvbEd1 aWQsIE5VTEwsIChWT0lEDQo+ICsgKiopJlNtYmlvc1Byb3RvY29sKTsgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQ291bGQgbm90IGxvY2F0 ZSBTTUJJT1MgcHJvdG9jb2wuICAlclxuIiwNCj4gU3RhdHVzKSk7DQo+ICsgICAgcmV0dXJuIFN0 YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEdldEVTdGRPYmpTbWJpb3NUYWJsZUxp c3QgKA0KPiArICAgICAgICAgICAgIENmZ01nclByb3RvY29sLA0KPiArICAgICAgICAgICAgIENN X05VTExfVE9LRU4sDQo+ICsgICAgICAgICAgICAgJlNtYmlvc1RhYmxlSW5mbywNCj4gKyAgICAg ICAgICAgICAmU21iaW9zVGFibGVDb3VudA0KPiArICAgICAgICAgICAgICk7DQo+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAgICAgREVCVUdfRVJS T1IsDQo+ICsgICAgICAiRVJST1I6IEZhaWxlZCB0byBnZXQgU01CSU9TIFRhYmxlIExpc3QuIFN0 YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ICsgICAgICApKTsNCj4gKyAgICByZXR1 cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgaWYgKFNtYmlvc1RhYmxlQ291bnQgPT0gMCkg ew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICJFUlJP UjogRVN0ZE9ialNtYmlvc1RhYmxlTGlzdDogU21iaW9zVGFibGVDb3VudCA9ICVkXG4iLA0KPiAr ICAgICAgU21iaW9zVGFibGVDb3VudA0KPiArICAgICAgKSk7DQo+ICsgICAgcmV0dXJuIEVGSV9O T1RfRk9VTkQ7DQo+ICsgIH0NCj4gKw0KPiArICBERUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8s DQo+ICsgICAgIklORk86IEVTdGRPYmpTbWJpb3NUYWJsZUxpc3Q6IFNtYmlvc1RhYmxlQ291bnQg PSAlZFxuIiwNCj4gKyAgICBTbWJpb3NUYWJsZUNvdW50DQo+ICsgICAgKSk7DQo+ICsNCj4gKyAg SW5pdFNtYmlvc1RhYmxlRGlzcGF0Y2hlciAoU21iaW9zVGFibGVJbmZvLCBTbWJpb3NUYWJsZUNv dW50KTsNCj4gKw0KPiArICBTdGF0dXMgPSBEaXNwYXRjaFNtYmlvc1RhYmxlcyAoDQo+ICsgICAg ICAgICAgICAgVGFibGVGYWN0b3J5UHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgQ2ZnTWdyUHJv dG9jb2wsDQo+ICsgICAgICAgICAgICAgU21iaW9zUHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAg U21iaW9zVGFibGVJbmZvLA0KPiArICAgICAgICAgICAgIFNtYmlvc1RhYmxlQ291bnQNCj4gKyAg ICAgICAgICAgICApOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVC VUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgIkVSUk9SOiBGYWlsZWQgdG8g aW5zdGFsbCBTTUJJT1MgVGFibGVzLlN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ ICsgICAgICApKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsN Cj4gIC8qKiBHZW5lcmF0ZSBhbmQgaW5zdGFsbCBBQ1BJIHRhYmxlcy4NCj4gDQo+ICAgIFRoZSBm dW5jdGlvbiBnYXRoZXJzIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIGluc3RhbGxpbmcg dGhlIEBAIC0NCj4gNzAxLDMwICsxMjAxLDIwIEBAIFByb2Nlc3NBY3BpVGFibGVzICgNCj4gICAg cmV0dXJuIFN0YXR1czsNCj4gIH0NCj4gDQo+IC0vKiogRW50cnlwb2ludCBvZiBEeW5hbWljIFRh YmxlIE1hbmFnZXIgRHhlLg0KPiArLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBBQ1BJIFByb3Rv Y29sIC4NCj4gDQo+IC0gIFRoZSBEeW5hbWljIFRhYmxlIE1hbmFnZXIgdXNlcyB0aGUgQ29uZmln dXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sDQo+IC0gIHRvIGdldCB0aGUgbGlzdCBvZiBBQ1BJIGFu ZCBTTUJJT1MgdGFibGVzIHRvIGluc3RhbGwuIEZvciBlYWNoIHRhYmxlDQo+IC0gIGluIHRoZSBs aXN0IGl0IHJlcXVlc3RzIHRoZSBjb3JyZXNwb25kaW5nIEFDUEkvU01CSU9TIHRhYmxlIGZhY3Rv cnkgZm9yDQo+IC0gIGEgZ2VuZXJhdG9yIGNhcGFibGUgb2YgYnVpbGRpbmcgdGhlIEFDUEkvU01C SU9TIHRhYmxlLg0KPiAtICBJZiBhIHN1aXRhYmxlIHRhYmxlIGdlbmVyYXRvciBpcyBmb3VuZCwg aXQgaW52b2tlcyB0aGUgZ2VuZXJhdG9yIGludGVyZmFjZQ0KPiAtICB0byBidWlsZCB0aGUgdGFi bGUuIFRoZSBEeW5hbWljIFRhYmxlIE1hbmFnZXIgdGhlbiBpbnN0YWxscyB0aGUNCj4gLSAgdGFi bGUgYW5kIGludm9rZXMgYW5vdGhlciBnZW5lcmF0b3IgaW50ZXJmYWNlIHRvIGZyZWUgYW55IHJl c291cmNlcw0KPiAtICBhbGxvY2F0ZWQgZm9yIGJ1aWxkaW5nIHRoZSB0YWJsZS4NCj4gKyAgQ2Fs bGJhY2sgZnVuY3Rpb24gZm9yIEFDUEkgcHJvdG9jb2wgdGhhdCBpbnN0YWxscyBBQ1BJIHRhYmxl cw0KPiANCj4gLSAgQHBhcmFtICBJbWFnZUhhbmRsZQ0KPiAtICBAcGFyYW0gIFN5c3RlbVRhYmxl DQo+ICsgIEBwYXJhbSAgRXZlbnQNCj4gKyAgQHBhcmFtICBDb250ZXh0DQo+IA0KPiAtICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzLg0KPiAtICBAcmV0dmFsIEVGSV9PVVRf T0ZfUkVTT1VSQ0VTICBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuDQo+IC0gIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgIFJlcXVpcmVkIGludGVyZmFjZS9vYmplY3Qgd2FzIG5vdCBmb3Vu ZC4NCj4gLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgU29tZSBwYXJhbWV0ZXIgaXMg aW5jb3JyZWN0L2ludmFsaWQuDQo+ICsgIEByZXR2YWwgTm9uZQ0KPiAgKiovDQo+IC1FRklfU1RB VFVTDQo+IC1FRklBUEkNCj4gLUR5bmFtaWNUYWJsZU1hbmFnZXJEeGVJbml0aWFsaXplICgNCj4g LSAgSU4gIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiAtICBJTiAgRUZJX1NZU1RF TV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0FjcGlUYWJsZVBy b3RvY29sUmVhZHkgKA0KPiArICBJTiAgRUZJX0VWRU5UICBFdmVudCwNCj4gKyAgSU4gIFZPSUQg ICAgICAgKkNvbnRleHQNCj4gICAgKQ0KPiAgew0KPiAgICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+IEBAIC03NDUsNyArMTIzNSw3IEBAIER5bmFtaWNU YWJsZU1hbmFnZXJEeGVJbml0aWFsaXplICgNCj4gICAgICAgICIgU3RhdHVzID0gJXJcbiIsDQo+ ICAgICAgICBTdGF0dXMNCj4gICAgICAgICkpOw0KPiAtICAgIHJldHVybiBTdGF0dXM7DQo+ICsg ICAgcmV0dXJuOw0KPiAgICB9DQo+IA0KPiAgICAvLyBMb2NhdGUgdGhlIENvbmZpZ3VyYXRpb24g TWFuYWdlciBmb3IgdGhlIFBsYXRmb3JtIEBAIC03NjAsNyArMTI1MCw3DQo+IEBAIER5bmFtaWNU YWJsZU1hbmFnZXJEeGVJbml0aWFsaXplICgNCj4gICAgICAgICJFUlJPUjogRmFpbGVkIHRvIGZp bmQgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIHByb3RvY29sLiBTdGF0dXMgPSAlclxuIiwNCj4gICAg ICAgIFN0YXR1cw0KPiAgICAgICAgKSk7DQo+IC0gICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgICBy ZXR1cm47DQo+ICAgIH0NCj4gDQo+ICAgIFN0YXR1cyA9IEdldENnZk1nckluZm8gKENmZ01nclBy b3RvY29sLCAmQ2ZnTWZySW5mbyk7IEBAIC03NzAsNyArMTI2MCw3DQo+IEBAIER5bmFtaWNUYWJs ZU1hbmFnZXJEeGVJbml0aWFsaXplICgNCj4gICAgICAgICJFUlJPUjogRmFpbGVkIHRvIGdldCBD b25maWd1cmF0aW9uIE1hbmFnZXIgaW5mby4gU3RhdHVzID0gJXJcbiIsDQo+ICAgICAgICBTdGF0 dXMNCj4gICAgICAgICkpOw0KPiAtICAgIHJldHVybiBTdGF0dXM7DQo+ICsgICAgcmV0dXJuOw0K PiAgICB9DQo+IA0KPiAgICBERUJVRyAoKA0KPiBAQCAtNzkzLDYgKzEyODMsMTQ3IEBAIER5bmFt aWNUYWJsZU1hbmFnZXJEeGVJbml0aWFsaXplICgNCj4gICAgICAgIFN0YXR1cw0KPiAgICAgICAg KSk7DQo+ICAgIH0NCj4gK30NCj4gKw0KPiArLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBTTUJJ T1MgUHJvdG9jb2wgLg0KPiArDQo+ICsgIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBTTUJJT1MgcHJv dG9jb2wgdGhhdCBpbnN0YWxscyBTTUJJT1MgdGFibGVzDQo+ICsgdGhhdCB1c2UgdGhlIER5bmFt aWNUYWJsZXMgUGFja2FnZS4NCj4gKw0KPiArICBAcGFyYW0gIEV2ZW50DQo+ICsgIEBwYXJhbSAg Q29udGV4dA0KPiArDQo+ICsgIEByZXR2YWwgTm9uZQ0KPiArKiovDQo+ICtTVEFUSUMNCj4gK1ZP SUQNCj4gK1NtYmlvc1Byb3RvY29sUmVhZHkgKA0KPiArICBJTiAgRUZJX0VWRU5UICBFdmVudCwN Cj4gKyAgSU4gIFZPSUQgICAgICAgKkNvbnRleHQNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVES0lJX0NPTkZJ R1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAgICpDZmdNZ3JQcm90b2NvbDsNCj4gKyAgQ01fU1RE X09CSl9DT05GSUdVUkFUSU9OX01BTkFHRVJfSU5GTyAgKkNmZ01mckluZm87DQo+ICsgIEVES0lJ X0RZTkFNSUNfVEFCTEVfRkFDVE9SWV9QUk9UT0NPTCAgICpUYWJsZUZhY3RvcnlQcm90b2NvbDsN Cj4gKw0KPiArICAvLyBMb2NhdGUgdGhlIER5bmFtaWMgVGFibGUgRmFjdG9yeQ0KPiArICBTdGF0 dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4gKyAgICAgICAgICAgICAgICAgICZnRWRraWlE eW5hbWljVGFibGVGYWN0b3J5UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgTlVM TCwNCj4gKyAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZUYWJsZUZhY3RvcnlQcm90b2NvbA0K PiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K PiArICAgIERFQlVHICgoDQo+ICsgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICJFUlJPUjog RmFpbGVkIHRvIGZpbmQgRHluYW1pYyBUYWJsZSBGYWN0b3J5IHByb3RvY29sLiIgXA0KPiArICAg ICAgIiBTdGF0dXMgPSAlclxuIiwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsg ICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gTG9jYXRlIHRoZSBDb25maWd1cmF0aW9u IE1hbmFnZXIgZm9yIHRoZSBQbGF0Zm9ybSAgU3RhdHVzID0NCj4gKyBnQlMtPkxvY2F0ZVByb3Rv Y29sICgNCj4gKyAgICAgICAgICAgICAgICAgICZnRWRraWlDb25maWd1cmF0aW9uTWFuYWdlclBy b3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ICsgICAgICAgICAgICAg ICAgICAoVk9JRCAqKikmQ2ZnTWdyUHJvdG9jb2wNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAgICAg REVCVUdfRVJST1IsDQo+ICsgICAgICAiRVJST1I6IEZhaWxlZCB0byBmaW5kIENvbmZpZ3VyYXRp b24gTWFuYWdlciBwcm90b2NvbC4gU3RhdHVzID0gJXJcbiIsDQo+ICsgICAgICBTdGF0dXMNCj4g KyAgICAgICkpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIFN0YXR1cyA9IEdl dENnZk1nckluZm8gKENmZ01nclByb3RvY29sLCAmQ2ZnTWZySW5mbyk7ICBpZiAoRUZJX0VSUk9S DQo+ICsgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAgICAgREVCVUdfRVJST1Is DQo+ICsgICAgICAiRVJST1I6IEZhaWxlZCB0byBnZXQgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIGlu Zm8uIFN0YXR1cyA9ICVyXG4iLA0KPiArICAgICAgU3RhdHVzDQo+ICsgICAgICApKTsNCj4gKyAg ICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICBERUJVRyAoKA0KPiArICAgIERFQlVHX0lORk8s DQo+ICsgICAgIklORk86IENvbmZpZ3VyYXRpb24gTWFuYWdlciBWZXJzaW9uID0gMHgleCwgT2Vt SUQgPQ0KPiAlYyVjJWMlYyVjJWNcbiIsDQo+ICsgICAgQ2ZnTWZySW5mby0+UmV2aXNpb24sDQo+ ICsgICAgQ2ZnTWZySW5mby0+T2VtSWRbMF0sDQo+ICsgICAgQ2ZnTWZySW5mby0+T2VtSWRbMV0s DQo+ICsgICAgQ2ZnTWZySW5mby0+T2VtSWRbMl0sDQo+ICsgICAgQ2ZnTWZySW5mby0+T2VtSWRb M10sDQo+ICsgICAgQ2ZnTWZySW5mby0+T2VtSWRbNF0sDQo+ICsgICAgQ2ZnTWZySW5mby0+T2Vt SWRbNV0NCj4gKyAgICApKTsNCj4gKw0KPiArICBTdGF0dXMgPSBQcm9jZXNzU21iaW9zVGFibGVz IChUYWJsZUZhY3RvcnlQcm90b2NvbCwgQ2ZnTWdyUHJvdG9jb2wpOw0KPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcgKCgNCj4gKyAgICAgIERFQlVHX0VSUk9SLA0K PiArICAgICAgIkVSUk9SOiBTTUJJT1MgVGFibGUgcHJvY2Vzc2luZyBmYWlsdXJlLiBTdGF0dXMg PSAlclxuIiwNCj4gKyAgICAgIFN0YXR1cw0KPiArICAgICAgKSk7DQo+ICsgIH0NCj4gK30NCj4g Kw0KPiArLyoqIEVudHJ5cG9pbnQgb2YgRHluYW1pYyBUYWJsZSBNYW5hZ2VyIER4ZS4NCj4gKw0K PiArICBUaGUgRHluYW1pYyBUYWJsZSBNYW5hZ2VyIHVzZXMgdGhlIENvbmZpZ3VyYXRpb24gTWFu YWdlciBQcm90b2NvbCAgdG8NCj4gKyBnZXQgdGhlIGxpc3Qgb2YgQUNQSSBhbmQgU01CSU9TIHRh YmxlcyB0byBpbnN0YWxsLiBGb3IgZWFjaCB0YWJsZSAgaW4NCj4gKyB0aGUgbGlzdCBpdCByZXF1 ZXN0cyB0aGUgY29ycmVzcG9uZGluZyBBQ1BJL1NNQklPUyB0YWJsZSBmYWN0b3J5IGZvcg0KPiAr IGEgZ2VuZXJhdG9yIGNhcGFibGUgb2YgYnVpbGRpbmcgdGhlIEFDUEkvU01CSU9TIHRhYmxlLg0K PiArICBJZiBhIHN1aXRhYmxlIHRhYmxlIGdlbmVyYXRvciBpcyBmb3VuZCwgaXQgaW52b2tlcyB0 aGUgZ2VuZXJhdG9yDQo+ICsgaW50ZXJmYWNlICB0byBidWlsZCB0aGUgdGFibGUuIFRoZSBEeW5h bWljIFRhYmxlIE1hbmFnZXIgdGhlbiBpbnN0YWxscw0KPiArIHRoZSAgdGFibGUgYW5kIGludm9r ZXMgYW5vdGhlciBnZW5lcmF0b3IgaW50ZXJmYWNlIHRvIGZyZWUgYW55DQo+ICsgcmVzb3VyY2Vz ICBhbGxvY2F0ZWQgZm9yIGJ1aWxkaW5nIHRoZSB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gIElt YWdlSGFuZGxlDQo+ICsgIEBwYXJhbSAgU3lzdGVtVGFibGUNCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzLg0KPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIFJlcXVpcmVkIGludGVyZmFjZS9vYmplY3Qgd2FzIG5vdCBmb3VuZC4NCj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgU29tZSBwYXJhbWV0ZXIgaXMgaW5jb3Jy ZWN0L2ludmFsaWQuDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArRHluYW1p Y1RhYmxlTWFuYWdlckR4ZUluaXRpYWxpemUgKA0KPiArICBJTiAgRUZJX0hBTkRMRSAgICAgICAg SW1hZ2VIYW5kbGUsDQo+ICsgIElOICBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4g KyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ICsgIEVGSV9FVkVOVCAgIEFj cGlFdmVudDsNCj4gKyAgRUZJX0VWRU5UICAgU21iaW9zRXZlbnQ7DQo+ICsNCj4gKyAgQWNwaUV2 ZW50ID0gRWZpQ3JlYXRlUHJvdG9jb2xOb3RpZnlFdmVudCAoDQo+ICsgICAgICAgICAgICAgICAg JmdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAgICAgVFBMX0NBTExC QUNLLA0KPiArICAgICAgICAgICAgICAgIEFjcGlUYWJsZVByb3RvY29sUmVhZHksDQo+ICsgICAg ICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAmQWNwaVRhYmxlUHJvdG9jb2xS ZWdpc3RyYXRpb24NCj4gKyAgICAgICAgICAgICAgICApOw0KPiArICBpZiAoQWNwaUV2ZW50ID09 IE5VTEwpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBBQ1BJ IGNyZWF0ZSBwcm90b2NvbCBldmVudFxyXG4iLA0KPiBfX0ZVTkNUSU9OX18pKTsNCj4gKyAgICBy ZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gKw0KPiArICBTbWJpb3NFdmVu dCA9IEVmaUNyZWF0ZVByb3RvY29sTm90aWZ5RXZlbnQgKA0KPiArICAgICAgICAgICAgICAgICAg JmdFZmlTbWJpb3NQcm90b2NvbEd1aWQsDQo+ICsgICAgICAgICAgICAgICAgICBUUExfQ0FMTEJB Q0ssDQo+ICsgICAgICAgICAgICAgICAgICBTbWJpb3NQcm90b2NvbFJlYWR5LA0KPiArICAgICAg ICAgICAgICAgICAgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICZTbWJpb3NQcm90b2NvbFJl Z2lzdHJhdGlvbg0KPiArICAgICAgICAgICAgICAgICAgKTsNCj4gKyAgaWYgKFNtYmlvc0V2ZW50 ID09IE5VTEwpIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWxlZCB0byBT TUJJT1MgY3JlYXRlIHByb3RvY29sDQo+IGV2ZW50XHJcbiIsIF9fRlVOQ1RJT05fXykpOw0KPiAr ICAgIGdCUy0+Q2xvc2VFdmVudCAoQWNwaUV2ZW50KTsNCj4gKyAgICByZXR1cm4gRUZJX09VVF9P Rl9SRVNPVVJDRVM7DQo+ICsgIH0NCj4gDQo+ICAgIHJldHVybiBTdGF0dXM7DQo+ICB9DQo+IGRp ZmYgLS1naXQNCj4gYS9EeW5hbWljVGFibGVzUGtnL0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdl ckR4ZS9EeW5hbWljVGFibGVNYW5hZw0KPiBlckR4ZS5pbmYNCj4gYi9EeW5hbWljVGFibGVzUGtn L0RyaXZlcnMvRHluYW1pY1RhYmxlTWFuYWdlckR4ZS9EeW5hbWljVGFibGVNYW5hZw0KPiBlckR4 ZS5pbmYNCj4gaW5kZXggYjA5MjcyZDg4My4uM2JlYWI3NDIwYSAxMDA2NDQNCj4gLS0tDQo+IGEv RHluYW1pY1RhYmxlc1BrZy9Ecml2ZXJzL0R5bmFtaWNUYWJsZU1hbmFnZXJEeGUvRHluYW1pY1Rh YmxlTWFuYWcNCj4gZXJEeGUuaW5mDQo+ICsrKw0KPiBiL0R5bmFtaWNUYWJsZXNQa2cvRHJpdmVy cy9EeW5hbWljVGFibGVNYW5hZ2VyRHhlL0R5bmFtaWNUYWJsZU1hbmFnDQo+IGUNCj4gKysrIHJE eGUuaW5mDQo+IEBAIC0zMyw2ICszMyw3IEBADQo+ICBbTGlicmFyeUNsYXNzZXNdDQo+ICAgIFBy aW50TGliDQo+ICAgIFRhYmxlSGVscGVyTGliDQo+ICsgIFVlZmlMaWINCj4gICAgVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliDQo+ICAgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQo+IA0KPiBAQCAtNDIs MTIgKzQzLDEyIEBADQo+ICBbUHJvdG9jb2xzXQ0KPiAgICBnRWZpQWNwaVRhYmxlUHJvdG9jb2xH dWlkICAgICAgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBBTFdBWVNfQ09OU1VNRUQNCj4gICAg Z0VmaUFjcGlTZHRQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICMgUFJPVE9DT0wg QUxXQVlTX0NPTlNVTUVEDQo+ICsgIGdFZmlTbWJpb3NQcm90b2NvbEd1aWQgICAgICAgICAgICAg ICAgICAgICAgICAjIFBST1RPQ09MIEFMV0FZU19DT05TVU1FRA0KPiANCj4gICAgZ0Vka2lpQ29u ZmlndXJhdGlvbk1hbmFnZXJQcm90b2NvbEd1aWQgICAgICAgICMgUFJPVE9DT0wNCj4gQUxXQVlT X0NPTlNVTUVEDQo+ICAgIGdFZGtpaUR5bmFtaWNUYWJsZUZhY3RvcnlQcm90b2NvbEd1aWQgICAg ICAgICAjIFBST1RPQ09MDQo+IEFMV0FZU19DT05TVU1FRA0KPiANCj4gIFtEZXBleF0NCj4gLSAg Z0VmaUFjcGlUYWJsZVByb3RvY29sR3VpZCBBTkQNCg0KV2h5IGlzIHRoaXMgZGVwZXggYmVpbmcg cmVtb3ZlZD8NCklmIHRoaXMgY2hhbmdlIGlzIHJlcXVpcmVkLCBkb2VzIGl0IG1ha2Ugc2Vuc2Ug dG8gbW92ZSBpdCB0byBhIHNlcGFyYXRlIGNvbW1pdD8NCg0KPiAgICBnRWRraWlDb25maWd1cmF0 aW9uTWFuYWdlclByb3RvY29sR3VpZCBBTkQNCj4gICAgZ0Vka2lpRHluYW1pY1RhYmxlRmFjdG9y eVByb3RvY29sR3VpZA0KPiANCj4gZGlmZiAtLWdpdA0KPiBhL0R5bmFtaWNUYWJsZXNQa2cvSW5j bHVkZS9Qcm90b2NvbC9EeW5hbWljVGFibGVGYWN0b3J5UHJvdG9jb2wuaA0KPiBiL0R5bmFtaWNU YWJsZXNQa2cvSW5jbHVkZS9Qcm90b2NvbC9EeW5hbWljVGFibGVGYWN0b3J5UHJvdG9jb2wuaA0K PiBpbmRleCBiMTFmYzBjOWYxLi5lMjk4MjM2MzExIDEwMDY0NA0KPiAtLS0gYS9EeW5hbWljVGFi bGVzUGtnL0luY2x1ZGUvUHJvdG9jb2wvRHluYW1pY1RhYmxlRmFjdG9yeVByb3RvY29sLmgNCj4g KysrIGIvRHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL1Byb3RvY29sL0R5bmFtaWNUYWJsZUZhY3Rv cnlQcm90b2NvbC5oDQo+IEBAIC0xLDUgKzEsNiBAQA0KPiAgLyoqIEBmaWxlDQo+IA0KPiArICBD b3B5cmlnaHQgKGMpIDIwMjMsIE5WSURJQSBDT1JQT1JBVElPTiAmIEFGRklMSUFURVMuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+ICAgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTksIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgQEAgLTIzOSw2ICsyNDAsMTUgQEANCj4gdHlwZWRlZiBz dHJ1Y3QgRHluYW1pY1RhYmxlRmFjdG9yeVByb3RvY29sIHsNCj4gICAgRURLSUlfRFlOQU1JQ19U QUJMRV9GQUNUT1JZX0RFUkVHSVNURVJfRFRfVEFCTEVfR0VORVJBVE9SDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXJlZ2lz dGVyRHRUYWJsZUdlbmVyYXRvcjsNCj4gDQo+ICsgIEVES0lJX0RZTkFNSUNfVEFCTEVfRkFDVE9S WV9TTUJJT1NfVEFCTEVfQUREX0hBTkRMRQ0KPiArDQo+ICsgQWRkU21iaW9zSGFuZGxlOw0KPiAr DQo+ICsgIEVES0lJX0RZTkFNSUNfVEFCTEVfRkFDVE9SWV9TTUJJT1NfVEFCTEVfR0VUX0hBTkRM RQ0KPiArDQo+ICsgR2V0U21iaW9zSGFuZGxlOw0KPiArDQo+ICsgIEVES0lJX0RZTkFNSUNfVEFC TEVfRkFDVE9SWV9TTUJJT1NfVEFCTEVfR0VUX0hBTkRMRV9FWA0KPiArDQo+ICsgR2V0U21iaW9z SGFuZGxlRXg7DQo+ICsNCj4gICAgLyoqIFBvaW50ZXIgdG8gdGhlIGRhdGEgc3RydWN0dXJlIHRo YXQgaG9sZHMgdGhlDQo+ICAgICAgICBsaXN0IG9mIHJlZ2lzdGVyZWQgdGFibGUgZ2VuZXJhdG9y cw0KPiAgICAqLw0KPiBkaWZmIC0tZ2l0IGEvRHluYW1pY1RhYmxlc1BrZy9JbmNsdWRlL1NtYmlv c1RhYmxlR2VuZXJhdG9yLmgNCj4gYi9EeW5hbWljVGFibGVzUGtnL0luY2x1ZGUvU21iaW9zVGFi bGVHZW5lcmF0b3IuaA0KPiBpbmRleCA5MzRkNTZjOTBkLi5hOWY4MTk5YTNiIDEwMDY0NA0KPiAt LS0gYS9EeW5hbWljVGFibGVzUGtnL0luY2x1ZGUvU21iaW9zVGFibGVHZW5lcmF0b3IuaA0KPiAr KysgYi9EeW5hbWljVGFibGVzUGtnL0luY2x1ZGUvU21iaW9zVGFibGVHZW5lcmF0b3IuaA0KPiBA QCAtMSw1ICsxLDYgQEANCj4gIC8qKiBAZmlsZQ0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIz LCBOVklESUEgQ09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K PiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE5LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gDQo+ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50IEBAIC0xMCw3ICsxMSw3IEBAICAjZGVmaW5lDQo+IFNNQklPU19UQUJMRV9HRU5FUkFU T1JfSF8NCj4gDQo+ICAjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9TbUJpb3MuaD4NCj4gLQ0K PiArI2luY2x1ZGUgPFByb3RvY29sL1NtYmlvcy5oPg0KPiAgI2luY2x1ZGUgPFRhYmxlR2VuZXJh dG9yLmg+DQo+IA0KPiAgI3ByYWdtYSBwYWNrKDEpDQo+IEBAIC0xMjEsMTIgKzEyMiwyMSBAQCB0 eXBlZGVmIGVudW0gU3RkU21iaW9zVGFibGVHZW5lcmF0b3JJZCB7DQo+ICAgICAgICAgICAgICBF VGFibGVHZW5lcmF0b3JOYW1lU3BhY2VTdGQsICAgICAgICBcDQo+ICAgICAgICAgICAgICBUYWJs ZUlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICAgICAgICAgICAgICApDQo+ICsj ZGVmaW5lIE1BWF9TTUJJT1NfSEFORExFUyAgKDI1NSkNCj4gDQo+ICAvKiogRm9yd2FyZCBkZWNs YXJhdGlvbnMuDQo+ICAqLw0KPiAgdHlwZWRlZiBzdHJ1Y3QgQ29uZmlndXJhdGlvbk1hbmFnZXJQ cm90b2NvbA0KPiBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0w7DQo+ICB0eXBl ZGVmIHN0cnVjdCBDbVN0ZE9ialNtYmlvc1RhYmxlSW5mbw0KPiBDTV9TVERfT0JKX1NNQklPU19U QUJMRV9JTkZPOw0KPiAgdHlwZWRlZiBzdHJ1Y3QgU21iaW9zVGFibGVHZW5lcmF0b3IgICAgICAg ICBTTUJJT1NfVEFCTEVfR0VORVJBVE9SOw0KPiArdHlwZWRlZiBzdHJ1Y3QgRHluYW1pY1RhYmxl RmFjdG9yeVByb3RvY29sDQo+IEVES0lJX0RZTkFNSUNfVEFCTEVfRkFDVE9SWV9QUk9UT0NPTDsN Cj4gK3R5cGVkZWYgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01fT0JKRUNU X1RPS0VOOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBTbWJpb3NIYW5kbGVDbU9iak1hcCB7DQo+ ICsgIFNNQklPU19UQUJMRV9HRU5FUkFUT1JfSUQgICAgU21iaW9zR2VuZXJhdG9ySWQ7DQo+ICsg IFNNQklPU19IQU5ETEUgICAgICAgICAgICAgICAgU21iaW9zVGJsSGFuZGxlOw0KPiArICBDTV9P QkpFQ1RfVE9LRU4gICAgICAgICAgICAgIFNtYmlvc0NtVG9rZW47DQo+ICt9IFNNQklPU19IQU5E TEVfTUFQOw0KPiANCj4gIC8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgZGVzY3JpYmVzIHRoZSBp bnRlcmZhY2UgdG8gU01CSU9TIHRhYmxlIGJ1aWxkDQo+ICAgICAgZnVuY3Rpb25zIHByb3ZpZGVk IGJ5IHRoZSBTTUJJT1MgdGFibGUgZ2VuZXJhdG9yIGFuZCBjYWxsZWQgYnkgdGhlDQo+IEBAIC0x NDMsOSArMTUzLDExIEBAIHR5cGVkZWYgc3RydWN0IFNtYmlvc1RhYmxlR2VuZXJhdG9yDQo+IFNN QklPU19UQUJMRV9HRU5FUkFUT1I7DQo+ICAqKi8NCj4gIHR5cGVkZWYgRUZJX1NUQVRVUyAoKlNN QklPU19UQUJMRV9HRU5FUkFUT1JfQlVJTERfVEFCTEUpICgNCj4gICAgSU4gIENPTlNUIFNNQklP U19UQUJMRV9HRU5FUkFUT1IgICAgICAgICAgICAgICAgICAgICAgICAqR2VuZXJhdG9yLA0KPiAr ICBJTiAgQ09OU1QgRURLSUlfRFlOQU1JQ19UQUJMRV9GQUNUT1JZX1BST1RPQ09MICAqQ09OU1QN Cj4gKyBUYWJsZUZhY3RvcnlQcm90b2NvbCwNCj4gICAgSU4gICAgICAgIENNX1NURF9PQkpfU01C SU9TX1RBQkxFX0lORk8gICAgICAgICAgKkNPTlNUICBTbWJpb3NUYWJsZUluZm8sDQo+ICAgIElO ICBDT05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICpDT05TVA0KPiBD ZmdNZ3JQcm90b2NvbCwNCj4gLSAgT1VUICAgICAgIFNNQklPU19TVFJVQ1RVUkUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKlRhYmxlDQo+ICsgIE9VVCAgICAgICBTTUJJT1NfU1RSVUNU VVJFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipUYWJsZSwNCj4gKyAgT1VUICAgICAg IENNX09CSkVDVF9UT0tFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQ21PYmpUb2tl bg0KPiAgICApOw0KPiANCj4gIC8qKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgZGVzY3JpYmVzIHRo ZSBpbnRlcmZhY2UgdG8gdXNlZCBieSB0aGUgQEAgLTE2MywzMg0KPiArMTc1LDE0NyBAQCB0eXBl ZGVmIEVGSV9TVEFUVVMNCj4gKCpTTUJJT1NfVEFCTEVfR0VORVJBVE9SX0JVSUxEX1RBQkxFKSAo ICAqKi8gIHR5cGVkZWYgRUZJX1NUQVRVUw0KPiAoKlNNQklPU19UQUJMRV9HRU5FUkFUT1JfRlJF RV9UQUJMRSkgKA0KPiAgICBJTiAgQ09OU1QgU01CSU9TX1RBQkxFX0dFTkVSQVRPUiAgICAgICAg ICAgICAgICAgICAgICAgICpHZW5lcmF0b3IsDQo+ICsgIElOICBDT05TVCBFREtJSV9EWU5BTUlD X1RBQkxFX0ZBQ1RPUllfUFJPVE9DT0wgICpDT05TVA0KDQpuaXQ6IG9uZSBzcGFjZSB0b28gbWFu eSBiZWZvcmUgKkNPTlNUICh0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgd2l0aCB0aGUgb3Ro ZXIgKkNPTlNUKQ0KDQo+ICsgVGFibGVGYWN0b3J5UHJvdG9jb2wsDQo+ICAgIElOICBDT05TVCBD TV9TVERfT0JKX1NNQklPU19UQUJMRV9JTkZPICAgICAgICAgICpDT05TVA0KPiBTbWJpb3NUYWJs ZUluZm8sDQo+ICAgIElOICBDT05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9D T0wgICpDT05TVA0KPiBDZmdNZ3JQcm90b2NvbCwNCj4gICAgSU4gICAgICAgIFNNQklPU19TVFJV Q1RVUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKlRhYmxlDQo+ICAgICk7DQo+IA0K PiArLyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBkZXNjcmliZXMgdGhlIGludGVyZmFjZSB0byBT TUJJT1MgdGFibGUgYnVpbGQNCj4gKyAgICBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIFNNQklP UyB0YWJsZSBnZW5lcmF0b3IgYW5kIGNhbGxlZCBieSB0aGUNCj4gKyAgICBUYWJsZSBNYW5hZ2Vy IHRvIGJ1aWxkIGFuIFNNQklPUyB0YWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgR2VuZXJh dG9yICAgICAgIFBvaW50ZXIgdG8gdGhlIFNNQklPUyB0YWJsZSBnZW5lcmF0b3IuDQo+ICsgIEBw YXJhbSBbaW5dICBTbWJpb3NUYWJsZUluZm8gUG9pbnRlciB0byB0aGUgU01CSU9TIHRhYmxlIGlu Zm9ybWF0aW9uLg0KPiArICBAcGFyYW0gW2luXSAgQ2ZnTWdyUHJvdG9jb2wgIFBvaW50ZXIgdG8g dGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFByb3RvY29sIGludGVyZmFjZS4NCj4gKyAgQHBhcmFtIFtvdXRdIFRhYmxlICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBnZW5lcmF0ZWQgU01CSU9TIHRhYmxlLg0KPiArDQo+ICsgIEByZXR1 cm4gRUZJX1NVQ0NFU1MgIElmIHRoZSB0YWJsZSBpcyBnZW5lcmF0ZWQgc3VjY2Vzc2Z1bGx5IG9y IG90aGVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlIGNvZGVzIGFzIHJldHVy bmVkIGJ5IHRoZSBnZW5lcmF0b3IuDQo+ICsqKi8NCj4gK3R5cGVkZWYgRUZJX1NUQVRVUyAoKlNN QklPU19UQUJMRV9HRU5FUkFUT1JfQlVJTERfVEFCTEVFWCkgKA0KPiArICBJTiAgQ09OU1QgU01C SU9TX1RBQkxFX0dFTkVSQVRPUiAgICAgICAgICAgICAgICAgICAgICAgICAqR2VuZXJhdG9yLA0K PiArICBJTiAgQ09OU1QgRURLSUlfRFlOQU1JQ19UQUJMRV9GQUNUT1JZX1BST1RPQ09MICAgKkNP TlNUDQo+IFRhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArICBJTiAgICAgICAgQ01fU1REX09CSl9T TUJJT1NfVEFCTEVfSU5GTyAgICAgICAgICAqQ09OU1QgICBTbWJpb3NUYWJsZUluZm8sDQo+ICsg IElOICBDT05TVCBFREtJSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICpDT05TVA0K PiBDZmdNZ3JQcm90b2NvbCwNCj4gKyAgT1VUICAgICAgIFNNQklPU19TVFJVQ1RVUkUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKioqVGFibGUsDQo+ICsgIE9VVCAgICAgICBDTV9PQkpF Q1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqQ21PYmplY3RUb2tlbiwN Cj4gKyAgT1VUICAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkNP TlNUICAgVGFibGVDb3VudA0KPiArICApOw0KPiArDQo+ICsvKiogVGhpcyBmdW5jdGlvbiBwb2lu dGVyIGRlc2NyaWJlcyB0aGUgaW50ZXJmYWNlIHRvIHVzZWQgYnkgdGhlDQo+ICsgICAgVGFibGUg TWFuYWdlciB0byBnaXZlIHRoZSBnZW5lcmF0b3IgYW4gb3Bwb3J0dW5pdHkgdG8gZnJlZQ0KPiAr ICAgIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBidWlsZGluZyB0aGUgU01CSU9TIHRhYmxl Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBHZW5lcmF0b3IgICAgICAgUG9pbnRlciB0byB0aGUg U01CSU9TIHRhYmxlIGdlbmVyYXRvci4NCj4gKyAgQHBhcmFtIFtpbl0gIFNtYmlvc1RhYmxlSW5m byBQb2ludGVyIHRvIHRoZSBTTUJJT1MgdGFibGUgaW5mb3JtYXRpb24uDQo+ICsgIEBwYXJhbSBb aW5dICBDZmdNZ3JQcm90b2NvbCAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2Vy DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wgaW50ZXJmYWNlLg0K PiArICBAcGFyYW0gW2luXSAgVGFibGUgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGdlbmVyYXRl ZCBTTUJJT1MgdGFibGUuDQo+ICsNCj4gKyAgQHJldHVybiAgRUZJX1NVQ0NFU1MgSWYgZnJlZWQg c3VjY2Vzc2Z1bGx5IG9yIG90aGVyIGZhaWx1cmUgY29kZXMNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGFzIHJldHVybmVkIGJ5IHRoZSBnZW5lcmF0b3IuDQo+ICsqKi8NCj4gK3R5cGVkZWYg RUZJX1NUQVRVUyAoKlNNQklPU19UQUJMRV9HRU5FUkFUT1JfRlJFRV9UQUJMRUVYKSAoDQo+ICsg IElOICBDT05TVCBTTUJJT1NfVEFCTEVfR0VORVJBVE9SICAgICAgICAgICAgICAgICAgICAgICAg KkdlbmVyYXRvciwNCj4gKyAgSU4gIENPTlNUIEVES0lJX0RZTkFNSUNfVEFCTEVfRkFDVE9SWV9Q Uk9UT0NPTCAgKkNPTlNUDQo+IFRhYmxlRmFjdG9yeVByb3RvY29sLA0KPiArICBJTiAgQ09OU1Qg Q01fU1REX09CSl9TTUJJT1NfVEFCTEVfSU5GTyAgICAgICAgICAqQ09OU1QNCj4gU21iaW9zVGFi bGVJbmZvLA0KPiArICBJTiAgQ09OU1QgRURLSUlfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BST1RP Q09MICAqQ09OU1QNCj4gQ2ZnTWdyUHJvdG9jb2wsDQo+ICsgIElOICAgICAgICBTTUJJT1NfU1RS VUNUVVJFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqVGFibGUsDQo+ICsgIElOICAg ICAgICBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipDbU9i amVjdFRva2VuLA0KPiArICBJTiAgQ09OU1QgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlQ291bnQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIFRoaXMgZnVu Y3Rpb24gcG9pbnRlciBkZXNjcmliZXMgdGhlIGludGVyZmFjZSB0byB1c2VkIGJ5IHRoZQ0KPiAr ICAgIFRhYmxlIE1hbmFnZXIgdG8gZ2l2ZSB0aGUgZ2VuZXJhdG9yIGFuIG9wcG9ydHVuaXR5IHRv IGFkZA0KPiArICAgIGFuIFNNQklPUyBIYW5kbGUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQgYnkgdGhlIER5bmFtaWMgVGFibGUgTWFuYWdlciB0byBhZGQgYSBuZXdseQ0KPiAr IGFkZGVkICBTTUJJT1MgVGFibGUgT1IgaXQgY2FuIGJlIGNhbGxlZCBieSBhbiBTTUJJT1MgVGFi bGUgZ2VuZXJhdG9yDQo+ICsgdG8gY3JlYXRlICBhbmQgYWRkIGEgbmV3IFNNQklPUyBIYW5kbGUg aWYgdGhlcmUgaXMgYSByZWZlcmVuY2UgdG8NCj4gKyBhbm90aGVyIHRhYmxlIGFuZCAgaWYgdGhl cmUgaXMgYSBnZW5lcmF0b3IgZm9yIHRoYXQgdGFibGUgdGhhdCBoYXNuJ3QgYmVlbg0KPiBjYWxs ZWQgeWV0Lg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBTbWJpb3MgICAgICAgICBQb2ludGVyIHRv IHRoZSBTTUJJT1MgcHJvdG9jb2wuDQo+ICsgIEBwYXJhbSBbaW5dICBTbWJpb3NIYW5kbGUgICBQ b2ludGVyIHRvIGFuIFNNQklPUyBoYW5kbGUgKGVpdGhlcg0KPiBnZW5lcmF0ZWQgYnkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYmlvc0R4ZSBEcml2ZXIgb3IgIFNNQklPU19I QU5ETEVfUElfUkVTRVJWRUQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEg aGFuZGxlIG5lZWRzIHRvIGJlIGdlbmVyYXRlZCkuDQo+ICsgIEBwYXJhbSBbaW5dICBDbU9iamVj dFRva2VuICBUaGUgQ00gT2JqZWN0IHRva2VuIGZvciB0aGF0IGlzIHVzZWQgdG8NCj4gZ2VuZXJh dGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQklPUyByZWNvcmQuDQo+ICsg IEBwYXJhbSBbaW5dICBHZW5lcmF0b3JJZCAgICBUaGUgU01CSU9TIHRhYmxlIGdlbmVyYXRvciBJ ZC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzLg0KPiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBVbmFibGUgdG8gYWRkIHRoZSBoYW5kbGUu DQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1ZXN0ZWQgZ2VuZXJh dG9yIGlzIG5vdCBmb3VuZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0 aGUgbGlzdCBvZiByZWdpc3RlcmVkIGdlbmVyYXRvcnMuDQo+ICsqKi8NCj4gK3R5cGVkZWYgRUZJ X1NUQVRVUyAoRUZJQVBJDQo+ICpFREtJSV9EWU5BTUlDX1RBQkxFX0ZBQ1RPUllfU01CSU9TX1RB QkxFX0FERF9IQU5ETEUpKA0KPiArICBJTiAgRUZJX1NNQklPU19QUk9UT0NPTCAgICAgICAgKlNt YmlvcywNCj4gKyAgSU4gIFNNQklPU19IQU5ETEUgICAgICAgICAgICAgICpTbWJpb3NIYW5kbGUs DQo+ICsgIElOICBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICBDbU9iamVjdFRva2VuLA0KPiAr ICBJTiAgU01CSU9TX1RBQkxFX0dFTkVSQVRPUl9JRCAgR2VuZXJhdG9ySWQNCj4gKyAgKTsNCj4g Kw0KPiArLyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBkZXNjcmliZXMgdGhlIGludGVyZmFjZSB0 byB1c2VkIGJ5IHRoZQ0KPiArICAgIFRhYmxlIE1hbmFnZXIgdG8gZ2l2ZSB0aGUgZ2VuZXJhdG9y IGFuIG9wcG9ydHVuaXR5IHRvIGZpbmQNCj4gKyAgICBhbiBTTUJJT1MgSGFuZGxlLg0KPiArDQo+ ICsgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBTTUJJT1MgdGFibGUgZ2VuZXJhdG9y IHRvIGZpbmQgYW4NCj4gKyBTTUJJT1MgIGhhbmRsZSBuZWVkZWQgYXMgcGFydCBvZiBnZW5lcmF0 aW5nIGFuIFNNQklPUyBUYWJsZS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgQ21PYmplY3RUb2tl biAgICBUaGUgQ00gT2JqZWN0IHRva2VuIHVzZWQgdG8gZ2VuZXJhdGUgdGhlDQo+IFNNQklPUw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuDQo+ICsNCj4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCj4gKyAgQHJldHZhbCBFRklfTk9U X0ZPVU5EICAgICAgICAgVGhlIHJlcXVlc3RlZCBnZW5lcmF0b3IgaXMgbm90IGZvdW5kDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQg Z2VuZXJhdG9ycy4NCj4gKyoqLw0KPiArdHlwZWRlZiBTTUJJT1NfSEFORExFX01BUCAqKEVGSUFQ SQ0KPiAqRURLSUlfRFlOQU1JQ19UQUJMRV9GQUNUT1JZX1NNQklPU19UQUJMRV9HRVRfSEFORExF KSgNCj4gKyAgSU4gIENNX09CSkVDVF9UT0tFTiAgICAgIENtT2JqZWN0VG9rZW4NCj4gKyAgKTsN Cj4gKw0KPiArLyoqIEZpbmQgYW5kIHJldHVybiBTTUJJT1MgaGFuZGxlIGJhc2VkIG9uIGFzc29j aWF0ZWQgQ00gb2JqZWN0IHRva2VuLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBHZW5lcmF0b3JJ ZCAgICAgU01CSU9TIGdlbmVyYXRvciBJRCB1c2VkIHRvIGJ1aWxkIHRoZSBTTUJJT1MNCj4gVGFi bGUuDQo+ICsgIEBwYXJhbSBbaW5dICBDbU9iamVjdFRva2VuICAgVG9rZW4gb2YgdGhlIENNX09C SkVDVCB1c2VkIHRvIGJ1aWxkIHRoZQ0KPiBTTUJJT1MgVGFibGUuDQo+ICsNCj4gKyAgQHJldHVy biAgU01CSU9TIGhhbmRsZSBvZiB0aGUgdGFibGUgYXNzb2NpYXRlZCB3aXRoIFNtYmlvc1RhYmxl SWQgYW5kDQo+ICsgICAgICAgICAgIENtT2JqZWN0VG9rZW4gaWYgZm91bmQuIE90aGVyd2lzZSwg cmV0dXJucyAweEZGRkYuDQo+ICsqKi8NCj4gK3R5cGVkZWYgVUlOVDE2IChFRklBUEkNCj4gKypF REtJSV9EWU5BTUlDX1RBQkxFX0ZBQ1RPUllfU01CSU9TX1RBQkxFX0dFVF9IQU5ETEVfRVgpKA0K PiArICBJTiAgU01CSU9TX1RBQkxFX0dFTkVSQVRPUl9JRCAgR2VuZXJhdG9ySWQsDQo+ICsgIElO ICBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICBDbU9ialRva2VuDQo+ICsgICk7DQo+ICsNCj4g IC8qKiBUaGUgU01CSU9TX1RBQkxFX0dFTkVSQVRPUiBzdHJ1Y3R1cmUgcHJvdmlkZXMgYW4gaW50 ZXJmYWNlIHRoYXQgdGhlDQo+ICAgICAgVGFibGUgTWFuYWdlciBjYW4gdXNlIHRvIGludm9rZSB0 aGUgZnVuY3Rpb25zIHRvIGJ1aWxkIFNNQklPUyB0YWJsZXMuDQo+ICAqLw0KPiAgdHlwZWRlZiBz dHJ1Y3QgU21iaW9zVGFibGVHZW5lcmF0b3Igew0KPiAgICAvLy8gVGhlIFNNQklPUyB0YWJsZSBn ZW5lcmF0b3IgSUQuDQo+IC0gIFNNQklPU19UQUJMRV9HRU5FUkFUT1JfSUQgICAgICAgICAgICAg R2VuZXJhdG9ySUQ7DQo+ICsgIFNNQklPU19UQUJMRV9HRU5FUkFUT1JfSUQgICAgICAgICAgICAg ICBHZW5lcmF0b3JJRDsNCj4gDQo+ICAgIC8vLyBTdHJpbmcgZGVzY3JpYmluZyB0aGUgRFQgdGFi bGUNCj4gICAgLy8vIGdlbmVyYXRvci4NCj4gLSAgQ09OU1QgQ0hBUjE2ICAgICAgICAgICAgICAg ICAgICAgICAgICAqRGVzY3JpcHRpb247DQo+ICsgIENPTlNUIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqRGVzY3JpcHRpb247DQo+IA0KPiAgICAvLy8gVGhlIFNNQklPUyB0YWJs ZSB0eXBlLg0KPiAtICBTTUJJT1NfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU7 DQo+ICsgIFNNQklPU19UWVBFICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlOw0KPiAN Cj4gICAgLy8vIFNNQklPUyB0YWJsZSBidWlsZCBmdW5jdGlvbiBwb2ludGVyLg0KPiAtICBTTUJJ T1NfVEFCTEVfR0VORVJBVE9SX0JVSUxEX1RBQkxFICAgIEJ1aWxkU21iaW9zVGFibGU7DQo+ICsg IFNNQklPU19UQUJMRV9HRU5FUkFUT1JfQlVJTERfVEFCTEUgICAgICBCdWlsZFNtYmlvc1RhYmxl Ow0KPiArDQo+ICsgIC8qKiBUaGUgZnVuY3Rpb24gdG8gZnJlZSBhbnkgcmVzb3VyY2VzDQo+ICsg ICAgICBhbGxvY2F0ZWQgZm9yIGJ1aWxkaW5nIHRoZSBTTUJJT1MgdGFibGUuDQo+ICsgICovDQo+ ICsgIFNNQklPU19UQUJMRV9HRU5FUkFUT1JfRlJFRV9UQUJMRSAgICAgICBGcmVlVGFibGVSZXNv dXJjZXM7DQo+ICsNCj4gKyAgLy8vIFNNQklPUyB0YWJsZSBleHRlbmRlZCBidWlsZCBmdW5jdGlv biBwb2ludGVyLg0KPiArICBTTUJJT1NfVEFCTEVfR0VORVJBVE9SX0JVSUxEX1RBQkxFRVggICAg QnVpbGRTbWJpb3NUYWJsZUV4Ow0KPiANCj4gICAgLyoqIFRoZSBmdW5jdGlvbiB0byBmcmVlIGFu eSByZXNvdXJjZXMNCj4gICAgICAgIGFsbG9jYXRlZCBmb3IgYnVpbGRpbmcgdGhlIFNNQklPUyB0 YWJsZS4NCj4gICAgKi8NCj4gLSAgU01CSU9TX1RBQkxFX0dFTkVSQVRPUl9GUkVFX1RBQkxFICAg ICBGcmVlVGFibGVSZXNvdXJjZXM7DQo+ICsgIFNNQklPU19UQUJMRV9HRU5FUkFUT1JfRlJFRV9U QUJMRUVYICAgICBGcmVlVGFibGVSZXNvdXJjZXNFeDsNCj4gIH0gU01CSU9TX1RBQkxFX0dFTkVS QVRPUjsNCj4gDQo+ICAvKiogUmVnaXN0ZXIgU01CSU9TIHRhYmxlIGZhY3RvcnkgZ2VuZXJhdG9y Lg0KPiBAQCAtMjI5LDYgKzM1Niw2OSBAQCBEZXJlZ2lzdGVyU21iaW9zVGFibGVHZW5lcmF0b3Ig KA0KPiAgICBJTiBDT05TVCBTTUJJT1NfVEFCTEVfR0VORVJBVE9SICAgICAgICAgICAgICAgICAq Q09OU1QgIEdlbmVyYXRvcg0KPiAgICApOw0KPiANCj4gKy8qKiBBZGQgU01CSU9TIEhhbmRsZS4N Cj4gKw0KPiArICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgRHluYW1pYyBUYWJsZSBN YW5hZ2VyIHRvIGFkZCBhIG5ld2x5DQo+ICsgYWRkZWQgIFNNQklPUyBUYWJsZSBPUiBpdCBjYW4g YmUgY2FsbGVkIGJ5IGFuIFNNQklPUyBUYWJsZSBnZW5lcmF0b3INCj4gKyB0byBjcmVhdGUgIGFu ZCBhZGQgYSBuZXcgU01CSU9TIEhhbmRsZSBpZiB0aGVyZSBpcyBhIHJlZmVyZW5jZSB0bw0KPiAr IGFub3RoZXIgdGFibGUgYW5kICBpZiB0aGVyZSBpcyBhIGdlbmVyYXRvciBmb3IgdGhhdCB0YWJs ZSB0aGF0IGhhc24ndCBiZWVuDQo+IGNhbGxlZCB5ZXQuDQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0g IFNtYmlvcyAgICAgICAgIFBvaW50ZXIgdG8gdGhlIFNNQklPUyBwcm90b2NvbC4NCj4gKyAgQHBh cmFtIFtpbl0gIFNtYmlvc0hhbmRsZSAgIFBvaW50ZXIgdG8gYW4gU01CSU9TIGhhbmRsZSAoZWl0 aGVyDQo+IGdlbmVyYXRlZCBieQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU21i aW9zRHhlIERyaXZlciBvciAgU01CSU9TX0hBTkRMRV9QSV9SRVNFUlZFRA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgYSBoYW5kbGUgbmVlZHMgdG8gYmUgZ2VuZXJhdGVkKS4N Cj4gKyAgQHBhcmFtIFtpbl0gIENtT2JqZWN0VG9rZW4gIFRoZSBDTSBPYmplY3QgdG9rZW4gZm9y IHRoYXQgaXMgdXNlZCB0bw0KPiBnZW5lcmF0ZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU01CSU9TIHJlY29yZC4NCj4gKyAgQHBhcmFtIFtpbl0gIEdlbmVyYXRvcklkICAgIFRo ZSBTTUJJT1MgdGFibGUgZ2VuZXJhdG9yIElkLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMg IFVuYWJsZSB0byBhZGQgdGhlIGhhbmRsZS4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgVGhlIHJlcXVlc3RlZCBnZW5lcmF0b3IgaXMgbm90IGZvdW5kDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgZ2VuZXJhdG9y cy4NCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtBZGRTbWJpb3NIYW5kbGUg KA0KPiArICBJTiBFRklfU01CSU9TX1BST1RPQ09MICAgICAgICAgKlNtYmlvcywNCj4gKyAgSU4g U01CSU9TX0hBTkRMRSAgICAgICAgICAgICAgICpTbWJpb3NIYW5kbGUsDQo+ICsgIElOIENNX09C SkVDVF9UT0tFTiAgICAgICAgICAgICBDbU9iamVjdFRva2VuLA0KPiArICBJTiAgU01CSU9TX1RB QkxFX0dFTkVSQVRPUl9JRCAgR2VuZXJhdG9ySWQNCj4gKyAgKTsNCj4gKw0KPiArLyoqIEZpbmQg U01CSU9TIEhhbmRsZSBnaXZlbiB0aGUgQ00gT2JqZWN0IHRva2VuIHVzZWQgdG8gZ2VuZXJhdGUg dGhlDQo+IFNNQklPUw0KPiArICAgIHJlY29yZC4uDQoNCm5pdDogcmVtb3ZlIG9uZSBvZiB0aGUg ZnVsbCBzdG9wcy4NCg0KSm9zZQ0KDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg YnkgdGhlIFNNQklPUyB0YWJsZSBnZW5lcmF0b3IgdG8gZmluZCBhbg0KPiArIFNNQklPUyAgaGFu ZGxlIG5lZWRlZCBhcyBwYXJ0IG9mIGdlbmVyYXRpbmcgYW4gU01CSU9TIFRhYmxlLg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dICBDbU9iamVjdFRva2VuICAgIFRoZSBDTSBPYmplY3QgdG9rZW4gdXNl ZCB0byBnZW5lcmF0ZSB0aGUNCj4gU01CSU9TDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlY29yZC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBT dWNjZXNzLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcmVxdWVzdGVk IGdlbmVyYXRvciBpcyBub3QgZm91bmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW4gdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBnZW5lcmF0b3JzLg0KPiArKiovDQo+ICtTTUJJ T1NfSEFORExFX01BUCAqDQo+ICtFRklBUEkNCj4gK0ZpbmRTbWJpb3NIYW5kbGUgKA0KPiArICBJ TiBDTV9PQkpFQ1RfVE9LRU4gIENtT2JqZWN0VG9rZW4NCj4gKyAgKTsNCj4gKw0KPiArLyoqIEZp bmQgYW5kIHJldHVybiBTTUJJT1MgaGFuZGxlIGJhc2VkIG9uIGFzc29jaWF0ZWQgQ00gb2JqZWN0 IHRva2VuLg0KPiArDQo+ICsgIEBwYXJhbSBbaW5dICBHZW5lcmF0b3JJZCAgICAgU01CSU9TIGdl bmVyYXRvciBJRCB1c2VkIHRvIGJ1aWxkIHRoZSBTTUJJT1MNCj4gVGFibGUuDQo+ICsgIEBwYXJh bSBbaW5dICBDbU9iamVjdFRva2VuICAgVG9rZW4gb2YgdGhlIENNX09CSkVDVCB1c2VkIHRvIGJ1 aWxkIHRoZQ0KPiBTTUJJT1MgVGFibGUuDQo+ICsNCj4gKyAgQHJldHVybiAgU01CSU9TIGhhbmRs ZSBvZiB0aGUgdGFibGUgYXNzb2NpYXRlZCB3aXRoIFNtYmlvc1RhYmxlSWQgYW5kDQo+ICsgICAg ICAgICAgIENtT2JqZWN0VG9rZW4gaWYgZm91bmQuIE90aGVyd2lzZSwgcmV0dXJucyAweEZGRkYu DQo+ICsqKi8NCj4gK1VJTlQxNg0KPiArRUZJQVBJDQo+ICtGaW5kU21iaW9zSGFuZGxlRXggKA0K PiArICBJTiAgU01CSU9TX1RBQkxFX0dFTkVSQVRPUl9JRCAgR2VuZXJhdG9ySWQsDQo+ICsgIElO ICBDTV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICBDbU9ialRva2VuDQo+ICsgICk7DQo+ICsNCj4g ICNwcmFnbWEgcGFjaygpDQo+IA0KPiAgI2VuZGlmIC8vIFNNQklPU19UQUJMRV9HRU5FUkFUT1Jf SF8NCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvU21CaW9z LmgNCj4gYi9NZGVQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1NtQmlvcy5oDQo+IGluZGV4 IDg5OTg1YmI0MTguLmM0MDk4NjE1N2MgMTAwNjQ0DQo+IC0tLSBhL01kZVBrZy9JbmNsdWRlL0lu ZHVzdHJ5U3RhbmRhcmQvU21CaW9zLmgNCj4gKysrIGIvTWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlT dGFuZGFyZC9TbUJpb3MuaA0KPiBAQCAtMjgsNiArMjgsMTQgQEAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIC8vLw0KPiAjZGVmaW5lIFNNQklPU19IQU5ETEVf UElfUkVTRVJWRUQgIDB4RkZGRQ0KPiANCj4gKy8vLw0KPiArLy8vIFJlZmVyZW5jZSBTTUJJT1Mg My42LCBjaGFwdGVyIDYuMS4yLg0KPiArLy8vIFVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB3 aGVuIHJlZmVycmluZyB0byBhbm90aGVyIHN0cnVjdHVyZeKAmXMNCj4gK2hhbmRsZSwgdGhlIHZh bHVlIC8vLyAwRkZGRmggaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZWZlcmVuY2VkDQo+ ICtoYW5kbGUgaXMgbm90IGFwcGxpY2FibGUgb3IgZG9lcyBub3QgLy8vIGV4aXN0Lg0KPiArLy8v DQo+ICsjZGVmaW5lIFNNQklPU19IQU5ETEVfSU5WQUxJRCAgMHhGRkZGDQo+ICsNCj4gIC8vLw0K PiAgLy8vIFJlZmVyZW5jZSBTTUJJT1MgMi42LCBjaGFwdGVyIDMuMS4zLg0KPiAgLy8vIEVhY2gg dGV4dCBzdHJpbmcgaXMgbGltaXRlZCB0byA2NCBzaWduaWZpY2FudCBjaGFyYWN0ZXJzIGR1ZSB0 byBzeXN0ZW0gTUlGDQo+IGxpbWl0YXRpb25zLg0KPiAtLQ0KPiAyLjE3LjENCj4gDQo+IA0KPiAN Cj4gDQo+IA0KDQoNCgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlv dSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25s aW5lICgjMTA4MDIwKTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTA4 MDIwCk11dGUgVGhpcyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAwMzYxNTU5Lzc2ODYx NzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQot PS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=