From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.6.80; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=evan.lloyd@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr60080.outbound.protection.outlook.com [40.107.6.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A2051222CF1AA for ; Fri, 12 Jan 2018 04:28:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=88U5mvWZhMEjzWsfmO6zXty2ezvBnGtQN/z+m31cAfU=; b=CWDaMD4X4ZoZ8/b46bVZik9DbXMwkINFA74a2dSbA0Jwd28AP7aUDclQ64PW8vT6lL9sKGYqGJgXzv/Ouz1yEjD97Y+4vKczjfNWH9WEA3Xu90/g6A2t5yzIThFooOE11zYYfS93YbQVgOM+3iSy66HZKdgPCCb9TLzszF1lPxU= Received: from HE1PR08MB2684.eurprd08.prod.outlook.com (10.170.248.27) by HE1PR08MB0492.eurprd08.prod.outlook.com (10.161.120.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.366.8; Fri, 12 Jan 2018 12:33:49 +0000 Received: from HE1PR08MB2684.eurprd08.prod.outlook.com ([fe80::2cba:9ca8:24d:df80]) by HE1PR08MB2684.eurprd08.prod.outlook.com ([fe80::2cba:9ca8:24d:df80%13]) with mapi id 15.20.0386.009; Fri, 12 Jan 2018 12:33:49 +0000 From: Evan Lloyd To: "ruiyu.ni@intel.com" , "'jaben.carsey@intel.com'" , "jiewen.yao@intel.com" , "edk2-devel (edk2-devel@lists.01.org)" CC: Matteo Carlini , "leif.lindholm@linaro.org" , Sami Mujawar , nd Thread-Topic: [edk2] [PATCH] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTddr5ksOaOrGaqUCwoIGc3gD0AKNwVYiQ Date: Fri, 12 Jan 2018 12:33:49 +0000 Message-ID: References: <20171215192837.19552-1-evan.lloyd@arm.com> In-Reply-To: <20171215192837.19552-1-evan.lloyd@arm.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR08MB0492; 7:wxzCIZd/MXs+k8g+drRGp+3L1yxWtFXZNkJ4j8SViyqbJ1nK5cceufzGGxEVIOoQ8riPxgrope0fZtavjKN3xVPdgfVsRqK+WZrDVzlSxNcN6vnMFR66d68k9toMjrvN2NBUEMbJ14bf8eNfGZQz71uFTGS54NoUv6W1UkJ9vngSQx2mygzHx312fGw3m17SQG9K0jZHPMVfRg2LfgpXGWHO1v4ciwFj8aw69YDD5NCdR30lZZI92syMHKPS3Yyi x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: f20f586b-878a-40ca-9c8c-08d559b8bb53 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(49563074)(7193020); SRVR:HE1PR08MB0492; x-ms-traffictypediagnostic: HE1PR08MB0492: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863)(180628864354917)(166708455590820)(131327999870524)(162533806227266)(211171220733660)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(102415395)(6040470)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231023)(944501075)(6055026)(6041268)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR08MB0492; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR08MB0492; x-forefront-prvs: 0550778858 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(376002)(346002)(366004)(396003)(39380400002)(189003)(199004)(13464003)(9686003)(99936001)(6436002)(6306002)(5250100002)(72206003)(478600001)(229853002)(16200700003)(575784001)(53936002)(7736002)(45080400002)(2501003)(86362001)(6116002)(74316002)(305945005)(53946003)(2900100001)(3846002)(33656002)(4326008)(55016002)(68736007)(25786009)(2473003)(2906002)(966005)(8936002)(66066001)(53376002)(16799955002)(5660300001)(3660700001)(76176011)(81166006)(99286004)(316002)(7696005)(97736004)(2950100002)(53546011)(8676002)(59450400001)(6506007)(54906003)(105586002)(110136005)(81156014)(15188155005)(14454004)(106356001)(102836004)(3280700002)(491001)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR08MB0492; H:HE1PR08MB2684.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: z0kiIrGSTds0QBya8QRXEL+1Ur7gsckaoIq3Kn8WtPdMTRfS+uK7NvEXeqQQZkdXiaOcMIfZS2KVCNtvWeNd9A== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: f20f586b-878a-40ca-9c8c-08d559b8bb53 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jan 2018 12:33:49.1654 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB0492 Subject: FW: [PATCH] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jan 2018 12:28:46 -0000 X-Groupsio-MsgNum: 20073 Content-Language: en-US Content-Type: multipart/mixed; boundary="_002_HE1PR08MB26848CA68FCD72D2A89255168B170HE1PR08MB2684eurp_" --_002_HE1PR08MB26848CA68FCD72D2A89255168B170HE1PR08MB2684eurp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBzdWJtaXR0ZWQgdGhpcyBwYXRjaCBmcm9tIFNhbWkgbGFzdCBtb250aCwgYnV0IHRoZSBlLW1h aWwgYWRkcmVzc2VzIGdvdCBtZXNzZWQgdXAuDQpJdCBpcyBhIG5ldyB2ZXJzaW9uIG9mIGhpcyAi QWNwaVZpZXciIHVwZGF0ZWQgaW4gcmVzcG9uc2UgdG8gY29tbWVudHMsIGFuZCB0byBtYXRjaCBB Q1BJIDYuMi4NCkl0IGFsc28gbm93IG1hdGNoZXMgRUNSIDE3ODQgKGZvciBjb21tYW5kIGxpbmUg b3B0aW9ucykuDQpUaGUgY29kZSBjYW4gYmUgc2VlbiBhdCBodHRwczovL2dpdGh1Yi5jb20vRXZh bkxsb3lkL3RpYW5vY29yZS90cmVlLzE4OF9hY3Bpdmlld192Mg0KRnJvbSBodHRwczovL2J1Z3pp bGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTgwNSwgaXQgY2FuIG5vdyBiZSBhZGRl ZCB0byBlZGsyIChub3QganVzdCBzdGFnaW5nKS4NCg0KUmVnYXJkcywNCkV2YW4NCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVs LWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YgZXZhbi5sbG95ZEBhcm0uY29tDQpT ZW50OiAxNSBEZWNlbWJlciAyMDE3IDE5OjI5DQpUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcN CkNjOiAicnVpeXUubmlAaW50ZWwuY29tIkBhcm0uY29tOyAiTWF0dGVvLkNhcmxpbmlAYXJtLmNv bSJAYXJtLmNvbTsgIm5kQGFybS5jb20iQGFybS5jb207ICJhcmQuYmllc2hldXZlbEBsaW5hcm8u b3JnIkBhcm0uY29tOyAic2FtaS5tdWphd2FyQGFybS5jb20iQGFybS5jb207ICJqaWV3ZW4ueWFv QGludGVsLmNvbSAiQGFybS5jb207ICJsZWlmLmxpbmRob2xtQGxpbmFyby5vcmciQGFybS5jb20N ClN1YmplY3Q6IFtlZGsyXSBbUEFUQ0hdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBk dW1wIEFDUEkgdGFibGVzDQoNCkZyb206IFNhbWkgTXVqYXdhciA8c2FtaS5tdWphd2FyQGFybS5j b20+DQoNClRoaXMgcHJvZ3JhbSBpcyBwcm92aWRlZCB0byBhbGxvdyBleGFtaW5hdGlvbiBvZiBB Q1BJIHRhYmxlIGNvbnRlbnRzDQpmcm9tIHRoZSBVRUZJIFNoZWxsLiAgVGhpcyBjYW4gaGVscCB3 aXRoIGludmVzdGlnYXRpb25zLCBlc3BlY2lhbGx5IGF0DQp0aGF0IHN0YWdlIHdoZXJlIHRoZSB0 YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBPUyB0byBib290Lg0KVGhlIHByb2dyYW0gaXMgbm90 IGV4aGF1c3RpdmUsIGFuZCBvbmx5IGVuY2Fwc3VsYXRlcyBkZXRhaWxlZCBrbm93bGVkZ2UNCm9m IGEgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuDQoNCkRlZmF1bHQgYmVoYXZpb3VyIGlz IHRvIGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgYWxsIHRhYmxlcyBpbnN0YWxsZWQuDQonS25vd24n IHRhYmxlIHR5cGVzIHdpbGwgYmUgcGFyc2VkIGFuZCBkaXNwbGF5ZWQgd2l0aCBkZXNjcmlwdGlv bnMgYW5kDQpmaWVsZCB2YWx1ZXMuICBXaGVyZSBhcHByb3ByaWF0ZSBhIGRlZ3JlZSBvZiBjb25z aXN0ZW5jeSBjaGVja2luZyBpcw0KZG9uZSBhbmQgZXJyb3JzIG1heSBiZSByZXBvcnRlZCBpbiB0 aGUgb3V0cHV0Lg0KT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYW4gYXJy YXkgb2YgSGV4YWRlY2ltYWwgYnl0ZXMuDQoNClRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLCB0aGUg LXQgYW5kIC1iIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgYQ0KYmluYXJ5IGZpbGUg aW1hZ2Ugb2YgYSB0YWJsZSB0aGF0IGNhbiBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvcg0KaW52ZXN0 aWdhdGlvbiB1c2luZyB0b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcu ICBUaGlzIGlzDQplc3BlY2lhbGx5IHJlbGV2YW50IGZvciBBTUwgdHlwZSB0YWJsZXMgbGlrZSBE U0RUIGFuZCBTU0RULg0KDQpUaGUgaW5zcGlyYXRpb24gZm9yIHRoaXMgaXMgdGhlIGV4aXN0aW5n IHNtYmlvc3ZpZXcgRGVidWcxIFNoZWxsDQpjb21tYW5kLg0KDQpNYW55IHRhYmxlcyBhcmUgbm90 IGV4cGxpY2l0bHkgaGFuZGxlZCwgaW4gcGFydCBiZWNhdXNlIG5vIGV4YW1wbGVzIGFyZQ0KYXZh aWxhYmxlIGZvciBvdXIgdGVzdGluZy4NCg0KVGhlIHByb2dyYW0gaXMgZGVzaWduZWQgdG8gYmUg ZXh0ZW5kZWQgdG8gbmV3IHRhYmxlcyB3aXRoIG1pbmltYWwNCmVmZm9ydCwgYW5kIGNvbnRyaWJ1 dGlvbnMgYXJlIGludml0ZWQuDQoNCkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJp YnV0aW9uIEFncmVlbWVudCAxLjENClNpZ25lZC1vZmYtYnk6IFNhbWkgTXVqYXdhciA8c2FtaS5t dWphd2FyQGFybS5jb20+DQpTaWduZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFuLmxsb3lkQGFy bS5jb20+DQotLS0NCiBTaGVsbFBrZy9TaGVsbFBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstDQogU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQmdydFBhcnNlckxpYi5pbmYgICAgICAg ICAgICAgICB8ICA1NSArKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL0RiZzJQYXJzZXJMaWIuaW5mICAgICAgICAgICAgICAgfCAgNTYgKysNCiBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9GYWR0UGFyc2VyTGliLmluZiAg ICAgICAgICAgICAgIHwgIDU2ICsrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvR3RkdFBhcnNlckxpYi5pbmYgICAgICAgICAgICAgICB8ICA1NiArKw0KIFNo ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0lvcnRQYXJzZXJMaWIu aW5mICAgICAgICAgICAgICAgfCAgNTYgKysNCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9NYWR0UGFyc2VyTGliLmluZiAgICAgICAgICAgICAgIHwgIDU2ICsr DQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvTWNmZ1BhcnNl ckxpYi5pbmYgICAgICAgICAgICAgICB8ICA1NiArKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1NsaXRQYXJzZXJMaWIuaW5mICAgICAgICAgICAgICAgfCAg NTYgKysNCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9TcGNy UGFyc2VyTGliLmluZiAgICAgICAgICAgICAgIHwgIDU2ICsrDQogU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3JhdFBhcnNlckxpYi5pbmYgICAgICAgICAgICAg ICB8ICA1NiArKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1NzZHRQYXJzZXJMaWIuaW5mICAgICAgICAgICAgICAgfCAgNTYgKysNCiBTaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIuaW5mIHwgIDYwICsrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvWHNkdFBhcnNlckxpYi5pbmYgICAgICAgICAgICAgICB8ICA1NCArKw0KIFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuaCAgICAgICAg ICAgICAgICAgICAgfCA0MjMgKysrKysrKysrKysrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmggICAgICAgICAgICAgICB8IDEy OCArKysrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNw aVZpZXcuaCAgICAgICAgICAgICAgICAgICAgICB8ICA4NyArKysNCiBTaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIu aCAgIHwgIDMyICsNCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9BY3BpUGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwgNjE0ICsrKysrKysrKysrKysrKysN CiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQ YXJzZXIuYyAgICAgICAgICAgICAgIHwgMjEyICsrKysrKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMgICAgICAgICAgICAgICAgICAgICAg fCA1OTcgKysrKysrKysrKysrKysrKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL0JncnRQYXJzZXIuYyAgICAgICAgICAgICAgICAgICAgfCAxMTUgKysrDQog U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvRGJnMlBhcnNlci5j ICAgICAgICAgICAgICAgICAgICB8IDI4MSArKysrKysrKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RzZHRQYXJzZXIuYyAgICAgICAgICAgICAgICAgICAg fCAgOTEgKysrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv RmFkdFBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8IDMwNCArKysrKysrKw0KIFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0d0ZHRQYXJzZXIuYyAgICAgICAg ICAgICAgICAgICAgfCAzMzQgKysrKysrKysrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvSW9ydFBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8IDczMCAr KysrKysrKysrKysrKysrKysrKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL01hZHRQYXJzZXIuYyAgICAgICAgICAgICAgICAgICAgfCAzNTQgKysrKysrKysr Kw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL01jZmdQYXJz ZXIuYyAgICAgICAgICAgICAgICAgICAgfCAxMzcgKysrKw0KIFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1JzZHBQYXJzZXIuYyAgICAgICAgICAgICAgICAgICAg fCAxODIgKysrKysNCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9TbGl0UGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwgMTg1ICsrKysrDQogU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3BjclBhcnNlci5jICAgICAgICAg ICAgICAgICAgICB8IDIwNSArKysrKysNCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9TcmF0UGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwgMzcxICsrKysr KysrKysNCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Tc2R0 UGFyc2VyLmMgICAgICAgICAgICAgICAgICAgIHwgIDkwICsrKw0KIFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5j ICAgfCAxMDYgKysrDQogU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvWHNkdFBhcnNlci5jICAgICAgICAgICAgICAgICAgICB8IDE5NSArKysrKysNCiBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIudW5pIHwgMTI3ICsrKysNCiAzNyBmaWxlcyBjaGFuZ2VkLCA2NjMxIGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCg0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL1NoZWxsUGtnLmRl YyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KaW5kZXggNDhkNTBiODdiMzA3MDY4YTA1MTkyY2Q1 ZThhYzEzYWY0ZjI4YzIyYS4uNmY0YjcyMTgwOTA1NTNlNDZmMWYxODgzNTAwMDY2MTllYjcxZmUw MiAxMDA2NDQNCi0tLSBhL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KKysrIGIvU2hlbGxQa2cvU2hl bGxQa2cuZGVjDQpAQCAtMyw2ICszLDcgQEANCiAjDQogIyAoQykgQ29weXJpZ2h0IDIwMTMtMjAx NCBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLjxCUj4NCiAjIENvcHly aWdodCAoYykgMjAwOSAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCisjIENvcHlyaWdodCAoYykgMjAxNiwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KICMNCiAjIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlcg0KICMgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4NCkBAIC01Niw3ICs1Nyw3IEBAIFtHdWlkc10NCiAgIGdTaGVsbE5l dHdvcmsySGlpR3VpZCAgICAgICAgICAgPSB7MHgxNzRiMmI1LCAweGY1MDUsIDB4NGIxMiwgezB4 YWEsIDB4NjAsIDB4NTksIDB4ZGYsIDB4ZjgsIDB4ZDYsIDB4ZWEsIDB4Mzd9fQ0KICAgZ1NoZWxs VGZ0cEhpaUd1aWQgICAgICAgICAgICAgICA9IHsweDczOGE5MzE0LCAweDgyYzEsIDB4NDU5Miwg ezB4OGYsIDB4ZjcsIDB4YzEsIDB4YmQsIDB4ZjEsIDB4YjIsIDB4MGUsIDB4ZDR9fQ0KICAgZ1No ZWxsQmNmZ0hpaUd1aWQgICAgICAgICAgICAgICA9IHsweDVmNWY2MDVkLCAweDE1ODMsIDB4NGEy ZCwgezB4YTYsIDB4YjIsIDB4ZWIsIDB4MTIsIDB4ZGEsIDB4YjQsIDB4YTIsIDB4YjZ9fQ0KLQ0K KyAgZ1NoZWxsQWNwaVZpZXdIaWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0LCAweGVkOGYs IDB4NGZmYywgezB4YjUsIDB4ZWYsIDB4MmUsIDB4ZjUsIDB4NWUsIDB4MjQsIDB4OTMsIDB4MmF9 fQ0KICAgIyBGSUxFX0dVSUQgYXMgZGVmaW5lZCBpbiBTaGVsbFBrZy9BcHBsaWNhdGlvbi9TaGVs bC9TaGVsbC5pbmYNCiAgIGdVZWZpU2hlbGxGaWxlR3VpZCAgICAgICAgICAgICAgPSB7MHg3YzA0 YTU4MywgMHg5ZTNlLCAweDRmMWMsIHsweGFkLCAweDY1LCAweGUwLCAweDUyLCAweDY4LCAweGQw LCAweGI0LCAweGQxfX0NCiANCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9CZ3J0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0JncnRQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uMDVjZGI0NTVhMjdjODhkZGVhMzFhODA4MzhlODU1NGQ3NzBkZTM0Zg0KLS0tIC9kZXYvbnVs bA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQmdy dFBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTUgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5 cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisj ICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0K KyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9IEJncnRQ YXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0gQzRDQ0Q5QjYtRjYyRi00QjA2LUEyNUQtRjgx NTUwN0I0OUUwDQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBE WEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RS VUNUT1IgICAgPSBCZ3J0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0g QmdydFBhcnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIEJncnRQYXJzZXIuYw0K Kw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBr Zy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFz c2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxp Yg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlM aWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVM aWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitb UHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9EYmcyUGFyc2VyTGliLmluZiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RiZzJQYXJzZXJMaWIu aW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uNjM0NmQxYmVjNjg5YzFhMTdjNjY0NDVkNTU1MzU5YzZlNGFlN2Fj OA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvRGJnMlBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmls ZQ0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KKyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQorIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBm b3VuZCBhdA0KKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCisjDQorIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJF U0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0K Kw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05B TUUgICAgICA9IERiZzJQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0gRkIxRjExQUEtRjJG MC00RDU4LThEMDYtMzY1RENCNjNBNjE0DQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9E VUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RS SVZFUg0KKyAgQ09OU1RSVUNUT1IgICAgPSBEYmcyUGFyc2VyTGliQ29uc3RydWN0b3INCisgIERF U1RSVUNUT1IgICAgID0gRGJnMlBhcnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisg IERiZzJQYXJzZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBT aGVsbFBrZy9TaGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQor DQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0K KyAgQmFzZU1lbW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hl bGxMaWINCisgIFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVm aUJvb3RTZXJ2aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWIN CisgIEZpbGVIYW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tG aXhlZFBjZF0NCisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYg LS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9GYWR0 UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0ZhZHRQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkxNTNjODdkMmRkNThjMjE0NTU4 ODg2ZGNhYzQ3YWFlY2U4ZjY2Nw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvRmFkdFBhcnNlckxpYi5pbmYNCkBAIC0wLDAg KzEsNTYgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1Mg T1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAw MDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9IEZhZHRQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAg ICAgID0gMTUwN0VDOEEtMkJENC00NjBCLTk4MzAtRDc4RDBCRDdFMEU2DQorICBWRVJTSU9OX1NU UklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NM QVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RSVUNUT1IgICAgPSBGYWR0UGFyc2VyTGli Q29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0gRmFkdFBhcnNlckxpYkRlc3RydWN0b3IN CisNCitbU291cmNlc10NCisgIEZhZHRQYXJzZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBr Zy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9N ZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlv bkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxs Q29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2Vydmlj ZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhp aUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10N CisNCisNCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9HdGR0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL0d0ZHRQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkx ODg4YjQzY2MzNTRjN2Q1MWI3YjdjMDg4MjdkZmI3YWU5ODRjNQ0KLS0tIC9kZXYvbnVsbA0KKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvR3RkdFBhcnNl ckxpYi5pbmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5cmlnaHQg KGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFT SVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5G X1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9IEd0ZHRQYXJzZXJM aWINCisgIEZJTEVfR1VJRCAgICAgID0gNDYzOEE1NzItNTlDMC00QUFGLUI5OTAtQjk1RkE2N0Q5 NjU2DQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJ VkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RSVUNUT1Ig ICAgPSBHdGR0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0gR3RkdFBh cnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIEd0ZHRQYXJzZXIuYw0KKw0KK1tQ YWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN CisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0K KyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAg RGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlMaWINCisg IFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGli DQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVMaWINCisg IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitbUHJvdG9j b2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Jb3J0UGFyc2VyTGliLmluZiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0lvcnRQYXJzZXJMaWIuaW5m DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uMWE2NjRkZTczZDM1MTE2NWM1MzllYTA4ZmYzZGFiOWI5YzY3NTNiNQ0K LS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvSW9ydFBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmlsZQ0K KyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KKyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQorIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3Vu ZCBhdA0KKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAN CisjDQorIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0K K1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUg ICAgICA9IElvcnRQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0gMzFDRjlBNTAtMEIyQS00 RjMzLUJEMkMtMzYwNkUzNUFBOUVGDQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxF X1RZUEUgICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZF Ug0KKyAgQ09OU1RSVUNUT1IgICAgPSBJb3J0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RS VUNUT1IgICAgID0gSW9ydFBhcnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIElv cnRQYXJzZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVs bFBrZy9TaGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQor W0xpYnJhcnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAg QmFzZU1lbW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxM aWINCisgIFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJv b3RTZXJ2aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisg IEZpbGVIYW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhl ZFBjZF0NCisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYgLS1n aXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9NYWR0UGFy c2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L01hZHRQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIwZmRkYTI1NjI5ODIzMTYzZGEzMzA1 ZDY2OWZkNzVjNTM0Mzk0ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvTWFkdFBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEs NTYgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1Ig SU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEw MDE5DQorICBCQVNFX05BTUUgICAgICA9IE1hZHRQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAg ID0gQ0EwQTZBRTEtMTFBMS00OEM4LUE1NjEtRDJDRkE5MTc5NjJBDQorICBWRVJTSU9OX1NUUklO RyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNT ICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RSVUNUT1IgICAgPSBNYWR0UGFyc2VyTGliQ29u c3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0gTWFkdFBhcnNlckxpYkRlc3RydWN0b3INCisN CitbU291cmNlc10NCisgIE1hZHRQYXJzZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9N ZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxp Yg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29t bWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2VydmljZXNU YWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhpaUxp Yg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisN CisNCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9NY2ZnUGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL01jZmdQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ0NzY0 NDNlMDkzZGNkMTUyNzRhNGNiMDM1NTUzNjlmYmE1MDk3Nw0KLS0tIC9kZXYvbnVsbA0KKysrIGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvTWNmZ1BhcnNlckxp Yi5pbmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5cmlnaHQgKGMp IDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZF UlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9IE1jZmdQYXJzZXJMaWIN CisgIEZJTEVfR1VJRCAgICAgID0gNDdFOEMxMEQtNkNFMC00NTVDLUE3QkMtODNBN0IwODk1QzlG DQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVS DQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RSVUNUT1IgICAg PSBNY2ZnUGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0gTWNmZ1BhcnNl ckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIE1jZmdQYXJzZXIuYw0KKw0KK1tQYWNr YWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCisg IE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAg TWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAgRGVi dWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlMaWINCisgIFVl ZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQor ICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVMaWINCisgIFVl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitbUHJvdG9jb2xz XQ0KKw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9TbGl0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NsaXRQYXJzZXJMaWIuaW5mDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uYjdiZTJkZWVmNDlhZmQyOWJkZTVkMzlmOTgzNGQ0ZDIzODY1YTM2ZA0KLS0t IC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvU2xpdFBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmlsZQ0KKyMN CisjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KKyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQor IyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisj DQorIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tE ZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAg ICA9IFNsaXRQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0gM0RDRjczMzMtMzY3Qi00RDQw LTg1NkEtRkYwRjczRkI2QjQ5DQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZ UEUgICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0K KyAgQ09OU1RSVUNUT1IgICAgPSBTbGl0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNU T1IgICAgID0gU2xpdFBhcnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIFNsaXRQ YXJzZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBr Zy9TaGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xp YnJhcnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFz ZU1lbW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWIN CisgIFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZp bGVIYW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBj ZF0NCisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYgLS1naXQg YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9TcGNyUGFyc2Vy TGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Nw Y3JQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAwNjYwM2M5YWVmYTA4Mjc2OTRjMDVlY2Yx YzQwYzQ2ZWIyNmRiMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3BjclBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTYg QEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i c2QtbGljZW5zZS5waHANCisjDQorIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIg VEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1Q TElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5 DQorICBCQVNFX05BTUUgICAgICA9IFNwY3JQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0g MDhDMTdDNEMtRTYyRC00QUU0LTk1QzUtREVGNDJBMjRBNTZDDQorICBWRVJTSU9OX1NUUklORyA9 IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9 IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RSVUNUT1IgICAgPSBTcGNyUGFyc2VyTGliQ29uc3Ry dWN0b3INCisgIERFU1RSVUNUT1IgICAgID0gU3BjclBhcnNlckxpYkRlc3RydWN0b3INCisNCitb U291cmNlc10NCisgIFNwY3JQYXJzZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQ a2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0K KyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFu ZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJs ZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0K KyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisN CisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9TcmF0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1NyYXRQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcxM2RkMDU3 ZThiMTA3Y2M3YTQwZDNiZTA1MjUyOTM0Nzg2MDBhNw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3JhdFBhcnNlckxpYi5p bmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5cmlnaHQgKGMpIDIw MTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisjICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBM aWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQor IyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0KKyAgSU5GX1ZFUlNJ T04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9IFNyYXRQYXJzZXJMaWINCisg IEZJTEVfR1VJRCAgICAgID0gMTA2QjIyQ0MtMTQ5OS00NkQ0LUI2RkItMzQxQkI4NzhGQkM1DQor ICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQor ICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RSVUNUT1IgICAgPSBT cmF0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0gU3JhdFBhcnNlckxp YkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIFNyYXRQYXJzZXIuYw0KKw0KK1tQYWNrYWdl c10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCisgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFzc2VzXQ0KKyAgTWVt b3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxpYg0KKyAgRGVidWdM aWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlMaWINCisgIFVlZmlS dW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQorICBQ Y2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVMaWINCisgIFVlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitbUHJvdG9jb2xzXQ0K Kw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Tc2R0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NzZHRQYXJzZXJMaWIuaW5mDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uM2RlOGUyZmFlNTU0ZDAxNzA1MzJmYTQ1MGFmODc2YTNkMzMwMWYzZg0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvU3NkdFBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTYgQEANCisjIyBAZmlsZQ0KKyMNCisj ICBDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K KyMNCisjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K KyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisjDQor IyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZp bmVzXQ0KKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9 IFNzZHRQYXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0gQkMyRkY1MzgtOEZFQi00OEUzLTky RDEtRUNBMDFCMjc3QjJDDQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUg ICAgPSBEWEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAg Q09OU1RSVUNUT1IgICAgPSBTc2R0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1Ig ICAgID0gU3NkdFBhcnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIFNzZHRQYXJz ZXIuYw0KKw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9T aGVsbFBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJh cnlDbGFzc2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1l bW9yeUxpYg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisg IFVlZmlMaWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2 aWNlc1RhYmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVI YW5kbGVMaWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0N CisNCitbUHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIuaW5mIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmluZg0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1 YjY5NzA4N2M3N2FlYmZjNGE0M2E1Y2RjZDk3ZTE3MDdlYzBkZWMNCi0tLSAvZGV2L251bGwNCisr KyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi5pbmYNCkBAIC0wLDAgKzEsNjAgQEANCisjIyAgQGZpbGUNCisj IFByb3ZpZGVzIFNoZWxsICdhY3BpdmlldycgY29tbWFuZCBmdW5jdGlvbnMNCisjDQorIyBDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQorIw0KKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN CisjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCisjICB3aGljaCBhY2NvbXBhbmllcyB0aGlz IGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQg YXQNCisjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQor IyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjDQorIw0KKyMjDQor DQorW0RlZmluZXNdDQorICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEw MDA2DQorICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBVZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWINCisgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IEZCNUIzMDVF LTg0RjUtNDYxRi05NDBELTgyRDM0NTc1N0FGQQ0KKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAg ICAgICAgID0gVUVGSV9BUFBMSUNBVElPTg0KKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAg ICAgID0gMS4wDQorICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBOVUxMfFVFRklf QVBQTElDQVRJT04gVUVGSV9EUklWRVINCisgIENPTlNUUlVDVE9SICAgICAgICAgICAgICAgICAg ICA9IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAg ICAgICAgICAgICAgICAgICA9IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliRGVzdHJ1Y3Rvcg0KKw0K K1tTb3VyY2VzLmNvbW1vbl0NCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkNCisg IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jDQorICBVZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIuaA0KKyAgQWNwaVZpZXcuYw0KKyAgQWNwaVBhcnNlci5jDQorICBBY3BpVGFibGVQYXJz ZXIuYw0KKyAgUnNkcFBhcnNlci5jDQorDQorW1BhY2thZ2VzXQ0KKyAgTWRlUGtnL01kZVBrZy5k ZWMNCisgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBr Zy5kZWMNCisNCitbTGlicmFyeUNsYXNzZXNdDQorICBNZW1vcnlBbGxvY2F0aW9uTGliDQorICBC YXNlTGliDQorICBCYXNlTWVtb3J5TGliDQorICBEZWJ1Z0xpYg0KKyAgU2hlbGxDb21tYW5kTGli DQorICBTaGVsbExpYg0KKyAgVWVmaUxpYg0KKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGli DQorICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCisgIFBjZExpYg0KKyAgSGlpTGliDQorICBQ cmludExpYg0KKyAgRmlsZUhhbmRsZUxpYg0KKw0KK1tGaXhlZFBjZF0NCisgIGdFZmlTaGVsbFBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsUHJvZmlsZU1hc2sgIyMgQ09OU1VNRVMNCisNCitbR3Vp ZHNdDQorICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAgICMjIENPTlNVTUVTICMjIEhJ SQ0KKyAgZ0VmaUFjcGlUYWJsZUd1aWQgICAgICAgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VN RVMgIyMgU3lzdGVtVGFibGUNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9Yc2R0UGFyc2VyTGliLmluZiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1hzZHRQYXJzZXJMaWIuaW5mDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uZjBlOGRjMGUxNGIyNGFjMjk4MjlmODE5YzM4NDY0YWQxNDljNzdjMQ0KLS0tIC9kZXYvbnVs bA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvWHNk dFBhcnNlckxpYi5pbmYNCkBAIC0wLDAgKzEsNTQgQEANCisjIyBAZmlsZQ0KKyMNCisjICBDb3B5 cmlnaHQgKGMpIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMNCisj ICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRCBMaWNlbnNlDQorIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyMgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisjDQorIyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyIgQkFTSVMsDQorIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisjIw0KKw0KK1tEZWZpbmVzXQ0K KyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQorICBCQVNFX05BTUUgICAgICA9IFhzZHRQ YXJzZXJMaWINCisgIEZJTEVfR1VJRCAgICAgID0gQTU3RUQ3QTItNENENi00MjM5LTlBNEQtRjdG MERCRENGQ0ZBDQorICBWRVJTSU9OX1NUUklORyA9IDEuMA0KKyAgTU9EVUxFX1RZUEUgICAgPSBE WEVfRFJJVkVSDQorICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KKyAgQ09OU1RS VUNUT1IgICAgPSBYc2R0UGFyc2VyTGliQ29uc3RydWN0b3INCisgIERFU1RSVUNUT1IgICAgID0g WHNkdFBhcnNlckxpYkRlc3RydWN0b3INCisNCitbU291cmNlc10NCisgIFhzZHRQYXJzZXIuYw0K Kw0KK1tQYWNrYWdlc10NCisgIE1kZVBrZy9NZGVQa2cuZGVjDQorICBTaGVsbFBrZy9TaGVsbFBr Zy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorDQorW0xpYnJhcnlDbGFz c2VzXQ0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KKyAgQmFzZUxpYg0KKyAgQmFzZU1lbW9yeUxp Yg0KKyAgRGVidWdMaWINCisgIFNoZWxsQ29tbWFuZExpYg0KKyAgU2hlbGxMaWINCisgIFVlZmlM aWINCisgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1Rh YmxlTGliDQorICBQY2RMaWINCisgIEhpaUxpYg0KKyAgUHJpbnRMaWINCisgIEZpbGVIYW5kbGVM aWINCisgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KKw0KK1tGaXhlZFBjZF0NCisNCitb UHJvdG9jb2xzXQ0KKw0KK1tHdWlkc10NCisNCisNCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmggYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmgNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5kMjA0ZmQ1Y2I1Y2E5MmZlYmM1MTQ4NDllOGMzMWZmY2ZmMjVlZGQ2DQotLS0gL2Rldi9u dWxsDQorKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9B Y3BpUGFyc2VyLmgNCkBAIC0wLDAgKzEsNDIzIEBADQorLyoqDQorICBIZWFkZXIgZmlsZSBmb3Ig QUNQSSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlIGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBS RVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQor KiovDQorDQorI2lmbmRlZiBBQ1BJUEFSU0VSX0hfDQorI2RlZmluZSBBQ1BJUEFSU0VSX0hfDQor DQorI2RlZmluZSBPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIICAzNg0KKw0KKy8qKiBUaGlzIGZ1 bmN0aW9uIHByaW50cyBhIEdVSUQgdG8gU1RET1VULg0KKw0KKyAgQHBhcmFtIFtpbl0gR3VpZCAg ICBQb2ludGVyIHRvIGEgR1VJRCB0byBwcmludC4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICAgVGhlIEdVSUQgd2FzIHByaW50ZWQuDQorICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgIFRoZSBpbnB1dCB3YXMgTlVMTC4NCisqLw0KK0VGSV9TVEFUVVMNCitQcmlu dEd1aWQgKA0KKyAgSU4gRUZJX0dVSUQqIEd1aWQNCisgICk7DQorDQorLyoqIFRoaXMgZnVuY3Rp b24gdmVyaWZpZXMgdGhlIEFDUEkgdGFibGUgY2hlY2tzdW0uDQorDQorICBUaGlzIGZ1bmN0aW9u IHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3IgdGhlIEFDUEkgdGFibGUgYW5kIG9wdGlvbmFsbHkN CisgIHByaW50cyB0aGUgc3RhdHVzLg0KKw0KKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVF IGxvZyB0aGUgc3RhdHVzIG9mIHRoZSBjaGVja3N1bS4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5d IExlbmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KKw0KKyAgQHJldHZhbCBUUlVFICAg ICAgICAgVGhlIGNoZWNrc3VtIGlzIE9LLg0KKyAgQHJldHZhbCBGQUxTRSAgICAgICAgVGhlIGNo ZWNrc3VtIGZhaWxlZC4NCisqLw0KK0JPT0xFQU4NCitWZXJpZnlDaGVja3N1bSAoDQorICBJTiBC T09MRUFOIExvZywNCisgIElOIFVJTlQ4KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBMZW5ndGgNCisg ICk7DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVu Z3RoIG9mIHRoZSBidWZmZXIuDQorKi8NCitWT0lEDQorRHVtcFJhdyAoDQorICBJTiBVSU5UOCog UHRyLA0KKyAgSU4gVUlOVDMyIExlbmd0aA0KKyAgKTsNCisNCisvKiogVGhpcyBmdW5jdGlvbiB0 cmFjZXMgMSBieXRlIG9mIGRhdHVtIGFzIHNwZWNpZmllZCBpbiB0aGUNCisgICAgZm9ybWF0IHN0 cmluZy4NCisNCisgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRy YWNpbmcgdGhlIGRhdGEuDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8NCitWT0lEDQorRHVtcFVpbnQ4ICgNCisgIElOIENPTlNU IENIQVIxNiogRm9ybWF0LA0KKyAgSU4gVUlOVDgqICAgICAgICBQdHINCisgICk7DQorDQorLyoq IFRoaXMgZnVuY3Rpb24gdHJhY2VzIDIgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhl DQorICAgIGZvcm1hdCBzdHJpbmcuDQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3Jt YXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyovDQorVk9JRA0KK0R1bXBVaW50 MTYgKA0KKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQorICBJTiBVSU5UOCogICAgICAgIFB0 cg0KKyAgKTsNCisNCisvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBieXRlcyBvZiBkYXRhIGFz IHNwZWNpZmllZCBpbiB0aGUNCisgICAgZm9ybWF0IHN0cmluZy4NCisNCisgIEBwYXJhbSBbaW5d IEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQorICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8N CitWT0lEDQorRHVtcFVpbnQzMiAoDQorICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCisgIElO IFVJTlQ4KiAgICAgICAgUHRyDQorICApOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4 IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGJ5IHRoZQ0KKyAgICBmb3JtYXQgc3RyaW5nLg0K Kw0KKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0 aGUgZGF0YS4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCisqLw0KK1ZPSUQNCitEdW1wVWludDY0ICgNCisgIElOIENPTlNUIENIQVIx NiogRm9ybWF0LA0KKyAgSU4gVUlOVDgqICAgICAgICBQdHINCisgICk7DQorDQorLyoqIFRoaXMg ZnVuY3Rpb24gdHJhY2VzIDMgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KKyAg IGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCisNCisgIElm IG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0K Kw0KKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KKyovDQorVk9JRA0KK0R1bXAzQ2hhcnMgKA0KKyAgSU4gQ09OU1Qg Q0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQorICBJTiBVSU5UOCogICAgICAgIFB0cg0KKyAgKTsN CisNCisvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBv cHRpb25hbGx5DQorICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lm aWVkLg0KKw0KKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBt dXN0IGJlIE5VTEwuDQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBz dHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8NCitWT0lEDQorRHVtcDRDaGFycyAo DQorICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCisgIElOIFVJTlQ4KiAgICAg ICAgUHRyDQorICApOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA2IGNoYXJhY3RlcnMg d2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCisgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0 cmluZyBpZiBzcGVjaWZpZWQuDQorDQorICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmll ZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCisNCisgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0 aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCisgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisqLw0KK1ZPSUQN CitEdW1wNkNoYXJzICgNCisgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KKyAg SU4gVUlOVDgqICAgICAgICBQdHINCisgICk7DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2Vz IDggY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KKyAgIGZvcm1hdGVkIHVzaW5n IHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCisNCisgIElmIG5vIGZvcm1hdCBzdHJp bmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KKw0KKyAgQHBhcmFtIFtp bl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KKyovDQorVk9JRA0KK0R1bXA4Q2hhcnMgKA0KKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQg T1BUSU9OQUwsDQorICBJTiBVSU5UOCogICAgICAgIFB0cg0KKyAgKTsNCisNCisvKiogVGhpcyBm dW5jdGlvbiBpbmRlbnRzIGFuZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmllbGQgTmFtZS4NCisN CisgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRo ZSBnbG9iYWwgdGFibGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGds b2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieSBkZWZhdWx0Ow0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaG93ZXZlciB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24gZW50cnkgdG8gdGhlDQorICAg ICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhlIGluZGVudCB2 YWx1ZSBwcm92aWRlZCB0bw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VBY3BpKCkg YW5kIHJlc3RvcmVkIGJhY2sgb24gZXhpdC4gVGhlcmVmb3JlDQorICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGUgdG90YWwgaW5kZW50IGluIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uIGZy b20NCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkLg0KKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFt ZS4NCisqLw0KK1ZPSUQNCitQcmludEZpZWxkTmFtZSAoDQorICBJTiBVSU5UMzIgICAgICAgICBJ bmRlbnQsDQorICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5hbWUNCispOw0KKw0KKy8qKiBUaGlz IGZ1bmN0aW9uIHBvaW50ZXIgaXMgdGhlIHRlbXBsYXRlIGZvciBjdXN0b21pemluZyB0aGUgdHJh Y2Ugb3V0cHV0DQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRy YWNpbmcgdGhlIGRhdGEgYXMgc3BlY2lmaWVkIGJ5DQorICAgICAgICAgICAgICAgICAgICAgIHRo ZSAnRm9ybWF0JyBtZW1iZXIgb2YgQUNQSV9QQVJTRVIuDQorICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8NCit0eXBlZGVmIFZPSUQg KCpGTlBUUl9QUklOVF9GT1JNQVRURVIpKENPTlNUIENIQVIxNiogRm9ybWF0LCBVSU5UOCogUHRy KTsNCisNCisvKiogVGhpcyBmdW5jdGlvbiBwb2ludGVyIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgdmFs aWRhdGluZyBhbiBBQ1BJIHRhYmxlIGZpZWxkLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBbaW5dIENv bnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGFzIHNwZWNpZmll ZCBieQ0KKyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0NvbnRleHQnIG1lbWJlciBvZiB0aGUg QUNQSV9QQVJTRVIuDQorICAgICAgICAgICAgICAgICAgICAgIGUuZy4gdGhpcyBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KKyovDQordHlwZWRlZiBWT0lEICgq Rk5QVFJfRklFTERfVkFMSURBVE9SKShVSU5UOCogUHRyLCBWT0lEKiBDb250ZXh0KTsNCisNCisv KiogVGhlIEFDUElfUEFSU0VSIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIGZpZWxkcyBvZiBhbiBB Q1BJIHRhYmxlIGFuZA0KKyAgICBwcm92aWRlcyBtZWFucyBmb3IgdGhlIHBhcnNlciB0byBpbnRl cnByZXQgYW5kIHRyYWNlIGFwcHJvcHJpYXRlbHkuDQorDQorICBUaGUgZmlyc3QgdGhyZWUgbWVt YmVycyBhcmUgcG9wdWxhdGVkIGJhc2VkIG9uIGluZm9ybWF0aW9uIHByZXNlbnQgaW4NCisgIGlu IHRoZSBBQ1BJIHRhYmxlIHNwZWNpZmljYXRpb25zLiBUaGUgcmVtYWluaW5nIG1lbWJlcnMgZGVz Y3JpYmUgaG93DQorICB0aGUgcGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0 aW9uLCB2YWxpZGF0ZSB0aGUgZmllbGQgZGF0YQ0KKyAgYW5kL29yIHVwZGF0ZSBhbiBleHRlcm5h bCBwb2ludGVyIHRvIHRoZSBmaWVsZCAoSXRlbVB0cikuDQorDQorICBQYXJzZUFjcGkoKSB1c2Vz IHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBmb3IgdHJhY2luZw0KKyAg dGhlIGZpZWxkIGRhdGEuIElmIHRoZSBmaWVsZCBpcyBtb3JlIGNvbXBsZXggYW5kIHJlcXVpcmVz IGFkZGl0aW9uYWwNCisgIHByb2Nlc3NpbmcgZm9yIGZvcm1hdHRpbmcgYW5kIHJlcHJlc2VudGF0 aW9uIGEgcHJpbnQgZm9ybWF0dGVyIGZ1bmN0aW9uDQorICBjYW4gYmUgc3BlY2lmaWVkIGluICdQ cmludEZvcm1hdHRlcicuDQorICBUaGUgUHJpbnRGb3JtYXR0ZXIgZnVuY3Rpb24gbWF5IGNob29z ZSB0byB1c2UgdGhlIGZvcm1hdCBzdHJpbmcNCisgIHNwZWNpZmllZCBieSAnRm9ybWF0JyBvciB1 c2UgaXRzIG93biBpbnRlcm5hbCBmb3JtYXQgc3RyaW5nLg0KKw0KKyAgVGhlICdGb3JtYXQnIGFu ZCAnUHJpbnRGb3JtYXR0ZXInIG1lbWJlcnMgYWxsb3cgZmxleGliaWxpdHkgZm9yDQorICByZXBy ZXNlbnRpbmcgdGhlIGZpZWxkIGRhdGEuDQorKi8NCit0eXBlZGVmIHN0cnVjdCBBY3BpUGFyc2Vy IHsNCisNCisgIC8vLyBTdHJpbmcgZGVzY3JpYmluZyB0aGUgQUNQSSB0YWJsZSBmaWVsZA0KKyAg Ly8vIChGaWVsZCBjb2x1bW4gZnJvbSBBQ1BJIHRhYmxlIHNwZWMpDQorICBDT05TVCBDSEFSMTYq ICAgICAgICAgTmFtZVN0cjsNCisNCisgIC8vLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWVsZC4NCisg IC8vLyAoQnl0ZSBMZW5ndGggY29sdW1uIGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KKyAgVUlOVDMy ICAgICAgICAgICAgICAgIExlbmd0aDsNCisNCisgIC8vLyBUaGUgb2Zmc2V0IG9mIHRoZSBmaWVs ZCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdGFibGUuDQorICAvLy8gKEJ5dGUgT2Zmc2V0IGNvbHVt biBmcm9tIEFDUEkgdGFibGUgc3BlYykNCisgIFVJTlQzMiAgICAgICAgICAgICAgICBPZmZzZXQ7 DQorDQorICAvLy8gT3B0aW9uYWwgUHJpbnQoKSBzdHlsZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLiBJZiBub3QNCisgIC8vLyB1c2VkIHRoaXMgbXVzdCBiZSBzZXQgdG8gTlVM TC4NCisgIENPTlNUIENIQVIxNiogICAgICAgICBGb3JtYXQ7DQorDQorICAvLy8gT3B0aW9uYWwg cG9pbnRlciB0byBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbiB3aGljaA0KKyAgLy8vIGlzIHR5 cGljYWxseSB1c2VkIHRvIHRyYWNlIGNvbXBsZXggZmllbGQgaW5mb3JtYXRpb24uDQorICAvLy8g SWYgbm90IHVzZWQgdGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KKyAgLy8vIFRoZSBGb3JtYXQg c3RyaW5nIGlzIHBhc3NlZCB0byB0aGUgUHJpbnRGb3JtYXR0ZXIgZnVuY3Rpb24NCisgIC8vLyBi dXQgbWF5IGJlIGlnbm9yZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIGNvZGUuDQorICBGTlBUUl9Q UklOVF9GT1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQorDQorICAvLy8gT3B0aW9uYWwgcG9pbnRl ciB3aGljaCBtYXkgYmUgc2V0IHRvIHJlcXVlc3QgdGhlIHBhcnNlciB0byB1cGRhdGUNCisgIC8v LyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRhdGEuIElmIHVudXNlZCB0aGlzIG11c3QgYmUgc2V0 IHRvIE5VTEwuDQorICBWT0lEKiogICAgICAgICAgICAgICAgSXRlbVB0cjsNCisNCisgIC8vLyBP cHRpb25hbCBwb2ludGVyIHRvIGEgZmllbGQgdmFsaWRhdG9yIGZ1bmN0aW9uLg0KKyAgLy8vIFRo ZSBmdW5jdGlvbiBzaG91bGQgZGlyZWN0bHkgcmVwb3J0IGFueSBhcHByb3ByaWF0ZSBlcnJvciBv ciB3YXJuaW5nDQorICAvLy8gYW5kIGludm9rZSB0aGUgYXBwcm9wcmlhdGUgY291bnRlciB1cGRh dGUgZnVuY3Rpb24uDQorICAvLy8gSWYgbm90IHVzZWQgdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBz ZXQgdG8gTlVMTC4NCisgIEZOUFRSX0ZJRUxEX1ZBTElEQVRPUiBGaWVsZFZhbGlkYXRvcjsNCisN CisgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24s DQorICAvLy8gd2hpY2ggdGhlIEZpZWxkIFZhbGlkYXRvciBmdW5jdGlvbiBjYW4gdXNlIHRvIGRl dGVybWluZQ0KKyAgLy8vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFDUEkgdGFi bGUgYW5kIG1ha2UNCisgIC8vLyBkZWNpc2lvbnMgYWJvdXQgdGhlIGZpZWxkIGJlaW5nIHZhbGlk YXRlZC4NCisgIC8vLyBlLmcuIHRoaXMgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRh YmxlIGhlYWRlcg0KKyAgVk9JRCogICAgICAgICAgICAgICAgIENvbnRleHQ7DQorfSBBQ1BJX1BB UlNFUjsNCisNCisvKiogQSBzdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSB0aGUgcG9pbnRlcnMgdG8g dGhlIG1lbWJlcnMgb2YgdGhlDQorICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVy ZSB0aGF0IHdhcyBwYXJzZWQuDQorKi8NCit0eXBlZGVmIHN0cnVjdCBBY3BpRGVzY3JpcHRpb25I ZWFkZXJJbmZvIHsNCisgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KKyAgVUlOVDMyKiBTaWdu YXR1cmU7DQorICAvLy8gTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlDQorICBVSU5UMzIqIExlbmd0 aDsNCisgIC8vLyBSZXZpc2lvbg0KKyAgVUlOVDgqICBSZXZpc2lvbjsNCisgIC8vLyBDaGVja3N1 bQ0KKyAgVUlOVDgqICBDaGVja3N1bTsNCisgIC8vLyBPRU0gSWQgLSBsZW5ndGggaXMgNiBieXRl cw0KKyAgVUlOVDgqICBPZW1JZDsNCisgIC8vLyBPRU0gdGFibGUgSWQNCisgIFVJTlQ2NCogT2Vt VGFibGVJZDsNCisgIC8vLyBPRU0gcmV2aXNpb24gSWQNCisgIFVJTlQzMiogT2VtUmV2aXNpb247 DQorICAvLy8gQ3JlYXRvciBJZA0KKyAgVUlOVDMyKiBDcmVhdG9ySWQ7DQorICAvLy8gQ3JlYXRv ciByZXZpc2lvbg0KKyAgVUlOVDMyKiBDcmVhdG9yUmV2aXNpb247DQorfSBBQ1BJX0RFU0NSSVBU SU9OX0hFQURFUl9JTkZPOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2Ug YW4gQUNQSSB0YWJsZSBidWZmZXIuDQorDQorICBUaGUgQUNQSSB0YWJsZSBidWZmZXIgaXMgcGFy c2VkIHVzaW5nIHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBpbmZvcm1hdGlvbg0KKyAgc3BlY2lmaWVk IGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVtZW50cy4gVGhpcyBw YXJzZXINCisgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9uIHRoZSBBQ1BJ X1BBUlNFUiBhcnJheSBhbmQgbG9ncyB0aGUNCisgIEFDUEkgdGFibGUgZmllbGRzLg0KKw0KKyAg VGhpcyBmdW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVz IGFuZCBmZXRjaCBzcGVjaWZpYw0KKyAgZmllbGQgdmFsdWVzLiBUaGUgSXRlbVB0ciBtZW1iZXIg b2YgdGhlIEFDUElfUEFSU0VSIHN0cnVjdHVyZSAod2hlcmUgdXNlZCkNCisgIGlzIHVwZGF0ZWQg YnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNlbGVjdGVkIGZpZWxkIGRh dGENCisgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVsZHMpLg0K Kw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRyYWNlIHRoZSBBQ1BJIGZpZWxkcyBUUlVF IGVsc2Ugb25seSBwYXJzZSB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4N CisgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0 aGUgb3V0cHV0Lg0KKyAgQHBhcmFtIFtpbl0gQXNjaWlOYW1lICAgIE9wdGlvbmFsIHBvaW50ZXIg dG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQgZGVzY3JpYmVzDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gTGVu Z3RoICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0KKyAgQHBhcmFt IFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3Ry dWN0dXJlIHRoYXQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhlIHRh YmxlIGJlaW5nIHBhcnNlZC4NCisgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBOdW1iZXIgb2Yg aXRlbXMgaW4gdGhlIEFDUElfUEFSU0VSIGFycmF5Lg0KKw0KKyAgQHJldHZhbCBOdW1iZXIgb2Yg Ynl0ZXMgcGFyc2VkLg0KKyovDQorVUlOVDMyDQorUGFyc2VBY3BpICgNCisgIElOIEJPT0xFQU4g ICAgICAgICAgICBUcmFjZSwNCisgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRlbnQsDQorICBJ TiBDT05TVCBDSEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElPTkFMLA0KKyAgSU4gVUlOVDgqICAg ICAgICAgICAgIFB0ciwNCisgIElOIFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgsDQorICBJTiBD T05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KKyAgSU4gVUlOVDMyICAgICAgICAgICAgIFBhcnNl ckl0ZW1zDQorKTsNCisNCisvKiogVGhpcyBpcyBhIGhlbHBlciBtYWNybyB0byBwYXNzIHBhcmFt ZXRlcnMgdG8gdGhlIFBhcnNlciBmdW5jdGlvbnMuDQorDQorICBAcGFyYW0gW2luXSBQYXJzZXIg VGhlIG5hbWUgb2YgdGhlIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlDQorICAgICAg ICAgICAgICBBQ1BJIHRhYmxlIGZpZWxkcy4NCisqLw0KKyNkZWZpbmUgUEFSU0VSX1BBUkFNUyhQ YXJzZXIpIFBhcnNlciwgc2l6ZW9mIChQYXJzZXIpIC8gc2l6ZW9mIChQYXJzZXJbMF0pDQorDQor LyoqIFRoaXMgaXMgYSBoZWxwZXIgbWFjcm8gZm9yIGRlc2NyaWJpbmcgdGhlIEFDUEkgaGVhZGVy IGZpZWxkcy4NCisNCisgIEBwYXJhbSBbb3V0XSBJbmZvICBQb2ludGVyIHRvIHJldHJpZXZlIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlciBpbmZvcm1hdGlvbi4NCisqLw0KKyNkZWZpbmUgUEFSU0VfQUNQ SV9IRUFERVIoSW5mbykgICAgICAgICAgICAgICAgICAgXA0KKyAgeyBMIlNpZ25hdHVyZSIsIDQs IDAsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAgICAgXA0KKyAgICAoVk9JRCoqKSYoSW5mbyktPlNp Z25hdHVyZSAsIE5VTEwsIE5VTEwgfSwgICAgXA0KKyAgeyBMIkxlbmd0aCIsIDQsIDQsIEwiJWQi LCBOVUxMLCAgICAgICAgICAgICAgICAgXA0KKyAgICAoVk9JRCoqKSYoSW5mbyktPkxlbmd0aCwg TlVMTCwgTlVMTCB9LCAgICAgICAgXA0KKyAgeyBMIlJldmlzaW9uIiwgMSwgOCwgTCIlZCIsIE5V TEwsICAgICAgICAgICAgICAgXA0KKyAgICAoVk9JRCoqKSYoSW5mbyktPlJldmlzaW9uLCBOVUxM LCBOVUxMIH0sICAgICAgXA0KKyAgeyBMIkNoZWNrc3VtIiwgMSwgOSwgTCIweCVYIiwgTlVMTCwg ICAgICAgICAgICAgXA0KKyAgICAoVk9JRCoqKSYoSW5mbyktPkNoZWNrc3VtLCBOVUxMLCBOVUxM IH0sICAgICAgXA0KKyAgeyBMIk9lbSBJRCIsIDYsIDEwLCBOVUxMLCBEdW1wNkNoYXJzLCAgICAg ICAgICAgXA0KKyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbUlkLCBOVUxMLCBOVUxMIH0sICAgICAg ICAgXA0KKyAgeyBMIk9lbSBUYWJsZSBJRCIsIDgsIDE2LCBOVUxMLCBEdW1wOENoYXJzLCAgICAg XA0KKyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbVRhYmxlSWQsIE5VTEwsIE5VTEwgfSwgICAgXA0K KyAgeyBMIk9lbSBSZXZpc2lvbiIsIDQsIDI0LCBMIjB4JVgiLCBOVUxMLCAgICAgICAgXA0KKyAg ICAoVk9JRCoqKSYoSW5mbyktPk9lbVJldmlzaW9uLCBOVUxMLCBOVUxMIH0sICAgXA0KKyAgeyBM IkNyZWF0b3IgSUQiLCA0LCAyOCwgTlVMTCwgRHVtcDRDaGFycywgICAgICAgXA0KKyAgICAoVk9J RCoqKSYoSW5mbyktPkNyZWF0b3JJZCwgTlVMTCwgTlVMTCB9LCAgICAgXA0KKyAgeyBMIkNyZWF0 b3IgUmV2aXNpb24iLCA0LCAzMiwgTCIweCVYIiwgTlVMTCwgICAgXA0KKyAgICAoVk9JRCoqKSYo SW5mbyktPkNyZWF0b3JSZXZpc2lvbiwgTlVMTCwgTlVMTCB9DQorDQorLyoqIExlbmd0aCBvZiB0 aGUgQUNQSSBHQVMgc3RydWN0dXJlLg0KKw0KKyAgTk9URTogVGhpcyBtaWdodCBub3JtYWxseSBi ZSBkZWZpbmVkIGFzDQorICAgICAgICBzaXplb2YgKEVGSV9BQ1BJXzZfMl9HRU5FUklDX0FERFJF U1NfU1RSVUNUVVJFKS4NCisgICAgICAgIEhvd2V2ZXIsIHdlIGRlbGliZXJhdGVseSBtaW5pbWlz ZSBhbnkgcmVmZXJlbmNlIHRvIHRoZSBFREsyIEFDUEkNCisgICAgICAgIGhlYWRlcnMgaW4gYW4g YXR0ZW1wdCB0byBwcm92aWRlIGNyb3NzIGNoZWNraW5nLg0KKyovDQorI2RlZmluZSBHQVNfTEVO R1RIICAgICAgICAgICAgICAgICAgICAgMTINCisNCisvKiogTGVuZ3RoIG9mIHRoZSBBQ1BJIEhl YWRlciBzdHJ1Y3R1cmUuDQorDQorICBOT1RFOiBUaGlzIG1pZ2h0IG5vcm1hbGx5IGJlIGRlZmlu ZWQgYXMNCisgICAgICAgIHNpemVvZiAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSKS4NCisg ICAgICAgIEhvd2V2ZXIsIHdlIGRlbGliZXJhdGVseSBtaW5pbWlzZSBhbnkgcmVmZXJlbmNlIHRv IHRoZSBFREsyIEFDUEkNCisgICAgICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92aWRl IGNyb3NzIGNoZWNraW5nLg0KKyovDQorI2RlZmluZSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9M RU5HVEggIDM2DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgdHJhY2VzIHRoZSBH QVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZA0KKyAgICBieSB0aGUgR2FzUGFyc2VyLg0KKw0KKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K KyAgQHBhcmFtIFtpbl0gSW5kZW50ICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0 cHV0Lg0KKyovDQorVk9JRA0KK0R1bXBHYXNTdHJ1Y3QgKA0KKyAgSU4gVUlOVDgqICAgICAgICBQ dHIsDQorICBJTiBVSU5UMzIgICAgICAgIEluZGVudA0KKyAgKTsNCisNCisvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5IHRoZSBHYXNQYXJz ZXIuDQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9y IHRyYWNpbmcgdGhlIGRhdGEuDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8NCitWT0lEDQorRHVtcEdhcyAoDQorICBJTiBDT05T VCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCisgIElOIFVJTlQ4KiAgICAgICAgUHRyDQorICAp Ow0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3Jp YmVkIGJ5IHRoZSBBY3BpSGVhZGVyUGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorDQorICBAcmV0dmFsIE51 bWJlciBvZiBieXRlcyBwYXJzZWQuDQorKi8NCitVSU5UMzINCitEdW1wQWNwaUhlYWRlciAoDQor ICBJTiBVSU5UOCogUHRyDQorICApOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg QUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZSBBY3BpSGVhZGVyUGFyc2VyLg0KKw0KKyAg VGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIFNpZ25hdHVyZSwgTGVuZ3RoIGFu ZCByZXZpc2lvbiBvZiB0aGUNCisgIEFDUEkgdGFibGUuDQorDQorICBAcGFyYW0gW2luXSAgUHRy ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtv dXRdIFNpZ25hdHVyZSAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBzaWduYXR1cmUu DQorICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9uIG9mIHRoZSBsZW5ndGgg b2YgdGhlIEFDUEkgdGFibGUuDQorICBAcGFyYW0gW291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0 aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCisNCisgIEByZXR2YWwgTnVt YmVyIG9mIGJ5dGVzIHBhcnNlZC4NCisqLw0KK1VJTlQzMg0KK1BhcnNlQWNwaUhlYWRlciAoDQor ICBJTiAgVUlOVDgqICAgICAgICAgUHRyLA0KKyAgT1VUIENPTlNUIFVJTlQzMioqIFNpZ25hdHVy ZSwNCisgIE9VVCBDT05TVCBVSU5UMzIqKiBMZW5ndGgsDQorICBPVVQgQ09OU1QgVUlOVDgqKiAg UmV2aXNpb24NCisgICk7DQorDQorI2VuZGlmIC8vIEFDUElQQVJTRVJfSF8NCmRpZmYgLS1naXQg YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFibGVQ YXJzZXIuaCBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Fj cGlUYWJsZVBhcnNlci5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRjNzU4ZmFlYWJhZmQ2ZWRlYThmMWNiMjIy MzdiYjA5ZDgzZDVlYg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmgNCkBAIC0wLDAgKzEsMTI4 IEBADQorLyoqDQorICBIZWFkZXIgZmlsZSBmb3IgQUNQSSB0YWJsZSBwYXJzZXINCisNCisgIENv cHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICBo dHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQorDQorICBUSEUg UFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElT IiBCQVNJUywNCisgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5Z IEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQorKiovDQorDQorI2lmbmRlZiBBQ1BJ VEFCTEVQQVJTRVJfSF8NCisjZGVmaW5lIEFDUElUQUJMRVBBUlNFUl9IXw0KKw0KKy8qKiBUaGUg bWF4aW11bSBudW1iZXIgb2YgQUNQSSB0YWJsZSBwYXJzZXJzLg0KKyovDQorI2RlZmluZSBNQVhf QUNQSV9UQUJMRV9QQVJTRVJTICAgICAgICAgIDE2DQorDQorLyoqIEFuIGludmFsaWQvTlVMTCBz aWduYXR1cmUgdmFsdWUuDQorKi8NCisjZGVmaW5lIEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxM ICAgICAgMA0KKw0KKy8qKiBBIGZ1bmN0aW9uIHRoYXQgcGFyc2VzIHRoZSBBQ1BJIHRhYmxlLg0K Kw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBB Q1BJIGZpZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3Ro ICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJl dmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCisqLw0KK3R5cGVkZWYNCitWT0lE DQorRUZJQVBJDQorKEVGSUFQSSAqIFBBUlNFX0FDUElfVEFCTEVfUFJPQykgKA0KKyAgSU4gQk9P TEVBTiBUcmFjZSwNCisgIElOIFVJTlQ4KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBBY3BpVGFibGVM ZW5ndGgsDQorICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQorICApOw0KKw0KKy8qKiBU aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCisqLw0KK3R5cGVkZWYgc3RydWN0IEFj cGlUYWJsZVBhcnNlciB7DQorICAvLy8gQUNQSSB0YWJsZSBzaWduYXR1cmUNCisgIFVJTlQzMiAg ICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsNCisNCisgIC8vLyBUaGUgQUNQSSB0YWJsZSBwYXJz ZXIgZnVuY3Rpb24uDQorICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXI7DQorfSBBQ1BJ X1RBQkxFX1BBUlNFUjsNCisNCisvKiogUmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQor DQorICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuLg0KKw0K KyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFibGUgU2lnbmF0dXJlLg0KKyAg QHBhcmFtIFtpbl0gUGFyc2VyUHJvYyAgVGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KKw0KKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCisg IEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K KyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhl DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQorKi8NCitFRklfU1RB VFVTDQorRUZJQVBJDQorUmVnaXN0ZXJQYXJzZXIgKA0KKyAgSU4gIFVJTlQzMiAgICAgICAgICAg ICAgICAgIFNpZ25hdHVyZSwNCisgIElOICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICBQYXJzZXJQ cm9jDQorKTsNCisNCisvKiogRGVyZWdpc3RlciB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCisNCisg IFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLi4NCisNCisg IEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCisNCisg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIGRlcmVnaXN0ZXJl ZC4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFs aWQuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2Vy IHdhcyBub3QgZm91bmQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorRGVyZWdpc3RlclBh cnNlciAoDQorICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlDQorKTsNCisN CisvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIEFDUEkgdGFibGVzLg0KKyAgVGhpcyBm dW5jdGlvbiBjYWxscyBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zKCkgdG8gbGlzdCB0aGUgQUNQ SQ0KKyAgdGFibGVzLCBwZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVy bWluZSBpZiB0aGUNCisgIEFDUEkgZmllbGRzIHNob3VsZCBiZSB0cmFjZWQuDQorDQorICBUaGlz IGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMuDQor DQorICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0 YWJsZSBpbmNsdWRpbmcNCisgIHRoZSB1bmtub3duL3VucGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2 YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBBQ1BJDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIuDQorKi8NCitWT0lEDQorUHJvY2Vzc0Fj cGlUYWJsZSAoDQorICBJTiBVSU5UOCogUHRyDQorICApOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRhYmxlLg0KKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IFJTRFAgdGFibGUgYW5kIG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJDQorICB0YWJsZSBmaWVs ZHMuIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIGlm DQorICB0aGUgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCisNCisgIFRoaXMgZnVuY3Rp b24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgWFNEVCB0YWJsZS4NCisgICogTm90ZSAtIFRo aXMgZnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBwYXJzaW5nIG9mIFJTRFQgdGFibGUuDQorDQor ICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVtcCBvZiB0aGUgQUNQSSB0YWJs ZSBhbmQNCisgIHZhbGlkYXRlcyB0aGUgY2hlY2tzdW0uDQorDQorICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisNCisg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBTdWNjZXNzLg0KKyAgQHJldHZhbCBFRklf Tk9UX0ZPVU5EICAgICAgICAgIFZhbGlkIFhTRFQgcG9pbnRlciBub3QgZm91bmQuDQorKi8NCitF RklfU1RBVFVTDQorUGFyc2VSc2RwICgNCisgIElOIFVJTlQ4KiBQdHINCisgICk7DQorDQorI2Vu ZGlmIC8vIEFDUElUQUJMRVBBUlNFUl9IXw0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmggYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5oDQpuZXcgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZh YTFlZmJiOWExNWNhY2FhZjNjMGU1Njk4ZDMzNzc4YjUxYmFmMg0KLS0tIC9kZXYvbnVsbA0KKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcu aA0KQEAgLTAsMCArMSw4NyBAQA0KKy8qKg0KKyAgSGVhZGVyIGZpbGUgZm9yIEFjcGlWaWV3DQor DQorICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN CisgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBh dA0KKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0K KyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKyoqLw0KKw0KKyNpZm5k ZWYgQUNQSVZJRVdfSF8NCisjZGVmaW5lIEFDUElWSUVXX0hfDQorDQorLyoqIEEgbWFjcm8gdG8g ZGVmaW5lIHRoZSBtYXggZmlsZSBuYW1lIGxlbmd0aA0KKyovDQorI2RlZmluZSBNQVhfRklMRV9O QU1FX0xFTiAgICAxMjgNCisNCisvKiogVGhlIEVSRVBPUlRfT1BUSU9OIGVudW0gZGVzY3JpYmVz IEFDUEkgdGFibGUgUmVwb3J0aW5nIG9wdGlvbnMuDQorKi8NCit0eXBlZGVmIGVudW0gUmVwb3J0 T3B0aW9uIHsNCisgIEVSRVBPUlRfQUxMLCAgICAgICAgICAgIC8vLzwgUmVwb3J0IEFsbCB0YWJs ZXMuDQorICBFUkVQT1JUX1NFTEVDVEVELCAgICAgICAvLy88IFJlcG9ydCBTZWxlY3RlZCB0YWJs ZS4NCisgIEVSRVBPUlRfVEFCTEVfTElTVCwgICAgIC8vLzwgUmVwb3J0IExpc3Qgb2YgdGFibGVz Lg0KKyAgRVJFUE9SVF9EVU1QX0JJTl9GSUxFLCAgLy8vPCBEdW1wIHNlbGVjdGVkIHRhYmxlIHRv IGEgZmlsZS4NCisgIEVSRVBPUlRfTUFYDQorfSBFUkVQT1JUX09QVElPTjsNCisNCisvKiogVGhp cyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQorKi8N CitWT0lEDQorSW5jcmVtZW50RXJyb3JDb3VudCAoDQorICBWT0lEDQorICApOw0KKw0KKy8qKiBU aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnQuDQorDQorICBA cmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIGVycm9ycyBkZXRlY3RlZCBpbiB0aGUgQUNQSSB0 YWJsZXMuDQorKi8NCitVSU5UMzINCitHZXRFcnJvckNvdW50ICgNCisgIFZPSUQNCisgICk7DQor DQorLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNv dW50ZXIuDQorKi8NCitWT0lEDQorSW5jcmVtZW50V2FybmluZ0NvdW50ICgNCisgIFZPSUQNCisg ICk7DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5n IGNvdW50Lg0KKw0KKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVj dGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCisqLw0KK1VJTlQzMg0KK0dldFdhcm5pbmdDb3VudCAo DQorICBWT0lEDQorICApOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbG91 ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0KKw0KKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91ciBoaWdo bGlnaHRpbmcgaXMgZW5hYmxlZC4NCisqLw0KK0JPT0xFQU4NCitHZXRDb2xvdXJIaWdobGlnaHRp bmcgKA0KKyAgVk9JRA0KKyAgKTsNCisNCisvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhl IHRhYmxlIHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQSSB0YWJsZS4NCisNCisgIEBwYXJh bSBbaW5dIFNpZ25hdHVyZSBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQorICBAcGFyYW0gW2lu XSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0KKyAgQHBhcmFtIFtp bl0gTGVuZ3RoICAgIFRoZSBsZW5ndGggZm8gdGhlIEFDUEkgdGFibGUuDQorDQorICBAcmV0dmFs IFJldHVybnMgVFJVRSBpZiB0aGUgQUNQSSB0YWJsZSBzaG91bGQgYmUgdHJhY2VkLg0KKyovDQor Qk9PTEVBTg0KK1Byb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KKyAgSU4gQ09OU1QgVUlOVDMy ICBTaWduYXR1cmUsDQorICBJTiBDT05TVCBVSU5UOCogIFRhYmxlUHRyLA0KKyAgSU4gQ09OU1Qg VUlOVDMyICBMZW5ndGgNCisgICk7DQorDQorI2VuZGlmIC8vIEFDUElWSUVXX0hfDQpkaWZmIC0t Z2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliLmggYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaA0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LjU5YzhlMjE1NDRkNjgyOWFjODcyOTU4ZjZiODQzNThlMWY5MWIwMmYNCi0tLSAvZGV2L251bGwN CisrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQpAQCAtMCwwICsxLDMyIEBADQorLyoqDQorICBIZWFk ZXIgZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21tYW5kIGZ1bmN0aW9ucy4NCisNCisgIENv cHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCisgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K KyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKyoqLw0KKw0KKyNpZm5kZWYg VUVGSV9TSEVMTF9BQ1BJVklFV19DT01NQU5EX0xJQl9IXw0KKyNkZWZpbmUgVUVGSV9TSEVMTF9B Q1BJVklFV19DT01NQU5EX0xJQl9IXw0KKw0KK2V4dGVybiBFRklfSElJX0hBTkRMRSBnU2hlbGxB Y3BpVmlld0hpaUhhbmRsZTsNCisNCisvKioNCisgIEZ1bmN0aW9uIGZvciAnYWNwaXZpZXcnIGNv bW1hbmQuDQorDQorICBAcGFyYW1baW5dIEltYWdlSGFuZGxlICBIYW5kbGUgdG8gdGhlIEltYWdl IChOVUxMIGlmIEludGVybmFsKS4NCisgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50ZXIg dG8gdGhlIFN5c3RlbSBUYWJsZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQorKi8NCitTSEVMTF9TVEFU VVMNCitFRklBUEkNCitTaGVsbENvbW1hbmRSdW5BY3BpVmlldyAoDQorICBJTiBFRklfSEFORExF ICAgICAgICBJbWFnZUhhbmRsZSwNCisgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJs ZQ0KKyAgKTsNCisNCisjZW5kaWYgLy8gVUVGSV9TSEVMTF9BQ1BJVklFV19DT01NQU5EX0xJQl9I Xw0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0FjcGlQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL0FjcGlQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzMTZlMDQ0ZGFlN2ZmZDU5YzVhYTMz NTFhNTQyYzY0NWU3YTRmNzMNCi0tLSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuYw0KQEAgLTAsMCArMSw2MTQg QEANCisvKioNCisgIEFDUEkgcGFyc2VyDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0K KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELg0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisjaW5j bHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCisjaW5jbHVkZSAiQWNw aVBhcnNlci5oIg0KKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KKw0KK1NUQVRJQyBVSU5UMzIgZ0lu ZGVudCA9IDA7DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcHJpbnRzIGEgR1VJRCB0byBTVERPVVQu DQorDQorICBAcGFyYW0gW2luXSBHdWlkICAgIFBvaW50ZXIgdG8gYSBHVUlEIHRvIHByaW50Lg0K Kw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUgR1VJRCB3YXMgcHJpbnRl ZC4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgVGhlIGlucHV0IHdhcyBOVUxM Lg0KKyovDQorRUZJX1NUQVRVUw0KK1ByaW50R3VpZCAoDQorICBJTiBFRklfR1VJRCogR3VpZA0K KyAgKQ0KK3sNCisgIGlmIChHdWlkID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCisgIH0NCisNCisgIFByaW50ICgNCisgICAgTCIlMDhYLSUwNFgtJTA0WC0l MDJYJTAyWC0lMDJYJTAyWCUwMlglMDJYJTAyWCUwMlhcbiIsDQorICAgIEd1aWQtPkRhdGExLA0K KyAgICBHdWlkLT5EYXRhMiwNCisgICAgR3VpZC0+RGF0YTMsDQorICAgIEd1aWQtPkRhdGE0WzBd LA0KKyAgICBHdWlkLT5EYXRhNFsxXSwNCisgICAgR3VpZC0+RGF0YTRbMl0sDQorICAgIEd1aWQt PkRhdGE0WzNdLA0KKyAgICBHdWlkLT5EYXRhNFs0XSwNCisgICAgR3VpZC0+RGF0YTRbNV0sDQor ICAgIEd1aWQtPkRhdGE0WzZdLA0KKyAgICBHdWlkLT5EYXRhNFs3XQ0KKyAgICApOw0KKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUg QUNQSSB0YWJsZSBjaGVja3N1bS4NCisNCisgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhlIGNo ZWNrc3VtIGZvciB0aGUgQUNQSSB0YWJsZSBhbmQgb3B0aW9uYWxseQ0KKyAgcHJpbnRzIHRoZSBz dGF0dXMuDQorDQorICBAcGFyYW0gW2luXSBMb2cgICAgIElmIFRSVUUgbG9nIHRoZSBzdGF0dXMg b2YgdGhlIGNoZWNrc3VtLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVu Z3RoIG9mIHRoZSBidWZmZXIuDQorDQorICBAcmV0dmFsIFRSVUUgICAgICAgIFRoZSBjaGVja3N1 bSBpcyBPSy4NCisgIEByZXR2YWwgRkFMU0UgICAgICAgVGhlIGNoZWNrc3VtIGZhaWxlZC4NCisq Lw0KK0JPT0xFQU4NCitWZXJpZnlDaGVja3N1bSAoDQorICBJTiBCT09MRUFOIExvZywNCisgIElO IFVJTlQ4KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBMZW5ndGgNCisgICkNCit7DQorICBVSU5UTiBC eXRlQ291bnQ7DQorICBVSU5UOCBDaGVja3N1bTsNCisgIFVJTlROIE9yaWdpbmFsQXR0cmlidXRl Ow0KKw0KKyAgQnl0ZUNvdW50ID0gMDsNCisgIENoZWNrc3VtID0gMDsNCisNCisgIHdoaWxlIChC eXRlQ291bnQgPCBMZW5ndGgpIHsNCisgICAgQ2hlY2tzdW0gKz0gKihQdHIrKyk7DQorICAgIEJ5 dGVDb3VudCsrOw0KKyAgfQ0KKw0KKyAgaWYgKExvZykgew0KKyAgICBPcmlnaW5hbEF0dHJpYnV0 ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQorICAgIGlmIChDaGVja3N1bSA9PSAw KSB7DQorICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KKyAgICAgICAgZ1NU LT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQorICAgICAgICAgICAgICAgICAgICAgICBnU1QtPkNv bk91dCwNCisgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKEVGSV9HUkVFTiwN CisgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1 fEJJVDYpKT4+NCkpDQorICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIH0NCisgICAg ICBQcmludCAoTCJcblxuVGFibGUgQ2hlY2tzdW0gOiBPS1xuXG4iKTsNCisgICAgfSBlbHNlIHsN CisgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KKyAgICAgIGlmIChHZXRDb2xvdXJIaWdo bGlnaHRpbmcgKCkpIHsNCisgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KKyAg ICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQorICAgICAgICAgICAgICAgICAgICAg ICBFRklfVEVYVF9BVFRSIChFRklfUkVELA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAoKE9y aWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KSkNCisgICAgICAgICAgICAgICAg ICAgICAgICk7DQorICAgICAgfQ0KKyAgICAgIFByaW50IChMIlxuXG5UYWJsZSBDaGVja3N1bSA6 IEZBSUxFRCAoMHglWClcblxuIiwgQ2hlY2tzdW0pOw0KKyAgICB9DQorICAgIGlmIChHZXRDb2xv dXJIaWdobGlnaHRpbmcgKCkpIHsNCisgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChn U1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KKyAgICB9DQorICB9DQorDQorICByZXR1 cm4gKENoZWNrc3VtID09IDApOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBh IHJhdyBkYXRhIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUuDQorDQorICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQorICBAcGFyYW0g W2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCisqLw0KK1ZPSUQNCitEdW1w UmF3ICgNCisgIElOIFVJTlQ4KiBQdHIsDQorICBJTiBVSU5UMzIgTGVuZ3RoDQorICApDQorew0K KyAgVUlOVE4gQnl0ZUNvdW50ID0gMDsNCisgIFVJTlROIFBhcnRMaW5lQ2hhcnM7DQorICBVSU5U TiBBc2NpaUJ1ZmZlckluZGV4ID0gMDsNCisgIENIQVI4IEFzY2lpQnVmZmVyWzE3XTsNCisNCisg IFByaW50IChMIkFkZHJlc3MgIDogMHglcFxuIiwgUHRyKTsNCisgIFByaW50IChMIkxlbmd0aCAg IDogJWRcbiIsIExlbmd0aCk7DQorDQorICB3aGlsZSAoQnl0ZUNvdW50IDwgTGVuZ3RoKSB7DQor ICAgIGlmICgoQnl0ZUNvdW50ICYgMHgwRikgPT0gMCkgew0KKyAgICAgIEFzY2lpQnVmZmVyW0Fz Y2lpQnVmZmVySW5kZXhdID0gJ1wwJzsNCisgICAgICBQcmludCAoTCIgICVhXG4lMDhYIDogIiwg QXNjaWlCdWZmZXIsIEJ5dGVDb3VudCk7DQorICAgICAgQXNjaWlCdWZmZXJJbmRleCA9IDA7DQor ICAgIH0gZWxzZSBpZiAoKEJ5dGVDb3VudCAmIDB4MDcpID09IDApIHsNCisgICAgICBQcmludCAo TCItICIpOw0KKyAgICB9DQorDQorICAgIGlmICgoKlB0ciA+PSAnICcpICYmICgqUHRyIDwgMHg3 RikpIHsNCisgICAgICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4KytdID0gKlB0cjsNCisg ICAgfSBlbHNlIHsNCisgICAgICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4KytdID0gJy4n Ow0KKyAgICB9DQorDQorICAgIFByaW50IChMIiUwMlggIiwgKlB0cisrKTsNCisNCisgICAgQnl0 ZUNvdW50Kys7DQorICB9DQorDQorICAvLyBKdXN0aWZ5IHRoZSBmaW5hbCBsaW5lIHVzaW5nIHNw YWNlcyBiZWZvcmUgcHJpbnRpbmcNCisgIC8vIHRoZSBBU0NJSSBkYXRhLg0KKyAgUGFydExpbmVD aGFycyA9IChMZW5ndGggJiAweDBGKTsNCisgIGlmIChQYXJ0TGluZUNoYXJzICE9IDApIHsNCisg ICAgUGFydExpbmVDaGFycyA9IDQ4IC0gKFBhcnRMaW5lQ2hhcnMgKiAzKTsNCisgICAgaWYgKChM ZW5ndGggJiAweDBGKSA8PSA4KSB7DQorICAgICAgUGFydExpbmVDaGFycyArPSAyOw0KKyAgICB9 DQorICAgIHdoaWxlIChQYXJ0TGluZUNoYXJzID4gMCkgew0KKyAgICAgIFByaW50IChMIiAiKTsN CisgICAgICBQYXJ0TGluZUNoYXJzLS07DQorICAgIH0NCisgIH0NCisNCisgIC8vIFByaW50IEFT Q0lJIGRhdGEgZm9yIHRoZSBmaW5hbCBsaW5lLg0KKyAgQXNjaWlCdWZmZXJbQXNjaWlCdWZmZXJJ bmRleF0gPSAnXDAnOw0KKyAgUHJpbnQgKEwiICAlYSIsIEFzY2lpQnVmZmVyKTsNCit9DQorDQor LyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDEgYnl0ZSBvZiBkYXR1bSBhcyBzcGVjaWZpZWQgaW4g dGhlDQorICAgIGZvcm1hdCBzdHJpbmcuDQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBm b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyovDQorVk9JRA0KK0R1bXBV aW50OCAoDQorICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCisgIElOIFVJTlQ4KiAgICAgICAg UHRyDQorICApDQorew0KKyAgUHJpbnQgKEZvcm1hdCwgKlB0cik7DQorfQ0KKw0KKy8qKiBUaGlz IGZ1bmN0aW9uIHRyYWNlcyAyIGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KKyAg ICBmb3JtYXQgc3RyaW5nLg0KKw0KKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0 cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisqLw0KK1ZPSUQNCitEdW1wVWludDE2ICgN CisgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KKyAgSU4gVUlOVDgqICAgICAgICBQdHINCisg ICkNCit7DQorICBQcmludCAoRm9ybWF0LCAqKFVJTlQxNiopUHRyKTsNCit9DQorDQorLyoqIFRo aXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlDQor ICAgIGZvcm1hdCBzdHJpbmcuDQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQg c3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyovDQorVk9JRA0KK0R1bXBVaW50MzIg KA0KKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQorICBJTiBVSU5UOCogICAgICAgIFB0cg0K KyAgKQ0KK3sNCisgIFByaW50IChGb3JtYXQsICooVUlOVDMyKilQdHIpOw0KK30NCisNCisvKiog VGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBieSB0aGUN CisgICAgZm9ybWF0IHN0cmluZy4NCisNCisgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1h dCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8NCitWT0lEDQorRHVtcFVpbnQ2 NCAoDQorICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCisgIElOIFVJTlQ4KiAgICAgICAgUHRy DQorICApDQorew0KKyAgVUlOVDY0IFZhbDsNCisgIC8vIFNvbWUgZmllbGRzIGFyZSBub3QgYWxp Z25lZCBhbmQgdGhpcyBjYXVzZXMgYWxpZ25tZW50IGZhdWx0cw0KKyAgLy8gb24gQVJNIHBsYXRm b3JtcyBpZiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIExEUkQgaW5zdHJ1Y3Rpb25zLg0KKyAgLy8g UGVyZm9ybSB3b3JkIGFjY2VzcyBzbyB0aGF0IExEUkQgaW5zdHJ1Y3Rpb25zIGFyZSBub3QgZ2Vu ZXJhdGVkLg0KKyAgVmFsID0gKihVSU5UMzIqKShQdHIgKyBzaXplb2YgKFVJTlQzMikpOw0KKyAg VmFsIDw8PSAzMjsNCisgIFZhbCB8PSAqKFVJTlQzMiopUHRyOw0KKw0KKyAgUHJpbnQgKEZvcm1h dCwgVmFsKTsNCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDMgY2hhcmFjdGVycyB3 aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3Ry aW5nIGlmIHNwZWNpZmllZC4NCisNCisgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVk IHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KKw0KKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRp b25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyovDQorVk9JRA0K K0R1bXAzQ2hhcnMgKA0KKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQorICBJ TiBVSU5UOCogICAgICAgIFB0cg0KKyAgKQ0KK3sNCisgIFByaW50ICgNCisgICAgKEZvcm1hdCAh PSBOVUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjIiwNCisgICAgUHRyWzBdLA0KKyAgICBQdHJbMV0s DQorICAgIFB0clsyXQ0KKyAgICApOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg NCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQorICAgZm9ybWF0ZWQgdXNpbmcg dGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KKw0KKyAgSWYgbm8gZm9ybWF0IHN0cmlu ZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQorDQorICBAcGFyYW0gW2lu XSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQor ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQorKi8NCitWT0lEDQorRHVtcDRDaGFycyAoDQorICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBP UFRJT05BTCwNCisgIElOIFVJTlQ4KiAgICAgICAgUHRyDQorICApDQorew0KKyAgUHJpbnQgKA0K KyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMlYyIsDQorICAgIFB0clsw XSwNCisgICAgUHRyWzFdLA0KKyAgICBQdHJbMl0sDQorICAgIFB0clszXQ0KKyAgICApOw0KK30N CisNCisvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBv cHRpb25hbGx5DQorICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lm aWVkLg0KKw0KKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBt dXN0IGJlIE5VTEwuDQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBz dHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorKi8NCitWT0lEDQorRHVtcDZDaGFycyAo DQorICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCisgIElOIFVJTlQ4KiAgICAg ICAgUHRyDQorICApDQorew0KKyAgUHJpbnQgKA0KKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9y bWF0IDogTCIlYyVjJWMlYyVjJWMiLA0KKyAgICBQdHJbMF0sDQorICAgIFB0clsxXSwNCisgICAg UHRyWzJdLA0KKyAgICBQdHJbM10sDQorICAgIFB0cls0XSwNCisgICAgUHRyWzVdDQorICAgICk7 DQorfQ0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGNoYXJhY3RlcnMgd2hpY2ggY2Fu IGJlIG9wdGlvbmFsbHkNCisgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBz cGVjaWZpZWQuDQorDQorICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9y bWF0IG11c3QgYmUgTlVMTC4NCisNCisgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9y bWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisqLw0KK1ZPSUQNCitEdW1wOENo YXJzICgNCisgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KKyAgSU4gVUlOVDgq ICAgICAgICBQdHINCisgICkNCit7DQorICBQcmludCAoDQorICAgIChGb3JtYXQgIT0gTlVMTCkg PyBGb3JtYXQgOiBMIiVjJWMlYyVjJWMlYyVjJWMiLA0KKyAgICBQdHJbMF0sDQorICAgIFB0clsx XSwNCisgICAgUHRyWzJdLA0KKyAgICBQdHJbM10sDQorICAgIFB0cls0XSwNCisgICAgUHRyWzVd LA0KKyAgICBQdHJbNl0sDQorICAgIFB0cls3XQ0KKyAgICApOw0KK30NCisNCisvKiogVGhpcyBm dW5jdGlvbiBpbmRlbnRzIGFuZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmllbGQgTmFtZS4NCisN CisgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRo ZSBnbG9iYWwgdGFibGUgaW5kZW50Lg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGds b2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieSBkZWZhdXRsOyBob3dldmVyDQorICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24gZW50cnkgdG8gdGhlIFBhcnNl QWNwaSgpDQorICAgICAgICAgICAgICAgICAgICAgICAgICBieSBhZGRpbmcgdGhlIGluZGVudCB2 YWx1ZSBwcm92aWRlZCB0byBQYXJzZUFjcGkoKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg YW5kIHJlc3RvcmVkIGJhY2sgb24gZXhpdC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRo ZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluIHRoZSBvdXRwdXQgaXMNCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlcGVuZGVudCBvbiBmcm9tIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkLg0KKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFt ZS4NCisqLw0KK1ZPSUQNCitQcmludEZpZWxkTmFtZSAoDQorICBJTiBVSU5UMzIgICAgICAgICBJ bmRlbnQsDQorICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5hbWUNCispDQorew0KKyAgUHJpbnQg KA0KKyAgICBMIiUqYSUtKnMgOiAiLA0KKyAgICBnSW5kZW50ICsgSW5kZW50LA0KKyAgICAiIiwN CisgICAgKE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEggLSBnSW5kZW50IC0gSW5kZW50KSwNCisg ICAgRmllbGROYW1lDQorICAgICk7DQorfQ0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gcGFyc2UgYW4gQUNQSSB0YWJsZSBidWZmZXIuDQorDQorICBUaGUgQUNQSSB0YWJsZSBidWZm ZXIgaXMgcGFyc2VkIHVzaW5nIHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBpbmZvcm1hdGlvbg0KKyAg c3BlY2lmaWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVtZW50 cy4gVGhpcyBwYXJzZXINCisgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9u IHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQgbG9ncyB0aGUNCisgIEFDUEkgdGFibGUgZmllbGRz Lg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFD UEkgdGFibGVzIGFuZCBmZXRjaCBzcGVjaWZpYw0KKyAgZmllbGQgdmFsdWVzLiBUaGUgSXRlbVB0 ciBtZW1iZXIgb2YgdGhlIEFDUElfUEFSU0VSIHN0cnVjdHVyZSAod2hlcmUgdXNlZCkNCisgIGlz IHVwZGF0ZWQgYnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNlbGVjdGVk IGZpZWxkIGRhdGENCisgIChlLmcuIHVzZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBm aWVsZHMpLg0KKw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRyYWNlIHRoZSBBQ1BJIGZp ZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWJsZS4NCisgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRv IGluZGVudCB0aGUgb3V0cHV0Lg0KKyAgQHBhcmFtIFtpbl0gQXNjaWlOYW1lICAgIE9wdGlvbmFs IHBvaW50ZXIgdG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQgZGVzY3JpYmVzDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCisgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFt IFtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0K KyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9Q QVJTRVIgc3RydWN0dXJlIHRoYXQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmli ZXMgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCisgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBO dW1iZXIgb2YgaXRlbXMgaW4gdGhlIEFDUElfUEFSU0VSIGFycmF5Lg0KKw0KKyAgQHJldHZhbCBO dW1iZXIgb2YgYnl0ZXMgcGFyc2VkLg0KKyovDQorVUlOVDMyDQorUGFyc2VBY3BpICgNCisgIElO IEJPT0xFQU4gICAgICAgICAgICBUcmFjZSwNCisgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRl bnQsDQorICBJTiBDT05TVCBDSEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElPTkFMLA0KKyAgSU4g VUlOVDgqICAgICAgICAgICAgIFB0ciwNCisgIElOIFVJTlQzMiAgICAgICAgICAgICBMZW5ndGgs DQorICBJTiBDT05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KKyAgSU4gVUlOVDMyICAgICAgICAg ICAgIFBhcnNlckl0ZW1zDQorKQ0KK3sNCisgIFVJTlQzMiAgSW5kZXg7DQorICBVSU5UMzIgIE9m ZnNldCA9IDA7DQorDQorICAvLyBJbmNyZW1lbnQgdGhlIEluZGVudA0KKyAgZ0luZGVudCArPSBJ bmRlbnQ7DQorDQorICBpZiAoKFRyYWNlKSAmJiAoQXNjaWlOYW1lICE9IE5VTEwpKXsNCisgICAg Qk9PTEVBTiBIaWdoTGlnaHQgPSBHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCk7DQorICAgIFVJTlRO ICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQorDQorICAgIGlmIChIaWdoTGlnaHQpIHsNCisgICAgICBP cmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQorICAgICAg Z1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQorICAgICAgICAgICAgICAgICAgICAgZ1NULT5D b25PdXQsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfWUVMTE9XLA0K KyAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJ VDYpKT4+NCkpDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgfQ0KKyAgICBQcmludCAo DQorICAgICAgTCIlKmElLSphIDpcbiIsDQorICAgICAgZ0luZGVudCwNCisgICAgICAiIiwNCisg ICAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIGdJbmRlbnQpLA0KKyAgICAgIEFzY2lp TmFtZQ0KKyAgICAgICk7DQorICAgIGlmIChIaWdoTGlnaHQpIHsNCisgICAgICBnU1QtPkNvbk91 dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KKyAgICB9 DQorICB9DQorDQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBQYXJzZXJJdGVtczsgSW5kZXgr Kykgew0KKyAgICBpZiAoKE9mZnNldCArIFBhcnNlcltJbmRleF0uTGVuZ3RoKSA+IExlbmd0aCkg ew0KKyAgICAgIC8vIFdlIGRvbid0IHBhcnNlIHBhc3QgdGhlIGVuZCBvZiB0aGUgbWF4IGxlbmd0 aCBzcGVjaWZpZWQNCisgICAgICBicmVhazsNCisgICAgfQ0KKw0KKyAgICBpZiAoT2Zmc2V0ICE9 IFBhcnNlcltJbmRleF0uT2Zmc2V0KSB7DQorICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsN CisgICAgICBQcmludCAoDQorICAgICAgICBMIlxuRVJST1I6ICVhOiBPZmZzZXQgTWlzbWF0Y2gg Zm9yICVzXG4iDQorICAgICAgICAgICJDdXJyZW50T2Zmc2V0ID0gJWQgRmllbGRPZmZzZXQgPSAl ZFxuIiwNCisgICAgICAgIEFzY2lpTmFtZSwNCisgICAgICAgIFBhcnNlcltJbmRleF0uTmFtZVN0 ciwNCisgICAgICAgIE9mZnNldCwNCisgICAgICAgIFBhcnNlcltJbmRleF0uT2Zmc2V0DQorICAg ICAgICApOw0KKyAgICB9DQorDQorICAgIGlmIChUcmFjZSkgew0KKyAgICAgIC8vIGlmIHRoZXJl IGlzIGEgRm9ybWF0dGVyIGZ1bmN0aW9uIGxldCB0aGUgZnVuY3Rpb24gaGFuZGxlDQorICAgICAg Ly8gdGhlIHByaW50aW5nIGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVkIGluIHRoZSB0YWJs ZSB1c2UNCisgICAgICAvLyB0aGUgRm9ybWF0IGZvciBwcmludGluZw0KKyAgICAgIFByaW50Rmll bGROYW1lICgyLCBQYXJzZXJbSW5kZXhdLk5hbWVTdHIpOw0KKyAgICAgIGlmIChQYXJzZXJbSW5k ZXhdLlByaW50Rm9ybWF0dGVyICE9IE5VTEwpIHsNCisgICAgICAgIFBhcnNlcltJbmRleF0uUHJp bnRGb3JtYXR0ZXIgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KKyAgICAgIH0gZWxzZSBp ZiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQgIT0gTlVMTCkgew0KKyAgICAgICAgc3dpdGNoIChQYXJz ZXJbSW5kZXhdLkxlbmd0aCkgew0KKyAgICAgICAgICBjYXNlIDE6DQorICAgICAgICAgICAgRHVt cFVpbnQ4IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCisgICAgICAgICAgICBicmVhazsN CisgICAgICAgICAgY2FzZSAyOg0KKyAgICAgICAgICAgIER1bXBVaW50MTYgKFBhcnNlcltJbmRl eF0uRm9ybWF0LCBQdHIpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICBjYXNlIDQ6 DQorICAgICAgICAgICAgRHVtcFVpbnQzMiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQor ICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgIGNhc2UgODoNCisgICAgICAgICAgICBEdW1w VWludDY0IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCisgICAgICAgICAgICBicmVhazsN CisgICAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBQcmludCAoDQorICAgICAgICAgICAg ICBMIlxuRVJST1I6ICVhOiBDQU5OT1QgUEFSU0UgVEhJUyBGSUVMRCwgRmllbGQgTGVuZ3RoID0g JWRcbiIsDQorICAgICAgICAgICAgICBBc2NpaU5hbWUsDQorICAgICAgICAgICAgICBQYXJzZXJb SW5kZXhdLkxlbmd0aA0KKyAgICAgICAgICAgICAgKTsNCisgICAgICAgIH0gLy8gc3dpdGNoDQor DQorICAgICAgICAvLyBWYWxpZGF0aW5nIG9ubHkgbWFrZXMgc2Vuc2UgaWYgd2UgYXJlIFRyYWNp bmcNCisgICAgICAgIC8vIHRoZSBwYXJzZWQgdGFibGUgZW50cmllcywgdG8gcmVwb3J0IGJ5IHRh YmxlIG5hbWUuDQorICAgICAgICBpZiAoUGFyc2VyW0luZGV4XS5GaWVsZFZhbGlkYXRvciAhPSBO VUxMKSB7DQorICAgICAgICAgIFBhcnNlcltJbmRleF0uRmllbGRWYWxpZGF0b3IgKFB0ciwgUGFy c2VyW0luZGV4XS5Db250ZXh0KTsNCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgUHJpbnQg KEwiXG4iKTsNCisgICAgfSAvLyBpZiAoVHJhY2UpDQorDQorICAgIGlmIChQYXJzZXJbSW5kZXhd Lkl0ZW1QdHIgIT0gTlVMTCkgew0KKyAgICAgICpQYXJzZXJbSW5kZXhdLkl0ZW1QdHIgPSAoVk9J RCopUHRyOw0KKyAgICB9DQorDQorICAgIFB0ciArPSBQYXJzZXJbSW5kZXhdLkxlbmd0aDsNCisg ICAgT2Zmc2V0ICs9IFBhcnNlcltJbmRleF0uTGVuZ3RoOw0KKyAgfSAvLyBmb3INCisNCisgIC8v IERlY3JlbWVudCB0aGUgSW5kZW50DQorICBnSW5kZW50IC09IEluZGVudDsNCisgIHJldHVybiBP ZmZzZXQ7DQorfQ0KKw0KKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdlbmVyaWMg QWRkcmVzcyBTdHJ1Y3R1cmUuDQorICBUaGUgR2FzUGFyc2VyIGFycmF5IGlzIHVzZWQgYnkgdGhl IFBhcnNlQWNwaSBmdW5jdGlvbiB0byBwYXJzZSBhbmQvb3IgdHJhY2UNCisgIHRoZSBHQVMgc3Ry dWN0dXJlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdhc1BhcnNlcltdID0gew0K KyAge0wiQWRkcmVzcyBTcGFjZSBJRCIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KKyAge0wiUmVnaXN0ZXIgQml0IFdpZHRoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZWdpc3RlciBCaXQgT2Zmc2V0IiwgMSwgMiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJBZGRyZXNzIFNpemUiLCAxLCAz LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkFkZHJlc3MiLCA4LCA0 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBUaGlzIGZ1 bmN0aW9uIGluZGVudHMgYW5kIHRyYWNlcyB0aGUgR0FTIHN0cnVjdHVyZSBhcyBkZXNjcmliZWQN CisgICAgYnkgdGhlIEdhc1BhcnNlci4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5dIEluZGVudCAgTnVt YmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCisqLw0KK1ZPSUQNCitEdW1wR2Fz U3RydWN0ICgNCisgIElOIFVJTlQ4KiAgICAgICAgUHRyLA0KKyAgSU4gVUlOVDMyICAgICAgICBJ bmRlbnQNCisgICkNCit7DQorICBQcmludCAoTCJcbiIpOw0KKyAgUGFyc2VBY3BpICgNCisgICAg VFJVRSwNCisgICAgSW5kZW50LA0KKyAgICBOVUxMLA0KKyAgICBQdHIsDQorICAgIEdBU19MRU5H VEgsDQorICAgIFBBUlNFUl9QQVJBTVMgKEdhc1BhcnNlcikNCisgICAgKTsNCit9DQorDQorLyoq IFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZCBieSB0 aGUgR2FzUGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQg c3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyovDQorVk9JRA0KK0R1bXBHYXMgKA0K KyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQorICBJTiBVSU5UOCogICAgICAg IFB0cg0KKyAgKQ0KK3sNCisgIER1bXBHYXNTdHJ1Y3QgKFB0ciwgMik7DQorfQ0KKw0KKy8qKiBU aGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZSBB Y3BpSGVhZGVyUGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorDQorICBAcmV0dmFsIE51bWJlciBvZiBieXRl cyBwYXJzZWQuDQorKi8NCitVSU5UMzINCitEdW1wQWNwaUhlYWRlciAoDQorICBJTiBVSU5UOCog UHRyDQorICApDQorew0KKyAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5m bzsNCisgIEFDUElfUEFSU0VSIEFjcGlIZWFkZXJQYXJzZXJbXSA9IHsNCisgICAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbykNCisgIH07DQorDQorICByZXR1cm4gUGFyc2VBY3BpICgN CisgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAwLA0KKyAgICAgICAgICAgIkFDUEkgVGFi bGUgSGVhZGVyIiwNCisgICAgICAgICAgIFB0ciwNCisgICAgICAgICAgIEFDUElfREVTQ1JJUFRJ T05fSEVBREVSX0xFTkdUSCwNCisgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQ YXJzZXIpDQorICAgICAgICAgICApOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUgQWNwaUhlYWRlclBhcnNlci4NCisN CisgIFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSByZXR1cm5zIHRoZSBTaWduYXR1cmUsIExlbmd0 aCBhbmQgcmV2aXNpb24gb2YgdGhlDQorICBBQ1BJIHRhYmxlLg0KKw0KKyAgQHBhcmFtIFtpbl0g IFB0ciAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisgIEBwYXJh bSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgc2lnbmF0 dXJlLg0KKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgICAgR2V0cyBsb2NhdGlvbiBvZiB0aGUgbGVu Z3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KKyAgQHBhcmFtIFtvdXRdIFJldmlzaW9uICAgR2V0cyBs b2NhdGlvbiBvZiB0aGUgcmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQorDQorICBAcmV0dmFs IE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQorKi8NCitVSU5UMzINCitQYXJzZUFjcGlIZWFkZXIg KA0KKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCisgIE9VVCBDT05TVCBVSU5UMzIqKiBTaWdu YXR1cmUsDQorICBPVVQgQ09OU1QgVUlOVDMyKiogTGVuZ3RoLA0KKyAgT1VUIENPTlNUIFVJTlQ4 KiogIFJldmlzaW9uDQorICApDQorew0KKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg Qnl0ZXNQYXJzZWQ7DQorICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPICBBY3BpSGRySW5m bzsNCisgIEFDUElfUEFSU0VSIEFjcGlIZWFkZXJQYXJzZXJbXSA9IHsNCisgICAgUEFSU0VfQUNQ SV9IRUFERVIgKCZBY3BpSGRySW5mbykNCisgIH07DQorDQorICBCeXRlc1BhcnNlZCA9IFBhcnNl QWNwaSAoDQorICAgICAgICAgICAgICAgICAgRkFMU0UsDQorICAgICAgICAgICAgICAgICAgMCwN CisgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgIFB0ciwNCisgICAg ICAgICAgICAgICAgICBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9MRU5HVEgsDQorICAgICAgICAg ICAgICAgICAgUEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCisgICAgICAgICAgICAg ICAgICApOw0KKw0KKyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZvLlNpZ25hdHVyZTsNCisgICpM ZW5ndGggPSBBY3BpSGRySW5mby5MZW5ndGg7DQorICAqUmV2aXNpb24gPSBBY3BpSGRySW5mby5S ZXZpc2lvbjsNCisNCisgIHJldHVybiBCeXRlc1BhcnNlZDsNCit9DQpkaWZmIC0tZ2l0IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2Vy LmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVGFi bGVQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjgyODRiYWM4MzFiMzQwNmMwNDM5OTU0YmI3ZjA3 M2FlMjEyNjkNCi0tLSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQpAQCAtMCwwICsxLDIxMiBAQA0K Ky8qKg0KKyAgQUNQSSB0YWJsZSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNl DQorICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQorKiovDQorDQorI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5o Pg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisjaW5jbHVkZSAiQWNwaVBhcnNlci5o Ig0KKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCIN CisNCisvKiogQSBsaXN0IG9mIHJlZ2lzdGVyZWQgQUNQSSB0YWJsZSBwYXJzZXJzLg0KKyovDQor U1RBVElDIEFDUElfVEFCTEVfUEFSU0VSIG1UYWJsZVBhcnNlckxpc3RbTUFYX0FDUElfVEFCTEVf UEFSU0VSU107DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KKw0KKyAg VGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLi4NCisNCisgIEBw YXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCisgIEBwYXJh bSBbaW5dIFBhcnNlclByb2MgIFRoZSBBQ1BJIHRhYmxlIHBhcnNlci4NCisNCisgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCisgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQorICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgVGFibGUNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCisgIEBy ZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KKyovDQorRUZJX1NUQVRVUw0K K0VGSUFQSQ0KK1JlZ2lzdGVyUGFyc2VyICgNCisgIElOICBVSU5UMzIgICAgICAgICAgICAgICAg ICBTaWduYXR1cmUsDQorICBJTiAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DICAgUGFyc2VyUHJvYw0K KyAgKQ0KK3sNCisgIFVJTlQzMiBpbmRleDsNCisNCisgIGlmICgoUGFyc2VyUHJvYyA9PSBOVUxM KSB8fCAoU2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSkgew0KKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAgLy8gU2VhcmNoIGlmIGEg cGFyc2VyIGlzIGFscmVhZHkgaW5zdGFsbGVkDQorICBmb3IgKGluZGV4ID0gMDsNCisgICAgICAg aW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRhYmxlUGFyc2Vy TGlzdFswXSkpOw0KKyAgICAgICBpbmRleCsrKQ0KKyAgew0KKyAgICBpZiAoU2lnbmF0dXJlID09 IG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0KKyAgICAgIGlmIChtVGFibGVQ YXJzZXJMaXN0W2luZGV4XS5QYXJzZXIgIT0gTlVMTCkgew0KKyAgICAgICAgcmV0dXJuIEVGSV9B TFJFQURZX1NUQVJURUQ7DQorICAgICAgfQ0KKyAgICB9DQorICB9DQorDQorICAvLyBGaW5kIHRo ZSBmaXJzdCBmcmVlIHNsb3QgYW5kIHJlZ2lzdGVyIHRoZSBwYXJzZXINCisgIGZvciAoaW5kZXgg PSAwOw0KKyAgICAgIGluZGV4IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2Yg KG1UYWJsZVBhcnNlckxpc3RbMF0pKTsNCisgICAgICBpbmRleCsrKQ0KKyAgew0KKyAgICBpZiAo bVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVS RV9OVUxMKSB7DQorICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlID0gU2ln bmF0dXJlOw0KKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9IFBhcnNlclBy b2M7DQorICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgICB9DQorICB9DQorDQorICAvLyBO byBmcmVlIHNsb3QgZm91bmQNCisgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCit9DQor DQorLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQorDQorICBUaGlzIGZ1bmN0 aW9uIGRlcmVnaXN0ZXJzIHRoZSBBQ1BJIHRhYmxlIHBhcnNlci4uDQorDQorICBAcGFyYW0gW2lu XSBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBTaWduYXR1cmUuDQorDQorICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIHdhcyBkZXJlZ2lzdGVyZWQuDQorICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KKyAgQHJl dHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZv dW5kLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0RlcmVnaXN0ZXJQYXJzZXIgKA0KKyAg SU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZQ0KKyAgKQ0KK3sNCisgIFVJTlQz MiBpbmRleDsNCisNCisgIGlmIChTaWduYXR1cmUgPT0gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05V TEwpIHsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCisgIH0NCisNCisgIGZv ciAoaW5kZXggPSAwOw0KKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3Qp IC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQorICAgICAgIGluZGV4KyspDQorICB7 DQorICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJl KSB7DQorICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlID0gQUNQSV9QQVJT RVJfU0lHTkFUVVJFX05VTEw7DQorICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2Vy ID0gTlVMTDsNCisgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorICAgIH0NCisgIH0NCisNCisg IC8vIE5vIG1hdGNoaW5nIHJlZ2lzdGVyZWQgcGFyc2VyIGZvdW5kLg0KKyAgcmV0dXJuIEVGSV9O T1RfRk9VTkQ7DQorfQ0KKw0KKy8qKiBHZXQgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQorDQorICBU aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyLg0KKw0KKyAgQHBhcmFt IFtpbl0gIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCisgIEBwYXJhbSBb b3V0XSBQYXJzZXJQcm9jICBQb2ludGVyIHRvIGEgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYy4NCisN CisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIHJldHVybmVk IHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1l dGVyIGlzIGludmFsaWQuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lz dGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQor R2V0UGFyc2VyICgNCisgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLA0K KyAgT1VUIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAqICBQYXJzZXJQcm9jDQorICApDQorew0KKyAg VUlOVDMyIGluZGV4Ow0KKw0KKyAgaWYgKChQYXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1 cmUgPT0gQUNQSV9QQVJTRVJfU0lHTkFUVVJFX05VTEwpKSB7DQorICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICBmb3IgKGluZGV4ID0gMDsNCisgICAgICAgaW5k ZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRhYmxlUGFyc2VyTGlz dFswXSkpOw0KKyAgICAgICBpbmRleCsrKQ0KKyAgew0KKyAgICBpZiAoU2lnbmF0dXJlID09IG1U YWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSkgew0KKyAgICAgICpQYXJzZXJQcm9jID0g bVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyOw0KKyAgICAgIHJldHVybiBFRklfU1VDQ0VT UzsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLy8gTm8gbWF0Y2hpbmcgcmVnaXN0ZXJlZCBwYXJzZXIg Zm91bmQuDQorICByZXR1cm4gRUZJX05PVF9GT1VORDsNCit9DQorDQorLyoqIFRoaXMgZnVuY3Rp b24gcHJvY2Vzc2VzIHRoZSBBQ1BJIHRhYmxlcy4NCisgIFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJv Y2Vzc1RhYmxlUmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFDUEkNCisgIHRhYmxlcywgcGVy Zm9ybSBiaW5hcnkgZHVtcCBvZiB0aGUgdGFibGVzIGFuZCBkZXRlcm1pbmUgaWYgdGhlDQorICBB Q1BJIGZpZWxkcyBzaG91bGQgYmUgdHJhY2VkLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBhbHNvIGlu dm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgdGFibGVzLg0KKw0KKyAgVGhpcyBmdW5jdGlv biBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUgaW5jbHVkaW5nDQor ICB0aGUgdW5rbm93bi91bnBhcnNlZCBBQ1BJIHRhYmxlcyBhbmQgdmFsaWRhdGVzIHRoZSBjaGVj a3N1bS4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgQUNQSQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh YmxlIGRhdGEgYnVmZmVyLg0KKyovDQorVk9JRA0KK1Byb2Nlc3NBY3BpVGFibGUgKA0KKyAgSU4g VUlOVDgqIFB0cg0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KKyAgQk9PTEVB TiAgICAgICBUcmFjZTsNCisgIENPTlNUIFVJTlQzMiogQWNwaVRhYmxlU2lnbmF0dXJlOw0KKyAg Q09OU1QgVUlOVDMyKiBBY3BpVGFibGVMZW5ndGg7DQorICBDT05TVCBVSU5UOCogIEFjcGlUYWJs ZVJldmlzaW9uOw0KKyAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DIFBhcnNlclByb2M7DQorDQorICBQ YXJzZUFjcGlIZWFkZXIgKA0KKyAgICBQdHIsDQorICAgICZBY3BpVGFibGVTaWduYXR1cmUsDQor ICAgICZBY3BpVGFibGVMZW5ndGgsDQorICAgICZBY3BpVGFibGVSZXZpc2lvbg0KKyAgICApOw0K Kw0KKyAgVHJhY2UgPSBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCisgICAgICAgICAgICAq QWNwaVRhYmxlU2lnbmF0dXJlLA0KKyAgICAgICAgICAgIFB0ciwNCisgICAgICAgICAgICAqQWNw aVRhYmxlTGVuZ3RoDQorICAgICAgICAgICAgKTsNCisNCisgIGlmIChUcmFjZSkgew0KKyAgICBE dW1wUmF3IChQdHIsICpBY3BpVGFibGVMZW5ndGgpOw0KKyAgICBWZXJpZnlDaGVja3N1bSAoVFJV RSwgUHRyLCAqQWNwaVRhYmxlTGVuZ3RoKTsNCisgIH0NCisNCisgIFN0YXR1cyA9IEdldFBhcnNl ciAoKkFjcGlUYWJsZVNpZ25hdHVyZSwgJlBhcnNlclByb2MpOw0KKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICAvLyBObyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZCwgZG8gZGVmYXVs dCBoYW5kbGluZy4NCisgICAgaWYgKFRyYWNlKSB7DQorICAgICAgRHVtcEFjcGlIZWFkZXIgKFB0 cik7DQorICAgIH0NCisgICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgUGFyc2VyUHJvYyAoDQorICAg IFRyYWNlLA0KKyAgICBQdHIsDQorICAgICpBY3BpVGFibGVMZW5ndGgsDQorICAgICpBY3BpVGFi bGVSZXZpc2lvbg0KKyAgICApOw0KK30NCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYjY1 ZWVkM2M0YzkzM2I4YjA3ZDkyYzFiYmEwZWZiZmUzODdhNWUNCi0tLSAvZGV2L251bGwNCisrKyBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMN CkBAIC0wLDAgKzEsNTk3IEBADQorLyoqDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0K KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELg0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQorI2lu Y2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxsTGliLmg+ DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQorI2luY2x1 ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGli Lmg+DQorI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KKyNpbmNsdWRl ICJVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaCINCisjaW5jbHVkZSAiQWNwaVBhcnNlci5o Ig0KKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KKyNpbmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCIN CisNCitFRklfSElJX0hBTkRMRSBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQorDQor Ly8gUmVwb3J0IHZhcmlhYmxlcw0KK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVNlbGVjdGVk QWNwaVRhYmxlOw0KK1NUQVRJQyBDT05TVCBDSEFSMTYqICAgICAgbVNlbGVjdGVkQWNwaVRhYmxl TmFtZTsNCitTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5k Ow0KK1NUQVRJQyBFUkVQT1JUX09QVElPTiAgICAgbVJlcG9ydFR5cGU7DQorU1RBVElDIFVJTlQz MiAgICAgICAgICAgICBtVGFibGVDb3VudDsNCitTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1C aW5UYWJsZUNvdW50Ow0KK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVRhYmxlRXJyb3JDb3Vu dDsNCitTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJsZVdhcm5pbmdDb3VudDsNCitTVEFU SUMgQk9PTEVBTiAgICAgICAgICAgIG1Db2xvdXJIaWdobGlnaHRpbmc7DQorU1RBVElDIEJPT0xF QU4gICAgICAgICAgICBtVmVyYm9zZTsNCitTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1Db25z aXN0ZW5jeUNoZWNrOw0KKw0KKy8qKiBBbiBhcnJheSBvZiBhY3BpdmlldyBjb21tYW5kIGxpbmUg cGFyYW1ldGVycy4NCisqLw0KK1NUQVRJQyBDT05TVCBTSEVMTF9QQVJBTV9JVEVNIFBhcmFtTGlz dFtdID0gew0KKyAge0wiLz8iLCBUeXBlRmxhZ30sDQorICB7TCItYyIsIFR5cGVGbGFnfSwNCisg IHtMIi1kIiwgVHlwZUZsYWd9LA0KKyAge0wiLWgiLCBUeXBlVmFsdWV9LA0KKyAge0wiLWwiLCBU eXBlRmxhZ30sDQorICB7TCItcyIsIFR5cGVWYWx1ZX0sDQorICB7TCItdiIsIFR5cGVGbGFnfSwN CisgIHtOVUxMLCBUeXBlTWF4fQ0KK307DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50 cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyLg0KKyovDQorVk9JRA0KK0luY3JlbWVudEVy cm9yQ291bnQgKA0KKyAgVk9JRA0KKyAgKQ0KK3sNCisgIG1UYWJsZUVycm9yQ291bnQrKzsNCit9 DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3Vu dC4NCisNCisgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2YgZXJyb3JzIGRldGVjdGVkIGlu IHRoZSBBQ1BJIHRhYmxlcy4NCisqLw0KK1VJTlQzMg0KK0dldEVycm9yQ291bnQgKA0KKyAgVk9J RA0KKyAgKQ0KK3sNCisgIHJldHVybiBtVGFibGVFcnJvckNvdW50Ow0KK30NCisNCisvKiogVGhp cyBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnRlci4NCisq Lw0KK1ZPSUQNCitJbmNyZW1lbnRXYXJuaW5nQ291bnQgKA0KKyAgVk9JRA0KKyAgKQ0KK3sNCisg IG1UYWJsZVdhcm5pbmdDb3VudCsrOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQorDQorICBAcmV0dmFsIFJldHVybnMgdGhl IGNvdW50IG9mIHdhcm5pbmcgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFibGVzLg0KKyovDQorVUlO VDMyDQorR2V0V2FybmluZ0NvdW50ICgNCisgIFZPSUQNCisgICkNCit7DQorICByZXR1cm4gbVRh YmxlV2FybmluZ0NvdW50Ow0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBj b2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCisNCisgIEByZXR2YWwgVFJVRSBpZiBjb2xvdXIg aGlnaGxpZ2h0aW5nIGlzIGVuYWJsZWQuDQorKi8NCitCT09MRUFODQorR2V0Q29sb3VySGlnaGxp Z2h0aW5nICgNCisgIFZPSUQNCisgICkNCit7DQorICByZXR1cm4gbUNvbG91ckhpZ2hsaWdodGlu ZzsNCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVwb3J0IG9wdGlvbnMu DQorDQorICBAcmV0dmFsIFJldHVybnMgdGhlIHJlcG9ydCBvcHRpb24uDQorKi8NCitTVEFUSUMN CitFUkVQT1JUX09QVElPTg0KK0dldFJlcG9ydE9wdGlvbiAoDQorICBWT0lEDQorICApDQorew0K KyAgcmV0dXJuIG1SZXBvcnRUeXBlOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KKw0KKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBzZWxl Y3RlZCBBQ1BJIHRhYmxlLg0KKyovDQorU1RBVElDDQorVUlOVDMyDQorR2V0U2VsZWN0ZWRBY3Bp VGFibGUgKA0KKyAgVk9JRA0KKyAgKQ0KK3sNCisgIHJldHVybiBtU2VsZWN0ZWRBY3BpVGFibGU7 DQorfQ0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBBQ1BJIHRhYmxlIHRvIGEgZmls ZS4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICBQb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGRh dGEuDQorICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBvZiB0aGUgQUNQSSB0YWJs ZS4NCisNCisgIEByZXR2YWwgVFJVRSAgICAgICAgICBTdWNjZXNzLg0KKyovDQorU1RBVElDDQor Qk9PTEVBTg0KK0R1bXBBY3BpVGFibGVUb0ZpbGUgKA0KKyAgSU4gQ09OU1QgVUlOVDgqICBQdHIs DQorICBJTiBDT05TVCBVSU5UTiAgIExlbmd0aA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAg ICAgICBTdGF0dXM7DQorICBDSEFSMTYgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXJbTUFYX0ZJ TEVfTkFNRV9MRU5dOw0KKyAgU0hFTExfRklMRV9IQU5ETEUgIER1bXBGaWxlSGFuZGxlID0gTlVM TDsNCisgIFVJTlROICAgICAgICAgICAgICBUcmFuc2ZlckJ5dGVzID0gTGVuZ3RoOw0KKw0KKyAg VW5pY29kZVNQcmludCAoDQorICAgIEZpbGVOYW1lQnVmZmVyLA0KKyAgICBzaXplb2YgKEZpbGVO YW1lQnVmZmVyKSwNCisgICAgTCIuXFwlcyUwNGQuYmluIiwNCisgICAgbVNlbGVjdGVkQWNwaVRh YmxlTmFtZSwNCisgICAgbUJpblRhYmxlQ291bnQrKw0KKyAgICApOw0KKw0KKyAgU3RhdHVzID0g U2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQorICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVyLA0KKyAg ICAgICAgICAgICAmRHVtcEZpbGVIYW5kbGUsDQorICAgICAgICAgICAgIEVGSV9GSUxFX01PREVf UkVBRCB8IEVGSV9GSUxFX01PREVfV1JJVEUgfCBFRklfRklMRV9NT0RFX0NSRUFURSwNCisgICAg ICAgICAgICAgMA0KKyAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KKyAgICBTaGVsbFByaW50SGlpRXggKA0KKyAgICAgIC0xLA0KKyAgICAgIC0xLA0KKyAgICAg IE5VTEwsDQorICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElBKSwNCisg ICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCisgICAgICBMImFjcGl2aWV3Ig0KKyAgICAg ICk7DQorICAgIHJldHVybiBGQUxTRTsNCisgIH0NCisNCisgIFByaW50IChMIkR1bXBpbmcgQUNQ SSB0YWJsZSB0byA6ICVzIC4uLiAiLCBGaWxlTmFtZUJ1ZmZlcik7DQorDQorICBTdGF0dXMgPSBT aGVsbFdyaXRlRmlsZSAoDQorICAgICAgICAgICAgIER1bXBGaWxlSGFuZGxlLA0KKyAgICAgICAg ICAgICAmVHJhbnNmZXJCeXRlcywNCisgICAgICAgICAgICAgKFZPSUQqKVB0cg0KKyAgICAgICAg ICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBQcmludCAoTCJFUlJP UjogRmFpbGVkIHRvIGR1bXAgdGFibGUgdG8gYmluYXJ5IGZpbGUuXG4iKTsNCisgIH0NCisNCisg IFNoZWxsQ2xvc2VGaWxlICgmRHVtcEZpbGVIYW5kbGUpOw0KKyAgUHJpbnQgKEwiRE9ORS5cbiIp Ow0KKw0KKyAgcmV0dXJuIChMZW5ndGggPT0gVHJhbnNmZXJCeXRlcyk7DQorfQ0KKw0KKy8qKiBU aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgdGFibGUgcmVwb3J0aW5nIG9wdGlvbnMgZm9yIHRo ZSBBQ1BJIHRhYmxlLg0KKw0KKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlIFRoZSBBQ1BJIHRhYmxl IFNpZ25hdHVyZS4NCisgIEBwYXJhbSBbaW5dIFRhYmxlUHRyICBQb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGRhdGEuDQorICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUg QUNQSSB0YWJsZS4NCisNCisgIEByZXR2YWwgUmV0dXJucyBUUlVFIGlmIHRoZSBBQ1BJIHRhYmxl IHNob3VsZCBiZSB0cmFjZWQuDQorKi8NCitCT09MRUFODQorUHJvY2Vzc1RhYmxlUmVwb3J0T3B0 aW9ucyAoDQorICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCisgIElOIENPTlNUIFVJTlQ4 KiAgVGFibGVQdHIsDQorICBJTiBDT05TVCBVSU5UMzIgIExlbmd0aA0KKyAgKQ0KK3sNCisgIFVJ TlROICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQorICBVSU5UOCogIFNpZ25hdHVyZVB0ciA9IChVSU5U OCopKFVJTlROKSZTaWduYXR1cmU7DQorICBCT09MRUFOIExvZyA9IEZBTFNFOw0KKyAgQk9PTEVB TiBIaWdoTGlnaHQgPSBHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCk7DQorICBzd2l0Y2ggKEdldFJl cG9ydE9wdGlvbiAoKSkgew0KKyAgICBjYXNlIEVSRVBPUlRfQUxMOg0KKyAgICAgIExvZyA9IFRS VUU7DQorICAgICAgYnJlYWs7DQorICAgIGNhc2UgRVJFUE9SVF9TRUxFQ1RFRDoNCisgICAgICBp ZiAoU2lnbmF0dXJlID09IEdldFNlbGVjdGVkQWNwaVRhYmxlICgpKSB7DQorICAgICAgICBMb2cg PSBUUlVFOw0KKyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQgPSBUUlVFOw0KKyAgICAg IH0NCisgICAgICBicmVhazsNCisgICAgY2FzZSBFUkVQT1JUX1RBQkxFX0xJU1Q6DQorICAgICAg aWYgKG1UYWJsZUNvdW50ID09IDApIHsNCisgICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCisgICAg ICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmlidXRlOw0K KyAgICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlICgNCisgICAgICAgICAgICAgICAg ICAgICAgICAgZ1NULT5Db25PdXQsDQorICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhU X0FUVFIoRUZJX0NZQU4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0 dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQorICAgICAgICAgICAgICAgICAgICAgICAg ICk7DQorICAgICAgICB9DQorICAgICAgICBQcmludCAoTCJcbkluc3RhbGxlZCBUYWJsZShzKTpc biIpOw0KKyAgICAgICAgaWYgKEhpZ2hMaWdodCkgew0KKyAgICAgICAgICBnU1QtPkNvbk91dC0+ U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KKyAgICAgICAg fQ0KKyAgICAgIH0NCisgICAgICBQcmludCAoDQorICAgICAgICBMIlx0JTRkLiAlYyVjJWMlY1xu IiwNCisgICAgICAgICsrbVRhYmxlQ291bnQsDQorICAgICAgICBTaWduYXR1cmVQdHJbMF0sDQor ICAgICAgICBTaWduYXR1cmVQdHJbMV0sDQorICAgICAgICBTaWduYXR1cmVQdHJbMl0sDQorICAg ICAgICBTaWduYXR1cmVQdHJbM10NCisgICAgICAgICk7DQorICAgICAgYnJlYWs7DQorICAgIGNh c2UgRVJFUE9SVF9EVU1QX0JJTl9GSUxFOg0KKyAgICAgIGlmIChTaWduYXR1cmUgPT0gR2V0U2Vs ZWN0ZWRBY3BpVGFibGUgKCkpIHsNCisgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0g VFJVRTsNCisgICAgICAgIER1bXBBY3BpVGFibGVUb0ZpbGUgKFRhYmxlUHRyLCBMZW5ndGgpOw0K KyAgICAgIH0NCisgICAgICBicmVhazsNCisgICAgY2FzZSBFUkVQT1JUX01BWDoNCisgICAgICAv LyBXZSBzaG91bGQgbmV2ZXIgYmUgaGVyZS4NCisgICAgICAvLyBUaGlzIGNhc2UgaXMgb25seSBw cmVzZW50IHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZy4NCisgICAgICBicmVhazsNCisgIH0g Ly8gc3dpdGNoDQorDQorICBpZiAoTG9nKSB7DQorICAgIGlmIChIaWdoTGlnaHQpIHsNCisgICAg ICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQorICAg ICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQorICAgICAgICAgICAgICAgICAgICAgZ1NU LT5Db25PdXQsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfTElHSFRC TFVFLA0KKyAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxC SVQ1fEJJVDYpKT4+NCkpDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgfQ0KKyAgICBQ cmludCAoDQorICAgICAgTCJcblxuIC0tLS0tLS0tLS0tLS0tLSAlYyVjJWMlYyBUYWJsZSAtLS0t LS0tLS0tLS0tLS0gXG5cbiIsDQorICAgICAgU2lnbmF0dXJlUHRyWzBdLA0KKyAgICAgIFNpZ25h dHVyZVB0clsxXSwNCisgICAgICBTaWduYXR1cmVQdHJbMl0sDQorICAgICAgU2lnbmF0dXJlUHRy WzNdDQorICAgICAgKTsNCisgICAgaWYgKEhpZ2hMaWdodCkgew0KKyAgICAgIGdTVC0+Q29uT3V0 LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQorICAgIH0N CisgIH0NCisNCisgIHJldHVybiBMb2c7DQorfQ0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIGNvbnZl cnRzIGEgc3RyaW5nIHRvIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KKw0KKyAgQHBhcmFtIFtpbl0g U3RyICAgUG9pbnRlciB0byB0aGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUNCisgICAg ICAgICAgICAgICAgICAgIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KKw0KKyAgQHJldHZhbCBUaGUg QUNQSSB0YWJsZSBzaWduYXR1cmUuDQorKi8NCitTVEFUSUMNCitVSU5UMzINCitDb252ZXJ0U3Ry VG9BY3BpU2lnbmF0dXJlICgNCisgIElOICBDT05TVCBDSEFSMTYqIFN0cg0KKyAgKQ0KK3sNCisg IFVJTlQ4IEluZGV4Ow0KKyAgQ0hBUjggUHRyWzRdOw0KKw0KKyAgSW5kZXggPSAwOw0KKyAgLy8g Q29udmVydCB0byBVcHBlciBjYXNlIGFuZCBjb252ZXJ0IHRvIEFTQ0lJDQorICB3aGlsZSAoKElu ZGV4IDwgNCkgJiYgKFN0cltJbmRleF0gIT0gMCkpIHsNCisgICAgaWYgKFN0cltJbmRleF0gPj0g TCdhJyAmJiBTdHJbSW5kZXhdIDw9IEwneicpIHsNCisgICAgICBQdHJbSW5kZXhdID0gKENIQVI4 KShTdHJbSW5kZXhdIC0gKEwnYScgLSBMJ0EnKSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgUHRy W0luZGV4XSA9IChDSEFSOClTdHJbSW5kZXhdOw0KKyAgICB9DQorICAgIEluZGV4Kys7DQorICB9 DQorICByZXR1cm4gKCooVUlOVDMyKilQdHIpOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBp dGVyYXRlcyB0aGUgY29uZmlndXJhdGlvbiB0YWJsZSBlbnRyaWVzIGluIHRoZQ0KKyAgICBzeXN0 ZW0gdGFibGUsIHJldHJpZXZlcyB0aGUgUlNEUCBwb2ludGVyIGFuZCBzdGFydHMgcGFyc2luZw0K KyAgICB0aGUgQUNQSSB0YWJsZXMuDQorDQorICBAcGFyYW0gW2luXSBTeXN0ZW1UYWJsZSBQb2lu dGVyIHRvIHRoZSBFRkkgc3lzdGVtIHRhYmxlLg0KKw0KKyAgQHJldHZhbCBSZXR1cm5zIEVGSV9O T1RfRk9VTkQgaWYgdGhlIFJTRFAgcG9pbnRlciBpcyBub3QgZm91bmQuDQorICAgICAgICAgIFJl dHVybnMgRUZJX1NVQ0NFU1MgaWYgc3VjY2Vzc2Z1bC4NCisqLw0KK1NUQVRJQw0KK0VGSV9TVEFU VVMNCitFRklBUEkNCitBY3BpVmlldyAoDQorICBJTiBFRklfU1lTVEVNX1RBQkxFKiBTeXN0ZW1U YWJsZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICBTdGF0dXM7DQorICBV SU5UTiAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQorICBFRklfQ09ORklHVVJBVElPTl9UQUJM RSogRWZpQ29uZmlndXJhdGlvblRhYmxlOw0KKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgIEZv dW5kQWNwaVRhYmxlOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmli dXRlOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgIFByaW50QXR0cmlidXRlOw0KKyAgRVJF UE9SVF9PUFRJT04gICAgICAgICAgIFJlcG9ydE9wdGlvbjsNCisNCisgIC8vIFNlYXJjaCB0aGUg dGFibGUgZm9yIGFuIGVudHJ5IHRoYXQgbWF0Y2hlcyB0aGUgQUNQSSBUYWJsZSBHdWlkDQorICBG b3VuZEFjcGlUYWJsZSA9IEZBTFNFOw0KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU3lzdGVt VGFibGUtPk51bWJlck9mVGFibGVFbnRyaWVzOyBJbmRleCsrKSB7DQorICAgIGlmIChDb21wYXJl R3VpZCAoJmdFZmlBY3BpVGFibGVHdWlkLA0KKyAgICAgICAgICAmKFN5c3RlbVRhYmxlLT5Db25m aWd1cmF0aW9uVGFibGVbSW5kZXhdLlZlbmRvckd1aWQpKSkgew0KKyAgICAgIEVmaUNvbmZpZ3Vy YXRpb25UYWJsZSA9ICZTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4XTsNCisg ICAgICBGb3VuZEFjcGlUYWJsZSA9IFRSVUU7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIH0N CisNCisgIGlmIChGb3VuZEFjcGlUYWJsZSkgew0KKyAgICBTdGF0dXMgPSBQYXJzZVJzZHAgKChV SU5UOCopRWZpQ29uZmlndXJhdGlvblRhYmxlLT5WZW5kb3JUYWJsZSk7DQorICB9IGVsc2Ugew0K KyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KKyAgICBQcmludCAoDQorICAgICAgTCJFUlJP UjogRmFpbGVkIHRvIGZpbmQgQUNQSSBUYWJsZSBHdWlkIGluIFN5c3RlbSBDb25maWd1cmF0aW9u IFRhYmxlLlxuIg0KKyAgICAgICk7DQorICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQorICB9 DQorDQorICBSZXBvcnRPcHRpb24gPSBHZXRSZXBvcnRPcHRpb24gKCk7DQorICBpZiAoRVJFUE9S VF9UQUJMRV9MSVNUICE9IFJlcG9ydE9wdGlvbikgew0KKyAgICBpZiAoKChFUkVQT1JUX1NFTEVD VEVEID09IFJlcG9ydE9wdGlvbikgIHx8DQorICAgICAgICAgKEVSRVBPUlRfRFVNUF9CSU5fRklM RSA9PSBSZXBvcnRPcHRpb24pKSAmJg0KKyAgICAgICAgKCFtU2VsZWN0ZWRBY3BpVGFibGVGb3Vu ZCkpIHsNCisgICAgICBQcmludCAoTCJcblJlcXVlc3RlZCBBQ1BJIFRhYmxlIG5vdCBmb3VuZC5c biIpOw0KKyAgICB9IGVsc2UgaWYgKEVSRVBPUlRfRFVNUF9CSU5fRklMRSAhPSBSZXBvcnRPcHRp b24pIHsNCisgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRy aWJ1dGU7DQorDQorICAgICAgUHJpbnQgKEwiXG5UYWJsZSBTdGF0aXN0aWNzOlxuIik7DQorDQor ICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KKyAgICAgICAgUHJpbnRBdHRy aWJ1dGUgPSAoR2V0RXJyb3JDb3VudCAoKSA+IDApID8NCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1RFWFRfQVRUUiAoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJ X1JFRCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRl JihCSVQ0fEJJVDV8QklUNikpPj40KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkg Og0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbEF0dHJpYnV0ZTsNCisgICAg ICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBQcmludEF0dHJpYnV0 ZSk7DQorICAgICAgfQ0KKyAgICAgIFByaW50IChMIlx0JWQgRXJyb3IocylcbiIsIEdldEVycm9y Q291bnQgKCkpOw0KKw0KKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCisg ICAgICAgIFByaW50QXR0cmlidXRlID0gKEdldFdhcm5pbmdDb3VudCAoKSA+IDApID8NCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAoDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX1JFRCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkgOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5h bEF0dHJpYnV0ZTsNCisNCisgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+ Q29uT3V0LCBQcmludEF0dHJpYnV0ZSk7DQorICAgICAgfQ0KKyAgICAgIFByaW50IChMIlx0JWQg V2FybmluZyhzKVxuIiwgR2V0V2FybmluZ0NvdW50ICgpKTsNCisNCisgICAgICBpZiAoR2V0Q29s b3VySGlnaGxpZ2h0aW5nICgpKSB7DQorICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRl IChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0KKyAgICAgIH0NCisgICAgfQ0KKyAg fQ0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorLyoqDQorICBGdW5jdGlvbiBmb3IgJ2FjcGl2 aWV3JyBjb21tYW5kLg0KKw0KKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRo ZSBJbWFnZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQorICBAcGFyYW1baW5dIFN5c3RlbVRhYmxlICBQ b2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUgKE5VTEwgaWYgSW50ZXJuYWwpLg0KKyovDQorU0hF TExfU1RBVFVTDQorRUZJQVBJDQorU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcgKA0KKyAgSU4gRUZJ X0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQorICBJTiBFRklfU1lTVEVNX1RBQkxFKiBTeXN0 ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQorICBTSEVM TF9TVEFUVVMgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9TVUNDRVNTOw0KKyAgTElTVF9FTlRS WSogICAgICAgIFBhY2thZ2UgPSBOVUxMOw0KKyAgQ0hBUjE2KiAgICAgICAgICAgIFByb2JsZW1Q YXJhbTsNCisgIENPTlNUIENIQVIxNiogICAgICBUZW1wOw0KKyAgQ0hBUjggICAgICAgICAgICAg IENvbG91ck9wdGlvbls4XTsNCisgIFNIRUxMX0ZJTEVfSEFORExFICBUbXBEdW1wRmlsZUhhbmRs ZSA9IE5VTEw7DQorDQorICAvLyBTZXQgRGVmYXVsdHMNCisgIG1SZXBvcnRUeXBlID0gRVJFUE9S VF9BTEw7DQorICBtVGFibGVDb3VudCA9IDA7DQorICBtQmluVGFibGVDb3VudCA9IDA7DQorICBt U2VsZWN0ZWRBY3BpVGFibGUgPSAwOw0KKyAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9IE5VTEw7 DQorICBtVGFibGVFcnJvckNvdW50ID0gMDsNCisgIG1UYWJsZVdhcm5pbmdDb3VudCA9IDA7DQor ICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IEZBTFNFOw0KKyAgbVZlcmJvc2UgPSBUUlVFOw0K KyAgbUNvbnNpc3RlbmN5Q2hlY2sgPSBUUlVFOw0KKw0KKyAgU3RhdHVzID0gU2hlbGxDb21tYW5k TGluZVBhcnNlIChQYXJhbUxpc3QsICZQYWNrYWdlLCAmUHJvYmxlbVBhcmFtLCBUUlVFKTsNCisg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgaWYgKFN0YXR1cyA9PSBFRklfVk9MVU1F X0NPUlJVUFRFRCAmJiBQcm9ibGVtUGFyYW0gIT0gTlVMTCkgew0KKyAgICAgIFNoZWxsUHJpbnRI aWlFeCAoDQorICAgICAgICAtMSwNCisgICAgICAgIC0xLA0KKyAgICAgICAgTlVMTCwNCisgICAg ICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9QUk9CTEVNKSwNCisgICAgICAgIGdTaGVsbEFjcGlW aWV3SGlpSGFuZGxlLA0KKyAgICAgICAgTCJhY3BpdmlldyIsDQorICAgICAgICBQcm9ibGVtUGFy YW0NCisgICAgICAgICk7DQorICAgICAgRnJlZVBvb2wgKFByb2JsZW1QYXJhbSk7DQorICAgICAg U2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCisgICAgfSBlbHNlIHsNCisg ICAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgfQ0KKyAgfSBlbHNlIHsNCisgICAgaWYgKFNoZWxs Q29tbWFuZExpbmVHZXRDb3VudCAoUGFja2FnZSkgPiAxKSB7DQorICAgICAgU2hlbGxQcmludEhp aUV4ICgNCisgICAgICAgIC0xLA0KKyAgICAgICAgLTEsDQorICAgICAgICBOVUxMLA0KKyAgICAg ICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwNCisgICAgICAgIGdTaGVsbEFjcGlW aWV3SGlpSGFuZGxlLA0KKyAgICAgICAgTCJhY3BpdmlldyINCisgICAgICAgICk7DQorICAgICAg U2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCisgICAgfSBlbHNlIGlmIChT aGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItPyIpKSB7DQorICAgICAgU2hlbGxQ cmludEhpaUV4ICgNCisgICAgICAgIC0xLA0KKyAgICAgICAgLTEsDQorICAgICAgICBOVUxMLA0K KyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VUX0hFTFBfQUNQSVZJRVcpLA0KKyAgICAgICAg Z1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQorICAgICAgICBMImFjcGl2aWV3Ig0KKyAgICAgICAg KTsNCisgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCIt cyIpICYmDQorICAgICAgICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdl LCBMIi1zIikgPT0gTlVMTCkgew0KKyAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQorICAgICAgICAt MSwNCisgICAgICAgIC0xLA0KKyAgICAgICAgTlVMTCwNCisgICAgICAgIFNUUklOR19UT0tFTiAo U1RSX0dFTl9OT19WQUxVRSksDQorICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCisg ICAgICAgIEwiYWNwaXZpZXciLA0KKyAgICAgICAgTCItcyINCisgICAgICAgICk7DQorICAgICAg U2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCisgICAgfSBlbHNlIGlmICgo U2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSAmJg0KKyAgICAgICAgICAg ICAgICBTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItbCIpKSkgew0KKyAgICAg IFNoZWxsUHJpbnRIaWlFeCAoDQorICAgICAgICAtMSwNCisgICAgICAgIC0xLA0KKyAgICAgICAg TlVMTCwNCisgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQorICAgICAg ICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCisgICAgICAgIEwiYWNwaXZpZXciDQorICAgICAg ICApOw0KKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQorICAg IH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWgiKSAmJg0K KyAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwgTCItaCIp ID09IE5VTEwpIHsNCisgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQorICAgICAgICAgIC0xLA0K KyAgICAgICAgICAtMSwNCisgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgU1RSSU5HX1RPS0VO IChTVFJfR0VOX05PX1ZBTFVFKSwNCisgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUs DQorICAgICAgICAgIEwiYWNwaXZpZXciLA0KKyAgICAgICAgICBMIi1oIg0KKyAgICAgICAgICAp Ow0KKyAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCisgICAg fSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItZCIpICYmDQor ICAgICAgICAgICAgICAgIVNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1zIikp IHsNCisgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQorICAgICAgICAgIC0xLA0KKyAgICAgICAg ICAtMSwNCisgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VO X01JU1NJTkdfT1BUSU9OKSwNCisgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQor ICAgICAgICAgIEwiYWNwaXZpZXciLA0KKyAgICAgICAgICBMIi1zIiwNCisgICAgICAgICAgTCIt ZCINCisgICAgICAgICAgKTsNCisgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9Q QVJBTUVURVI7DQorICAgIH0gZWxzZSB7DQorICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbG91ciBv cHRpb24gaXMgc2V0DQorICAgICAgVGVtcCA9IFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFj a2FnZSwgTCItaCIpOw0KKyAgICAgIGlmIChUZW1wICE9IE5VTEwpIHsNCisgICAgICAgIFVuaWNv ZGVTdHJUb0FzY2lpU3RyUyAoVGVtcCwgQ29sb3VyT3B0aW9uLCBzaXplb2YgKENvbG91ck9wdGlv bikpOw0KKyAgICAgICAgaWYgKChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIk9OIikgPT0g MCkgfHwNCisgICAgICAgICAgICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJUUlVFIikg PT0gMCkpIHsNCisgICAgICAgICAgbUNvbG91ckhpZ2hsaWdodGluZyA9IFRSVUU7DQorICAgICAg ICB9IGVsc2UgaWYgKChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIk9GRiIpID09IDApIHx8 DQorICAgICAgICAgICAgICAgICAgIChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIkZBTFNF IikgPT0gMCkpIHsNCisgICAgICAgICAgbUNvbG91ckhpZ2hsaWdodGluZyA9IEZBTFNFOw0KKyAg ICAgICAgfQ0KKyAgICAgIH0NCisNCisgICAgICBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcg KFBhY2thZ2UsIEwiLWwiKSkgew0KKyAgICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX1RBQkxF X0xJU1Q7DQorICAgICAgfSBlbHNlIHsNCisgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUg PSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLXMiKTsNCisgICAgICAgIGlm IChtU2VsZWN0ZWRBY3BpVGFibGVOYW1lICE9IE5VTEwpIHsNCisgICAgICAgICAgbVNlbGVjdGVk QWNwaVRhYmxlID0gKFVJTlQzMilDb252ZXJ0U3RyVG9BY3BpU2lnbmF0dXJlICgNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgICAg IG1SZXBvcnRUeXBlID0gRVJFUE9SVF9TRUxFQ1RFRDsNCisNCisgICAgICAgICAgaWYgKFNoZWxs Q29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1kIikpICB7DQorICAgICAgICAgICAgLy8g Q3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgdG8gY2hlY2sgaWYgdGhlIG1lZGlhIGlzIHdyaXRhYmxl Lg0KKyAgICAgICAgICAgIENIQVIxNiBGaWxlTmFtZUJ1ZmZlcltNQVhfRklMRV9OQU1FX0xFTl07 DQorICAgICAgICAgICAgbVJlcG9ydFR5cGUgPSBFUkVQT1JUX0RVTVBfQklOX0ZJTEU7DQorDQor ICAgICAgICAgICAgVW5pY29kZVNQcmludCAoDQorICAgICAgICAgICAgICBGaWxlTmFtZUJ1ZmZl ciwNCisgICAgICAgICAgICAgIHNpemVvZiAoRmlsZU5hbWVCdWZmZXIpLA0KKyAgICAgICAgICAg ICAgTCIuXFwlcyUwNGQudG1wIiwNCisgICAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5h bWUsDQorICAgICAgICAgICAgICBtQmluVGFibGVDb3VudA0KKyAgICAgICAgICAgICAgKTsNCisN CisgICAgICAgICAgICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCisgICAgICAgICAg ICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgJlRt cER1bXBGaWxlSGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9S RUFEIHwgRUZJX0ZJTEVfTU9ERV9XUklURSB8DQorICAgICAgICAgICAgICAgICAgICAgICBFRklf RklMRV9NT0RFX0NSRUFURSwNCisgICAgICAgICAgICAgICAgICAgICAgIDANCisgICAgICAgICAg ICAgICAgICAgICAgICk7DQorDQorICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KKyAgICAgICAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsN CisgICAgICAgICAgICAgIFRtcER1bXBGaWxlSGFuZGxlID0gTlVMTDsNCisgICAgICAgICAgICAg IFNoZWxsUHJpbnRIaWlFeCAoDQorICAgICAgICAgICAgICAgIC0xLA0KKyAgICAgICAgICAgICAg ICAtMSwNCisgICAgICAgICAgICAgICAgTlVMTCwNCisgICAgICAgICAgICAgICAgU1RSSU5HX1RP S0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElBKSwNCisgICAgICAgICAgICAgICAgZ1NoZWxsQWNw aVZpZXdIaWlIYW5kbGUsDQorICAgICAgICAgICAgICAgIEwiYWNwaXZpZXciDQorICAgICAgICAg ICAgICAgICk7DQorICAgICAgICAgICAgICBnb3RvIERvbmU7DQorICAgICAgICAgICAgfQ0KKyAg ICAgICAgICAgIC8vIERlbGV0ZSBUZW1wb3JhcnkgZmlsZS4NCisgICAgICAgICAgICBTaGVsbERl bGV0ZUZpbGUgKCZUbXBEdW1wRmlsZUhhbmRsZSk7DQorICAgICAgICAgIH0gLy8gLWQNCisgICAg ICAgIH0gLy8gLXMNCisgICAgICB9DQorDQorICAgICAgLy8gUGFyc2UgQUNQSSBUYWJsZSBpbmZv cm1hdGlvbg0KKyAgICAgIFN0YXR1cyA9IEFjcGlWaWV3IChTeXN0ZW1UYWJsZSk7DQorICAgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9O T1RfRk9VTkQ7DQorICAgICAgICBnb3RvIERvbmU7DQorICAgICAgfQ0KKyAgICB9DQorICB9DQor DQorRG9uZToNCisgIGlmIChQYWNrYWdlICE9IE5VTEwpIHsNCisgICAgU2hlbGxDb21tYW5kTGlu ZUZyZWVWYXJMaXN0IChQYWNrYWdlKTsNCisgIH0NCisgIHJldHVybiBTaGVsbFN0YXR1czsNCit9 DQpkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvQmdydFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvQmdydFBhcnNlci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcxMjFiZDJiZWViZTBhZjM1ZjY4MThk Y2UwZmNlYzkxOWZiNWVjMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQmdydFBhcnNlci5jDQpAQCAtMCwwICsxLDExNSBA QA0KKy8qKg0KKyAgQkdSVCB0YWJsZSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNywg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICBUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCisg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCisgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCisNCisgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KKyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1Ig SU1QTElFRC4NCisNCisgIEBwYXIgUmVmZXJlbmNlKHMpOg0KKyAgICAtIEFDUEkgNi4yIFNwZWNp ZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCisqKi8NCisNCisjaW5jbHVkZSA8 SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0K KyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQorI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQorI2luY2x1 ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KKw0KKy8vIExvY2FsIHZhcmlhYmxlcw0KK1NUQVRJQyBB Q1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KKw0KKy8qKiBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEJEUlQgVGFibGUuDQorKi8NCitTVEFU SUMgQ09OU1QgQUNQSV9QQVJTRVIgQmdydFBhcnNlcltdID0gew0KKyAgUEFSU0VfQUNQSV9IRUFE RVIgKCZBY3BpSGRySW5mbyksDQorICB7TCJWZXJzaW9uIiwgMiwgMzYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiU3RhdHVzIiwgMSwgMzgsIEwiMHgleCIsIE5VTEws ICBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkltYWdlIFR5cGUiLCAxLCAzOSwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJJbWFnZSBBZGRyZXNzIiwgOCwgNDAsIEwi MHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkltYWdlIE9mZnNldCBYIiwg NCwgNDgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkltYWdlIE9mZnNl dCBZIiwgNCwgNTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KK307DQorDQorLyoq IFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEJHUlQgdGFibGUuDQorICBXaGVuIHRyYWNl IGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEJHUlQgdGFibGUgYW5kDQorICB0 cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBh cnNlcyB0aGUgQUNQSSBoZWFkZXIgZm9yIHRoZSBEU0RUIHRhYmxlIGFuZA0KKyAgaW52b2tlcyB0 aGUgcGFyc2VyIGZvciB0aGUgQUNQSSBEU0RUIHRhYmxlLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBh bHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KKw0KKyAg QHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZp ZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExl bmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9u ICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCisqLw0KK1ZPSUQNCitFRklBUEkNCitQYXJz ZUFjcGlCZ3J0ICgNCisgIElOIEJPT0xFQU4gVHJhY2UsDQorICBJTiBVSU5UOCogIFB0ciwNCisg IElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZp c2lvbg0KKyAgKQ0KK3sNCisgIGlmICghVHJhY2UpIHsNCisgICAgcmV0dXJuOw0KKyAgfQ0KKw0K KyAgUGFyc2VBY3BpICgNCisgICAgVHJhY2UsDQorICAgIDAsDQorICAgICJCR1JUIiwNCisgICAg UHRyLA0KKyAgICBBY3BpVGFibGVMZW5ndGgsDQorICAgIFBBUlNFUl9QQVJBTVMgKEJncnRQYXJz ZXIpDQorICAgICk7DQorfQ0KKw0KKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KKw0KKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCisgIEBwYXJh bSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KKw0KKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0K KyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkg VGFibGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVnaXN0 ZXJlZC4NCisqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitCZ3J0UGFyc2VyTGliQ29uc3RydWN0 b3IgKA0KKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN CisgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCisgICkN Cit7DQorICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KKyAgICAgICAgICAgRUZJX0FDUElfNl8y X0JPT1RfR1JBUEhJQ1NfUkVTT1VSQ0VfVEFCTEVfU0lHTkFUVVJFLA0KKyAgICAgICAgICAgUGFy c2VBY3BpQmdydA0KKyAgICAgICAgICAgKTsNCit9DQorDQorLyoqIERlcmVnaXN0ZXIgdGhlIHBh cnNlci4NCisNCisgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUg aW1hZ2UuDQorICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3Rl bSBUYWJsZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIg aXMgZGVyZWdpc3RlcmVkLg0KKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBh cnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorQmdy dFBhcnNlckxpYkRlc3RydWN0b3IgKA0KKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCisgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1Qg U3lzdGVtVGFibGUNCisgICkNCit7DQorICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQorICAg ICAgICAgICBFRklfQUNQSV82XzJfQk9PVF9HUkFQSElDU19SRVNPVVJDRV9UQUJMRV9TSUdOQVRV UkUNCisgICAgICAgICAgICk7DQorfQ0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RiZzJQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RiZzJQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4 NDJkNGI5ZDVmOTY5MWVlMjcxMTI1NjU5ODY0MjFmN2EwNzM0Y2YNCi0tLSAvZGV2L251bGwNCisr KyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0RiZzJQYXJz ZXIuYw0KQEAgLTAsMCArMSwyODEgQEANCisvKioNCisgIERCRzIgdGFibGUgcGFyc2VyDQorDQor ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K KyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB UyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKw0KKyAgQHBhciBSZWZlcmVu Y2Uocyk6DQorICAgIC0gTWljcm9zb2Z0IERlYnVnIFBvcnQgVGFibGUgMiAoREJHMikgU3BlY2lm aWNhdGlvbiAtIERlY2VtYmVyIDEwLCAyMDE1Lg0KKyoqLw0KKw0KKyNpbmNsdWRlIDxJbmR1c3Ry eVN0YW5kYXJkL0RlYnVnUG9ydDJUYWJsZS5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIu aD4NCisjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KKyNp bmNsdWRlICJBY3BpVGFibGVQYXJzZXIuaCINCisNCisvLyBMb2NhbCB2YXJpYWJsZXMgcG9pbnRp bmcgdG8gdGhlIHRhYmxlIGZpZWxkcw0KK1NUQVRJQyBDT05TVCBVSU5UMzIqIE9mZnNldERiZ0Rl dmljZUluZm87DQorU1RBVElDIENPTlNUIFVJTlQzMiogTnVtYmVyRGJnRGV2aWNlSW5mbzsNCitT VEFUSUMgQ09OU1QgVUlOVDE2KiBEYmdEZXZJbmZvTGVuOw0KK1NUQVRJQyBDT05TVCBVSU5UOCog IEdhc0NvdW50Ow0KK1NUQVRJQyBDT05TVCBVSU5UMTYqIE5hbWVTcGFjZVN0cmluZ0xlbmd0aDsN CitTVEFUSUMgQ09OU1QgVUlOVDE2KiBOYW1lU3BhY2VTdHJpbmdPZmZzZXQ7DQorU1RBVElDIENP TlNUIFVJTlQxNiogT0VNRGF0YUxlbmd0aDsNCitTVEFUSUMgQ09OU1QgVUlOVDE2KiBPRU1EYXRh T2Zmc2V0Ow0KK1NUQVRJQyBDT05TVCBVSU5UMTYqIEJhc2VBZGRyUmVnT2Zmc2V0Ow0KK1NUQVRJ QyBDT05TVCBVSU5UMTYqIEFkZHJTaXplT2Zmc2V0Ow0KK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9O X0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIFZhbGlkYXRl cyB0aGUgTmFtZVNwYWNlIHN0cmluZyBsZW5ndGguDQorDQorICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorICBAcGFyYW0gW2luXSBDb250 ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCisg ICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxl IGhlYWRlci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAo DQorICBJTiAgVUlOVDgqIFB0ciwNCisgIElOICBWT0lEKiAgQ29udGV4dA0KKyAgKTsNCisNCisv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1 Y3R1cmUuDQorDQorICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtvdXRdIExlbmd0aCAgUG9pbnRlciBpbiB3aGljaCB0 aGUgbGVuZ3RoIG9mIHRoZSBkZWJ1Zw0KKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGlu Zm9ybWF0aW9uIGlzIHJldHVybmVkLg0KKyovDQorU1RBVElDDQorVk9JRA0KK0R1bXBEYmdEZXZp Y2VJbmZvICgNCisgIElOICBVSU5UOCogIFB0ciwNCisgIE9VVCBVSU5UMzIqIExlbmd0aA0KKyAg KTsNCisNCisvLy8gQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBEQkcy IHRhYmxlLg0KK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmcyUGFyc2VyW10gPSB7DQorICBQ QVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCisgIHtMIk9mZnNldERiZ0RldmljZUlu Zm8iLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwNCisgICAoVk9JRCoqKSZPZmZzZXREYmdEZXZpY2VJ bmZvLCBOVUxMLCBOVUxMfSwNCisgIHtMIk51bWJlckRiZ0RldmljZUluZm8iLCA0LCA0MCwgTCIl ZCIsIE5VTEwsDQorICAgKFZPSUQqKikmTnVtYmVyRGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0N Cit9Ow0KKw0KKy8vLyBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBk ZXZpY2UgaW5mb3JtYXRpb24uDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIERiZ0RldkluZm9Q YXJzZXJbXSA9IHsNCisgIHtMIlJldmlzaW9uIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQorICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikm RGJnRGV2SW5mb0xlbiwgTlVMTCwgTlVMTH0sDQorDQorICB7TCJHZW5lcmljIEFkZHJlc3MgUmVn aXN0ZXJzIENvdW50IiwgMSwgMywgTCIweCV4IiwgTlVMTCwNCisgICAoVk9JRCoqKSZHYXNDb3Vu dCwgTlVMTCwgTlVMTH0sDQorICB7TCJOYW1lU3BhY2UgU3RyaW5nIExlbmd0aCIsIDIsIDQsIEwi JWQiLCBOVUxMLA0KKyAgIChWT0lEKiopJk5hbWVTcGFjZVN0cmluZ0xlbmd0aCwgVmFsaWRhdGVO YW1lU3BhY2VTdHJMZW4sIE5VTEx9LA0KKyAge0wiTmFtZVNwYWNlIFN0cmluZyBPZmZzZXQiLCAy LCA2LCBMIjB4JXgiLCBOVUxMLA0KKyAgIChWT0lEKiopJk5hbWVTcGFjZVN0cmluZ09mZnNldCwg TlVMTCwgTlVMTH0sDQorICB7TCJPRU0gRGF0YSBMZW5ndGgiLCAyLCA4LCBMIiVkIiwgTlVMTCwg KFZPSUQqKikmT0VNRGF0YUxlbmd0aCwNCisgICBOVUxMLCBOVUxMfSwNCisgIHtMIk9FTSBEYXRh IE9mZnNldCIsIDIsIDEwLCBMIjB4JXgiLCBOVUxMLCAoVk9JRCoqKSZPRU1EYXRhT2Zmc2V0LA0K KyAgIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiUG9ydCBUeXBlIiwgMiwgMTIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUG9ydCBTdWJUeXBlIiwgMiwgMTQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2ZWQiLCAyLCAxNiwgTCIl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiQmFzZSBBZGRyZXNzIFJlZ2lz dGVyIE9mZnNldCIsIDIsIDE4LCBMIjB4JXgiLCBOVUxMLA0KKyAgIChWT0lEKiopJkJhc2VBZGRy UmVnT2Zmc2V0LCBOVUxMLCBOVUxMfSwNCisgIHtMIkFkZHJlc3MgU2l6ZSBPZmZzZXQiLCAyLCAy MCwgTCIweCV4IiwgTlVMTCwNCisgICAoVk9JRCoqKSZBZGRyU2l6ZU9mZnNldCwgTlVMTCwgTlVM TH0NCit9Ow0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgTmFtZVNwYWNlIHN0 cmluZyBsZW5ndGguDQorDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQorICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29u dGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCisgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCisqLw0KK1NU QVRJQw0KK1ZPSUQNCitWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAoDQorICBJTiBVSU5UOCogUHRy LA0KKyAgSU4gVk9JRCogIENvbnRleHQNCisgICkNCit7DQorICBVSU5UMTYgTmFtZVNwYWNlU3Ry TGVuID0gKihVSU5UMTYqKVB0cjsNCisgIGlmIChOYW1lU3BhY2VTdHJMZW4gPCAyKSB7DQorICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQorICAgIFByaW50ICgNCisgICAgICBMIlxuRVJST1I6 IE5hbWVzcGFjZVN0cmluZyBMZW5ndGggPSAlZC4gSWYgbm8gTmFtZXNwYWNlIGRldmljZSBleGlz dHMsXG4iDQorICAgICAgICIgICAgdGhlbiBOYW1lc3BhY2VTdHJpbmdbXSBtdXN0IGNvbnRhaW4g YSBwZXJpb2QgJy4nIiwNCisgICAgICBOYW1lU3BhY2VTdHJMZW4NCisgICAgICApOw0KKyAgfQ0K K30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1h dGlvbiBzdHJ1Y3R1cmUuDQorDQorICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtvdXRdIFB0ciAgICAgUG9pbnRlciBp biB3aGljaCB0aGUgbGVuZ3RoIG9mIHRoZSBkZWJ1Zw0KKyAgICAgICAgICAgICAgICAgICAgICAg ZGV2aWNlIGluZm9ybWF0aW9uIGlzIHJldHVybmVkLg0KKyovDQorU1RBVElDDQorVk9JRA0KK0R1 bXBEYmdEZXZpY2VJbmZvICgNCisgIElOICBVSU5UOCogIFB0ciwNCisgIE9VVCBVSU5UMzIqIExl bmd0aA0KKyAgKQ0KK3sNCisgIFVJTlQxNiAgSW5kZXg7DQorICBVSU5UOCogIERhdGFQdHI7DQor ICBVSU5UMzIqIEFkZHJTaXplOw0KKw0KKyAgLy8gUGFyc2UgdGhlIGRlYnVnIGRldmljZSBpbmZv IHRvIGdldCB0aGUgTGVuZ3RoDQorICBQYXJzZUFjcGkgKA0KKyAgICBGQUxTRSwNCisgICAgMCwN CisgICAgIkRlYnVnIERldmljZSBJbmZvIiwNCisgICAgUHRyLA0KKyAgICAzLCAgLy8gTGVuZ3Ro IGlzIDIgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0IDENCisgICAgUEFSU0VSX1BBUkFNUyAoRGJn RGV2SW5mb1BhcnNlcikNCisgICAgKTsNCisNCisgIFBhcnNlQWNwaSAoDQorICAgIFRSVUUsDQor ICAgIDIsDQorICAgICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQorICAgIFB0ciwNCisgICAgKkRiZ0Rl dkluZm9MZW4sDQorICAgIFBBUlNFUl9QQVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQorICAgICk7 DQorDQorICAvLyBHQVMgYW5kIEFkZHJlc3MgU2l6ZQ0KKyAgSW5kZXggPSAwOw0KKyAgRGF0YVB0 ciA9IFB0ciArICgqQmFzZUFkZHJSZWdPZmZzZXQpOw0KKyAgQWRkclNpemUgPSAoVUlOVDMyKiko UHRyICsgKCpBZGRyU2l6ZU9mZnNldCkpOw0KKyAgd2hpbGUgKEluZGV4IDwgKCpHYXNDb3VudCkp IHsNCisgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiQmFzZUFkZHJlc3NSZWdpc3RlciIpOw0KKyAg ICBEdW1wR2FzU3RydWN0IChEYXRhUHRyLCA0KTsNCisgICAgUHJpbnRGaWVsZE5hbWUgKDQsIEwi QWRkcmVzcyBTaXplIik7DQorICAgIFByaW50IChMIjB4JXhcbiIsIEFkZHJTaXplW0luZGV4XSk7 DQorICAgIERhdGFQdHIgKz0gR0FTX0xFTkdUSDsNCisgICAgSW5kZXgrKzsNCisgIH0NCisNCisg IC8vIE5hbWVTcGFjZSBTdHJpbmcNCisgIEluZGV4ID0gMDsNCisgIERhdGFQdHIgPSBQdHIgKyAo Kk5hbWVTcGFjZVN0cmluZ09mZnNldCk7DQorICBQcmludEZpZWxkTmFtZSAoNCwgTCJOYW1lU3Bh Y2UgU3RyaW5nIik7DQorICB3aGlsZSAoSW5kZXggPCAoKk5hbWVTcGFjZVN0cmluZ0xlbmd0aCkp IHsNCisgICAgUHJpbnQgKEwiJWMiLCBEYXRhUHRyW0luZGV4KytdKTsNCisgIH0NCisgIFByaW50 IChMIlxuIik7DQorDQorICAvLyBPRU0gRGF0YQ0KKyAgSW5kZXggPSAwOw0KKyAgRGF0YVB0ciA9 IFB0ciArICgqT0VNRGF0YU9mZnNldCk7DQorICBQcmludEZpZWxkTmFtZSAoNCwgTCJPRU0gRGF0 YSIpOw0KKyAgd2hpbGUgKEluZGV4IDwgKCpPRU1EYXRhTGVuZ3RoKSkgew0KKyAgICBQcmludCAo TCIleCAiLCBEYXRhUHRyW0luZGV4KytdKTsNCisgICAgaWYgKChJbmRleCAmIDcpID09IDApIHsN CisgICAgICBQcmludCAoTCJcbiUtKnMgICAiLCBPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRILCBM IiIpOw0KKyAgICB9DQorICB9DQorDQorICAqTGVuZ3RoID0gKkRiZ0RldkluZm9MZW47DQorfQ0K Kw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBEQkcyIHRhYmxlLg0KKyAgV2hl biB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBEQkcyIHRhYmxlIGFu ZA0KKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCisNCisgIFRoaXMgZnVuY3Rpb24g YWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCisNCisg IEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBm aWVsZHMuDQorICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBM ZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQorICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lv biAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQorKi8NCitWT0lEDQorRUZJQVBJDQorUGFy c2VBY3BpRGJnMiAoDQorICBJTiBCT09MRUFOIFRyYWNlLA0KKyAgSU4gVUlOVDgqICBQdHIsDQor ICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCisgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2 aXNpb24NCisgICkNCit7DQorICBVSU5UMzIgT2Zmc2V0Ow0KKyAgVUlOVDMyIERiZ0RldmljZUlu Zm9MZW5ndGg7DQorICBVSU5UOCogRGV2SW5mb1B0cjsNCisNCisgIGlmICghVHJhY2UpIHsNCisg ICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCisgICAgICAgICAg ICAgVFJVRSwNCisgICAgICAgICAgICAgMCwNCisgICAgICAgICAgICAgIkRCRzIiLA0KKyAgICAg ICAgICAgICBQdHIsDQorICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCisgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoRGJnMlBhcnNlcikNCisgICAgICAgICAgICAgKTsNCisgIERldklu Zm9QdHIgPSBQdHIgKyBPZmZzZXQ7DQorDQorICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVu Z3RoKSB7DQorICAgIER1bXBEYmdEZXZpY2VJbmZvICgNCisgICAgICBEZXZJbmZvUHRyLA0KKyAg ICAgICZEYmdEZXZpY2VJbmZvTGVuZ3RoDQorICAgICAgKTsNCisgICAgT2Zmc2V0ICs9IERiZ0Rl dmljZUluZm9MZW5ndGg7DQorICAgIERldkluZm9QdHIgKz0gRGJnRGV2aWNlSW5mb0xlbmd0aDsN CisgIH0NCit9DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2lu XSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQorICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K KyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0RiZzJQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQor ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4g ICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisg IHJldHVybiBSZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJfREVCVUdf UE9SVF8yX1RBQkxFX1NJR05BVFVSRSwNCisgICAgICAgICAgIFBhcnNlQWNwaURiZzINCisgICAg ICAgICAgICk7DQorfQ0KKw0KKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFt IFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4N CisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdp c3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0RiZzJQYXJzZXJMaWJEZXN0cnVj dG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQorICAp DQorew0KKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KKyAgICAgICAgICAgRUZJX0FDUElf Nl8yX0RFQlVHX1BPUlRfMl9UQUJMRV9TSUdOQVRVUkUNCisgICAgICAgICAgICk7DQorfQ0KZGlm ZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Rz ZHRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L0RzZHRQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMWE1M2Q4NzUyMjc0MjdlMDJiMzAwOTI3NDZh NzgwN2UwMDlhNjUNCi0tLSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL0RzZHRQYXJzZXIuYw0KQEAgLTAsMCArMSw5MSBAQA0KKy8q Kg0KKyAgRFNEVCB0YWJsZSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBwcm9ncmFtIGFuZCB0 aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQor ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9S IElNUExJRUQuDQorDQorICBAcGFyIFJlZmVyZW5jZShzKToNCisgICAgLSBBQ1BJIDYuMiBTcGVj aWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQorKiovDQorDQorI2luY2x1ZGUg PEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N CisjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KKyNpbmNs dWRlICJBY3BpVGFibGVQYXJzZXIuaCINCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IEFDUEkgRFNEVCB0YWJsZS4NCisgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgRFNEVCB0YWJsZSBhbmQNCisgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVs ZHMuDQorICBGb3IgdGhlIERTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFy ZSBwYXJzZWQgYW5kDQorICB0cmFjZWQuDQorDQorICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAg ICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorICBA cGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0K KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRh YmxlLg0KKyovDQorVk9JRA0KK0VGSUFQSQ0KK1BhcnNlQWNwaURzZHQgKA0KKyAgSU4gQk9PTEVB TiBUcmFjZSwNCisgIElOIFVJTlQ4KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5n dGgsDQorICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQorICApDQorew0KKw0KKyAgaWYg KCFUcmFjZSkgew0KKyAgICByZXR1cm47DQorICB9DQorDQorICBEdW1wQWNwaUhlYWRlciAoUHRy KTsNCit9DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2luXSAg SW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0gIFN5 c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQorICBAcmV0dmFs IEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KKyov DQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0RzZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQorICBJ TiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJl dHVybiBSZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJfRElGRkVSRU5U SUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCisgICAgICAgICAgIFBh cnNlQWNwaURzZHQNCisgICAgICAgICAgICk7DQorfQ0KKw0KKy8qKiBEZXJlZ2lzdGVyIHRoZSBw YXJzZXIuDQorDQorICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhl IGltYWdlLg0KKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0 ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2Vy IGlzIGRlcmVnaXN0ZXJlZC4NCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBw YXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0Rz ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNU IFN5c3RlbVRhYmxlDQorICApDQorew0KKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KKyAg ICAgICAgICAgRUZJX0FDUElfNl8yX0RJRkZFUkVOVElBVEVEX1NZU1RFTV9ERVNDUklQVElPTl9U QUJMRV9TSUdOQVRVUkUNCisgICAgICAgICAgICk7DQorfQ0KZGlmZiAtLWdpdCBhL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0ZhZHRQYXJzZXIuYyBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0ZhZHRQYXJzZXIuYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmQzMTM4MjU1ZWZkOGFjZDE4ZTE2YTEwNDdlNTU4YzBmMGI4NDU5MWUNCi0tLSAv ZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL0ZhZHRQYXJzZXIuYw0KQEAgLTAsMCArMSwzMDQgQEANCisvKioNCisgIEZBRFQgdGFibGUg cGFyc2VyDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5p ZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBi ZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKw0KKyAg QHBhciBSZWZlcmVuY2Uocyk6DQorICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0 YSBBLCBTZXB0ZW1iZXIgMjAxNw0KKyoqLw0KKw0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0FjcGkuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQorI2luY2x1ZGUgIkFjcGlQ YXJzZXIuaCINCisjaW5jbHVkZSAiQWNwaVZpZXcuaCINCisjaW5jbHVkZSAiQWNwaVRhYmxlUGFy c2VyLmgiDQorDQorLy8gTG9jYWwgdmFyaWFibGVzDQorU1RBVElDIENPTlNUIFVJTlQzMiogRHNk dEFkZHJlc3M7DQorU1RBVElDIENPTlNUIFVJTlQ2NCogWF9Ec2R0QWRkcmVzczsNCitTVEFUSUMg Q09OU1QgVUlOVDgqICBGYWR0TWlub3JSZXZpc2lvbjsNCitTVEFUSUMgQUNQSV9ERVNDUklQVElP Tl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCisNCisvKiogQSBtYWNybyBkZWZpbmluZyB0aGUg SGFyZHdhcmUgcmVkdWNlZCBBQ1BJIGZsYWcNCisqLw0KKyNkZWZpbmUgSFdfUkVEVUNFRF9BQ1BJ ICAgQklUMjANCisNCisvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0KK0NPTlNUIEFDUElfREVTQ1JJ UFRJT05fSEVBREVSX0lORk8qIENPTlNUDQorR2V0QWNwaVhzZHRIZWFkZXJJbmZvICgNCisgIFZP SUQNCispOw0KKw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZUZpcm13YXJlQ3RybCAoDQorICBJ TiBVSU5UOCogUHRyLA0KKyAgSU4gVk9JRCogIENvbnRleHQNCispOw0KKw0KK1NUQVRJQw0KK1ZP SUQNCitWYWxpZGF0ZVhGaXJtd2FyZUN0cmwgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFZP SUQqICBDb250ZXh0DQorKTsNCisNCitTVEFUSUMNCitWT0lEDQorVmFsaWRhdGVGbGFncyAoDQor ICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVk9JRCogIENvbnRleHQNCispOw0KKw0KKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEZBRFQgVGFibGUuDQorKi8NCitT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRmFkdFBhcnNlcltdID0gew0KKyAgUEFSU0VfQUNQSV9I RUFERVIgKCZBY3BpSGRySW5mbyksDQorICB7TCJGSVJNV0FSRV9DVFJMIiwgNCwgMzYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlRmlybXdhcmVDdHJsLCBOVUxMfSwNCisgIHtMIkRTRFQi LCA0LCA0MCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmRHNkdEFkZHJlc3MsIE5VTEwsIE5VTEx9 LA0KKyAge0wiUmVzZXJ2ZWQiLCAxLCA0NCwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KKyAge0wiUHJlZmVycmVkX1BNX1Byb2ZpbGUiLCAxLCA0NSwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQorICB7TCJTQ0lfSU5UIiwgMiwgNDYsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiU01JX0NNRCIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkFDUElfRU5BQkxFIiwgMSwgNTIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiQUNQSV9ESVNBQkxFIiwgMSwgNTMsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUzRCSU9TX1JFUSIsIDEsIDU0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlBTVEFURV9DTlQiLCAxLCA1 NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQTTFhX0VWVF9CTEsi LCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQTTFiX0VW VF9CTEsiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQ TTFhX0NOVF9CTEsiLCA0LCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQor ICB7TCJQTTFiX0NOVF9CTEsiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJQTTJfQ05UX0JMSyIsIDQsIDcyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCisgIHtMIlBNX1RNUl9CTEsiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQorICB7TCJHUEUwX0JMSyIsIDQsIDgwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCisgIHtMIkdQRTFfQkxLIiwgNCwgODQsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUE0xX0VWVF9MRU4iLCAxLCA4OCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQTTFfQ05UX0xFTiIsIDEsIDg5LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlBNMl9DTlRfTEVOIiwgMSwgOTAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUE1fVE1SX0xFTiIsIDEsIDkx LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkdQRTBfQkxLX0xFTiIs IDEsIDkyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkdQRTFfQkxL X0xFTiIsIDEsIDkzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkdQ RTFfQkFTRSIsIDEsIDk0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtM IkNTVF9DTlQiLCAxLCA5NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7 TCJQX0xWTDJfTEFUIiwgMiwgOTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K KyAge0wiUF9MVkwzX0xBVCIsIDIsIDk4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIkZMVVNIX1NJWkUiLCAyLCAxMDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KKyAge0wiRkxVU0hfU1RSSURFIiwgMiwgMTAyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCisgIHtMIkRVVFlfT0ZGU0VUIiwgMSwgMTA0LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkRVVFlfV0lEVEgiLCAxLCAxMDUsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiREFZX0FMUk0iLCAxLCAxMDYsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiTU9OX0FMUk0iLCAxLCAxMDcsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiQ0VOVFVSWSIsIDEsIDEwOCwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJJQVBDX0JPT1RfQVJDSCIs IDIsIDEwOSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZl ZCIsIDEsIDExMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJGbGFn cyIsIDQsIDExMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVGbGFncywgTlVMTH0sDQor ICB7TCJSRVNFVF9SRUciLCAxMiwgMTE2LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIlJFU0VUX1ZBTFVFIiwgMSwgMTI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCisgIHtMIkFSTV9CT09UX0FSQ0giLCAyLCAxMjksIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiRkFEVCBNaW5vciBWZXJzaW9uIiwgMSwgMTMxLCBMIjB4 JXgiLCBOVUxMLCAoVk9JRCoqKSZGYWR0TWlub3JSZXZpc2lvbiwNCisgICAgTlVMTCwgTlVMTH0s DQorICB7TCJYX0ZJUk1XQVJFX0NUUkwiLCA4LCAxMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLA0K KyAgICBWYWxpZGF0ZVhGaXJtd2FyZUN0cmwsIE5VTEx9LA0KKyAge0wiWF9EU0RUIiwgOCwgMTQw LCBMIjB4JWx4IiwgTlVMTCwgKFZPSUQqKikmWF9Ec2R0QWRkcmVzcywgTlVMTCwgTlVMTH0sDQor ICB7TCJYX1BNMWFfRVZUX0JMSyIsIDEyLCAxNDgsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEws IE5VTEx9LA0KKyAge0wiWF9QTTFiX0VWVF9CTEsiLCAxMiwgMTYwLCBOVUxMLCBEdW1wR2FzLCBO VUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlhfUE0xYV9DTlRfQkxLIiwgMTIsIDE3MiwgTlVMTCwg RHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJYX1BNMWJfQ05UX0JMSyIsIDEyLCAx ODQsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiWF9QTTJfQ05UX0JM SyIsIDEyLCAxOTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiWF9Q TV9UTVJfQkxLIiwgMTIsIDIwOCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQor ICB7TCJYX0dQRTBfQkxLIiwgMTIsIDIyMCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJYX0dQRTFfQkxLIiwgMTIsIDIzMiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVM TCwgTlVMTH0sDQorICB7TCJTTEVFUF9DT05UUk9MX1JFRyIsIDEyLCAyNDQsIE5VTEwsIER1bXBH YXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiU0xFRVBfU1RBVFVTX1JFRyIsIDEyLCAyNTYs IE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiSHlwZXJ2aXNvciBWZW5k b3JJZGVudGl0eSIsIDgsIDI2OCwgTCIlbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KK307 DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBGaXJtd2FyZSBDb250cm9sIEZp ZWxkLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0 IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICBj b3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KKyovDQorU1RBVElD DQorVk9JRA0KK1ZhbGlkYXRlRmlybXdhcmVDdHJsICgNCisgIElOIFVJTlQ4KiBQdHIsDQorICBJ TiBWT0lEKiAgQ29udGV4dA0KKykNCit7DQorI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBk ZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQorICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQor ICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQorICAgIFByaW50ICgNCisgICAgICBMIlxuRVJS T1I6IEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1zLiINCisg ICAgKTsNCisgIH0NCisjZW5kaWYNCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVz IHRoZSBYX0Zpcm13YXJlIENvbnRyb2wgRmllbGQuDQorDQorICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KKyAgQHBhcmFtIFtpbl0g Q29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlz DQorICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXIuDQorKi8NCitTVEFUSUMNCitWT0lEDQorVmFsaWRhdGVYRmlybXdhcmVDdHJs ICgNCisgIElOIFVJTlQ4KiBQdHIsDQorICBJTiBWT0lEKiAgQ29udGV4dA0KKykNCit7DQorI2lm IGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQorICBp ZiAoKihVSU5UNjQqKVB0ciAhPSAwKSB7DQorICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQor ICAgIFByaW50ICgNCisgICAgICBMIlxuRVJST1I6IFggRmlybXdhcmUgQ29udHJvbCBtdXN0IGJl IHplcm8gZm9yIEFSTSBwbGF0Zm9ybXMuIg0KKyAgICApOw0KKyAgfQ0KKyNlbmRpZg0KK30NCisN CisvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIGZsYWdzLg0KKw0KKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBw YXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9u IGUuZy4gdGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8g dGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlRmxh Z3MgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorKQ0KK3sNCisj aWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCisg IGlmICgoKCooVUlOVDMyKilQdHIpICYgSFdfUkVEVUNFRF9BQ1BJKSA9PSAwKSB7DQorICAgIElu Y3JlbWVudEVycm9yQ291bnQgKCk7DQorICAgIFByaW50ICgNCisgICAgICBMIlxuRVJST1I6IEhX X1JFRFVDRURfQUNQSSBmbGFnIG11c3QgYmUgc2V0IGZvciBBUk0gcGxhdGZvcm1zLiINCisgICAg KTsNCisgIH0NCisjZW5kaWYNCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBB Q1BJIEZBRFQgdGFibGUuDQorICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgRkFEVCB0YWJsZSBh bmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkNCisgIHRhYmxlIGZpZWxkcy4NCisNCisgIFRo aXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGZvciB0aGUgRFNEVCB0YWJs ZSBhbmQNCisgIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCisN CisgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRh YmxlIGZpZWxkcy4NCisNCisgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVF LCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQorICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQorICBAcGFyYW0gW2lu XSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQorKi8NCitW T0lEDQorRUZJQVBJDQorUGFyc2VBY3BpRmFkdCAoDQorICBJTiBCT09MRUFOIFRyYWNlLA0KKyAg SU4gVUlOVDgqICBQdHIsDQorICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCisgIElOIFVJ TlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCisgICkNCit7DQorICBVSU5UOCogIERzZHRQdHIgPSBO VUxMOw0KKw0KKyAgUGFyc2VBY3BpICgNCisgICAgVHJhY2UsDQorICAgIDAsDQorICAgICJGQURU IiwNCisgICAgUHRyLA0KKyAgICBBY3BpVGFibGVMZW5ndGgsDQorICAgIFBBUlNFUl9QQVJBTVMg KEZhZHRQYXJzZXIpDQorICAgICk7DQorDQorICBpZiAoVHJhY2UpIHsNCisgICAgUHJpbnQgKEwi XG5TdW1tYXJ5OlxuIik7DQorICAgIFByaW50RmllbGROYW1lICgyLCBMIkZBRFQgVmVyc2lvbiIp Ow0KKyAgICBQcmludCAoTCIlZC4lZFxuIiwgICpBY3BpSGRySW5mby5SZXZpc2lvbiwgKkZhZHRN aW5vclJldmlzaW9uKTsNCisNCisgICAgaWYgKCpHZXRBY3BpWHNkdEhlYWRlckluZm8gKCktPk9l bVRhYmxlSWQgIT0gKkFjcGlIZHJJbmZvLk9lbVRhYmxlSWQpIHsNCisgICAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KKyAgICAgIFByaW50IChMIkVSUk9SOiBPRU0gVGFibGUgSWQgZG9lcyBu b3QgbWF0Y2ggd2l0aCBSU0RUL1hTRFQuXG4iKTsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLy8gSWYg cGh5c2ljYWwgYWRkcmVzcyBvZiBEU0RUIGlzIHByb3ZpZGVkIHVzZSB0aGUgRFNEVC4NCisgIGlm ICgqRHNkdEFkZHJlc3MgIT0gMCkgew0KKyAgICBEc2R0UHRyID0gKFVJTlQ4KikoVUlOVE4pKCpE c2R0QWRkcmVzcyk7DQorICB9DQorDQorICAvLyBJZiBYX0RTRFQgaXMgbm90IHplcm8gdGhlbiB1 c2UgWF9EU0RUIGFuZCBpZ25vcmUgRFNEVC4NCisgIGlmICgqWF9Ec2R0QWRkcmVzcyAhPSAwKSB7 DQorICAgIERzZHRQdHIgPSAoVUlOVDgqKShVSU5UTikoKlhfRHNkdEFkZHJlc3MpOw0KKyAgfQ0K Kw0KKyAgLy8gQm90aCBEU0RUIGFuZCBYX0RTRFQgY2Fubm90IGJlIHplcm8uDQorICBpZiAoRHNk dFB0ciA9PSBOVUxMKSB7DQorI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChN REVfQ1BVX0FBUkNINjQpDQorICAgIGlmIChUcmFjZSkgew0KKyAgICAgIC8vIFRoZSBEU0RUIFRh YmxlIGlzIG1hbmRhdG9yeSBmb3IgQVJNIHN5c3RlbXMNCisgICAgICAvLyBhcyB0aGUgQ1BVIGlu Zm9ybWF0aW9uIE1VU1QgYmUgcHJlc2VudGVkIGluDQorICAgICAgLy8gdGhlIERTRFQuDQorICAg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgICBQcmludCAoTCJFUlJPUjogQm90aCBY X0RTRFQgYW5kIERTRFQgYXJlIE5VTEwuXG4iKTsNCisgICAgfQ0KKyNlbmRpZg0KKyAgICByZXR1 cm47DQorICB9DQorDQorICBQcm9jZXNzQWNwaVRhYmxlIChEc2R0UHRyKTsNCit9DQorDQorLyoq IFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRo ZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2lu dGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQorICBAcmV0dmFsIEVGSV9BTFJFQURZX1NU QVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0K K0VGSUFQSQ0KK0ZhZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQorICBJTiBDT05TVCBFRklfSEFO RExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4gICAgICAgRUZJX1NZU1RFTV9U QUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBSZWdpc3RlclBh cnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJfRklYRURfQUNQSV9ERVNDUklQVElPTl9U QUJMRV9TSUdOQVRVUkUsDQorICAgICAgICAgICBQYXJzZUFjcGlGYWR0DQorICAgICAgICAgICAp Ow0KK30NCisNCisvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0g IEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCisgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KKw0KKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQorICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4N CisqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitGYWR0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQor ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4g ICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisg IHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCisgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9GSVhF RF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KKyAgICAgICAgICAgKTsNCit9DQpk aWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv R3RkdFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvR3RkdFBhcnNlci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTZjZDAyNzA3MTNjOWExZGY2ZjlkMmYzOWRm YTM4MzA4NzA2ZmQyMA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvR3RkdFBhcnNlci5jDQpAQCAtMCwwICsxLDMzNCBAQA0K Ky8qKg0KKyAgR1REVCB0YWJsZSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNl DQorICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRF RCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNT IE9SIElNUExJRUQuDQorDQorICBAcGFyIFJlZmVyZW5jZShzKToNCisgICAgLSBBQ1BJIDYuMiBT cGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQorICAqKi8NCisNCisjaW5j bHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxp Yi5oPg0KKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQorI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQor I2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KKw0KKy8vIExvY2FsIHZhcmlhYmxlcw0KK1NU QVRJQyBDT05TVCBVSU5UMzIqIEd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQ7DQorU1RBVElDIENPTlNU IFVJTlQzMiogR3RkdFBsYXRmb3JtVGltZXJPZmZzZXQ7DQorU1RBVElDIENPTlNUIFVJTlQ4KiAg UGxhdGZvcm1UaW1lclR5cGU7DQorU1RBVElDIENPTlNUIFVJTlQxNiogUGxhdGZvcm1UaW1lckxl bmd0aDsNCitTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJDb3VudDsNCitTVEFUSUMg Q09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJPZmZzZXQ7DQorU1RBVElDIENPTlNUIFVJTlQxNiog R3RCbG9ja0xlbmd0aDsNCitTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3Bp SGRySW5mbzsNCisNCisvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIEdUIEJsb2NrIHRp bWVyIGNvdW50Lg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBj b250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KKyovDQor U1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlR3RCbG9ja1RpbWVyQ291bnQgKA0KKyAgSU4gVUlOVDgq IFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApOw0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdURFQgVGFibGUuDQorKi8NCitTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgR3RkdFBhcnNlcltdID0gew0KKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZB Y3BpSGRySW5mbyksDQorICB7TCJDbnRDb250cm9sQmFzZSBQaHlzaWNhbCBBZGRyZXNzIiwgOCwg MzYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLA0KKyAgIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2 ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJTZWN1 cmUgRUwxIHRpbWVyIEdTSVYiLCA0LCA0OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJTZWN1cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNTIsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiTm9uLVNlY3VyZSBFTDEgdGltZXIgR1NJViIs IDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIk5vbi1TZWN1 cmUgRUwxIHRpbWVyIEZMQUdTIiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KKw0KKyAge0wiVmlydHVhbCB0aW1lciBHU0lWIiwgNCwgNjQsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiVmlydHVhbCB0aW1lciBGTEFHUyIsIDQsIDY4LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisNCisgIHtMIk5vbi1TZWN1cmUgRUwy IHRpbWVyIEdTSVYiLCA0LCA3MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQor ICB7TCJOb24tU2VjdXJlIEVMMiB0aW1lciBGTEFHUyIsIDQsIDc2LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCisNCisgIHtMIkNudFJlYWRCYXNlIFBoeXNpY2FsIGFkZHJlc3Mi LCA4LCA4MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUGxhdGZv cm0gVGltZXIgQ291bnQiLCA0LCA4OCwgTCIlZCIsIE5VTEwsDQorICAgKFZPSUQqKikmR3RkdFBs YXRmb3JtVGltZXJDb3VudCwgTlVMTCwgTlVMTH0sDQorICB7TCJQbGF0Zm9ybSBUaW1lciBPZmZz ZXQiLCA0LCA5MiwgTCIweCV4IiwgTlVMTCwNCisgICAoVk9JRCoqKSZHdGR0UGxhdGZvcm1UaW1l ck9mZnNldCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBk ZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSB0aW1lciBoZWFkZXIuDQorKi8NCitTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgR3RQbGF0Zm9ybVRpbWVySGVhZGVyUGFyc2VyW10gPSB7DQorICB7TCJUeXBl IiwgMSwgMCwgTlVMTCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lclR5cGUsIE5VTEwsIE5V TEx9LA0KKyAge0wiTGVuZ3RoIiwgMiwgMSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1U aW1lckxlbmd0aCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDEsIDMsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9DQorfTsNCisNCisvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkg ZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gR1QgQmxvY2suDQorKi8NCitTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgR3RCbG9ja1BhcnNlcltdID0gew0KKyAge0wiVHlwZSIsIDEsIDAsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkxlbmd0aCIsIDIsIDEsIEwiJWQiLCBOVUxM LCAoVk9JRCoqKSZHdEJsb2NrTGVuZ3RoLCBOVUxMLCBOVUxMfSwNCisgIHtMIlJlc2VydmVkIiwg MSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUGh5c2ljYWwgYWRk cmVzcyAoQ250Q3RsQmFzZSkiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJUaW1lciBDb3VudCIsIDQsIDEyLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RC bG9ja1RpbWVyQ291bnQsDQorICAgVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCwgTlVMTH0sDQor ICB7TCJUaW1lciBPZmZzZXQiLCA0LCAxNiwgTCIlZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tU aW1lck9mZnNldCwgTlVMTCwNCisgICAgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBHVCBCbG9jayB0aW1lci4NCisqLw0KK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBHdEJsb2NrVGltZXJQYXJzZXJbXSA9IHsNCisgIHtMIkZyYW1lIE51bWJl ciIsIDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlJlc2VydmVk IiwgMywgMSwgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAg e0wiUGh5c2ljYWwgYWRkcmVzcyAoQ250QmFzZVgpIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUGh5c2ljYWwgYWRkcmVzcyAoQ250RUwwQmFzZVgpIiwg OCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KKyAgICBOVUxMfSwNCisgIHtMIlBo eXNpY2FsIFRpbWVyIEdTSVYiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJQaHlzaWNhbCBUaW1lciBGbGFncyIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlZpcnR1YWwgVGltZXIgR1NJViIsIDQsIDI4LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlZpcnR1YWwgVGltZXIgRmxhZ3Mi LCA0LCAzMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJDb21tb24g RmxhZ3MiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0K Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBQbGF0Zm9ybSBXYXRjaGRv Zy4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTQlNBR2VuZXJpY1dhdGNoZG9nUGFy c2VyW10gPSB7DQorICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KKyAge0wiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KKyAge0wiUmVzZXJ2ZWQiLCAxLCAzLCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQorICB7TCJSZWZyZXNoRnJhbWUgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDQsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkNvbnRyb2xGcmFtZSBQaHlzaWNhbCBhZGRy ZXNzIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIldh dGNoZG9nIFRpbWVyIEdTSVYiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJXYXRjaGRvZyBUaW1lciBGbGFncyIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfQ0KK307DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRo ZSBHVCBCbG9jayB0aW1lciBjb3VudC4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQorICBAcGFyYW0gW2luXSBDb250ZXh0 IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCisgICAg ICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhl YWRlci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZUd0QmxvY2tUaW1lckNvdW50ICgN CisgIElOIFVJTlQ4KiBQdHIsDQorICBJTiBWT0lEKiAgQ29udGV4dA0KKyAgKQ0KK3sNCisgIFVJ TlQzMiBCbG9ja1RpbWVyQ291bnQgPSAqKFVJTlQzMiopUHRyOw0KKyAgaWYgKEJsb2NrVGltZXJD b3VudCA+IDgpIHsNCisgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgUHJpbnQgKA0K KyAgICAgIEwiXG5FUlJPUjogVGltZXIgQ291bnQgPSAlZC4gTWF4IFRpbWVyIENvdW50IGlzIDgu IiwNCisgICAgICBCbG9ja1RpbWVyQ291bnQNCisgICAgICApOw0KKyAgfQ0KK30NCisNCisvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFBsYXRmb3JtIEdUIEJsb2NrLg0KKw0KKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgR1QgQmxvY2sgZGF0YS4N CisgIEBwYXJhbSBbaW5dIExlbmd0aCAgTGVuZ3RoIG9mIHRoZSBHVCBCbG9jayBzdHJ1Y3R1cmUu DQorKi8NCitTVEFUSUMNCitWT0lEDQorRHVtcEdUQmxvY2sgKA0KKyAgSU4gVUlOVDgqIFB0ciwN CisgIElOIFVJTlQxNiBMZW5ndGgNCisgICkNCit7DQorICBVSU5UMzIgSW5kZXg7DQorICBVSU5U MzIgT2Zmc2V0Ow0KKyAgVUlOVDE2IEdUQmxvY2tUaW1lckxlbmd0aDsNCisNCisgIE9mZnNldCA9 IFBhcnNlQWNwaSAoDQorICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgIDIsDQorICAg ICAgICAgICAgICJHVCBCbG9jayIsDQorICAgICAgICAgICAgIFB0ciwNCisgICAgICAgICAgICAg TGVuZ3RoLA0KKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFyc2VyKQ0KKyAg ICAgICAgICAgICApOw0KKyAgR1RCbG9ja1RpbWVyTGVuZ3RoID0gKCpHdEJsb2NrTGVuZ3RoIC0g T2Zmc2V0KSAvICgqR3RCbG9ja1RpbWVyQ291bnQpOw0KKyAgTGVuZ3RoIC09IE9mZnNldDsNCisN CisgIGlmICgqR3RCbG9ja1RpbWVyQ291bnQgIT0gMCkgew0KKyAgICBQdHIgKz0gKCpHdEJsb2Nr VGltZXJPZmZzZXQpOw0KKyAgICBJbmRleCA9IDA7DQorICAgIHdoaWxlICgoSW5kZXggPCAoKkd0 QmxvY2tUaW1lckNvdW50KSkgJiYgKExlbmd0aCA+PSBHVEJsb2NrVGltZXJMZW5ndGgpKSB7DQor ICAgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCisgICAgICAgICAgICAgICAgIFRSVUUsDQorICAg ICAgICAgICAgICAgICAyLA0KKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwNCisg ICAgICAgICAgICAgICAgIFB0ciwNCisgICAgICAgICAgICAgICAgIEdUQmxvY2tUaW1lckxlbmd0 aCwNCisgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0QmxvY2tUaW1lclBhcnNlcikN CisgICAgICAgICAgICAgICAgICk7DQorICAgICAgLy8gSW5jcmVtZW50IGJ5IEdUIEJsb2NrIFRp bWVyIHN0cnVjdHVyZSBzaXplDQorICAgICAgUHRyICs9IE9mZnNldDsNCisgICAgICBMZW5ndGgg LT0gT2Zmc2V0Ow0KKyAgICAgIEluZGV4Kys7DQorICAgIH0NCisNCisgICAgaWYgKExlbmd0aCAh PSAwKSB7DQorICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgICBQcmludCAoDQor ICAgICAgICBMIkVSUk9SOkdUIEJsb2NrIFRpbWVyIGxlbmd0aCBtaXNtYXRjaC4gVW5wYXJzZWQg JWQgYnl0ZXMuXG4iLA0KKyAgICAgICAgTGVuZ3RoDQorICAgICAgICApOw0KKyAgICB9DQorICB9 DQorfQ0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cg dGltZXIuDQorDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSB3YXRjaGRvZyB0aW1lciBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGgg b2YgdGhlIHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitE dW1wV2F0Y2hkb2dUaW1lciAoDQorICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVUlOVDE2IExlbmd0 aA0KKyAgKQ0KK3sNCisgIFBhcnNlQWNwaSAoDQorICAgIFRSVUUsDQorICAgIDIsDQorICAgICJT QlNBIEdlbmVyaWMgV2F0Y2hkb2ciLA0KKyAgICBQdHIsDQorICAgIExlbmd0aCwNCisgICAgUEFS U0VSX1BBUkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCisgICAgKTsNCit9DQorDQor LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIEdURFQgdGFibGUuDQorICBXaGVuIHRy YWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEdURFQgdGFibGUgYW5kDQor ICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KKw0KKyAgVGhpcyBmdW5jdGlvbiBhbHNv IHBhcnNlcyB0aGUgZm9sbG93aW5nIHBsYXRmb3JtIHRpbWVyIHN0cnVjdHVyZXM6DQorICAgIC0g R1QgQmxvY2sgdGltZXINCisgICAgLSBXYXRjaGRvZyB0aW1lcg0KKw0KKyAgVGhpcyBmdW5jdGlv biBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KKw0K KyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJ IGZpZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAg IExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlz aW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCisqLw0KK1ZPSUQNCitFRklBUEkNCitQ YXJzZUFjcGlHdGR0ICgNCisgIElOIEJPT0xFQU4gVHJhY2UsDQorICBJTiBVSU5UOCogIFB0ciwN CisgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KKyAgKQ0KK3sNCisgIFVJTlQzMiBJbmRleDsNCisgIFVJTlQ4KiBUaW1lclB0cjsN CisNCisgIGlmICghVHJhY2UpIHsNCisgICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgUGFyc2VBY3Bp ICgNCisgICAgVFJVRSwNCisgICAgMCwNCisgICAgIkdURFQiLA0KKyAgICBQdHIsDQorICAgIEFj cGlUYWJsZUxlbmd0aCwNCisgICAgUEFSU0VSX1BBUkFNUyAoR3RkdFBhcnNlcikNCisgICAgKTsN CisNCisgIGlmICgqR3RkdFBsYXRmb3JtVGltZXJDb3VudCAhPSAwKSB7DQorICAgIFRpbWVyUHRy ID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNldCk7DQorICAgIEluZGV4ID0gMDsNCisg ICAgZG8gew0KKyAgICAgIC8vIFBhcnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXINCisgICAg ICBQYXJzZUFjcGkgKA0KKyAgICAgICAgRkFMU0UsDQorICAgICAgICAwLA0KKyAgICAgICAgTlVM TCwNCisgICAgICAgIFRpbWVyUHRyLA0KKyAgICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRpbWVy IHN0cnVjdHVyZSBoZWFkZXIgbGVuZ3RoLg0KKyAgICAgICAgUEFSU0VSX1BBUkFNUyAoR3RQbGF0 Zm9ybVRpbWVySGVhZGVyUGFyc2VyKQ0KKyAgICAgICAgKTsNCisgICAgICBzd2l0Y2ggKCpQbGF0 Zm9ybVRpbWVyVHlwZSkgew0KKyAgICAgICAgY2FzZSBFRklfQUNQSV82XzJfR1REVF9HVF9CTE9D SzoNCisgICAgICAgICAgRHVtcEdUQmxvY2sgKFRpbWVyUHRyLCAqUGxhdGZvcm1UaW1lckxlbmd0 aCk7DQorICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSBFRklfQUNQSV82XzJfR1REVF9T QlNBX0dFTkVSSUNfV0FUQ0hET0c6DQorICAgICAgICAgIER1bXBXYXRjaGRvZ1RpbWVyIChUaW1l clB0ciwgKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0KKyAgICAgICAgICBicmVhazsNCisgICAgICAg IGRlZmF1bHQ6DQorICAgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQorICAgICAgICAg IFByaW50ICgNCisgICAgICAgICAgICBMIkVSUk9SOiBJTlZBTElEIFBsYXRmb3JtIFRpbWVyIFR5 cGUgPSAlZFxuIiwNCisgICAgICAgICAgICAqUGxhdGZvcm1UaW1lclR5cGUNCisgICAgICAgICAg ICApOw0KKyAgICAgICAgICBicmVhazsNCisgICAgICB9IC8vIHN3aXRjaA0KKyAgICAgIFRpbWVy UHRyICs9ICgqUGxhdGZvcm1UaW1lckxlbmd0aCk7DQorICAgICAgSW5kZXgrKzsNCisgICAgfSB3 aGlsZSAoSW5kZXggPCAqR3RkdFBsYXRmb3JtVGltZXJDb3VudCk7DQorICB9DQorfQ0KKw0KKy8q KiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBU aGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCisgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KKyAgQHJldHZhbCBFRklfQUxSRUFEWV9T VEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCisqLw0KK0VGSV9TVEFUVVMN CitFRklBUEkNCitHdGR0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCisgIElOICAgICAgIEVGSV9TWVNURU1f VEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCisgICkNCit7DQorICByZXR1cm4gUmVnaXN0ZXJQ YXJzZXIgKA0KKyAgICAgICAgICAgRUZJX0FDUElfNl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFLA0KKyAgICAgICAgICAgUGFyc2VBY3BpR3RkdA0KKyAgICAgICAg ICAgKTsNCit9DQorDQorLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCisNCisgIEBwYXJhbSBb aW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQorICBAcGFyYW0gW2lu XSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCisNCisgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVy ZWQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorR3RkdFBhcnNlckxpYkRlc3RydWN0b3Ig KA0KKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCisg IElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCisgICkNCit7 DQorICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJf R0VORVJJQ19USU1FUl9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCisgICAgICAgICAgICk7 DQorfQ0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL0lvcnRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL0lvcnRQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyZTc2YjIxYWMwMTRmMjBhMGU1 OTg3MTI5YzYyYzk2NGIxMzRlODANCi0tLSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0lvcnRQYXJzZXIuYw0KQEAgLTAsMCArMSw3 MzAgQEANCisvKioNCisgIElPUlQgdGFibGUgcGFyc2VyDQorDQorICBDb3B5cmlnaHQgKGMpIDIw MTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0Qg TGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIg RVhQUkVTUyBPUiBJTVBMSUVELg0KKw0KKyAgQHBhciBSZWZlcmVuY2Uocyk6DQorICAgIC0gSU8g UmVtYXBwaW5nIFRhYmxlLCBQbGF0Zm9ybSBEZXNpZ24gRG9jdW1lbnQsIFJldmlzaW9uIEMsIDE1 IE1heSAyMDE3DQorKiovDQorDQorI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvSW9SZW1hcHBp bmdUYWJsZS5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQorI2luY2x1ZGUgPExp YnJhcnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQorI2luY2x1ZGUgIkFj cGlWaWV3LmgiDQorI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KKw0KKy8vIExvY2FsIHZh cmlhYmxlcw0KK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZv Ow0KKw0KKy8qKiBUaGUgRUlPUlRfTk9ERSBlbnVtIGRlc2NyaWJlcyB0aGUgSU9SVCBOb2RlIHR5 cGVzLg0KKyovDQordHlwZWRlZiBlbnVtIElvcnROb2RlIHsNCisgIEVJT1JUX05PREVfSVRTX0dS T1VQLCAgICAgICAgLy8vPCBJVFMgR3JvdXAgbm9kZQ0KKyAgRUlPUlRfTk9ERV9OQU1FRF9DT01Q T05FTlQsICAvLy88IE5hbWVkIENvbXBvbmVudCBub2RlDQorICBFSU9SVF9OT0RFX1JPT1RfQ09N UExFWCwgICAgIC8vLzwgUm9vdCBDb21wbGV4IG5vZGUNCisgIEVJT1JUX05PREVfU01NVVYxX1Yy LCAgICAgICAgLy8vPCBTTU1VIHYxL3YyIG5vZGUNCisgIEVJT1JUX05PREVfU01NVVYzLCAgICAg ICAgICAgLy8vPCBTTU1VIHYzIG5vZGUNCisgIEVJT1JUX05PREVfUE1DRywgICAgICAgICAgICAg Ly8vPCBQTUMgZ3JvdXAgbm9kZQ0KKyAgRUlPUlRfTk9ERV9NQVgNCit9IEVJT1JUX05PREU7DQor DQorLy8gTG9jYWwgVmFyaWFibGVzDQorU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydE5vZGVDb3Vu dDsNCitTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZU9mZnNldDsNCisNCitTVEFUSUMgQ09O U1QgVUlOVDgqIElvcnROb2RlVHlwZTsNCitTVEFUSUMgQ09OU1QgVUlOVDE2KiBJb3J0Tm9kZUxl bmd0aDsNCitTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0SWRNYXBwaW5nQ291bnQ7DQorU1RBVElD IENPTlNUIFVJTlQzMiogSW9ydElkTWFwcGluZ09mZnNldDsNCisNCitTVEFUSUMgQ09OU1QgVUlO VDMyKiBJbnRlcnJ1cHRDb250ZXh0Q291bnQ7DQorU1RBVElDIENPTlNUIFVJTlQzMiogSW50ZXJy dXB0Q29udGV4dE9mZnNldDsNCitTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRDb3Vu dDsNCitTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRPZmZzZXQ7DQorDQorU1RBVElD IENPTlNUIFVJTlQzMiogSXRzQ291bnQ7DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVz IHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTIG5vZGUuDQorDQorICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K KyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3Jt YXRpb24gZS5nLiB0aGlzDQorICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRl ciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQorKi8NCitTVEFUSUMNCitWT0lEDQorVmFsaWRh dGVJdHNJZE1hcHBpbmdDb3VudCAoDQorICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVk9JRCogIENv bnRleHQNCisgICk7DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBw aW5nIGFycmF5IG9mZnNldCBmb3IgdGhlIElUUyBub2RlLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBb aW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4g dGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFD UEkgdGFibGUgaGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlSXRzSWRBcnJh eVJlZmVyZW5jZSAoDQorICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVk9JRCogIENvbnRleHQNCisg ICk7DQorDQorLyoqIEhlbHBlciBNYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgSU9SVCBOb2RlIGhl YWRlciBpbiB0aGUgQUNQSV9QQVJTRVINCisgICAgYXJyYXkuDQorDQorICBAcGFyYW0gW291dF0g VmFsaWRhdGVJZE1hcHBpbmdDb3VudCAgICBPcHRpb25hbCBwb2ludGVyIHRvIGEgZnVuY3Rpb24g Zm9yDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW5n IHRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KKyAgQHBhcmFtIFtvdXRdIFZhbGlkYXRlSWRBcnJheVJl ZmVyZW5jZSAgT3B0aW9uYWwgcG9pbnRlciB0byBhIGZ1bmN0aW9uIGZvcg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJyYXkgcmVm ZXJlbmNlLg0KKyovDQorI2RlZmluZSBQQVJTRV9JT1JUX05PREVfSEVBREVSKFZhbGlkYXRlSWRN YXBwaW5nQ291bnQsICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlKSAgICAgICAgICAgICAgICAgXA0KKyAg eyBMIlR5cGUiLCAxLCAwLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmSW9ydE5vZGVUeXBlLCBOVUxM LCBOVUxMIH0sICAgICBcDQorICB7IEwiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIChWT0lE KiopJklvcnROb2RlTGVuZ3RoLCBOVUxMLCBOVUxMIH0sIFwNCisgIHsgTCJSZXZpc2lvbiIsIDEs IDMsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sICAgICAgICAgICAgICAgICAgXA0K KyAgeyBMIlJlc2VydmVkIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9 LCAgICAgICAgICAgICAgICBcDQorICB7IEwiTnVtYmVyIG9mIElEIG1hcHBpbmdzIiwgNCwgOCwg TCIlZCIsIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgKFZPSUQqKikmSW9y dElkTWFwcGluZ0NvdW50LCBWYWxpZGF0ZUlkTWFwcGluZ0NvdW50LCBOVUxMIH0sICAgICAgICAg XA0KKyAgeyBMIlJlZmVyZW5jZSB0byBJRCBBcnJheSIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgIChWT0lEKiopJklvcnRJZE1hcHBpbmdPZmZzZXQs IFZhbGlkYXRlSWRBcnJheVJlZmVyZW5jZSwgTlVMTCB9DQorDQorLyoqIEFuIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgSU9SVCBUYWJsZQ0KKyovDQorU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIElvcnRQYXJzZXJbXSA9IHsNCisgIFBBUlNFX0FDUElfSEVBREVSICgmQWNw aUhkckluZm8pLA0KKyAge0wiTnVtYmVyIG9mIElPUlQgTm9kZXMiLCA0LCAzNiwgTCIlZCIsIE5V TEwsDQorICAgKFZPSUQqKikmSW9ydE5vZGVDb3VudCwgTlVMTCwgTlVMTH0sDQorICB7TCJPZmZz ZXQgdG8gQXJyYXkgb2YgSU9SVCBOb2RlcyIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLA0KKyAgIChW T0lEKiopJklvcnROb2RlT2Zmc2V0LCBOVUxMLCBOVUxMfSwNCisgIHtMIlJlc2VydmVkIiwgNCwg NDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQorfTsNCisNCisvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBub2RlIGhlYWRlciBzdHJ1Y3R1cmUu DQorKi8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVIZWFkZXJQYXJzZXJbXSA9 IHsNCisgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpDQorfTsNCisNCisvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0K KyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlU21tdVYxVjJQYXJzZXJbXSA9 IHsNCisgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KKyAge0wiQmFzZSBB ZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtM IlNwYW4iLCA4LCAyNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wi TW9kZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiRmxh Z3MiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZWZl cmVuY2UgdG8gR2xvYmFsIEludGVycnVwdCBBcnJheSIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLA0KKyAgIE5VTEx9LA0KKyAge0wiTnVtYmVyIG9mIGNvbnRleHQgaW50ZXJydXB0 cyIsIDQsIDQ0LCBMIiVkIiwgTlVMTCwNCisgICAoVk9JRCoqKSZJbnRlcnJ1cHRDb250ZXh0Q291 bnQsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVmZXJlbmNlIHRvIENvbnRleHQgSW50ZXJydXB0IEFy cmF5IiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsDQorICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4 dE9mZnNldCwgTlVMTCwgTlVMTH0sDQorICB7TCJOdW1iZXIgb2YgUE1VIEludGVycnVwdHMiLCA0 LCA1MiwgTCIlZCIsIE5VTEwsDQorICAgKFZPSUQqKikmUG11SW50ZXJydXB0Q291bnQsIE5VTEws IE5VTEx9LA0KKyAge0wiUmVmZXJlbmNlIHRvIFBNVSBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA1Niwg TCIweCV4IiwgTlVMTCwNCisgICAoVk9JRCoqKSZQbXVJbnRlcnJ1cHRPZmZzZXQsIE5VTEwsIE5V TEx9LA0KKw0KKyAgLy8gSW50ZXJydXB0IEFycmF5DQorICB7TCJTTU1VX05TZ0lycHQiLCA0LCA2 MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJTTU1VX05TZ0lycHQg aW50ZXJydXB0IGZsYWdzIiwgNCwgNjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KKyAge0wiU01NVV9OU2dDZmdJcnB0IiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KKyAge0wiU01NVV9OU2dDZmdJcnB0IGludGVycnVwdCBmbGFncyIsIDQsIDcy LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KK307DQorDQorLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFNNTVV2MS8yIE5vZGUgSW50ZXJydXB0IEFycmF5 Lg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEludGVycnVwdEFycmF5UGFyc2VyW10g PSB7DQorICB7TCIgIEludGVycnVwdCBHU0lWIiwgNCwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQorICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBJT1JUIElEIE1hcHBpbmcuDQorKi8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9y dE5vZGVJZE1hcHBpbmdQYXJzZXJbXSA9IHsNCisgIHtMIiAgSW5wdXQgYmFzZSIsIDQsIDAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiICBOdW1iZXIgb2YgSURzIiwg NCwgNCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiICBPdXRwdXQgYmFz ZSIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiICBPdXRw dXQgcmVmZXJlbmNlIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K KyAge0wiICBGbGFncyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0K K307DQorDQorLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgU01N VXYzIG5vZGUuDQorKi8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVTbW11VjNQ YXJzZXJbXSA9IHsNCisgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KKyAg e0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIkZsYWdzIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KKyAge0wiUmVzZXJ2ZWQiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorICB7TCJWQVRPUyBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCisgIHtMIk1vZGVsIiwgNCwgNDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCisgIHtMIkV2ZW50IiwgNCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KKyAge0wiUFJJIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KKyAge0wiR0VSUiIsIDQsIDUyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIlN5bmMiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0N Cit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIElU UyBub2RlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlSXRzUGFyc2Vy W10gPSB7DQorICBQQVJTRV9JT1JUX05PREVfSEVBREVSICgNCisgICAgVmFsaWRhdGVJdHNJZE1h cHBpbmdDb3VudCwNCisgICAgVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlDQorICAgICksDQor ICB7TCIgIE51bWJlciBvZiBJVFNzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJdHND b3VudCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBJVFMgSUQuDQorKi8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSXRzSWRQYXJzZXJb XSA9IHsNCisgIHsgTCIgIEdJQyBJVFMgSWRlbnRpZmllciIsIDQsIDAsIEwiJWQiLCBOVUxMLCBO VUxMLCBOVUxMIH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBJT1JUIE5hbWVzIENvbXBvbmVudCBub2RlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXJbXSA9IHsNCisgIFBBUlNFX0lPUlRf Tk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KKyAge0wiTm9kZSBGbGFncyIsIDQsIDE2LCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJNZW1vcnkgYWNjZXNzIHByb3BlcnRp ZXMiLCA4LCAyMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiRGV2 aWNlIG1lbW9yeSBhZGRyZXNzIHNpemUgbGltaXQiLCAxLCAyOCwgTCIlZCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9DQorfTsNCisNCisvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgSU9SVCBSb290IENvbXBsZXggbm9kZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBJb3J0Tm9kZVJvb3RDb21wbGV4UGFyc2VyW10gPSB7DQorICBQQVJTRV9JT1JUX05PREVf SEVBREVSIChOVUxMLCBOVUxMKSwNCisgIHtMIk1lbW9yeSBhY2Nlc3MgcHJvcGVydGllcyIsIDgs IDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJBVFMgQXR0cmli dXRlIiwgNCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUENJ IFNlZ21lbnQgbnVtYmVyIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 DQorfTsNCisNCisvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBQ TUNHIG5vZGUuDQorKi8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVQbWNnUGFy c2VyW10gPSB7DQorICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCisgIHtM IkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQorICB7TCJPdmVyZmxvdyBpbnRlcnJ1cHQgR1NJViIsIDQsIDI0LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIk5vZGUgcmVmZXJlbmNlIiwgNCwgMjgsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KK307DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFs aWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTIG5vZGUuDQorDQor ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBk YXRhLg0KKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMg aW5mb3JtYXRpb24gZS5nLiB0aGlzDQorICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEg cG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQorKi8NCitTVEFUSUMNCitWT0lEDQor VmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCAoDQorICBJTiBVSU5UOCogUHRyLA0KKyAgVk9JRCog ICAgIENvbnRleHQNCisgICkNCit7DQorICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQorICAg IEluY3JlbWVudEVycm9yQ291bnQgKCk7DQorICAgIFByaW50IChMIlxuRVJST1I6IElPUlQgSUQg TWFwcGluZyBjb3VudCBtdXN0IGJlIHplcm8uIik7DQorICB9DQorfQ0KKw0KKy8qKiBUaGlzIGZ1 bmN0aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBvZmZzZXQgZm9yIHRoZSBJVFMg bm9kZS4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQorICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCisgICAgICAgICAgICAgICAgICAgICAg Y291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCisqLw0KK1NUQVRJ Qw0KK1ZPSUQNCitWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2UgKA0KKyAgSU4gVUlOVDgqIFB0 ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApDQorew0KKyAgaWYgKCooVUlOVDMyKilQdHIg IT0gMCkgew0KKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KKyAgICBQcmludCAoTCJcbkVS Uk9SOiBJT1JUIElEIE1hcHBpbmcgb2Zmc2V0IG11c3QgYmUgemVyby4iKTsNCisgIH0NCit9DQor DQorLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIE5vZGUgSWQgTWFwcGluZyBhcnJh eS4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBJT1JUIFRhYmxlLg0KKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElE IE1hcHBpbmcgY291bnQuDQorICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0 IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitE dW1wSW9ydE5vZGVJZE1hcHBpbmdzICgNCisgIElOIFVJTlQ4KiBQdHIsDQorICBJTiBVSU5UMzIg TWFwcGluZ0NvdW50LA0KKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCisgICkNCit7DQorICBV SU5UOCogSWRNYXBwaW5nUHRyOw0KKyAgVUlOVDMyIEluZGV4Ow0KKyAgVUlOVDMyIE9mZnNldDsN CisgIENIQVI4ICBCdWZmZXJbNDBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBh cnNlQWNwaQ0KKw0KKyAgSWRNYXBwaW5nUHRyID0gUHRyICsgTWFwcGluZ09mZnNldDsNCisgIElu ZGV4ID0gMDsNCisgIHdoaWxlIChJbmRleCA8IE1hcHBpbmdDb3VudCkgew0KKyAgICBBc2NpaVNQ cmludCAoDQorICAgICAgQnVmZmVyLA0KKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCisgICAgICAi SUQgTWFwcGluZyBbJWRdIiwNCisgICAgICBJbmRleA0KKyAgICAgICk7DQorICAgIE9mZnNldCA9 IFBhcnNlQWNwaSAoDQorICAgICAgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgICAgICA0LA0K KyAgICAgICAgICAgICAgIEJ1ZmZlciwNCisgICAgICAgICAgICAgICBJZE1hcHBpbmdQdHIsDQor ICAgICAgICAgICAgICAgMjAsDQorICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5v ZGVJZE1hcHBpbmdQYXJzZXIpDQorICAgICAgICAgICAgICAgKTsNCisgICAgSWRNYXBwaW5nUHRy ICs9IE9mZnNldDsNCisgICAgSW5kZXgrKzsNCisgIH0NCit9DQorDQorLyoqIFRoaXMgZnVuY3Rp b24gcGFyc2VzIHRoZSBJT1JUIFNNTVV2MS8yIG5vZGUuDQorDQorICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFt IFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIuDQorICBAcGFyYW0gW2lu XSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBjb3VudC4NCisgIEBwYXJhbSBbaW5dIE1h cHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0K KyovDQorU1RBVElDDQorVk9JRA0KK0R1bXBJb3J0Tm9kZVNtbXVWMVYyICgNCisgIElOIFVJTlQ4 KiBQdHIsDQorICBJTiBVSU5UMTYgTGVuZ3RoLA0KKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwN CisgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQorICApDQorew0KKyAgVUlOVDMyIEluZGV4Ow0K KyAgVUlOVDMyIE9mZnNldDsNCisgIENIQVI4ICBCdWZmZXJbNTBdOyAgLy8gVXNlZCBmb3IgQXNj aWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KKw0KKyAgVUlOVDgqIEFycmF5UHRyOw0KKw0KKyAg UGFyc2VBY3BpICgNCisgICAgVFJVRSwNCisgICAgMiwNCisgICAgIlNNTVV2MSBvciBTTU1VdjIg Tm9kZSIsDQorICAgIFB0ciwNCisgICAgTGVuZ3RoLA0KKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0 Tm9kZVNtbXVWMVYyUGFyc2VyKQ0KKyAgICApOw0KKw0KKyAgQXJyYXlQdHIgPSBQdHIgKyAqSW50 ZXJydXB0Q29udGV4dE9mZnNldDsNCisgIEluZGV4ID0gMDsNCisgIHdoaWxlIChJbmRleCA8ICpJ bnRlcnJ1cHRDb250ZXh0Q291bnQpIHsNCisgICAgQXNjaWlTUHJpbnQgKA0KKyAgICAgIEJ1ZmZl ciwNCisgICAgICBzaXplb2YgKEJ1ZmZlciksDQorICAgICAgIkNvbnRleHQgSW50ZXJydXB0cyBB cnJheSBbJWRdIiwNCisgICAgICBJbmRleA0KKyAgICAgICk7DQorICAgIE9mZnNldCA9IFBhcnNl QWNwaSAoDQorICAgICAgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgICAgICA0LA0KKyAgICAg ICAgICAgICAgIEJ1ZmZlciwNCisgICAgICAgICAgICAgICBBcnJheVB0ciwNCisgICAgICAgICAg ICAgICA4LA0KKyAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEludGVycnVwdEFycmF5UGFy c2VyKQ0KKyAgICAgICAgICAgICAgICk7DQorICAgIEFycmF5UHRyICs9IE9mZnNldDsNCisgICAg SW5kZXgrKzsNCisgIH0NCisNCisgIEFycmF5UHRyID0gUHRyICsgKlBtdUludGVycnVwdE9mZnNl dDsNCisgIEluZGV4ID0gMDsNCisgIHdoaWxlIChJbmRleCA8ICpQbXVJbnRlcnJ1cHRDb3VudCkg ew0KKyAgICBBc2NpaVNQcmludCAoDQorICAgICAgQnVmZmVyLA0KKyAgICAgIHNpemVvZiAoQnVm ZmVyKSwNCisgICAgICAiUE1VIEludGVycnVwdHMgQXJyYXkgWyVkXSIsDQorICAgICAgSW5kZXgN CisgICAgICApOw0KKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KKyAgICAgICAgICAgICAgIFRS VUUsDQorICAgICAgICAgICAgICAgNCwNCisgICAgICAgICAgICAgICBCdWZmZXIsDQorICAgICAg ICAgICAgICAgQXJyYXlQdHIsDQorICAgICAgICAgICAgICAgOCwNCisgICAgICAgICAgICAgICBQ QVJTRVJfUEFSQU1TIChJbnRlcnJ1cHRBcnJheVBhcnNlcikNCisgICAgICAgICAgICAgICApOw0K KyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQorICAgIEluZGV4Kys7DQorICB9DQorDQorICBpZiAo KklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQorICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3Mg KFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCisgIH0NCit9DQorDQorLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFNNTVV2MyBub2RlLg0KKw0KKyAgQHBhcmFtIFtp bl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisg IEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBh cmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQorICBAcGFyYW0g W2luXSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0 YWJsZS4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitEdW1wSW9ydE5vZGVTbW11VjMgKA0KKyAgSU4g VUlOVDgqIFB0ciwNCisgIElOIFVJTlQxNiBMZW5ndGgsDQorICBJTiBVSU5UMzIgTWFwcGluZ0Nv dW50LA0KKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCisgICkNCit7DQorICBQYXJzZUFjcGkg KA0KKyAgICBUUlVFLA0KKyAgICAyLA0KKyAgICAiU01NVVYzIE5vZGUiLA0KKyAgICBQdHIsDQor ICAgIExlbmd0aCwNCisgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVTbW11VjNQYXJzZXIpDQor ICAgICk7DQorDQorICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQorICAgIER1bXBJ b3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCisg IH0NCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIElUUyBub2RlLg0K Kw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUg YnVmZmVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK0R1bXBJb3J0Tm9kZUl0cyAoDQorICBJTiBV SU5UOCogUHRyLA0KKyAgSU4gVUlOVDE2IExlbmd0aA0KKyAgKQ0KK3sNCisgIFVJTlQzMiBPZmZz ZXQ7DQorICBVSU5UMzIgSW5kZXg7DQorICBVSU5UOCogSXRzSWRQdHI7DQorICBDSEFSOCAgQnVm ZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCisNCisg IE9mZnNldCA9IFBhcnNlQWNwaSAoDQorICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAg IDIsDQorICAgICAgICAgICAgICJJVFMgTm9kZSIsDQorICAgICAgICAgICAgIFB0ciwNCisgICAg ICAgICAgICAgTGVuZ3RoLA0KKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZUl0 c1BhcnNlcikNCisgICAgICAgICAgICAgKTsNCisNCisgIEl0c0lkUHRyID0gUHRyICsgT2Zmc2V0 Ow0KKyAgSW5kZXggPSAwOw0KKyAgd2hpbGUgKEluZGV4IDwgKkl0c0NvdW50KSB7DQorICAgIEFz Y2lpU1ByaW50ICgNCisgICAgICBCdWZmZXIsDQorICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KKyAg ICAgICJHSUMgSVRTIElkZW50aWZpZXIgQXJyYXkgWyVkXSIsDQorICAgICAgSW5kZXgNCisgICAg ICApOw0KKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KKyAgICAgICAgICAgICAgIFRSVUUsDQor ICAgICAgICAgICAgICAgNCwNCisgICAgICAgICAgICAgICBCdWZmZXIsDQorICAgICAgICAgICAg ICAgSXRzSWRQdHIsDQorICAgICAgICAgICAgICAgNCwNCisgICAgICAgICAgICAgICBQQVJTRVJf UEFSQU1TIChJdHNJZFBhcnNlcikNCisgICAgICAgICAgICAgICApOw0KKyAgICBJdHNJZFB0ciAr PSBPZmZzZXQ7DQorICAgIEluZGV4Kys7DQorICB9DQorDQorICAvLyBOb3RlOiBJVFMgZG9lcyBu b3QgaGF2ZSB0aGUgSUQgTWFwcGluZ3MgQXJyYXkNCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBJT1JUIE5hbWVkIENvbXBvbmVudCBub2RlLg0KKw0KKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisgIEBw YXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFt IFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQorICBAcGFyYW0gW2lu XSBNYXBwaW5nT2Zmc2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJs ZS4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQor ICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVUlOVDE2IExlbmd0aCwNCisgIElOIFVJTlQzMiBNYXBw aW5nQ291bnQsDQorICBJTiBVSU5UMzIgTWFwcGluZ09mZnNldA0KKyAgKQ0KK3sNCisgIFVJTlQz MiBPZmZzZXQ7DQorICBVSU5UMzIgSW5kZXg7DQorICBVSU5UOCogRGV2aWNlTmFtZVB0cjsNCisg IFVJTlQzMiBEZXZpY2VOYW1lTGVuZ3RoOw0KKw0KKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCisg ICAgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgICAgMiwNCisgICAgICAgICAgICAgIk5hbWVk IENvbXBvbmVudCBOb2RlIiwNCisgICAgICAgICAgICAgUHRyLA0KKyAgICAgICAgICAgICBMZW5n dGgsDQorICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlTmFtZWRDb21wb25lbnRQ YXJzZXIpDQorICAgICAgICAgICAgICk7DQorDQorICBEZXZpY2VOYW1lUHRyID0gUHRyICsgT2Zm c2V0Ow0KKyAgLy8gRXN0aW1hdGUgdGhlIERldmljZSBOYW1lIGxlbmd0aA0KKyAgRGV2aWNlTmFt ZUxlbmd0aCA9IExlbmd0aCAtIE9mZnNldCAtIChNYXBwaW5nQ291bnQgKiAyMCk7DQorICBQcmlu dEZpZWxkTmFtZSAoMiwgTCJEZXZpY2UgT2JqZWN0IE5hbWUiKTsNCisgIEluZGV4ID0gMDsNCisg IHdoaWxlICgoSW5kZXggPCBEZXZpY2VOYW1lTGVuZ3RoKSAmJiAoRGV2aWNlTmFtZVB0cltJbmRl eF0gIT0gMCkpIHsNCisgICAgUHJpbnQgKEwiJWMiLCBEZXZpY2VOYW1lUHRyW0luZGV4KytdKTsN CisgIH0NCisgIFByaW50IChMIlxuIik7DQorDQorICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAh PSAwKSB7DQorICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwgTWFwcGluZ0NvdW50LCBN YXBwaW5nT2Zmc2V0KTsNCisgIH0NCit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBJT1JUIFJvb3QgQ29tcGxleCBub2RlLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5dIExl bmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gTWFwcGlu Z0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQorICBAcGFyYW0gW2luXSBNYXBwaW5nT2Zm c2V0ICBUaGUgb2Zmc2V0IG9mIHRoZSBJRCBNYXBwaW5nIGFycmF5DQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCisqLw0KK1NU QVRJQw0KK1ZPSUQNCitEdW1wSW9ydE5vZGVSb290Q29tcGxleCAoDQorICBJTiBVSU5UOCogUHRy LA0KKyAgSU4gVUlOVDE2IExlbmd0aCwNCisgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQorICBJ TiBVSU5UMzIgTWFwcGluZ09mZnNldA0KKyAgKQ0KK3sNCisgIFBhcnNlQWNwaSAoDQorICAgIFRS VUUsDQorICAgIDIsDQorICAgICJSb290IENvbXBsZXggTm9kZSIsDQorICAgIFB0ciwNCisgICAg TGVuZ3RoLA0KKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVJvb3RDb21wbGV4UGFyc2VyKQ0K KyAgICApOw0KKw0KKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KKyAgICBEdW1w SW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQor ICB9DQorfQ0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBQTUNHIG5vZGUu DQorDQorICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9mIHRo ZSBidWZmZXIuDQorICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGluZyBj b3VudC4NCisgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElE IE1hcHBpbmcgYXJyYXkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0 YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KKyovDQorU1RBVElDDQorVk9JRA0KK0R1bXBJb3J0Tm9k ZVBtY2cgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFVJTlQxNiBMZW5ndGgsDQorICBJTiBV SU5UMzIgTWFwcGluZ0NvdW50LA0KKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCispDQorew0K KyAgUGFyc2VBY3BpICgNCisgICAgVFJVRSwNCisgICAgMiwNCisgICAgIlBNQ0cgTm9kZSIsDQor ICAgIFB0ciwNCisgICAgTGVuZ3RoLA0KKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVBtY2dQ YXJzZXIpDQorICApOw0KKw0KKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KKyAg ICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNl dCk7DQorICB9DQorDQorICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCA+IDEpIHsNCisgICAgSW5j cmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgUHJpbnQgKA0KKyAgICAgIEwiRVJST1I6IElEIG1h cHBpbmcgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIDEuIElkIE1hcHBpbmcgQ291bnQgPSVkXG4i LA0KKyAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQNCisgICAgICApOw0KKyAgfQ0KK30NCisNCisv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgSU9SVCB0YWJsZS4NCisgIFdoZW4gdHJh Y2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCB0YWJsZSBhbmQNCisg IHRyYWNlcyB0aGUgQUNQSSBmaWVsZHMuDQorDQorICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2Vz IHRoZSBmb2xsb3dpbmcgbm9kZXM6DQorICAgIC0gSVRTIEdyb3VwDQorICAgIC0gTmFtZWQgQ29t cG9uZW50DQorICAgIC0gUm9vdCBDb21wbGV4DQorICAgIC0gU01NVXYxLzINCisgICAgLSBTTU1V djMNCisgICAgLSBQTUNHDQorDQorICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRh dGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQorDQorICBAcGFyYW0gW2luXSBUcmFjZSAg ICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KKyAgQHBhcmFtIFtp bl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQorICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBB Q1BJIHRhYmxlLg0KKyovDQorVk9JRA0KK0VGSUFQSQ0KK1BhcnNlQWNwaUlvcnQgKA0KKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCisgIElOIFVJTlQ4KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQorICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQorICApDQorew0KKyAg VUlOVDMyIE9mZnNldDsNCisgIFVJTlQzMiBJbmRleDsNCisgIFVJTlQ4KiBOb2RlUHRyOw0KKw0K KyAgaWYgKCFUcmFjZSkgew0KKyAgICByZXR1cm47DQorICB9DQorDQorICBQYXJzZUFjcGkgKA0K KyAgICBUUlVFLA0KKyAgICAwLA0KKyAgICAiSU9SVCIsDQorICAgIFB0ciwNCisgICAgQWNwaVRh YmxlTGVuZ3RoLA0KKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0UGFyc2VyKQ0KKyAgICApOw0KKyAg T2Zmc2V0ID0gKklvcnROb2RlT2Zmc2V0Ow0KKyAgTm9kZVB0ciA9IFB0ciArIE9mZnNldDsNCisg IEluZGV4ID0gMDsNCisNCisgIHdoaWxlICgoSW5kZXggPCAqSW9ydE5vZGVDb3VudCkgJiYgKE9m ZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkpIHsNCisgICAgLy8gUGFyc2UgdGhlIElPUlQgTm9kZSBI ZWFkZXINCisgICAgUGFyc2VBY3BpICgNCisgICAgICBGQUxTRSwNCisgICAgICAwLA0KKyAgICAg ICJJT1JUIE5vZGUgSGVhZGVyIiwNCisgICAgICBOb2RlUHRyLA0KKyAgICAgIDE2LA0KKyAgICAg IFBBUlNFUl9QQVJBTVMgKElvcnROb2RlSGVhZGVyUGFyc2VyKQ0KKyAgICAgICk7DQorICAgIHN3 aXRjaCAoKklvcnROb2RlVHlwZSkgew0KKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9JVFNfR1JPVVA6 DQorICAgICAgICBEdW1wSW9ydE5vZGVJdHMgKA0KKyAgICAgICAgICBOb2RlUHRyLA0KKyAgICAg ICAgICAqSW9ydE5vZGVMZW5ndGgNCisgICAgICAgICAgKTsNCisgICAgICAgIGJyZWFrOw0KKyAg ICAgIGNhc2UgRUlPUlRfTk9ERV9OQU1FRF9DT01QT05FTlQ6DQorICAgICAgICBEdW1wSW9ydE5v ZGVOYW1lZENvbXBvbmVudCAoDQorICAgICAgICAgIE5vZGVQdHIsDQorICAgICAgICAgICpJb3J0 Tm9kZUxlbmd0aCwNCisgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCisgICAgICAgICAg KklvcnRJZE1hcHBpbmdPZmZzZXQNCisgICAgICAgICAgKTsNCisgICAgICAgIGJyZWFrOw0KKyAg ICAgIGNhc2UgRUlPUlRfTk9ERV9ST09UX0NPTVBMRVg6DQorICAgICAgICBEdW1wSW9ydE5vZGVS b290Q29tcGxleCAoDQorICAgICAgICAgIE5vZGVQdHIsDQorICAgICAgICAgICpJb3J0Tm9kZUxl bmd0aCwNCisgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCisgICAgICAgICAgKklvcnRJ ZE1hcHBpbmdPZmZzZXQNCisgICAgICAgICAgKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgIGNh c2UgRUlPUlRfTk9ERV9TTU1VVjFfVjI6DQorICAgICAgICBEdW1wSW9ydE5vZGVTbW11VjFWMiAo DQorICAgICAgICAgIE5vZGVQdHIsDQorICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCisgICAg ICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCisgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZz ZXQNCisgICAgICAgICAgKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgIGNhc2UgRUlPUlRfTk9E RV9TTU1VVjM6DQorICAgICAgICBEdW1wSW9ydE5vZGVTbW11VjMgKA0KKyAgICAgICAgICBOb2Rl UHRyLA0KKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQorICAgICAgICAgICpJb3J0SWRNYXBw aW5nQ291bnQsDQorICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQorICAgICAgICAgICk7 DQorICAgICAgICBicmVhazsNCisgICAgICBjYXNlIEVJT1JUX05PREVfUE1DRzoNCisgICAgICAg IER1bXBJb3J0Tm9kZVBtY2cgKA0KKyAgICAgICAgICBOb2RlUHRyLA0KKyAgICAgICAgICAqSW9y dE5vZGVMZW5ndGgsDQorICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQorICAgICAgICAg ICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQorICAgICAgICApOw0KKyAgICAgICAgYnJlYWs7DQorDQor ICAgICAgZGVmYXVsdDoNCisgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQorICAgICAg ICBQcmludCAoTCJFUlJPUjogVW5zdXBwb3J0ZWQgSU9SVCBOb2RlIHR5cGUgPSAlZFxuIiwgKklv cnROb2RlVHlwZSk7DQorICAgIH0gLy8gc3dpdGNoDQorDQorICAgIE5vZGVQdHIgKz0gKCpJb3J0 Tm9kZUxlbmd0aCk7DQorICAgIE9mZnNldCArPSAoKklvcnROb2RlTGVuZ3RoKTsNCisgIH0gLy8g d2hpbGUNCit9DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2lu XSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQorICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K KyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0lvcnRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQor ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4g ICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisg IHJldHVybiBSZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJfSU9fUkVN QVBQSU5HX1RBQkxFX1NJR05BVFVSRSwNCisgICAgICAgICAgIFBhcnNlQWNwaUlvcnQNCisgICAg ICAgICAgICk7DQorfQ0KKw0KKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFt IFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4N CisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdp c3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK0lvcnRQYXJzZXJMaWJEZXN0cnVj dG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQorICAp DQorew0KKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KKyAgICAgICAgICAgRUZJX0FDUElf Nl8yX0lPX1JFTUFQUElOR19UQUJMRV9TSUdOQVRVUkUNCisgICAgICAgICAgICk7DQorfQ0KZGlm ZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL01h ZHRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L01hZHRQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YTYwNTY5YTUyYjU4ODNjMzIzZTE1ZDMzMzlh MjBlMjdlYzIwZTcNCi0tLSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL01hZHRQYXJzZXIuYw0KQEAgLTAsMCArMSwzNTQgQEANCisv KioNCisgIE1BRFQgdGFibGUgcGFyc2VyDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3 LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0K KyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQg VU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdB UlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBP UiBJTVBMSUVELg0KKw0KKyAgQHBhciBSZWZlcmVuY2Uocyk6DQorICAgIC0gQUNQSSA2LjIgU3Bl Y2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KKyoqLw0KKw0KKyNpbmNsdWRl IDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+ DQorI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCisjaW5jbHVkZSAiQWNwaVZpZXcuaCINCisjaW5j bHVkZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQorDQorLy8gTG9jYWwgVmFyaWFibGVzDQorU1RBVElD IENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGU7DQorU1RBVElDIENPTlNU IFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCitTVEFUSUMgQUNQSV9ERVND UklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCisNCisvLyBGb3J3YXJkIGRlY2xhcmF0 aW9ucw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0b3JCYXNlICgNCisg IElOIFVJTlQ4KiBQdHIsDQorICBJTiBWT0lEKiAgQ29udGV4dA0KKyk7DQorDQorLyoqIEFuIEFD UElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ0MgSW50ZXJydXB0DQorICAgIENvbnRy b2xsZXIgU3RydWN0dXJlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0NQYXJz ZXJbXSA9IHsNCisgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCisgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQorDQorICB7TCJDUFUgSW50ZXJmYWNlIE51bWJlciIsIDQsIDQsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgOCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJGbGFncyIsIDQsIDEyLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlBhcmtpbmcgUHJvdG9jb2wgVmVy c2lvbiIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisNCisgIHtM IlBlcmZvcm1hbmNlIEludGVycnVwdCBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KKyAge0wiUGFya2VkIEFkZHJlc3MiLCA4LCAyNCwgTCIweCVseCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwg MzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkdJQ1YiLCA4LCA0 MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiR0lDSCIsIDgsIDQ4 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJWR0lDIE1haW50ZW5h bmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN CisgIHtMIkdJQ1IgQmFzZSBBZGRyZXNzIiwgOCwgNjAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCisgIHtMIk1QSURSIiwgOCwgNjgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCisgIHtMIlByb2Nlc3NvciBQb3dlciBFZmZpY2llbmN5IENsYXNzIiwgMSwg NzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQorICAgTlVMTH0sDQorICB7TCJSZXNlcnZl ZCIsIDMsIDc3LCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCit9 Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUNEIEludGVy cnVwdA0KKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJ X1BBUlNFUiBHaWNEUGFyc2VyW10gPSB7DQorICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiR0lDIElEIiwgNCwgNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJTeXN0ZW0gVmVjdG9y IEJhc2UiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCisgICAgVmFsaWRhdGVHSUNEU3lz dGVtVmVjdG9yQmFzZSwgTlVMTH0sDQorICB7TCJHSUMgVmVyc2lvbiIsIDEsIDIwLCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDMsIDIxLCBMIiV4ICV4 ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNU0kgRnJhbWUgSW50ZXJydXB0DQorICAgIENv bnRyb2xsZXIgU3RydWN0dXJlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY01T SUZyYW1lUGFyc2VyW10gPSB7DQorICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQorICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiTVNJIEZyYW1lIElEIiwgNCwgNCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQaHlzaWNhbCBCYXNlIEFkZHJlc3MiLCA4LCA4 LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJGbGFncyIsIDQsIDE2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisNCisgIHtMIlNQSSBDb3VudCIs IDIsIDIwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJTUEkgQmFzZSIs IDIsIDIyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KK307DQorDQorLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQ1IgSW50ZXJydXB0DQorICAgIENv bnRyb2xsZXIgU3RydWN0dXJlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY1JQ YXJzZXJbXSA9IHsNCisgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCisgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCisgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQorDQorICB7TCJEaXNjb3ZlcnkgUmFuZ2UgQmFzZSBBZGRyZXNzIiwgOCwgNCwgTCIw eCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQorICAgTlVMTH0sDQorICB7TCJEaXNjb3ZlcnkgUmFu Z2UgTGVuZ3RoIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQorfTsN CisNCisvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDIElUUyBJbnRl cnJ1cHQNCisgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQorKi8NCitTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgR2ljSVRTUGFyc2VyW10gPSB7DQorICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiR0lDIElUUyBJRCIsIDQsIDQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNz IiwgOCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2 ZWQiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1BRFQgVGFibGUuDQor Ki8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFkdFBhcnNlcltdID0gew0KKyAgUEFSU0Vf QUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQorICB7TCJMb2NhbCBJbnRlcnJ1cHQgQ29udHJv bGxlciBBZGRyZXNzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQorICAgTlVM TH0sDQorICB7TCJGbGFncyIsIDQsIDQwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KK307DQorDQorLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1BRFQg SW50ZXJydXB0DQorICAgIENvbnRyb2xsZXIgU3RydWN0dXJlIEhlYWRlciBTdHJ1Y3R1cmUuDQor Ki8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFkdEludGVycnVwdENvbnRyb2xsZXJIZWFk ZXJQYXJzZXJbXSA9IHsNCisgIHtOVUxMLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZNYWR0 SW50ZXJydXB0Q29udHJvbGxlclR5cGUsIE5VTEwsIE5VTEx9LA0KKyAge0wiTGVuZ3RoIiwgMSwg MSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsIE5V TEwsDQorICAgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDIsIDIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9DQorfTsNCisNCisvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFN5 c3RlbSBWZWN0b3IgQmFzZSBpbiB0aGUgR0lDRC4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQorICBAcGFyYW0gW2luXSBD b250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMN CisgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRh YmxlIGhlYWRlci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZUdJQ0RTeXN0ZW1WZWN0 b3JCYXNlICgNCisgIElOIFVJTlQ4KiBQdHIsDQorICBJTiBWT0lEKiAgQ29udGV4dA0KKykNCit7 DQorICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQorICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQorICAgIFByaW50ICgNCisgICAgICBMIlxuRVJST1I6IFN5c3RlbSBWZWN0b3IgQmFzZSBt dXN0IGJlIHplcm8uIg0KKyAgICApOw0KKyAgfQ0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBw YXJzZXMgdGhlIEFDUEkgTUFEVCB0YWJsZS4NCisgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUFEVCB0YWJsZSBhbmQNCisgIHRyYWNlcyB0aGUgQUNQSSB0 YWJsZSBmaWVsZHMuDQorDQorICBUaGlzIGZ1bmN0aW9uIGN1cnJlbnRseSBwYXJzZXMgdGhlIGZv bGxvd2luZyBJbnRlcnJ1cHQgQ29udHJvbGxlcg0KKyAgU3RydWN0dXJlczoNCisgICAgLSBHSUND DQorICAgIC0gR0lDRA0KKyAgICAtIEdJQyBNU0kgRnJhbWUNCisgICAgLSBHSUNSDQorICAgIC0g R0lDIElUUw0KKw0KKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2Yg dGhlIEFDUEkgdGFibGUgZmllbGRzLg0KKw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAg ICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJs ZS4NCisqLw0KK1ZPSUQNCitFRklBUEkNCitQYXJzZUFjcGlNYWR0ICgNCisgIElOIEJPT0xFQU4g VHJhY2UsDQorICBJTiBVSU5UOCogIFB0ciwNCisgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3Ro LA0KKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KKyAgKQ0KK3sNCisgIFVJTlQzMiBP ZmZzZXQ7DQorICBVSU5UOCogSW50ZXJydXB0Q29udG9sbGVyUHRyOw0KKyAgVUlOVDMyIEdJQ0RD b3VudCA9IDA7DQorDQorICBpZiAoIVRyYWNlKSB7DQorICAgIHJldHVybjsNCisgIH0NCisNCisg IE9mZnNldCA9IFBhcnNlQWNwaSAoDQorICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAg IDAsDQorICAgICAgICAgICAgICJNQURUIiwNCisgICAgICAgICAgICAgUHRyLA0KKyAgICAgICAg ICAgICBBY3BpVGFibGVMZW5ndGgsDQorICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKE1hZHRQ YXJzZXIpDQorICAgICAgICAgICAgICk7DQorICBJbnRlcnJ1cHRDb250b2xsZXJQdHIgPSBQdHIg KyBPZmZzZXQ7DQorDQorICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQorICAg IC8vIFBhcnNlIEludGVycnVwdCBDb250cm9sbGVyIFN0cnVjdHVyZSB0byBvYnRhaW4gTGVuZ3Ro Lg0KKyAgICBQYXJzZUFjcGkgKA0KKyAgICAgIEZBTFNFLA0KKyAgICAgIDAsDQorICAgICAgTlVM TCwNCisgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQorICAgICAgMiwgIC8vICBMZW5ndGgg aXMgMSBieXRlIGF0IG9mZnNldCAxDQorICAgICAgUEFSU0VSX1BBUkFNUyAoTWFkdEludGVycnVw dENvbnRyb2xsZXJIZWFkZXJQYXJzZXIpDQorICAgICAgKTsNCisNCisgICAgaWYgKCgoT2Zmc2V0 ICsgKCpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCkpID4gQWNwaVRhYmxlTGVuZ3RoKSB8 fA0KKyAgICAgICAgKCpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCA8IDQpKSB7DQorICAg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgICBQcmludCAoDQorICAgICAgICAgTCJF UlJPUjogSW52YWxpZCBJbnRlcnJ1cHQgQ29udHJvbGxlciBMZW5ndGgsIg0KKyAgICAgICAgICAi IFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQorICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250 cm9sbGVyVHlwZSwNCisgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgNCisg ICAgICAgICApOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorDQorICAgIHN3aXRjaCAoKk1hZHRJ bnRlcnJ1cHRDb250cm9sbGVyVHlwZSkgew0KKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQzog ew0KKyAgICAgICAgUGFyc2VBY3BpICgNCisgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgMiwN CisgICAgICAgICAgIkdJQ0MiLA0KKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQor ICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCisgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoR2ljQ1BhcnNlcikNCisgICAgICAgICAgKTsNCisgICAgICAgIGJyZWFrOw0K KyAgICAgIH0NCisNCisgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNEOiB7DQorICAgICAgICBp ZiAoKytHSUNEQ291bnQgPiAxKSB7DQorICAgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7 DQorICAgICAgICAgIFByaW50ICgNCisgICAgICAgICAgICBMIkVSUk9SOiBPbmx5IG9uZSBHSUNE IG11c3QgYmUgcHJlc2VudCwiDQorICAgICAgICAgICAgICAiIEdJQ0RDb3VudCA9ICVkXG4iLA0K KyAgICAgICAgICAgIEdJQ0RDb3VudA0KKyAgICAgICAgICAgICk7DQorICAgICAgICB9DQorICAg ICAgICBQYXJzZUFjcGkgKA0KKyAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAyLA0KKyAgICAg ICAgICAiR0lDRCIsDQorICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCisgICAgICAg ICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KKyAgICAgICAgICBQQVJTRVJfUEFS QU1TIChHaWNEUGFyc2VyKQ0KKyAgICAgICAgICApOw0KKyAgICAgICAgYnJlYWs7DQorICAgICAg fQ0KKw0KKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19NU0lfRlJBTUU6IHsNCisgICAgICAg IFBhcnNlQWNwaSAoDQorICAgICAgICAgIFRSVUUsDQorICAgICAgICAgIDIsDQorICAgICAgICAg ICJHSUMgTVNJIEZyYW1lIiwNCisgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KKyAg ICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQorICAgICAgICAgIFBBUlNF Ul9QQVJBTVMgKEdpY01TSUZyYW1lUGFyc2VyKQ0KKyAgICAgICAgICApOw0KKyAgICAgICAgYnJl YWs7DQorICAgICAgfQ0KKw0KKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ1I6IHsNCisgICAg ICAgIFBhcnNlQWNwaSAoDQorICAgICAgICAgIFRSVUUsDQorICAgICAgICAgIDIsDQorICAgICAg ICAgICJHSUNSIiwNCisgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KKyAgICAgICAg ICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQorICAgICAgICAgIFBBUlNFUl9QQVJB TVMgKEdpY1JQYXJzZXIpDQorICAgICAgICAgICk7DQorICAgICAgICBicmVhazsNCisgICAgICB9 DQorDQorICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDX0lUUzogew0KKyAgICAgICAgUGFyc2VB Y3BpICgNCisgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgMiwNCisgICAgICAgICAgIkdJQyBJ VFMiLA0KKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQorICAgICAgICAgICpNYWR0 SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCisgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2lj SVRTUGFyc2VyKQ0KKyAgICAgICAgICApOw0KKyAgICAgICAgYnJlYWs7DQorICAgICAgfQ0KKw0K KyAgICAgIGRlZmF1bHQ6IHsNCisgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQorICAg ICAgICBQcmludCAoDQorICAgICAgICAgIEwiRVJST1I6IFVua25vd24gSW50ZXJydXB0IENvbnRy b2xsZXIgU3RydWN0dXJlLCINCisgICAgICAgICAgICAiIFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRc biIsDQorICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQorICAgICAgICAg ICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aA0KKyAgICAgICAgICApOw0KKyAgICAgIH0N CisgICAgfSAvLyBzd2l0Y2gNCisNCisgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyICs9ICpNYWR0 SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aDsNCisgICAgT2Zmc2V0ICs9ICpNYWR0SW50ZXJydXB0 Q29udHJvbGxlckxlbmd0aDsNCisgIH0gLy8gd2hpbGUNCit9DQorDQorLyoqIFJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8g dGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFy c2VyIGlzIHJlZ2lzdGVyZWQuDQorICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUg cGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK01h ZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQorICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05T VCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQorICAg ICAgICAgICBFRklfQUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRV9TSUdO QVRVUkUsDQorICAgICAgICAgICBQYXJzZUFjcGlNYWR0DQorICAgICAgICAgICApOw0KK30NCisN CisvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFu ZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCisgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQorICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCisqLw0KK0VG SV9TVEFUVVMNCitFRklBUEkNCitNYWR0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQorICBJTiBDT05T VCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4gICAgICAgRUZJ X1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBE ZXJlZ2lzdGVyUGFyc2VyICgNCisgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9NVUxUSVBMRV9BUElD X0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KKyAgICAgICAgICAgKTsNCit9DQpkaWZmIC0t Z2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvTWNmZ1Bh cnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvTWNm Z1BhcnNlci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I0NTU5MWMzZDU2YWUwZWZhNzcyZDZiZjVkYzNiM2M0 ZjIyODdlYw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvTWNmZ1BhcnNlci5jDQpAQCAtMCwwICsxLDEzNyBAQA0KKy8qKg0K KyAgTUNGRyB0YWJsZSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElN UExJRUQuDQorDQorICBAcGFyIFJlZmVyZW5jZShzKToNCisgICAgLSBQQ0kgRmlybXdhcmUgU3Bl Y2lmaWNhdGlvbiAtIFJldmlzaW9uIDMuMiwgSmFudWFyeSAyNiwgMjAxNS4NCisqKi8NCisNCisj aW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVm aUxpYi5oPg0KKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQorI2luY2x1ZGUgIkFjcGlWaWV3Lmgi DQorI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KKw0KKy8vIExvY2FsIHZhcmlhYmxlcw0K K1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KKw0KKy8q KiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1DRkcgVGFibGUuDQor Ki8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWNmZ1BhcnNlcltdID0gew0KKyAgUEFSU0Vf QUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQorICB7TCJSZXNlcnZlZCIsIDgsIDM2LCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorfTsNCisNCisvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gU3BhY2UNCisgICAgQmFz ZSBBZGRyZXNzIHN0cnVjdHVyZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBQY2lD ZmdTcGFjZUJhc2VBZGRyUGFyc2VyW10gPSB7DQorICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAwLCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQQ0kgU2VnbWVudCBHcm91 cCBOby4iLCAyLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlN0 YXJ0IEJ1cyBOby4iLCAxLCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQor ICB7TCJFbmQgQnVzIE5vLiIsIDEsIDExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIlJlc2VydmVkIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9DQorfTsNCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgTUNGRyB0YWJs ZS4NCisgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUNG RyB0YWJsZSBhbmQNCisgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQorDQorICBUaGlz IGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVs ZHMuDQorDQorICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2Ug dGhlIEFDUEkgZmllbGRzLg0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQorICBAcGFyYW0gW2luXSBBY3BpVGFibGVM ZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KKyAgQHBhcmFtIFtpbl0gQWNwaVRh YmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KKyovDQorVk9JRA0KK0VG SUFQSQ0KK1BhcnNlQWNwaU1jZmcgKA0KKyAgSU4gQk9PTEVBTiBUcmFjZSwNCisgIElOIFVJTlQ4 KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQorICBJTiBVSU5UOCAgIEFj cGlUYWJsZVJldmlzaW9uDQorICApDQorew0KKyAgVUlOVDMyIE9mZnNldDsNCisgIFVJTlQzMiBQ Y2lDZmdPZmZzZXQ7DQorICBVSU5UOCogUGNpQ2ZnU3BhY2VQdHI7DQorDQorICBpZiAoIVRyYWNl KSB7DQorICAgIHJldHVybjsNCisgIH0NCisNCisgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQorICAg ICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgIDAsDQorICAgICAgICAgICAgICJNQ0ZHIiwN CisgICAgICAgICAgICAgUHRyLA0KKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQorICAg ICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKE1jZmdQYXJzZXIpDQorICAgICAgICAgICAgICk7DQor DQorICBQY2lDZmdTcGFjZVB0ciA9IFB0ciArIE9mZnNldDsNCisNCisgIHdoaWxlIChPZmZzZXQg PCBBY3BpVGFibGVMZW5ndGgpIHsNCisgICAgUGNpQ2ZnT2Zmc2V0ID0gUGFyc2VBY3BpICgNCisg ICAgICAgICAgICAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAgICAgICAgICAgIDIsDQorICAg ICAgICAgICAgICAgICAgICAgIlBDSSBDb25maWd1cmF0aW9uIFNwYWNlIiwNCisgICAgICAgICAg ICAgICAgICAgICBQY2lDZmdTcGFjZVB0ciwNCisgICAgICAgICAgICAgICAgICAgICAoQWNwaVRh YmxlTGVuZ3RoIC0gT2Zmc2V0KSwNCisgICAgICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1T IChQY2lDZmdTcGFjZUJhc2VBZGRyUGFyc2VyKQ0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgIFBjaUNmZ1NwYWNlUHRyICs9IFBjaUNmZ09mZnNldDsNCisgICAgT2Zmc2V0ICs9IFBjaUNm Z09mZnNldDsNCisgIH0NCit9DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBA cGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBh cmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQor ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQu DQorICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQ SSBUYWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdp c3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK01jZmdQYXJzZXJMaWJDb25zdHJ1 Y3RvciAoDQorICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxl LA0KKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAg KQ0KK3sNCisgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82 XzJfUENJX0VYUFJFU1NfTUVNT1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBU0VfQURE UkVTU19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQorICAgICAgICAgICBQYXJzZUFjcGlN Y2ZnDQorICAgICAgICAgICApOw0KK30NCisNCisvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0K Kw0KKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N CisgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxl Lg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJl Z2lzdGVyZWQuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdh cyBub3QgcmVnaXN0ZXJlZC4NCisqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitNY2ZnUGFyc2Vy TGliRGVzdHJ1Y3RvciAoDQorICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1U YWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCisgICAgICAgICAg IEVGSV9BQ1BJXzZfMl9QQ0lfRVhQUkVTU19NRU1PUllfTUFQUEVEX0NPTkZJR1VSQVRJT05fU1BB Q0VfQkFTRV9BRERSRVNTX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KKyAgICAgICAgICAg KTsNCit9DQpkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUnNkcFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUnNkcFBhcnNlci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkyMTk4OTNlYWEyMjE1ODkz YjViY2NjYjNjZDVjZGQ2YTBmZGZmZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUnNkcFBhcnNlci5jDQpAQCAtMCwwICsx LDE4MiBAQA0KKy8qKg0KKyAgUlNEUCB0YWJsZSBwYXJzZXINCisNCisgIENvcHlyaWdodCAoYykg MjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlDQorICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF UiBFWFBSRVNTIE9SIElNUExJRUQuDQorDQorICBAcGFyIFJlZmVyZW5jZShzKToNCisgICAgLSBB Q1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQorKiovDQor DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgi DQorI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQorI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0K Kw0KKy8vLyBUaGUgUlNEUCB0YWJsZSBzaWduYXR1cmUgaXMgIlJTRCBQVFIgIiAoOCBieXRlcykN CisvLy8gSG93ZXZlciBUaGUgc2lnbmF0dXJlIGZvciBBQ1BJIHRhYmxlcyBpcyA0IGJ5dGVzLg0K Ky8vLyBUbyB3b3JrIGFyb3VuZCB0aGlzIG9kZGl0eSBkZWZpbmUgYSBzaWduYXR1cmUgdHlwZQ0K Ky8vLyB0aGF0IGFsbG93cyB1cyB0byBwcm9jZXNzIHRoZSBsb2cgb3B0aW9ucy4NCisjZGVmaW5l IFJTRFBfVEFCTEVfSU5GTyAgU0lHTkFUVVJFXzMyKCdSJywgJ1MnLCAnRCcsICdQJykNCisNCisv LyBMb2NhbCBWYXJpYWJsZXMNCitTVEFUSUMgQ09OU1QgVUlOVDY0KiBYc2R0QWRkcmVzczsNCitT VEFUSUMgQ09OU1QgVUlOVDMyKiBSc2RwTGVuZ3RoOw0KKw0KKy8qKiBUaGlzIGZ1bmN0aW9uIHZh bGlkYXRlcyB0aGUgUlNEVCBBZGRyZXNzLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlUnNkdEFkZHJlc3MgKA0KKyAg SU4gVUlOVDgqIFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApOw0KKw0KKy8qKiBUaGlz IGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNzLg0KKw0KKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJh bSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUu Zy4gdGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlWHNkdEFk ZHJlc3MgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApOw0K Kw0KKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFJTRFAgVGFibGUuDQorKi8NCitT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgUnNkcFBhcnNlcltdID0gew0KKyAge0wiU2lnbmF0dXJl IiwgOCwgMCwgTlVMTCwgRHVtcDhDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJDaGVj a3N1bSIsIDEsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiT2Vt IElEIiwgNiwgOSwgTlVMTCwgRHVtcDZDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJS ZXZpc2lvbiIsIDEsIDE1LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJS U0RUIEFkZHJlc3MiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVSc2R0QWRk cmVzcywgTlVMTH0sDQorICB7TCJMZW5ndGgiLCA0LCAyMCwgTCIlZCIsIE5VTEwsIChWT0lEKiop JlJzZHBMZW5ndGgsIE5VTEwsIE5VTEx9LA0KKyAge0wiWFNEVCBBZGRyZXNzIiwgOCwgMjQsIEwi MHglbHgiLCBOVUxMLCAoVk9JRCoqKSZYc2R0QWRkcmVzcywNCisgICBWYWxpZGF0ZVhzZHRBZGRy ZXNzLCBOVUxMfSwNCisgIHtMIkV4dGVuZGVkIENoZWNrc3VtIiwgMSwgMzIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2ZWQiLCAzLCAzMywgTCIleCAleCAl eCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQorfTsNCisNCisvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRkcmVzcy4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQorICBAcGFyYW0gW2lu XSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRo aXMNCisgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGhlYWRlci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZVJzZHRBZGRyZXNz ICgNCisgIElOIFVJTlQ4KiBQdHIsDQorICBJTiBWT0lEKiAgQ29udGV4dA0KKyAgKQ0KK3sNCisj aWYgZGVmaW5lZChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KKyAg Ly8gUmVmZXJlbmNlOiBTZXJ2ZXIgQmFzZSBCb290IFJlcXVpcmVtZW50cyBTeXN0ZW0gU29mdHdh cmUgb24gQVJNIFBsYXRmb3Jtcw0KKyAgLy8gU2VjdGlvbjogNC4yLjEuMSBSU0RQDQorICAvLyBS b290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQor ICAvLyAgIC0gV2l0aGluIHRoZSBSU0RQLCB0aGUgUnNkdEFkZHJlc3MgZmllbGQgbXVzdCBiZSBu dWxsICh6ZXJvKSBhbmQgdGhlDQorICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUgYSB2YWxp ZCwgbm9uLW51bGwsIDY0LWJpdCB2YWx1ZS4NCisgIFVJTlQzMiBSc2R0QWRkcjsNCisgIFJzZHRB ZGRyID0gKihVSU5UMzIqKVB0cjsNCisgIGlmIChSc2R0QWRkciAhPSAwKSB7DQorICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQorICAgIFByaW50ICgNCisgICAgICBMIlxuRVJST1I6IFJzZHQg QWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBiZSBOVUxMIG9uIEFSTSBQbGF0Zm9ybXMuIiwNCisg ICAgICBSc2R0QWRkcg0KKyAgICAgICk7DQorICB9DQorI2VuZGlmDQorfQ0KKw0KKy8qKiBUaGlz IGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNzLg0KKw0KKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJh bSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUu Zy4gdGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgaGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlWHNkdEFk ZHJlc3MgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApDQor ew0KKyNpZiBkZWZpbmVkKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQp DQorICAvLyBSZWZlcmVuY2U6IFNlcnZlciBCYXNlIEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBT b2Z0d2FyZSBvbiBBUk0gUGxhdGZvcm1zDQorICAvLyBTZWN0aW9uOiA0LjIuMS4xIFJTRFANCisg IC8vIFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXIgKFJTRFApLCBBQ1BJIO+/vSA1LjIu NS4NCisgIC8vICAgLSBXaXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0 IGJlIG51bGwgKHplcm8pIGFuZCB0aGUNCisgIC8vICAgICBYc2R0QWRkcmVzc3MgTVVTVCBiZSBh IHZhbGlkLCBub24tbnVsbCwgNjQtYml0IHZhbHVlLg0KKyAgVUlOVDY0IFhzZHRBZGRyOw0KKyAg WHNkdEFkZHIgPSAqKFVJTlQ2NCopUHRyOw0KKyAgaWYgKFhzZHRBZGRyID09IDApIHsNCisgICAg SW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgUHJpbnQgKA0KKyAgICAgIEwiXG5FUlJPUjog WHNkdCBBZGRyZXNzID0gMHglcC4gVGhpcyBtdXN0IG5vdCBiZSBOVUxMIG9uIEFSTSBQbGF0Zm9y bXMuIiwNCisgICAgICBYc2R0QWRkcg0KKyAgICAgICk7DQorICB9DQorI2VuZGlmDQorfQ0KKw0K Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRhYmxlLg0KKyAgVGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIFJTRFAgdGFibGUgYW5kIG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBB Q1BJDQorICB0YWJsZSBmaWVsZHMuIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSBpcyBjYWxs ZWQgdG8gZGV0ZXJtaW5lIGlmDQorICB0aGUgQUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4N CisNCisgIFRoaXMgZnVuY3Rpb24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgWFNEVCB0YWJs ZS4NCisgICogTm90ZSAtIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBwYXJzaW5nIG9m IFJTRFQgdGFibGUuDQorDQorICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVt cCBvZiB0aGUgQUNQSSB0YWJsZSBhbmQNCisgIHZhbGlkYXRlcyB0aGUgY2hlY2tzdW0uDQorDQor ICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBTdWNjZXNz Lg0KKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgIFZhbGlkIFhTRFQgcG9pbnRlciBu b3QgZm91bmQuDQorKi8NCitFRklfU1RBVFVTDQorUGFyc2VSc2RwICgNCisgIElOIFVJTlQ4KiBQ dHINCisgICkNCit7DQorICBCT09MRUFOICBUcmFjZTsNCisNCisgIC8vIFRoZSBsZW5ndGggaXMg NCBieXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMjANCisgIFBhcnNlQWNwaSAoRkFMU0UsIDAsICJS U0RQIiwgUHRyLCAyNCwgUEFSU0VSX1BBUkFNUyAoUnNkcFBhcnNlcikpOw0KKw0KKyAgVHJhY2Ug PSBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zIChSU0RQX1RBQkxFX0lORk8sIFB0ciwgKlJzZHBM ZW5ndGgpOw0KKw0KKyAgaWYgKFRyYWNlKSB7DQorICAgIER1bXBSYXcgKFB0ciwgKlJzZHBMZW5n dGgpOw0KKyAgICBWZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCAqUnNkcExlbmd0aCk7DQorICB9 DQorDQorICBQYXJzZUFjcGkgKFRyYWNlLCAwLCAiUlNEUCIsIFB0ciwgKlJzZHBMZW5ndGgsIFBB UlNFUl9QQVJBTVMgKFJzZHBQYXJzZXIpKTsNCisNCisgIC8vIFRoaXMgY29kZSBjdXJyZW50bHkg c3VwcG9ydHMgcGFyc2luZyBvZiBYU0RUIHRhYmxlIG9ubHkNCisgIC8vIGFuZCBkb2VzIG5vdCBw YXJzZSB0aGUgUlNEVCB0YWJsZS4gUGxhdGZvcm1zIHByb3ZpZGUgdGhlDQorICAvLyBSU0RUIHRv IGVuYWJsZSBjb21wYXRpYmlsaXR5IHdpdGggQUNQSSAxLjAgb3BlcmF0aW5nIHN5c3RlbXMuDQor ICAvLyBUaGVyZWZvcmUgdGhlIFJTRFQgc2hvdWxkIG5vdCBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9y bXMuDQorICBpZiAoKCpYc2R0QWRkcmVzcykgPT0gMCkgew0KKyAgICBJbmNyZW1lbnRFcnJvckNv dW50ICgpOw0KKyAgICBQcmludCAoTCJFUlJPUjogWFNEVCBQb2ludGVyIGlzIG5vdCBzZXQuXG4i KTsNCisgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQorICB9DQorDQorICBQcm9jZXNzQWNwaVRh YmxlICgoVUlOVDgqKShVSU5UTikoKlhzZHRBZGRyZXNzKSk7DQorICByZXR1cm4gRUZJX1NVQ0NF U1M7DQorfQ0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1NsaXRQYXJzZXIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1NsaXRQYXJzZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZmMzNjZjZTMwYTdmMTU3 YzdlMGIzMTZlY2JmODU1OTkwZjMwYzQNCi0tLSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NsaXRQYXJzZXIuYw0KQEAgLTAsMCAr MSwxODUgQEANCisvKioNCisgIFNMSVQgdGFibGUgcGFyc2VyDQorDQorICBDb3B5cmlnaHQgKGMp IDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQor ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKw0KKyAgQHBhciBSZWZlcmVuY2Uocyk6DQorICAgIC0g QUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KKyoqLw0K Kw0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCisjaW5jbHVkZSA8TGlicmFy eS9QcmludExpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisjaW5jbHVkZSAi QWNwaVBhcnNlci5oIg0KKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KKyNpbmNsdWRlICJBY3BpVGFi bGVQYXJzZXIuaCINCisNCisvLyBMb2NhbCBWYXJpYWJsZXMNCitTVEFUSUMgQ09OU1QgVUlOVDY0 KiBTbGl0U3lzdGVtTG9jYWxpdHlDb3VudDsNCitTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFE RVJfSU5GTyBBY3BpSGRySW5mbzsNCisNCisvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgQUNQSSBTTElUIHRhYmxlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IFNsaXRQYXJzZXJbXSA9IHsNCisgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0K KyAge0wiTnVtYmVyIG9mIFN5c3RlbSBMb2NhbGl0aWVzIiwgOCwgMzYsIEwiMHglbHgiLCBOVUxM LA0KKyAgIChWT0lEKiopJlNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50LCBOVUxMLCBOVUxMfQ0KK307 DQorDQorLyoqIE1hY3JvIHRvIGdldCB0aGUgdmFsdWUgb2YgYSBTeXN0ZW0gTG9jYWxpdHkNCisq Lw0KKyNkZWZpbmUgU0xJVF9FTEVNRU5UKFB0ciwgaSwgaikgKihQdHIgKyAoaSAqIExvY2FsaXR5 Q291bnQpICsgaikNCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU0xJVCB0 YWJsZS4NCisgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg U0xJVCB0YWJsZSBhbmQNCisgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQorDQorICBU aGlzIGZ1bmN0aW9uIGFsc28gdmFsaWRhdGVzIFN5c3RlbSBMb2NhbGl0aWVzIGZvciB0aGUgZm9s bG93aW5nOg0KKyAgICAtIERpYWdvbmFsIGVsZW1lbnRzIGhhdmUgYSBub3JtYWxpemVkIHZhbHVl IG9mIDEwDQorICAgIC0gUmVsYXRpdmUgZGlzdGFuY2UgZnJvbSBTeXN0ZW0gTG9jYWxpdHkgYXQg aSpOK2ogaXMgc2FtZSBhcw0KKyAgICAgIGoqTitpDQorDQorICBAcGFyYW0gW2luXSBUcmFjZSAg ICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KKyAgQHBhcmFtIFtp bl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIu DQorICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBB Q1BJIHRhYmxlLg0KKyovDQorVk9JRA0KK0VGSUFQSQ0KK1BhcnNlQWNwaVNsaXQgKA0KKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCisgIElOIFVJTlQ4KiAgUHRyLA0KKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQorICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQorICApDQorew0KKyAg VUlOVDMyIE9mZnNldDsNCisgIFVJTlQ2NCBpOw0KKyAgVUlOVDY0IGo7DQorICBVSU5UNjQgTG9j YWxpdHlDb3VudDsNCisgIFVJTlQ4KiBMb2NhbGl0eVB0cjsNCisgIENIQVIxNiBCdWZmZXJbODBd OyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KKw0KKyAgaWYgKCFU cmFjZSkgew0KKyAgICByZXR1cm47DQorICB9DQorDQorICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0K KyAgICAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAgICAwLA0KKyAgICAgICAgICAgICAiU0xJ VCIsDQorICAgICAgICAgICAgIFB0ciwNCisgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0K KyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTbGl0UGFyc2VyKQ0KKyAgICAgICAgICAgICAp Ow0KKyAgTG9jYWxpdHlQdHIgPSBQdHIgKyBPZmZzZXQ7DQorDQorICBMb2NhbGl0eUNvdW50ID0g KlNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50Ow0KKyAgLy8gV2Ugb25seSBwcmludCB0aGUgTG9jYWxp dGllcyBpZiB0aGUgY291bnQgaXMgbGVzcyB0aGFuIDE2DQorICAvLyBJZiB0aGUgbG9jYWxpdHkg Y291bnQgaXMgbW9yZSB0aGFuIDE2IHRoZW4gcmVmZXIgdG8gdGhlDQorICAvLyByYXcgZGF0YSBk dW1wLg0KKyAgaWYgKExvY2FsaXR5Q291bnQgPCAxNikgew0KKyAgICBVbmljb2RlU1ByaW50ICgN CisgICAgICBCdWZmZXIsDQorICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KKyAgICAgIEwiRW50cnlb MHglbHhdWzB4JWx4XSIsDQorICAgICAgTG9jYWxpdHlDb3VudCwNCisgICAgICBMb2NhbGl0eUNv dW50DQorICAgICAgKTsNCisgICAgUHJpbnRGaWVsZE5hbWUgKDAsIEJ1ZmZlcik7DQorICAgIFBy aW50IChMIlxuIik7DQorICAgIFByaW50IChMIiAgICAgICAiKTsNCisgICAgZm9yIChqID0gMDsg aiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0KKyAgICAgIFByaW50IChMIiAoJTNkKSAiLCBqKTsN CisgICAgfQ0KKyAgICBQcmludCAoTCJcbiIpOw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgTG9jYWxp dHlDb3VudDsgaSsrKSB7DQorICAgICAgUHJpbnQgKEwiICglM2QpICIsIGkpOw0KKyAgICAgIGZv ciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCisgICAgICAgIFByaW50IChMIiAg JTNkICAiLCBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSk7DQorICAgICAgfQ0KKyAg ICAgIFByaW50IChMIlxuIik7DQorICAgIH0NCisgIH0NCisNCisgIC8vIFZhbGlkYXRlDQorICBm b3IgKGkgPSAwOyBpIDwgTG9jYWxpdHlDb3VudDsgaSsrKSB7DQorICAgIGZvciAoaiA9IDA7IGog PCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCisgICAgICAvLyBFbGVtZW50W3hdW3hdIG11c3QgYmUg ZXF1YWwgdG8gMTANCisgICAgICBpZiAoKGkgPT0gaikgJiYgKFNMSVRfRUxFTUVOVCAoTG9jYWxp dHlQdHIsIGksIGopICE9IDEwKSkgew0KKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsN CisgICAgICAgIFByaW50ICgNCisgICAgICAgICAgTCJFUlJPUjogRGlhZ29uYWwgRWxlbWVudFsw eCVseF1bMHglbHhdICglM2QpLiINCisgICAgICAgICAgICAiIE5vcm1hbGl6ZWQgVmFsdWUgaXMg bm90IDEwXG4iLA0KKyAgICAgICAgICBpLA0KKyAgICAgICAgICBqLA0KKyAgICAgICAgICBTTElU X0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKQ0KKyAgICAgICAgICApOw0KKyAgICAgIH0NCisg ICAgICAvLyBFbGVtZW50W2ldW2pdIG11c3QgYmUgZXF1YWwgdG8gRWxlbWVudFtqXVtpXQ0KKyAg ICAgIGlmIChTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSAhPQ0KKyAgICAgICAgICBT TElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBqLCBpKSkgew0KKyAgICAgICAgSW5jcmVtZW50RXJy b3JDb3VudCAoKTsNCisgICAgICAgIFByaW50ICgNCisgICAgICAgICAgTCJFUlJPUjogUmVsYXRp dmUgZGlzdGFuY2VzIGZvciBFbGVtZW50WzB4JWx4XVsweCVseF0gKCUzZCkgYW5kIFxuIg0KKyAg ICAgICAgICAgIkVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKSBkbyBub3QgbWF0Y2guXG4iLA0K KyAgICAgICAgICBpLA0KKyAgICAgICAgICBqLA0KKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExv Y2FsaXR5UHRyLCBpLCBqKSwNCisgICAgICAgICAgaiwNCisgICAgICAgICAgaSwNCisgICAgICAg ICAgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaiwgaSkNCisgICAgICAgICAgKTsNCisgICAg ICB9DQorICAgIH0NCisgIH0NCit9DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQor ICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQor DQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVy ZWQuDQorICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUg QUNQSSBUYWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSBy ZWdpc3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1NsaXRQYXJzZXJMaWJDb25z dHJ1Y3RvciAoDQorICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0K KyAgKQ0KK3sNCisgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQ SV82XzJfU1lTVEVNX0xPQ0FMSVRZX0lORk9STUFUSU9OX1RBQkxFX1NJR05BVFVSRSwNCisgICAg ICAgICAgIFBhcnNlQWNwaVNsaXQNCisgICAgICAgICAgICk7DQorfQ0KKw0KKy8qKiBEZXJlZ2lz dGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5k bGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRv IHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAg ICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VG SUFQSQ0KK1NsaXRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxF ICAqIENPTlNUIFN5c3RlbVRhYmxlDQorICApDQorew0KKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJz ZXIgKA0KKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NZU1RFTV9MT0NBTElUWV9JTkZPUk1BVElP Tl9UQUJMRV9TSUdOQVRVUkUNCisgICAgICAgICAgICk7DQorfQ0KZGlmZiAtLWdpdCBhL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NwY3JQYXJzZXIuYyBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1NwY3JQYXJzZXIuYw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjllZjc5Y2VjOWVjYzVkNDI0OGE2NGE0NzQxMDlkY2M4ZmFkNTE2ODANCi0t LSAvZGV2L251bGwNCisrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1NwY3JQYXJzZXIuYw0KQEAgLTAsMCArMSwyMDUgQEANCisvKioNCisgIFNQQ1IgdGFi bGUgcGFyc2VyDQorDQorICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBM SUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQorICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKw0K KyAgQHBhciBSZWZlcmVuY2Uocyk6DQorICAgIC0gTWljcm9zb2Z0IFNlcmlhbCBQb3J0IENvbnNv bGUgUmVkaXJlY3Rpb24gVGFibGUNCisgICAgICBTcGVjaWZpY2F0aW9uIC0gVmVyc2lvbiAxLjAz IC0gQXVndXN0IDEwLCAyMDE1Lg0KKyoqLw0KKw0KKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0FjcGkuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQorI2luY2x1ZGUgIkFjcGlQ YXJzZXIuaCINCisjaW5jbHVkZSAiQWNwaVZpZXcuaCINCisjaW5jbHVkZSAiQWNwaVRhYmxlUGFy c2VyLmgiDQorDQorLy8gTG9jYWwgdmFyaWFibGVzDQorU1RBVElDIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gQWNwaUhkckluZm87DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVz IHRoZSBJbnRlcnJ1cHQgVHlwZS4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQorICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCisgICAgICAg ICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRl ci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZUludGVycnVwdFR5cGUgKA0KKyAgSU4g VUlOVDgqIFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApOw0KKw0KKy8qKiBUaGlzIGZ1 bmN0aW9uIHZhbGlkYXRlcyB0aGUgSXJxLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlSXJxICgNCisgIElOIFVJTlQ4 KiBQdHIsDQorICBJTiBWT0lEKiAgQ29udGV4dA0KKyAgKTsNCisNCisvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBTUENSIFRhYmxlLg0KKyovDQorU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIFNwY3JQYXJzZXJbXSA9IHsNCisgIFBBUlNFX0FDUElfSEVBREVSICgm QWNwaUhkckluZm8pLA0KKyAge0wiSW50ZXJmYWNlIFR5cGUiLCAxLCAzNiwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2ZWQiLCAzLCAzNywgTCIleCAleCAleCIs IER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiQmFzZSBBZGRyZXNzIiwgMTIs IDQwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkludGVycnVwdCBU eXBlIiwgMSwgNTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUludGVycnVwdFR5cGUsIE5V TEx9LA0KKyAge0wiSVJRIiwgMSwgNTMsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUlycSwg TlVMTH0sDQorICB7TCJHbG9iYWwgU3lzdGVtIEludGVycnVwdCIsIDQsIDU0LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkJhdWQgUmF0ZSIsIDEsIDU4LCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJQYXJpdHkiLCAxLCA1OSwgTCIlZCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiU3RvcCBCaXRzIiwgMSwgNjAsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkZsb3cgQ29udHJvbCIsIDEsIDYxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlRlcm1pbmFsIFR5cGUiLCAxLCA2 MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2ZWQiLCAxLCA2 MywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiUENJIERldmljZSBJ RCIsIDIsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlBDSSBW ZW5kb3IgSUQiLCAyLCA2NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7 TCJQQ0kgQnVzIE51bWJlciIsIDEsIDY4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCisgIHtMIlBDSSBEZXZpY2UgTnVtYmVyIiwgMSwgNjksIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KKyAge0wiUENJIEZ1bmN0aW9uIE51bWJlciIsIDEsIDcwLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlBDSSBGbGFncyIsIDQsIDcxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlBDSSBTZWdtZW50IiwgMSwgNzUs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2ZWQiLCA0LCA3 NiwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQorfTsNCisNCisvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIEludGVycnVwdCBUeXBlLg0KKw0KKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCisgIEBwYXJhbSBb aW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4g dGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFD UEkgdGFibGUgaGVhZGVyLg0KKyovDQorU1RBVElDDQorVk9JRA0KK1ZhbGlkYXRlSW50ZXJydXB0 VHlwZSAoDQorICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVk9JRCogIENvbnRleHQNCisgICkNCit7 DQorI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQp DQorICBVSU5UOCBJbnRlcnJ1cHRUeXBlID0gKlB0cjsNCisgIGlmICg4ICE9IEludGVycnVwdFR5 cGUpIHsNCisgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCisgICAgUHJpbnQgKA0KKyAgICAg IEwiXG5FUlJPUjogSW50ZXJydXB0VHlwZSA9ICVkLiBUaGlzIG11c3QgYmUgOCBvbiBBUk0gUGxh dGZvcm1zIiwNCisgICAgICBJbnRlcnJ1cHRUeXBlDQorICAgICAgKTsNCisgIH0NCisjZW5kaWYN Cit9DQorDQorLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJcnEuDQorDQorICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K KyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3Jt YXRpb24gZS5nLiB0aGlzDQorICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRl ciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQorKi8NCitTVEFUSUMNCitWT0lEDQorVmFsaWRh dGVJcnEgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFZPSUQqICBDb250ZXh0DQorICApDQor ew0KKyNpZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0 KQ0KKyAgVUlOVDggSXJxID0gKlB0cjsNCisgIGlmIChJcnEgIT0gMCkgew0KKyAgICBJbmNyZW1l bnRFcnJvckNvdW50ICgpOw0KKyAgICBQcmludCAoDQorICAgICAgTCJcbkVSUk9SOiBJcnEgPSAl ZC4gVGhpcyBtdXN0IGJlIHplcm8gb24gQVJNIFBsYXRmb3Jtc1xuIiwNCisgICAgICBJcnENCisg ICAgICApOw0KKyAgfQ0KKyNlbmRpZg0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgU1BDUiB0YWJsZS4NCisgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0 aW9uIHBhcnNlcyB0aGUgU1BDUiB0YWJsZSBhbmQNCisgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBm aWVsZHMuDQorDQorICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbnMgb2Yg dGhlIEFDUEkgdGFibGUgZmllbGRzLg0KKw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAg ICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisg IEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJs ZS4NCisqLw0KK1ZPSUQNCitFRklBUEkNCitQYXJzZUFjcGlTcGNyICgNCisgIElOIEJPT0xFQU4g VHJhY2UsDQorICBJTiBVSU5UOCogIFB0ciwNCisgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3Ro LA0KKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KKyAgKQ0KK3sNCisgIGlmICghVHJh Y2UpIHsNCisgICAgcmV0dXJuOw0KKyAgfQ0KKw0KKyAgLy8gRHVtcCB0aGUgU1BDUg0KKyAgUGFy c2VBY3BpICgNCisgICAgVFJVRSwNCisgICAgMCwNCisgICAgIlNQQ1IiLA0KKyAgICBQdHIsDQor ICAgIEFjcGlUYWJsZUxlbmd0aCwNCisgICAgUEFSU0VSX1BBUkFNUyAoU3BjclBhcnNlcikNCisg ICAgKTsNCit9DQorDQorLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2lu XSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQorICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K KyovDQorRUZJX1NUQVRVUw0KK0VGSUFQSQ0KK1NwY3JQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQor ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4g ICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisg IHJldHVybiBSZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJfU0VSSUFM X1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUsDQorICAgICAgICAgICBQ YXJzZUFjcGlTcGNyDQorICAgICAgICAgICApOw0KK30NCisNCisvKiogRGVyZWdpc3RlciB0aGUg cGFyc2VyLg0KKw0KKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRo ZSBpbWFnZS4NCisgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lz dGVtIFRhYmxlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNl ciBpcyBkZXJlZ2lzdGVyZWQuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUg cGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCisqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitT cGNyUGFyc2VyTGliRGVzdHJ1Y3RvciAoDQorICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05T VCBTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCisg ICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RB QkxFX1NJR05BVFVSRQ0KKyAgICAgICAgICAgKTsNCit9DQpkaWZmIC0tZ2l0IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3JhdFBhcnNlci5jIGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3JhdFBhcnNlci5jDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uNTFhNDhlMzAzNTQxYjc5YTMzZGU3MzY1YjgyZGE2YTM3YzRkNGRjNg0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvU3JhdFBhcnNlci5jDQpAQCAtMCwwICsxLDM3MSBAQA0KKy8qKg0KKyAgU1JBVCB0YWJsZSBw YXJzZXINCisNCisgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQorICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl IGZvdW5kIGF0DQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQorDQorICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQorDQorICBA cGFyIFJlZmVyZW5jZShzKToNCisgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRh IEEsIFNlcHRlbWJlciAyMDE3DQorKiovDQorDQorI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQv QWNwaS5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQorI2luY2x1ZGUgPExpYnJh cnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQorI2luY2x1ZGUgIkFjcGlW aWV3LmgiDQorI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KKw0KKy8vIExvY2FsIFZhcmlh Ymxlcw0KK1NUQVRJQyBDT05TVCBVSU5UOCogU3JhdFJBVHlwZTsNCitTVEFUSUMgQ09OU1QgVUlO VDgqIFNyYXRSQUxlbmd0aDsNCitTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBB Y3BpSGRySW5mbzsNCisNCisvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJlc2VydmVk IGZpZWxkIGluIHRoZSBTUkFUIHRhYmxlIGhlYWRlci4NCisNCisgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQorICBAcGFyYW0gW2lu XSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRo aXMNCisgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGhlYWRlci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitWYWxpZGF0ZVNyYXRSZXNlcnZl ZCAoDQorICBJTiBVSU5UOCogUHRyLA0KKyAgSU4gVk9JRCogIENvbnRleHQNCisgICk7DQorDQor LyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBBUElDIFByb3hpbWl0eSBEb21haW4gZmllbGQu DQorDQorICBAcGFyYW0gW2luXSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhl IGRhdGEuDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQorKi8NCitTVEFUSUMNCitWT0lEDQorRHVtcFNyYXRBcGljUHJveGltaXR5ICgN CisgIElOICBDT05TVCBDSEFSMTYqICBGb3JtYXQsDQorICBJTiAgVUlOVDgqICAgICAgICAgUHRy DQorICApOw0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBTUkFU IFRhYmxlLg0KKyovDQorU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRQYXJzZXJbXSA9IHsN CisgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KKyAge0wiUmVzZXJ2ZWQiLCA0 LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVTcmF0UmVzZXJ2ZWQsIE5VTEx9LA0K KyAge0wiUmVzZXJ2ZWQiLCA4LCA0MCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 DQorfTsNCisNCisvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUmVzb3Vy Y2UgQWxsb2NhdGlvbg0KKyAgICBzdHJ1Y3R1cmUgaGVhZGVyLg0KKyovDQorU1RBVElDIENPTlNU IEFDUElfUEFSU0VSIFNyYXRSZXNvdXJjZUFsbG9jYXRpb25QYXJzZXJbXSA9IHsNCisgIHtMIlR5 cGUiLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZTcmF0UkFUeXBlLCBOVUxMLCBOVUxMfSwN CisgIHtMIkxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEwsIChWT0lEKiopJlNyYXRSQUxlbmd0aCwg TlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBHSUNDIEFmZmluaXR5IHN0cnVjdHVyZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBTcmF0R2ljQ0FmZmluaXR5UGFyc2VyW10gPSB7DQorICB7TCJUeXBlIiwgMSwgMCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisNCisgIHtMIlByb3hpbWl0eSBEb21haW4i LCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkFDUEkgUHJv Y2Vzc29yIFVJRCIsIDQsIDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAg e0wiRmxhZ3MiLCA0LCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7 TCJDbG9jayBEb21haW4iLCA0LCAxNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0N Cit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUMgSVRT IEFmZmluaXR5IHN0cnVjdHVyZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0 R2ljSVRTQWZmaW5pdHlQYXJzZXJbXSA9IHsNCisgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDIs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUmVzZXJ2ZWQiLCAyLCA2 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIklUUyBJZCIsIDQsIDgs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KK307DQorDQorLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1lbW9yeSBBZmZpbml0eSBzdHJ1Y3R1cmUuDQor Ki8NCitTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdE1lbUFmZmluaXR5UGFyc2VyW10gPSB7 DQorICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQor ICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisN CisgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCisgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQorICB7TCJCYXNlIEFkZHJlc3MgTG93IiwgNCwgOCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJCYXNlIEFkZHJlc3MgSGlnaCIsIDQsIDEyLCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkxlbmd0aCBMb3ciLCA0LCAxNiwg TCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJMZW5ndGggSGlnaCIsIDQs IDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlJlc2VydmVkIiwg NCwgMjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiRmxhZ3MiLCA0 LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIs IDgsIDMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBB biBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBUElDL1NBUElDIEFmZmluaXR5IHN0 cnVjdHVyZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0QXBjaVNhcGljQWZm aW5pdHlQYXJzZXJbXSA9IHsNCisgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCisgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KKw0KKyAge0wiUHJveGltaXR5IERvbWFpbiBbNzowXSIsIDEsIDIsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiQVBJQyBJRCIsIDEsIDMsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiRmxhZ3MiLCA0LCA0LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIkxvY2FsIFNBUElDIEVJRCIsIDEs IDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiUHJveGltaXR5IERv bWFpbiBbMzE6OF0iLCAzLCA5LCBMIjB4JXgiLCBEdW1wU3JhdEFwaWNQcm94aW1pdHksDQorICAg TlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJDbG9jayBEb21haW4iLCA0LCAxMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCit9Ow0KKw0KKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJh eSBkZXNjcmliaW5nIHRoZSBQcm9jZXNzb3IgTG9jYWwgeDJBUElDDQorICAgIEFmZmluaXR5IHN0 cnVjdHVyZS4NCisqLw0KK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0WDJBcGNpQWZmaW5p dHlQYXJzZXJbXSA9IHsNCisgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCisgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KKw0KKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCisgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCA0LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCisgIHtMIlgyQVBJQyBJRCIsIDQsIDgsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KKyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJDbG9jayBEb21haW4iLCA0LCAxNiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQorICB7TCJSZXNlcnZlZCIsIDQsIDIwLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KK307DQorDQorLyoqIFRoaXMgZnVuY3Rp b24gdmFsaWRhdGVzIHRoZSBSZXNlcnZlZCBmaWVsZCBpbiB0aGUgU1JBVCB0YWJsZSBoZWFkZXIu DQorDQorICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQorICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQorKi8NCitTVEFUSUMNCitW T0lEDQorVmFsaWRhdGVTcmF0UmVzZXJ2ZWQgKA0KKyAgSU4gVUlOVDgqIFB0ciwNCisgIElOIFZP SUQqICBDb250ZXh0DQorICApDQorew0KKyAgaWYgKDEgIT0gKihVSU5UMzIqKVB0cikgew0KKyAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KKyAgICBQcmludCAoTCJcbkVSUk9SOiBSZXNlcnZl ZCBzaG91bGQgYmUgMSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiIpOw0KKyAgfQ0KK30N CisNCisvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBm aWVsZC4NCisNCisgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBmb3IgdHJhY2lu ZyB0aGUgZGF0YS4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCisqLw0KK1NUQVRJQw0KK1ZPSUQNCitEdW1wU3JhdEFwaWNQcm94aW1p dHkgKA0KKyBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCwNCisgSU4gVUlOVDgqICAgICAgICBQdHIN CisgKQ0KK3sNCisgIFVJTlQzMiBQcm94aW1pdHlEb21haW4gPSBQdHJbMF0gfCAoUHRyWzFdIDw8 IDgpIHwgKFB0clsyXSA8PCAxNik7DQorICBQcmludCAoRm9ybWF0LCBQcm94aW1pdHlEb21haW4p Ow0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1JBVCB0YWJsZS4N CisgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1JBVCB0 YWJsZSBhbmQNCisgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQorDQorICBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgZm9sbG93aW5nIFJlc291cmNlIEFsbG9jYXRpb24gU3RydWN0dXJl czoNCisgICAgLSBQcm9jZXNzb3IgTG9jYWwgQVBJQy9TQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUN CisgICAgLSBNZW1vcnkgQWZmaW5pdHkgU3RydWN0dXJlDQorICAgIC0gUHJvY2Vzc29yIExvY2Fs IHgyQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCisgICAgLSBHSUNDIEFmZmluaXR5IFN0cnVjdHVy ZQ0KKw0KKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KKw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElm IFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCisq Lw0KK1ZPSUQNCitFRklBUEkNCitQYXJzZUFjcGlTcmF0ICgNCisgIElOIEJPT0xFQU4gVHJhY2Us DQorICBJTiBVSU5UOCogIFB0ciwNCisgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KKyAg SU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KKyAgKQ0KK3sNCisgIFVJTlQzMiBPZmZzZXQ7 DQorICBVSU5UOCogUmVzb3VyY2VQdHI7DQorICBVSU5UMzIgR2ljQ0FmZmluaXR5SW5kZXggPSAw Ow0KKyAgVUlOVDMyIEdpY0lUU0FmZmluaXR5SW5kZXggPSAwOw0KKyAgVUlOVDMyIE1lbW9yeUFm ZmluaXR5SW5kZXggPSAwOw0KKyAgVUlOVDMyIEFwaWNTYXBpY0FmZmluaXR5SW5kZXggPSAwOw0K KyAgVUlOVDMyIFgyQXBpY0FmZmluaXR5SW5kZXggPSAwOw0KKyAgQ0hBUjggIEJ1ZmZlcls4MF07 ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQorDQorICBpZiAoIVRy YWNlKSB7DQorICAgIHJldHVybjsNCisgIH0NCisNCisgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQor ICAgICAgICAgICAgIFRSVUUsDQorICAgICAgICAgICAgIDAsDQorICAgICAgICAgICAgICJTUkFU IiwNCisgICAgICAgICAgICAgUHRyLA0KKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQor ICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRQYXJzZXIpDQorICAgICAgICAgICAgICk7 DQorICBSZXNvdXJjZVB0ciA9IFB0ciArIE9mZnNldDsNCisNCisgIHdoaWxlIChPZmZzZXQgPCBB Y3BpVGFibGVMZW5ndGgpIHsNCisgICAgUGFyc2VBY3BpICgNCisgICAgICBGQUxTRSwNCisgICAg ICAwLA0KKyAgICAgIE5VTEwsDQorICAgICAgUmVzb3VyY2VQdHIsDQorICAgICAgMiwgIC8vIFRo ZSBsZW5ndGggaXMgMSBieXRlIGF0IG9mZnNldCAxDQorICAgICAgUEFSU0VSX1BBUkFNUyAoU3Jh dFJlc291cmNlQWxsb2NhdGlvblBhcnNlcikNCisgICAgICApOw0KKw0KKyAgICBzd2l0Y2ggKCpT cmF0UkFUeXBlKSB7DQorICAgICAgY2FzZSBFRklfQUNQSV82XzJfR0lDQ19BRkZJTklUWToNCisg ICAgICAgIEFzY2lpU1ByaW50ICgNCisgICAgICAgICAgQnVmZmVyLA0KKyAgICAgICAgICBzaXpl b2YgKEJ1ZmZlciksDQorICAgICAgICAgICJHSUNDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwN CisgICAgICAgICAgR2ljQ0FmZmluaXR5SW5kZXgrKw0KKyAgICAgICAgICApOw0KKyAgICAgICAg UGFyc2VBY3BpICgNCisgICAgICAgICAgVFJVRSwNCisgICAgICAgICAgMiwNCisgICAgICAgICAg QnVmZmVyLA0KKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCisgICAgICAgICAgKlNyYXRSQUxlbmd0 aCwNCisgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0NBZmZpbml0eVBhcnNlcikNCisg ICAgICAgICAgKTsNCisgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgIGNhc2UgRUZJX0FDUElfNl8y X0dJQ19JVFNfQUZGSU5JVFk6DQorICAgICAgICBBc2NpaVNQcmludCAoDQorICAgICAgICAgIEJ1 ZmZlciwNCisgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KKyAgICAgICAgICAiR0lDIElUUyBB ZmZpbml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQorICAgICAgICAgIEdpY0lUU0FmZmluaXR5SW5kZXgr Kw0KKyAgICAgICAgKTsNCisgICAgICAgIFBhcnNlQWNwaSAoDQorICAgICAgICAgIFRSVUUsDQor ICAgICAgICAgIDIsDQorICAgICAgICAgIEJ1ZmZlciwNCisgICAgICAgICAgUmVzb3VyY2VQdHIs DQorICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQorICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNy YXRHaWNJVFNBZmZpbml0eVBhcnNlcikNCisgICAgICAgICk7DQorICAgICAgICBicmVhazsNCisN CisgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9NRU1PUllfQUZGSU5JVFk6DQorICAgICAgICBBc2Np aVNQcmludCAoDQorICAgICAgICAgIEJ1ZmZlciwNCisgICAgICAgICAgc2l6ZW9mIChCdWZmZXIp LA0KKyAgICAgICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCisgICAgICAg ICAgTWVtb3J5QWZmaW5pdHlJbmRleCsrDQorICAgICAgICAgICk7DQorICAgICAgICBQYXJzZUFj cGkgKA0KKyAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAyLA0KKyAgICAgICAgICBCdWZmZXIs DQorICAgICAgICAgIFJlc291cmNlUHRyLA0KKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KKyAg ICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0TWVtQWZmaW5pdHlQYXJzZXIpDQorICAgICAgICAg ICk7DQorICAgICAgICBicmVhazsNCisNCisgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNT T1JfTE9DQUxfQVBJQ19TQVBJQ19BRkZJTklUWToNCisgICAgICAgIEFzY2lpU1ByaW50ICgNCisg ICAgICAgICAgQnVmZmVyLA0KKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQorICAgICAgICAg ICJBUElDL1NBUElDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCisgICAgICAgICAgQXBpY1Nh cGljQWZmaW5pdHlJbmRleCsrDQorICAgICAgICAgICk7DQorICAgICAgICBQYXJzZUFjcGkgKA0K KyAgICAgICAgICBUUlVFLA0KKyAgICAgICAgICAyLA0KKyAgICAgICAgICBCdWZmZXIsDQorICAg ICAgICAgIFJlc291cmNlUHRyLA0KKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KKyAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChTcmF0QXBjaVNhcGljQWZmaW5pdHlQYXJzZXIpDQorICAgICAgICAg ICk7DQorICAgICAgICBicmVhazsNCisNCisgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNT T1JfTE9DQUxfWDJBUElDX0FGRklOSVRZOg0KKyAgICAgICAgQXNjaWlTUHJpbnQgKA0KKyAgICAg ICAgICBCdWZmZXIsDQorICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCisgICAgICAgICAgIlgy QVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUgWyVkXSIsDQorICAgICAgICAgIFgyQXBpY0FmZmluaXR5 SW5kZXgrKw0KKyAgICAgICAgICApOw0KKyAgICAgICAgUGFyc2VBY3BpICgNCisgICAgICAgICAg VFJVRSwNCisgICAgICAgICAgMiwNCisgICAgICAgICAgQnVmZmVyLA0KKyAgICAgICAgICBSZXNv dXJjZVB0ciwNCisgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCisgICAgICAgICAgUEFSU0VSX1BB UkFNUyAoU3JhdFgyQXBjaUFmZmluaXR5UGFyc2VyKQ0KKyAgICAgICAgICApOw0KKyAgICAgICAg YnJlYWs7DQorDQorICAgICAgZGVmYXVsdDoNCisgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQorICAgICAgICBQcmludCAoTCJFUlJPUjogVW5rbm93biBTUkFUIEFmZmluaXR5IHR5cGVc biIpOw0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAgUmVzb3VyY2VQdHIgKz0gKCpT cmF0UkFMZW5ndGgpOw0KKyAgICBPZmZzZXQgKz0gKCpTcmF0UkFMZW5ndGgpOw0KKyAgfQ0KK30N CisNCisvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCisNCisgIEBwYXJhbSBbaW5dICBJbWFnZUhh bmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQorICBAcGFyYW0gW2luXSAgU3lzdGVtVGFi bGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCisgIEByZXR2YWwgRUZJX0FM UkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQorKi8NCitFRklf U1RBVFVTDQorRUZJQVBJDQorU3JhdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCisgIElOIENPTlNU IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQorICBJTiAgICAgICBFRklf U1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQorICApDQorew0KKyAgcmV0dXJuIFJl Z2lzdGVyUGFyc2VyICgNCisgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9TWVNURU1fUkVTT1VSQ0Vf QUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFLA0KKyAgICAgICAgICAgUGFyc2VBY3BpU3JhdA0KKyAg ICAgICAgICAgKTsNCit9DQorDQorLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCisNCisgIEBw YXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQorICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCisNCisg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVk Lg0KKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJl Z2lzdGVyZWQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorU3JhdFBhcnNlckxpYkRlc3Ry dWN0b3IgKA0KKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRs ZSwNCisgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCisg ICkNCit7DQorICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQorICAgICAgICAgICBFRklfQUNQ SV82XzJfU1lTVEVNX1JFU09VUkNFX0FGRklOSVRZX1RBQkxFX1NJR05BVFVSRQ0KKyAgICAgICAg ICAgKTsNCit9DQpkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM0ZDg3NjIwMWUxYjE3 MWQ2OWI3NmUwYzI5OTFhMzhkNDE1MjI0OA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvU3NkdFBhcnNlci5jDQpAQCAtMCww ICsxLDkwIEBADQorLyoqDQorICBTU0RUIHRhYmxlIHBhcnNlcg0KKw0KKyAgQ29weXJpZ2h0IChj KSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEIExpY2Vuc2UNCisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCisgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisNCisgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0K KyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisNCisgIEBwYXIgUmVmZXJlbmNlKHMpOg0KKyAgICAt IEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCisqKi8N CisNCisjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQorI2luY2x1ZGUgPExpYnJh cnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlICJBY3BpUGFyc2VyLmgiDQorI2luY2x1ZGUgIkFjcGlW aWV3LmgiDQorI2luY2x1ZGUgIkFjcGlUYWJsZVBhcnNlci5oIg0KKw0KKy8qKiBUaGlzIGZ1bmN0 aW9uIHBhcnNlcyB0aGUgQUNQSSBTU0RUIHRhYmxlLg0KKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVk IHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTU0RUIHRhYmxlIGFuZA0KKyAgdHJhY2VzIHRoZSBB Q1BJIHRhYmxlIGZpZWxkcy4NCisgIEZvciB0aGUgU1NEVCB0YWJsZSBvbmx5IHRoZSBBQ1BJIGhl YWRlciBmaWVsZHMgYXJlDQorICBwYXJzZWQgYW5kIHRyYWNlZC4NCisNCisgIEBwYXJhbSBbaW5d IFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQorICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCisgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhl IEFDUEkgdGFibGUuDQorICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24g b2YgdGhlIEFDUEkgdGFibGUuDQorKi8NCitWT0lEDQorRUZJQVBJDQorUGFyc2VBY3BpU3NkdCAo DQorICBJTiBCT09MRUFOIFRyYWNlLA0KKyAgSU4gVUlOVDgqICBQdHIsDQorICBJTiBVSU5UMzIg IEFjcGlUYWJsZUxlbmd0aCwNCisgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCisgICkN Cit7DQorICBpZiAoIVRyYWNlKSB7DQorICAgIHJldHVybjsNCisgIH0NCisNCisgIER1bXBBY3Bp SGVhZGVyIChQdHIpOw0KK30NCisNCisvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCisNCisgIEBw YXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQorICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCisNCisg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4N CisgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJ IFRhYmxlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5IHJlZ2lz dGVyZWQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorU3NkdFBhcnNlckxpYkNvbnN0cnVj dG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQorICAp DQorew0KKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCisgICAgICAgICAgIEVGSV9BQ1BJXzZf Ml9TRUNPTkRBUllfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCisgICAgICAg ICAgIFBhcnNlQWNwaVNzZHQNCisgICAgICAgICAgICk7DQorfQ0KKw0KKy8qKiBEZXJlZ2lzdGVy IHRoZSBwYXJzZXIuDQorDQorICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUg dG8gdGhlIGltYWdlLg0KKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRo ZSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUg cGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAg IFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KKyovDQorRUZJX1NUQVRVUw0KK0VGSUFQ SQ0KK1NzZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAq IENPTlNUIFN5c3RlbVRhYmxlDQorICApDQorew0KKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIg KA0KKyAgICAgICAgICAgRUZJX0FDUElfNl8yX1NFQ09OREFSWV9TWVNURU1fREVTQ1JJUFRJT05f VEFCTEVfU0lHTkFUVVJFDQorICAgICAgICAgICApOw0KK30NCmRpZmYgLS1naXQgYS9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzczNjI3NDllZDI0 ZmIwNmNkYTk2Yjc2Mzc4NGQwOWNlMWJhODViOA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliLmMNCkBAIC0wLDAgKzEsMTA2IEBADQorLyoqDQorICBNYWluIGZpbGUgZm9yICdh Y3BpdmlldycgU2hlbGwgY29tbWFuZCBmdW5jdGlvbi4NCisNCisgIENvcHlyaWdodCAoYykgMjAx NiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCisgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KKw0KKyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQor ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKyoqLw0KKw0KKyNpbmNsdWRlIDxHdWlkL1NoZWxsTGli SGlpR3VpZC5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJy YXJ5L1NoZWxsQ29tbWFuZExpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisj aW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCisjaW5jbHVkZSA8 VWVmaS5oPg0KKyNpbmNsdWRlICJVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuaCINCisjaW5j bHVkZSAiQWNwaVZpZXcuaCINCisNCitDT05TVCBDSEFSMTYgZ1NoZWxsQWNwaVZpZXdGaWxlTmFt ZVtdID0gTCJTaGVsbENvbW1hbmQiOw0KKw0KKy8qKg0KKyAgUmV0dXJuIHRoZSBmaWxlIG5hbWUg b2YgdGhlIGhlbHAgdGV4dCBmaWxlIGlmIG5vdCB1c2luZyBISUkuDQorDQorICBAcmV0dXJuIFRo ZSBzdHJpbmcgcG9pbnRlciB0byB0aGUgZmlsZSBuYW1lLg0KKyovDQorQ09OU1QgQ0hBUjE2Kg0K K0VGSUFQSQ0KK1NoZWxsQ29tbWFuZEdldE1hbkZpbGVOYW1lQWNwaVZpZXcgKA0KKyAgVk9JRA0K KyAgKQ0KK3sNCisgIHJldHVybiBnU2hlbGxBY3BpVmlld0ZpbGVOYW1lOw0KK30NCisNCisvKioN CisgIENvbnN0cnVjdG9yIGZvciB0aGUgU2hlbGwgQWNwaVZpZXcgQ29tbWFuZCBsaWJyYXJ5Lg0K Kw0KKyAgSW5zdGFsbCB0aGUgaGFuZGxlcnMgZm9yIGFjcGl2aWV3IFVFRkkgU2hlbGwgY29tbWFu ZC4NCisNCisgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUg b2YgdGhlIHByb2Nlc3MuDQorICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAgICAgICBUaGUgRUZJ IFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIFNoZWxsIGNvbW1hbmQgaGFuZGxlcnMgd2VyZSBpbnN0YWxsZWQNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgRUZJX0RFVklD RV9FUlJPUiAgICAgIEhpaSBwYWNrYWdlIGZhaWxlZCB0byBpbnN0YWxsLg0KKyovDQorRUZJX1NU QVRVUw0KK0VGSUFQSQ0KK1NoZWxsQWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3IgKA0KKyAg SU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQorICBJTiBFRklfU1lTVEVNX1RBQkxF ICAqU3lzdGVtVGFibGUNCisgICkNCit7DQorICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5V TEw7DQorDQorICAvLyBDaGVjayBTaGVsbCBQcm9maWxlIERlYnVnMSBiaXQgb2YgdGhlIHByb2Zp bGVzIG1hc2sNCisgIGlmICgoRml4ZWRQY2RHZXQ4IChQY2RTaGVsbFByb2ZpbGVNYXNrKSAmIEJJ VDEpID09IDApIHsNCisgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgfQ0KKw0KKyAgZ1NoZWxs QWNwaVZpZXdIaWlIYW5kbGUgPSBIaWlBZGRQYWNrYWdlcyAoDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmdTaGVsbEFjcGlWaWV3SGlpR3VpZCwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnSW1hZ2VIYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliU3RyaW5ncywNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgIGlm IChnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9PSBOVUxMKSB7DQorICAgIHJldHVybiBFRklfREVW SUNFX0VSUk9SOw0KKyAgfQ0KKyAgLy8gSW5zdGFsbCBvdXIgU2hlbGwgY29tbWFuZCBoYW5kbGVy DQorICBTaGVsbENvbW1hbmRSZWdpc3RlckNvbW1hbmROYW1lICgNCisgICAgTCJhY3BpdmlldyIs DQorICAgIFNoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3LA0KKyAgICBTaGVsbENvbW1hbmRHZXRNYW5G aWxlTmFtZUFjcGlWaWV3LA0KKyAgICAwLA0KKyAgICBMImFjcGl2aWV3IiwNCisgICAgVFJVRSwN CisgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQorICAgIFNUUklOR19UT0tFTiAoU1RSX0dF VF9IRUxQX0FDUElWSUVXKQ0KKyAgICApOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30N CisNCisvKioNCisgIERlc3RydWN0b3IgZm9yIHRoZSBsaWJyYXJ5LiBmcmVlIGFueSByZXNvdXJj ZXMuDQorDQorICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgICAgICAgICBUaGUgaW1hZ2UgaGFuZGxl IG9mIHRoZSBwcm9jZXNzLg0KKyAgQHBhcmFtIFN5c3RlbVRhYmxlICAgICAgICAgICAgVGhlIEVG SSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCisqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitTaGVs bEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3IgKA0KKyAgSU4gRUZJX0hBTkRMRSAgICAgICAg SW1hZ2VIYW5kbGUsDQorICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCisgICkN Cit7DQorICBpZiAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgIT0gTlVMTCkgew0KKyAgICBIaWlS ZW1vdmVQYWNrYWdlcyAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUpOw0KKyAgfQ0KKyAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KK30NCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9Yc2R0UGFyc2VyLmMgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Yc2R0UGFyc2VyLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDlhZjVk MjcxZTM3NjVjZjMzNjI0N2VhODg5YmVmNGFkNWE1NmM0DQotLS0gL2Rldi9udWxsDQorKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Yc2R0UGFyc2VyLmMN CkBAIC0wLDAgKzEsMTk1IEBADQorLyoqDQorICBYU0RUIHRhYmxlIHBhcnNlcg0KKw0KKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQorICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUgQlNEIExpY2Vuc2UNCisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCisgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisNCisgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi IEJBU0lTLA0KKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisNCisgIEBwYXIgUmVmZXJlbmNlKHMp Og0KKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIw MTcNCisqKi8NCisNCisjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQorI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQor I2luY2x1ZGUgIkFjcGlQYXJzZXIuaCINCisjaW5jbHVkZSAiQWNwaVZpZXcuaCINCisjaW5jbHVk ZSAiQWNwaVRhYmxlUGFyc2VyLmgiDQorDQorLy8gTG9jYWwgdmFyaWFibGVzDQorU1RBVElDIEFD UElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQorDQorLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgWFNEVCB0YWJsZS4NCisqLw0KK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBYc2R0UGFyc2VyW10gPSB7DQorICBQQVJTRV9BQ1BJX0hFQURF UiAoJkFjcGlIZHJJbmZvKQ0KK307DQorDQorQ09OU1QgQUNQSV9ERVNDUklQVElPTl9IRUFERVJf SU5GTyogQ09OU1QNCitHZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KKyAgVk9JRA0KKykNCit7DQor ICByZXR1cm4gJkFjcGlIZHJJbmZvOw0KK30NCisNCisvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgWFNEVCB0YWJsZQ0KKyAgYW5kIG9wdGlvbmFsbHkgdHJhY2VzIHRoZSBBQ1BJIHRh YmxlIGZpZWxkcy4NCisNCisgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9u IG9mIHRoZSBYU0RUIHRhYmxlLg0KKw0KKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAg IElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCisgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KKyAgQHBhcmFt IFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCisgIEBw YXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4N CisqLw0KK1ZPSUQNCitFRklBUEkNCitQYXJzZUFjcGlYc2R0ICgNCisgIElOIEJPT0xFQU4gVHJh Y2UsDQorICBJTiBVSU5UOCogIFB0ciwNCisgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0K KyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KKyAgKQ0KK3sNCisgIFVJTlQzMiAgICAg ICAgT2Zmc2V0Ow0KKyAgVUlOVDMyICAgICAgICBUYWJsZU9mZnNldDsNCisgIFVJTlQ2NCogICAg ICAgVGFibGVQb2ludGVyOw0KKyAgVUlOVE4gICAgICAgICBFbnRyeUluZGV4Ow0KKyAgQ0hBUjE2 ICAgICAgICBCdWZmZXJbMzJdOw0KKw0KKyAgLy8gUGFyc2UgdGhlIEFDUEkgaGVhZGVyIHRvIGdl dCB0aGUgbGVuZ3RoDQorICBQYXJzZUFjcGkgKA0KKyAgICBGQUxTRSwNCisgICAgMCwNCisgICAg IlhTRFQiLA0KKyAgICBQdHIsDQorICAgIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCwN CisgICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBhcnNlcikNCisgICAgKTsNCisNCisgIE9mZnNldCA9 IFBhcnNlQWNwaSAoDQorICAgICAgICAgICAgIFRyYWNlLA0KKyAgICAgICAgICAgICAwLA0KKyAg ICAgICAgICAgICAiWFNEVCIsDQorICAgICAgICAgICAgIFB0ciwNCisgICAgICAgICAgICAgKkFj cGlIZHJJbmZvLkxlbmd0aCwNCisgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBhcnNl cikNCisgICAgICAgICAgICAgKTsNCisNCisgIFRhYmxlT2Zmc2V0ID0gT2Zmc2V0Ow0KKw0KKyAg aWYgKFRyYWNlKSB7DQorICAgIEVudHJ5SW5kZXggPTA7DQorICAgIFRhYmxlUG9pbnRlciA9IChV SU5UNjQqKShQdHIgKyBUYWJsZU9mZnNldCk7DQorICAgIHdoaWxlIChPZmZzZXQgPCAoKkFjcGlI ZHJJbmZvLkxlbmd0aCkpIHsNCisgICAgICBDT05TVCBVSU5UMzIqIFNpZ25hdHVyZTsNCisgICAg ICBDT05TVCBVSU5UMzIqIExlbmd0aDsNCisgICAgICBDT05TVCBVSU5UOCogIFJldmlzaW9uOw0K Kw0KKyAgICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpICE9IE5VTEwpIHsN CisgICAgICAgIFVJTlQ4KiAgICAgIFB0cjsNCisNCisgICAgICAgIFBhcnNlQWNwaUhlYWRlciAo DQorICAgICAgICAgIChVSU5UOCopKFVJTlROKSgqVGFibGVQb2ludGVyKSwNCisgICAgICAgICAg JlNpZ25hdHVyZSwNCisgICAgICAgICAgJkxlbmd0aCwNCisgICAgICAgICAgJlJldmlzaW9uDQor ICAgICAgICAgICk7DQorDQorICAgICAgICBQdHIgPSAoVUlOVDgqKVNpZ25hdHVyZTsNCisNCisg ICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KKyAgICAgICAgICBCdWZmZXIsDQorICAgICAgICAgIHNp emVvZiAoQnVmZmVyKSwNCisgICAgICAgICAgTCJFbnRyeVslZF0gLSAlYyVjJWMlYyIsDQorICAg ICAgICAgIEVudHJ5SW5kZXgrKywNCisgICAgICAgICAgUHRyWzBdLA0KKyAgICAgICAgICBQdHJb MV0sDQorICAgICAgICAgIFB0clsyXSwNCisgICAgICAgICAgUHRyWzNdDQorICAgICAgICAgICk7 DQorICAgICAgfSBlbHNlIHsNCisgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KKyAgICAgICAgICBC dWZmZXIsDQorICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCisgICAgICAgICAgTCJFbnRyeVsl ZF0iLA0KKyAgICAgICAgICBFbnRyeUluZGV4KysNCisgICAgICAgICAgKTsNCisgICAgICB9DQor DQorICAgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEJ1ZmZlcik7DQorICAgICAgUHJpbnQgKEwiMHgl bHhcbiIsICpUYWJsZVBvaW50ZXIpOw0KKw0KKyAgICAgIC8vIFZhbGlkYXRlIHRoZSB0YWJsZSBw b2ludGVycyBhcmUgbm90IE5VTEwNCisgICAgICBpZiAoKFVJTlQ2NCopKFVJTlROKSgqVGFibGVQ b2ludGVyKSA9PSBOVUxMKSB7DQorICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KKyAg ICAgICAgUHJpbnQgKA0KKyAgICAgICAgICBMIkVSUk9SOiBJbnZhbGlkIHRhYmxlIGVudHJ5IGF0 IDB4JWx4LCB0YWJsZSBhZGRyZXNzIGlzIDB4JWx4XG4iLA0KKyAgICAgICAgICBUYWJsZVBvaW50 ZXIsDQorICAgICAgICAgICpUYWJsZVBvaW50ZXINCisgICAgICAgICAgKTsNCisgICAgICB9DQor ICAgICAgT2Zmc2V0ICs9IHNpemVvZiAoVUlOVDY0KTsNCisgICAgICBUYWJsZVBvaW50ZXIrKzsN CisgICAgfSAvLyB3aGlsZQ0KKyAgfQ0KKw0KKyAgLy8gUHJvY2VzcyB0aGUgdGFibGVzDQorICBP ZmZzZXQgPSBUYWJsZU9mZnNldDsNCisgIFRhYmxlUG9pbnRlciA9IChVSU5UNjQqKShQdHIgKyBU YWJsZU9mZnNldCk7DQorICB3aGlsZSAoT2Zmc2V0IDwgKCpBY3BpSGRySW5mby5MZW5ndGgpKSB7 DQorICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpICE9IE5VTEwpIHsNCisg ICAgICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlRhYmxlUG9pbnRlcikpOw0K KyAgICB9DQorICAgIE9mZnNldCArPSBzaXplb2YgKFVJTlQ2NCk7DQorICAgIFRhYmxlUG9pbnRl cisrOw0KKyAgfSAvLyB3aGlsZQ0KK30NCisNCisvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCisN CisgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQor ICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4N CisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0 ZXJlZC4NCisgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRo ZSBBQ1BJIFRhYmxlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHJlYWR5 IHJlZ2lzdGVyZWQuDQorKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorWHNkdFBhcnNlckxpYkNv bnN0cnVjdG9yICgNCisgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VI YW5kbGUsDQorICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQorICApDQorew0KKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCisgICAgICAgICAgIEVGSV9B Q1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KKyAg ICAgICAgICAgUGFyc2VBY3BpWHNkdA0KKyAgICAgICAgICAgKTsNCit9DQorDQorLyoqIERlcmVn aXN0ZXIgdGhlIHBhcnNlci4NCisNCisgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhh bmRsZSB0byB0aGUgaW1hZ2UuDQorICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIg dG8gdGhlIFN5c3RlbSBUYWJsZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAg ICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQorKi8NCitFRklfU1RBVFVTDQor RUZJQVBJDQorWHNkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KKyAgSU4gQ09OU1QgRUZJX0hBTkRM RSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCisgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCisgICkNCit7DQorICByZXR1cm4gRGVyZWdpc3RlclBh cnNlciAoDQorICAgICAgICAgICBFRklfQUNQSV82XzJfRVhURU5ERURfU1lTVEVNX0RFU0NSSVBU SU9OX1RBQkxFX1NJR05BVFVSRQ0KKyAgICAgICAgICAgKTsNCit9DQpkaWZmIC0tZ2l0IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliLnVuaSBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51bmkNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzRk NjZlMWZmNTA3MDU0ZDRhYTQyYmQ0N2JmYWU4ODI0YzIxOGU2DQotLS0gL2Rldi9udWxsDQorKysg Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIudW5pDQpAQCAtMCwwICsxLDEyNyBAQA0KKy8vIC8qKg0KKy8vDQor Ly8gQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KKy8vIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCisvLyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCisvLyB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91 bmQgYXQNCisvLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw DQorLy8NCisvLyBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIiBCQVNJUywNCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKy8vDQor Ly8gTW9kdWxlIE5hbWU6DQorLy8NCisvLyBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5p DQorLy8NCisvLyBBYnN0cmFjdDoNCisvLw0KKy8vIFN0cmluZyBkZWZpbml0aW9ucyBmb3IgVUVG SSBTaGVsbCBhY3BpdmlldyBjb21tYW5kDQorLy8NCisvLw0KKy8vICovDQorDQorLz0jDQorDQor I2xhbmdkZWYgICBlbi1VUyAiZW5nbGlzaCINCisNCisjc3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAg ICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IFVua25vd24gZmxhZyAtICclSCVzJU4n XHJcbiINCisjc3RyaW5nIFNUUl9HRU5fTk9fVkFMVUUgICAgICAgICAgI2xhbmd1YWdlIGVuLVVT ICIlSCVzJU46IE1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgLSAnJUglcyVOJ1xyXG4iDQorI3N0 cmluZyBTVFJfR0VOX1RPT19NQU5ZICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBU b28gbWFueSBhcmd1bWVudHMuXHJcbiINCisjc3RyaW5nIFNUUl9HRU5fTUlTU0lOR19PUFRJT04g ICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46IE1pc3Npbmcgb3B0aW9uICclSCVzJU4nIHJlcXVp cmVkIGJ5IGZsYWcgLSAnJUglcyVOJ1xyXG4iDQorI3N0cmluZyBTVFJfR0VOX1JFQURPTkxZX01F RElBICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVOOiBVbmFibGUgdG8gd3JpdGUgdG8gdGhlIGN1 cnJlbnQgZGlyZWN0b3J5LCBjaGVjayBpZiBtZWRpYSBpcyB3cml0YWJsZS5cclxuIg0KKw0KKyNz dHJpbmcgU1RSX0dFVF9IRUxQX0FDUElWSUVXICAgI2xhbmd1YWdlIGVuLVVTICIiDQorIi5USCBh Y3BpdmlldyAwICJEaXNwbGF5IEFDUEkgaW5mb3JtYXRpb24uIlxyXG4iDQorIi5TSCBOQU1FXHJc biINCisiRGlzcGxheSBBQ1BJIFRhYmxlIGluZm9ybWF0aW9uLlxyXG4iDQorIi5TSCBTWU5PUFNJ U1xyXG4iDQorIiBcclxuIg0KKyJBQ1BJVklFVyBbWy0/XSB8IFtbLWxdIHwgWy1zIEFjcGlUYWJs ZSBbLWRdXV0gWy1jXSBbLXZdIFstaCBIaWdobGlnaHRdXVxyXG4iDQorIiBcclxuIg0KKyIuU0gg T1BUSU9OU1xyXG4iDQorIiBcclxuIg0KKyIgIC1sIC0gRGlzcGxheSBsaXN0IG9mIGluc3RhbGxl ZCBBQ1BJIFRhYmxlcy5cclxuIg0KKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBzcGVjaWZpZWQg QWNwaVRhYmxlIHR5cGUuXHJcbiINCisiICAgICAgICAgQWNwaVRhYmxlICAgIDogVGhlIHJlcXVp cmVkIEFDUEkgVGFibGUgdHlwZS5cclxuIg0KKyIgIC1kIC0gR2VuZXJhdGUgYSBiaW5hcnkgZmls ZSBkdW1wIG9mIHRoZSBzcGVjaWZpZWQgQWNwaVRhYmxlLlxyXG4iDQorIiAgLWMgLSBDb25zaXN0 ZW5jeSBjaGVja2luZyAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KKyIgIC12IC0gRGlzcGxh eSB2ZXJib3NlIGRhdGEgKGVuYWJsZWQgYnkgZGVmYXVsdCkuXHJcbiINCisiICAtaCAtIEVuYWJs ZS9EaXNhYmxlIENvbG91ciBIaWdobGlnaHRpbmcuXHJcbiINCisiICAgICAgICAgSGlnaGxpZ2h0 ICAgIDogVFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdodGluZztcclxuIg0KKyIgICAgICAgICAgICAg ICAgICAgICAgICBGQUxTRS9PRkYgKGRlZmF1bHQpIGRpc2FibGVzIGhpZ2hsaWdodGluZy5cclxu Ig0KKyIgIC0/IC0gU2hvdyBoZWxwLlxyXG4iDQorIiBcclxuIg0KKyIuU0ggREVTQ1JJUFRJT05c clxuIg0KKyIgXHJcbiINCisiICBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhh bWluYXRpb24gb2YgQUNQSSB0YWJsZSB2YWx1ZXMgZnJvbSB0aGVcclxuIg0KKyIgIFVFRkkgU2hl bGwuICBUaGlzIGNhbiBoZWxwIHdpdGggaW52ZXN0aWdhdGlvbnMsIGVzcGVjaWFsbHkgYXQgdGhh dCBzdGFnZSB3aGVyZVxyXG4iDQorIiAgdGhlIHRhYmxlcyBhcmUgbm90IGVuYWJsaW5nIGFuIE9T IHRvIGJvb3QuXHJcbiINCisiICBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwgYW5kIG9u bHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkIGtub3dsZWRnZSBvZiBhXHJcbiINCisiICBsaW1pdGVk IG51bWJlciBvZiB0YWJsZSB0eXBlcy5cclxuIg0KKyIgXHJcbiINCisiICBEZWZhdWx0IGJlaGF2 aW91ciBpcyB0byBkaXNwbGF5IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxy XG4iDQorIiAgJ0tub3duJyB0YWJsZSB0eXBlcyAobGlzdGVkIGluIE5PVEVTIGJlbG93KSB3aWxs IGJlIHBhcnNlZCBhbmQgZGlzcGxheWVkXHJcbiINCisiICB3aXRoIGRlc2NyaXB0aW9ucyBhbmQg ZmllbGQgdmFsdWVzLiAgV2hlcmUgYXBwcm9wcmlhdGUgYSBkZWdyZWUgb2YgY29uc2lzdGVuY3lc clxuIg0KKyIgIGNoZWNraW5nIGlzIGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQgaW4g dGhlIG91dHB1dC5cclxuIg0KKyIgIE90aGVyIHRhYmxlIHR5cGVzIHdpbGwgYmUgZGlzcGxheWVk IGFzIGFuIGFycmF5IG9mIEhleGFkZWNpbWFsIGJ5dGVzLlxyXG4iDQorIiBcclxuIg0KKyIgIFRv IGZhY2lsaXRhdGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2FuIGJlIHVzZWQg dG8gZ2VuZXJhdGUgYVxyXG4iDQorIiAgYmluYXJ5IGZpbGUgaW1hZ2Ugb2YgYSB0YWJsZSB0aGF0 IGNhbiBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvciBpbnZlc3RpZ2F0aW9uXHJcbiINCisiICB1c2lu ZyB0b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBUaGlzIGlzIGVz cGVjaWFsbHkgcmVsZXZhbnRcclxuIg0KKyIgIGZvciBBTUwgdHlwZSB0YWJsZXMgbGlrZSBEU0RU IGFuZCBTU0RULlxyXG4iDQorIiBcclxuIg0KKyJOT1RFUzpcclxuIg0KKyIgIDEuIFRoZSBBY3Bp VGFibGUgcGFyYW1ldGVyIGNhbiBtYXRjaCBhbnkgaW5zdGFsbGVkIHRhYmxlIHR5cGUuXHJcbiIN CisiICAgICBUYWJsZXMgd2l0aG91dCBzcGVjaWZpYyBoYW5kbGluZyB3aWxsIGJlIGRpc3BsYXll ZCBhcyBhIHJhdyBoZXggZHVtcCAob3JcclxuIg0KKyIgICAgIGR1bXBlZCB0byBhIGZpbGUgaWYg LWQgaXMgdXNlZCkuXHJcbiINCisiICAyLiBGb3JtYXR0ZWQgZGlzcGxheSBhbmQgY2hlY2tpbmcg aXMgcHJvdmlkZWQgZm9yIHRoZXNlIHNpZ25hdHVyZSB0eXBlczpcclxuIg0KKyIgICAgICAgQVBJ QyAgLSBNdWx0aXBsZSBBUElDIERlc2NyaXB0aW9uIFRhYmxlIChNQURUKVxyXG4iDQorIiAgICAg ICBCR1JUICAtIEJvb3QgR3JhcGhpY3MgUmVzb3VyY2UgVGFibGVcclxuIg0KKyIgICAgICAgREJH MiAgLSBEZWJ1ZyBQb3J0IFRhYmxlIDJcclxuIg0KKyIgICAgICAgRkFDUCAgLSBGaXhlZCBBQ1BJ IERlc2NyaXB0aW9uIFRhYmxlIChGQURUKVxyXG4iDQorIiAgICAgICBHVERUICAtIEdlbmVyaWMg VGltZXIgRGVzY3JpcHRpb24gVGFibGVcclxuIg0KKyIgICAgICAgSU9SVCAgLSBJTyBSZW1hcHBp bmcgVGFibGVcclxuIg0KKyIgICAgICAgTUNGRyAgLSBNZW1vcnkgTWFwcGVkIENvbmZpZyBTcGFj ZSBCYXNlIEFkZHJlc3MgRGVzY3JpcHRpb24gVGFibGVcclxuIg0KKyIgICAgICAgUlNEUCAgLSBS b290IFN5c3RlbSBEZXNjcmlwdGlvbiBQb2ludGVyXHJcbiINCisiICAgICAgIFNMSVQgIC0gU3lz dGVtIExvY2FsaXR5IEluZm9ybWF0aW9uIFRhYmxlXHJcbiINCisiICAgICAgIFNQQ1IgIC0gU2Vy aWFsIFBvcnQgQ29uc29sZSBSZWRpcmVjdGlvbiBUYWJsZVxyXG4iDQorIiAgICAgICBTUkFUICAt IFN5c3RlbSBSZXNvdXJjZSBBZmZpbml0eSBUYWJsZVxyXG4iDQorIiAgICAgICBYU0RUICAtIEV4 dGVuZGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQorIiBcclxuIg0KKyIuU0ggU1RB TkRBUkRTXHJcbiINCisiIFxyXG4iDQorIiAgVGFibGUgZGV0YWlscyBjb3JyZXNwb25kIHRvIHRo b3NlIGluICdBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBQb3dlclxyXG4iDQorIiAgSW50ZXJm YWNlIFNwZWNpZmljYXRpb24nIFZlcnNpb24gNi4yIEVycmF0YSBBLCBbU2VwdGVtYmVyIDIwMTdd XHJcbiINCisiICAoaHR0cDovL3d3dy51ZWZpLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL3Jlc291 cmNlcy9BQ1BJJTIwNl8yX0FfU2VwdDI5LnBkZilcclxuIg0KKyIgXHJcbiINCisiICBOT1RFOiBU aGUgbmF0dXJlIG9mIHRoZSBBQ1BJIHN0YW5kYXJkIG1lYW5zIHRoYXQgYWxtb3N0IGFsbCB0YWJs ZXMgaW4gNi4xIHdpbGxcclxuIg0KKyIgICAgICAgIGJlICdiYWNrd2FyZHMgY29tcGF0aWJsZScg d2l0aCBwcmlvciB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uIGluXHJcbiINCisiICAgICAg ICB0ZXJtcyBvZiBzdHJ1Y3R1cmUsIHNvIGZvcm1hdHRlZCBvdXRwdXQgc2hvdWxkIGJlIGNvcnJl Y3QuICBUaGUgbWFpblxyXG4iDQorIiAgICAgICAgZXhjZXB0aW9uIHdpbGwgYmUgdGhhdCBwcmV2 aW91c2x5ICdyZXNlcnZlZCcgZmllbGRzIHdpbGwgYmUgcmVwb3J0ZWRcclxuIg0KKyIgICAgICAg IHdpdGggbmV3IG5hbWVzLCB3aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBsYXRlciB2ZXJz aW9ucyBvZiB0aGVcclxuIg0KKyIgICAgICAgIHNwZWNpZmljYXRpb24uXHJcbiINCisiIFxyXG4i DQorIi5TSCBFWEFNUExFU1xyXG4iDQorIiBcclxuIg0KKyIgXHJcbiINCisiRVhBTVBMRVM6XHJc biINCisiICAqIFRvIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBpbnN0YWxsZWQgdGFibGUgdHlwZXM6 XHJcbiINCisiICAgIGZzMDpcPiBhY3BpdmlldyAtbFxyXG4iDQorIiBcclxuIg0KKyIgICogVG8g cGFyc2UgYW5kIGRpc3BsYXkgYSBzcGVjaWZpYyB0YWJsZSB0eXBlOlxyXG4iDQorIiAgICBmczA6 XD4gYWNwaXZpZXcgLXMgR1REVFxyXG4iDQorIiBcclxuIg0KKyIgICogVG8gc2F2ZSBhIGJpbmFy eSBkdW1wIG9mIHRoZSBjb250ZW50cyBvZiBhIHRhYmxlIHRvIGEgZmlsZVxyXG4iDQorIiAgICBp biB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeTpcclxuIg0KKyIgICAgZnMwOlw+IGFjcGl2 aWV3IC1zIERTRFQgLWRcclxuIg0KKyIgXHJcbiINCisiICAqIFRvIGRpc3BsYXkgY29udGVudHMg b2YgYWxsIEFDUEkgdGFibGVzOlxyXG4iDQorIiAgICBmczA6XD4gYWNwaXZpZXdcclxuIg0KKyIg XHJcbiINCisiLlNIIFJFVFVSTlZBTFVFU1xyXG4iDQorIiBcclxuIg0KKyJSRVRVUk4gVkFMVUVT OlxyXG4iDQorIiAgU0hFTExfU1VDQ0VTUyAgICAgICAgICAgICBEYXRhIHdhcyBkaXNwbGF5ZWQg YXMgcmVxdWVzdGVkLlxyXG4iDQorIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBBQ1BJIFRh YmxlIHBhcnNpbmcgZmFpbGVkLlxyXG4iDQorIiBcclxuIg0KKw0KLS0gDQpHdWlkKCJDRTE2NTY2 OS0zRUYzLTQ5M0YtQjg1RC02MTkwRUU1Qjk3NTkiKQ0KDQo= --_002_HE1PR08MB26848CA68FCD72D2A89255168B170HE1PR08MB2684eurp_ Content-Type: text/plain; name="ATT00001.txt" Content-Description: ATT00001.txt Content-Disposition: attachment; filename="ATT00001.txt"; size=149; creation-date="Fri, 15 Dec 2017 19:29:06 GMT"; modification-date="Fri, 15 Dec 2017 19:29:06 GMT" Content-ID: <3416039232F4124E927DA00A94FA6EC9@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmVkazItZGV2 ZWwgbWFpbGluZyBsaXN0DQplZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KaHR0cHM6Ly9saXN0cy4w MS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo= --_002_HE1PR08MB26848CA68FCD72D2A89255168B170HE1PR08MB2684eurp_--