From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2134.outbound.protection.outlook.com [40.107.117.134]) by sourceware.org (Postfix) with ESMTPS id 0365A3854144 for ; Thu, 11 May 2023 06:24:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0365A3854144 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CSVjNUK78mphJOx2JhmXxjRUtNHZ9qwsUvtVGH+sLja4Vjxx3DCrNonDFSl26jCUz0W7a+ZvT2242JQd1Ey6CA+5jcj6icr09wBuzK2+dxPqypMvd/9usDN/HSA5Kl5GzQUFi13msB+42/ksOhXHF+uJAiuA8DwfmWHA1q4Jmfiis4ZgCMwiVP8z4tJGN9MAjNCvYJXlRgGr+PnKNxPvmeBvSGs3bhYIPWrhUOoRrL5Jqtf9t5IsEJ6SuIR8YN5ZreORkfDZqav5eZ4/U6T7N5YV33fwxyukPllmO5NL3cg1W8CjSb6v/rOefEEbKizwJInbne8aWHniaqtt2nCz1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=de7BruzSlqdmqsY4LBGd8t8KHzb5a8MamNWZSGoBZOw=; b=IIF4soSndvhuy+dk1KrupSjr7cZ2M8xAF0OTteKdIKT+4sHgZS9/8EHBYfTkrujMn7+P0vd1zNq6AOi3OMfVWaSPxRixc77g1ZHM3krg4C8Z0ZOWDRkR7gwEij/0nCbp0KK1OdC02rkev9Rcztxb0xuxuMgreWDucXFnaStqfXq+2aQwDBu5AwBrek23X3x2k9zzQDY8IgAOmTCL/Lw3doCYx1/G8ef3OdWKdeVgCeNlVMUD3sgzxAALDf195bu7G+GklxdjAe3cmn5WIj3Y4/K3Uo9ahmcm3WeW2OyjAPt/F2K2whiIPiyh2zsgNQTojAlW7CcAw1pyWi7HrMyy3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=de7BruzSlqdmqsY4LBGd8t8KHzb5a8MamNWZSGoBZOw=; b=jw/9hW9ZwArwnU9Pj9XE2WQpqvcx3EpdkJyNIw2XnFS27KdrXVuyO3KKM0zcZcS3j2C8B/PlxcDXezpVRUBTR5z+dVmb4o1T/wlUeQlllAz0rYLs/wG8Hm5f6Jzq4EcWUaTpmCUj8gxKNqSbfHvfxjqhgyJNTZqXhWOTauraSFE= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by PSBPR04MB4071.apcprd04.prod.outlook.com (2603:1096:301:6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.19; Thu, 11 May 2023 06:23:49 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5%7]) with mapi id 15.20.6387.020; Thu, 11 May 2023 06:23:49 +0000 From: Alexey Lapshin To: "newlib@sourceware.org" CC: Alexey Gerenkov , "jcmvbkbc@gmail.com" , Ivan Grokhotkov Subject: Re: [PATCH, RFC 7/8] libgloss: add xtensa port Thread-Topic: [PATCH, RFC 7/8] libgloss: add xtensa port Thread-Index: AQHZg9El59yYR9w6TEKXyFx2It8Kww== Date: Thu, 11 May 2023 06:23:49 +0000 Message-ID: <5176a2d3781bf632c354af986509baebbe388694.camel@espressif.com> References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> In-Reply-To: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|PSBPR04MB4071:EE_ x-ms-office365-filtering-correlation-id: 94d489b5-ff5a-4004-f74a-08db51e84869 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8OmLKTnYU59Mq/lNkMdssR0fAsQduYgsAORfSTpJGe0ewir3SZMMxS/r4ZrmiQ/TmUu+qewVwXYy9vtXIAEZLiHEw0QSbWLOuN+Ett00Zqs+vpjEfJAxg7oqGWjK4ncYJauRwv8Dk6ggFFKU6bibfOqHn+C4noEPWm5dWWEyuLIgHBhTT6HBo0rJ+cnb2o966/6dFeW1vs8SIAgcWcCaa5Zmhz2x8Z/pDpTyoCSPdiDFmmzuljQ2C4aGRwH8SydRyLnx/GOKcPSXOUOCSc+gET0zNroF2w90BWh5eGvyB/mrAd4bg0I6JHeg31Omuag2YI3251DThi0yn0/6lPiMugzO4qxn9tJ9YQagLuYwoUL3KqMaANJi2ot2895PeL95UhFeYuVMk8mYi2nKejxxGCIWJwhEc/y4cFtYVSqaBpOKbXjA10Wg9YZGPujL4hpDRTimHLf9r8o3PTPhvK9CrJoKsSVEBNlddNcs6vys098VdMTDN25zFlfgkWc7fgyMD0ktMkHHEWoE/FRR3EwioSv2S8X2QLKD1LhGVNLqpBhyFsu7KO5a5vbdVrCkB+uBnL0g/sNuKDQKeTsUjPys+IziX5yY9vu6Glt8/IO1ZdDgjJ8B7me1wHB2lXa5oRCOgswShANsI6+sjE8ooWIdjJqWw5BG2JK+K7BotjGwMbx7Jdk7QJ4010WdA0RxZ3AO x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB5736.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(346002)(396003)(136003)(366004)(39850400004)(376002)(451199021)(66556008)(66946007)(66476007)(91956017)(36756003)(83380400001)(38100700002)(107886003)(2616005)(122000001)(38070700005)(54906003)(966005)(6486002)(55236004)(71200400001)(6506007)(186003)(478600001)(6512007)(26005)(86362001)(30864003)(2906002)(76116006)(66446008)(316002)(66899021)(4326008)(64756008)(6916009)(84970400001)(44832011)(8676002)(5660300002)(8936002)(41300700001)(2004002)(559001)(579004)(357404004)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?blZQRkFBWHRPcldzQ2VSdFptOVI0WkZVMUZEU3VLeUV0ZHNRcVJtMlhwbnFX?= =?utf-8?B?Vloyc1dmVm4zaVR1WWNVWmREQ1dpdU8xWnNOMCtUTzVWTTk2a2d6UDNQQVFq?= =?utf-8?B?eFJubzBSa2Q3QnU4eHJrZnFsMElZeUpudWducm1oN29jRkJ6NDBjUGVOZkxj?= =?utf-8?B?ZkVHMFdDcFlXMENpd2p6c2hPUHIybjdXTVd2OE55bXFaMFVWaUlicndBWG1V?= =?utf-8?B?aUFyK2ZSRUdUZWpWMkVlKzJHeklqVzZ0M0dGK3EydjNuOVV2SU0yeE5xeHlj?= =?utf-8?B?ZUVjNDB4SlNvTllPekhBM1hyNDgvUFNjbWtTQTY2WnlJRG1FdmIzM1p4WTFG?= =?utf-8?B?RTU2UmlieEcwbjRhK3hPdDl6dE5mMUVwa3ZadUdRNzVkdXYwaFhqaDNQUXV0?= =?utf-8?B?bHFSQ00wRW5vZFRsN25rTWEvRWlWZ2VHMWYxUUNNbUFIYUdrb1AxV0F3WERO?= =?utf-8?B?Vndld1hrSEVYTFNsdFEwdkladC9CRTh2T1hvdGhJOUYyQUwyYVFzR1pmOHdv?= =?utf-8?B?WXN5THNoYXkyNkFEU2xRTk9Ka1FINVNVakE4VUFNZk1qS3lXL3gxUlZXK0Q5?= =?utf-8?B?L3NySHU0dDBHY3FSd2dvUmZQejNnWEFMT05oTDRtNVIyL3JsRko2WUFUcnda?= =?utf-8?B?bGMyeVBpQit3S05jeDVBT3lWdVlZaHpKQ0pUQmFqZng5YUVZaHQvS2JzRWlG?= =?utf-8?B?U3hvd3VPR2RQYmV0QXREcHE0bXZub1ZYdHg1Vmh6SHc1L0xnb2lBRFRzZ3lv?= =?utf-8?B?MWpRRi9vSjhHdnZkbngxRS9VaFNvU1I1Y20raURoelZEckIweXhLRGJqSW5M?= =?utf-8?B?QzA1OENMTFBDekl2WlpBemIxcCtRajJlUkpmZVJwMVNIaG1GSzBrZFJqOW5K?= =?utf-8?B?Nzl5SEZuN3lnWkEwSU1lelhuTDA1MXE2cXBHUXJWKzBDREZJWktoQ3NNa2R6?= =?utf-8?B?c0hwNWd3emtUZzRKZDlEQVJTa1NUcXJ6R1M1VktmSjNHZmlnRWxIYXlnVFVj?= =?utf-8?B?QkhuQ1kweEhFMzA0eDZWQnBkWDJXdmlGVGJ4TSt3TnQvRVZzSzdNaXErYVFH?= =?utf-8?B?a1FKaXpIMHYraldzUWVneWs2TU9ackNSTkRHazdIcnd1eXFLK2M0bXZsbENm?= =?utf-8?B?dTZSaWtnZmtZT1daK1FBSUNmNzdMUm5SR2Z6VDAxZ3JaM3FtM2d5SHNVTnRX?= =?utf-8?B?Zkw0OUlHMXhmT2hUc2ZPUTVXNjNQK0VrUU9weGdJc2RmOXkyUEFnaXYvU2pJ?= =?utf-8?B?WHBLN05sU0hXeno0OHlyTkRwckwrcXZrRm10ZkhxUU5SZ05XNUNNYzliVlo4?= =?utf-8?B?MzRRK1ZFUUVzZlhGZVVRbCs1OGhEVm02WmU5WVZzLzE3bEpPcUgxTUY2MjFQ?= =?utf-8?B?QXZmckJ1WUZMVWc4aWpRQmFXYzNlY0RIUVFZZ2d0SS85VTJqcVpHbDM4ZUNQ?= =?utf-8?B?SVB6bGhhR2NsZVpxaStMV1ZnZUlWMXV2T09Md3J3eWk4TXNPKytDa0JSZ0VI?= =?utf-8?B?OHZ4Y1p3NitNakg0V0lJN2V6L0Zid3pqeDYyUmExR3hlN2hhRVkwTThKVkt6?= =?utf-8?B?OGJBNkgrMXNhdFlnTm1LWWgrSlNjdU9RWEtyRFJpcHQ0Q1hoTURLQlBEOXA5?= =?utf-8?B?VmsrSXZ6bHc0b2NNbUNrUG5Zbm8xYTE3TWEzY3V2TU0yNDhMWTNIQ2M4dTVL?= =?utf-8?B?NUpiRzdsajNpdG1oVXFiNlRaRUlWN1VQT1lDVjRuazFOdit6VW9FNTA0RXQ1?= =?utf-8?B?dzdxa0hGWFhRaHhJOHhkanRZMmNmcXJqaDAvdU9VZm9jODFCR1REK0ZUMTV0?= =?utf-8?B?SStwVFB1eTJES1QzY1NkWStZWnUzT0pQVnhTV0ZhSXFJMEZoZE9VVjJDemJF?= =?utf-8?B?NmRwTjJ5T2dzbjhiRXhQZ1FUVkY2NE9wN0F0b21pbU03eENsNkZSY1pCL3Vl?= =?utf-8?B?RGpzL1FWUlpEcUU2eHpibkx5VTh5aGZYYy9DaEVDbGJCTXVJczZXQ0tzeDhQ?= =?utf-8?B?SGdxZ081RkpTelRxNWxmcVVyZC9HR2UydTNoMjhPSStzclNxaytneVU0MzhF?= =?utf-8?B?UCtYVHNBVjlEdDdOckNOeUVEZTk4THpTeUNTaVBjTHcxb0hnLzlQaWhYak5I?= =?utf-8?B?dlNLQWFjRFV5SUNPM3pwSnBUZ2lLSWJNMHM1NlVSdHUzZHd1NGVpWmQxV2Y2?= =?utf-8?Q?Bs63DS6vewld007hbTwrejk=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <0BFC83741BDA34429451E4CBABD3F51A@apcprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94d489b5-ff5a-4004-f74a-08db51e84869 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2023 06:23:49.1568 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: OV+1xPQP32cHJ5l8tnlNq0GJ/kcMF4D3/EJ8lCBIGrzdwXWhNJS6brGoDIEqLyOxYdLKkGXKwapTpox5/xwBGfkdqQ/x/cZZ7qeDlLRf/NE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PSBPR04MB4071 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: V2l0aCB0aGlzIGltcGxlbWVudGF0aW9uLCB5b3UgY2FuIGJ1aWxkIEVMRiBmaWxlIGFuZCBleGVj dXRlIGl0IG9uDQpiYXJlbWV0YWwgZXNwMzIvZXNwMzJzMyBjaGlwIG9yIFFFTVUgc2ltdWxhdGlv bi4NCg0KQnVpbGQgeW91ciBhcHAgZWFzaWx5IHdpdGggcHJvdmlkZWQgR0NDIHNwZWMgZmlsZXMu DQpTZWUgbW9yZSBkZXRhaWxzIGhlcmU6DQpodHRwczovL2dpdGh1Yi5jb20vZXNwcmVzc2lmL2Vz cC10b29sY2hhaW4tZG9jcy9ibG9iL21haW4vZ2NjL2J1aWxkLWFuZC1ydW4tbmF0aXZlLWFwcC5t ZA0KDQpsaWJnbG9zczoNCiAgICAgICAgKiBjb25maWd1cmU6IGFkZCB4dGVuc2EgcG9ydA0KICAg ICAgICAqIGNvbmZpZ3VyZS5pbjogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL01ha2VmaWxl OiBpbml0aWFsIGNvbW1pdA0KICAgICAgICAqIHh0ZW5zYS9NYWtlZmlsZS5pbjogTGlrZXdpc2Uu DQogICAgICAgICogeHRlbnNhL2FwcC5lbGYubGQ6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5z YS9ib2FyZC5lbGYuc3BlY3M6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9ib2FyZHMvZXNw MzIvYm9hcmQuYzogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3AzMi9pbmNs dWRlL3NvYy9jcHUuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3AzMi9p bmNsdWRlL3NvYy91YXJ0Lmg6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9ib2FyZHMvZXNw MzIvbWVtb3J5LmVsZi5sZDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3Az MnMzL2JvYXJkLmM6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9ib2FyZHMvZXNwMzJzMy9p bmNsdWRlL3NvYy9jcHUuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3Az MnMzL2luY2x1ZGUvc29jL3VhcnQuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJk cy9lc3AzMnMzL21lbW9yeS5lbGYubGQ6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9jb25m aWd1cmU6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9jb25maWd1cmUuaW46IExpa2V3aXNl Lg0KICAgICAgICAqIHh0ZW5zYS9jcnQwLlM6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9j cnQxLWJvYXJkcy5TOiBMaWtld2lzZS4NCiAgICAgICAgKiB4dGVuc2EvY3J0MS1zaW0uUzogTGlr ZXdpc2UuDQogICAgICAgICogeHRlbnNhL2RlZmF1bHQuc3BlY3M6IExpa2V3aXNlLg0KICAgICAg ICAqIHh0ZW5zYS9pbmNsdWRlL3JlZ2lzdGVyX2FjY2Vzcy5oOiBMaWtld2lzZS4NCiAgICAgICAg KiB4dGVuc2EvaW5jbHVkZS9zeXNjYWxscy5oOiBMaWtld2lzZS4NCiAgICAgICAgKiB4dGVuc2Ev aW5jbHVkZS94dGVuc2EvY29yZWJpdHMuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL21h aW4uYzogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL25hbm8uc3BlY3M6IExpa2V3aXNlLg0K ICAgICAgICAqIHh0ZW5zYS9zaW0tY2FsbC5TOiBMaWtld2lzZS4NCiAgICAgICAgKiB4dGVuc2Ev c2ltLXZlY3RvcnMuUzogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL3NpbS5lbGYuc3BlY3M6 IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9zbGVlcC5TOiBMaWtld2lzZS4NCiAgICAgICAg KiB4dGVuc2Evc3lzLm9wZW5vY2Quc3BlY3M6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9z eXMucWVtdS5zcGVjczogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL3N5c2NhbGxzLmM6IExp a2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS93aW5kb3ctdmVjdG9ycy5TOiBMaWtld2lzZS4NCi0t LQ0KIGxpYmdsb3NzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUg Kw0KIGxpYmdsb3NzL2NvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Kw0KIGxpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAzMjEg KysNCiBsaWJnbG9zcy94dGVuc2EvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgfCAgMzE3 ICsrDQogbGliZ2xvc3MveHRlbnNhL2FwcC5lbGYubGQgICAgICAgICAgICAgICAgICAgIHwgIDE5 MCArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkLmVsZi5zcGVjcyAgICAgICAgICAgICAgIHwgICAg NSArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9ib2FyZC5jICAgICAgICAgIHwgICAy MCArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvY3B1LmggICAgIHwgICAx MSArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvdWFydC5oICAgIHwgICAx OSArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9tZW1vcnkuZWxmLmxkICAgIHwgICAy NiArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMgICAgICAgIHwgICAy MCArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9pbmNsdWRlL3NvYy9jcHUuaCAgIHwgICAx MSArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9pbmNsdWRlL3NvYy91YXJ0LmggIHwgICAx OSArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL21lbW9yeS5lbGYubGQgIHwgICAy NiArDQogbGliZ2xvc3MveHRlbnNhL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgIHwgMzc1 MyArKysrKysrKysrKysrKysrKw0KIGxpYmdsb3NzL3h0ZW5zYS9jb25maWd1cmUuaW4gICAgICAg ICAgICAgICAgICB8ICAgNDUgKw0KIGxpYmdsb3NzL3h0ZW5zYS9jcnQwLlMgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMzEgKw0KIGxpYmdsb3NzL3h0ZW5zYS9jcnQxLWJvYXJkcy5TICAgICAg ICAgICAgICAgICB8ICAyMjYgKw0KIGxpYmdsb3NzL3h0ZW5zYS9jcnQxLXNpbS5TICAgICAgICAg ICAgICAgICAgICB8ICAyMDQgKw0KIGxpYmdsb3NzL3h0ZW5zYS9kZWZhdWx0LnNwZWNzICAgICAg ICAgICAgICAgICB8ICAgIDIgKw0KIGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3JlZ2lzdGVyX2Fj Y2Vzcy5oICAgICB8ICAgIDcgKw0KIGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3N5c2NhbGxzLmgg ICAgICAgICAgICB8ICAgNTkgKw0KIGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3h0ZW5zYS9jb3Jl Yml0cy5oICAgICB8ICAxODYgKw0KIGxpYmdsb3NzL3h0ZW5zYS9tYWluLmMgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTAgKw0KIGxpYmdsb3NzL3h0ZW5zYS9uYW5vLnNwZWNzICAgICAgICAg ICAgICAgICAgICB8ICAgMTggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zaW0tY2FsbC5TICAgICAgICAg ICAgICAgICAgICB8ICAgIDggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zaW0tdmVjdG9ycy5TICAgICAg ICAgICAgICAgICB8ICAxNjMgKw0KIGxpYmdsb3NzL3h0ZW5zYS9zaW0uZWxmLnNwZWNzICAgICAg ICAgICAgICAgICB8ICAgIDUgKw0KIGxpYmdsb3NzL3h0ZW5zYS9zbGVlcC5TICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNjQgKw0KIGxpYmdsb3NzL3h0ZW5zYS9zeXMub3Blbm9jZC5zcGVjcyAg ICAgICAgICAgICB8ICAgIDggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zeXMucWVtdS5zcGVjcyAgICAg ICAgICAgICAgICB8ICAgIDggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zeXNjYWxscy5jICAgICAgICAg ICAgICAgICAgICB8ICAyMjYgKw0KIGxpYmdsb3NzL3h0ZW5zYS93aW5kb3ctdmVjdG9ycy5TICAg ICAgICAgICAgICB8ICAyNTIgKysNCiAzMyBmaWxlcyBjaGFuZ2VkLCA2MjY4IGluc2VydGlvbnMo KykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL01ha2VmaWxlDQogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZS5pbg0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJnbG9zcy94dGVuc2EvYXBwLmVsZi5sZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJn bG9zcy94dGVuc2EvYm9hcmQuZWxmLnNwZWNzDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3Nz L3h0ZW5zYS9ib2FyZHMvZXNwMzIvYm9hcmQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9z cy94dGVuc2EvYm9hcmRzL2VzcDMyL2luY2x1ZGUvc29jL2NwdS5oDQogY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvdWFydC5oDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvbWVtb3J5LmVsZi5s ZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvYm9h cmQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMv aW5jbHVkZS9zb2MvY3B1LmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL2Jv YXJkcy9lc3AzMnMzL2luY2x1ZGUvc29jL3VhcnQuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJn bG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvbWVtb3J5LmVsZi5sZA0KIGNyZWF0ZSBtb2RlIDEw MDc1NSBsaWJnbG9zcy94dGVuc2EvY29uZmlndXJlDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmds b3NzL3h0ZW5zYS9jb25maWd1cmUuaW4NCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRl bnNhL2NydDAuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvY3J0MS1ib2Fy ZHMuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvY3J0MS1zaW0uUw0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvZGVmYXVsdC5zcGVjcw0KIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvaW5jbHVkZS9yZWdpc3Rlcl9hY2Nlc3MuaA0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvaW5jbHVkZS9zeXNjYWxscy5oDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3h0ZW5zYS9jb3JlYml0cy5o DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9tYWluLmMNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL25hbm8uc3BlY3MNCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliZ2xvc3MveHRlbnNhL3NpbS1jYWxsLlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3Mv eHRlbnNhL3NpbS12ZWN0b3JzLlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNh L3NpbS5lbGYuc3BlY3MNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL3NsZWVw LlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL3N5cy5vcGVub2NkLnNwZWNz DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9zeXMucWVtdS5zcGVjcw0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2Evc3lzY2FsbHMuYw0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWJnbG9zcy94dGVuc2Evd2luZG93LXZlY3RvcnMuUw0KDQpkaWZmIC0tZ2l0IGEv bGliZ2xvc3MvY29uZmlndXJlIGIvbGliZ2xvc3MvY29uZmlndXJlDQppbmRleCA4MTZiOWM0Yjgu LjA3YTIyMzM5NSAxMDA3NTUNCi0tLSBhL2xpYmdsb3NzL2NvbmZpZ3VyZQ0KKysrIGIvbGliZ2xv c3MvY29uZmlndXJlDQpAQCAtNzEyLDYgKzcxMiw3IEBAIHRpYzZ4DQogaXEyMDAwDQogb3Ixaw0K IHBydQ0KK3h0ZW5zYQ0KIG5pb3MyDQogbGlibm9zeXMnDQogDQpAQCAtMjU5Niw2ICsyNTk3LDEw IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4NCiAgIHBydS0qLSopDQogCXN1YmRpcnM9IiRzdWJkaXJz IHBydSINCiANCisJOzsNCisgIHh0ZW5zYS0qLSopDQorCXN1YmRpcnM9IiRzdWJkaXJzIHh0ZW5z YSINCisNCiAJOzsNCiAgIG5pb3MyLSotKikNCiAJc3ViZGlycz0iJHN1YmRpcnMgbmlvczIiDQpk aWZmIC0tZ2l0IGEvbGliZ2xvc3MvY29uZmlndXJlLmluIGIvbGliZ2xvc3MvY29uZmlndXJlLmlu DQppbmRleCA0MTExNzI0ZTEuLjBiMDhlY2E1NCAxMDA2NDQNCi0tLSBhL2xpYmdsb3NzL2NvbmZp Z3VyZS5pbg0KKysrIGIvbGliZ2xvc3MvY29uZmlndXJlLmluDQpAQCAtMTgyLDYgKzE4Miw5IEBA IGNhc2UgIiR7dGFyZ2V0fSIgaW4NCiAgIHBydS0qLSopDQogCUFDX0NPTkZJR19TVUJESVJTKFtw cnVdKQ0KIAk7Ow0KKyAgeHRlbnNhLSotKikNCisJQUNfQ09ORklHX1NVQkRJUlMoW3h0ZW5zYV0p DQorCTs7DQogICBuaW9zMi0qLSopDQogCUFDX0NPTkZJR19TVUJESVJTKFtuaW9zMl0pDQogCTs7 DQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL01ha2VmaWxlIGIvbGliZ2xvc3MveHRlbnNh L01ha2VmaWxlDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi41MjhhNDk0 OGQNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZQ0KQEAgLTAs MCArMSwzMjEgQEANCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorIyBTb3VyY2UgZmlsZXMNCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQotLS0tDQorDQorZ2xvc3NfaGRycyA9DQorDQorZ2xvc3Nfc3JjcyA9DQorDQor Z2xvc3Nfc3BlY3MgPSBcDQorCWRlZmF1bHQuc3BlY3MgXA0KKwluYW5vLnNwZWNzDQorDQorZ2xv c3NfbGRzY3JpcHRzID0NCisNCisjIEV4dHJhIGZpbGVzDQorDQorY3J0WF9zb3VyY2UgPSBjcnQw LlMNCisNCitsaWJzeXNfcWVtdSAgOj0gbGlic3lzX3FlbXUuYQ0KK2xpYnN5c19vcGVub2NkICA6 PSBsaWJzeXNfb3Blbm9jZC5hDQorDQorYm9hcmRfb3V0ZGlyID0NCisNCisjIE11bHRpbGliIHN1 cHBvcnQgdmFyaWFibGVzLg0KKyMgVE9QIGlzIHVzZWQgaW5zdGVhZCBvZiBNVUxUSXtCVUlMRCxT UkN9VE9QLg0KKw0KK01VTFRJRElSUyA9DQorTVVMVElTVUJESVIgPQ0KK01VTFRJRE8gPSB0cnVl DQorTVVMVElDTEVBTiA9IHRydWUNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorIyBCYXNpYyBz ZXR1cA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisNCisjIERlZmF1bHQgaXMgdG8gYnVpbGQgdGhl IHByZXJlcXMgb2YgdGhlIGFsbCB0YXJnZXQgKGRlZmluZWQgYXQNCmJvdHRvbSkNCisNCitkZWZh dWx0IDogYWxsDQorLlBIT05ZIDogZGVmYXVsdA0KKw0KKyMgU291cmNlIGRpcmVjdG9yeQ0KKw0K K29ial9kaXIgOj0gLg0KK3NyY19kaXIgOj0gLg0KK1ZQQVRIICAgOj0gJChzcmNfZGlyKQ0KKw0K KyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzDQorDQorcHJlZml4ICA6PSAvdXNyL2xvY2FsDQor REVTVERJUiA/PSAkKHByZWZpeCkNCisNCitXT1JLRElSIDo9ICQoZGlyICQoYWJzcGF0aCAkKGxh c3R3b3JkICQoTUFLRUZJTEVfTElTVCkpKSkNCisNCitpbnN0YWxsX2hkcnNfZGlyIDo9DQokKERF U1RESVIpJChwcmVmaXgpLyQodGFyZ2V0X2FsaWFzKS9pbmNsdWRlL21hY2hpbmUNCitpbnN0YWxs X2xpYnNfZGlyICA9DQokKERFU1RESVIpJChwcmVmaXgpLyQodGFyZ2V0X2FsaWFzKS9saWIke01V TFRJU1VCRElSfQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIFByb2dyYW1zIGFuZCBmbGFn cyANCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQorIyBDIGNvbXBpbGVyDQorDQorQ0MgICAgICAg ICAgICA6PSBAQ0NADQorQ0ZMQUdTICAgICAgICA6PSBAQ0ZMQUdTQA0KK0NQUEZMQUdTICAgICAg PSAtSSQob2JqX2RpcikgLUkkKHNyY19kaXIpIC1JJChzcmNfZGlyKS9pbmNsdWRlDQorQ09NUElM RSAgICAgICA9ICQoQ0MpIC1NTUQgLU1QICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKQ0KKw0KKyMgTGli cmFyeSBjcmVhdGlvbg0KKw0KK0FSICAgICAgICAgICAgOj0gYXINCitSQU5MSUIgICAgICAgIDo9 IHJhbmxpYg0KKw0KKyMgSW5zdGFsbGF0aW9uDQorDQorSU5TVEFMTCAgICAgICA6PSAvdXNyL2Jp bi9pbnN0YWxsIC1jDQorSU5TVEFMTF9EQVRBICA6PSAke0lOU1RBTEx9IC1tIDY0NA0KKw0KKyVf b3Blbm9jZC5vOiAlLmMNCisJJChDT01QSUxFKSAtRE9QRU5PQ0RfU0VNSUhPU1RJTkcgLWMgLW8g JEAgJDwNCisNCislX3FlbXUubzogJS5jDQorCSQoQ09NUElMRSkgLURRRU1VX1NFTUlIT1NUSU5H IC1jIC1vICRAICQ8DQorDQorJS5vIDogJS5TDQorCWVjaG8gIiQoQ09NUElMRSkgJChDRkxBR1Mp Ig0KKwkkKENPTVBJTEUpIC1jIC1vICRAICQ8DQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMg QXBwZW5kIHZhcmlhYmxlcyB3aXRoIGJvYXJkIHNwZWNpZmljIGRhdGENCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQotLS0tDQorDQorVEFSR0VUX0JPQVJEID0gJChzdHJpcCAkKHBhdHN1YnN0IHh0ZW5zYS0lLWVs ZiwgJSwgJChzaGVsbCAkKENDKSAtDQpkdW1wbWFjaGluZSkpKQ0KKw0KKyMgYWRkIGJvYXJkIHNw ZWNpZmljIHNvdXJjZXMgaWYgYm9hcmQgZXhpc3RzDQoraWZuZXEgKCIkKHdpbGRjYXJkICQoc3Jj X2RpcikvYm9hcmRzLyQoVEFSR0VUX0JPQVJEKSkiLCAiIikNCisgIENQUEZMQUdTICs9IC1JJChz cmNfZGlyKS9ib2FyZHMvJChUQVJHRVRfQk9BUkQpL2luY2x1ZGUNCisNCisgIGJvYXJkX291dGRp ciArPSAkKFdPUktESVIpL2JvYXJkcy8kKFRBUkdFVF9CT0FSRCkNCisgIGp1bmsgKz0gJChXT1JL RElSKS9ib2FyZHMNCisNCisgIGdsb3NzX3NyY3MgKz0gXA0KKyAgICAgICAgd2luZG93LXZlY3Rv cnMuUyBcDQorICAgICAgICBzbGVlcC5TIFwNCisgICAgICAgIHN5c2NhbGxzLmMgXA0KKyAgICAg ICAgYm9hcmRzLyQoVEFSR0VUX0JPQVJEKS9ib2FyZC5jDQorDQorICBnbG9zc19zcGVjcyArPSBc DQorCXNpbS5lbGYuc3BlY3MgXA0KKwlib2FyZC5lbGYuc3BlY3MgXA0KKwlzeXMucWVtdS5zcGVj cyBcDQorCXN5cy5vcGVub2NkLnNwZWNzDQorDQorICBnbG9zc19sZHNjcmlwdHMgKz0gXA0KKwli b2FyZHMvJChUQVJHRVRfQk9BUkQpL21lbW9yeS5lbGYubGQgXA0KKwlhcHAuZWxmLmxkDQorDQor ICBzeXNjYWxsc19xZW11X3NyYyArPSBcDQorICAgICAgICBzeXNjYWxscy5jDQorDQorICBzeXNj YWxsc19vcGVub2NkX3NyYyArPSBcDQorICAgICAgICBzeXNjYWxscy5jDQorDQorICBjcnRYX3Nv dXJjZSArPSBjcnQxLXNpbS5TIGNydDEtYm9hcmRzLlMNCisNCisgIGluc3RhbGxfbGlicyArPSAk KGxpYnN5c19xZW11KQ0KKyAgaW5zdGFsbF9saWJzICs9ICQobGlic3lzX29wZW5vY2QpDQorDQor ZW5kaWYNCisNCitCT0FSRFMgOj0gJChwYXRzdWJzdCBib2FyZHMvJSwlLCQod2lsZGNhcmQgYm9h cmRzLyopKQ0KK0NPTU1PTl9DRkxBR1MgOj0gJChDRkxBR1MpDQorDQorDQoraWZlcSAoJChwYXRz dWJzdCAlY2MsLCQobGFzdHdvcmQgJChDQykpKSwpDQorbGliZXNwMzIuYTogQ0ZMQUdTID0gIiQo Q09NTU9OX0NGTEFHUykgLW1jcHU9ZXNwMzIiDQorZWxzZSBpZmVxICgkKHBhdHN1YnN0ICVjbGFu ZywsJChsYXN0d29yZCAkKENDKSkpLCkNCitsaWJlc3AzMi5hOiBDRkxBR1MgPSAkKENPTU1PTl9D RkxBR1MpIC1tYXJjaD1lc3AzMg0KK2Vsc2UNCiskKGVycm9yICJVbmtub3duIGNvbXBpbGVyIC0g JChDQykiKQ0KK2VuZGlmDQorDQorDQorJChsaWJnbG9zc19ib2FyZHMpOiBDRkxBR1MgPSAiJChD T01NT05fQ0ZMQUdTKSAtbWNwdT1lc3AzMiINCitnbG9zc19hc21fb2Jqcz0kKGdsb3NzX3NyY3M6 JS5TPWVzcDMyLyUubykNCitnbG9zc19vYmpzICs9ICQoZ2xvc3NfY19vYmpzKQ0KKyQoQk9BUkRT OiU9bGliJS5hKTogJChnbG9zc19lc3AzMl9vYmpzKQ0KKwllY2hvICIkQCAkXiAkKENGTEFHUykg JChnbG9zc19jX3NyY3M6JS5jPSVfJF4ubykiDQorCSQoQVIpIHJjdiAkQCAkXg0KKwkkKFJBTkxJ QikgJEANCisNCitpbnN0YWxsX2xpYnMgKz0gJChCT0FSRFM6JT1saWIlLmEpDQorDQorJChib2Fy ZF9vdXRkaXIpOg0KKwlta2RpciAtcCAkQA0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIEJ1 aWxkIE9iamVjdCBGaWxlcyBmcm9tIEMgU291cmNlDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0K KyMgbGliZ2xvc3MNCitnbG9zc19jX3NyY3MgPSAkKGZpbHRlciAlLmMsICQoZ2xvc3Nfc3Jjcykp DQorZ2xvc3NfY19vYmpzICs9ICQoZ2xvc3NfY19zcmNzOiUuYz0lLm8pDQorZ2xvc3NfY19kZXBz ID0gJChnbG9zc19jX3NyY3M6JS5jPSUuZCkNCisNCitnbG9zc19vYmpzICs9ICQoZ2xvc3NfY19v YmpzKQ0KK2RlcHMgKz0gJChnbG9zc19jX2RlcHMpDQoranVuayArPSAkKGdsb3NzX2NfZGVwcykg JChnbG9zc19jX29ianMpDQorDQorIyBsaWJzeXNfcWVtdQ0KK3N5c2NhbGxzX3FlbXVfY19zcmNz ID0gJChmaWx0ZXIgJS5jLCAkKHN5c2NhbGxzX3FlbXVfc3JjKSkNCitzeXNjYWxsc19xZW11X29i anMgPSAkKHN5c2NhbGxzX3FlbXVfY19zcmNzOiUuYz0lX3FlbXUubykNCitzeXNjYWxsc19xZW11 X2NfZGVwcyA9ICQoc3lzY2FsbHNfcWVtdV9jX3NyY3M6JS5jPSVfcWVtdS5kKQ0KKw0KK3N5c2Nh bGxzX3FlbXVfb2JqcyArPSAkKHN5c2NhbGxzX3FlbXVfY19vYmpzKQ0KK2RlcHMgKz0gJChzeXNj YWxsc19xZW11X2NfZGVwcykNCitqdW5rICs9ICQoc3lzY2FsbHNfcWVtdV9jX2RlcHMpICQoc3lz Y2FsbHNfcWVtdV9jX29ianMpDQorDQorIyBsaWJzeXNfb3Blbm9jZA0KK3N5c2NhbGxzX29wZW5v Y2RfY19zcmNzID0gJChmaWx0ZXIgJS5jLCAkKHN5c2NhbGxzX29wZW5vY2Rfc3JjKSkNCitzeXNj YWxsc19vcGVub2NkX2Nfb2JqcyA9ICQoc3lzY2FsbHNfb3Blbm9jZF9jX3NyY3M6JS5jPSVfb3Bl bm9jZC5vKQ0KK3N5c2NhbGxzX29wZW5vY2RfY19kZXBzID0gJChzeXNjYWxsc19vcGVub2NkX2Nf c3JjczolLmM9JV9vcGVub2NkLmQpDQorDQorc3lzY2FsbHNfb3Blbm9jZF9vYmpzICs9ICQoc3lz Y2FsbHNfb3Blbm9jZF9jX29ianMpDQorZGVwcyArPSAkKHN5c2NhbGxzX29wZW5vY2RfY19kZXBz KQ0KK2p1bmsgKz0gJChzeXNjYWxsc19vcGVub2NkX2NfZGVwcykgJChzeXNjYWxsc19vcGVub2Nk X2Nfb2JqcykNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorIyBCdWlsZCBPYmplY3QgRmlsZXMg ZnJvbSBBc3NlbWJseSBTb3VyY2UNCitnbG9zc19hc21fc3JjcyA9ICQoZmlsdGVyICUuUywgJChn bG9zc19zcmNzKSkNCitnbG9zc19hc21fb2JqcyArPSAkKHBhdHN1YnN0ICUuUywgJS5vLCAkKG5v dGRpciAkKGdsb3NzX2FzbV9zcmNzKSkpDQorZ2xvc3NfYXNtX2RlcHMgPSAkKHBhdHN1YnN0ICUu UywgJS5kLCAkKG5vdGRpciAkKGdsb3NzX2FzbV9zcmNzKSkpDQorDQorZ2xvc3Nfb2JqcyArPSAk KGdsb3NzX2FzbV9vYmpzKQ0KK2RlcHMgKz0gJChnbG9zc19hc21fZGVwcykNCitqdW5rICs9ICQo Z2xvc3NfYXNtX2RlcHMpICQoZ2xvc3NfYXNtX29ianMpDQorDQorIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0t LQ0KKyMgQnVpbGQgbGliZ2xvc3MuYQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisNCitnbG9zc19s aWIgID0gbGliZ2xvc3MuYQ0KKyQoZ2xvc3NfbGliKSA6ICQoZ2xvc3Nfb2JqcykNCisJJChBUikg cmN2ICRAICReDQorCSQoUkFOTElCKSAkQA0KKw0KK2p1bmsgKz0gJChnbG9zc19saWIpDQorDQor aW5zdGFsbF9oZHJzICs9ICQoZ2xvc3NfaGRycykNCitpbnN0YWxsX2xpYnMgKz0gJChnbG9zc19s aWIpDQoraW5zdGFsbF9zcGVjcyArPSAkKGdsb3NzX3NwZWNzKQ0KK2luc3RhbGxfbGRzY3JpcHRz ICs9ICQoZ2xvc3NfbGRzY3JpcHRzKQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIEJ1aWxk IGxpYnN5c19xZW11LmENCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQorJChsaWJzeXNfcWVtdSkg OiAkKHN5c2NhbGxzX3FlbXVfb2JqcykNCisJJChBUikgcmN2ICRAICReDQorCSQoUkFOTElCKSAk QA0KKw0KK2p1bmsgKz0gJChsaWJzeXNfcWVtdSkNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQor IyBCdWlsZCBsaWJzeXNfb3Blbm9jZC5hDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KKyQobGli c3lzX29wZW5vY2QpIDogJChzeXNjYWxsc19vcGVub2NkX29ianMpDQorCSQoQVIpIHJjdiAkQCAk Xg0KKwkkKFJBTkxJQikgJEANCisNCitqdW5rICs9ICQobGlic3lzX29wZW5vY2QpDQorDQorIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KLS0tLQ0KKyMgQnVpbGQgY3J0WCBvYmplY3QgZmlsZXMNCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQotLS0tDQorDQorY3J0WF9vYmogID0gJChwYXRzdWJzdCAlLlMsICUubywgJChjcnRYX3Nv dXJjZSkpDQorY3J0WF9kZXBzID0gJChwYXRzdWJzdCAlLlMsICUuZCwgJChjcnRYX3NvdXJjZSkp DQorDQorZGVwcyArPSAkKGNydFhfZGVwcykNCitqdW5rICs9ICQoY3J0WF9kZXBzKSAkKGNydFhf b2JqKQ0KKw0KK2luc3RhbGxfbGlicyArPSAkKGNydFhfb2JqKQ0KKw0KKyMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Ci0tLS0NCisjIEF1dG9kZXBlbmRlbmN5IGZpbGVzDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0K Ky1pbmNsdWRlICQoZGVwcykNCisNCitkZXBzIDogJChkZXBzKQ0KKy5QSE9OWSA6IGRlcHMNCisN CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQotLS0tDQorIyBJbnN0YWxsYXRpb24NCisjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQot LS0tDQorDQoraW5zdGFsbF9oZHJzX3dkaXIgKz0gJChhZGRwcmVmaXggJChzcmNfZGlyKS8sICQo aW5zdGFsbF9oZHJzKSkNCitpbnN0YWxsLWhkcnMgOiAkKGluc3RhbGxfaGRyc193ZGlyKQ0KKwl0 ZXN0IC1kICQoaW5zdGFsbF9oZHJzX2RpcikgfHwgbWtkaXIgLXAgJChpbnN0YWxsX2hkcnNfZGly KQ0KKwlmb3IgZmlsZSBpbiAkXjsgZG8gXA0KKwkJJChJTlNUQUxMX0RBVEEpICQkZmlsZSAkKGlu c3RhbGxfaGRyc19kaXIpLzsgXA0KKwlkb25lDQorDQoraW5zdGFsbC1saWJzIDogJChpbnN0YWxs X2xpYnMpDQorCXRlc3QgLWQgJChpbnN0YWxsX2xpYnNfZGlyKSB8fCBta2RpciAtcCAkKGluc3Rh bGxfbGlic19kaXIpDQorCWZvciBmaWxlIGluICReOyBkbyBcDQorCQkkKElOU1RBTExfREFUQSkg JCRmaWxlICQoaW5zdGFsbF9saWJzX2RpcikvJCRmaWxlOyBcDQorCWRvbmUNCisNCitpbnN0YWxs LXNwZWNzIDogJChpbnN0YWxsX3NwZWNzKQ0KKwl0ZXN0IC1kICQoaW5zdGFsbF9saWJzX2Rpcikg fHwgbWtkaXIgLXAgJChpbnN0YWxsX2xpYnNfZGlyKQ0KKwlmb3IgZmlsZSBpbiAkXjsgZG8gXA0K KwkJJChJTlNUQUxMX0RBVEEpICQkZmlsZSAkKGluc3RhbGxfbGlic19kaXIpLzsgXA0KKwlkb25l DQorDQoraW5zdGFsbC1sZHNjcmlwdHMgOiAkKGluc3RhbGxfbGRzY3JpcHRzKQ0KKwl0ZXN0IC1k ICQoaW5zdGFsbF9saWJzX2RpcikgfHwgbWtkaXIgLXAgJChpbnN0YWxsX2xpYnNfZGlyKQ0KKwlm b3IgZmlsZSBpbiAkXjsgZG8gXA0KKwkJJChJTlNUQUxMX0RBVEEpICQkZmlsZSAkKGluc3RhbGxf bGlic19kaXIpLzsgXA0KKwlkb25lDQorDQoraW5zdGFsbCA6IGluc3RhbGwtaGRycyBpbnN0YWxs LWxpYnMgaW5zdGFsbC1zcGVjcyBpbnN0YWxsLWxkc2NyaXB0cw0KKy5QSE9OWSA6IGluc3RhbGwg aW5zdGFsbC1oZHJzIGluc3RhbGwtbGlicw0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIFJl Z2VuZXJhdGUgY29uZmlndXJlIGluZm9ybWF0aW9uDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0K K2NvbmZpZ3VyZV9wcmVyZXEgPSBcDQorICAkKHNyY19kaXIpL2NvbmZpZ3VyZS5pbiBcDQorDQor JChzcmNfZGlyKS9jb25maWd1cmUgOiAkKGNvbmZpZ3VyZV9wcmVyZXEpDQorCWNkICQoc3JjX2Rp cikgJiYgYXV0b2NvbmYNCisNCitjb25maWcuc3RhdHVzIDogJChzcmNfZGlyKS9jb25maWd1cmUN CisJLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjaw0KKw0KK01ha2VmaWxlIDogJChzcmNfZGlyKS9N YWtlZmlsZS5pbiBjb25maWcuc3RhdHVzDQorCS4vY29uZmlnLnN0YXR1cw0KKw0KK2Rpc3RfanVu ayArPSBjb25maWcuc3RhdHVzIE1ha2VmaWxlIGNvbmZpZy5sb2cNCisNCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQotLS0tDQorIyBEZWZhdWx0DQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KK2FsbCA6ICQoYm9h cmRfb3V0ZGlyKSAkKGluc3RhbGxfbGlicykNCisuUEhPTlkgOiBhbGwNCisNCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQotLS0tDQorIyBDbGVhbiB1cCBqdW5rDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KK2Ns ZWFuIDoNCisJcm0gLXJmICp+IFwjKiAkKGp1bmspDQorDQorZGlzdGNsZWFuIDoNCisJcm0gLXJm ICp+IFwjKiAkKGp1bmspICQoZGlzdF9qdW5rKQ0KKw0KKy5QSE9OWSA6IGNsZWFuIGRpc3RjbGVh bg0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZS5pbiBiL2xpYmdsb3NzL3h0 ZW5zYS9NYWtlZmlsZS5pbg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4u NGNhNDQ4OWY5DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvTWFrZWZpbGUu aW4NCkBAIC0wLDAgKzEsMzE3IEBADQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgU291cmNlIGZp bGVzDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KK2dsb3NzX2hkcnMgPQ0KKw0KK2dsb3NzX3Ny Y3MgPQ0KKw0KK2dsb3NzX3NwZWNzID0gXA0KKwlkZWZhdWx0LnNwZWNzIFwNCisJbmFuby5zcGVj cw0KKw0KK2dsb3NzX2xkc2NyaXB0cyA9DQorDQorIyBFeHRyYSBmaWxlcw0KKw0KK2NydFhfc291 cmNlID0gY3J0MC5TDQorDQorbGlic3lzX3FlbXUgIDo9IGxpYnN5c19xZW11LmENCitsaWJzeXNf b3Blbm9jZCAgOj0gbGlic3lzX29wZW5vY2QuYQ0KKw0KK2JvYXJkX291dGRpciA9DQorDQorIyBN dWx0aWxpYiBzdXBwb3J0IHZhcmlhYmxlcy4NCisjIFRPUCBpcyB1c2VkIGluc3RlYWQgb2YgTVVM VEl7QlVJTEQsU1JDfVRPUC4NCisNCitNVUxUSURJUlMgPQ0KK01VTFRJU1VCRElSID0NCitNVUxU SURPID0gdHJ1ZQ0KK01VTFRJQ0xFQU4gPSB0cnVlDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0K KyMgQmFzaWMgc2V0dXANCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQorIyBEZWZhdWx0IGlzIHRv IGJ1aWxkIHRoZSBwcmVyZXFzIG9mIHRoZSBhbGwgdGFyZ2V0IChkZWZpbmVkIGF0DQpib3R0b20p DQorDQorZGVmYXVsdCA6IGFsbA0KKy5QSE9OWSA6IGRlZmF1bHQNCisNCisjIFNvdXJjZSBkaXJl Y3RvcnkNCisNCitvYmpfZGlyIDo9IC4NCitzcmNfZGlyIDo9IEBzcmNkaXJADQorVlBBVEggICA6 PSAkKHNyY19kaXIpDQorDQorIyBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMNCisNCitwcmVmaXgg IDo9IEBwcmVmaXhADQorREVTVERJUiA/PSAkKHByZWZpeCkNCisNCitXT1JLRElSIDo9ICQoZGly ICQoYWJzcGF0aCAkKGxhc3R3b3JkICQoTUFLRUZJTEVfTElTVCkpKSkNCisNCitpbnN0YWxsX2hk cnNfZGlyIDo9DQokKERFU1RESVIpJChwcmVmaXgpLyQodGFyZ2V0X2FsaWFzKS9pbmNsdWRlL21h Y2hpbmUNCitpbnN0YWxsX2xpYnNfZGlyICA9DQokKERFU1RESVIpJChwcmVmaXgpLyQodGFyZ2V0 X2FsaWFzKS9saWIke01VTFRJU1VCRElSfQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIFBy b2dyYW1zIGFuZCBmbGFncw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisNCisjIEMgY29tcGlsZXIN CisNCitDQyAgICAgICAgICAgIDo9IEBDQ0ANCitDRkxBR1MgICAgICAgIDo9IEBDRkxBR1NADQor Q1BQRkxBR1MgICAgICA9IC1JJChvYmpfZGlyKSAtSSQoc3JjX2RpcikgLUkkKHNyY19kaXIpL2lu Y2x1ZGUNCitDT01QSUxFICAgICAgID0gJChDQykgLU1NRCAtTVAgJChDUFBGTEFHUykgJChDRkxB R1MpDQorDQorIyBMaWJyYXJ5IGNyZWF0aW9uDQorDQorQVIgICAgICAgICAgICA6PSBAQVJADQor UkFOTElCICAgICAgICA6PSBAUkFOTElCQA0KKw0KKyMgSW5zdGFsbGF0aW9uDQorDQorSU5TVEFM TCAgICAgICA6PSBASU5TVEFMTEANCitJTlNUQUxMX0RBVEEgIDo9IEBJTlNUQUxMX0RBVEFADQor DQorJV9vcGVub2NkLm86ICUuYw0KKwkkKENPTVBJTEUpIC1ET1BFTk9DRF9TRU1JSE9TVElORyAt YyAtbyAkQCAkPA0KKw0KKyVfcWVtdS5vOiAlLmMNCisJJChDT01QSUxFKSAtRFFFTVVfU0VNSUhP U1RJTkcgLWMgLW8gJEAgJDwNCisNCislLm8gOiAlLlMNCisJJChDT01QSUxFKSAtYyAtbyAkQCAk PA0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIEFwcGVuZCB2YXJpYWJsZXMgd2l0aCBib2Fy ZCBzcGVjaWZpYyBkYXRhDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KKyMgYWN0dWFsbHkgWHRl bnNhIGBib2FyZHNgIGRpciBjb250YWlucyBzdWJkaXJzIGZvciBkaWZmZXJlbnQgY2hpcHMsDQor IyBzbyB3ZSBuZWVkIHRvIGRldGVjdCBjaGlwIGZyb20gY29tbWFuZCBsaW5lIGFuZCBzZWxlY3Qg cHJvcGVyIGJvYXJkDQpzdWJkaXIgKGlmIGFueSkgZm9yIGJ1aWxkDQoraWZlcSAoJChzaGVsbCAk KENDKSAtdiAyPiYxIHwgZ3JlcCAtYyAiY2xhbmcgdmVyc2lvbiIpLCAxKQ0KKyAgICBpZmVxICgk KHNoZWxsICQoQ0MpIC1kdW1wbWFjaGluZSAyPiYxKSwgeHRlbnNhLWVzcC11bmtub3duLWVsZikN CisgICAgICAgIFRBUkdFVF9CT0FSRCA9ICQoc3RyaXAgJChwYXRzdWJzdCAtbWNwdT0lLCAlLCAk KGZpbHRlciAtDQptY3B1PSUsICQoQ0MpKSkpDQorICAgICAgICBpZmVxICgiJChUQVJHRVRfQk9B UkQpIiwgIiIpDQorICAgICAgICAgICAgVEFSR0VUX0JPQVJEID0gZXNwMzINCisgICAgICAgIGVu ZGlmDQorICAgIGVuZGlmDQorZWxzZQ0KKyAgICBUQVJHRVRfQk9BUkQgPSAkKHN0cmlwICQocGF0 c3Vic3QgeHRlbnNhLSUtZWxmLCAlLCAkKHNoZWxsICQoQ0MpIC0NCmR1bXBtYWNoaW5lKSkpDQor ZW5kaWYNCisNCisjIGFkZCBib2FyZCBzcGVjaWZpYyBzb3VyY2VzIGlmIGJvYXJkIGV4aXN0cw0K K2lmbmVxICgiJCh3aWxkY2FyZCAkKHNyY19kaXIpL2JvYXJkcy8kKFRBUkdFVF9CT0FSRCkpIiwg IiIpDQorCUNQUEZMQUdTICs9IC1JJChzcmNfZGlyKS9ib2FyZHMvJChUQVJHRVRfQk9BUkQpL2lu Y2x1ZGUNCisNCisJYm9hcmRfb3V0ZGlyICs9ICQoV09SS0RJUikvYm9hcmRzLyQoVEFSR0VUX0JP QVJEKQ0KKwlqdW5rICs9ICQoV09SS0RJUikvYm9hcmRzDQorDQorCWdsb3NzX3NyY3MgKz0gXA0K KwkJd2luZG93LXZlY3RvcnMuUyBcDQorCQlzbGVlcC5TIFwNCisJCXN5c2NhbGxzLmMgXA0KKwkJ Ym9hcmRzLyQoVEFSR0VUX0JPQVJEKS9ib2FyZC5jDQorDQorCWdsb3NzX3NwZWNzICs9IFwNCisJ CXNpbS5lbGYuc3BlY3MgXA0KKwkJYm9hcmQuZWxmLnNwZWNzIFwNCisJCXN5cy5xZW11LnNwZWNz IFwNCisJCXN5cy5vcGVub2NkLnNwZWNzDQorDQorCWdsb3NzX2xkc2NyaXB0cyArPSBcDQorCQli b2FyZHMvJChUQVJHRVRfQk9BUkQpL21lbW9yeS5lbGYubGQgXA0KKwkJYXBwLmVsZi5sZA0KKw0K KwlzeXNjYWxsc19xZW11X3NyYyArPSBcDQorCQlzaW0tdmVjdG9ycy5TIFwNCisJCXNpbS1jYWxs LlMgXA0KKwkJc3lzY2FsbHMuYw0KKw0KKwlzeXNjYWxsc19vcGVub2NkX3NyYyArPSBcDQorCQlz eXNjYWxscy5jDQorDQorCWNydFhfc291cmNlICs9IGNydDEtc2ltLlMgY3J0MS1ib2FyZHMuUw0K Kw0KKwlpbnN0YWxsX2xpYnMgKz0gJChsaWJzeXNfcWVtdSkNCisJaW5zdGFsbF9saWJzICs9ICQo bGlic3lzX29wZW5vY2QpDQorZW5kaWYNCisNCiskKGJvYXJkX291dGRpcik6DQorCW1rZGlyIC1w ICRADQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgQnVpbGQgT2JqZWN0IEZpbGVzIGZyb20g QyBTb3VyY2UNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQorIyBsaWJnbG9zcw0KK2dsb3NzX2Nf c3JjcyA9ICQoZmlsdGVyICUuYywgJChnbG9zc19zcmNzKSkNCitnbG9zc19jX29ianMgPSAkKGds b3NzX2Nfc3JjczolLmM9JS5vKQ0KK2dsb3NzX2NfZGVwcyA9ICQoZ2xvc3NfY19zcmNzOiUuYz0l LmQpDQorDQorZ2xvc3Nfb2JqcyArPSAkKGdsb3NzX2Nfb2JqcykNCitkZXBzICs9ICQoZ2xvc3Nf Y19kZXBzKQ0KK2p1bmsgKz0gJChnbG9zc19jX2RlcHMpICQoZ2xvc3NfY19vYmpzKQ0KKw0KKyMg bGlic3lzX3FlbXUNCitzeXNjYWxsc19xZW11X2Nfc3JjcyA9ICQoZmlsdGVyICUuYywgJChzeXNj YWxsc19xZW11X3NyYykpDQorc3lzY2FsbHNfcWVtdV9jX29ianMgPSAkKHN5c2NhbGxzX3FlbXVf Y19zcmNzOiUuYz0lX3FlbXUubykNCitzeXNjYWxsc19xZW11X2NfZGVwcyA9ICQoc3lzY2FsbHNf cWVtdV9jX3NyY3M6JS5jPSVfcWVtdS5kKQ0KKw0KK3N5c2NhbGxzX3FlbXVfb2JqcyArPSAkKHN5 c2NhbGxzX3FlbXVfY19vYmpzKQ0KK2RlcHMgKz0gJChzeXNjYWxsc19xZW11X2NfZGVwcykNCitq dW5rICs9ICQoc3lzY2FsbHNfcWVtdV9jX2RlcHMpICQoc3lzY2FsbHNfcWVtdV9jX29ianMpDQor DQorIyBsaWJzeXNfb3Blbm9jZA0KK3N5c2NhbGxzX29wZW5vY2RfY19zcmNzID0gJChmaWx0ZXIg JS5jLCAkKHN5c2NhbGxzX29wZW5vY2Rfc3JjKSkNCitzeXNjYWxsc19vcGVub2NkX2Nfb2JqcyA9 ICQoc3lzY2FsbHNfb3Blbm9jZF9jX3NyY3M6JS5jPSVfb3Blbm9jZC5vKQ0KK3N5c2NhbGxzX29w ZW5vY2RfY19kZXBzID0gJChzeXNjYWxsc19vcGVub2NkX2Nfc3JjczolLmM9JV9vcGVub2NkLmQp DQorDQorc3lzY2FsbHNfb3Blbm9jZF9vYmpzICs9ICQoc3lzY2FsbHNfb3Blbm9jZF9jX29ianMp DQorZGVwcyArPSAkKHN5c2NhbGxzX29wZW5vY2RfY19kZXBzKQ0KK2p1bmsgKz0gJChzeXNjYWxs c19vcGVub2NkX2NfZGVwcykgJChzeXNjYWxsc19vcGVub2NkX2Nfb2JqcykNCisNCisjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQotLS0tDQorIyBCdWlsZCBPYmplY3QgRmlsZXMgZnJvbSBBc3NlbWJseSBTb3VyY2UN CitnbG9zc19hc21fc3JjcyA9ICQoZmlsdGVyICUuUywgJChnbG9zc19zcmNzKSkNCitnbG9zc19h c21fb2JqcyA9ICQocGF0c3Vic3QgJS5TLCAlLm8sICQobm90ZGlyICQoZ2xvc3NfYXNtX3NyY3Mp KSkNCitnbG9zc19hc21fZGVwcyA9ICQocGF0c3Vic3QgJS5TLCAlLmQsICQobm90ZGlyICQoZ2xv c3NfYXNtX3NyY3MpKSkNCisNCitnbG9zc19vYmpzICs9ICQoZ2xvc3NfYXNtX29ianMpDQorZGVw cyArPSAkKGdsb3NzX2FzbV9kZXBzKQ0KK2p1bmsgKz0gJChnbG9zc19hc21fZGVwcykgJChnbG9z c19hc21fb2JqcykNCisNCitzeXNjYWxsc19xZW11X2FzbV9zcmNzID0gJChmaWx0ZXIgJS5TLCAk KHN5c2NhbGxzX3FlbXVfc3JjKSkNCitzeXNjYWxsc19xZW11X2FzbV9vYmpzID0gJChwYXRzdWJz dCAlLlMsICUubywgJChub3RkaXINCiQoc3lzY2FsbHNfcWVtdV9hc21fc3JjcykpKQ0KK3N5c2Nh bGxzX3FlbXVfYXNtX2RlcHMgPSAkKHBhdHN1YnN0ICUuUywgJS5kLCAkKG5vdGRpcg0KJChzeXNj YWxsc19xZW11X2FzbV9zcmNzKSkpDQorDQorc3lzY2FsbHNfcWVtdV9vYmpzICs9ICQoc3lzY2Fs bHNfcWVtdV9hc21fb2JqcykNCitkZXBzICs9ICQoc3lzY2FsbHNfcWVtdV9hc21fZGVwcykNCitq dW5rICs9ICQoc3lzY2FsbHNfcWVtdV9hc21fZGVwcykgJChzeXNjYWxsc19xZW11X2FzbV9vYmpz KQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIEJ1aWxkIGxpYmdsb3NzLmENCisjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQotLS0tDQorDQorZ2xvc3NfbGliICA9IGxpYmdsb3NzLmENCiskKGdsb3NzX2xpYikg OiAkKGdsb3NzX29ianMpDQorCSQoQVIpIHJjdiAkQCAkXg0KKwkkKFJBTkxJQikgJEANCisNCitq dW5rICs9ICQoZ2xvc3NfbGliKQ0KKw0KK2luc3RhbGxfaGRycyArPSAkKGdsb3NzX2hkcnMpDQor aW5zdGFsbF9saWJzICs9ICQoZ2xvc3NfbGliKQ0KK2luc3RhbGxfc3BlY3MgKz0gJChnbG9zc19z cGVjcykNCitpbnN0YWxsX2xkc2NyaXB0cyArPSAkKGdsb3NzX2xkc2NyaXB0cykNCisNCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQotLS0tDQorIyBCdWlsZCBsaWJzeXNfcWVtdS5hDQorIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K LS0tLQ0KKw0KKyQobGlic3lzX3FlbXUpIDogJChzeXNjYWxsc19xZW11X29ianMpDQorCSQoQVIp IHJjdiAkQCAkXg0KKwkkKFJBTkxJQikgJEANCisNCitqdW5rICs9ICQobGlic3lzX3FlbXUpDQor DQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgQnVpbGQgbGlic3lzX29wZW5vY2QuYQ0KKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCi0tLS0NCisNCiskKGxpYnN5c19vcGVub2NkKSA6ICQoc3lzY2FsbHNfb3Blbm9j ZF9vYmpzKQ0KKwkkKEFSKSByY3YgJEAgJF4NCisJJChSQU5MSUIpICRADQorDQoranVuayArPSAk KGxpYnN5c19vcGVub2NkKQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIEJ1aWxkIGNydFgg b2JqZWN0IGZpbGVzDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KK2NydFhfb2JqICA9ICQocGF0 c3Vic3QgJS5TLCAlLm8sICQoY3J0WF9zb3VyY2UpKQ0KK2NydFhfZGVwcyA9ICQocGF0c3Vic3Qg JS5TLCAlLmQsICQoY3J0WF9zb3VyY2UpKQ0KKw0KK2RlcHMgKz0gJChjcnRYX2RlcHMpDQoranVu ayArPSAkKGNydFhfZGVwcykgJChjcnRYX29iaikNCisNCitpbnN0YWxsX2xpYnMgKz0gJChjcnRY X29iaikNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorIyBBdXRvZGVwZW5kZW5jeSBmaWxlcw0K KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi0tLS0NCisNCistaW5jbHVkZSAkKGRlcHMpDQorDQorZGVwcyA6ICQo ZGVwcykNCisuUEhPTlkgOiBkZXBzDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgSW5zdGFs bGF0aW9uDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKw0KK2luc3RhbGxfaGRyc193ZGlyICs9ICQo YWRkcHJlZml4ICQoc3JjX2RpcikvLCAkKGluc3RhbGxfaGRycykpDQoraW5zdGFsbC1oZHJzIDog JChpbnN0YWxsX2hkcnNfd2RpcikNCisJdGVzdCAtZCAkKGluc3RhbGxfaGRyc19kaXIpIHx8IG1r ZGlyIC1wICQoaW5zdGFsbF9oZHJzX2RpcikNCisJZm9yIGZpbGUgaW4gJF47IGRvIFwNCisJCSQo SU5TVEFMTF9EQVRBKSAkJGZpbGUgJChpbnN0YWxsX2hkcnNfZGlyKS87IFwNCisJZG9uZQ0KKw0K K2luc3RhbGwtbGlicyA6ICQoaW5zdGFsbF9saWJzKQ0KKwl0ZXN0IC1kICQoaW5zdGFsbF9saWJz X2RpcikgfHwgbWtkaXIgLXAgJChpbnN0YWxsX2xpYnNfZGlyKQ0KKwlmb3IgZmlsZSBpbiAkXjsg ZG8gXA0KKwkJJChJTlNUQUxMX0RBVEEpICQkZmlsZSAkKGluc3RhbGxfbGlic19kaXIpLyQkZmls ZTsgXA0KKwlkb25lDQorDQoraW5zdGFsbC1zcGVjcyA6ICQoaW5zdGFsbF9zcGVjcykNCisJdGVz dCAtZCAkKGluc3RhbGxfbGlic19kaXIpIHx8IG1rZGlyIC1wICQoaW5zdGFsbF9saWJzX2RpcikN CisJZm9yIGZpbGUgaW4gJF47IGRvIFwNCisJCSQoSU5TVEFMTF9EQVRBKSAkJGZpbGUgJChpbnN0 YWxsX2xpYnNfZGlyKS87IFwNCisJZG9uZQ0KKw0KK2luc3RhbGwtbGRzY3JpcHRzIDogJChpbnN0 YWxsX2xkc2NyaXB0cykNCisJdGVzdCAtZCAkKGluc3RhbGxfbGlic19kaXIpIHx8IG1rZGlyIC1w ICQoaW5zdGFsbF9saWJzX2RpcikNCisJZm9yIGZpbGUgaW4gJF47IGRvIFwNCisJCSQoSU5TVEFM TF9EQVRBKSAkJGZpbGUgJChpbnN0YWxsX2xpYnNfZGlyKS87IFwNCisJZG9uZQ0KKw0KK2luc3Rh bGwgOiBpbnN0YWxsLWhkcnMgaW5zdGFsbC1saWJzIGluc3RhbGwtc3BlY3MgaW5zdGFsbC1sZHNj cmlwdHMNCisuUEhPTlkgOiBpbnN0YWxsIGluc3RhbGwtaGRycyBpbnN0YWxsLWxpYnMNCisNCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQotLS0tDQorIyBSZWdlbmVyYXRlIGNvbmZpZ3VyZSBpbmZvcm1hdGlvbg0K KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi0tLS0NCisNCitjb25maWd1cmVfcHJlcmVxID0gXA0KKyAgJChzcmNf ZGlyKS9jb25maWd1cmUuaW4gXA0KKw0KKyQoc3JjX2RpcikvY29uZmlndXJlIDogJChjb25maWd1 cmVfcHJlcmVxKQ0KKwljZCAkKHNyY19kaXIpICYmIGF1dG9jb25mDQorDQorY29uZmlnLnN0YXR1 cyA6ICQoc3JjX2RpcikvY29uZmlndXJlDQorCS4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sNCisN CitNYWtlZmlsZSA6ICQoc3JjX2RpcikvTWFrZWZpbGUuaW4gY29uZmlnLnN0YXR1cw0KKwkuL2Nv bmZpZy5zdGF0dXMNCisNCitkaXN0X2p1bmsgKz0gY29uZmlnLnN0YXR1cyBNYWtlZmlsZSBjb25m aWcubG9nDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgRGVmYXVsdA0KKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi0tLS0NCisNCithbGwgOiAkKGJvYXJkX291dGRpcikgJChpbnN0YWxsX2xpYnMpDQorLlBI T05ZIDogYWxsDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgQ2xlYW4gdXAganVuaw0KKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCi0tLS0NCisNCitjbGVhbiA6DQorCXJtIC1yZiAqfiBcIyogJChqdW5rKQ0K Kw0KK2Rpc3RjbGVhbiA6DQorCXJtIC1yZiAqfiBcIyogJChqdW5rKSAkKGRpc3RfanVuaykNCisN CisuUEhPTlkgOiBjbGVhbiBkaXN0Y2xlYW4NCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2Ev YXBwLmVsZi5sZCBiL2xpYmdsb3NzL3h0ZW5zYS9hcHAuZWxmLmxkDQpuZXcgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMDAwMDAwMDAwLi4xMmM3ZWI4YWINCi0tLSAvZGV2L251bGwNCisrKyBiL2xp Ymdsb3NzL3h0ZW5zYS9hcHAuZWxmLmxkDQpAQCAtMCwwICsxLDE5MCBAQA0KK19fc3RhY2sgPSBP UklHSU4oZHJhbV9zZWcpICsgTEVOR1RIKGRyYW1fc2VnKTsNCitfX01JTl9TVEFDS19TSVpFID0g MHgxMDAwOw0KKw0KK0VOVFJZKF9zdGFydCkNCitTRUNUSU9OUw0KK3sNCisgIC4gPSBTRUdNRU5U X1NUQVJUKCJpcmFtX3NlZyIsIDApOw0KKyAgLnZlY3RvcnMgICAgOg0KKyAgew0KKyAgICBfdmVj dG9yX3RhYmxlID0gQUJTT0xVVEUoLik7DQorICAgIC4gPSAweDA7DQorICAgIEtFRVAoKiguV2lu ZG93VmVjdG9ycy50ZXh0KSk7DQorICAgIC4gPSAweDE4MDsNCisgICAgS0VFUCgqKC5MZXZlbDJJ bnRlcnJ1cHRWZWN0b3IudGV4dCkpOw0KKyAgICAuID0gMHgxYzA7DQorICAgIEtFRVAoKiguTGV2 ZWwzSW50ZXJydXB0VmVjdG9yLnRleHQpKTsNCisgICAgLiA9IDB4MjAwOw0KKyAgICBLRUVQKCoo LkxldmVsNEludGVycnVwdFZlY3Rvci50ZXh0KSk7DQorICAgIC4gPSAweDI0MDsNCisgICAgS0VF UCgqKC5MZXZlbDVJbnRlcnJ1cHRWZWN0b3IudGV4dCkpOw0KKyAgICAuID0gMHgyODA7DQorICAg IEtFRVAoKiguRGVidWdFeGNlcHRpb25WZWN0b3IudGV4dCkpOw0KKyAgICAuID0gMHgyYzA7DQor ICAgIEtFRVAoKiguTk1JRXhjZXB0aW9uVmVjdG9yLnRleHQpKTsNCisgICAgLiA9IDB4MzAwOw0K KyAgICBLRUVQKCooLktlcm5lbEV4Y2VwdGlvblZlY3Rvci50ZXh0KSk7DQorICAgIC4gPSAweDM0 MDsNCisgICAgS0VFUCgqKC5Vc2VyRXhjZXB0aW9uVmVjdG9yLnRleHQpKTsNCisgICAgLiA9IDB4 M0MwOw0KKyAgICBLRUVQKCooLkRvdWJsZUV4Y2VwdGlvblZlY3Rvci50ZXh0KSk7DQorICAgIC4g PSAweDQwMDsNCisgICAgS0VFUCgqKC5SZXNldFZlY3Rvci50ZXh0KSk7DQorICAgICooLipWZWN0 b3IubGl0ZXJhbCkNCisgICAgLiA9IEFMSUdOICgxNik7DQorICB9ID4gaXJhbV9zZWcNCisNCisg IHRleHQgICAgOg0KKyAgew0KKyAgICBLRUVQICgqKC5pbml0LmxpdGVyYWwpKQ0KKyAgICBLRUVQ ICgqKFNPUlRfTk9ORSguaW5pdCkpKQ0KKyAgICAqKC5saXRlcmFsIC50ZXh0IC5zdHViIC5saXRl cmFsLiogLnRleHQuKiAuZ251LmxpbmtvbmNlLmxpdGVyYWwuKg0KLmdudS5saW5rb25jZS50Liou bGl0ZXJhbCAuZ251LmxpbmtvbmNlLnQuKikNCisgICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25z IGFyZSBoYW5kbGVkIHNwZWNpYWxseSBieSBlbGYzMi5lbS4gICovDQorICAgICooLmdudS53YXJu aW5nKQ0KKyAgICBLRUVQICgqKC5maW5pLmxpdGVyYWwpKQ0KKyAgICBLRUVQICgqKFNPUlRfTk9O RSguZmluaSkpKQ0KKyAgfSA+IGlyYW1fc2VnDQorDQorICBQUk9WSURFIChfX2V0ZXh0ID0gLik7 DQorICBQUk9WSURFIChfZXRleHQgPSAuKTsNCisgIFBST1ZJREUgKGV0ZXh0ID0gLik7DQorDQor ICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRv IGFkanVzdCB1cCB0bw0KKyAgICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24g dGhlIG5leHQgcGFnZSB1cC4gICovDQorICAuID0gQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0la RSkpIC0gKChDT05TVEFOVCAoTUFYUEFHRVNJWkUpIC0gLikgJg0KKENPTlNUQU5UIChNQVhQQUdF U0laRSkgLSAxKSk7IC4gPSBEQVRBX1NFR01FTlRfQUxJR04gKENPTlNUQU5UDQooTUFYUEFHRVNJ WkUpLCBDT05TVEFOVCAoQ09NTU9OUEFHRVNJWkUpKTsNCisNCisgIC5yb2RhdGEgICAgOg0KKyAg ew0KKyAgICAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKQ0KKyAgICAqKC5y b2RhdGExKQ0KKyAgICAqKC5zZGF0YTIgLnNkYXRhMi4qIC5nbnUubGlua29uY2UuczIuKikNCisg ICAgKiguc2JzczIgLnNic3MyLiogLmdudS5saW5rb25jZS5zYjIuKikNCisgIH0NCisNCisgIC5w cmVpbml0X2FycmF5ICAgIDoNCisgIHsNCisgICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9h cnJheV9zdGFydCA9IC4pOw0KKyAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkNCisgICAgUFJP VklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsNCisgIH0NCisgIC5pbml0X2Fy cmF5ICAgIDoNCisgIHsNCisgICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9 IC4pOw0KKyAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9QUklPUklUWSguaW5pdF9hcnJheS4qKQ0K U09SVF9CWV9JTklUX1BSSU9SSVRZKC5jdG9ycy4qKSkpDQorICAgIEtFRVAgKCooLmluaXRfYXJy YXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0YmVnaW4/Lm8NCipjcnRlbmQubyAqY3J0 ZW5kPy5vICkgLmN0b3JzKSkNCisgICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQg PSAuKTsNCisgIH0NCisgIC5maW5pX2FycmF5ICAgIDoNCisgIHsNCisgICAgUFJPVklERV9ISURE RU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOw0KKyAgICBLRUVQICgqKFNPUlRfQllfSU5JVF9Q UklPUklUWSguZmluaV9hcnJheS4qKQ0KU09SVF9CWV9JTklUX1BSSU9SSVRZKC5kdG9ycy4qKSkp DQorICAgIEtFRVAgKCooLmZpbmlfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0YmVnaW4ubyAqY3J0 YmVnaW4/Lm8NCipjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkNCisgICAgUFJPVklERV9I SURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsNCisgIH0NCisgIC5jdG9ycyAgICAgICAgICA6 DQorICB7DQorICAgIC8qIGdjYyB1c2VzIGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YN CisgICAgICAgdGhlIGNvbnN0cnVjdG9ycywgc28gd2UgbWFrZSBzdXJlIGl0IGlzDQorICAgICAg IGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlzIGEgd2lsZGNhcmQsIGl0DQorICAgICAgIGRvZXNuJ3Qg bWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMgbm90DQorICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5z dCBjcnRiZWdpbi5vOyB0aGUNCisgICAgICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0 byBtYXRjaCBhDQorICAgICAgIHdpbGRjYXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhh dCBpdA0KKyAgICAgICBkb2Vzbid0IG1hdHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubw0K KyAgICAgICBpcyBpbi4gICovDQorICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpDQorICAg IEtFRVAgKCpjcnRiZWdpbj8ubyguY3RvcnMpKQ0KKyAgICAvKiBXZSBkb24ndCB3YW50IHRvIGlu Y2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24gZnJvbQ0KKyAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1 bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0b3JzLg0KKyAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBm cm9tIHRoZSBjcnRlbmQgZmlsZSBjb250YWlucyB0aGUNCisgICAgICAgZW5kIG9mIGN0b3JzIG1h cmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0ICovDQorICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgq Y3J0ZW5kLm8gKmNydGVuZD8ubyApIC5jdG9ycykpDQorICAgIEtFRVAgKCooU09SVCguY3RvcnMu KikpKQ0KKyAgICBLRUVQICgqKC5jdG9ycykpDQorICB9DQorICAuZHRvcnMgICAgICAgICAgOg0K KyAgew0KKyAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQ0KKyAgICBLRUVQICgqY3J0YmVn aW4/Lm8oLmR0b3JzKSkNCisgICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0 ZW5kPy5vICkgLmR0b3JzKSkNCisgICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpDQorICAgIEtF RVAgKCooLmR0b3JzKSkNCisgIH0NCisNCisgIF9kYXRhX3N0YXJ0ID0gLjsNCisgIC5kYXRhICAg ICAgICAgIDoNCisgIHsNCisgICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQ0K KyAgICBTT1JUKENPTlNUUlVDVE9SUykNCisgICAgKiguZGF0YTEpDQorICB9DQorICBfZWRhdGEg PSAuOyBQUk9WSURFIChlZGF0YSA9IC4pOw0KKyAgLiA9IC47DQorICBfX2Jzc19zdGFydCA9IC47 DQorICAuYnNzICAgICAgICAgICAgOg0KKyAgew0KKyAgICAqKC5keW5zYnNzKQ0KKyAgICAqKC5z YnNzIC5zYnNzLiogLmdudS5saW5rb25jZS5zYi4qKQ0KKyAgICAqKC5zY29tbW9uKQ0KKyAgICAq KC5keW5ic3MpDQorICAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopDQorICAgICoo Q09NTU9OKQ0KKyAgICAvKiBBbGlnbiBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rp b24gb2NjdXBpZXMgc3BhY2UgdXAgdG8NCisgICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0 byBlbnN1cmUgY29ycmVjdCBhbGlnbm1lbnQgZXZlbiBpZiB0aGUNCisgICAgICAuYnNzIHNlY3Rp b24gZGlzYXBwZWFycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4NCisgICAg ICBGSVhNRTogV2h5IGRvIHdlIG5lZWQgaXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9u LCB3ZSBkbw0Kbm90DQorICAgICAgcGFkIHRoZSAuZGF0YSBzZWN0aW9uLiAgKi8NCisgICAgLiA9 IEFMSUdOKC4gIT0gMCA/IDMyIC8gOCA6IDEpOw0KKyAgfQ0KKyAgLiA9IEFMSUdOKDMyIC8gOCk7 DQorICAuID0gQUxJR04oMzIgLyA4KTsNCisgIF9lbmQgPSAuOyBQUk9WSURFIChlbmQgPSAuKTsN CisgIC4gPSBEQVRBX1NFR01FTlRfRU5EICguKTsNCisNCisgIC8qIENoZWNrIGlmIGRhdGEgKyBo ZWFwICsgc3RhY2sgZXhjZWVkcyBSQU0gbGltaXQgKi8NCisgIEFTU0VSVCguIDw9IF9fc3RhY2sg LSBfX01JTl9TVEFDS19TSVpFLCAicmVnaW9uIERSQU0gb3ZlcmZsb3dlZCBieQ0KLmRhdGEgYW5k IC5ic3Mgc2VjdGlvbnMiKQ0KKw0KKyAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8N CisgIC5zdGFiICAgICAgICAgIDAgOiB7ICooLnN0YWIpIH0NCisgIC5zdGFic3RyICAgICAgIDAg OiB7ICooLnN0YWJzdHIpIH0NCisgIC5zdGFiLmV4Y2wgICAgIDAgOiB7ICooLnN0YWIuZXhjbCkg fQ0KKyAgLnN0YWIuZXhjbHN0ciAgMCA6IHsgKiguc3RhYi5leGNsc3RyKSB9DQorICAuc3RhYi5p bmRleCAgICAwIDogeyAqKC5zdGFiLmluZGV4KSB9DQorICAuc3RhYi5pbmRleHN0ciAwIDogeyAq KC5zdGFiLmluZGV4c3RyKSB9DQorICAuY29tbWVudCAgICAgICAwIDogeyAqKC5jb21tZW50KSB9 DQorICAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMgOiB7ICooLmdudS5idWlsZC5hdHRyaWJ1dGVzDQou Z251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQ0KKyAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuDQor ICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZl IHRvIHRoZQ0KYmVnaW5uaW5nDQorICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVt IGF0IDAuICAqLw0KKyAgLyogRFdBUkYgMSAqLw0KKyAgLmRlYnVnICAgICAgICAgIDAgOiB7ICoo LmRlYnVnKSB9DQorICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQ0KKyAgLyogR05V IERXQVJGIDEgZXh0ZW5zaW9ucyAqLw0KKyAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVn X3NyY2luZm8pIH0NCisgIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9 DQorICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8NCisgIC5kZWJ1Z19hcmFuZ2VzICAwIDog eyAqKC5kZWJ1Z19hcmFuZ2VzKSB9DQorICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdf cHVibmFtZXMpIH0NCisgIC8qIERXQVJGIDIgKi8NCisgIC5kZWJ1Z19pbmZvICAgICAwIDogeyAq KC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQ0KKyAgLmRlYnVnX2FiYnJldiAgIDAg OiB7ICooLmRlYnVnX2FiYnJldikgfQ0KKyAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVn X2xpbmUgLmRlYnVnX2xpbmUuKiAuZGVidWdfbGluZV9lbmQpIH0NCisgIC5kZWJ1Z19mcmFtZSAg ICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQ0KKyAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRl YnVnX3N0cikgfQ0KKyAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQ0KKyAg LmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0NCisgIC8qIFNHSS9NSVBT IERXQVJGIDIgZXh0ZW5zaW9ucyAqLw0KKyAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1 Z193ZWFrbmFtZXMpIH0NCisgIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25h bWVzKSB9DQorICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQ0K KyAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQ0KKyAgLyogRFdB UkYgMyAqLw0KKyAgLmRlYnVnX3B1YnR5cGVzIDAgOiB7ICooLmRlYnVnX3B1YnR5cGVzKSB9DQor ICAuZGVidWdfcmFuZ2VzICAgMCA6IHsgKiguZGVidWdfcmFuZ2VzKSB9DQorICAvKiBEV0FSRiBF eHRlbnNpb24uICAqLw0KKyAgLmRlYnVnX21hY3JvICAgIDAgOiB7ICooLmRlYnVnX21hY3JvKSB9 DQorICAuZGVidWdfYWRkciAgICAgMCA6IHsgKiguZGVidWdfYWRkcikgfQ0KKyAgLmdudS5hdHRy aWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfQ0KKyAgL0RJU0NBUkQvIDog eyAqKC5ub3RlLkdOVS1zdGFjaykgKiguZ251X2RlYnVnbGluaykgKiguZ251Lmx0b18qKSB9DQor fQ0KKw0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZC5lbGYuc3BlY3MNCmIvbGli Z2xvc3MveHRlbnNhL2JvYXJkLmVsZi5zcGVjcw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMC4uODdjZmYxOWU3DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVu c2EvYm9hcmQuZWxmLnNwZWNzDQpAQCAtMCwwICsxLDUgQEANCisqc3RhcnRmaWxlOg0KK2NydDEt Ym9hcmRzJU8lcw0KKw0KKypsaWI6DQorLWxjIC0td2hvbGUtYXJjaGl2ZSAtbGdsb3NzIC0tbm8t d2hvbGUtYXJjaGl2ZSAtbHB0aHJlYWRfc3R1YnMgLWxjDQolVG1lbW9yeS5lbGYubGQgJVRhcHAu ZWxmLmxkDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9ib2FyZC5j DQpiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvYm9hcmQuYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uZDNjYjQ4MmQ1DQotLS0gL2Rldi9udWxsDQorKysgYi9s aWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL2JvYXJkLmMNCkBAIC0wLDAgKzEsMjAgQEANCisj aW5jbHVkZSA8c3RkaW50Lmg+DQorI2luY2x1ZGUgPHNvYy91YXJ0Lmg+DQorDQordm9pZCBib2Fy ZF9pbml0KHZvaWQpDQorew0KKyAgICBXUklURV9SRUdJU1RFUihVQVJUMF9DTEtESVZfUkVHLCBV QVJUMF9DTEtESVZfVkFMKTsNCit9DQorDQordm9pZCBib2FyZF91YXJ0X3dyaXRlX2NoYXIoY2hh ciBjKQ0KK3sNCisgICAgLyogd2FpdCB1bnRpbCB0eGZpZm9fY250ID09IDAgKi8NCisgICAgd2hp bGUgKFVBUlQwX1RYRklGT19DTlQpIHsNCisgICAgICAgIDsNCisgICAgfQ0KKyAgICBpZiAoYyA9 PSAnXG4nKSB7DQorICAgICAgICBXUklURV9SRUdJU1RFUihVQVJUMF9UWF9BRERSLCAnXHInKTsN CisgICAgfQ0KKyAgICBXUklURV9SRUdJU1RFUihVQVJUMF9UWF9BRERSLCBjKTsNCit9DQorDQpk aWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9pbmNsdWRlL3NvYy9jcHUu aA0KYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL2luY2x1ZGUvc29jL2NwdS5oDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi5kNTcwZDM1MDINCi0tLSAvZGV2L251 bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvY3B1LmgN CkBAIC0wLDAgKzEsMTEgQEANCisjaWZuZGVmIFNPQ19DUFVfSA0KKyNkZWZpbmUgU09DX0NQVV9I DQorDQorLyoNCisgKiBFU1AzMiBzdGFydHMgd2l0aCBDUFUgZnJlcXVlbmN5IDQwTUh6DQorICog TGV0J3MgZG8gbm90IHJlY29uZmlndXJlIGl0IHRvIHNpbXBsaWZ5IGxpYmdsb3NzDQorICovDQor I2RlZmluZSBDUFVfRlJFUVVFTkNZX01IWiA0MA0KKyNkZWZpbmUgQ1BVX0ZSRVFVRU5DWV9IWiAo Q1BVX0ZSRVFVRU5DWV9NSFogKiAxMDAwMDAwKQ0KKw0KKyNlbmRpZiAvLyBTT0NfQ1BVX0gNCmRp ZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL2luY2x1ZGUvc29jL3VhcnQu aA0KYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL2luY2x1ZGUvc29jL3VhcnQuaA0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNjVhMjgzZjJjDQotLS0gL2Rldi9u dWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL2luY2x1ZGUvc29jL3VhcnQu aA0KQEAgLTAsMCArMSwxOSBAQA0KKyNpZm5kZWYgU09DX1VBUlRfSA0KKyNkZWZpbmUgU09DX1VB UlRfSA0KKw0KKyNpbmNsdWRlIDxzb2MvY3B1Lmg+DQorI2luY2x1ZGUgPHJlZ2lzdGVyX2FjY2Vz cy5oPg0KKw0KKyNkZWZpbmUgVUFSVDBfQkFVRFJBVEUJCTExNTIwMA0KKw0KKyNkZWZpbmUgVUFS VDBfVFhfQUREUgkJMHg2MDAwMDAwMA0KKyNkZWZpbmUgVUFSVDBfQkFTRQkJMHgzZmY0MDAwMA0K KyNkZWZpbmUgVUFSVDBfQ0xLRElWX1JFRwkoVUFSVDBfQkFTRSArIDB4MTQpDQorI2RlZmluZSBV QVJUMF9TVEFUVVMJCShVQVJUMF9CQVNFICsgMHgxYykNCisjZGVmaW5lIFVBUlQwX0NMS0RJVl9W QUwJKENQVV9GUkVRVUVOQ1lfSFogLyBVQVJUMF9CQVVEUkFURSApDQorI2RlZmluZSBVQVJUMF9U WEZJRk9fQ05UCSgoKFJFQURfUkVHSVNURVIoVUFSVDBfU1RBVFVTKSkgPj4gMTYpDQomIDB4ZmYp DQorDQorDQordm9pZCBib2FyZF91YXJ0X3dyaXRlX2NoYXIoY2hhciBjKTsNCisNCisjZW5kaWYg Ly8gU09DX1VBUlRfSA0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIv bWVtb3J5LmVsZi5sZA0KYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL21lbW9yeS5lbGYu bGQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmZhMGU0MjNiNQ0KLS0t IC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9tZW1vcnkuZWxm LmxkDQpAQCAtMCwwICsxLDI2IEBADQorLyoNCisgKiBJUk9NL0RSQU0gZGVmaW5pdGlvbiBpbiBR RU1VOg0KKyAqICAgICBbRVNQMzJfTUVNUkVHSU9OX0lST01dID0geyAweDQwMDAwMDAwLCAweDcw MDAwIH0sDQorICogICAgIFtFU1AzMl9NRU1SRUdJT05fRFJBTV0gPSB7IDB4M2ZmYWUwMDAsIDB4 NTIwMDAgfSwNCisgKg0KKyAqIEluIHRoZW9yeSB3ZSBjb3VsZCB1c2Ugd2hvbGUgRFJBTSBzZWN0 aW9uLCBidXQgSSBoYWQgc29tZSBmYXVsdHMNCndoZW4gdXNpbmcNCisgKiBtZW1vcnkgaW4gcmFu Z2UgMHgzZmZhZTAwMCAtIDB4M2ZmYjAwMDANCisgKg0KKyAqIEJ1dCB1c2VkIG1lbW9yeSByYW5n ZSBmb3IgZGF0YSBzdWNoIGFzIGVzcC1pZGYgZm9yIEVTUDMyIHRvIHNhdGlzZnkNCnVzZXIncw0K KyAqIGV4cGVjdGF0aW9uIG9uIGNoaXAgZW11bGF0aW9uDQorICoNCisgKiBQYXNzICctLWRlZnN5 bT1lbnRpcmVfZHJhbV9zZWc9MScgdG8gbGlua2VyIHNjcmlwdCB0byB1c2Ugd2hvbGUNCkRSQU0N CisgKg0KKyAqLw0KKw0KK01FTU9SWQ0KK3sNCisgIGlyYW1fc2VnICAoWCkgOiBvcmcgPSAweDQw MDc4MDAwLCBsZW4gPSAweDI4MDAwDQorLyogNjRrIGF0IHRoZSBlbmQgb2YgRFJBTSwgYWZ0ZXIg Uk9NIGJvb3Rsb2FkZXIgc3RhY2sNCisgKiBvciBlbnRpcmUgRFJBTSAoZm9yIFFFTVUgb25seSkN CisgKi8NCisgIGRyYW1fc2VnIChSVykgOiBvcmcgPSBERUZJTkVEKGVudGlyZV9kcmFtX3NlZykg PyAweDNGRkIwMDAwIDoNCjB4M0ZGRjAwMDAsDQorICAgICAgICAgICAgICAgICAgbGVuID0gREVG SU5FRChlbnRpcmVfZHJhbV9zZWcpID8gMHg1MDAwMCA6IDB4MTAwMDANCit9DQorDQorDQpkaWZm IC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMNCmIvbGliZ2xv c3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAuLmQzY2I0ODJkNQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3Mv eHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMNCkBAIC0wLDAgKzEsMjAgQEANCisjaW5jbHVk ZSA8c3RkaW50Lmg+DQorI2luY2x1ZGUgPHNvYy91YXJ0Lmg+DQorDQordm9pZCBib2FyZF9pbml0 KHZvaWQpDQorew0KKyAgICBXUklURV9SRUdJU1RFUihVQVJUMF9DTEtESVZfUkVHLCBVQVJUMF9D TEtESVZfVkFMKTsNCit9DQorDQordm9pZCBib2FyZF91YXJ0X3dyaXRlX2NoYXIoY2hhciBjKQ0K K3sNCisgICAgLyogd2FpdCB1bnRpbCB0eGZpZm9fY250ID09IDAgKi8NCisgICAgd2hpbGUgKFVB UlQwX1RYRklGT19DTlQpIHsNCisgICAgICAgIDsNCisgICAgfQ0KKyAgICBpZiAoYyA9PSAnXG4n KSB7DQorICAgICAgICBXUklURV9SRUdJU1RFUihVQVJUMF9UWF9BRERSLCAnXHInKTsNCisgICAg fQ0KKyAgICBXUklURV9SRUdJU1RFUihVQVJUMF9UWF9BRERSLCBjKTsNCit9DQorDQpkaWZmIC0t Z2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2luY2x1ZGUvc29jL2NwdS5oDQpi L2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9pbmNsdWRlL3NvYy9jcHUuaA0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uZDU3MGQzNTAyDQotLS0gL2Rldi9udWxs DQorKysgYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvaW5jbHVkZS9zb2MvY3B1LmgN CkBAIC0wLDAgKzEsMTEgQEANCisjaWZuZGVmIFNPQ19DUFVfSA0KKyNkZWZpbmUgU09DX0NQVV9I DQorDQorLyoNCisgKiBFU1AzMiBzdGFydHMgd2l0aCBDUFUgZnJlcXVlbmN5IDQwTUh6DQorICog TGV0J3MgZG8gbm90IHJlY29uZmlndXJlIGl0IHRvIHNpbXBsaWZ5IGxpYmdsb3NzDQorICovDQor I2RlZmluZSBDUFVfRlJFUVVFTkNZX01IWiA0MA0KKyNkZWZpbmUgQ1BVX0ZSRVFVRU5DWV9IWiAo Q1BVX0ZSRVFVRU5DWV9NSFogKiAxMDAwMDAwKQ0KKw0KKyNlbmRpZiAvLyBTT0NfQ1BVX0gNCmRp ZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvaW5jbHVkZS9zb2MvdWFy dC5oDQpiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9pbmNsdWRlL3NvYy91YXJ0LmgN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjY1YTI4M2YyYw0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2luY2x1ZGUvc29j L3VhcnQuaA0KQEAgLTAsMCArMSwxOSBAQA0KKyNpZm5kZWYgU09DX1VBUlRfSA0KKyNkZWZpbmUg U09DX1VBUlRfSA0KKw0KKyNpbmNsdWRlIDxzb2MvY3B1Lmg+DQorI2luY2x1ZGUgPHJlZ2lzdGVy X2FjY2Vzcy5oPg0KKw0KKyNkZWZpbmUgVUFSVDBfQkFVRFJBVEUJCTExNTIwMA0KKw0KKyNkZWZp bmUgVUFSVDBfVFhfQUREUgkJMHg2MDAwMDAwMA0KKyNkZWZpbmUgVUFSVDBfQkFTRQkJMHgzZmY0 MDAwMA0KKyNkZWZpbmUgVUFSVDBfQ0xLRElWX1JFRwkoVUFSVDBfQkFTRSArIDB4MTQpDQorI2Rl ZmluZSBVQVJUMF9TVEFUVVMJCShVQVJUMF9CQVNFICsgMHgxYykNCisjZGVmaW5lIFVBUlQwX0NM S0RJVl9WQUwJKENQVV9GUkVRVUVOQ1lfSFogLyBVQVJUMF9CQVVEUkFURSApDQorI2RlZmluZSBV QVJUMF9UWEZJRk9fQ05UCSgoKFJFQURfUkVHSVNURVIoVUFSVDBfU1RBVFVTKSkgPj4gMTYpDQom IDB4ZmYpDQorDQorDQordm9pZCBib2FyZF91YXJ0X3dyaXRlX2NoYXIoY2hhciBjKTsNCisNCisj ZW5kaWYgLy8gU09DX1VBUlRfSA0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMv ZXNwMzJzMy9tZW1vcnkuZWxmLmxkDQpiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9t ZW1vcnkuZWxmLmxkDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi5mYTBl NDIzYjUNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzJz My9tZW1vcnkuZWxmLmxkDQpAQCAtMCwwICsxLDI2IEBADQorLyoNCisgKiBJUk9NL0RSQU0gZGVm aW5pdGlvbiBpbiBRRU1VOg0KKyAqICAgICBbRVNQMzJfTUVNUkVHSU9OX0lST01dID0geyAweDQw MDAwMDAwLCAweDcwMDAwIH0sDQorICogICAgIFtFU1AzMl9NRU1SRUdJT05fRFJBTV0gPSB7IDB4 M2ZmYWUwMDAsIDB4NTIwMDAgfSwNCisgKg0KKyAqIEluIHRoZW9yeSB3ZSBjb3VsZCB1c2Ugd2hv bGUgRFJBTSBzZWN0aW9uLCBidXQgSSBoYWQgc29tZSBmYXVsdHMNCndoZW4gdXNpbmcNCisgKiBt ZW1vcnkgaW4gcmFuZ2UgMHgzZmZhZTAwMCAtIDB4M2ZmYjAwMDANCisgKg0KKyAqIEJ1dCB1c2Vk IG1lbW9yeSByYW5nZSBmb3IgZGF0YSBzdWNoIGFzIGVzcC1pZGYgZm9yIEVTUDMyIHRvIHNhdGlz ZnkNCnVzZXIncw0KKyAqIGV4cGVjdGF0aW9uIG9uIGNoaXAgZW11bGF0aW9uDQorICoNCisgKiBQ YXNzICctLWRlZnN5bT1lbnRpcmVfZHJhbV9zZWc9MScgdG8gbGlua2VyIHNjcmlwdCB0byB1c2Ug d2hvbGUNCkRSQU0NCisgKg0KKyAqLw0KKw0KK01FTU9SWQ0KK3sNCisgIGlyYW1fc2VnICAoWCkg OiBvcmcgPSAweDQwMDc4MDAwLCBsZW4gPSAweDI4MDAwDQorLyogNjRrIGF0IHRoZSBlbmQgb2Yg RFJBTSwgYWZ0ZXIgUk9NIGJvb3Rsb2FkZXIgc3RhY2sNCisgKiBvciBlbnRpcmUgRFJBTSAoZm9y IFFFTVUgb25seSkNCisgKi8NCisgIGRyYW1fc2VnIChSVykgOiBvcmcgPSBERUZJTkVEKGVudGly ZV9kcmFtX3NlZykgPyAweDNGRkIwMDAwIDoNCjB4M0ZGRjAwMDAsDQorICAgICAgICAgICAgICAg ICAgbGVuID0gREVGSU5FRChlbnRpcmVfZHJhbV9zZWcpID8gMHg1MDAwMCA6IDB4MTAwMDANCit9 DQorDQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2NvbmZpZ3VyZSBiL2xpYmdsb3Nz L3h0ZW5zYS9jb25maWd1cmUNCm5ldyBmaWxlIG1vZGUgMTAwNzU1DQppbmRleCAwMDAwMDAwMDAu LjRjMjExOTdmYQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2NvbmZpZ3Vy ZQ0KQEAgLTAsMCArMSwzNzUzIEBADQorIyEgL2Jpbi9zaA0KKyMgR3Vlc3MgdmFsdWVzIGZvciBz eXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4NCisjIEdlbmVy YXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4NCisjDQorIw0KKyMgQ29weXJpZ2h0IChDKSAxOTky LCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLA0KKyMgMjAw MiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNv ZnR3YXJlDQorIyBGb3VuZGF0aW9uLCBJbmMuDQorIw0KKyMNCisjIFRoaXMgY29uZmlndXJlIHNj cmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorIyBn aXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkg aXQuDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIEluaXRpYWxpemF0aW9u LiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBCZSBtb3JlIEJvdXJuZSBj b21wYXRpYmxlDQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaA0KK2lm IHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwg Mj4mMTsgdGhlbg0KOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00LjIg dmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gNCisg ICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQorICBh bGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicNCisgIHNldG9wdCBOT19HTE9CX1NVQlNUDQorZWxz ZQ0KKyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoDQorICAqcG9zaXgqKSA6DQor ICAgIHNldCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkNCisN CisNCithc19ubD0nDQorJw0KK2V4cG9ydCBhc19ubA0KKyMgUHJpbnRpbmcgYSBsb25nIHN0cmlu ZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuDQorYXNfZWNobz0nXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXA0KXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2FzX2VjaG89JGFzX2Vj aG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89JGFzX2VjaG8kYXNf ZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVmZXIgYSBrc2ggc2hl bGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uDQpTb2xhcmlzLA0K KyMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guDQoraWYgdGVzdCAt eiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXA0KKyAgICAmJiAodGVzdCAiWGBwcmludCAt ciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOw0KdGhlbg0KKyAgYXNf ZWNobz0ncHJpbnQgLXIgLS0nDQorICBhc19lY2hvX249J3ByaW50IC1ybiAtLScNCitlbGlmICh0 ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0 aGVuDQorICBhc19lY2hvPSdwcmludGYgJXNcbicNCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJw0K K2Vsc2UNCisgIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+L2Rl di9udWxsYCIgPSAiWC1uDQokYXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19ib2R5PSdldmFs IC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicNCisgICAgYXNfZWNob19uPScvdXNyL3VjYi9l Y2hvIC1uJw0KKyAgZWxzZQ0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJY XFwoLipcXCkiJw0KKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFyZz0kMTsNCisg ICAgICBjYXNlICRhcmcgaW4gIygNCisgICAgICAqIiRhc19ubCIqKQ0KKwlleHByICJYJGFyZyIg OiAiWFxcKC4qXFwpJGFzX25sIjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCgu KlxcKSJgOzsNCisgICAgICBlc2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCki IHwgdHIgLWQgIiRhc19ubCINCisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkNCisg ICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycNCisgIGZpDQorICBl eHBvcnQgYXNfZWNob19ib2R5DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2Vj aG8nDQorZmkNCisNCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0ZXN0ICIke1BB VEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFUT1I9Og0KKyAg KFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEg JiYgew0KKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2 L251bGwgMj4mMSB8fA0KKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0KK2ZpDQorDQor DQorIyBJRlMNCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2Vs eSB0aGF0IG9yZGVyLiAgUXVvdGluZw0KaXMNCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBm cm9tIGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4NCisjIChJZiBfQVNfUEFUSF9XQUxLIHdl cmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQNCisjIHNwbGl0 dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pDQorSUZTPSIgIiIJJGFzX25sIg0K Kw0KKyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5v IGRpcmVjdG9yeQ0Kc2VwYXJhdG9yLg0KK2FzX215c2VsZj0NCitjYXNlICQwIGluICMoKA0KKyAg KltcXC9dKiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZl X0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgdGVzdCAtciAiJGFz X2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsNCisgIGRvbmUNCitJRlM9 JGFzX3NhdmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisjIFdlIGRpZCBub3QgZmluZCBvdXJz ZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnDQorIyBpbiB3 aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguDQoraWYgdGVzdCAi eCRhc19teXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEg LWYgIiRhc19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNh bm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbg0KYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIN CisgIGV4aXQgMQ0KK2ZpDQorDQorIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVl ZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbg0KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBC dXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQNCjEiDQorIyBz dXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBj b3VsZA0KKyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuDQorZm9yIGFzX3ZhciBpbiBC QVNIX0VOViBFTlYgTUFJTCBNQUlMUEFUSA0KK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9 ID0geHNldCBcDQorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwg Mj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8DQo6DQorZG9uZQ0KK1BTMT0nJCAnDQorUFMyPSc+ICcN CitQUzQ9JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19BTEw9Qw0KK2V4cG9ydCBMQ19B TEwNCitMQU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQorIyBDRFBBVEguDQorKHVuc2V0 IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSA0KKw0KK2lmIHRlc3QgIngk Q09ORklHX1NIRUxMIiA9IHg7IHRoZW4NCisgIGFzX2JvdXJuZV9jb21wYXRpYmxlPSJpZiB0ZXN0 IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlDQpzaCkgPi9kZXYvbnVsbCAy PiYxOyB0aGVuIDoNCisgIGVtdWxhdGUgc2gNCisgIE5VTExDTUQ9Og0KKyAgIyBQcmUtNC4yIHZl cnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRAXCJ9LCB3aGljaA0K KyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4NCisg IGFsaWFzIC1nICdcJHsxK1wiXCRAXCJ9Jz0nXCJcJEBcIicNCisgIHNldG9wdCBOT19HTE9CX1NV QlNUDQorZWxzZQ0KKyAgY2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygNCisgICpw b3NpeCopIDoNCisgICAgc2V0IC1vIHBvc2l4IDs7ICMoDQorICAqKSA6DQorICAgICA7Ow0KK2Vz YWMNCitmaQ0KKyINCisgIGFzX3JlcXVpcmVkPSJhc19mbl9yZXR1cm4gKCkgeyAoZXhpdCBcJDEp OyB9DQorYXNfZm5fc3VjY2VzcyAoKSB7IGFzX2ZuX3JldHVybiAwOyB9DQorYXNfZm5fZmFpbHVy ZSAoKSB7IGFzX2ZuX3JldHVybiAxOyB9DQorYXNfZm5fcmV0X3N1Y2Nlc3MgKCkgeyByZXR1cm4g MDsgfQ0KK2FzX2ZuX3JldF9mYWlsdXJlICgpIHsgcmV0dXJuIDE7IH0NCisNCitleGl0Y29kZT0w DQorYXNfZm5fc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fc3VjY2VzcyBmYWls ZWQuOyB9DQorYXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVy ZSBzdWNjZWVkZWQuOyB9DQorYXNfZm5fcmV0X3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hv IGFzX2ZuX3JldF9zdWNjZXNzIGZhaWxlZC47IH0NCithc19mbl9yZXRfZmFpbHVyZSAmJiB7IGV4 aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X2ZhaWx1cmUgc3VjY2VlZGVkLjsNCn0NCitpZiAoIHNl dCB4OyBhc19mbl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9IFwiXCQxXCIgKTsgdGhlbiA6DQor DQorZWxzZQ0KKyAgZXhpdGNvZGU9MTsgZWNobyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2VyZSBu b3Qgc2F2ZWQuDQorZmkNCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxIg0KKyAgYXNf c3VnZ2VzdGVkPSIgDQphc19saW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJ TkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlcw0KdGVkIiBhc19saW5lbm9fMWE9XCRMSU5FTk8N CisgDQphc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19z dWdnZXN0ZWQ9JGFzX3N1Z2dlcw0KdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8NCisgIGV2YWwg J3Rlc3QgXCJ4XCRhc19saW5lbm9fMSdcJGFzX3J1bidcIiAhPQ0KXCJ4XCRhc19saW5lbm9fMidc JGFzX3J1bidcIiAmJg0KKyAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicg KyAxXGBcIiA9DQpcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEiDQorICBp ZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikgMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgYXNfaGF2ZV9y ZXF1aXJlZD15ZXMNCitlbHNlDQorICBhc19oYXZlX3JlcXVpcmVkPW5vDQorZmkNCisgIGlmIHRl c3QgeCRhc19oYXZlX3JlcXVpcmVkID0geHllcyAmJiAoZXZhbCAiJGFzX3N1Z2dlc3RlZCIpDQoy Pi9kZXYvbnVsbDsgdGhlbiA6DQorDQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUg0KK2FzX2ZvdW5kPWZhbHNlDQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhf U0VQQVJBVE9SL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgYXNfZm91bmQ9Og0K KyAgY2FzZSAkYXNfZGlyIGluICMoDQorCSAvKikNCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFz aCBrc2ggc2g1OyBkbw0KKwkgICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhpc3QsIHRvIHNh dmUgc2V2ZXJhbCBmb3Jrcy4NCisJICAgICBhc19zaGVsbD0kYXNfZGlyLyRhc19iYXNlDQorCSAg ICAgaWYgeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9 ICYmDQorCQkgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWly ZWQiIHwNCmFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIENP TkZJR19TSEVMTD0kYXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCisJCSAgIGlmIHsgJGFz X2VjaG8NCiIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19zdWdnZXN0ZWQiIHwgYXNfcnVuPWEg IiRhc19zaGVsbCI7IH0NCjI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGJyZWFrIDINCitmaQ0KK2Zp DQorCSAgIGRvbmU7Ow0KKyAgICAgICBlc2FjDQorICBhc19mb3VuZD1mYWxzZQ0KK2RvbmUNCisk YXNfZm91bmQgfHwgeyBpZiB7IHRlc3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4 ZSI7IH0gJiYNCisJICAgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNf cmVxdWlyZWQiIHwNCmFzX3J1bj1hICIkU0hFTEwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoNCisg IENPTkZJR19TSEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMNCitmaTsgfQ0KK0lGUz0k YXNfc2F2ZV9JRlMNCisNCisNCisgICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsg dGhlbiA6DQorICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBo YXZlIHRvIHByb3ZpZGUgYQ0KKwkjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0 aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbw0KKwkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBj YW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLg0KKwkjIFByZXNlcnZlIC12IGFuZCAt eCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuDQorCUJBU0hfRU5WPS9kZXYvbnVsbA0KKwlFTlY9 L2Rldi9udWxsDQorCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJB U0hfRU5WIEVOVg0KKwlleHBvcnQgQ09ORklHX1NIRUxMDQorCWNhc2UgJC0gaW4gIyAoKCgoDQor CSAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7DQorCSAgKnYqICkgYXNfb3B0cz0tdiA7 Ow0KKwkgICp4KiApIGFzX29wdHM9LXggOzsNCisJICAqICkgYXNfb3B0cz0gOzsNCisJZXNhYw0K KwlleGVjICIkQ09ORklHX1NIRUxMIiAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9DQor ZmkNCisNCisgICAgaWYgdGVzdCB4JGFzX2hhdmVfcmVxdWlyZWQgPSB4bm87IHRoZW4gOg0KKyAg JGFzX2VjaG8gIiQwOiBUaGlzIHNjcmlwdCByZXF1aXJlcyBhIHNoZWxsIG1vcmUgbW9kZXJuIHRo YW4gYWxsIg0KKyAgJGFzX2VjaG8gIiQwOiB0aGUgc2hlbGxzIHRoYXQgSSBmb3VuZCBvbiB5b3Vy IHN5c3RlbS4iDQorICBpZiB0ZXN0IHgke1pTSF9WRVJTSU9OK3NldH0gPSB4c2V0IDsgdGhlbg0K KyAgICAkYXNfZWNobyAiJDA6IEluIHBhcnRpY3VsYXIsIHpzaCAkWlNIX1ZFUlNJT04gaGFzIGJ1 Z3MgYW5kIHNob3VsZCINCisgICAgJGFzX2VjaG8gIiQwOiBiZSB1cGdyYWRlZCB0byB6c2ggNC4z LjQgb3IgbGF0ZXIuIg0KKyAgZWxzZQ0KKyAgICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1 Zy1hdXRvY29uZkBnbnUub3JnIGFib3V0IHlvdXIgc3lzdGVtLA0KKyQwOiBpbmNsdWRpbmcgYW55 IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcw0KKyQwOiBtZXNzYWdlLiBUaGVuIGlu c3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1bg0KKyQwOiB0aGUgc2NyaXB0IHVu ZGVyIHN1Y2ggYSBzaGVsbCBpZiB5b3UgZG8gaGF2ZSBvbmUuIg0KKyAgZmkNCisgIGV4aXQgMQ0K K2ZpDQorZmkNCitmaQ0KK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9DQorZXhwb3J0IFNI RUxMDQorIyBVbnNldCBtb3JlIHZhcmlhYmxlcyBrbm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhh dmlvciBvZiBjb21tb24NCnRvb2xzLg0KK0NMSUNPTE9SX0ZPUkNFPSBHUkVQX09QVElPTlM9DQor dW5zZXQgQ0xJQ09MT1JfRk9SQ0UgR1JFUF9PUFRJT05TDQorDQorIyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tICMjDQorIyMgTTRzaCBTaGVsbCBGdW5jdGlvbnMuICMjDQorIyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjDQorIyBhc19mbl91bnNldCBWQVINCisjIC0tLS0tLS0tLS0tLS0tLQ0KKyMg UG9ydGFibHkgdW5zZXQgVkFSLg0KK2FzX2ZuX3Vuc2V0ICgpDQorew0KKyAgeyBldmFsICQxPTsg dW5zZXQgJDE7fQ0KK30NCithc191bnNldD1hc19mbl91bnNldA0KKw0KKyMgYXNfZm5fc2V0X3N0 YXR1cyBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBTZXQgJD8gdG8gU1RB VFVTLCB3aXRob3V0IGZvcmtpbmcuDQorYXNfZm5fc2V0X3N0YXR1cyAoKQ0KK3sNCisgIHJldHVy biAkMQ0KK30gIyBhc19mbl9zZXRfc3RhdHVzDQorDQorIyBhc19mbl9leGl0IFNUQVRVUw0KKyMg LS0tLS0tLS0tLS0tLS0tLS0NCisjIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVTLCBldmVuIGlu IGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4NCithc19mbl9leGl0ICgpDQorew0KKyAg c2V0ICtlDQorICBhc19mbl9zZXRfc3RhdHVzICQxDQorICBleGl0ICQxDQorfSAjIGFzX2ZuX2V4 aXQNCisNCisjIGFzX2ZuX21rZGlyX3ANCisjIC0tLS0tLS0tLS0tLS0NCisjIENyZWF0ZSAiJGFz X2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4NCith c19mbl9ta2Rpcl9wICgpDQorew0KKw0KKyAgY2FzZSAkYXNfZGlyIGluICMoDQorICAtKikgYXNf ZGlyPS4vJGFzX2Rpcjs7DQorICBlc2FjDQorICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRh c19ta2Rpcl9wIHx8IHsNCisgICAgYXNfZGlycz0NCisgICAgd2hpbGUgOjsgZG8NCisgICAgICBj YXNlICRhc19kaXIgaW4gIygNCisgICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2Rp ciIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7Ow0KIycoDQorICAgICAgKikgYXNfcWRpcj0k YXNfZGlyOzsNCisgICAgICBlc2FjDQorICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGly cyINCisgICAgICBhc19kaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fA0KKyRhc19leHBy IFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFz X2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8 IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2Vj aG8gWCIkYXNfZGlyIiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8q JC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiov ew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEv DQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgICAgIHRlc3QgLWQgIiRhc19k aXIiICYmIGJyZWFrDQorICAgIGRvbmUNCisgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwg Im1rZGlyICRhc19kaXJzIg0KKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJv ciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkNCiRhc19kaXIiDQorDQorDQorfSAjIGFzX2Zu X21rZGlyX3ANCisjIGFzX2ZuX2FwcGVuZCBWQVIgVkFMVUUNCisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCisjIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZp bml0aW9uIGNvbnRhaW5lZCBpbg0KVkFSLiBUYWtlDQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxs IG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyDQpncm93dGggb3Zlcg0K KyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jv d3RoIHByZXNlbnQgaW4NCm5haXZlDQorIyBpbXBsZW1lbnRhdGlvbnMuDQoraWYgKGV2YWwgImFz X3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwkYXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7DQp0 aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQ0KKyAgew0KKyAgICBldmFsICQxKz1cJDIN CisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXBwZW5kICgpDQorICB7DQorICAgIGV2YWwgJDE9XCQk MVwkMg0KKyAgfQ0KK2ZpICMgYXNfZm5fYXBwZW5kDQorDQorIyBhc19mbl9hcml0aCBBUkcuLi4N CisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgUGVyZm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24g b24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluDQp0aGUNCisjIGdsb2JhbCAkYXNf dmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZQ0K YXJndW1lbnRzDQorIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4NCitp ZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisg IGV2YWwgJ2FzX2ZuX2FyaXRoICgpDQorICB7DQorICAgIGFzX3ZhbD0kKCggJCogKSkNCisgIH0n DQorZWxzZQ0KKyAgYXNfZm5fYXJpdGggKCkNCisgIHsNCisgICAgYXNfdmFsPWBleHByICIkQCIg fHwgdGVzdCAkPyAtZXEgMWANCisgIH0NCitmaSAjIGFzX2ZuX2FyaXRoDQorDQorDQorIyBhc19m bl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdDQorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9y OiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRA0KYXJlDQorIyBwcm92aWRl ZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBU aGVuDQpleGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2Fz IDAuDQorYXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1 cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVzdCAiJDQiOyB0aGVuDQorICAgIGFzX2xp bmVubz0ke2FzX2xpbmVuby0iJDMifQ0KYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0k YXNfbGluZW5vX3N0YWNrDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGVycm9yOiAkMiIgPiYkNA0KKyAgZmkNCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAk MiIgPiYyDQorICBhc19mbl9leGl0ICRhc19zdGF0dXMNCit9ICMgYXNfZm5fZXJyb3INCisNCitp ZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJg0KKyAgIHRlc3QgIlhgZXhwciAw MDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuDQorICBhc19leHByPWV4cHINCitlbHNl DQorICBhc19leHByPWZhbHNlDQorZmkNCisNCitpZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVs bCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPQ0KIlgvIjsgdGhlbg0KKyAg YXNfYmFzZW5hbWU9YmFzZW5hbWUNCitlbHNlDQorICBhc19iYXNlbmFtZT1mYWxzZQ0KK2ZpDQor DQoraWYgKGFzX2Rpcj1gZGlybmFtZSAtLSAvYCAmJiB0ZXN0ICJYJGFzX2RpciIgPSBYLykgPi9k ZXYvbnVsbCAyPiYxOw0KdGhlbg0KKyAgYXNfZGlybmFtZT1kaXJuYW1lDQorZWxzZQ0KKyAgYXNf ZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8DQor JGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwNCisJIFgiJDAiIDog J1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwN CiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sN CisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcL1woXC9cL1wpJC97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9cKFwvXCkuKi97DQorCSAgICBzLy9c MS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorDQorIyBBdm9pZCBkZXBlbmRp bmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2FzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1u b3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla Jw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUw0KK2FzX2NyX2Rp Z2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdp dHMNCisNCisNCisgIGFzX2xpbmVub18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8NCisg IGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRMSU5FTk8NCisgIGV2YWwgJ3Rlc3Qg IngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIiAmJg0K KyAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xpbmVu b18yJyRhc19ydW4nIicNCnx8IHsNCisgICMgQmxhbWUgTGVlIEUuIE1jTWFob24gKDE5MzEtMTk4 OSkgZm9yIHNlZCdzIHN5bnRheC4gIDotKQ0KKyAgc2VkIC1uICcNCisgICAgcA0KKyAgICAvWyRd TElORU5PLz0NCisgICcgPCRhc19teXNlbGYgfA0KKyAgICBzZWQgJw0KKyAgICAgIHMvWyRdTElO RU5PLiovJi0vDQorICAgICAgdCBsaW5lbm8NCisgICAgICBiDQorICAgICAgOmxpbmVubw0KKyAg ICAgIE4NCisgICAgICA6bG9vcA0KKyAgICAgIHMvWyRdTElORU5PXChbXickYXNfY3JfYWxudW0n X10uKlxuXClcKC4qXCkvXDJcMVwyLw0KKyAgICAgIHQgbG9vcA0KKyAgICAgIHMvLVxuLiovLw0K KyAgICAnID4kYXNfbWUubGluZW5vICYmDQorICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIgfHwN CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUubGlu ZW5vOyByZXJ1biB3aXRoDQphIFBPU0lYIHNoZWxsIiA+JjI7IGFzX2ZuX2V4aXQgMTsgfQ0KKw0K KyAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBjaGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNv cnQgb2YgcHJvYmxlbXMNCisgICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFj ZSB3aGVyZSB3ZSBtaWdodCBmaW5kIHRoZQ0KKyAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRv Y29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4NCisgIC4gIi4vJGFzX21lLmxp bmVubyINCisgICMgRXhpdCBzdGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLg0KKyAg ZXhpdA0KK30NCisNCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2UgYGVjaG8gLW4geGAg aW4gIygoKCgoDQorLW4qKQ0KKyAgY2FzZSBgZWNobyAneHlcYydgIGluDQorICAqYyopIEVDSE9f VD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4NCisgIHh5KSAgRUNIT19D PSdcYyc7Ow0KKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYv bnVsbA0KKyAgICAgICBFQ0hPX1Q9JwknOzsNCisgIGVzYWM7Ow0KKyopDQorICBFQ0hPX049Jy1u Jzs7DQorZXNhYw0KKw0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlDQoraWYg dGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuDQorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxl DQorZWxzZQ0KKyAgcm0gLWYgY29uZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYv bnVsbA0KK2ZpDQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbg0KKyAg aWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xu X3M9J2xuIC1zJw0KKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFzOg0KKyAgICAj IDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWls Lg0KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRl cyBhIHdyYXBwZXINCmV4ZWN1dGFibGUuDQorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0 byBkZWZhdWx0IHRvIGBjcCAtcCcuDQorICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIg Mj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUNCnx8DQorICAgICAgYXNfbG5fcz0n Y3AgLXAnDQorICBlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbg0K KyAgICBhc19sbl9zPWxuDQorICBlbHNlDQorICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZmkNCitl bHNlDQorICBhc19sbl9zPSdjcCAtcCcNCitmaQ0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNv bmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUNCitybWRpciBjb25mJCQuZGlyIDI+L2Rl di9udWxsDQorDQoraWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbg0KKyAgYXNfbWtkaXJf cD0nbWtkaXIgLXAgIiRhc19kaXIiJw0KK2Vsc2UNCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAu Ly1wDQorICBhc19ta2Rpcl9wPWZhbHNlDQorZmkNCisNCitpZiB0ZXN0IC14IC8gPi9kZXYvbnVs bCAyPiYxOyB0aGVuDQorICBhc190ZXN0X3g9J3Rlc3QgLXgnDQorZWxzZQ0KKyAgaWYgbHMgLWRM IC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgIGFzX2xzX0xfb3B0aW9uPUwNCisgIGVsc2UN CisgICAgYXNfbHNfTF9vcHRpb249DQorICBmaQ0KKyAgYXNfdGVzdF94PScNCisgICAgZXZhbCBz aCAtYyAnXCcnDQorICAgICAgaWYgdGVzdCAtZCAiJDEiOyB0aGVuDQorCXRlc3QgLWQgIiQxLy4i Ow0KKyAgICAgIGVsc2UNCisJY2FzZSAkMSBpbiAjKA0KKwktKilzZXQgIi4vJDEiOzsNCisJZXNh YzsNCisJY2FzZSBgbHMgLWxkJyRhc19sc19MX29wdGlvbicgIiQxIiAyPi9kZXYvbnVsbGAgaW4g IygoDQorCT8/P1tzeF0qKTo7OyopZmFsc2U7O2VzYWM7ZmkNCisgICAgJ1wnJyBzaA0KKyAgJw0K K2ZpDQorYXNfZXhlY3V0YWJsZV9wPSRhc190ZXN0X3gNCisNCisjIFNlZCBleHByZXNzaW9uIHRv IG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuDQorYXNfdHJfY3BwPSJldmFsIHNl ZA0KJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1d JV8lZyciDQorDQorIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlk IHZhcmlhYmxlIG5hbWUuDQorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19j cl9hbG51bV0lXyVnJyINCisNCisNCit0ZXN0IC1uICIkREpESVIiIHx8IGV4ZWMgNzwmMCA8L2Rl di9udWxsDQorZXhlYyA2PiYxDQorDQorIyBOYW1lIG9mIHRoZSBob3N0Lg0KKyMgaG9zdG5hbWUg b24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cw0K ZXhpdCBzdGF0dXMsDQorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uDQorYWNfaG9zdG5hbWU9YCho b3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgDQorDQorIw0KKyMgSW5p dGlhbGl6YXRpb25zLg0KKyMNCithY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsDQorYWNfY2xl YW5fZmlsZXM9DQorYWNfY29uZmlnX2xpYm9ial9kaXI9Lg0KK0xJQk9CSlM9DQorY3Jvc3NfY29t cGlsaW5nPW5vDQorc3ViZGlycz0NCitNRkxBR1M9DQorTUFLRUZMQUdTPQ0KKw0KKyMgSWRlbnRp dHkgb2YgdGhpcyBwYWNrYWdlLg0KK1BBQ0tBR0VfTkFNRT0NCitQQUNLQUdFX1RBUk5BTUU9DQor UEFDS0FHRV9WRVJTSU9OPQ0KK1BBQ0tBR0VfU1RSSU5HPQ0KK1BBQ0tBR0VfQlVHUkVQT1JUPQ0K K1BBQ0tBR0VfVVJMPQ0KKw0KK2FjX3VuaXF1ZV9maWxlPSJjcnQwLlMiDQorYWNfdW5pcXVlX2Zp bGU9ImNydDAuUyINCithY19zdWJzdF92YXJzPSdMVExJQk9CSlMNCitMSUJPQkpTDQorSU5TVEFM TF9EQVRBDQorSU5TVEFMTF9TQ1JJUFQNCitJTlNUQUxMX1BST0dSQU0NCitSQU5MSUINCitBUg0K K2FtX19mYXN0ZGVwQ0NfRkFMU0UNCithbV9fZmFzdGRlcENDX1RSVUUNCitDQ0RFUE1PREUNCitB TURFUEJBQ0tTTEFTSA0KK0FNREVQX0ZBTFNFDQorQU1ERVBfVFJVRQ0KK2FtX19xdW90ZQ0KK2Ft X19pbmNsdWRlDQorREVQRElSDQorYW1fX2xlYWRpbmdfZG90DQorQ0MNCit0YXJnZXRfYWxpYXMN Citob3N0X2FsaWFzDQorYnVpbGRfYWxpYXMNCitMSUJTDQorRUNIT19UDQorRUNIT19ODQorRUNI T19DDQorREVGUw0KK21hbmRpcg0KK2xvY2FsZWRpcg0KK2xpYmRpcg0KK3BzZGlyDQorcGRmZGly DQorZHZpZGlyDQoraHRtbGRpcg0KK2luZm9kaXINCitkb2NkaXINCitvbGRpbmNsdWRlZGlyDQor aW5jbHVkZWRpcg0KK2xvY2Fsc3RhdGVkaXINCitzaGFyZWRzdGF0ZWRpcg0KK3N5c2NvbmZkaXIN CitkYXRhZGlyDQorZGF0YXJvb3RkaXINCitsaWJleGVjZGlyDQorc2JpbmRpcg0KK2JpbmRpcg0K K3Byb2dyYW1fdHJhbnNmb3JtX25hbWUNCitwcmVmaXgNCitleGVjX3ByZWZpeA0KK1BBQ0tBR0Vf VVJMDQorUEFDS0FHRV9CVUdSRVBPUlQNCitQQUNLQUdFX1NUUklORw0KK1BBQ0tBR0VfVkVSU0lP Tg0KK1BBQ0tBR0VfVEFSTkFNRQ0KK1BBQ0tBR0VfTkFNRQ0KK1BBVEhfU0VQQVJBVE9SDQorU0hF TEwnDQorYWNfc3Vic3RfZmlsZXM9JycNCithY191c2VyX29wdHM9Jw0KK2VuYWJsZV9vcHRpb25f Y2hlY2tpbmcNCitlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZw0KKycNCisgICAgICBhY19wcmVj aW91c192YXJzPSdidWlsZF9hbGlhcw0KK2hvc3RfYWxpYXMNCit0YXJnZXRfYWxpYXMnDQorDQor DQorIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLg0KK2FjX2luaXRf aGVscD0NCithY19pbml0X3ZlcnNpb249ZmFsc2UNCithY191bnJlY29nbml6ZWRfb3B0cz0NCith Y191bnJlY29nbml6ZWRfc2VwPQ0KKyMgVGhlIHZhcmlhYmxlcyBoYXZlIHRoZSBzYW1lIG5hbWVz IGFzIHRoZSBvcHRpb25zLCB3aXRoDQorIyBkYXNoZXMgY2hhbmdlZCB0byB1bmRlcmxpbmVzLg0K K2NhY2hlX2ZpbGU9L2Rldi9udWxsDQorZXhlY19wcmVmaXg9Tk9ORQ0KK25vX2NyZWF0ZT0NCitu b19yZWN1cnNpb249DQorcHJlZml4PU5PTkUNCitwcm9ncmFtX3ByZWZpeD1OT05FDQorcHJvZ3Jh bV9zdWZmaXg9Tk9ORQ0KK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsDQorc2lsZW50PQ0K K3NpdGU9DQorc3JjZGlyPQ0KK3ZlcmJvc2U9DQoreF9pbmNsdWRlcz1OT05FDQoreF9saWJyYXJp ZXM9Tk9ORQ0KKw0KKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25zLg0KKyMgVGhlc2Ug YXJlIGxlZnQgdW5leHBhbmRlZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5zdGFsbA0KZXhlY19wcmVm aXg9L2ZvbyINCisjIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBi ZSBiYXNlZCBvbiBleGVjX3ByZWZpeA0KKyMgYnkgZGVmYXVsdCB3aWxsIGFjdHVhbGx5IGNoYW5n ZS4NCisjIFVzZSBicmFjZXMgaW5zdGVhZCBvZiBwYXJlbnMgYmVjYXVzZSBzaCwgcGVybCwgZXRj LiBhbHNvIGFjY2VwdA0KdGhlbS4NCisjIChUaGUgbGlzdCBmb2xsb3dzIHRoZSBzYW1lIG9yZGVy IGFzIHRoZSBHTlUgQ29kaW5nIFN0YW5kYXJkcy4pDQorYmluZGlyPScke2V4ZWNfcHJlZml4fS9i aW4nDQorc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicNCitsaWJleGVjZGlyPScke2V4ZWNf cHJlZml4fS9saWJleGVjJw0KK2RhdGFyb290ZGlyPScke3ByZWZpeH0vc2hhcmUnDQorZGF0YWRp cj0nJHtkYXRhcm9vdGRpcn0nDQorc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycNCitzaGFyZWRz dGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScNCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJw0K K2luY2x1ZGVkaXI9JyR7cHJlZml4fS9pbmNsdWRlJw0KK29sZGluY2x1ZGVkaXI9Jy91c3IvaW5j bHVkZScNCitkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0V9Jw0KK2luZm9kaXI9 JyR7ZGF0YXJvb3RkaXJ9L2luZm8nDQoraHRtbGRpcj0nJHtkb2NkaXJ9Jw0KK2R2aWRpcj0nJHtk b2NkaXJ9Jw0KK3BkZmRpcj0nJHtkb2NkaXJ9Jw0KK3BzZGlyPScke2RvY2Rpcn0nDQorbGliZGly PScke2V4ZWNfcHJlZml4fS9saWInDQorbG9jYWxlZGlyPScke2RhdGFyb290ZGlyfS9sb2NhbGUn DQorbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nDQorDQorYWNfcHJldj0NCithY19kYXNoZGFz aD0NCitmb3IgYWNfb3B0aW9uDQorZG8NCisgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVk cyBhbiBhcmd1bWVudCwgYXNzaWduIGl0Lg0KKyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVu DQorICAgIGV2YWwgJGFjX3ByZXY9XCRhY19vcHRpb24NCisgICAgYWNfcHJldj0NCisgICAgY29u dGludWUNCisgIGZpDQorDQorICBjYXNlICRhY19vcHRpb24gaW4NCisgICo9PyopIGFjX29wdGFy Zz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwoLipcKSdgIDs7DQorICAqPSkgICBhY19v cHRhcmc9IDs7DQorICAqKSAgICBhY19vcHRhcmc9eWVzIDs7DQorICBlc2FjDQorDQorICAjIEFj Y2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRp YWdub3NlDQp0eXBvcy4NCisNCisgIGNhc2UgJGFjX2Rhc2hkYXNoJGFjX29wdGlvbiBpbg0KKyAg LS0pDQorICAgIGFjX2Rhc2hkYXNoPXllcyA7Ow0KKw0KKyAgLWJpbmRpciB8IC0tYmluZGlyIHwg LS1iaW5kaSB8IC0tYmluZCB8IC0tYmluIHwgLS1iaSkNCisgICAgYWNfcHJldj1iaW5kaXIgOzsN CisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9KiB8IC0tYmlu PSogfCAtLWJpPSopDQorICAgIGJpbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtYnVpbGQgfCAt LWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQ0KKyAgICBhY19wcmV2PWJ1aWxkX2FsaWFz IDs7DQorICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9 KikNCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWNhY2hlLWZpbGUgfCAt LWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXA0KKyAgfCAtLWNhY2hlLWYg fCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpDQorICAg IGFjX3ByZXY9Y2FjaGVfZmlsZSA7Ow0KKyAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0q IHwgLS1jYWNoZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcDQorICB8IC0tY2FjaGUtZj0qIHwgLS1j YWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9Kg0KfCAtLWM9 KikNCisgICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7DQorDQorICAtLWNvbmZpZy1jYWNoZSB8 IC1DKQ0KKyAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7Ow0KKw0KKyAgLWRhdGFkaXIgfCAt LWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpDQorICAgIGFjX3ByZXY9ZGF0YWRpciA7Ow0K KyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikNCisg ICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290 ZGlyIHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLQ0KZGF0YXJvb3QgXA0KKyAgfCAt LWRhdGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpDQorICAgIGFjX3ByZXY9ZGF0YXJvb3RkaXIg OzsNCisgIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpPSog fCAtLWRhdGFyb290ZD0qIFwNCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAtLWRh dGFybz0qIHwgLS1kYXRhcj0qKQ0KKyAgICBkYXRhcm9vdGRpcj0kYWNfb3B0YXJnIDs7DQorDQor ICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNf b3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgDQorICAgICMgUmVqZWN0IG5hbWVzIHRoYXQg YXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAieCRhY191c2Vy b3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisgICAgICBhc19m bl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0Ig0KKyAgICBhY191 c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191 c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4N CisgICAgICAqIg0KKyJlbmFibGVfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikNCmFj X3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVk X3NlcC0tDQpkaXNhYmxlLSRhY191c2Vyb3B0X29yaWciDQorCSBhY191bnJlY29nbml6ZWRfc2Vw PScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PW5vIDs7DQor DQorICAtZG9jZGlyIHwgLS1kb2NkaXIgfCAtLWRvY2RpIHwgLS1kb2MgfCAtLWRvKQ0KKyAgICBh Y19wcmV2PWRvY2RpciA7Ow0KKyAgLWRvY2Rpcj0qIHwgLS1kb2NkaXI9KiB8IC0tZG9jZGk9KiB8 IC0tZG9jPSogfCAtLWRvPSopDQorICAgIGRvY2Rpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtZHZp ZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlkIHwgLS1kdmkgfCAtLWR2KQ0KKyAgICBh Y19wcmV2PWR2aWRpciA7Ow0KKyAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZpZGk9KiB8 IC0tZHZpZD0qIHwgLS1kdmk9KiB8IC0tZHY9KikNCisgICAgZHZpZGlyPSRhY19vcHRhcmcgOzsN CisNCisgIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngk YWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2ANCisgICAgIyBSZWplY3QgbmFtZXMg dGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHByICJ4JGFj X3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAgICAg IGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiDQorICAg IGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAi JGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJfb3B0 cyBpbg0KKyAgICAgICoiDQorImVuYWJsZV8kYWNfdXNlcm9wdCINCisiKikgOzsNCisgICAgICAq KQ0KYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29n bml6ZWRfc2VwLS0NCmVuYWJsZS0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25pemVk X3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1cJGFj X29wdGFyZyA7Ow0KKw0KKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1w cmVmaXggfCAtLWV4ZWMtcHJlZmkgXA0KKyAgfCAtLWV4ZWMtcHJlZiB8IC0tZXhlYy1wcmUgfCAt LWV4ZWMtcHIgfCAtLWV4ZWMtcCB8IC0tZXhlYy0gXA0KKyAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0t ZXgpDQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsNCisgIC1leGVjLXByZWZpeD0qIHwgLS1l eGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSoNClwNCisgIHwg LS1leGVjLXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8 IC0tZXhlYy0NCj0qIFwNCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQ0KKyAgICBl eGVjX3ByZWZpeD0kYWNfb3B0YXJnIDs7DQorDQorICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1n KQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4NCisgICAgd2l0aF9nYXM9eWVzIDs7 DQorDQorICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQ0KKyAgICBhY19pbml0 X2hlbHA9bG9uZyA7Ow0KKyAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9 ciogfCAtaHIqKQ0KKyAgICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7DQorICAtaGVscD1zKiB8 IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopDQorICAgIGFjX2luaXRfaGVs cD1zaG9ydCA7Ow0KKw0KKyAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pDQorICAgIGFj X3ByZXY9aG9zdF9hbGlhcyA7Ow0KKyAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0t aG89KikNCisgICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7DQorDQorICAtaHRtbGRpciB8IC0t aHRtbGRpciB8IC0taHRtbGRpIHwgLS1odG1sZCB8IC0taHRtbCB8IC0taHRtIHwgLS1odCkNCisg ICAgYWNfcHJldj1odG1sZGlyIDs7DQorICAtaHRtbGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0 bWxkaT0qIHwgLS1odG1sZD0qIHwgLS1odG1sPSogfCAtLQ0KaHRtPSogXA0KKyAgfCAtLWh0PSop DQorICAgIGh0bWxkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWluY2x1ZGVkaXIgfCAtLWluY2x1 ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAtLWluY2x1ZGUgXA0KKyAgfCAtLWlu Y2x1ZCB8IC0taW5jbHUgfCAtLWluY2wgfCAtLWluYykNCisgICAgYWNfcHJldj1pbmNsdWRlZGly IDs7DQorICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaT0qIHwg LS1pbmNsdWRlZD0qIHwgLS0NCmluY2x1ZGU9KiBcDQorICB8IC0taW5jbHVkPSogfCAtLWluY2x1 PSogfCAtLWluY2w9KiB8IC0taW5jPSopDQorICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8g fCAtLWluZikNCisgICAgYWNfcHJldj1pbmZvZGlyIDs7DQorICAtaW5mb2Rpcj0qIHwgLS1pbmZv ZGlyPSogfCAtLWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLQ0KaW5mPSopDQor ICAgIGluZm9kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxpYmRpciB8IC0tbGliZGlyIHwgLS1s aWJkaSB8IC0tbGliZCkNCisgICAgYWNfcHJldj1saWJkaXIgOzsNCisgIC1saWJkaXI9KiB8IC0t bGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikNCisgICAgbGliZGlyPSRhY19vcHRhcmcg OzsNCisNCisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxp YmV4ZWNkIHwgLS1saWJleGVjIFwNCisgIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQ0K KyAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsNCisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNk aXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLQ0KbGliZXhlYz0qIFwNCisg IHwgLS1saWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQ0KKyAgICBsaWJleGVjZGlyPSRh Y19vcHRhcmcgOzsNCisNCisgIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkg fCAtLWxvY2FsZWQgfCAtLWxvY2FsZSkNCisgICAgYWNfcHJldj1sb2NhbGVkaXIgOzsNCisgIC1s b2NhbGVkaXI9KiB8IC0tbG9jYWxlZGlyPSogfCAtLWxvY2FsZWRpPSogfCAtLWxvY2FsZWQ9KiB8 IC0tDQpsb2NhbGU9KikNCisgICAgbG9jYWxlZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1sb2Nh bHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3Rh dGVkIFwNCisgIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1s b2NhbHN0IHwgLS1sb2NhbHMpDQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7Ow0KKyAgLWxv Y2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0t DQpsb2NhbHN0YXRlZD0qIFwNCisgIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwg LS1sb2NhbHN0YT0qIHwgLS1sb2NhbHN0PSogfCAtLQ0KbG9jYWxzPSopDQorICAgIGxvY2Fsc3Rh dGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8 IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0tbSkNCisgICAgYWNfcHJldj1tYW5kaXIgOzsNCisg IC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSog fCAtLW1hPSogfCAtDQotbT0qKQ0KKyAgICBtYW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLW5m cCB8IC0tbmZwIHwgLS1uZikNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4NCisg ICAgd2l0aF9mcD1ubyA7Ow0KKw0KKyAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1j cmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwNCisgIHwgLS1uby1jciB8IC0tbm8tYyB8IC1u KQ0KKyAgICBub19jcmVhdGU9eWVzIDs7DQorDQorICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1 cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwNCisgIHwgLS1uby1yZWN1cnMg fCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwgLS1uby0NCnIp DQorICAgIG5vX3JlY3Vyc2lvbj15ZXMgOzsNCisNCisgIC1vbGRpbmNsdWRlZGlyIHwgLS1vbGRp bmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwNCisgIHwgLS1vbGRp bmNsdWRlIHwgLS1vbGRpbmNsdWQgfCAtLW9sZGluY2x1IHwgLS1vbGRpbmNsIHwgLS1vbGRpbmMg XA0KKyAgfCAtLW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQ0KKyAgICBhY19w cmV2PW9sZGluY2x1ZGVkaXIgOzsNCisgIC1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVk aXI9KiB8IC0tb2xkaW5jbHVkZWRpPSogfCAtLQ0Kb2xkaW5jbHVkZWQ9KiBcDQorICB8IC0tb2xk aW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5jbHU9KiB8IC0tb2xkaW5jbD0qIHwg LS0NCm9sZGluYz0qIFwNCisgIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwgLS1v bD0qIHwgLS1vPSopDQorICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXBy ZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkN CisgICAgYWNfcHJldj1wcmVmaXggOzsNCisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXBy ZWZpPSogfCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtDQotcD0qKQ0KKyAgICBwcmVm aXg9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZp eCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS0NCnByZWYgXA0KKyAgfCAtLXByb2dyYW0t cHJlIHwgLS1wcm9ncmFtLXByIHwgLS1wcm9ncmFtLXApDQorICAgIGFjX3ByZXY9cHJvZ3JhbV9w cmVmaXggOzsNCisgIC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpeD0qIHwgLS1w cm9ncmFtLXByZWZpPSogXA0KKyAgfCAtLXByb2dyYW0tcHJlZj0qIHwgLS1wcm9ncmFtLXByZT0q IHwgLS1wcm9ncmFtLXByPSogfCAtLXByb2dyYW0tDQpwPSopDQorICAgIHByb2dyYW1fcHJlZml4 PSRhY19vcHRhcmcgOzsNCisNCisgIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXgg fCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tDQpzdWZmIFwNCisgIHwgLS1wcm9ncmFtLXN1 ZiB8IC0tcHJvZ3JhbS1zdSB8IC0tcHJvZ3JhbS1zKQ0KKyAgICBhY19wcmV2PXByb2dyYW1fc3Vm Zml4IDs7DQorICAtcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJv Z3JhbS1zdWZmaT0qIFwNCisgIHwgLS1wcm9ncmFtLXN1ZmY9KiB8IC0tcHJvZ3JhbS1zdWY9KiB8 IC0tcHJvZ3JhbS1zdT0qIHwgLS1wcm9ncmFtLQ0Kcz0qKQ0KKyAgICBwcm9ncmFtX3N1ZmZpeD0k YWNfb3B0YXJnIDs7DQorDQorICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10 cmFuc2Zvcm0tbmFtZSBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uYSBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbiB8IC0tcHJvZ3JhbS10 cmFuc2Zvcm0tIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybSB8IC0tcHJvZ3JhbS10cmFuc2Zv ciBcDQorICB8IC0tcHJvZ3JhbS10cmFuc2ZvIHwgLS1wcm9ncmFtLXRyYW5zZiBcDQorICB8IC0t cHJvZ3JhbS10cmFucyB8IC0tcHJvZ3JhbS10cmFuIFwNCisgIHwgLS1wcm9nci10cmEgfCAtLXBy b2dyYW0tdHIgfCAtLXByb2dyYW0tdCkNCisgICAgYWNfcHJldj1wcm9ncmFtX3RyYW5zZm9ybV9u YW1lIDs7DQorICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9y bS1uYW1lPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbT0qIHwgLS1wcm9ncmFtLXRy YW5zZm9ybS1uYT0qIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uPSogfCAtLXByb2dyYW0t dHJhbnNmb3JtLT0qIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybT0qIHwgLS1wcm9ncmFtLXRy YW5zZm9yPSogXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9ncmFtLXRyYW5zZj0q IFwNCisgIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJhbj0qIFwNCisgIHwgLS1w cm9nci10cmE9KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikNCisgICAgcHJvZ3Jh bV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7DQorDQorICAtcGRmZGlyIHwgLS1wZGZkaXIg fCAtLXBkZmRpIHwgLS1wZGZkIHwgLS1wZGYgfCAtLXBkKQ0KKyAgICBhY19wcmV2PXBkZmRpciA7 Ow0KKyAgLXBkZmRpcj0qIHwgLS1wZGZkaXI9KiB8IC0tcGRmZGk9KiB8IC0tcGRmZD0qIHwgLS1w ZGY9KiB8IC0tcGQ9KikNCisgICAgcGRmZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1wc2RpciB8 IC0tcHNkaXIgfCAtLXBzZGkgfCAtLXBzZCB8IC0tcHMpDQorICAgIGFjX3ByZXY9cHNkaXIgOzsN CisgIC1wc2Rpcj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQ0K KyAgICBwc2Rpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAt LXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXA0KKyAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAt LXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpDQorICAgIHNpbGVudD15ZXMgOzsNCisNCisgIC1zYmlu ZGlyIHwgLS1zYmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAt LXNiKQ0KKyAgICBhY19wcmV2PXNiaW5kaXIgOzsNCisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9 KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcDQorICB8IC0tc2JpPSogfCAt LXNiPSopDQorICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNoYXJlZHN0YXRlZGly IHwgLS1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaSBcDQorICB8IC0tc2hhcmVkc3Rh dGVkIHwgLS1zaGFyZWRzdGF0ZSB8IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwNCisgIHwg LS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcDQor ICB8IC0tc2hhIHwgLS1zaCkNCisgICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7Ow0KKyAgLXNo YXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBc DQorICB8IC0tc2hhcmVkc3RhdGVkPSogfCAtLXNoYXJlZHN0YXRlPSogfCAtLXNoYXJlZHN0YXQ9 KiB8IC0tDQpzaGFyZWRzdGE9KiBcDQorICB8IC0tc2hhcmVkc3Q9KiB8IC0tc2hhcmVkcz0qIHwg LS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwNCisgIHwgLS1zaGE9KiB8IC0tc2g9 KikNCisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXNpdGUgfCAtLXNp dGUgfCAtLXNpdCkNCisgICAgYWNfcHJldj1zaXRlIDs7DQorICAtc2l0ZT0qIHwgLS1zaXRlPSog fCAtLXNpdD0qKQ0KKyAgICBzaXRlPSRhY19vcHRhcmcgOzsNCisNCisgIC1zcmNkaXIgfCAtLXNy Y2RpciB8IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpDQorICAgIGFjX3ByZXY9c3Jj ZGlyIDs7DQorICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSog fCAtLXNyYz0qIHwgLS1zcj0qKQ0KKyAgICBzcmNkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXN5 c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5 c2NvbmYgXA0KKyAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8IC0tc3kp DQorICAgIGFjX3ByZXY9c3lzY29uZmRpciA7Ow0KKyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29u ZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tDQpzeXNjb25mPSogXA0K KyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAtLXN5cz0qIHwgLS1zeT0q KQ0KKyAgICBzeXNjb25mZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC10YXJnZXQgfCAtLXRhcmdl dCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpDQorICAgIGFjX3ByZXY9 dGFyZ2V0X2FsaWFzIDs7DQorICAtdGFyZ2V0PSogfCAtLXRhcmdldD0qIHwgLS10YXJnZT0qIHwg LS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLQ0KLXQ9KikNCisgICAgdGFyZ2V0X2FsaWFz PSRhY19vcHRhcmcgOzsNCisNCisgIC12IHwgLXZlcmJvc2UgfCAtLXZlcmJvc2UgfCAtLXZlcmJv cyB8IC0tdmVyYm8gfCAtLXZlcmIpDQorICAgIHZlcmJvc2U9eWVzIDs7DQorDQorICAtdmVyc2lv biB8IC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC1WKQ0KKyAgICBh Y19pbml0X3ZlcnNpb249OiA7Ow0KKw0KKyAgLXdpdGgtKiB8IC0td2l0aC0qKQ0KKyAgICBhY191 c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYA0KKyAgICAj IFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuDQor ICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9u dWxsICYmDQorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNf dXNlcm9wdCINCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0DQorICAgIGFjX3VzZXJv cHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2ANCisgICAgY2Fz ZSAkYWNfdXNlcl9vcHRzIGluDQorICAgICAgKiINCisid2l0aF8kYWNfdXNlcm9wdCINCisiKikg OzsNCisgICAgICAqKQ0KYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0 cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRoLQ0KJGFjX3VzZXJvcHRfb3JpZyINCisJIGFjX3Vu cmVjb2duaXplZF9zZXA9JywgJzs7DQorICAgIGVzYWMNCisgICAgZXZhbCB3aXRoXyRhY191c2Vy b3B0PVwkYWNfb3B0YXJnIDs7DQorDQorICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopDQorICAg IGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgDQor ICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1l cy4NCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4v ZGV2L251bGwgJiYNCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6 ICRhY191c2Vyb3B0Ig0KKyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNf dXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAg ICBjYXNlICRhY191c2VyX29wdHMgaW4NCisgICAgICAqIg0KKyJ3aXRoXyRhY191c2Vyb3B0Ig0K KyIqKSA7Ow0KKyAgICAgICopDQphY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXpl ZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLQ0Kd2l0aG91dC0kYWNfdXNlcm9wdF9vcmlnIg0K KwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIHdpdGhf JGFjX3VzZXJvcHQ9bm8gOzsNCisNCisgIC0teCkNCisgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0 aC14Lg0KKyAgICB3aXRoX3g9eWVzIDs7DQorDQorICAteC1pbmNsdWRlcyB8IC0teC1pbmNsdWRl cyB8IC0teC1pbmNsdWRlIHwgLS14LWluY2x1ZCB8IC0teC1pbmNsdSBcDQorICB8IC0teC1pbmNs IHwgLS14LWluYyB8IC0teC1pbiB8IC0teC1pKQ0KKyAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsN CisgIC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlPSogfCAtLXgt aW5jbHVkPSogfCAtLXgtDQppbmNsdT0qIFwNCisgIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8 IC0teC1pbj0qIHwgLS14LWk9KikNCisgICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7DQorDQor ICAteC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJh cmkgXA0KKyAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwg LS14LWxpIHwgLS14LWwpDQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsNCisgIC14LWxpYnJh cmllcz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0q IFwNCisgIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxp Yj0qIHwgLS14LWxpPSogfCAtDQoteC1sPSopDQorICAgIHhfbGlicmFyaWVzPSRhY19vcHRhcmcg OzsNCisNCisgIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNf b3B0aW9uJw0KK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iDQorICAgIDs7 DQorDQorICAqPSopDQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFte PV0qXCk9J2ANCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZh cmlhYmxlIG5hbWVzLg0KKyAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygNCisgICAgICAnJyB8IFsw LTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiApDQorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFs aWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52dmFyJyIgOzsNCisgICAgZXNhYw0KKyAgICBldmFs ICRhY19lbnZ2YXI9XCRhY19vcHRhcmcNCisgICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsNCisNCisg ICopDQorICAgICMgRklYTUU6IHNob3VsZCBiZSByZW1vdmVkIGluIGF1dG9jb25mIDMuMC4NCisg ICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1o b3N0LCAtLQ0KdGFyZ2V0IiA+JjINCisgICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8k YXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FS TklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMg0KKyAgICA6ICIke2J1aWxk X2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0aW9ufQ0KJHt0YXJnZXRfYWxp YXM9JGFjX29wdGlvbn0iDQorICAgIDs7DQorDQorICBlc2FjDQorZG9uZQ0KKw0KK2lmIHRlc3Qg LW4gIiRhY19wcmV2IjsgdGhlbg0KKyAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQg J3MvXy8tL2cnYA0KKyAgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29w dGlvbiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyI7IHRoZW4N CisgIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4NCisgICAgbm8pIDs7DQorICAgIGZh dGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6DQokYWNfdW5yZWNvZ25p emVkX29wdHMiIDs7DQorICAgICopICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJl Y29nbml6ZWQgb3B0aW9uczoNCiRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyIDs7DQorICBlc2Fj DQorZmkNCisNCisjIENoZWNrIGFsbCBkaXJlY3RvcnkgYXJndW1lbnRzIGZvciBjb25zaXN0ZW5j eS4NCitmb3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBiaW5kaXIgc2JpbmRpciBsaWJl eGVjZGlyDQpkYXRhcm9vdGRpciBcDQorCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVk aXIgbG9jYWxzdGF0ZWRpcg0KaW5jbHVkZWRpciBcDQorCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBp bmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpcg0KcHNkaXIgXA0KKwkJbGliZGlyIGxvY2FsZWRp ciBtYW5kaXINCitkbw0KKyAgZXZhbCBhY192YWw9XCQkYWNfdmFyDQorICAjIFJlbW92ZSB0cmFp bGluZyBzbGFzaGVzLg0KKyAgY2FzZSAkYWNfdmFsIGluDQorICAgICovICkNCisgICAgICBhY192 YWw9YGV4cHIgIlgkYWNfdmFsIiA6ICdYXCguKlteL11cKScgXHwgIlgkYWNfdmFsIiA6DQonWFwo LipcKSdgDQorICAgICAgZXZhbCAkYWNfdmFyPVwkYWNfdmFsOzsNCisgIGVzYWMNCisgICMgQmUg c3VyZSB0byBoYXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4NCisgIGNhc2UgJGFjX3ZhbCBp bg0KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7Ow0KKyAgICBOT05FIHwgJycg KSBjYXNlICRhY192YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7DQorICBlc2FjDQor ICBhc19mbl9lcnJvciAkPyAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9y IC0tJGFjX3ZhcjoNCiRhY192YWwiDQorZG9uZQ0KKw0KKyMgVGhlcmUgbWlnaHQgYmUgcGVvcGxl IHdobyBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcNCisjIHVzZWQg dG8gaG9sZCB0aGUgYXJndW1lbnQgb2YgLS1ob3N0IGV0Yy4NCisjIEZJWE1FOiBUbyByZW1vdmUg c29tZSBkYXkuDQorYnVpbGQ9JGJ1aWxkX2FsaWFzDQoraG9zdD0kaG9zdF9hbGlhcw0KK3Rhcmdl dD0kdGFyZ2V0X2FsaWFzDQorDQorIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5Lg0KK2lmIHRl c3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbg0KKyAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIg PSB4OyB0aGVuDQorICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQ0KKyAgICAkYXNfZWNobyAiJGFz X21lOiBXQVJOSU5HOiBpZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLA0KZG9u J3QgdXNlIC0taG9zdC4NCisgICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVu IGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlDQp1c2VkIiA+JjINCisgIGVsaWYgdGVzdCAieCRi dWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4NCisgICAgY3Jvc3NfY29tcGlsaW5n PXllcw0KKyAgZmkNCitmaQ0KKw0KK2FjX3Rvb2xfcHJlZml4PQ0KK3Rlc3QgLW4gIiRob3N0X2Fs aWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0NCisNCit0ZXN0ICIkc2lsZW50IiA9 IHllcyAmJiBleGVjIDY+L2Rldi9udWxsDQorDQorDQorYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4g IiRhY19wd2QiICYmDQorYWNfbHNfZGk9YGxzIC1kaSAuYCAmJg0KK2FjX3B3ZF9sc19kaT1gY2Qg IiRhY19wd2QiICYmIGxzIC1kaSAuYCB8fA0KKyAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGly ZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIg0KK3Rlc3QgIlgkYWNfbHNfZGkiID0gIlgkYWNf cHdkX2xzX2RpIiB8fA0KKyAgYXNfZm5fZXJyb3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFt ZSBvZiB3b3JraW5nIGRpcmVjdG9yeSINCisNCisNCisjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywg aWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuDQoraWYgdGVzdCAteiAiJHNyY2RpciI7IHRo ZW4NCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzDQorICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNv bnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIHBhcmVudA0KZGlyZWN0b3J5Lg0KKyAgYWNf Y29uZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19teXNlbGYiIHx8DQorJGFzX2V4cHIgWCIkYXNf bXlzZWxmIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkYXNfbXlz ZWxmIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpJCcg XHwgXA0KKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCisk YXNfZWNobyBYIiRhc19teXNlbGYiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9d W14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9c KVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkk L3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICBzcmNkaXI9JGFj X2NvbmZkaXINCisgIGlmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVu DQorICAgIHNyY2Rpcj0uLg0KKyAgZmkNCitlbHNlDQorICBhY19zcmNkaXJfZGVmYXVsdGVkPW5v DQorZmkNCitpZiB0ZXN0ICEgLXIgIiRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbg0KKyAg dGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIg b3IgLi4iDQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1 ZV9maWxlKSBpbiAkc3JjZGlyIg0KK2ZpDQorYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGly LCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIg0KK2FjX2Fic19jb25mZGlyPWAoDQor CWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJy b3IgJD8NCiIkYWNfbXNnIg0KKwlwd2QpYA0KKyMgV2hlbiBidWlsZGluZyBpbiBwbGFjZSwgc2V0 IHNyY2Rpcj0uDQoraWYgdGVzdCAiJGFjX2Fic19jb25mZGlyIiA9ICIkYWNfcHdkIjsgdGhlbg0K KyAgc3JjZGlyPS4NCitmaQ0KKyMgUmVtb3ZlIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHNsYXNoZXMg ZnJvbSBzcmNkaXIuDQorIyBEb3VibGUgc2xhc2hlcyBpbiBmaWxlIG5hbWVzIGluIG9iamVjdCBm aWxlIGRlYnVnZ2luZyBpbmZvDQorIyBtZXNzIHVwIE0teCBnZGIgaW4gRW1hY3MuDQorY2FzZSAk c3JjZGlyIGluDQorKi8pIHNyY2Rpcj1gZXhwciAiWCRzcmNkaXIiIDogJ1hcKC4qW14vXVwpJyBc fCAiWCRzcmNkaXIiIDoNCidYXCguKlwpJ2A7Ow0KK2VzYWMNCitmb3IgYWNfdmFyIGluICRhY19w cmVjaW91c192YXJzOyBkbw0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zh cn0rc2V0fQ0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9DQorICBl dmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9DQorICBldmFsIGFj X2N2X2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0NCitkb25lDQorDQorIw0KKyMgUmVw b3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4NCisjDQoraWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAi bG9uZyI7IHRoZW4NCisgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMg dG8gbWFrZSB0aGUgbGlzdCBsZXNzDQppbXBvc2luZy4NCisgICMgVGhpcyBtZXNzYWdlIGlzIHRv byBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4NCisgIGNhdCA8PF9BQ0VP Rg0KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHRoaXMgcGFja2FnZSB0byBhZGFwdCB0byBtYW55 IGtpbmRzIG9mDQpzeXN0ZW1zLg0KKw0KK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVF XS4uLg0KKw0KK1RvIGFzc2lnbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGUuZy4sIENDLCBDRkxB R1MuLi4pLCBzcGVjaWZ5IHRoZW0gYXMNCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2Ny aXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwNCnZhcmlhYmxlcy4NCisNCitEZWZhdWx0cyBm b3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4NCisNCitDb25maWd1cmF0 aW9uOg0KKyAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4 aXQNCisgICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0 byB0aGlzIHBhY2thZ2UNCisgICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNo b3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZA0KcGFja2FnZXMNCisgIC1WLCAtLXZlcnNpb24g ICAgICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdA0KKyAgLXEsIC0t cXVpZXQsIC0tc2lsZW50ICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcgLi4uJyBtZXNzYWdlcw0K KyAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rp c2FibGVkXQ0KKyAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1m aWxlPWNvbmZpZy5jYWNoZScNCisgIC1uLCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVh dGUgb3V0cHV0IGZpbGVzDQorICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3Vy Y2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvcg0KXGAuLiddDQorDQorSW5zdGFsbGF0aW9uIGRp cmVjdG9yaWVzOg0KKyAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1 cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4NClBSRUZJWA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgWyRhY19kZWZhdWx0X3ByZWZpeF0NCisgIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3Rh bGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbg0KRVBSRUZJWA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgW1BSRUZJWF0NCisNCitCeSBkZWZhdWx0LCBcYG1ha2UgaW5zdGFsbCcg d2lsbCBpbnN0YWxsIGFsbCB0aGUgZmlsZXMgaW4NCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4n LCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4NCnNwZWNpZnkNCithbiBp bnN0YWxsYXRpb24gcHJlZml4IG90aGVyIHRoYW4gXGAkYWNfZGVmYXVsdF9wcmVmaXgnIHVzaW5n IFxgLS0NCnByZWZpeCcsDQorZm9yIGluc3RhbmNlIFxgLS1wcmVmaXg9XCRIT01FJy4NCisNCitG b3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4NCisNCitGaW5lIHR1bmlu ZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOg0KKyAgLS1iaW5kaXI9RElSICAgICAg ICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dDQorICAtLXNiaW5kaXI9RElSICAg ICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgW0VQUkVGSVgvc2Jpbl0NCisgIC0tbGli ZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10N CisgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRh IFtQUkVGSVgvZXRjXQ0KKyAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNo aXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YQ0KW1BSRUZJWC9jb21dDQorICAtLWxvY2Fsc3RhdGVk aXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdDQor ICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgW0VQUkVGSVgv bGliXQ0KKyAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9p bmNsdWRlXQ0KKyAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5v bi1nY2MgWy91c3IvaW5jbHVkZV0NCisgIC0tZGF0YXJvb3RkaXI9RElSICAgICAgIHJlYWQtb25s eSBhcmNoLi1pbmRlcGVuZGVudCBkYXRhIHJvb3QNCltQUkVGSVgvc2hhcmVdDQorICAtLWRhdGFk aXI9RElSICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEN CltEQVRBUk9PVERJUl0NCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRh dGlvbiBbREFUQVJPT1RESVIvaW5mb10NCisgIC0tbG9jYWxlZGlyPURJUiAgICAgICAgIGxvY2Fs ZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVIvbG9jYWxlXQ0KKyAgLS1tYW5kaXI9RElSICAg ICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFST09URElSL21hbl0NCisgIC0tZG9jZGly PURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL1BBQ0tB R0VdDQorICAtLWh0bWxkaXI9RElSICAgICAgICAgICBodG1sIGRvY3VtZW50YXRpb24gW0RPQ0RJ Ul0NCisgIC0tZHZpZGlyPURJUiAgICAgICAgICAgIGR2aSBkb2N1bWVudGF0aW9uIFtET0NESVJd DQorICAtLXBkZmRpcj1ESVIgICAgICAgICAgICBwZGYgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQ0K KyAgLS1wc2Rpcj1ESVIgICAgICAgICAgICAgcHMgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQ0KK19B Q0VPRg0KKw0KKyAgY2F0IDw8XF9BQ0VPRg0KK19BQ0VPRg0KK2ZpDQorDQoraWYgdGVzdCAtbiAi JGFjX2luaXRfaGVscCI7IHRoZW4NCisNCisgIGNhdCA8PFxfQUNFT0YNCisNCitPcHRpb25hbCBG ZWF0dXJlczoNCisgIC0tZGlzYWJsZS1vcHRpb24tY2hlY2tpbmcgIGlnbm9yZSB1bnJlY29nbml6 ZWQgLS1lbmFibGUvLS13aXRoDQpvcHRpb25zDQorICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBk byBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLQ0KRkVBVFVSRT1ubykNCisg IC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10NCisgIC0t ZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICBzcGVlZHMgdXAgb25lLXRpbWUgYnVpbGQNCisg IC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5k ZW5jeQ0KZXh0cmFjdG9ycw0KKw0KK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVy Lg0KK19BQ0VPRg0KK2FjX3N0YXR1cz0kPw0KK2ZpDQorDQoraWYgdGVzdCAiJGFjX2luaXRfaGVs cCIgPSAicmVjdXJzaXZlIjsgdGhlbg0KKyAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0 IHRoZWlyIHNwZWNpZmljIC0taGVscC4NCisgIGZvciBhY19kaXIgaW4gOiAkYWNfc3ViZGlyc19h bGw7IGRvIHRlc3QgIngkYWNfZGlyIiA9IHg6ICYmIGNvbnRpbnVlDQorICAgIHRlc3QgLWQgIiRh Y19kaXIiIHx8DQorICAgICAgeyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBwd2RgICYmIHNyY2Rp cj0uICYmIHRlc3QgLWQgIiRhY19kaXIiOw0KfSB8fA0KKyAgICAgIGNvbnRpbnVlDQorICAgIGFj X2J1aWxkZGlyPS4NCisNCitjYXNlICIkYWNfZGlyIiBpbg0KKy4pIGFjX2Rpcl9zdWZmaXg9IGFj X3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyopDQorICBhY19k aXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYA0KKyAg IyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4Lg0KKyAgYWNfdG9w X2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZA0KJ3N8L1teXFwv XSp8Ly4ufGc7c3wvfHwnYA0KKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbg0KKyAgIiIp IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyAgKikgIGFj X3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7DQorICBlc2FjIDs7DQor ZXNhYw0KK2FjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZA0KK2FjX2Fic19idWlsZGRpcj0kYWNf cHdkJGFjX2Rpcl9zdWZmaXgNCisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Og0KK2FjX3Rv cF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeA0KKw0KK2Nhc2UgJHNyY2RpciBpbg0KKyAg LikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLg0KKyAgICBhY19zcmNkaXI9Lg0KKyAgICBh Y190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViDQorICAgIGFjX2Fic190b3Bfc3JjZGly PSRhY19wd2QgOzsNCisgIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4NCisg ICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsNCisgICAgYWNfdG9wX3NyY2Rpcj0k c3JjZGlyDQorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsNCisgICopICMgUmVsYXRp dmUgbmFtZS4NCisgICAgYWNfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19k aXJfc3VmZml4DQorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGly DQorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7Ow0KK2VzYWMNCithY19h YnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4DQorDQorICAgIGNkICIk YWNfZGlyIiB8fCB7IGFjX3N0YXR1cz0kPzsgY29udGludWU7IH0NCisgICAgIyBDaGVjayBmb3Ig Z3Vlc3RlZCBjb25maWd1cmUuDQorICAgIGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJl LmdudSI7IHRoZW4NCisgICAgICBlY2hvICYmDQorICAgICAgJFNIRUxMICIkYWNfc3JjZGlyL2Nv bmZpZ3VyZS5nbnUiIC0taGVscD1yZWN1cnNpdmUNCisgICAgZWxpZiB0ZXN0IC1mICIkYWNfc3Jj ZGlyL2NvbmZpZ3VyZSI7IHRoZW4NCisgICAgICBlY2hvICYmDQorICAgICAgJFNIRUxMICIkYWNf c3JjZGlyL2NvbmZpZ3VyZSIgLS1oZWxwPXJlY3Vyc2l2ZQ0KKyAgICBlbHNlDQorICAgICAgJGFz X2VjaG8gIiRhc19tZTogV0FSTklORzogbm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBp bg0KJGFjX2RpciIgPiYyDQorICAgIGZpIHx8IGFjX3N0YXR1cz0kPw0KKyAgICBjZCAiJGFjX3B3 ZCIgfHwgeyBhY19zdGF0dXM9JD87IGJyZWFrOyB9DQorICBkb25lDQorZmkNCisNCit0ZXN0IC1u ICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMNCitpZiAkYWNfaW5pdF92ZXJzaW9u OyB0aGVuDQorICBjYXQgPDxcX0FDRU9GDQorY29uZmlndXJlDQorZ2VuZXJhdGVkIGJ5IEdOVSBB dXRvY29uZiAyLjY4DQorDQorQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLg0KK1RoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8g Y29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0Lg0KK19BQ0VPRg0KKyAgZXhpdA0KK2ZpDQor DQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgQXV0b2NvbmYgaW5pdGlhbGl6 YXRpb24uICMjDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBhY19mbl9j X3RyeV9jb21waWxlIExJTkVOTw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFRy eSB0byBjb21waWxlIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1 Y2NlZWRlZC4NCithY19mbl9jX3RyeV9jb21waWxlICgpDQorew0KKyAgYXNfbGluZW5vPSR7YXNf bGluZW5vLSIkMSJ9DQphc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9f c3RhY2sNCisgIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQNCisgIGlmIHsgeyBhY190cnk9IiRh Y19jb21waWxlIg0KK2Nhc2UgIigoJGFjX3RyeSIgaW4NCisgICpcIiogfCAqXGAqIHwgKlxcKikg YWNfdHJ5X2VjaG89XCRhY190cnk7Ow0KKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7DQorZXNh Yw0KK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFj X3RyeV9lY2hvXCIiDQorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1DQorICAoZXZhbCAi JGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVycg0KKyAgYWNfc3RhdHVzPSQ/DQorICBpZiB0ZXN0 IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbg0KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIg PmNvbmZ0ZXN0LmVyMQ0KKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQ0KKyAgICBtdiAtZiBjb25m dGVzdC5lcjEgY29uZnRlc3QuZXJyDQorICBmaQ0KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1DQorICB0ZXN0ICRhY19zdGF0dXMg PSAwOyB9ICYmIHsNCisJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fA0KKwkgdGVzdCAh IC1zIGNvbmZ0ZXN0LmVycg0KKyAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4 dDsgdGhlbiA6DQorICBhY19yZXR2YWw9MA0KK2Vsc2UNCisgICRhc19lY2hvICIkYXNfbWU6IGZh aWxlZCBwcm9ncmFtIHdhczoiID4mNQ0KK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+ JjUNCisNCisJYWNfcmV0dmFsPTENCitmaQ0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2Fz X2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vDQorICBhc19mbl9zZXRfc3RhdHVzICRh Y19yZXR2YWwNCisNCit9ICMgYWNfZm5fY190cnlfY29tcGlsZQ0KK2NhdCA+Y29uZmlnLmxvZyA8 PF9BQ0VPRg0KK1RoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29t cGlsZXJzIHdoaWxlDQorcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29u ZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4NCisNCitJdCB3YXMgY3JlYXRlZCBieSAkYXNfbWUsIHdo aWNoIHdhcw0KK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29t bWFuZCBsaW5lIHdhcw0KKw0KKyAgJCAkMCAkQA0KKw0KK19BQ0VPRg0KK2V4ZWMgNT4+Y29uZmln LmxvZw0KK3sNCitjYXQgPDxfQVNVTkFNRQ0KKyMjIC0tLS0tLS0tLSAjIw0KKyMjIFBsYXRmb3Jt LiAjIw0KKyMjIC0tLS0tLS0tLSAjIw0KKw0KK2hvc3RuYW1lID0gYChob3N0bmFtZSB8fCB1bmFt ZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgDQordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9k ZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYv bnVsbCB8fCBlY2hvIHVua25vd25gDQordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVs bCB8fCBlY2hvIHVua25vd25gDQordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8 fCBlY2hvIHVua25vd25gDQorDQorL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1l IC1wKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQorL2Jpbi91bmFtZSAtWCAgICAgPSBg KC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gDQorDQorL2Jp bi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbCAgICAgICAgICAg ICAgfHwgZWNobw0KdW5rbm93bmANCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jp bi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvDQp1bmtub3duYA0KKy91c3IvY29u dmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsIHx8 IGVjaG8NCnVua25vd25gDQorL3Vzci9iaW4vaG9zdGluZm8gICAgICA9IGAoL3Vzci9iaW4vaG9z dGluZm8pIDI+L2Rldi9udWxsICAgICAgfHwgZWNobw0KdW5rbm93bmANCisvYmluL21hY2hpbmUg ICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hv DQp1bmtub3duYA0KKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwp IDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8NCnVua25vd25gDQorL2Jpbi91bml2ZXJzZSAgICAg ICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGwgICAgICAgICAgfHwgZWNobw0KdW5r bm93bmANCisNCitfQVNVTkFNRQ0KKw0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisg IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgICRhc19lY2hvICJQQVRIOiAkYXNf ZGlyIg0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCit9ID4mNQ0KKw0KK2NhdCA+JjUg PDxfQUNFT0YNCisNCisNCisjIyAtLS0tLS0tLS0tLSAjIw0KKyMjIENvcmUgdGVzdHMuICMjDQor IyMgLS0tLS0tLS0tLS0gIyMNCisNCitfQUNFT0YNCisNCisNCisjIEtlZXAgYSB0cmFjZSBvZiB0 aGUgY29tbWFuZCBsaW5lLg0KKyMgU3RyaXAgb3V0IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJlY3Vy c2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLg0KKyMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1 c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZQ0KcnVucy4NCisjIEFsc28g cXVvdGUgYW55IGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhLWNoYXJhY3RlcnMuDQorIyBNYWtl IHR3byBwYXNzZXMgdG8gYWxsb3cgZm9yIHByb3BlciBkdXBsaWNhdGUtYXJndW1lbnQgc3VwcHJl c3Npb24uDQorYWNfY29uZmlndXJlX2FyZ3M9DQorYWNfY29uZmlndXJlX2FyZ3MwPQ0KK2FjX2Nv bmZpZ3VyZV9hcmdzMT0NCithY19tdXN0X2tlZXBfbmV4dD1mYWxzZQ0KK2ZvciBhY19wYXNzIGlu IDEgMg0KK2RvDQorICBmb3IgYWNfYXJnDQorICBkbw0KKyAgICBjYXNlICRhY19hcmcgaW4NCisg ICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBj b250aW51ZSA7Ow0KKyAgICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8 IC0tcXUgfCAtLXEgXA0KKyAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNp bGUgfCAtLXNpbCkNCisgICAgICBjb250aW51ZSA7Ow0KKyAgICAqXCcqKQ0KKyAgICAgIGFjX2Fy Zz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7DQorICAg IGVzYWMNCisgICAgY2FzZSAkYWNfcGFzcyBpbg0KKyAgICAxKSBhc19mbl9hcHBlbmQgYWNfY29u ZmlndXJlX2FyZ3MwICIgJyRhY19hcmcnIiA7Ow0KKyAgICAyKQ0KKyAgICAgIGFzX2ZuX2FwcGVu ZCBhY19jb25maWd1cmVfYXJnczEgIiAnJGFjX2FyZyciDQorICAgICAgaWYgdGVzdCAkYWNfbXVz dF9rZWVwX25leHQgPSB0cnVlOyB0aGVuDQorCWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290 IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4NCisgICAgICBlbHNlDQorCWNhc2UgJGFjX2FyZyBpbg0K KwkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSog XA0KKwkgIHwgLWVuYWJsZS0qIHwgLS1lbmFibGUtKiB8IC1nYXMgfCAtLWcqIHwgLW5mcCB8IC0t bmYqIFwNCisJICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNpbCogfCAtdiB8 IC12ZXJiKiBcDQorCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13aXRo b3V0LSogfCAtLXgpDQorCSAgICBjYXNlICIkYWNfY29uZmlndXJlX2FyZ3MwICIgaW4NCisJICAg ICAgIiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGludWUgOzsNCisJ ICAgIGVzYWMNCisJICAgIDs7DQorCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVlIDs7DQor CWVzYWMNCisgICAgICBmaQ0KKyAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAi ICckYWNfYXJnJyINCisgICAgICA7Ow0KKyAgICBlc2FjDQorICBkb25lDQorZG9uZQ0KK3sgYWNf Y29uZmlndXJlX2FyZ3MwPTsgdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MwO30NCit7IGFjX2NvbmZp Z3VyZV9hcmdzMT07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9DQorDQorIyBXaGVuIGludGVy cnVwdGVkIG9yIGV4aXQnZCwgY2xlYW51cCB0ZW1wb3JhcnkgZmlsZXMsIGFuZCBjb21wbGV0ZQ0K KyMgY29uZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVv dGVzIGluIHRoZXJlDQorIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuDQorIyBX QVJOSU5HOiBVc2UgJ1wnJyB0byByZXByZXNlbnQgYW4gYXBvc3Ryb3BoZSB3aXRoaW4gdGhlIHRy YXAuDQorIyBXQVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRoIGEgbmV3bGlu ZSwgZHVlIHRvIGEgRnJlZUJTRA0KNC4wIGJ1Zy4NCit0cmFwICdleGl0X3N0YXR1cz0kPw0KKyAg IyBTYXZlIGludG8gY29uZmlnLmxvZyBzb21lIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgaGVscCBp bg0KZGVidWdnaW5nLg0KKyAgew0KKyAgICBlY2hvDQorDQorICAgICRhc19lY2hvICIjIyAtLS0t LS0tLS0tLS0tLS0tICMjDQorIyMgQ2FjaGUgdmFyaWFibGVzLiAjIw0KKyMjIC0tLS0tLS0tLS0t LS0tLS0gIyMiDQorICAgIGVjaG8NCisgICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5n IHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluDQp2YWx1ZXMsDQorKA0KKyAgZm9yIGFj X3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16QS1aMC0N CjlfXSpcKT0uKi9cMS9wJ1wnJ2A7IGRvDQorICAgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAg ICBjYXNlICRhY192YWwgaW4gIygNCisgICAgKiR7YXNfbmx9KikNCisgICAgICBjYXNlICRhY192 YXIgaW4gIygNCisgICAgICAqX2N2XyopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogV0FSTklORzogY2FjaGUNCnZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXds aW5lIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNf dmFyIGNvbnRhaW5zIGEgbmV3bGluZSINCj4mMjt9IDs7DQorICAgICAgZXNhYw0KKyAgICAgIGNh c2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygNCisgICAgICBC QVNIX0FSR1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFyPSA7OyAjKA0KKyAgICAgICopIHsg ZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7DQorICAgICAgZXNhYyA7Ow0KKyAgICBl c2FjDQorICBkb25lDQorICAoc2V0KSAyPiYxIHwNCisgICAgY2FzZSAkYXNfbmxgKGFjX3NwYWNl PSdcJycgJ1wnJzsgc2V0KSAyPiYxYCBpbiAjKA0KKyAgICAqJHthc19ubH1hY19zcGFjZT1cICop DQorICAgICAgc2VkIC1uIFwNCisJInMvJ1wnJy8nXCcnXFxcXCdcJycnXCcnL2c7DQorCSANCnMv XlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9 J1wnJ1xcMidcJycvDQpwIg0KKyAgICAgIDs7ICMoDQorICAgICopDQorICAgICAgc2VkIC1uICIv XltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCINCisgICAgICA7Ow0KKyAg ICBlc2FjIHwNCisgICAgc29ydA0KKykNCisgICAgZWNobw0KKw0KKyAgICAkYXNfZWNobyAiIyMg LS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBPdXRwdXQgdmFyaWFibGVzLiAjIw0KKyMjIC0tLS0t LS0tLS0tLS0tLS0tICMjIg0KKyAgICBlY2hvDQorICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0 X3ZhcnMNCisgICAgZG8NCisgICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXINCisgICAgICBjYXNl ICRhY192YWwgaW4NCisgICAgICAqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8 IHNlZA0KInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7Ow0KKyAgICAgIGVzYWMNCisg ICAgICAkYXNfZWNobyAiJGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyciDQorICAgIGRvbmUgfCBzb3J0 DQorICAgIGVjaG8NCisNCisgICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbg0K KyAgICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgRmlsZSBzdWJz dGl0dXRpb25zLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiDQorICAgICAgZWNobw0K KyAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzDQorICAgICAgZG8NCisJZXZhbCBh Y192YWw9XCQkYWNfdmFyDQorCWNhc2UgJGFjX3ZhbCBpbg0KKwkqXCdcJycqKSBhY192YWw9YCRh c19lY2hvICIkYWNfdmFsIiB8IHNlZA0KInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wnJy9nImA7 Ow0KKwllc2FjDQorCSRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyINCisgICAgICBk b25lIHwgc29ydA0KKyAgICAgIGVjaG8NCisgICAgZmkNCisNCisgICAgaWYgdGVzdCAtcyBjb25m ZGVmcy5oOyB0aGVuDQorICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjDQorIyMgY29u ZmRlZnMuaC4gIyMNCisjIyAtLS0tLS0tLS0tLSAjIyINCisgICAgICBlY2hvDQorICAgICAgY2F0 IGNvbmZkZWZzLmgNCisgICAgICBlY2hvDQorICAgIGZpDQorICAgIHRlc3QgIiRhY19zaWduYWwi ICE9IDAgJiYNCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWdu YWwiDQorICAgICRhc19lY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIg0KKyAgfSA+JjUN CisgIHJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJg0KKyAgICBybSAtZiAtciBj b25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFjX2NsZWFuX2ZpbGVzICYmDQorICAgIGV4aXQg JGV4aXRfc3RhdHVzDQorJyAwDQorZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvDQorICB0 cmFwICdhY19zaWduYWw9JyRhY19zaWduYWwnOyBhc19mbl9leGl0IDEnICRhY19zaWduYWwNCitk b25lDQorYWNfc2lnbmFsPTANCisNCisjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGlu ZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4NCmV4Y2VlZC4NCitybSAtZiAtciBjb25mdGVz dCogY29uZmRlZnMuaA0KKw0KKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZz LmgNCisNCisjIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4NCisNCitjYXQgPj5j b25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUi DQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FH RV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1FIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiJFBBQ0tBR0VfVkVSU0lPTiIN CitfQUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdF X1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQi DQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUgUEFDS0FH RV9VUkwgIiRQQUNLQUdFX1VSTCINCitfQUNFT0YNCisNCisNCisjIExldCB0aGUgc2l0ZSBmaWxl IHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4NCisjIFByZWZl ciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBv bmVzLg0KK2FjX3NpdGVfZmlsZTE9Tk9ORQ0KK2FjX3NpdGVfZmlsZTI9Tk9ORQ0KK2lmIHRlc3Qg LW4gIiRDT05GSUdfU0lURSI7IHRoZW4NCisgICMgV2UgZG8gbm90IHdhbnQgYSBQQVRIIHNlYXJj aCBmb3IgY29uZmlnLnNpdGUuDQorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgNCisgICAgLSop ICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsNCisgICAgKi8qKSBhY19zaXRlX2ZpbGUx PSRDT05GSUdfU0lURTs7DQorICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7 DQorICBlc2FjDQorZWxpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4NCisgIGFjX3Np dGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQ0KKyAgYWNfc2l0ZV9maWxlMj0kcHJl Zml4L2V0Yy9jb25maWcuc2l0ZQ0KK2Vsc2UNCisgIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRf cHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlDQorICBhY19zaXRlX2ZpbGUyPSRhY19kZWZhdWx0X3By ZWZpeC9ldGMvY29uZmlnLnNpdGUNCitmaQ0KK2ZvciBhY19zaXRlX2ZpbGUgaW4gIiRhY19zaXRl X2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiDQorZG8NCisgIHRlc3QgIngkYWNfc2l0ZV9maWxlIiA9 IHhOT05FICYmIGNvbnRpbnVlDQorICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFjX3NpdGVfZmls ZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7DQp0aGVuDQorICAgIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBzaXRlIHNjcmlwdA0KJGFjX3NpdGVf ZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0 ZV9maWxlIiA+JjY7fQ0KKyAgICBzZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+JjUNCisg ICAgLiAiJGFjX3NpdGVfZmlsZSIgXA0KKyAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4NClxgJGFjX3B3ZCc6IiA+JjUNCiskYXNfZWNo byAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9DQorYXNfZm5fZXJyb3IgJD8g ImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUNCitTZWUgXGBjb25maWcu bG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQ0KKyAgZmkNCitkb25lDQorDQor aWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuDQorICAjIFNvbWUgdmVyc2lvbnMgb2YgYmFz aCB3aWxsIGZhaWwgdG8gc291cmNlIC9kZXYvbnVsbCAoc3BlY2lhbCBmaWxlcw0KKyAgIyBhY3R1 YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuICBESkdQUCBlbXVsYXRlcyBpdCBhcyBhIHJl Z3VsYXINCmZpbGUuDQorICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGNhY2hlX2ZpbGUiICYmIHRl c3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbg0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGxvYWRpbmcgY2FjaGUNCiRjYWNoZV9maWxlIiA+JjUNCiskYXNfZWNo byAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAgICBjYXNlICRj YWNoZV9maWxlIGluDQorICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICIkY2FjaGVfZmlsZSI7 Ow0KKyAgICAgICopICAgICAgICAgICAgICAgICAgICAgIC4gIi4vJGNhY2hlX2ZpbGUiOzsNCisg ICAgZXNhYw0KKyAgZmkNCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIg0KPiY1DQorJGFzX2VjaG8gIiRh c19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9DQorICA+JGNhY2hlX2ZpbGUN CitmaQ0KKw0KKyMgQ2hlY2sgdGhhdCB0aGUgcHJlY2lvdXMgdmFyaWFibGVzIHNhdmVkIGluIHRo ZSBjYWNoZSBoYXZlIGtlcHQgdGhlDQpzYW1lDQorIyB2YWx1ZS4NCithY19jYWNoZV9jb3JydXB0 ZWQ9ZmFsc2UNCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91c192YXJzOyBkbw0KKyAgZXZhbCBh Y19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQNCisgIGV2YWwgYWNfbmV3X3NldD1c JGFjX2Vudl8ke2FjX3Zhcn1fc2V0DQorICBldmFsIGFjX29sZF92YWw9XCRhY19jdl9lbnZfJHth Y192YXJ9X3ZhbHVlDQorICBldmFsIGFjX25ld192YWw9XCRhY19lbnZfJHthY192YXJ9X3ZhbHVl DQorICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0IGluDQorICAgIHNldCwpDQorICAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy JyB3YXMNCnNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUNCisk YXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92 YWwnIGluIHRoZQ0KcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRl ZD06IDs7DQorICAgICxzZXQpDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMNCm5vdCBzZXQgaW4gdGhlIHByZXZpb3Vz IHJ1biIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIG5vdCBz ZXQgaW4gdGhlIHByZXZpb3VzIHJ1biINCj4mMjt9DQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVk PTogOzsNCisgICAgLCk7Ow0KKyAgICAqKQ0KKyAgICAgIGlmIHRlc3QgIngkYWNfb2xkX3ZhbCIg IT0gIngkYWNfbmV3X3ZhbCI7IHRoZW4NCisJIyBkaWZmZXJlbmNlcyBpbiB3aGl0ZXNwYWNlIGRv IG5vdCBsZWFkIHRvIGZhaWx1cmUuDQorCWFjX29sZF92YWxfdz1gZWNobyB4ICRhY19vbGRfdmFs YA0KKwlhY19uZXdfdmFsX3c9YGVjaG8geCAkYWNfbmV3X3ZhbGANCisJaWYgdGVzdCAiJGFjX29s ZF92YWxfdyIgIT0gIiRhY19uZXdfdmFsX3ciOyB0aGVuDQorCSAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJw0KaGFzIGNoYW5nZWQgc2lu Y2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRh Y192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cw0KcnVuOiIgPiYyO30NCisJICBh Y19jYWNoZV9jb3JydXB0ZWQ9Og0KKwllbHNlDQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZw0Kd2hpdGVzcGFjZSBjaGFuZ2VzIGlu IFxgJGFjX3Zhcicgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hvICIkYXNf bWU6IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRhY192YXInDQpz aW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30NCisJICBldmFsICRhY192YXI9XCRhY19vbGRf dmFsDQorCWZpDQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBm b3JtZXIgdmFsdWU6IA0KXGAkYWNfb2xkX3ZhbCciID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6ICAg Zm9ybWVyIHZhbHVlOiAgXGAkYWNfb2xkX3ZhbCciID4mMjt9DQorCXsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogICBjdXJyZW50IHZhbHVlOg0KXGAkYWNfbmV3X3ZhbCci ID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6ICAgY3VycmVudCB2YWx1ZTogXGAkYWNfbmV3X3ZhbCci ID4mMjt9DQorICAgICAgZmk7Ow0KKyAgZXNhYw0KKyAgIyBQYXNzIHByZWNpb3VzIHZhcmlhYmxl cyB0byBjb25maWcuc3RhdHVzLg0KKyAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVu DQorICAgIGNhc2UgJGFjX25ld192YWwgaW4NCisgICAgKlwnKikgYWNfYXJnPSRhY192YXI9YCRh c19lY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQNCiJzLycvJ1xcXFxcXFxcJycvZyJgIDs7DQorICAg ICopIGFjX2FyZz0kYWNfdmFyPSRhY19uZXdfdmFsIDs7DQorICAgIGVzYWMNCisgICAgY2FzZSAi ICRhY19jb25maWd1cmVfYXJncyAiIGluDQorICAgICAgKiIgJyRhY19hcmcnICIqKSA7OyAjIEF2 b2lkIGR1cHMuICBVc2Ugb2YgcXVvdGVzIGVuc3VyZXMNCmFjY3VyYWN5Lg0KKyAgICAgICopIGFz X2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIgOzsNCisgICAgZXNhYw0K KyAgZmkNCitkb25lDQoraWYgJGFjX2NhY2hlX2NvcnJ1cHRlZDsgdGhlbg0KKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4m NQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30NCisgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGNoYW5nZXMgaW4g dGhlDQplbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQ0KKyRhc19lY2hv ICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlz ZSB0aGUNCmJ1aWxkIiA+JjI7fQ0KKyAgYXNfZm5fZXJyb3IgJD8gInJ1biBcYG1ha2UgZGlzdGNs ZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kDQpzdGFydCBvdmVyIiAiJExJTkVOTyIg NQ0KK2ZpDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNYWluIGJvZHkgb2Ygc2Ny aXB0LiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorYWNfZXh0PWMNCithY19j cHA9JyRDUFAgJENQUEZMQUdTJw0KK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFH UyBjb25mdGVzdC4kYWNfZXh0ID4mNScNCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhl ZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTDQpjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4m NScNCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251DQorDQorDQorDQorYWNf YXV4X2Rpcj0NCitmb3IgYWNfZGlyIGluICR7c3JjZGlyfS8uLi8uLiAiJHNyY2RpciIvJHtzcmNk aXJ9Ly4uLy4uOyBkbw0KKyAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbg0K KyAgICBhY19hdXhfZGlyPSRhY19kaXINCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIv aW5zdGFsbC1zaCAtYyINCisgICAgYnJlYWsNCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0 YWxsLnNoIjsgdGhlbg0KKyAgICBhY19hdXhfZGlyPSRhY19kaXINCisgICAgYWNfaW5zdGFsbF9z aD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyINCisgICAgYnJlYWsNCisgIGVsaWYgdGVzdCAt ZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuDQorICAgIGFjX2F1eF9kaXI9JGFjX2Rpcg0KKyAgICBh Y19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyINCisgICAgYnJlYWsN CisgIGZpDQorZG9uZQ0KK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbg0KKyAgYXNfZm5f ZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBp bg0KJHtzcmNkaXJ9Ly4uLy4uIFwiJHNyY2RpclwiLyR7c3JjZGlyfS8uLi8uLiIgIiRMSU5FTk8i IDUNCitmaQ0KKw0KKyMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5k IHVuc3VwcG9ydGVkLA0KKyMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3aXRoZHJhd24gaW4gYSBm dXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4NCisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxl bXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYQ0KZGlyZWN0b3J5DQorIyB3aG9z ZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzLg0KK2FjX2NvbmZpZ19ndWVz cz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZQ0K dGhpcyB2YXIuDQorYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIi ICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcw0KdmFyLg0KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRh Y19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzDQp2YXIuDQorDQor DQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLQ0KKyMgQ2hlY2tzIGZvciBwcm9ncmFtcw0KKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCi0tLS0NCisNCitybSAtcmYgLnRzdCAyPi9kZXYvbnVsbA0KK21rZGlyIC50c3Qg Mj4vZGV2L251bGwNCitpZiB0ZXN0IC1kIC50c3Q7IHRoZW4NCisgIGFtX19sZWFkaW5nX2RvdD0u DQorZWxzZQ0KKyAgYW1fX2xlYWRpbmdfZG90PV8NCitmaQ0KK3JtZGlyIC50c3QgMj4vZGV2L251 bGwNCisNCitERVBESVI9IiR7YW1fX2xlYWRpbmdfZG90fWRlcHMiDQorDQorYWNfY29uZmlnX2Nv bW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlcGZpbGVzIg0KKw0KKw0KK2FtX21ha2U9JHtN QUtFLW1ha2V9DQorY2F0ID4gY29uZmluYyA8PCAnRU5EJw0KK2FtX19kb2l0Og0KKwlAZWNobyBk b25lDQorLlBIT05ZOiBhbV9fZG9pdA0KK0VORA0KKyMgSWYgd2UgZG9uJ3QgZmluZCBhbiBpbmNs dWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50IG91dCB0aGUgY29kZS4NCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdHlsZSBvZiBpbmNsdWRl DQp1c2VkIGJ5ICRhbV9tYWtlIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3R5bGUg b2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlLi4uICIgPiY2OyB9DQorYW1fX2luY2x1ZGU9IiMi DQorYW1fX3F1b3RlPQ0KK19hbV9yZXN1bHQ9bm9uZQ0KKyMgRmlyc3QgdHJ5IEdOVSBtYWtlIHN0 eWxlIGluY2x1ZGUuDQorZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNvbmZtZg0KKyMgV2UgZ3Jl cCBvdXQgYEVudGVyaW5nIGRpcmVjdG9yeScgYW5kIGBMZWF2aW5nIGRpcmVjdG9yeScNCisjIG1l c3NhZ2VzIHdoaWNoIGNhbiBvY2N1ciBpZiBgdycgZW5kcyB1cCBpbiBNQUtFRkxBR1MuDQorIyBJ biBwYXJ0aWN1bGFyIHdlIGRvbid0IGxvb2sgYXQgYF5tYWtlOicgYmVjYXVzZSBHTlUgbWFrZSBt aWdodA0KKyMgYmUgaW52b2tlZCB1bmRlciBzb21lIG90aGVyIG5hbWUgKHVzdWFsbHkgImdtYWtl IiksIGluIHdoaWNoDQorIyBjYXNlIGl0IHByaW50cyBpdHMgbmV3IG5hbWUgaW5zdGVhZCBvZiBg bWFrZScuDQoraWYgdGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGwgfCBn cmVwIC12ICdpbmcNCmRpcmVjdG9yeSdgIiA9ICJkb25lIjsgdGhlbg0KKyAgIGFtX19pbmNsdWRl PWluY2x1ZGUNCisgICBhbV9fcXVvdGU9DQorICAgX2FtX3Jlc3VsdD1HTlUNCitmaQ0KKyMgTm93 IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLg0KK2lmIHRlc3QgIiRhbV9faW5jbHVkZSIgPSAi IyI7IHRoZW4NCisgICBlY2hvICcuaW5jbHVkZSAiY29uZmluYyInID4gY29uZm1mDQorICAgaWYg dGVzdCAiYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGxgIiA9ICJkb25lIjsgdGhl bg0KKyAgICAgIGFtX19pbmNsdWRlPS5pbmNsdWRlDQorICAgICAgYW1fX3F1b3RlPSJcIiINCisg ICAgICBfYW1fcmVzdWx0PUJTRA0KKyAgIGZpDQorZmkNCisNCisNCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJF9hbV9yZXN1bHQiID4mNQ0KKyRhc19l Y2hvICIkX2FtX3Jlc3VsdCIgPiY2OyB9DQorcm0gLWYgY29uZmluYyBjb25mbWYNCisNCisjIENo ZWNrIHdoZXRoZXIgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyB3YXMgZ2l2ZW4uDQoraWYg dGVzdCAiJHtlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZytzZXR9IiA9IHNldDsgdGhlbiA6DQor ICBlbmFibGV2YWw9JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nOw0KK2ZpDQorDQoraWYgdGVz dCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIgIT0geG5vOyB0aGVuDQorICBhbV9kZXBj b21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIg0KKyAgQU1ERVBCQUNLU0xBU0g9J1wnDQorZmkNCisN CisNCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4N CisgIEFNREVQX1RSVUU9DQorICBBTURFUF9GQUxTRT0nIycNCitlbHNlDQorICBBTURFUF9UUlVF PScjJw0KKyAgQU1ERVBfRkFMU0U9DQorZmkNCisNCisNCisNCisjIEV4dHJhY3QgdGhlIGZpcnN0 IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoDQphcmdzLg0K K3NldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZh bHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYg dGVzdCAtbiAiJENDIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lG Uw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX0NDPSJnY2MiDQorICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBk b25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCitDQz0kYWNfY3ZfcHJvZ19DQw0K K2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQ0KKyRhc19lY2hvICIkQ0MiID4mNjsgfQ0KK2Vs c2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu byIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KKw0KK2RlcGNjPSIkQ0Mi ICAgYW1fY29tcGlsZXJfbGlzdD0NCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YNCiRkZXBjYyIgPiY1DQorJGFz X2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0N CitpZiAke2FtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlKzp9IGZhbHNlOyB0aGVu IDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAteiAi JEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbg0KKyAgIyBXZSBtYWtl IGEgc3ViZGlyIGFuZCBkbyB0aGUgdGVzdHMgdGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1 cA0KKyAgIyBtYWtpbmcgYm9ndXMgZmlsZXMgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0IGFuZCBu ZXZlciByZW1vdmUuICBGb3INCisgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24g SFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwDQorICAjIG1ha2luZyBhIGR1bW15IGZpbGUg bmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUNCm91dHB1dA0KKyAgIyBp biBEJy4NCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0KKyAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGly IGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUNCisgICMgdXNpbmcg YSByZWxhdGl2ZSBkaXJlY3RvcnkuDQorICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0ZXN0LmRpcg0K KyAgY2QgY29uZnRlc3QuZGlyDQorICAjIFdlIHdpbGwgYnVpbGQgb2JqZWN0cyBhbmQgZGVwZW5k ZW5jaWVzIGluIGEgc3ViZGlyZWN0b3J5IGJlY2F1c2UNCisgICMgaXQgaGVscHMgdG8gZGV0ZWN0 IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVzLiAgRm9yIGluc3RhbmNlDQorICAjIGJvdGgg VHJ1NjQncyBjYyBhbmQgSUNDIHN1cHBvcnQgLU1EIHRvIG91dHB1dCBkZXBlbmRlbmNpZXMgYXMg YQ0KKyAgIyBzaWRlIGVmZmVjdCBvZiBjb21waWxhdGlvbiwgYnV0IElDQyB3aWxsIHB1dCB0aGUg ZGVwZW5kZW5jaWVzIGluDQorICAjIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3 aWxsIHB1dCB0aGVtIGluIHRoZSBvYmplY3QNCisgICMgZGlyZWN0b3J5Lg0KKyAgbWtkaXIgc3Vi DQorDQorICBhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lDQorICBpZiB0 ZXN0ICIkYW1fY29tcGlsZXJfbGlzdCIgPSAiIjsgdGhlbg0KKyAgICAgYW1fY29tcGlsZXJfbGlz dD1gc2VkIC1uICdzL14jKlwoW2EtekEtWjAtOV0qXCkpJC9cMS9wJyA8DQouL2RlcGNvbXBgDQor ICBmaQ0KKyAgZm9yIGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7IGRvDQorICAgICMgU2V0 dXAgYSBzb3VyY2Ugd2l0aCBtYW55IGRlcGVuZGVuY2llcywgYmVjYXVzZSBzb21lIGNvbXBpbGVy cw0KKyAgICAjIGxpa2UgdG8gd3JhcCBsYXJnZSBkZXBlbmRlbmN5IGxpc3RzIG9uIGNvbHVtbiA4 MCAod2l0aCBcKSwgYW5kDQorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBkZXBjb21wIG1v ZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkgdGhpcy4NCisgICAgIw0KKyAgICAjIFdlIG5lZWQgdG8g cmVjcmVhdGUgdGhlc2UgZmlsZXMgZm9yIGVhY2ggdGVzdCwgYXMgdGhlIGNvbXBpbGVyDQptYXkN CisgICAgIyBvdmVyd3JpdGUgc29tZSBvZiB0aGVtIHdoZW4gdGVzdGluZyB3aXRoIG9ic2N1cmUg Y29tbWFuZCBsaW5lcy4NCisgICAgIyBUaGlzIGhhcHBlbnMgYXQgbGVhc3Qgd2l0aCB0aGUgQUlY IEMgY29tcGlsZXIuDQorICAgIDogPiBzdWIvY29uZnRlc3QuYw0KKyAgICBmb3IgaSBpbiAxIDIg MyA0IDUgNjsgZG8NCisgICAgICBlY2hvICcjaW5jbHVkZSAiY29uZnRzdCckaScuaCInID4+IHN1 Yi9jb25mdGVzdC5jDQorICAgICAgIyBVc2luZyBgOiA+IHN1Yi9jb25mdHN0JGkuaCcgY3JlYXRl cyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdpdGgNCisgICAgICAjIFNvbGFyaXMgOCdzIHsvdXNyLH0v YmluL3NoLg0KKyAgICAgIHRvdWNoIHN1Yi9jb25mdHN0JGkuaA0KKyAgICBkb25lDQorICAgIGVj aG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1b3Rl fSIgPg0KY29uZm1mDQorDQorICAgIGNhc2UgJGRlcG1vZGUgaW4NCisgICAgbm9zaWRlZWZmZWN0 KQ0KKyAgICAgICMgYWZ0ZXIgdGhpcyB0YWcsIG1lY2hhbmlzbXMgYXJlIG5vdCBieSBzaWRlLWVm ZmVjdCwgc28gdGhleSdsbA0KKyAgICAgICMgb25seSBiZSB1c2VkIHdoZW4gZXhwbGljaXRseSBy ZXF1ZXN0ZWQNCisgICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiA9 IHh5ZXM7IHRoZW4NCisJY29udGludWUNCisgICAgICBlbHNlDQorCWJyZWFrDQorICAgICAgZmkN CisgICAgICA7Ow0KKyAgICBub25lKSBicmVhayA7Ow0KKyAgICBlc2FjDQorICAgICMgV2UgY2hl Y2sgd2l0aCBgLWMnIGFuZCBgLW8nIGZvciB0aGUgc2FrZSBvZiB0aGUgImRhc2htc3Rkb3V0Ig0K KyAgICAjIG1vZGUuICBJdCB0dXJucyBvdXQgdGhhdCB0aGUgU3VuUHJvIEMrKyBjb21waWxlciBk b2VzIG5vdA0KcHJvcGVybHkNCisgICAgIyBoYW5kbGUgYC1NIC1vJywgYW5kIHdlIG5lZWQgdG8g ZGV0ZWN0IHRoaXMuDQorICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXA0KKyAgICAgICBzb3VyY2U9 c3ViL2NvbmZ0ZXN0LmMgb2JqZWN0PXN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBcDQorICAgICAg IGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcDQor ICAgICAgICRTSEVMTCAuL2RlcGNvbXAgJGRlcGNjIC1jIC1vIHN1Yi9jb25mdGVzdC4ke09CSkVY VC1vfQ0Kc3ViL2NvbmZ0ZXN0LmMgXA0KKyAgICAgICAgID4vZGV2L251bGwgMj5jb25mdGVzdC5l cnIgJiYNCisgICAgICAgZ3JlcCBzdWIvY29uZnRzdDYuaCBzdWIvY29uZnRlc3QuUG8gPiAvZGV2 L251bGwgMj4mMSAmJg0KKyAgICAgICBncmVwIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIv Y29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMQ0KJiYNCisgICAgICAgJHtNQUtFLW1ha2V9IC1z IC1mIGNvbmZtZiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgICAgIyBpY2MgZG9lc24ndCBj aG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZQ0Kd2FybmluZ3MNCisg ICAgICAjIG9yIHJlbWFya3MgKGV2ZW4gd2l0aCAtV2Vycm9yKS4gIFNvIHdlIGdyZXAgc3RkZXJy IGZvciBhbnkNCm1lc3NhZ2UNCisgICAgICAjIHRoYXQgc2F5cyBhbiBvcHRpb24gd2FzIGlnbm9y ZWQgb3Igbm90IHN1cHBvcnRlZC4NCisgICAgICAjIFdoZW4gZ2l2ZW4gLU1QLCBpY2MgNy4wIGFu ZCA3LjEgY29tcGxhaW4gdGh1c2x5Og0KKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJu aW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQNCnJlcXVpcmVkDQorICAgICAg IyBUaGUgZGlhZ25vc2lzIGNoYW5nZWQgaW4gaWNjIDguMDoNCisgICAgICAjICAgaWNjOiBDb21t YW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZA0KKyAgICAgIGlmIChn cmVwICdpZ25vcmluZyBvcHRpb24nIGNvbmZ0ZXN0LmVyciB8fA0KKyAgICAgICAgICBncmVwICdu b3Qgc3VwcG9ydGVkJyBjb25mdGVzdC5lcnIpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ow0KZWxz ZQ0KKyAgICAgICAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9JGRlcG1vZGUN CisgICAgICAgIGJyZWFrDQorICAgICAgZmkNCisgICAgZmkNCisgIGRvbmUNCisNCisgIGNkIC4u DQorICBybSAtcmYgY29uZnRlc3QuZGlyDQorZWxzZQ0KKyAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVz X2NvbXBpbGVyX3R5cGU9bm9uZQ0KK2ZpDQorDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDoNCiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGls ZXJfdHlwZSIgPiY1DQorJGFzX2VjaG8gIiRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJf dHlwZSIgPiY2OyB9DQorQ0NERVBNT0RFPWRlcG1vZGU9JGFtX2N2X0NDX2RlcGVuZGVuY2llc19j b21waWxlcl90eXBlDQorDQorDQorDQoraWYNCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lf dHJhY2tpbmciICE9IHhubyBcDQorICAmJiB0ZXN0ICIkYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2Nv bXBpbGVyX3R5cGUiID0gZ2NjMzsgdGhlbg0KKyAgYW1fX2Zhc3RkZXBDQ19UUlVFPQ0KKyAgYW1f X2Zhc3RkZXBDQ19GQUxTRT0nIycNCitlbHNlDQorICBhbV9fZmFzdGRlcENDX1RSVUU9JyMnDQor ICBhbV9fZmFzdGRlcENDX0ZBTFNFPQ0KK2ZpDQorDQorDQoraWYgdGVzdCAteiAiJENDIjsgdGhl bg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHBy b2dyYW0gbmFtZSB3aXRoDQphcmdzLg0KK3NldCBkdW1teSBjYzsgYWNfd29yZD0kMg0KK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3Jk IiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitp ZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hl ZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuDQorICBhY19jdl9wcm9n X0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCisgIGFj X3Byb2dfcmVqZWN0ZWQ9bm8NCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S DQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0 IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiOyB9OyB0aGVuDQorICAgIGlmIHRlc3QgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiID0gIi91c3IvdWNiL2NjIjsgdGhlbg0KKyAgICAgICBhY19wcm9nX3JlamVjdGVkPXllcw0K KyAgICAgICBjb250aW51ZQ0KKyAgICAgZmkNCisgICAgYWNfY3ZfcHJvZ19DQz0iY2MiDQorICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBk b25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2lmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5 ZXM7IHRoZW4NCisgICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJl IHdlIG5ldmVyIHVzZSBpdC4NCisgIHNldCBkdW1teSAkYWNfY3ZfcHJvZ19DQw0KKyAgc2hpZnQN CisgIGlmIHRlc3QgJCMgIT0gMDsgdGhlbg0KKyAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNv bXBpbGVyIGZyb20gdGhlIGJvZ3VzIG9uZS4NCisgICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNh bWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3Nlbg0KKyAgICAjIGZpcnN0IGlm IHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4N CisgICAgc2hpZnQNCisgICAgYWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9 JEAiDQorICBmaQ0KK2ZpDQorZmkNCitmaQ0KK0NDPSRhY19jdl9wcm9nX0NDDQoraWYgdGVzdCAt biAiJENDIjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRDQyIgPiY1DQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCisk YXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorICB0ZXN0IC16ICIkQ0MiICYmIGFzX2Zu X2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCINCiIkTElORU5PIiA1 DQorZmkNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nDQpHTlUgQyIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tp bmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMuLi4gIiA+JjY7IH0NCitpZiAke2FjX2N2X2Nf Y29tcGlsZXJfZ251Kzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2DQorZWxzZQ0KKyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRg0KKyNpZmRlZiBfX0dOVUNfXw0K KyAgeWVzOw0KKyNlbmRpZg0KK0VPRg0KK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVz dC5jJw0KKyAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306 IFwiJGFjX3RyeVwiIjsgfSA+JjUNCisgIChldmFsICRhY190cnkpIDI+JjUNCisgIGFjX3N0YXR1 cz0kPw0KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1DQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9IHwgZWdyZXAgeWVzID4v ZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYWNfY3ZfY19jb21waWxlcl9nbnU9eWVzDQorZWxzZQ0K KyAgYWNfY3ZfY19jb21waWxlcl9nbnU9bm8NCitmaQ0KK2ZpDQoreyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6DQokYWNfY3ZfY19jb21waWxlcl9nbnUiID4m NQ0KKyRhc19lY2hvICIkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNjsgfQ0KKw0KK2lmIHRlc3Qg JGFjX2N2X2NfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuDQorICBHQ0M9eWVzDQorICBhY190ZXN0 X0NGTEFHUz0iJHtDRkxBR1Mrc2V0fSINCisgIGFjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIg0KKyAg Q0ZMQUdTPQ0KKyAgYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQ0KK2FjX3NhdmVfQ0ZMQUdT PSRDRkxBR1MNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIHdoZXRoZXIgJENDIGFjY2VwdHMNCi1nIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyB3 aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX2NjX2cr On0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQor ICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcNCisgICBhY19jX3dlcnJv cl9mbGFnPXllcw0KKyAgIGFjX2N2X3Byb2dfY2NfZz1ubw0KKyAgIENGTEFHUz0iLWciDQorICAg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8qIGVuZCBjb25m ZGVmcy5oLiAgKi8NCisNCitpbnQNCittYWluICgpDQorew0KKw0KKyAgOw0KKyAgcmV0dXJuIDA7 DQorfQ0KK19BQ0VPRg0KK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoN CisgIGFjX2N2X3Byb2dfY2NfZz15ZXMNCitlbHNlDQorICBDRkxBR1M9IiINCisgICAgICBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0DQorLyogZW5kIGNvbmZkZWZz LmguICAqLw0KKw0KK2ludA0KK21haW4gKCkNCit7DQorDQorICA7DQorICByZXR1cm4gMDsNCit9 DQorX0FDRU9GDQoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOg0KKw0K K2Vsc2UNCisgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZw0KKwkgQ0ZM QUdTPSItZyINCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQN CisvKiBlbmQgY29uZmRlZnMuaC4gICovDQorDQoraW50DQorbWFpbiAoKQ0KK3sNCisNCisgIDsN CisgIHJldHVybiAwOw0KK30NCitfQUNFT0YNCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO RU5PIjsgdGhlbiA6DQorICBhY19jdl9wcm9nX2NjX2c9eWVzDQorZmkNCitybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQNCitmaQ0KK3Jt IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4 dA0KK2ZpDQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0DQorICAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFn DQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X3Byb2dfY2NfZyIgPiY1DQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2ciID4mNjsg fQ0KK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4NCisgIENGTEFHUz0kYWNf c2F2ZV9DRkxBR1MNCitlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbg0KKyAg aWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4NCisgICAgQ0ZMQUdTPSItZyAtTzIiDQorICBlbHNl DQorICAgIENGTEFHUz0iLWciDQorICBmaQ0KK2Vsc2UNCisgIGlmIHRlc3QgIiRHQ0MiID0geWVz OyB0aGVuDQorICAgIENGTEFHUz0iLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9DQorICBmaQ0K K2ZpDQorICBpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQorICAgIENGTEFH Uz0iJGFjX3NhdmVfQ0ZMQUdTIg0KKyAgZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7 IHRoZW4NCisgICAgQ0ZMQUdTPSItZyAtTzIiDQorICBlbHNlDQorICAgIENGTEFHUz0iLU8yIg0K KyAgZmkNCitlbHNlDQorICBHQ0M9DQorICB0ZXN0ICIke0NGTEFHUytzZXR9IiA9IHNldCB8fCBD RkxBR1M9Ii1nIg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0K KyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28g aXQgY2FuIGJlIGENCnByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9v bF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tp bmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNl OyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVz dCAtbiAiJEFSIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19BUj0iJEFSIiAjIExldCB0aGUgdXNlciBv dmVycmlkZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0K KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gNCiIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJl Zml4fWFyIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu ZA0KJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZp DQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQorQVI9JGFj X2N2X3Byb2dfQVINCitpZiB0ZXN0IC1uICIkQVIiOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFSIiA+JjUNCiskYXNfZWNobyAiJEFS IiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitm aQ0KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbg0KKyAgYWNfY3RfQVI9JEFSDQor ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh bSBuYW1lIHdpdGgNCmFyZ3MuDQorc2V0IGR1bW15IGFyOyBhY193b3JkPSQyDQoreyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m NQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmICR7 YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4NCisgIGFj X2N2X3Byb2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl IHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitm b3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXog IiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl Y3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94DQoiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiDQorICAgICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kDQokYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZT PSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9B Ug0KK2lmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQ0KKyRhc19lY2hvICIk YWNfY3RfQVIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0K Kw0KKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuDQorICAgIEFSPSIiDQorICBlbHNl DQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6KQ0K K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcg Y3Jvc3MgdG9vbHMNCm5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1DQorJGFzX2Vj aG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGgg aG9zdA0KdHJpcGxldCIgPiYyO30NCithY190b29sX3dhcm5lZD15ZXMgOzsNCitlc2FjDQorICAg IEFSPSRhY19jdF9BUg0KKyAgZmkNCitlbHNlDQorICBBUj0iJGFjX2N2X3Byb2dfQVIiDQorZmkN CisNCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuDQorICAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlDQph IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFu bGliOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAk YWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmICR7YWNfY3ZfcHJvZ19SQU5MSUIrOn0gZmFsc2U7IHRo ZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1u ICIkUkFOTElCIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRo ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAt ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfUkFOTElCPSIk e2FjX3Rvb2xfcHJlZml4fXJhbmxpYiINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQNCiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAg ICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQor ZmkNCitmaQ0KK1JBTkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUINCitpZiB0ZXN0IC1uICIkUkFOTElC IjsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRSQU5MSUIiID4mNQ0KKyRhc19lY2hvICIkUkFOTElCIiA+JjY7IH0NCitlbHNlDQorICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0K KyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisNCisNCitmaQ0KK2lmIHRlc3QgLXogIiRhY19j dl9wcm9nX1JBTkxJQiI7IHRoZW4NCisgIGFjX2N0X1JBTkxJQj0kUkFOTElCDQorICAjIEV4dHJh Y3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZQ0Kd2l0aCBhcmdzLg0KK3NldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1 DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHth Y19jdl9wcm9nX2FjX2N0X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6DQorICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVu DQorICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVz ZXIgb3ZlcnJpZGUgdGhlDQp0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB VEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVf SUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAtZiAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeA0KIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElC PSJyYW5saWIiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv dW5kDQokYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAg ZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19j dF9SQU5MSUI9JGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCDQoraWYgdGVzdCAtbiAiJGFjX2N0X1JB TkxJQiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3RfUkFOTElCIiA+JjUNCiskYXNfZWNobyAiJGFjX2N0X1JBTkxJQiIgPiY2 OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorICBpZiB0ZXN0 ICJ4JGFjX2N0X1JBTkxJQiIgPSB4OyB0aGVuDQorICAgIFJBTkxJQj0iIg0KKyAgZWxzZQ0KKyAg ICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3Nz IHRvb2xzDQpub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQ0KKyRhc19lY2hvICIk YXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QN CnRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAgICBSQU5M SUI9JGFjX2N0X1JBTkxJQg0KKyAgZmkNCitlbHNlDQorICBSQU5MSUI9IiRhY19jdl9wcm9nX1JB TkxJQiINCitmaQ0KKw0KKyMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVy IGEgQyBwcm9ncmFtIChmYXN0ZXIpLA0KKyMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFu b3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcg0KKyMgaW5jb21wYXRpYmxlIHZlcnNpb25z Og0KKyMgU3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsDQorIyBTdW5PUyAvdXNy L2V0Yy9pbnN0YWxsDQorIyBJUklYIC9zYmluL2luc3RhbGwNCisjIEFJWCAvYmluL2luc3RhbGwN CisjIEFtaWdhT1MgL0MvaW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9w cHkgZGlzY3MNCisjIEFJWCA0IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29y ayB3aXRob3V0IGEgLWcgZmxhZw0KKyMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNo IG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncw0KKyMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3 aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwDQoic3RhZmYiDQorIyBPUy8y J3Mgc3lzdGVtIGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFu dGljDQorIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1h a2UgZnJvbQ0KLi9pbnN0YWxsLnNoLg0KKyMgUmVqZWN0IGluc3RhbGwgcHJvZ3JhbXMgdGhhdCBj YW5ub3QgaW5zdGFsbCBtdWx0aXBsZSBmaWxlcy4NCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlDQppbnN0YWxsIiA+ JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4u ICIgPiY2OyB9DQoraWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuDQoraWYgJHthY19jdl9wYXRo X2luc3RhbGwrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYN CitlbHNlDQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFz X2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9Lg0KKyAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRyYWls aW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4NCitjYXNlICRhc19kaXIvIGluICMoKA0KKyAg Li8gfCAuLy8gfCAvW2NDXS8qIHwgXA0KKyAgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNyL2V0 Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogfCBcDQorICA/OltcXC9db3MyW1xcL11p bnN0YWxsW1xcL10qIHwgPzpbXFwvXU9TMltcXC9dSU5TVEFMTFtcXC9dKiB8IFwNCisgIC91c3Iv dWNiLyogKSA7Ow0KKyAgKikNCisgICAgIyBPU0YxIGFuZCBTQ08gT0RUIDMuMCBoYXZlIHRoZWly IG93biBuYW1lcyBmb3IgaW5zdGFsbC4NCisgICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9t IE9TRiBzaW5jZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290DQorICAgICMgYnkgZGVmYXVsdC4N CisgICAgZm9yIGFjX3Byb2cgaW4gZ2luc3RhbGwgc2NvaW5zdCBpbnN0YWxsOyBkbw0KKyAgICAg IGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKwlp ZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gN CiIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKwkgIGlmIHRlc3QgJGFj X3Byb2cgPSBpbnN0YWxsICYmDQorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRh Y19leGVjX2V4dCIgPi9kZXYvbnVsbA0KMj4mMTsgdGhlbg0KKwkgICAgIyBBSVggaW5zdGFsbC4g IEl0IGhhcyBhbiBpbmNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9uLg0KKwkgICAgOg0KKwkg IGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYNCisJICAgIGdyZXAgcHdwbHVzICIkYXNf ZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsDQoyPiYxOyB0aGVuDQorCSAgICAj IHByb2dyYW0tc3BlY2lmaWMgaW5zdGFsbCBzY3JpcHQgdXNlZCBieSBIUCBwd3BsdXMtLWRvbid0 DQp1c2UuDQorCSAgICA6DQorCSAgZWxzZQ0KKwkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25m dGVzdC50d28gY29uZnRlc3QuZGlyDQorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQ0KKwkg ICAgZWNobyB0d28gPiBjb25mdGVzdC50d28NCisJICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0KKwkg ICAgaWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZQ0KY29u ZnRlc3QudHdvICJgcHdkYC9jb25mdGVzdC5kaXIiICYmDQorCSAgICAgIHRlc3QgLXMgY29uZnRl c3Qub25lICYmIHRlc3QgLXMgY29uZnRlc3QudHdvICYmDQorCSAgICAgIHRlc3QgLXMgY29uZnRl c3QuZGlyL2NvbmZ0ZXN0Lm9uZSAmJg0KKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9jb25m dGVzdC50d28NCisJICAgIHRoZW4NCisJICAgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNfZGly LyRhY19wcm9nJGFjX2V4ZWNfZXh0IC1jIg0KKwkgICAgICBicmVhayAzDQorCSAgICBmaQ0KKwkg IGZpDQorCWZpDQorICAgICAgZG9uZQ0KKyAgICBkb25lDQorICAgIDs7DQorZXNhYw0KKw0KKyAg ZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitybSAtcmYgY29uZnRlc3Qub25lIGNvbmZ0ZXN0 LnR3byBjb25mdGVzdC5kaXINCisNCitmaQ0KKyAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3Rh bGwrc2V0fSIgPSBzZXQ7IHRoZW4NCisgICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9pbnN0YWxsDQor ICBlbHNlDQorICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlw dC4gIERvbid0IGNhY2hlIGENCisgICAgIyB2YWx1ZSBmb3IgSU5TVEFMTCB3aXRoaW4gYSBzb3Vy Y2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbA0KKyAgICAjIGJyZWFrIG90aGVyIHBhY2th Z2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcw0KKyAgICAjIHJlbW92ZWQs IG9yIGlmIHRoZSB2YWx1ZSBpcyBhIHJlbGF0aXZlIG5hbWUuDQorICAgIElOU1RBTEw9JGFjX2lu c3RhbGxfc2gNCisgIGZpDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJElOU1RBTEwiID4mNQ0KKyRhc19lY2hvICIkSU5TVEFMTCIgPiY2OyB9 DQorDQorIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNlcyBp biAke3Zhci12YWx9Lg0KKyMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBicmFjZSBlbmRzIHRo ZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uDQordGVzdCAteiAiJElOU1RBTExfUFJPR1JBTSIgJiYg SU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9Jw0KKw0KK3Rlc3QgLXogIiRJTlNUQUxMX1NDUklQ VCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nDQorDQordGVzdCAteiAiJElOU1RBTExf REFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcNCisNCisNCisjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQotLS0tDQorIyBPdXRwdXQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQoraWYgdGVz dCAiJHNyY2RpciIgPSAiLiIgOyB0aGVuDQorICBpZiB0ZXN0ICIke3dpdGhfdGFyZ2V0X3N1YmRp cn0iICE9ICIuIiA7IHRoZW4NCisgICAgbGliZ2xvc3NfdG9wZGlyPSIke3NyY2Rpcn0vJHt3aXRo X211bHRpc3JjdG9wfS4uLy4uLy4uIg0KKyAgZWxzZQ0KKyAgICBsaWJnbG9zc190b3BkaXI9IiR7 c3JjZGlyfS8ke3dpdGhfbXVsdGlzcmN0b3B9Li4vLi4iDQorICBmaQ0KK2Vsc2UNCisgIGxpYmds b3NzX3RvcGRpcj0iJHtzcmNkaXJ9Ly4uLy4uIg0KK2ZpDQorYWNfYXV4X2Rpcj0NCitmb3IgYWNf ZGlyIGluICRsaWJnbG9zc190b3BkaXIgIiRzcmNkaXIiLyRsaWJnbG9zc190b3BkaXI7IGRvDQor ICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuDQorICAgIGFjX2F1eF9kaXI9 JGFjX2Rpcg0KKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIg0K KyAgICBicmVhaw0KKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuDQor ICAgIGFjX2F1eF9kaXI9JGFjX2Rpcg0KKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9p bnN0YWxsLnNoIC1jIg0KKyAgICBicmVhaw0KKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL3NodG9v bCI7IHRoZW4NCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyDQorICAgIGFjX2luc3RhbGxfc2g9IiRh Y19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIg0KKyAgICBicmVhaw0KKyAgZmkNCitkb25lDQor aWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuDQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90 IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluDQokbGliZ2xvc3NfdG9w ZGlyIFwiJHNyY2RpclwiLyRsaWJnbG9zc190b3BkaXIiICIkTElORU5PIiA1DQorZmkNCisNCisj IFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgdW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwN CisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25m IHJlbGVhc2UuDQorIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRl cidzIHNvdXJjZSB0cmVlIGlzIGluIGENCmRpcmVjdG9yeQ0KKyMgd2hvc2UgZnVsbCBuYW1lIGNv bnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4NCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNf YXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UNCnRoaXMgdmFyLg0KK2Fj X2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9u J3QgdXNlIHRoaXMNCnZhci4NCithY19jb25maWd1cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25m aWd1cmUiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcw0KdmFyLg0KKw0KKw0KK2FjX2NvbmZpZ19m aWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSINCisNCitjYXQgPmNvbmZjYWNoZSA8PFxf QUNFT0YNCisjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVz dWx0cyBvZiBjb25maWd1cmUNCisjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNh biBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUNCisjIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBy dW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLg0KKyMgSXQgaXMgbm90 IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9u J3QNCisjIHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4NCisjDQorIyBj b25maWcuc3RhdHVzIG9ubHkgcGF5cyBhdHRlbnRpb24gdG8gdGhlIGNhY2hlIGZpbGUgaWYgeW91 IGdpdmUgaXQNCisjIHRoZSAtLXJlY2hlY2sgb3B0aW9uIHRvIHJlcnVuIGNvbmZpZ3VyZS4NCisj DQorIyBgYWNfY3ZfZW52X2ZvbycgdmFyaWFibGVzIChzZXQgb3IgdW5zZXQpIHdpbGwgYmUgb3Zl cnJpZGRlbiB3aGVuDQorIyBsb2FkaW5nIHRoaXMgZmlsZSwgb3RoZXIgKnVuc2V0KiBgYWNfY3Zf Zm9vJyB3aWxsIGJlIGFzc2lnbmVkIHRoZQ0KKyMgZm9sbG93aW5nIHZhbHVlcy4NCisNCitfQUNF T0YNCisNCisjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRs ZXMgbmV3bGluZXMgaW4NCnZhbHVlcywNCisjIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQg dGhhdCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQNCmVmZmljaWVudC4NCisjIFNvLCB3ZSBraWxs IHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xpbmVzLg0KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMg dG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRpcmVjdGVkIGRpcmVjdGx5LA0KKyMgYW5kIHNldHMg dGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBmaWxlIHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlDQp2 YXJzLg0KKygNCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ3MvXlwoW2Et ekEtWl9dW2EtekEtWjAtDQo5X10qXCk9LiovXDEvcCdgOyBkbw0KKyAgICBldmFsIGFjX3ZhbD1c JCRhY192YXINCisgICAgY2FzZSAkYWNfdmFsIGluICMoDQorICAgICoke2FzX25sfSopDQorICAg ICAgY2FzZSAkYWNfdmFyIGluICMoDQorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlDQp2YXJpYWJsZSAkYWNfdmFyIGNv bnRhaW5zIGEgbmV3bGluZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUg dmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiDQo+JjI7fSA7Ow0KKyAgICAgIGVz YWMNCisgICAgICBjYXNlICRhY192YXIgaW4gIygNCisgICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7 ICMoDQorICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygN CisgICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7Ow0KKyAgICAgIGVz YWMgOzsNCisgICAgZXNhYw0KKyAgZG9uZQ0KKw0KKyAgKHNldCkgMj4mMSB8DQorICAgIGNhc2Ug JGFzX25sYChhY19zcGFjZT0nICc7IHNldCkgMj4mMWAgaW4gIygNCisgICAgKiR7YXNfbmx9YWNf c3BhY2U9XCAqKQ0KKyAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBh ZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUNCisgICAgICAjIHN1YnN0aXR1dGlvbiB0dXJucyBcXFxc IGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcLg0KKyAgICAgIHNlZCAtbiBcDQorCSJz LycvJ1xcXFwnJy9nOw0KKwkgDQpzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2Fs bnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiDQorICAgICAgOzsgIygNCisgICAgKikNCisg ICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRv IG5vdCBhZGQNCnF1b3Rlcy4NCisgICAgICBzZWQgLW4gIi9eW18kYXNfY3JfYWxudW1dKl9jdl9b XyRhc19jcl9hbG51bV0qPS9wIg0KKyAgICAgIDs7DQorICAgIGVzYWMgfA0KKyAgICBzb3J0DQor KSB8DQorICBzZWQgJw0KKyAgICAgL15hY19jdl9lbnZfL2IgZW5kDQorICAgICB0IGNsZWFyDQor ICAgICA6Y2xlYXINCisgICAgIHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDEr c2V0fSIgPSBzZXQgfHwgJi8NCisgICAgIHQgZW5kDQorICAgICBzL15cKFtePV0qXCk9XCguKlwp JC9cMT0ke1wxPVwyfS8NCisgICAgIDplbmQnID4+Y29uZmNhY2hlDQoraWYgZGlmZiAiJGNhY2hl X2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQ0KKyAgaWYgdGVz dCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuDQorICAgIGlmIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0g IngvZGV2L251bGwiOyB0aGVuDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiB1cGRhdGluZyBjYWNoZQ0KJGNhY2hlX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIk YXNfbWU6IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAgICAgIGlmIHRlc3Qg ISAtZiAiJGNhY2hlX2ZpbGUiIHx8IHRlc3QgLWggIiRjYWNoZV9maWxlIjsgdGhlbg0KKwljYXQg Y29uZmNhY2hlID4iJGNhY2hlX2ZpbGUiDQorICAgICAgZWxzZQ0KKyAgICAgICAgY2FzZSAkY2Fj aGVfZmlsZSBpbiAjKA0KKyAgICAgICAgKi8qIHwgPzoqKQ0KKwkgIG12IC1mIGNvbmZjYWNoZSAi JGNhY2hlX2ZpbGUiJCQgJiYNCisJICBtdiAtZiAiJGNhY2hlX2ZpbGUiJCQgIiRjYWNoZV9maWxl IiA7OyAjKA0KKyAgICAgICAgKikNCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiA7 Ow0KKwllc2FjDQorICAgICAgZmkNCisgICAgZmkNCisgIGVsc2UNCisgICAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZQ0KY2Fj aGUgJGNhY2hlX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndy aXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAgZmkNCitmaQ0KK3JtIC1mIGNvbmZj YWNoZQ0KKw0KK3Rlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0kYWNfZGVmYXVsdF9w cmVmaXgNCisjIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4NCit0ZXN0ICJ4JGV4ZWNfcHJl Zml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nDQorDQorIyBUcmFuc2Zvcm0g Y29uZmRlZnMuaCBpbnRvIERFRlMuDQorIyBQcm90ZWN0IGFnYWluc3Qgc2hlbGwgZXhwYW5zaW9u IHdoaWxlIGV4ZWN1dGluZyBNYWtlZmlsZSBydWxlcy4NCisjIFByb3RlY3QgYWdhaW5zdCBNYWtl ZmlsZSBtYWNybyBleHBhbnNpb24uDQorIw0KKyMgSWYgdGhlIGZpcnN0IHNlZCBzdWJzdGl0dXRp b24gaXMgZXhlY3V0ZWQgKHdoaWNoIGxvb2tzIGZvciBtYWNyb3MNCnRoYXQNCisjIHRha2UgYXJn dW1lbnRzKSwgdGhlbiBicmFuY2ggdG8gdGhlIHF1b3RlIHNlY3Rpb24uICBPdGhlcndpc2UsDQor IyBsb29rIGZvciBhIG1hY3JvIHRoYXQgZG9lc24ndCB0YWtlIGFyZ3VtZW50cy4NCithY19zY3Jp cHQ9Jw0KKzptbGluZQ0KKy9cXCQvew0KKyBODQorIHMsXFxcbiwsDQorIGIgbWxpbmUNCit9DQor dCBjbGVhcg0KKzpjbGVhcg0KK3MvXlsJIF0qI1sJIF0qZGVmaW5lWwkgXVsJIF0qXChbXgkgKF1b XgkNCihdKihbXildKilcKVsJIF0qXCguKlwpLy1EXDE9XDIvZw0KK3QgcXVvdGUNCitzL15bCSBd KiNbCSBdKmRlZmluZVsJIF1bCSBdKlwoW14JIF1bXgkNCl0qXClbCSBdKlwoLipcKS8tRFwxPVwy L2cNCit0IHF1b3RlDQorYiBhbnkNCis6cXVvdGUNCitzL1sJIGB+IyReJiooKXt9XFx8OydcJyci PD4/XS9cXCYvZw0KK3MvXFsvXFwmL2cNCitzL1xdL1xcJi9nDQorcy9cJC8kJC9nDQorSA0KKzph bnkNCiskew0KKwlnDQorCXMvXlxuLy8NCisJcy9cbi8gL2cNCisJcA0KK30NCisnDQorREVGUz1g c2VkIC1uICIkYWNfc2NyaXB0IiBjb25mZGVmcy5oYA0KKw0KKw0KK2FjX2xpYm9ianM9DQorYWNf bHRsaWJvYmpzPQ0KK1U9DQorZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19p IiA9IHg6ICYmIGNvbnRpbnVlDQorICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUg aWYgYWxyZWFkeSBpbnN0YWxsZWQuDQorICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87 cy9cLm9iaiQvLycNCisgIGFjX2k9YCRhc19lY2hvICIkYWNfaSIgfCBzZWQgIiRhY19zY3JpcHQi YA0KKyAgIyAyLiBQcmVwZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0x LjEwIExJQk9CSkRJUg0KKyAgIyAgICB3aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0b3J5IHdoZXJl IExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuDQorICBhc19mbl9hcHBlbmQgYWNfbGlib2JqcyAi IFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0Ig0KKyAgYXNfZm5fYXBwZW5kIGFjX2x0 bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaSInJFUubG8nDQorZG9uZQ0KK0xJQk9CSlM9JGFj X2xpYm9ianMNCisNCitMVExJQk9CSlM9JGFjX2x0bGlib2Jqcw0KKw0KKw0KK2lmIHRlc3QgLXog IiR7QU1ERVBfVFJVRX0iICYmIHRlc3QgLXogIiR7QU1ERVBfRkFMU0V9IjsgdGhlbg0KKyAgYXNf Zm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4NCitV c3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxs eS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQoraWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9 IiAmJiB0ZXN0IC16DQoiJHthbV9fZmFzdGRlcENDX0ZBTFNFfSI7IHRoZW4NCisgIGFzX2ZuX2Vy cm9yICQ/ICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NcIiB3YXMgbmV2ZXIgZGVmaW5lZC4N CitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9u YWxseS4iDQoiJExJTkVOTyIgNQ0KK2ZpDQorDQorOiAiJHtDT05GSUdfU1RBVFVTPS4vY29uZmln LnN0YXR1c30iDQorYWNfd3JpdGVfZmFpbD0wDQorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xl YW5fZmlsZXMNCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVT Ig0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgJENP TkZJR19TVEFUVVMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RB VFVTIiA+JjY7fQ0KK2FzX3dyaXRlX2ZhaWw9MA0KK2NhdCA+JENPTkZJR19TVEFUVVMgPDxfQVNF T0YgfHwgYXNfd3JpdGVfZmFpbD0xDQorIyEgJFNIRUxMDQorIyBHZW5lcmF0ZWQgYnkgJGFzX21l Lg0KKyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9u Lg0KKyMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBk ZWJ1Z2dpbmcNCisjIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuDQor DQorZGVidWc9ZmFsc2UNCithY19jc19yZWNoZWNrPWZhbHNlDQorYWNfY3Nfc2lsZW50PWZhbHNl DQorDQorU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0NCitleHBvcnQgU0hFTEwNCitfQVNF T0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xDQor IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIw0K KyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRp YmxlDQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaA0KK2lmIHRlc3Qg LW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsg dGhlbg0KOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00LjIgdmVyc2lv bnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gNCisgICMgaXMg Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQorICBhbGlhcyAt ZyAnJHsxKyIkQCJ9Jz0nIiRAIicNCisgIHNldG9wdCBOT19HTE9CX1NVQlNUDQorZWxzZQ0KKyAg Y2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoDQorICAqcG9zaXgqKSA6DQorICAgIHNl dCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkNCisNCisNCith c19ubD0nDQorJw0KK2V4cG9ydCBhc19ubA0KKyMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFz aGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuDQorYXNfZWNobz0nXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXA0KXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2FzX2VjaG89JGFzX2VjaG8kYXNf ZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRh c19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVp bHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uDQpTb2xhcmlzLA0KKyMgYnV0 IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guDQoraWYgdGVzdCAteiAiJEJB U0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXA0KKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAtLSAk YXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOw0KdGhlbg0KKyAgYXNfZWNobz0n cHJpbnQgLXIgLS0nDQorICBhc19lY2hvX249J3ByaW50IC1ybiAtLScNCitlbGlmICh0ZXN0ICJY YHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuDQor ICBhc19lY2hvPSdwcmludGYgJXNcbicNCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJw0KK2Vsc2UN CisgIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+L2Rldi9udWxs YCIgPSAiWC1uDQokYXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19ib2R5PSdldmFsIC91c3Iv dWNiL2VjaG8gLW4gIiQxJGFzX25sIicNCisgICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1u Jw0KKyAgZWxzZQ0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6ICJYXFwoLipc XCkiJw0KKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFyZz0kMTsNCisgICAgICBj YXNlICRhcmcgaW4gIygNCisgICAgICAqIiRhc19ubCIqKQ0KKwlleHByICJYJGFyZyIgOiAiWFxc KC4qXFwpJGFzX25sIjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxcXCguKlxcKSJg OzsNCisgICAgICBlc2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIg LWQgIiRhc19ubCINCisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkNCisgICAgYXNf ZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycNCisgIGZpDQorICBleHBvcnQg YXNfZWNob19ib2R5DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nDQor ZmkNCisNCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0ZXN0ICIke1BBVEhfU0VQ QVJBVE9SK3NldH0iICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFUT1I9Og0KKyAgKFBBVEg9 Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgew0K KyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwg Mj4mMSB8fA0KKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0KK2ZpDQorDQorDQorIyBJ RlMNCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0 IG9yZGVyLiAgUXVvdGluZw0KaXMNCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNv bXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4NCisjIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2Fs bGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQNCisjIHNwbGl0dGluZyBi eSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pDQorSUZTPSIgIiIJJGFzX25sIg0KKw0KKyMg RmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVj dG9yeQ0Kc2VwYXJhdG9yLg0KK2FzX215c2VsZj0NCitjYXNlICQwIGluICMoKA0KKyAgKltcXC9d KiApIGFzX215c2VsZj0kMCA7Ow0KKyAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NF UEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0K KyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgdGVzdCAtciAiJGFzX2Rpci8k MCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsNCisgIGRvbmUNCitJRlM9JGFzX3Nh dmVfSUZTDQorDQorICAgICA7Ow0KK2VzYWMNCisjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMs IG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnDQorIyBpbiB3aGljaCBj YXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguDQoraWYgdGVzdCAieCRhc19t eXNlbGYiID0geDsgdGhlbg0KKyAgYXNfbXlzZWxmPSQwDQorZmkNCitpZiB0ZXN0ICEgLWYgIiRh c19teXNlbGYiOyB0aGVuDQorICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBm aW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbg0KYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjINCisgIGV4 aXQgMQ0KK2ZpDQorDQorIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQg d2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbg0KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBCdXQgZG8g bm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQNCjEiDQorIyBzdXBwcmVz c2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZA0K KyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuDQorZm9yIGFzX3ZhciBpbiBCQVNIX0VO ViBFTlYgTUFJTCBNQUlMUEFUSA0KK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNl dCBcDQorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAm JiB1bnNldCAkYXNfdmFyIHx8DQo6DQorZG9uZQ0KK1BTMT0nJCAnDQorUFMyPSc+ICcNCitQUzQ9 JysgJw0KKw0KKyMgTkxTIG51aXNhbmNlcy4NCitMQ19BTEw9Qw0KK2V4cG9ydCBMQ19BTEwNCitM QU5HVUFHRT1DDQorZXhwb3J0IExBTkdVQUdFDQorDQorIyBDRFBBVEguDQorKHVuc2V0IENEUEFU SCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSA0KKw0KKw0KKyMgYXNfZm5fZXJyb3Ig U1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1Ii IHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQNCmFyZQ0KKyMgcHJvdmlkZWQsIGFsc28g b3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbg0KZXhp dCB0aGUNCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLg0KK2Fz X2ZuX2Vycm9yICgpDQorew0KKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAg JiYgYXNfc3RhdHVzPTENCisgIGlmIHRlc3QgIiQ0IjsgdGhlbg0KKyAgICBhc19saW5lbm89JHth c19saW5lbm8tIiQzIn0NCmFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVu b19zdGFjaw0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJv cjogJDIiID4mJDQNCisgIGZpDQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMg0K KyAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzDQorfSAjIGFzX2ZuX2Vycm9yDQorDQorDQorIyBhc19m bl9zZXRfc3RhdHVzIFNUQVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFNldCAk PyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4NCithc19mbl9zZXRfc3RhdHVzICgpDQorew0K KyAgcmV0dXJuICQxDQorfSAjIGFzX2ZuX3NldF9zdGF0dXMNCisNCisjIGFzX2ZuX2V4aXQgU1RB VFVTDQorIyAtLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMs IGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0Lg0KK2FzX2ZuX2V4aXQgKCkN Cit7DQorICBzZXQgK2UNCisgIGFzX2ZuX3NldF9zdGF0dXMgJDENCisgIGV4aXQgJDENCit9ICMg YXNfZm5fZXhpdA0KKw0KKyMgYXNfZm5fdW5zZXQgVkFSDQorIyAtLS0tLS0tLS0tLS0tLS0NCisj IFBvcnRhYmx5IHVuc2V0IFZBUi4NCithc19mbl91bnNldCAoKQ0KK3sNCisgIHsgZXZhbCAkMT07 IHVuc2V0ICQxO30NCit9DQorYXNfdW5zZXQ9YXNfZm5fdW5zZXQNCisjIGFzX2ZuX2FwcGVuZCBW QVIgVkFMVUUNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEFwcGVuZCB0aGUgdGV4dCBp biBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbg0KVkFSLiBU YWtlDQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBh bW9ydGl6ZWQgbGluZWFyDQpncm93dGggb3Zlcg0KKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVh ZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4NCm5haXZlDQorIyBp bXBsZW1lbnRhdGlvbnMuDQoraWYgKGV2YWwgImFzX3Zhcj0xOyBhc192YXIrPTI7IHRlc3QgeFwk YXNfdmFyID0geDEyIikgMj4vZGV2L251bGw7DQp0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FwcGVu ZCAoKQ0KKyAgew0KKyAgICBldmFsICQxKz1cJDINCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXBw ZW5kICgpDQorICB7DQorICAgIGV2YWwgJDE9XCQkMVwkMg0KKyAgfQ0KK2ZpICMgYXNfZm5fYXBw ZW5kDQorDQorIyBhc19mbl9hcml0aCBBUkcuLi4NCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMg UGVyZm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUg cmVzdWx0IGluDQp0aGUNCisjIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVs bHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZQ0KYXJndW1lbnRzDQorIyBtdXN0IGJlIHBvcnRh YmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4NCitpZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkp ID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FyaXRoICgpDQorICB7 DQorICAgIGFzX3ZhbD0kKCggJCogKSkNCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXJpdGggKCkN CisgIHsNCisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWANCisgIH0NCitm aSAjIGFzX2ZuX2FyaXRoDQorDQorDQoraWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+ JjEgJiYNCisgICB0ZXN0ICJYYGV4cHIgMDAwMDEgOiAnLipcKC4uLlwpJ2AiID0gWDAwMTsgdGhl bg0KKyAgYXNfZXhwcj1leHByDQorZWxzZQ0KKyAgYXNfZXhwcj1mYWxzZQ0KK2ZpDQorDQoraWYg KGJhc2VuYW1lIC0tIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC0tIC8g Mj4mMWAiID0NCiJYLyI7IHRoZW4NCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0KKyAg YXNfYmFzZW5hbWU9ZmFsc2UNCitmaQ0KKw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYg dGVzdCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsNCnRoZW4NCisgIGFzX2Rpcm5h bWU9ZGlybmFtZQ0KK2Vsc2UNCisgIGFzX2Rpcm5hbWU9ZmFsc2UNCitmaQ0KKw0KK2FzX21lPWAk YXNfYmFzZW5hbWUgLS0gIiQwIiB8fA0KKyRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9d KlwpLyokJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkMCIgOiAnWFwo L1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWC8iJDAiIHwNCisgICAgc2VkICcv Xi4qXC9cKFteL11bXi9dKlwpXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQor CSAgL15YXC9cKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9e WFwvXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87 IHEnYA0KKw0KKyMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4NCithc19j cl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicNCithc19jcl9MRVRURVJTPSdB QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicNCithc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJz JGFzX2NyX0xFVFRFUlMNCithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknDQorYXNfY3JfYWxudW09 JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzDQorDQorRUNIT19DPSBFQ0hPX049IEVDSE9fVD0N CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKA0KKy1uKikNCisgIGNhc2UgYGVjaG8gJ3h5XGMn YCBpbg0KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0 ZXIuDQorICB4eSkgIEVDSE9fQz0nXGMnOzsNCisgICopICAgZWNobyBgZWNobyBrc2g4OCBidWcg b24gQUlYIDYuMWAgPiAvZGV2L251bGwNCisgICAgICAgRUNIT19UPScJJzs7DQorICBlc2FjOzsN CisqKQ0KKyAgRUNIT19OPSctbic7Ow0KK2VzYWMNCisNCitybSAtZiBjb25mJCQgY29uZiQkLmV4 ZSBjb25mJCQuZmlsZQ0KK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbg0KKyAgcm0gLWYgY29u ZiQkLmRpci9jb25mJCQuZmlsZQ0KK2Vsc2UNCisgIHJtIC1mIGNvbmYkJC5kaXINCisgIG1rZGly IGNvbmYkJC5kaXIgMj4vZGV2L251bGwNCitmaQ0KK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4v ZGV2L251bGw7IHRoZW4NCisgIGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgICBhc19sbl9zPSdsbiAtcycNCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0 d28gZ290Y2hhczoNCisgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5k IGBsbiBmaWxlIGRpcicgZmFpbC4NCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxp bmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyDQpleGVjdXRhYmxlLg0KKyAgICAjIEluIGJv dGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLg0KKyAgICBsbiAtcyBjb25m JCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlDQp8 fA0KKyAgICAgIGFzX2xuX3M9J2NwIC1wJw0KKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQg Mj4vZGV2L251bGw7IHRoZW4NCisgICAgYXNfbG5fcz1sbg0KKyAgZWxzZQ0KKyAgICBhc19sbl9z PSdjcCAtcCcNCisgIGZpDQorZWxzZQ0KKyAgYXNfbG5fcz0nY3AgLXAnDQorZmkNCitybSAtZiBj b25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlDQorcm1k aXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbA0KKw0KKw0KKyMgYXNfZm5fbWtkaXJfcA0KKyMgLS0t LS0tLS0tLS0tLQ0KKyMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5n IHBhcmVudHMgaWYgbmVjZXNzYXJ5Lg0KK2FzX2ZuX21rZGlyX3AgKCkNCit7DQorDQorICBjYXNl ICRhc19kaXIgaW4gIygNCisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsNCisgIGVzYWMNCisgIHRl c3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgew0KKyAgICBhc19kaXJzPQ0K KyAgICB3aGlsZSA6OyBkbw0KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgICAgICpcJyop IGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7 DQojJygNCisgICAgICAqKSBhc19xZGlyPSRhc19kaXI7Ow0KKyAgICAgIGVzYWMNCisgICAgICBh c19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIg0KKyAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUg LS0gIiRhc19kaXIiIHx8DQorJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlte L11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkg WCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8 IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRhc19kaXIiIHwNCisgICAgc2VkICcvXlhc KC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkg IH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAv XlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsg cSdgDQorICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsNCisgICAgZG9uZQ0KKyAgICB0 ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiDQorICB9IHx8IHRlc3Qg LWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeQ0K JGFzX2RpciINCisNCisNCit9ICMgYXNfZm5fbWtkaXJfcA0KK2lmIG1rZGlyIC1wIC4gMj4vZGV2 L251bGw7IHRoZW4NCisgIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicNCitlbHNlDQor ICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcA0KKyAgYXNfbWtkaXJfcD1mYWxzZQ0KK2ZpDQor DQoraWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfdGVzdF94PSd0ZXN0 IC14Jw0KK2Vsc2UNCisgIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgICBh c19sc19MX29wdGlvbj1MDQorICBlbHNlDQorICAgIGFzX2xzX0xfb3B0aW9uPQ0KKyAgZmkNCisg IGFzX3Rlc3RfeD0nDQorICAgIGV2YWwgc2ggLWMgJ1wnJw0KKyAgICAgIGlmIHRlc3QgLWQgIiQx IjsgdGhlbg0KKwl0ZXN0IC1kICIkMS8uIjsNCisgICAgICBlbHNlDQorCWNhc2UgJDEgaW4gIygN CisJLSopc2V0ICIuLyQxIjs7DQorCWVzYWM7DQorCWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRp b24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKA0KKwk/Pz9bc3hdKik6OzsqKWZhbHNlOztlc2Fj O2ZpDQorICAgICdcJycgc2gNCisgICcNCitmaQ0KK2FzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94 DQorDQorIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBu YW1lLg0KK2FzX3RyX2NwcD0iZXZhbCBzZWQNCid5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xF VFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIg0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8g bWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFs IHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorDQorZXhlYyA2PiYx DQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNYWluIGJv ZHkgb2YgJENPTkZJR19TVEFUVVMgc2NyaXB0LiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICMjDQorX0FTRU9GDQordGVzdCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYg Y2htb2QgK3ggJENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xDQorDQorY2F0ID4+JENP TkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyMgU2F2ZSB0aGUgbG9n IG1lc3NhZ2UsIHRvIGtlZXAgJDAgYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bw0KKyMgcmVw b3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0 aGVpcg0KKyMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuDQorYWNfbG9nPSINCitUaGlz IGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzDQorZ2VuZXJhdGVkIGJ5IEdO VSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzDQorDQorICBDT05G SUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTDQorICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklH X0hFQURFUlMNCisgIENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdfTElOS1MNCisgIENPTkZJR19D T01NQU5EUyA9ICRDT05GSUdfQ09NTUFORFMNCisgICQgJDAgJEANCisNCitvbiBgKGhvc3RuYW1l IHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWANCisiDQorDQorX0FDRU9GDQorDQor Y2FzZSAkYWNfY29uZmlnX2ZpbGVzIGluICoiDQorIiopIHNldCB4ICRhY19jb25maWdfZmlsZXM7 IHNoaWZ0OyBhY19jb25maWdfZmlsZXM9JCo7Ow0KK2VzYWMNCisNCisNCisNCitjYXQgPj4kQ09O RklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIEZpbGVzIHRoYXQgY29u ZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuDQorY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVz Ig0KK2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyINCisNCitfQUNFT0YNCisN CitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorYWNf Y3NfdXNhZ2U9IlwNCitcYCRhc19tZScgaW5zdGFudGlhdGVzIGZpbGVzIGFuZCBvdGhlciBjb25m aWd1cmF0aW9uIGFjdGlvbnMNCitmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJl bnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUNCmZpbGVzDQorYW5kIGFjdGlvbnMgYXJlIHNw ZWNpZmllZCBhcyBUQUdzLCBhbGwgYXJlIGluc3RhbnRpYXRlZCBieSBkZWZhdWx0Lg0KKw0KK1Vz YWdlOiAkMCBbT1BUSU9OXS4uLiBbVEFHXS4uLg0KKw0KKyAgLWgsIC0taGVscCAgICAgICBwcmlu dCB0aGlzIGhlbHAsIHRoZW4gZXhpdA0KKyAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9u IG51bWJlciBhbmQgY29uZmlndXJhdGlvbiBzZXR0aW5ncywNCnRoZW4gZXhpdA0KKyAgICAgIC0t Y29uZmlnICAgICBwcmludCBjb25maWd1cmF0aW9uLCB0aGVuIGV4aXQNCisgIC1xLCAtLXF1aWV0 LCAtLXNpbGVudA0KKyAgICAgICAgICAgICAgICAgICBkbyBub3QgcHJpbnQgcHJvZ3Jlc3MgbWVz c2FnZXMNCisgIC1kLCAtLWRlYnVnICAgICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcw0K KyAgICAgIC0tcmVjaGVjayAgICB1cGRhdGUgJGFzX21lIGJ5IHJlY29uZmlndXJpbmcgaW4gdGhl IHNhbWUNCmNvbmRpdGlvbnMNCisgICAgICAtLWZpbGU9RklMRVs6VEVNUExBVEVdDQorICAgICAg ICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQ0KKw0K K0NvbmZpZ3VyYXRpb24gZmlsZXM6DQorJGNvbmZpZ19maWxlcw0KKw0KK0NvbmZpZ3VyYXRpb24g Y29tbWFuZHM6DQorJGNvbmZpZ19jb21tYW5kcw0KKw0KK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNr YWdlIHByb3ZpZGVyLiINCisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VP RiB8fCBhY193cml0ZV9mYWlsPTENCithY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZp Z3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOw0Kcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCINCithY19j c192ZXJzaW9uPSJcXA0KK2NvbmZpZy5zdGF0dXMNCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0 ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsDQorICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25m aWdcXCINCisNCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuDQorVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJl ZSBTb2Z0d2FyZQ0KRm91bmRhdGlvbg0KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNv cHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iDQorDQorYWNfcHdkPSckYWNfcHdkJw0KK3Ny Y2Rpcj0nJHNyY2RpcicNCitJTlNUQUxMPSckSU5TVEFMTCcNCit0ZXN0IC1uICJcJEFXSyIgfHwg QVdLPWF3aw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBh Y193cml0ZV9mYWlsPTENCisjIFRoZSBkZWZhdWx0IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRv ZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuDQorYWNfbmVlZF9kZWZhdWx0cz06DQord2hpbGUgdGVz dCAkIyAhPSAwDQorZG8NCisgIGNhc2UgJDEgaW4NCisgIC0tKj0/KikNCisgICAgYWNfb3B0aW9u PWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2ANCisgICAgYWNfb3B0YXJnPWBleHByICJYJDEi IDogJ1hbXj1dKj1cKC4qXCknYA0KKyAgICBhY19zaGlmdD06DQorICAgIDs7DQorICAtLSo9KQ0K KyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYA0KKyAgICBhY19vcHRh cmc9DQorICAgIGFjX3NoaWZ0PToNCisgICAgOzsNCisgICopDQorICAgIGFjX29wdGlvbj0kMQ0K KyAgICBhY19vcHRhcmc9JDINCisgICAgYWNfc2hpZnQ9c2hpZnQNCisgICAgOzsNCisgIGVzYWMN CisNCisgIGNhc2UgJGFjX29wdGlvbiBpbg0KKyAgIyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4N CisgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwg LS1yZWMgfCAtLXJlIHwNCi0tcikNCisgICAgYWNfY3NfcmVjaGVjaz06IDs7DQorICAtLXZlcnNp b24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtLXZlciB8IC0tdmUgfCAtLXYgfCAt ViApDQorICAgICRhc19lY2hvICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgOzsNCisgIC0tY29uZmln IHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29uIHwgLS1jbyB8IC0tYyApDQorICAgICRhc19lY2hv ICIkYWNfY3NfY29uZmlnIjsgZXhpdCA7Ow0KKyAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwg LS1kZSB8IC0tZCB8IC1kICkNCisgICAgZGVidWc9OiA7Ow0KKyAgLS1maWxlIHwgLS1maWwgfCAt LWZpIHwgLS1mICkNCisgICAgJGFjX3NoaWZ0DQorICAgIGNhc2UgJGFjX29wdGFyZyBpbg0KKyAg ICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxc XFxcXCcnL2ciYA0KOzsNCisgICAgJycpIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGZpbGUgYXJn dW1lbnQiIDs7DQorICAgIGVzYWMNCisgICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICck YWNfb3B0YXJnJyINCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7DQorICAtLWhlIHwgLS1o IHwgIC0taGVscCB8IC0taGVsIHwgLWggKQ0KKyAgICAkYXNfZWNobyAiJGFjX2NzX3VzYWdlIjsg ZXhpdCA7Ow0KKyAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1 IHwgLS1xIFwNCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0t c2lsIHwgLS1zaSB8IC0tcykNCisgICAgYWNfY3Nfc2lsZW50PTogOzsNCisNCisgICMgVGhpcyBp cyBhbiBlcnJvci4NCisgIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjog XGAkMScNCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgOzsNCisNCisg ICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWdfdGFyZ2V0cyAiICQxIg0KKyAgICAgYWNfbmVlZF9k ZWZhdWx0cz1mYWxzZSA7Ow0KKw0KKyAgZXNhYw0KKyAgc2hpZnQNCitkb25lDQorDQorYWNfY29u ZmlndXJlX2V4dHJhX2FyZ3M9DQorDQoraWYgJGFjX2NzX3NpbGVudDsgdGhlbg0KKyAgZXhlYyA2 Pi9kZXYvbnVsbA0KKyAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1cmVfZXh0 cmFfYXJncyAtLXNpbGVudCINCitmaQ0KKw0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVT IDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2lmIFwkYWNfY3NfcmVjaGVjazsgdGhlbg0K KyAgc2V0IFggJyRTSEVMTCcgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVf ZXh0cmFfYXJncyAtLQ0Kbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uDQorICBzaGlmdA0KKyAgXCRh c19lY2hvICJydW5uaW5nIENPTkZJR19TSEVMTD0kU0hFTEwgXCQqIiA+JjYNCisgIENPTkZJR19T SEVMTD0nJFNIRUxMJw0KKyAgZXhwb3J0IENPTkZJR19TSEVMTA0KKyAgZXhlYyAiXCRAIg0KK2Zp DQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRl X2ZhaWw9MQ0KK2V4ZWMgNT4+Y29uZmlnLmxvZw0KK3sNCisgIGVjaG8NCisgIHNlZCAnaDtzLy4v LS9nO3MvXi4uLi8jIyAvO3MvLi4uJC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YDQorIyMgUnVubmlu ZyAkYXNfbWUuICMjDQorX0FTQk9YDQorICAkYXNfZWNobyAiJGFjX2xvZyINCit9ID4mNQ0KKw0K K19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9 MQ0KKyMNCisjIElOSVQtQ09NTUFORFMNCisjDQorQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFj X2F1eF9kaXI9IiRhY19hdXhfZGlyIg0KK3NyY2Rpcj0ke3NyY2Rpcn0NCit0YXJnZXQ9JHt0YXJn ZXR9DQord2l0aF9tdWx0aXN1YmRpcj0ke3dpdGhfbXVsdGlzdWJkaXJ9DQorYWNfY29uZmlndXJl X2FyZ3M9IiR7YWNfY29uZmlndXJlX2FyZ3N9IC0tZW5hYmxlLW11bHRpbGliIg0KK0NPTkZJR19T SEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQ0KK2xpYmdsb3NzX3RvcGRpcj0ke2xpYmdsb3Nz X3RvcGRpcn0NCisNCisNCitfQUNFT0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNF T0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorDQorIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuDQorZm9y IGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRzDQorZG8NCisgIGNhc2UgJGFj X2NvbmZpZ190YXJnZXQgaW4NCisgICAgImRlcGZpbGVzIikgQ09ORklHX0NPTU1BTkRTPSIkQ09O RklHX0NPTU1BTkRTIGRlcGZpbGVzIiA7Ow0KKyAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9 IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7DQorDQorICAqKSBhc19mbl9lcnJvciAkPyAiaW52 YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIg0KNTs7DQorICBl c2FjDQorZG9uZQ0KKw0KKw0KKyMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50 cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0bw0KaW5zdGFudGlhdGUsDQorIyB0aGVuIHRoZSBlbnZ2 YXIgaW50ZXJmYWNlIGlzIHVzZWQuICBTZXQgb25seSB0aG9zZSB0aGF0IGFyZSBub3QuDQorIyBX ZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9m IGFuDQpleHRyZW1lbHkNCisjIGJpemFycmUgYnVnIG9uIFN1bk9TIDQuMS4zLg0KK2lmICRhY19u ZWVkX2RlZmF1bHRzOyB0aGVuDQorICB0ZXN0ICIke0NPTkZJR19GSUxFUytzZXR9IiA9IHNldCB8 fCBDT05GSUdfRklMRVM9JGNvbmZpZ19maWxlcw0KKyAgdGVzdCAiJHtDT05GSUdfQ09NTUFORFMr c2V0fSIgPSBzZXQgfHwNCkNPTkZJR19DT01NQU5EUz0kY29uZmlnX2NvbW1hbmRzDQorZmkNCisN CisjIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQg aW4gdGhlIGJ1aWxkDQp0cmVlDQorIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFzb24g YWdhaW5zdCBoYXZpbmcgaXQgaGVyZSwgYW5kIGluDQphZGRpdGlvbiwNCisjIGNyZWF0aW5nIGFu ZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuDQor IyBIb29rIGZvciBpdHMgcmVtb3ZhbCB1bmxlc3MgZGVidWdnaW5nLg0KKyMgTm90ZSB0aGF0IHRo ZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdoaWNoIHRoZSBkaXJlY3Rvcnkgd2lsbCBub3QgYmUN CmNsZWFuZWQ6DQorIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMgbmFtZSBoYXMg YmVlbiBhc3NpZ25lZCB0byBgJHRtcCcuDQorJGRlYnVnIHx8DQorew0KKyAgdG1wPSBhY190bXA9 DQorICB0cmFwICdleGl0X3N0YXR1cz0kPw0KKyAgOiAiJHthY190bXA6PSR0bXB9Ig0KKyAgeyB0 ZXN0ICEgLWQgIiRhY190bXAiIHx8IHJtIC1mciAiJGFjX3RtcCI7IH0gJiYgZXhpdCAkZXhpdF9z dGF0dXMNCisnIDANCisgIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1DQorfQ0KKyMgQ3Jl YXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLg0KKw0KK3sNCisgIHRt cD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29uZlhYWFhYWCIpIDI+L2Rldi9udWxsYCAm Jg0KKyAgdGVzdCAtZCAiJHRtcCINCit9ICB8fA0KK3sNCisgIHRtcD0uL2NvbmYkJC0kUkFORE9N DQorICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikNCit9IHx8IGFzX2ZuX2Vycm9yICQ/ICJj YW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIg0KIiRMSU5FTk8iIDUNCith Y190bXA9JHRtcA0KKw0KKyMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2Vj dGlvbi4NCisjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklH X0ZJTEVTLg0KKyMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0 dXMgY29uZmlnLmgnLg0KK2lmIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiOyB0aGVuDQorDQorDQor YWNfY3I9YGVjaG8gWCB8IHRyIFggJ1wwMTUnYA0KKyMgT24gY3lnd2luLCBiYXNoIGNhbiBlYXQg XHIgaW5zaWRlIGBgIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpZ25jci4NCisjIEJ1dCB3ZSBrbm93 IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJlIGVtcHR5IGF0IHRoaXMNCisj IHBvaW50LCBzbyB3ZSBjYW4gdXNlIGEgYmFzaGlzbSBhcyBhIGZhbGxiYWNrLg0KK2lmIHRlc3Qg IngkYWNfY3IiID0geDsgdGhlbg0KKyAgZXZhbCBhY19jcj1cJFwnXFxyXCcNCitmaQ0KK2FjX2Nz X2F3a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScgPC9kZXYvbnVsbCAyPi9kZXYv bnVsbGANCitpZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbg0KKyAg YWNfY3NfYXdrX2NyPSdcXHInDQorZWxzZQ0KKyAgYWNfY3NfYXdrX2NyPSRhY19jcg0KK2ZpDQor DQorZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYNCitfQUNFT0YNCisNCisN Cit7DQorICBlY2hvICJjYXQgPmNvbmYkJHN1YnMuYXdrIDw8X0FDRU9GIiAmJg0KKyAgZWNobyAi JGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJg0KKyAgZWNobyAi X0FDRU9GIg0KK30gPmNvbmYkJHN1YnMuc2ggfHwNCisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBu b3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCithY19kZWxpbV9udW09YGVjaG8g IiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYA0KK2FjX2RlbGltPSclIV8hIyAnDQorZm9y IGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvDQorICAu IC4vY29uZiQkc3Vicy5zaCB8fA0KKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2Ug JENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1DQorDQorICBhY19kZWxpbV9uPWBzZWQgLW4gInMv LiokYWNfZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYA0KKyAgaWYgdGVz dCAkYWNfZGVsaW1fbiA9ICRhY19kZWxpbV9udW07IHRoZW4NCisgICAgYnJlYWsNCisgIGVsaWYg JGFjX2xhc3RfdHJ5OyB0aGVuDQorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAk Q09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCisgIGVsc2UNCisgICAgYWNfZGVsaW09IiRhY19k ZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICINCisgIGZpDQorZG9uZQ0KK3JtIC1mIGNvbmYk JHN1YnMuc2gNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTENCitjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmDQorX0FDRU9G DQorc2VkIC1uICcNCitoDQorcy9eL1NbIi87IHMvIS4qLyJdPS8NCitwDQorZw0KK3MvXlteIV0q IS8vDQorOnJlcGwNCit0IHJlcGwNCitzLyciJGFjX2RlbGltIickLy8NCit0IGRlbGltDQorOm5s DQoraA0KK3MvXCguXHsxNDhcfVwpLi4qL1wxLw0KK3QgbW9yZTENCitzL1siXFxdL1xcJi9nOyBz L14vIi87IHMvJC9cXG4iXFwvDQorcA0KK24NCitiIHJlcGwNCis6bW9yZTENCitzL1siXFxdL1xc Ji9nOyBzL14vIi87IHMvJC8iXFwvDQorcA0KK2cNCitzLy5cezE0OFx9Ly8NCit0IG5sDQorOmRl bGltDQoraA0KK3MvXCguXHsxNDhcfVwpLi4qL1wxLw0KK3QgbW9yZTINCitzL1siXFxdL1xcJi9n OyBzL14vIi87IHMvJC8iLw0KK3ANCitiDQorOm1vcmUyDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIv OyBzLyQvIlxcLw0KK3ANCitnDQorcy8uXHsxNDhcfS8vDQordCBkZWxpbQ0KKycgPGNvbmYkJHN1 YnMuYXdrIHwgc2VkICcNCisvXlteIiJdL3sNCisgIE4NCisgIHMvXG4vLw0KK30NCisnID4+JENP TkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xDQorcm0gLWYgY29uZiQkc3Vicy5hd2sNCitj YXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCitfQUNBV0sN CitjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJg0KKyAgZm9yIChrZXkgaW4g UykgU19pc19zZXRba2V5XSA9IDENCisgIEZTID0gIgciDQorDQorfQ0KK3sNCisgIGxpbmUgPSAk IDANCisgIG5maWVsZHMgPSBzcGxpdChsaW5lLCBmaWVsZCwgIkAiKQ0KKyAgc3Vic3RlZCA9IDAN CisgIGxlbiA9IGxlbmd0aChmaWVsZFsxXSkNCisgIGZvciAoaSA9IDI7IGkgPCBuZmllbGRzOyBp KyspIHsNCisgICAga2V5ID0gZmllbGRbaV0NCisgICAga2V5bGVuID0gbGVuZ3RoKGtleSkNCisg ICAgaWYgKFNfaXNfc2V0W2tleV0pIHsNCisgICAgICB2YWx1ZSA9IFNba2V5XQ0KKyAgICAgIGxp bmUgPSBzdWJzdHIobGluZSwgMSwgbGVuKSAiIiB2YWx1ZSAiIiBzdWJzdHIobGluZSwgbGVuICsN CmtleWxlbiArIDMpDQorICAgICAgbGVuICs9IGxlbmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRb KytpXSkNCisgICAgICBzdWJzdGVkID0gMQ0KKyAgICB9IGVsc2UNCisgICAgICBsZW4gKz0gMSAr IGtleWxlbg0KKyAgfQ0KKw0KKyAgcHJpbnQgbGluZQ0KK30NCisNCitfQUNBV0sNCitfQUNFT0YN CitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQoraWYg c2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBz ZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19jci9nIg0KK2Vsc2UNCisgIGNh dA0KK2ZpIDwgIiRhY190bXAvc3ViczEuYXdrIiA+ICIkYWNfdG1wL3N1YnMuYXdrIiBcDQorICB8 fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnki ICIkTElORU5PIg0KNQ0KK19BQ0VPRg0KKw0KKyMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0 aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29sZQ0KJChzcmNkaXIpLA0KKyMgJHtzcmNkaXJ9 IGFuZCBAc3JjZGlyQCBlbnRyaWVzIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAN CmxlYWRpbmcgYW5kDQorIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9s ZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMNCmVtcHR5DQorIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4g ZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLg0KK2lmIHRlc3QgIngkc3JjZGly IiA9IHguOyB0aGVuDQorICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9WwkgXSovew0KK2gN CitzLy8vDQorcy9eLzovDQorcy9bCSBdKiQvOi8NCitzLzpcJChzcmNkaXIpOi86L2cNCitzLzpc JHtzcmNkaXJ9Oi86L2cNCitzLzpAc3JjZGlyQDovOi9nDQorcy9eOiovLw0KK3MvOiokLy8NCit4 DQorcy9cKD1bCSBdKlwpLiovXDEvDQorRw0KK3MvXG4vLw0KK3MvXltePV0qPVsJIF0qJC8vDQor fScNCitmaQ0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTENCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiDQorDQorDQorZXZhbCBzZXQgWCAi ICA6RiAkQ09ORklHX0ZJTEVTICAgICAgOkMgJENPTkZJR19DT01NQU5EUyINCitzaGlmdA0KK2Zv ciBhY190YWcNCitkbw0KKyAgY2FzZSAkYWNfdGFnIGluDQorICA6W0ZITENdKSBhY19tb2RlPSRh Y190YWc7IGNvbnRpbnVlOzsNCisgIGVzYWMNCisgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluDQor ICA6W0ZITF0qOiopOzsNCisgIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB0 YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7Ow0KKyAgOltGSF0tKSBhY190YWc9LTotOzsNCisg IDpbRkhdKikgYWNfdGFnPSRhY190YWc6JGFjX3RhZy5pbjs7DQorICBlc2FjDQorICBhY19zYXZl X0lGUz0kSUZTDQorICBJRlM9Og0KKyAgc2V0IHggJGFjX3RhZw0KKyAgSUZTPSRhY19zYXZlX0lG Uw0KKyAgc2hpZnQNCisgIGFjX2ZpbGU9JDENCisgIHNoaWZ0DQorDQorICBjYXNlICRhY19tb2Rl IGluDQorICA6TCkgYWNfc291cmNlPSQxOzsNCisgIDpbRkhdKQ0KKyAgICBhY19maWxlX2lucHV0 cz0NCisgICAgZm9yIGFjX2YNCisgICAgZG8NCisgICAgICBjYXNlICRhY19mIGluDQorICAgICAg LSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7Ow0KKyAgICAgICopICMgTG9vayBmb3IgdGhlIGZpbGUg Zmlyc3QgaW4gdGhlIGJ1aWxkIHRyZWUsIHRoZW4gaW4gdGhlDQpzb3VyY2UgdHJlZQ0KKwkgIyAo aWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBi ZQ0KRE9TLXN0eWxlLA0KKwkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250YWluIGA6Jy4NCisJ IHRlc3QgLWYgIiRhY19mIiB8fA0KKwkgICBjYXNlICRhY19mIGluDQorCSAgIFtcXC8kXSopIGZh bHNlOzsNCisJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rpci8k YWNfZiI7Ow0KKwkgICBlc2FjIHx8DQorCSAgIGFzX2ZuX2Vycm9yIDEgImNhbm5vdCBmaW5kIGlu cHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyINCjU7Ow0KKyAgICAgIGVzYWMNCisgICAgICBj YXNlICRhY19mIGluICpcJyopIGFjX2Y9YCRhc19lY2hvICIkYWNfZiIgfCBzZWQNCiJzLycvJ1xc XFxcXFxcJycvZyJgOzsgZXNhYw0KKyAgICAgIGFzX2ZuX2FwcGVuZCBhY19maWxlX2lucHV0cyAi ICckYWNfZiciDQorICAgIGRvbmUNCisNCisgICAgIyBMZXQncyBzdGlsbCBwcmV0ZW5kIGl0IGlz IGBjb25maWd1cmUnIHdoaWNoIGluc3RhbnRpYXRlcyAoaS5lLiwNCmRvbid0DQorICAgICMgdXNl ICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoNCisgICAgIyAgICAv KiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8NCisgICAgY29uZmln dXJlX2lucHV0PSdHZW5lcmF0ZWQgZnJvbSAnYA0KKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8 XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJw0KKwlgJyBieSBjb25maWd1cmUuJw0KKyAgICBpZiB0 ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuDQorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNf ZmlsZS4gICRjb25maWd1cmVfaW5wdXQiDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1DQorJGFzX2VjaG8gIiRhc19t ZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9DQorICAgIGZpDQorICAgICMgTmV1dHJhbGl6ZSBz cGVjaWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxhY2VtZW50DQpzdHJp bmdzLg0KKyAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygNCisgICAgKlwmKiB8ICpcfCog fCAqXFwqICkNCisgICAgICAgYWNfc2VkX2NvbmZfaW5wdXQ9YCRhc19lY2hvICIkY29uZmlndXJl X2lucHV0IiB8DQorICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKA0KKyAgICAq KSBhY19zZWRfY29uZl9pbnB1dD0kY29uZmlndXJlX2lucHV0OzsNCisgICAgZXNhYw0KKw0KKyAg ICBjYXNlICRhY190YWcgaW4NCisgICAgKjotOiogfCAqOi0pIGNhdCA+IiRhY190bXAvc3RkaW4i IFwNCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIg IiRMSU5FTk8iIDUgOzsNCisgICAgZXNhYw0KKyAgICA7Ow0KKyAgZXNhYw0KKw0KKyAgYWNfZGly PWAkYXNfZGlybmFtZSAtLSAiJGFjX2ZpbGUiIHx8DQorJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAn WFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8v XClbXi9dJyBcfCBcDQorCSBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXA0KKwkgWCIkYWNf ZmlsZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYWNfZmls ZSIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAg cy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMv L1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0K KwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgIGFzX2Rpcj0iJGFjX2RpciI7IGFzX2ZuX21rZGly X3ANCisgIGFjX2J1aWxkZGlyPS4NCisNCitjYXNlICIkYWNfZGlyIiBpbg0KKy4pIGFjX2Rpcl9z dWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyop DQorICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRhY19kaXIiIHwgc2VkICdzfF5cLltcXC9d fHwnYA0KKyAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4Lg0K KyAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZA0K J3N8L1teXFwvXSp8Ly4ufGc7c3wvfHwnYA0KKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBp bg0KKyAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7Ow0K KyAgKikgIGFjX3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7DQorICBl c2FjIDs7DQorZXNhYw0KK2FjX2Fic190b3BfYnVpbGRkaXI9JGFjX3B3ZA0KK2FjX2Fic19idWls ZGRpcj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgNCisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 Og0KK2FjX3RvcF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeA0KKw0KK2Nhc2UgJHNyY2Rp ciBpbg0KKyAgLikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLg0KKyAgICBhY19zcmNkaXI9 Lg0KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViDQorICAgIGFjX2Fic190 b3Bfc3JjZGlyPSRhY19wd2QgOzsNCisgIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUg bmFtZS4NCisgICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsNCisgICAgYWNfdG9w X3NyY2Rpcj0kc3JjZGlyDQorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsNCisgICop ICMgUmVsYXRpdmUgbmFtZS4NCisgICAgYWNfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNy Y2RpciRhY19kaXJfc3VmZml4DQorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVm aXgkc3JjZGlyDQorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7Ow0KK2Vz YWMNCithY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4DQorDQor DQorICBjYXNlICRhY19tb2RlIGluDQorICA6RikNCisgICMNCisgICMgQ09ORklHX0ZJTEUNCisg ICMNCisNCisgIGNhc2UgJElOU1RBTEwgaW4NCisgIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lO U1RBTEw9JElOU1RBTEwgOzsNCisgICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWlsZF9wcmVmaXgk SU5TVEFMTCA7Ow0KKyAgZXNhYw0KK19BQ0VPRg0KKw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8 XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIElmIHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBr bm93IGFib3V0IGRhdGFyb290ZGlyLCBleHBhbmQgaXQuDQorIyBGSVhNRTogVGhpcyBoYWNrIHNo b3VsZCBiZSByZW1vdmVkIGEgZmV3IHllYXJzIGFmdGVyIDIuNjAuDQorYWNfZGF0YXJvb3RkaXJf aGFjaz07IGFjX2RhdGFyb290ZGlyX3NlZW49DQorYWNfc2VkX2RhdGFyb290PScNCisvZGF0YXJv b3RkaXIvIHsNCisgIHANCisgIHENCit9DQorL0BkYXRhZGlyQC9wDQorL0Bkb2NkaXJAL3ANCisv QGluZm9kaXJAL3ANCisvQGxvY2FsZWRpckAvcA0KKy9AbWFuZGlyQC9wJw0KK2Nhc2UgYGV2YWwg InNlZCAtbiBcIlwkYWNfc2VkX2RhdGFyb290XCIgJGFjX2ZpbGVfaW5wdXRzImAgaW4NCisqZGF0 YXJvb3RkaXIqKSBhY19kYXRhcm9vdGRpcl9zZWVuPXllczs7DQorKkBkYXRhZGlyQCp8KkBkb2Nk aXJAKnwqQGluZm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopDQorICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cw0K c2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmciID4mNQ0KKyRhc19lY2hv ICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhlIC0t DQpkYXRhcm9vdGRpciBzZXR0aW5nIiA+JjI7fQ0KK19BQ0VPRg0KK2NhdCA+PiRDT05GSUdfU1RB VFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyAgYWNfZGF0YXJvb3RkaXJfaGFjaz0n DQorICBzJkBkYXRhZGlyQCYkZGF0YWRpciZnDQorICBzJkBkb2NkaXJAJiRkb2NkaXImZw0KKyAg cyZAaW5mb2RpckAmJGluZm9kaXImZw0KKyAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcNCisg IHMmQG1hbmRpckAmJG1hbmRpciZnDQorICBzJlxcXCR7ZGF0YXJvb3RkaXJ9JiRkYXRhcm9vdGRp ciZnJyA7Ow0KK2VzYWMNCitfQUNFT0YNCisNCisjIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNy Y2RpcicgPSBgLicuDQorIyBTaGVsbCBjb2RlIGluIGNvbmZpZ3VyZS5hYyBtaWdodCBzZXQgZXh0 cmFzdWIuDQorIyBGSVhNRTogZG8gd2UgcmVhbGx5IHdhbnQgdG8gbWFpbnRhaW4gdGhpcyBmZWF0 dXJlPw0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0K K2FjX3NlZF9leHRyYT0iJGFjX3Zwc3ViDQorJGV4dHJhc3ViDQorX0FDRU9GDQorY2F0ID4+JENP TkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKzp0DQorL0BbYS16QS1a X11bYS16QS1aXzAtOV0qQC8hYg0KK3N8QGNvbmZpZ3VyZV9pbnB1dEB8JGFjX3NlZF9jb25mX2lu cHV0fDt0IHQNCitzJkB0b3BfYnVpbGRkaXJAJiRhY190b3BfYnVpbGRkaXJfc3ViJjt0IHQNCitz JkB0b3BfYnVpbGRfcHJlZml4QCYkYWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0DQorcyZAc3JjZGly QCYkYWNfc3JjZGlyJjt0IHQNCitzJkBhYnNfc3JjZGlyQCYkYWNfYWJzX3NyY2RpciY7dCB0DQor cyZAdG9wX3NyY2RpckAmJGFjX3RvcF9zcmNkaXImO3QgdA0KK3MmQGFic190b3Bfc3JjZGlyQCYk YWNfYWJzX3RvcF9zcmNkaXImO3QgdA0KK3MmQGJ1aWxkZGlyQCYkYWNfYnVpbGRkaXImO3QgdA0K K3MmQGFic19idWlsZGRpckAmJGFjX2Fic19idWlsZGRpciY7dCB0DQorcyZAYWJzX3RvcF9idWls ZGRpckAmJGFjX2Fic190b3BfYnVpbGRkaXImO3QgdA0KK3MmQElOU1RBTExAJiRhY19JTlNUQUxM Jjt0IHQNCiskYWNfZGF0YXJvb3RkaXJfaGFjaw0KKyINCitldmFsIHNlZCBcIlwkYWNfc2VkX2V4 dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mDQoiJGFjX3RtcC9zdWJzLmF3ayIgXA0K KyAgPiRhY190bXAvb3V0IHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19m aWxlIiAiJExJTkVOTyINCjUNCisNCit0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19k YXRhcm9vdGRpcl9zZWVuIiAmJg0KKyAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGly fS9wJyAiJGFjX3RtcC9vdXQiYDsgdGVzdCAtbg0KIiRhY19vdXQiOyB9ICYmDQorICB7IGFjX291 dD1gc2VkIC1uICcvXlsJIF0qZGF0YXJvb3RkaXJbCSBdKjoqPS9wJyBcDQorICAgICAgIiRhY190 bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmDQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zDQphIHJlZmVy ZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicNCit3aGljaCBzZWVtcyB0byBiZSB1 bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mNQ0KKyRhc19lY2hv ICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZQ0K dmFyaWFibGUgXGBkYXRhcm9vdGRpcicNCit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQ bGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mMjt9DQorDQorICBybSAtZiAiJGFjX3Rt cC9zdGRpbiINCisgIGNhc2UgJGFjX2ZpbGUgaW4NCisgIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYm IHJtIC1mICIkYWNfdG1wL291dCI7Ow0KKyAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJGFj X3RtcC9vdXQiICIkYWNfZmlsZSI7Ow0KKyAgZXNhYyBcDQorICB8fCBhc19mbl9lcnJvciAkPyAi Y291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUNCisgOzsNCisNCisNCisgIDpD KSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleGVjdXRpbmcgJGFj X2ZpbGUNCmNvbW1hbmRzIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBleGVjdXRpbmcgJGFjX2Zp bGUgY29tbWFuZHMiID4mNjt9DQorIDs7DQorICBlc2FjDQorDQorDQorICBjYXNlICRhY19maWxl JGFjX21vZGUgaW4NCisgICAgImRlcGZpbGVzIjpDKSB0ZXN0IHgiJEFNREVQX1RSVUUiICE9IHgi IiB8fCBmb3IgbWYgaW4NCiRDT05GSUdfRklMRVM7IGRvDQorICAjIFN0cmlwIE1GIHNvIHdlIGVu ZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLg0KKyAgbWY9YGVjaG8gIiRtZiIgfCBzZWQg LWUgJ3MvOi4qJC8vJ2ANCisgICMgQ2hlY2sgd2hldGhlciB0aGlzIGlzIGFuIEF1dG9tYWtlIGdl bmVyYXRlZCBNYWtlZmlsZSBvciBub3QuDQorICAjIFdlIHVzZWQgdG8gbWF0Y2ggb25seSB0aGUg ZmlsZXMgbmFtZWQgYE1ha2VmaWxlLmluJywgYnV0DQorICAjIHNvbWUgcGVvcGxlIHJlbmFtZSB0 aGVtOyBzbyBpbnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4NCisgICMgR3JlcCdp bmcgdGhlIGZpcnN0IGxpbmUgaXMgbm90IGVub3VnaDogc29tZSBwZW9wbGUgcG9zdC1wcm9jZXNz DQorICAjIGVhY2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9uIHRvcCBvZiBlYWNo IGZpbGUgdG8gc2F5IHNvLg0KKyAgIyBTbyBsZXQncyBncmVwIHdob2xlIGZpbGUuDQorICBpZiBn cmVwICdeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlJyAkbWYgPiAvZGV2L251bGwgMj4mMTsgdGhl bg0KKyAgICBkaXJwYXJ0PWAkYXNfZGlybmFtZSAtLSAiJG1mIiB8fA0KKyRhc19leHByIFgiJG1m IiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkbWYiIDogJ1hcKC8v XClbXi9dJyBcfCBcDQorCSBYIiRtZiIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJG1mIiA6ICdY XCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRtZiIgfA0KKyAgICBzZWQg Jy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBx DQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0K KwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0K KwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4q Ly4vOyBxJ2ANCisgIGVsc2UNCisgICAgY29udGludWUNCisgIGZpDQorICAjIEV4dHJhY3QgdGhl IGRlZmluaXRpb24gb2YgREVQRElSLCBhbV9faW5jbHVkZSwgYW5kIGFtX19xdW90ZQ0KKyAgIyBm cm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2UnLg0KKyAgREVQRElSPWBzZWQg LW4gJ3MvXkRFUERJUiA9IC8vcCcgPCAiJG1mImANCisgIHRlc3QgLXogIiRERVBESVIiICYmIGNv bnRpbnVlDQorICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8vcCcgPCAi JG1mImANCisgIHRlc3QgLXogImFtX19pbmNsdWRlIiAmJiBjb250aW51ZQ0KKyAgYW1fX3F1b3Rl PWBzZWQgLW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImANCisgICMgV2hlbiB1c2luZyBh bnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0DQorICBV PWBzZWQgLW4gJ3MvXlUgPSAvL3AnIDwgIiRtZiJgDQorICAjIEZpbmQgYWxsIGRlcGVuZGVuY3kg b3V0cHV0IGZpbGVzLCB0aGV5IGFyZSBpbmNsdWRlZCBmaWxlcyB3aXRoDQorICAjICQoREVQRElS KSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBpcyB0aGUN CisgICMgc2ltcGxlc3QgYXBwcm9hY2ggdG8gY2hhbmdpbmcgJChERVBESVIpIHRvIGl0cyBhY3R1 YWwgdmFsdWUgaW4gdGhlDQorICAjIGV4cGFuc2lvbi4NCisgIGZvciBmaWxlIGluIGBzZWQgLW4g Ig0KKyAgICBzL14kYW1fX2luY2x1ZGUgJGFtX19xdW90ZVwoLiooREVQRElSKS4qXCkkYW1fX3F1 b3RlIickL1wxL3AnDQo8IiRtZiIgfCBcDQorICAgICAgIHNlZCAtZSAncy9cJChERVBESVIpLyci JERFUERJUiInL2cnIC1lICdzL1wkVS8nIiRVIicvZydgOyBkbw0KKyAgICAjIE1ha2Ugc3VyZSB0 aGUgZGlyZWN0b3J5IGV4aXN0cy4NCisgICAgdGVzdCAtZiAiJGRpcnBhcnQvJGZpbGUiICYmIGNv bnRpbnVlDQorICAgIGZkaXI9YCRhc19kaXJuYW1lIC0tICIkZmlsZSIgfHwNCiskYXNfZXhwciBY IiRmaWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkZmlsZSIg OiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBY IiRmaWxlIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRmaWxl IiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBz Ly9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8v XDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJ ICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQor CSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgICBhc19kaXI9JGRpcnBhcnQvJGZkaXI7IGFzX2Zu X21rZGlyX3ANCisgICAgIyBlY2hvICJjcmVhdGluZyAkZGlycGFydC8kZmlsZSINCisgICAgZWNo byAnIyBkdW1teScgPiAiJGRpcnBhcnQvJGZpbGUiDQorICBkb25lDQorZG9uZQ0KKyA7Ow0KKyAg ICAiTWFrZWZpbGUiOkYpIC4gJHtsaWJnbG9zc190b3BkaXJ9L2NvbmZpZy1tbC5pbiA7Ow0KKw0K KyAgZXNhYw0KK2RvbmUgIyBmb3IgYWNfdGFnDQorDQorDQorYXNfZm5fZXhpdCAwDQorX0FDRU9G DQorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUNCisNCit0ZXN0ICRhY193cml0 ZV9mYWlsID0gMCB8fA0KKyAgYXNfZm5fZXJyb3IgJD8gIndyaXRlIGZhaWx1cmUgY3JlYXRpbmcg JENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1DQorDQorDQorIyBjb25maWd1cmUgaXMgd3JpdGlu ZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLg0KKyMgY29uZmln LnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9n Lg0KKyMgVW5mb3J0dW5hdGVseSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMg c3RpbGwga2VwdCBvcGVuDQorIyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0dXMgd29uJ3Qg YmUgYWJsZSB0byB3cml0ZSB0byBpdDsgaXRzDQorIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRl ZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwNCisjIGVmZmVjdGl2ZWx5IGNsb3Np bmcgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kDQorIyBh cHBlbmRlZCB0byBieSBjb25maWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0byBjb25maWd1 cmUsIHdlDQorIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4NCitpZiB0ZXN0 ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4NCisgIGFjX2NzX3N1Y2Nlc3M9Og0KKyAgYWNfY29u ZmlnX3N0YXR1c19hcmdzPQ0KKyAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYNCisgICAgYWNfY29u ZmlnX3N0YXR1c19hcmdzPSIkYWNfY29uZmlnX3N0YXR1c19hcmdzIC0tcXVpZXQiDQorICBleGVj IDU+L2Rldi9udWxsDQorICAkU0hFTEwgJENPTkZJR19TVEFUVVMgJGFjX2NvbmZpZ19zdGF0dXNf YXJncyB8fCBhY19jc19zdWNjZXNzPWZhbHNlDQorICBleGVjIDU+PmNvbmZpZy5sb2cNCisgICMg VXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEs IHdoaWNoDQorICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFz dCBpbnN0cnVjdGlvbi4NCisgICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQgMQ0KK2ZpDQor aWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIiAmJiB0ZXN0ICIkZW5hYmxlX29wdGlv bl9jaGVja2luZyINCiE9IG5vOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZA0Kb3B0aW9uczogJGFjX3VucmVjb2du aXplZF9vcHRzIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6ZWQg b3B0aW9uczoNCiRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30NCitmaQ0KKw0KZGlmZiAtLWdp dCBhL2xpYmdsb3NzL3h0ZW5zYS9jb25maWd1cmUuaW4NCmIvbGliZ2xvc3MveHRlbnNhL2NvbmZp Z3VyZS5pbg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uYmFjNmNjYWNh DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvY29uZmlndXJlLmluDQpAQCAt MCwwICsxLDQ1IEBADQorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PQ0KKyMgY29uZmlndXJlLmFjIGZvciB4 dGVuc2EgbGliZ2xvc3MgYW5kIGNydDANCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo9PT09DQorDQorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KLS0tLQ0KKyMgU2V0dXANCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQorQUNfSU5J VChbY3J0MC5TXSkNCitBQ19DT05GSUdfU1JDRElSKFtjcnQwLlNdKQ0KK0FDX0NPTkZJR19BVVhf RElSKFske3NyY2Rpcn0vLi4vLi5dKQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIENoZWNr cyBmb3IgcHJvZ3JhbXMNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tDQorDQorTElCX0FDX1BST0dfQ0MN CitBQ19DSEVDS19UT09MKFtBUl0sW2FyXSkNCitBQ19DSEVDS19UT09MKFtSQU5MSUJdLFtyYW5s aWJdKQ0KK0FDX1BST0dfSU5TVEFMTA0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisjIE91dHB1 dA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0NCisNCitpZiB0ZXN0ICIkc3JjZGlyIiA9ICIuIiA7IHRo ZW4NCisgIGlmIHRlc3QgIiR7d2l0aF90YXJnZXRfc3ViZGlyfSIgIT0gIi4iIDsgdGhlbg0KKyAg ICBsaWJnbG9zc190b3BkaXI9IiR7c3JjZGlyfS8ke3dpdGhfbXVsdGlzcmN0b3B9Li4vLi4vLi4i DQorICBlbHNlDQorICAgIGxpYmdsb3NzX3RvcGRpcj0iJHtzcmNkaXJ9LyR7d2l0aF9tdWx0aXNy Y3RvcH0uLi8uLiINCisgIGZpDQorZWxzZQ0KKyAgbGliZ2xvc3NfdG9wZGlyPSIke3NyY2Rpcn0v Li4vLi4iDQorZmkNCitBQ19DT05GSUdfQVVYX0RJUigkbGliZ2xvc3NfdG9wZGlyKQ0KK0FDX0NP TkZJR19GSUxFUyhNYWtlZmlsZSwNCisuICR7bGliZ2xvc3NfdG9wZGlyfS9jb25maWctbWwuaW4s DQorc3JjZGlyPSR7c3JjZGlyfQ0KK3RhcmdldD0ke3RhcmdldH0NCit3aXRoX211bHRpc3ViZGly PSR7d2l0aF9tdWx0aXN1YmRpcn0NCithY19jb25maWd1cmVfYXJncz0iJHthY19jb25maWd1cmVf YXJnc30gLS1lbmFibGUtbXVsdGlsaWIiDQorQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9i aW4vc2h9DQorbGliZ2xvc3NfdG9wZGlyPSR7bGliZ2xvc3NfdG9wZGlyfQ0KKykNCitBQ19PVVRQ VVQNCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2EvY3J0MC5TIGIvbGliZ2xvc3MveHRlbnNh L2NydDAuUw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMjIwYWJiYWIy DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvY3J0MC5TDQpAQCAtMCwwICsx LDMxIEBADQorLy8gQ29weXJpZ2h0IDIwMTkgRXNwcmVzc2lmIFN5c3RlbXMgKFNoYW5naGFpKSBQ VEUgTFREDQorLy8NCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4 Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorLy8gWW91IG1heSBvYnRhaW4g YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorLy8NCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorLy8NCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorLy8gZGlzdHJp YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ UywNCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0 aGVyIGV4cHJlc3Mgb3INCmltcGxpZWQuDQorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKy8vIGxpbWl0YXRpb25z IHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKw0KKy8vIGNydDAuUw0KKy8vIER1bW15IHN0YXJ0dXAg ZmlsZSB3aGljaCBjYWxscyBtYWluKCkgZnVuY3Rpb24uDQorLy8gSXQgY2FuIGJlIHVzZWQgZm9y IGNvbXBpbGF0aW9uIHRlc3RzIG9ubHkuDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKioqKiovDQorDQor CS50ZXh0DQorDQorCS8qDQorCSAqICBTaW1wbGUganVtcCB0byBtYWluKCkuDQorCSAqLw0KKw0K KwkuZ2xvYmFsCV9zdGFydA0KKwlfc3RhcnQ6DQorCW1vdmkJYTQsIG1haW4NCisJangJYTQJCS8v IGp1bXAgdG8gbWFpbg0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9jcnQxLWJvYXJkcy5T IGIvbGliZ2xvc3MveHRlbnNhL2NydDEtDQpib2FyZHMuUw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMC4uNjVhYjdiNDVhDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9z cy94dGVuc2EvY3J0MS1ib2FyZHMuUw0KQEAgLTAsMCArMSwyMjYgQEANCisvLyBjcnQxLWJvYXJk cy5TDQorLy8NCisvLyBGb3IgbW9zdCBoYXJkd2FyZSAvIGJvYXJkcywgdGhpcyBjb2RlIHNldHMg dXAgdGhlIEMgY2FsbGluZyBjb250ZXh0DQorLy8gKHNldHRpbmcgdXAgc3RhY2ssIFBTLCBhbmQg Y2xlYXJpbmcgQlNTKSBhbmQganVtcHMgdG8NCl9fY2xpYnJhcnlfc3RhcnQNCisvLyB3aGljaCBz ZXRzIHVwIHRoZSBDIGxpYnJhcnksIGNhbGxzIGNvbnN0cnVjdG9ycyBhbmQgcmVnaXN0ZXJzDQpk ZXN0cnVjdG9ycywNCisvLyBhbmQgY2FsbHMgbWFpbigpLg0KKy8vDQorLy8gQ29udHJvbCBhcnJp dmVzIGhlcmUgYXQgX3N0YXJ0IGZyb20gdGhlIHJlc2V0IHZlY3RvciBvciBmcm9tIGNydDAtDQph cHAuUy4NCisNCisvLyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMyBUZW5zaWxpY2EgSW5jLg0KKy8v DQorLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24NCm9idGFpbmluZw0KKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KKy8vICJTb2Z0d2FyZSIpLCB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcNCisvLyB3aXRo b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsDQorLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvDQorLy8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0DQp0bw0KKy8vIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoNCisvLw0KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlDQppbmNsdWRlZA0KKy8vIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KKy8vDQorLy8gVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsDQorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GDQorLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQNCk5PTklORlJJTkdFTUVOVC4NCisvLyBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SDQpBTlkN CisvLyBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GDQpDT05UUkFDVCwNCisvLyBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0KKy8vIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKw0KKyNpbmNsdWRlIDx4dGVuc2Ev Y29yZWJpdHMuaD4NCisNCisNCisvLyBFeHBvcnRzDQorLmdsb2JhbCBfc3RhcnQNCisNCisvLyBJ bXBvcnRzDQorLy8gICBfX2NsaWJyYXJ5X2luaXQJCWZyb20gQyBsaWJyYXJ5IChlZy4gbmV3bGli IG9yIHVjbGliYykNCisvLyAgIGV4aXQJCQlmcm9tIEMgbGlicmFyeQ0KKy8vICAgbWFpbgkJCWZy b20gdXNlciBhcHBsaWNhdGlvbg0KKy8vICAgYm9hcmRfaW5pdAkJCWJvYXJkLXNwZWNpZmljDQoo dWFydC9taW5nbG9zcy90aW55Z2xvc3MuYykNCisvLyAgIHh0aGFsX2RjYWNoZV9hbGxfd3JpdGVi YWNrCWZyb20gSEFMIGxpYnJhcnkNCisvLyAgIF9fc3RhY2sJCQlmcm9tIGxpbmtlciBzY3JpcHQg KHNlZSBMU1AgUmVmDQpNYW51YWwpDQorLy8gICBfX2Jzc19zdGFydAkJZnJvbSBsaW5rZXIgc2Ny aXB0IChzZWUgTFNQIFJlZg0KTWFudWFsKQ0KKy8vICAgX2VuZAkJCWZyb20gbGlua2VyIHNjcmlw dCAoc2VlIExTUCBSZWYNCk1hbnVhbCkNCisNCisudHlwZQltYWluLCBAZnVuY3Rpb24NCisNCisj IGRlZmluZSBDQUxMCWNhbGw0DQorIyBkZWZpbmUgQ0FMTFgJY2FsbHg0DQorIyBkZWZpbmUgQVJH MQlhNgkvKiAxc3Qgb3V0Z29pbmcgY2FsbCBhcmd1bWVudCAqLw0KKyMgZGVmaW5lIEFSRzIJYTcJ LyogMm5kIG91dGdvaW5nIGNhbGwgYXJndW1lbnQgKi8NCisjIGRlZmluZSBBUkczCWE4CS8qIDNy ZCBvdXRnb2luZyBjYWxsIGFyZ3VtZW50ICovDQorIyBkZWZpbmUgQVJHNAlhOQkvKiA0dGggb3V0 Z29pbmcgY2FsbCBhcmd1bWVudCAqLw0KKyMgZGVmaW5lIEFSRzUJYTEwCS8qIDV0aCBvdXRnb2lu ZyBjYWxsIGFyZ3VtZW50ICovDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKioqKiovDQorDQorCS50 ZXh0DQorCS5hbGlnbiA0DQorX3N0YXJ0Og0KKwkvLyAgX3N0YXJ0IGlzIHR5cGljYWxseSBOT1Qg YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dA0Kc2VnbWVudCAtLQ0KKwkvLyAgaXQgaXMgYWx3 YXlzIGNhbGxlZCBmcm9tIGVpdGhlciB0aGUgcmVzZXQgdmVjdG9yIG9yIG90aGVyDQpjb2RlDQor CS8vICB0aGF0IGRvZXMgZXF1aXZhbGVudCBpbml0aWFsaXphdGlvbiAoc3VjaCBhcyBjcnQwLWFw cC5TKS4NCisJLy8NCisJLy8gIEFzc3VtcHRpb25zIG9uIGVudHJ5IHRvIF9zdGFydDoNCisJLy8J LSBsb3cgKGxldmVsLW9uZSkgYW5kIG1lZGl1bSBwcmlvcml0eSBpbnRlcnJ1cHRzIGFyZQ0KZGlz YWJsZWQNCisJLy8JICB2aWEgUFMuSU5UTEVWRUwgYW5kL29yIElOVEVOQUJMRSAoUFMuSU5UTEVW RUwgaXMNCmV4cGVjdGVkIHRvDQorCS8vCSAgYmUgemVyb2VkLCB0byBwb3RlbnRpYWxseSBlbmFi bGUgdGhlbSwgYmVmb3JlDQpjYWxsaW5nIG1haW4pDQorCS8vCS0gQyBjYWxsaW5nIGNvbnRleHQg bm90IGluaXRpYWxpemVkOg0KKwkvLwkgIC0gUFMgbm90IGluaXRpYWxpemVkDQorCS8vCSAgLSBT UCBub3QgaW5pdGlhbGl6ZWQNCisJLy8JLSB0aGUgZm9sbG93aW5nIGFyZSBpbml0aWFsaXplZDoN CisJLy8JICAtIExJVEJBU0UsIGNhY2hlIGF0dHJpYnV0ZXMsIFdpbmRvd0Jhc2UsDQpXaW5kb3dT dGFydCwNCisJLy8JICAgIENQRU5BQkxFLCBGUCdzIEZDUiBhbmQgRlNSLCBFWENTQVZFW25dDQor DQorCS8vIEtlZXAgYTAgemVyby4gIEl0IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSBhIGZldyB0aGlu Z3MuDQorCS8vIEl0IGlzIGFsc28gdGhlIHJldHVybiBhZGRyZXNzLCB3aGVyZSB6ZXJvIGluZGlj YXRlcw0KKwkvLyB0aGF0IHRoZSBmcmFtZSB1c2VkIGJ5IF9zdGFydCBpcyB0aGUgYm90dG9tbW9z dCBmcmFtZS4NCisJLy8NCisNCisJbW92aQlhMCwgMAkJLy8ga2VlcCB0aGlzIHJlZ2lzdGVyIHpl cm8uDQorDQorCXdzcglhMCwgSU5URU5BQkxFCS8vIElOVEVOQUJMRSB2YWx1ZSBpcyBub3QgZGVm aW5lZA0KYWZ0ZXIgcmVzZXQuDQorCQkJCS8vbWFrZSBzdXJlIHRoYXQgaW50ZXJydXB0cyBhcmUg c2h1dA0Kb2ZmICgqYmVmb3JlKiB3ZSBsb3dlciBQUy5JTlRMRVZFTCBhbmQgUFMuRVhDTSEpDQor DQorCS8vICBXaW5kb3dlZCByZWdpc3RlciBpbml0LCBzbyB3ZSBjYW4gY2FsbCB3aW5kb3dlZCBj b2RlIChlZy4NCkMgY29kZSkuDQorCW1vdmkJYTEsIDENCisJd3NyCWExLCBXSU5ET1dTVEFSVA0K KwkvLyAgVGhlIHByb2Nlc3NvciBhbHdheXMgY2xlYXJzIFdJTkRPV0JBU0UgYXQgcmVzZXQsIHNv IG5vDQpuZWVkIHRvIGNsZWFyIGl0IGhlcmUuDQorCS8vICBJdCByZXNldHMgV0lORE9XU1RBUlQg dG8gMSBzdGFydGluZyB3aXRoIExYMi4wL1g3LjAgKFJCLQ0KMjAwNi4wKS4NCisJLy8gIEhvd2V2 ZXIsIGFzc3VtaW5nIGhhcmQgcmVzZXQgaXMgbm90IHlldCBhbHdheXMgcHJhY3RpY2FsLA0Kc28g ZG8gdGhpcyBhbnl3YXk6DQorCXdzcglhMCwgV0lORE9XQkFTRQ0KKwlyc3luYw0KKw0KKwkvLyBT ZXQgVkVDQkFTRSB0byB1c2Ugb3VyIHZlY3RvcnMgaW5zdGVhZCB2ZWN0b3JzIGluIFJPTQ0KKwlt b3ZpCWExLCBfdmVjdG9yX3RhYmxlDQorCXdzcglhMSwgVkVDQkFTRQ0KKw0KKwkvLyBJbml0aWFs aXplIHRoZSBzdGFjayBwb2ludGVyLg0KKwkvLyBTZWUgdGhlICJBQkkgYW5kIFNvZnR3YXJlIENv bnZlbnRpb25zIiBjaGFwdGVyIGluIHRoZQ0KKwkvLyBYdGVuc2EgSVNBIFJlZmVyZW5jZSBtYW51 YWwgZm9yIGRldGFpbHMuDQorDQorCS8vIE5PVEU6IEJlY2F1c2UgdGhlIF9zdGFydCByb3V0aW5l IGRvZXMgbm90IHVzZSBhbnkgbWVtb3J5IGluDQppdHMNCisJLy8gc3RhY2sgZnJhbWUsIGFuZCBi ZWNhdXNlIGFsbCBvZiBpdHMgQ0FMTCBpbnN0cnVjdGlvbnMgdXNlIGENCisJLy8gd2luZG93IHNp emUgb2YgNCAob3IgemVybyksIHRoZSBzdGFjayBmcmFtZSBmb3IgX3N0YXJ0IGNhbg0KYmUgZW1w dHkuDQorDQorCW1vdmkJc3AsIF9fc3RhY2sNCisNCisJLyoNCisJICogIE5vdyB0aGF0IHNwIChh MSkgaXMgc2V0LCB3ZSBjYW4gc2V0IFBTIGFzIHBlciB0aGUNCmFwcGxpY2F0aW9uDQorCSAqICAo dXNlciB2ZWN0b3IgbW9kZSwgZW5hYmxlIGludGVycnVwdHMsIGVuYWJsZSB3aW5kb3cNCmV4Y2Vw dGlvbnMgaWYgYXBwbGljYWJsZSkuDQorCSAqLw0KKwltb3ZpCWEzLCBQU19VTXxQU19XT0UNCisJ d3NyCWEzLCBQUw0KKwlyc3luYw0KKw0KKw0KKwkvKg0KKwkgKiAgRG8gYW55IGluaXRpYWxpemF0 aW9uIHRoYXQgYWZmZWN0cyB0aGUgbWVtb3J5IG1hcCwgc3VjaCBhcw0KKwkgKiAgc2V0dGluZyB1 cCBUTEIgZW50cmllcywgdGhhdCBuZWVkcyB0byBiZSBkb25lIGJlZm9yZSB3ZQ0KY2FuDQorCSAq ICBzdWNjZXNzZnVsbHkgY2xlYXIgQlNTIChlLmcuIGlmIHNvbWUgQlNTIHNlZ21lbnRzIGFyZSBp bg0KKwkgKiAgcmVtYXBwZWQgYXJlYXMpLg0KKwkgKg0KKwkgKiAgTk9URTogIFRoaXMgaG9vayB3 b3JrcyB3aGVyZSB0aGUgcmVzZXQgdmVjdG9yIGRvZXMgbm90DQp1bnBhY2sNCisJICogIHNlZ21l bnRzIChzZWUgIlJPTSBwYWNraW5nIiBpbiB0aGUgTFNQIG1hbnVhbCksIG9yIHdoZXJlDQorCSAq ICB1bnBhY2tpbmcgb2Ygc2VnbWVudHMgaXMgbm90IGFmZmVjdGVkIGJ5IG1lbW9yeSByZW1hcHBp bmcuDQorCSAqICBJZiBST00gdW5wYWNraW5nIGlzIGFmZmVjdGVkLCBUTEIgc2V0dXAgbXVzdCBi ZSBkb25lIGluDQorCSAqICBhc3NlbWJsZXIgZnJvbSB0aGUgcmVzZXQgdmVjdG9yLg0KKwkgKg0K KwkgKiAgVGhlIF9fbWVtbWFwX2luaXQoKSByb3V0aW5lIGNhbiBiZSBhIEMgZnVuY3Rpb24sIGhv d2V2ZXINCml0DQorCSAqICBkb2VzIG5vdCBoYXZlIEJTUyBpbml0aWFsaXplZCEgIEluIHBhcnRp Y3VsYXIsDQpfX21lbW1hcF9pbml0KCkNCisJICogIGNhbm5vdCBzZXQgQlNTIHZhcmlhYmxlcywg aS5lLiB1bmluaXRpYWxpemVkIGdsb2JhbA0KdmFyaWFibGVzDQorCSAqICAodGhleSdsbCBiZSB3 aXBlZCBvdXQgYnkgdGhlIGZvbGxvd2luZyBCU1MgY2xlYXIpLCBub3IgY2FuDQppdA0KKwkgKiAg YXNzdW1lIHRoZXkgYXJlIHlldCBpbml0aWFsaXplZCB0byB6ZXJvLg0KKwkgKg0KKwkgKiAgVGhl IF9fbWVtbWFwX2luaXQoKSBmdW5jdGlvbiBpcyBvcHRpb25hbC4gIEl0IGlzIG1hcmtlZCBhcw0K YQ0KKwkgKiAgd2VhayBzeW1ib2wsIHNvIHRoYXQgaXQgZ2V0cyB2YWx1ZWQgemVybyBpZiBub3Qg ZGVmaW5lZC4NCisJICovDQorCS53ZWFrCV9fbWVtbWFwX2luaXQNCisJbW92aQlhNCwgX19tZW1t YXBfaW5pdA0KKwliZXF6CWE0LCAxZg0KKwlDQUxMWAlhNA0KKzE6DQorDQorCS8qDQorCSAqICBD bGVhciB0aGUgQlNTICh1bmluaXRpYWxpemVkIGRhdGEpIHNlZ21lbnRzLg0KKwkgKiAgVGhpcyBj b2RlIHN1cHBvcnRzIG11bHRpcGxlIHplcm9lZCBzZWN0aW9ucyAoKi5ic3MpLg0KKwkgKg0KKwkg Ki8NCisJbW92aQlhNiwgX19ic3Nfc3RhcnQNCisJbW92aQlhOCwgX2VuZA0KKwlzdWIJYTgsIGE4 LCBhNg0KKwltb3ZpCWE3LCAwDQorCUNBTEwJbWVtc2V0DQorDQorCS8qIG5lZWQgdG8gaW5pdCBy ZWVudF9zIGJlZm9yZSBlbnRlcmluZyBleGl0ICovDQorCUNBTEwJX19pbml0cmVlbnQNCisNCisJ LyogaW5pdCBzZW1paG9zdGluZyBpZiBoYXMgZnVuY3Rpb24gKi8NCisJLndlYWsgX19zZW1paG9z dGluZ19pbml0DQorCW1vdmkJYTQsIF9fc2VtaWhvc3RpbmdfaW5pdA0KKwliZXF6CWE0LCAyZg0K KwlDQUxMWAlhNA0KKzI6DQorDQorCS8vICBXZSBjYW4gbm93IGNhbGwgQyBjb2RlLCB0aGUgQyBj YWxsaW5nIGVudmlyb25tZW50IGhhcyBiZWVuDQppbml0aWFsaXplZC4NCisJLy8NCisJLy8gIEZy b20gdGhpcyBwb2ludCBvbiwgd2UgdXNlIEFCSS1zcGVjaWZpYyBtYWNyb3MgdG8gcmVmZXIgdG8N CnJlZ2lzdGVycyBhMCAuLiBhMTUNCisJLy8gIChBUkcjKS4NCisNCisNCisJLnR5cGUJYm9hcmRf aW5pdCwgQGZ1bmN0aW9uDQorCS50eXBlCV9fY2xpYnJhcnlfaW5pdCwgQGZ1bmN0aW9uDQorCS50 eXBlCWV4aXQsIEBmdW5jdGlvbg0KKw0KKw0KKwkvLyAgSW5pdGlhbGl6ZSB0aGUgYm9hcmQgKGVn LiBVQVJULCBldGMpLg0KKwlDQUxMCWJvYXJkX2luaXQNCisNCisJLyoNCisJICogIENhbGwgX19j bGlicmFyeV9pbml0IHRvIGluaXRpYWxpemUgdGhlIEMgbGlicmFyeToNCisJICoNCisJICogIHZv aWQgX19jbGlicmFyeV9pbml0KGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIGNoYXIgKioNCmVudmly b24sDQorCSAqCQl2b2lkKCppbml0X2Z1bmMpKHZvaWQpLA0Kdm9pZCgqZmluaV9mdW5jKSh2b2lk KSk7DQorCSAqLw0KKw0KKwkvLyAgUGFzcyBhbiBlbXB0eSBhcmd2IGFycmF5LCB3aXRoIGFuIGVt cHR5IHN0cmluZyBhcyB0aGUNCnByb2dyYW0gbmFtZS4NCisNCisJLndlYWsgX2luaXQNCisJLndl YWsgX2ZpbmkNCisJbW92aQlBUkcxLCBfc3RhcnRfYXJnYwkvLyBhcmdjIGFkZHJlc3MNCisJbW92 aQlBUkcyLCBfc3RhcnRfYXJndgkvLyBhcmd2ID0gWyIiLCAwXQ0KKwltb3ZpCUFSRzMsIF9zdGFy dF9lbnZwCS8vIGVudnAgPSBbMF0NCisJbW92aSAJQVJHNCwgX2luaXQJCS8vIGZ1bmN0aW9uIHRo YXQgY2FsbHMNCmNvbnN0cnVjdG9ycw0KKwltb3ZpCUFSRzUsIF9maW5pCQkvLyBmdW5jdGlvbiB0 aGF0IGNhbGxzDQpkZXN0cnVjdG9ycw0KKwlsMzJpCUFSRzEsIEFSRzEsIDAJCS8vIGFyZ2MgPSAx DQorCUNBTEwJX19jbGlicmFyeV9pbml0DQorDQorCS8vICBDYWxsOiAgIGludCBtYWluKGludCBh cmdjLCBjaGFyICoqIGFyZ3YsIGNoYXIgKiogZW52aXJvbik7DQorCW1vdmkJQVJHMSwgX3N0YXJ0 X2FyZ2MJLy8gYXJnYyBhZGRyZXNzDQorCW1vdmkJQVJHMiwgX3N0YXJ0X2FyZ3YJLy8gYXJndiA9 IFsiIiwgMF0NCisJbW92aQlBUkczLCBfc3RhcnRfZW52cAkvLyBlbnZwID0gWzBdDQorCWwzMmkJ QVJHMSwgQVJHMSwgMAkJLy8gYXJnYyA9IDENCisJQ0FMTAltYWluDQorCS8vICBUaGUgcmV0dXJu IHZhbHVlIGlzIHRoZSBzYW1lIHJlZ2lzdGVyIGFzIHRoZSBmaXJzdA0Kb3V0Z29pbmcgYXJndW1l bnQuDQorCUNBTEwJZXhpdAkJCS8vIGV4aXQgd2l0aCBtYWluJ3MgcmV0dXJuDQp2YWx1ZQ0KKwkv LyBEb2VzIG5vdCByZXR1cm4gaGVyZS4NCisNCisJLmRhdGENCisJLy8gIE1hcmsgYXJnYy9hcmd2 L2VudnAgcGFyYW1ldGVycyBhcyB3ZWFrIHNvIHRoYXQgYW4gZXh0ZXJuYWwNCisJLy8gIG9iamVj dCBmaWxlIGNhbiBvdmVycmlkZSB0aGVtLg0KKwkud2Vhawlfc3RhcnRfYXJnYywgX3N0YXJ0X2Fy Z3YsIF9zdGFydF9lbnZwDQorCS5hbGlnbgk0DQorX3N0YXJ0X2FyZ3Y6DQorCS53b3JkCV9zdGFy dF9udWxsCS8vIGVtcHR5IHByb2dyYW0gbmFtZQ0KK19zdGFydF9udWxsOg0KK19zdGFydF9lbnZw Og0KKwkud29yZAkwCQkvLyBlbmQgb2YgYXJndiBhcnJheSwgZW1wdHkgc3RyaW5nLA0KZW1wdHkg ZW52aXJvbg0KK19zdGFydF9hcmdjOg0KKwkud29yZAkxCQkvLyBvbmUgYXJndW1lbnQgKHByb2dy YW0gbmFtZSkNCisJLnRleHQNCisNCisJLnNpemUJX3N0YXJ0LCAuIC0gX3N0YXJ0DQorDQpkaWZm IC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2NydDEtc2ltLlMgYi9saWJnbG9zcy94dGVuc2EvY3J0 MS1zaW0uUw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uYTQ2ZGI3MjY4 DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvY3J0MS1zaW0uUw0KQEAgLTAs MCArMSwyMDQgQEANCisvLyBjcnQxLXNpbS5TDQorLy8gRm9yIHRoZSBYdGVuc2Egc2ltdWxhdG9y IHRhcmdldCwgdGhpcyBjb2RlIHNldHMgdXAgdGhlIEMgY2FsbGluZw0KY29udGV4dA0KKy8vIGFu ZCBjYWxscyBtYWluKCkgICh2aWEgX19jbGlicmFyeV9zdGFydCkuDQorLy8gQ29udHJvbCBhcnJp dmVzIGhlcmUgYXQgX3N0YXJ0IGZyb20gdGhlIHJlc2V0IHZlY3RvciBvciBmcm9tIGNydDAtDQph cHAuUy4NCisNCisvLyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMiBUZW5zaWxpY2EgSW5jLg0KKy8v DQorLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24NCm9idGFpbmluZw0KKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0KKy8vICJTb2Z0d2FyZSIpLCB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcNCisvLyB3aXRo b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsDQorLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvDQorLy8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0DQp0bw0KKy8vIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoNCisvLw0KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlDQppbmNsdWRlZA0KKy8vIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KKy8vDQorLy8gVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsDQorLy8gRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GDQorLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQNCk5PTklORlJJTkdFTUVOVC4NCisvLyBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SDQpBTlkN CisvLyBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GDQpDT05UUkFDVCwNCisvLyBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0KKy8vIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKw0KKyNpbmNsdWRlIDxzeXNjYWxs cy5oPg0KKyNpbmNsdWRlIDx4dGVuc2EvY29yZWJpdHMuaD4NCisjaW5jbHVkZSA8eHRlbnNhL2Nv bmZpZy9jb3JlLWlzYS5oPg0KKw0KKy8vIEV4cG9ydHMNCisuZ2xvYmFsIF9zdGFydA0KKw0KKy8v IEltcG9ydHMNCisvLyAgIF9fY2xpYnJhcnlfaW5pdAlmcm9tIEMgbGlicmFyeSAoZWcuIG5ld2xp YiBvciB1Y2xpYmMpDQorLy8gICBleGl0CQlmcm9tIEMgbGlicmFyeQ0KKy8vICAgbWFpbgkJZnJv bSB1c2VyIGFwcGxpY2F0aW9uDQorLy8gICBfX3N0YWNrCQlmcm9tIGxpbmtlciBzY3JpcHQgKHNl ZSBMU1AgUmVmIE1hbnVhbCkNCisNCisudHlwZQlfX2NsaWJyYXJ5X2luaXQsIEBmdW5jdGlvbg0K Ky50eXBlCW1haW4sIEBmdW5jdGlvbg0KKy50eXBlCWV4aXQsIEBmdW5jdGlvbg0KKw0KKyMgZGVm aW5lIENBTEwJY2FsbDQNCisjIGRlZmluZSBDQUxMWAljYWxseDQNCisjIGRlZmluZSBBUkcxCWE2 CS8qIDFzdCBvdXRnb2luZyBjYWxsIGFyZ3VtZW50ICovDQorIyBkZWZpbmUgQVJHMglhNwkvKiAy bmQgb3V0Z29pbmcgY2FsbCBhcmd1bWVudCAqLw0KKyMgZGVmaW5lIEFSRzMJYTgJLyogM3JkIG91 dGdvaW5nIGNhbGwgYXJndW1lbnQgKi8NCisjIGRlZmluZSBBUkc0CWE5CS8qIDR0aCBvdXRnb2lu ZyBjYWxsIGFyZ3VtZW50ICovDQorIyBkZWZpbmUgQVJHNQlhMTAJLyogNXRoIG91dGdvaW5nIGNh bGwgYXJndW1lbnQgKi8NCisNCisJCS5kYXRhDQorCQkud2Vhawlfc3RhcnRfZW52cAkvLyBhbGxv dyBvdmVycmlkaW5nDQorCQkuYWxpZ24JNA0KK19zdGFydF9lbnZwOgkud29yZAkwCQkvLyBlbXB0 eSBlbnZpcm9uDQorDQorCS50ZXh0DQorCS5hbGlnbiA0DQorDQorX3N0YXJ0Og0KKwkvLyAgX3N0 YXJ0IGlzIHR5cGljYWxseSBOT1QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dA0Kc2VnbWVu dCAtLQ0KKwkvLyAgaXQgaXMgYWx3YXlzIGNhbGxlZCBmcm9tIGVpdGhlciB0aGUgcmVzZXQgdmVj dG9yIG9yIG90aGVyDQpjb2RlDQorCS8vICB0aGF0IGRvZXMgZXF1aXZhbGVudCBpbml0aWFsaXph dGlvbiAoc3VjaCBhcyBjcnQwLWFwcC5TKS4NCisJLy8NCisJLy8gIEFzc3VtcHRpb25zIG9uIGVu dHJ5IHRvIF9zdGFydDoNCisJLy8JLSBsb3cgKGxldmVsLW9uZSkgYW5kIG1lZGl1bSBwcmlvcml0 eSBpbnRlcnJ1cHRzIGFyZQ0KZGlzYWJsZWQNCisJLy8JICB2aWEgUFMuSU5UTEVWRUwgYW5kL29y IElOVEVOQUJMRSAoUFMuSU5UTEVWRUwgaXMNCmV4cGVjdGVkIHRvDQorCS8vCSAgYmUgemVyb2Vk LCB0byBwb3RlbnRpYWxseSBlbmFibGUgdGhlbSwgYmVmb3JlDQpjYWxsaW5nIG1haW4pDQorCS8v CS0gQyBjYWxsaW5nIGNvbnRleHQgbm90IGluaXRpYWxpemVkOg0KKwkvLwkgIC0gUFMgbm90IGlu aXRpYWxpemVkDQorCS8vCSAgLSBTUCBub3QgaW5pdGlhbGl6ZWQNCisJLy8JLSB0aGUgZm9sbG93 aW5nIGFyZSBpbml0aWFsaXplZDoNCisJLy8JICAtIExJVEJBU0UsIGNhY2hlIGF0dHJpYnV0ZXMs IFdpbmRvd0Jhc2UsDQpXaW5kb3dTdGFydCwNCisJLy8JICAgIENQRU5BQkxFLCBGUCdzIEZDUiBh bmQgRlNSLCBFWENTQVZFW25dDQorDQorCS8vIEtlZXAgYTAgemVyby4gIEl0IGlzIHVzZWQgdG8g aW5pdGlhbGl6ZSBhIGZldyB0aGluZ3MuDQorCS8vIEl0IGlzIGFsc28gdGhlIHJldHVybiBhZGRy ZXNzLCB3aGVyZSB6ZXJvIGluZGljYXRlcw0KKwkvLyB0aGF0IHRoZSBmcmFtZSB1c2VkIGJ5IF9z dGFydCBpcyB0aGUgYm90dG9tbW9zdCBmcmFtZS4NCisJLy8NCisJbW92aQlhMCwgMAkJLy8ga2Vl cCB0aGlzIHJlZ2lzdGVyIHplcm8uDQorDQorCXdzcglhMCwgSU5URU5BQkxFCS8vIElOVEVOQUJM RSB2YWx1ZSBpcyBub3QgZGVmaW5lZA0KYWZ0ZXIgcmVzZXQuDQorCQkJCS8vbWFrZSBzdXJlIHRo YXQgaW50ZXJydXB0cyBhcmUgc2h1dA0Kb2ZmICgqYmVmb3JlKiB3ZSBsb3dlciBQUy5JTlRMRVZF TCBhbmQgUFMuRVhDTSEpDQorDQorCS8vICBXaW5kb3dlZCByZWdpc3RlciBpbml0LCBzbyB3ZSBj YW4gY2FsbCB3aW5kb3dlZCBjb2RlIChlZy4NCkMgY29kZSkuDQorCW1vdmkJYTEsIDENCisJd3Ny CWExLCBXSU5ET1dTVEFSVA0KKwkvLyAgVGhlIHByb2Nlc3NvciBhbHdheXMgY2xlYXJzIFdJTkRP V0JBU0UgYXQgcmVzZXQsIHNvIG5vDQpuZWVkIHRvIGNsZWFyIGl0IGhlcmUuDQorCS8vICBJdCBy ZXNldHMgV0lORE9XU1RBUlQgdG8gMSBzdGFydGluZyB3aXRoIExYMi4wL1g3LjAgKFJCLQ0KMjAw Ni4wKS4NCisJLy8gIEhvd2V2ZXIsIGFzc3VtaW5nIGhhcmQgcmVzZXQgaXMgbm90IHlldCBhbHdh eXMgcHJhY3RpY2FsLA0Kc28gZG8gdGhpcyBhbnl3YXk6DQorCXdzcglhMCwgV0lORE9XQkFTRQ0K Kwlyc3luYw0KKw0KKwkvLyBTZXQgVkVDQkFTRSB0byB1c2Ugb3VyIHZlY3RvcnMgaW5zdGVhZCB2 ZWN0b3JzIGluIFJPTQ0KKwltb3ZpCWExLCBfdmVjdG9yX3RhYmxlDQorCXdzcglhMSwgVkVDQkFT RQ0KKw0KKw0KKwkvLyBSdW4gb25seSBvbmUgY29yZQ0KKwkvLyBNdWx0aS10aHJlYWRpbmcgY291 bGQgYmUgc3VwcG9ydGVkIGluIGZ1dHVyZQ0KKwlyc3IucHJpZCBhMQkJLy8gY29yZSBhbmQgbXVs dGlwcm9jZXNzb3IgSUQNCisJZXh0dWkJYTEsIGExLCAxMywgMQkvLyBleHRyYWN0IGNvcmUgSUQN CisJYmVxeglhMSwgLkxjb3JlMAkvLyBnb3RvIExjb3JlMCBmb3IgY29yZTAgb25seQ0KKy5Mc3Vz cGVuZDoJCQkvLyBvdGhlciBjb3JlcyBhcmUgc3VzcGVuZGVkDQorCXdhaXRpCTANCisJagkuTHN1 c3BlbmQNCisNCisuTGNvcmUwOg0KKwkvLyBJbml0aWFsaXplIHRoZSBzdGFjayBwb2ludGVyLg0K KwkvLyBTZWUgdGhlICJBQkkgYW5kIFNvZnR3YXJlIENvbnZlbnRpb25zIiBjaGFwdGVyIGluIHRo ZQ0KKwkvLyBYdGVuc2EgSVNBIFJlZmVyZW5jZSBtYW51YWwgZm9yIGRldGFpbHMuDQorDQorCS8v IE5PVEU6IEJlY2F1c2UgdGhlIF9zdGFydCByb3V0aW5lIGRvZXMgbm90IHVzZSBhbnkgbWVtb3J5 IGluDQppdHMNCisJLy8gc3RhY2sgZnJhbWUsIGFuZCBiZWNhdXNlIGFsbCBvZiBpdHMgQ0FMTCBp bnN0cnVjdGlvbnMgdXNlIGENCisJLy8gd2luZG93IHNpemUgb2YgNCwgdGhlIHN0YWNrIGZyYW1l IGZvciBfc3RhcnQgY2FuIGJlIGVtcHR5Lg0KKwltb3ZpCXNwLCBfX3N0YWNrDQorDQorCS8vIHJl c2VydmUgc3RhY2sgc3BhY2UgZm9yDQorCS8vICAgIC0gYXJndiBhcnJheQ0KKwkvLyAgICAtIGFy Z3VtZW50IHN0cmluZ3MNCisJbW92aQlhMiwgU1lTX2FyZ3Zfc2l6ZQ0KKwlzaW1jYWxsCQkvLyBy ZXR1cm5zIHNpemUgb2YgYXJndltdICsgaXRzDQpzdHJpbmdzIGluIGEyDQorDQorCS8vIFRoZSBz dGFjayBvbmx5IG5lZWRzIDE2LWJ5dGUgYWxpZ25tZW50Lg0KKwkvLyBIb3dldmVyLCBoZXJlIHdl IHJvdW5kIHVwIHRoZSBhcmd2IHNpemUgZnVydGhlciB0byAxMjggYnl0ZQ0KbXVsdGlwbGVzDQor CS8vIHNvIHRoYXQgaW4gbW9zdCBjYXNlcywgdmFyaWF0aW9ucyBpbiBhcmd2WzBdJ3MgcGF0aCBk byBub3QNCnJlc3VsdCBpbg0KKwkvLyBkaWZmZXJlbnQgc3RhY2sgYWxsb2NhdGlvbi4gIE90aGVy d2lzZSwgc3VjaCB2YXJpYXRpb25zIGNhbg0KaW1wYWN0DQorCS8vIGV4ZWN1dGlvbiB0aW1pbmcg KGVnLiBkdWUgdG8gY2FjaGUgZWZmZWN0cyBldGMpIGZvciB0aGUNCnNhbWUgY29kZSBhbmQgZGF0 YS4NCisJLy8gSWYgd2UgaGF2ZSBhIFBJRiwgaXQncyBtb3JlIGxpa2VseSB0aGUgZXh0cmEgcmVx dWlyZWQgc3BhY2UNCmlzIG9rYXkuDQorCWFkZGkJYTIsIGEyLCAxMjcNCisJc3JsaQlhMiwgYTIs IDcNCisJc2xsaQlhMiwgYTIsIDcNCisNCisJLy8gTm8gbmVlZCB0byB1c2UgTU9WU1AgYmVjYXVz ZSB3ZSBoYXZlIG5vIGNhbGxlciAod2UncmUgdGhlDQorCS8vIGJhc2UgY2FsbGVyKTsgaW4gZmFj dCBpdCdzIGJldHRlciBub3QgdG8gdXNlIE1PVlNQIGluIHRoaXMNCisJLy8gY29udGV4dCwgdG8g YXZvaWQgdW5uZWNlc3NhcnkgQUxMT0NBIGV4Y2VwdGlvbnMgYW5kIGNvcHlpbmcNCisJLy8gZnJv bSB1bmRlZmluZWQgbWVtb3J5Og0KKwkvLyAgIHN1YiAgICAgYTMsIHNwLCBhMg0KKwkvLyAgIG1v dnNwICAgc3AsIGEzDQorCXN1YglzcCwgc3AsIGEyDQorDQorCS8qDQorCSAqICBOb3cgdGhhdCBz cCAoYTEpIGlzIHNldCwgd2UgY2FuIHNldCBQUyBhcyBwZXIgdGhlDQphcHBsaWNhdGlvbg0KKwkg KiAgKHVzZXIgdmVjdG9yIG1vZGUsIGVuYWJsZSBpbnRlcnJ1cHRzLCBlbmFibGUgd2luZG93DQpl eGNlcHRpb25zIGlmIGFwcGxpY2FibGUpLg0KKwkgKi8NCisJbW92aQlhMywgUFNfVU18UFNfV09F CS8vIFBTLldPRSA9IDEsIFBTLlVNID0gMSwNClBTLkVYQ00gPSAwLCBQUy5JTlRMRVZFTCA9IDAN CisJd3NyCWEzLCBQUw0KKwlyc3luYw0KKw0KKwkjaWYgWENIQUxfSEFWRV9GUCB8fCBYQ0hBTF9I QVZFX0RGUA0KKwltb3ZpCWEzLCAxDQorCXdzcglhMywgQ1BFTkFCTEUNCisJI2VuZGlmDQorDQor MToNCisNCisJLyoNCisJICogIENsZWFyIHRoZSBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkgc2Vn bWVudHMuDQorCSAqICBUaGlzIGNvZGUgc3VwcG9ydHMgbXVsdGlwbGUgemVyb2VkIHNlY3Rpb25z ICgqLmJzcykuDQorCSAqICBGb3Igc3BlZWQsIHdlIGNsZWFyIG1lbW9yeSB1c2luZyBhbiBJU1Mg c2ltY2FsbA0KKwkgKiAgKHNlZSBjcnQxLWJvYXJkcy5TIGZvciBtb3JlIGdlbmVyaWMgQlNTIGNs ZWFyaW5nIGNvZGUpLg0KKwkgKi8NCisJbW92aQlhNiwgX19ic3Nfc3RhcnQNCisJbW92aQlhNywg X2VuZA0KKwliZ2V1CWE2LCBhNywgLkxub2Jzcw0KKy5MYnNzbG9vcDoNCisJbW92aQlhMiwgU1lT X21lbXNldA0KKwlsMzJpCWEzLCBhNiwgMAkvLyBhcmcxID0gZmlsbCBzdGFydCBhZGRyZXNzDQor CW1vdmkJYTQsIDAJCS8vIGFyZzIgPSBmaWxsIHBhdHRlcm4NCisJbDMyaQlhNSwgYTYsIDQJLy8g Z2V0IGVuZCBhZGRyZXNzDQorCWFkZGkJYTYsIGE2LCA4CS8vIG5leHQgYnNzIHRhYmxlIGVudHJ5 DQorCXN1YglhNSwgYTUsIGEzCS8vIGFyZzMgPSBmaWxsIHNpemUgaW4gYnl0ZXMNCisJc2ltY2Fs bAkJCS8vIG1lbXNldChhMyxhNCxhNSkNCisJYmx0dQlhNiwgYTcsIC5MYnNzbG9vcAkvLyBsb29w IHVudGlsIGVuZCBvZiBic3MgdGFibGUNCisuTG5vYnNzOg0KKw0KKwkvKiBuZWVkIHRvIGluaXQg cmVlbnRfcyBiZWZvcmUgZW50ZXJpbmcgZXhpdCAqLw0KKwlDQUxMCV9faW5pdHJlZW50DQorDQor CW1vdglhMywgc3AJCQkvLyB0ZWxsIHNpbWNhbGwgd2hlcmUgdG8gd3JpdGUNCmFyZ3ZbXQ0KKwlt b3ZpCWEyLCBTWVNfYXJndg0KKwlzaW1jYWxsCQkJLy8gd3JpdGUgYXJndltdIGFycmF5IGF0IGEz DQorDQorCW1vdmkJYTIsIFNZU19hcmdjDQorCXNpbWNhbGwJCQkvLyBwdXQgYXJnYyBpbiBhMg0K Kw0KKwkud2VhawlfaW5pdA0KKwkud2VhawlfZmluaQ0KKwltb3YJQVJHMiwgc3AJCS8vIGFyZ3YN CisJbW92aQlBUkczLCBfc3RhcnRfZW52cAkvLyBlbnZwDQorCW1vdmkJQVJHNCwgX2luaXQJCS8v IF9pbml0DQorCW1vdmkJQVJHNSwgX2ZpbmkJCS8vIF9maW5pDQorCUNBTEwJX19jbGlicmFyeV9p bml0DQorDQorCW1vdglBUkcxLCBhMgkJLy8gYXJnYw0KKwltb3YJQVJHMiwgc3AJCS8vIGFyZ3YN CisJQ0FMTAltYWluDQorDQorCS8vICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBzYW1lIHJlZ2lz dGVyIGFzIHRoZSBmaXJzdA0Kb3V0Z29pbmcgYXJndW1lbnQuDQorCUNBTEwJZXhpdAkJCS8vIGV4 aXQgd2l0aCBtYWluJ3MgcmV0dXJuDQp2YWx1ZQ0KKwkvLyBEb2VzIG5vdCByZXR1cm4gaGVyZS4N CisNCisJLnNpemUJX3N0YXJ0LCAuIC0gX3N0YXJ0DQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3Mv eHRlbnNhL2RlZmF1bHQuc3BlY3MNCmIvbGliZ2xvc3MveHRlbnNhL2RlZmF1bHQuc3BlY3MNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjYwMDJmZTQ1MA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2RlZmF1bHQuc3BlY3MNCkBAIC0wLDAgKzEsMiBA QA0KKypsaWI6DQorLWxjIC1sbm9zeXMgLWxjDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNh L2luY2x1ZGUvcmVnaXN0ZXJfYWNjZXNzLmgNCmIvbGliZ2xvc3MveHRlbnNhL2luY2x1ZGUvcmVn aXN0ZXJfYWNjZXNzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmNj MDYwNjE4ZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2luY2x1ZGUvcmVn aXN0ZXJfYWNjZXNzLmgNCkBAIC0wLDAgKzEsNyBAQA0KKyNpZm5kZWYgUkVHSVNURVJfQUNDRVNT X0gNCisjZGVmaW5lIFJFR0lTVEVSX0FDQ0VTU19IDQorDQorI2RlZmluZSBXUklURV9SRUdJU1RF UihhZGRyLCB2YWwpICgqKCh2b2xhdGlsZSB1aW50MzJfdCAqKShhZGRyKSkpID0NCih1aW50MzJf dCkodmFsKQ0KKyNkZWZpbmUgUkVBRF9SRUdJU1RFUihhZGRyKSAoKigodm9sYXRpbGUgdWludDMy X3QgKikoYWRkcikpKQ0KKw0KKyNlbmRpZiAvLyBSRUdJU1RFUl9BQ0NFU1NfSA0KZGlmZiAtLWdp dCBhL2xpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3N5c2NhbGxzLmgNCmIvbGliZ2xvc3MveHRlbnNh L2luY2x1ZGUvc3lzY2FsbHMuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MC4uZGQyOTdkOTZlDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvaW5jbHVk ZS9zeXNjYWxscy5oDQpAQCAtMCwwICsxLDU5IEBADQorI2lmbmRlZiBYVEVOU0FfU0lNQ0FMTF9I DQorI2RlZmluZSBYVEVOU0FfU0lNQ0FMTF9IDQorDQorI2lmZGVmIE9QRU5PQ0RfU0VNSUhPU1RJ TkcNCisvKiBUaGlzIGRhdGEgYmFzZWQgb24gbGliZ2xvc3MgcHJvamVjdCAoZmlsZSBhYXJjaDY0 L3N2Yy5oKSAqLw0KKw0KKyNkZWZpbmUgRVNQX1NFTUlIT1NUSU5HX1NZU19EUlZfSU5GTyAweDEw MA0KKyNkZWZpbmUgQURQX1NUT1BQRURfQVBQTElDQVRJT05fRVhJVCAweDIwMDI2DQorDQorI2Rl ZmluZSBTWVNfY2xvc2UJMHgwMg0KKyNkZWZpbmUgU1lTX2Nsb2NrCTB4MTANCisjZGVmaW5lIFNZ U19lbGFwc2VkCTB4MzANCisjZGVmaW5lIFNZU19lcnJubwkweDEzDQorI2RlZmluZSBTWVNfZXhp dAkweDE4DQorI2RlZmluZSBTWVNfZXhpdF9leHRlbmRlZAkweDIwDQorI2RlZmluZSBTWVNfZmxl bgkweDBDDQorI2RlZmluZSBTWVNfZ2V0X2NtZGxpbmUJMHgxNQ0KKyNkZWZpbmUgU1lTX2hlYXBp bmZvCTB4MTYNCisjZGVmaW5lIFNZU19pc2Vycm9yCTB4MDgNCisjZGVmaW5lIFNZU19pc3R0eQkw eDA5DQorI2RlZmluZSBTWVNfb3BlbgkweDAxDQorI2RlZmluZSBTWVNfcmVhZAkweDA2DQorI2Rl ZmluZSBTWVNfcmVhZGMJMHgwNw0KKyNkZWZpbmUgU1lTX3JlbW92ZQkweDBFDQorI2RlZmluZSBT WVNfcmVuYW1lCTB4MEYNCisjZGVmaW5lIFNZU19sc2VlawkweDBBDQorI2RlZmluZSBTWVNfc3lz dGVtCTB4MTINCisjZGVmaW5lIFNZU190aWNrZnJlcQkweDMxDQorI2RlZmluZSBTWVNfdGltZQkw eDExDQorI2RlZmluZSBTWVNfdG1wbmFtCTB4MEQNCisjZGVmaW5lIFNZU193cml0ZQkweDA1DQor I2RlZmluZSBTWVNfd3JpdGVjCTB4MDMNCisjZGVmaW5lIFNZU193cml0ZTAJMHgwNA0KKw0KKyNl bHNlDQorDQorLyogVGhpcyBkYXRhIGJhc2VkIG9uIFFFTVUgcHJvamVjdCAoZmlsZSB0YXJnZXQv eHRlbnNhL3h0ZW5zYS1zZW1pLmMpDQoqLw0KKw0KKyNkZWZpbmUgU1lTX2V4aXQJMQ0KKyNkZWZp bmUgU1lTX3JlYWQJMw0KKyNkZWZpbmUgU1lTX3dyaXRlCTQNCisjZGVmaW5lIFNZU19vcGVuCTUN CisjZGVmaW5lIFNZU19jbG9zZQk2DQorI2RlZmluZSBTWVNfbHNlZWsJMTkNCisjZGVmaW5lIFNZ U19zZWxlY3Rfb25lCTI5DQorI2RlZmluZSBTWVNfc2VuZHRvCTI3DQorI2RlZmluZSBTWVNfcmVj dmZyb20JMjgNCisjZGVmaW5lIFNZU19zZWxlY3Rfb25lIDI5DQorI2RlZmluZSBTWVNfYmluZAkz MA0KKyNkZWZpbmUgU1lTX2lvY3RsCTMxDQorDQorI2RlZmluZSBTWVNfYXJnYwkxMDAwDQorI2Rl ZmluZSBTWVNfYXJndl9zaXplCTEwMDENCisjZGVmaW5lIFNZU19hcmd2CTEwMDINCisjZGVmaW5l IFNZU19tZW1zZXQJMTAwNA0KKw0KKyNlbmRpZiAvKiBPUEVOT0NEX1NFTUlIT1NUSU5HICovDQor DQorI2VuZGlmIC8qICFYVEVOU0FfU0lNQ0FMTF9IICovDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3Mv eHRlbnNhL2luY2x1ZGUveHRlbnNhL2NvcmViaXRzLmgNCmIvbGliZ2xvc3MveHRlbnNhL2luY2x1 ZGUveHRlbnNhL2NvcmViaXRzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAuLjQ0NWUzMzQ5NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2luY2x1 ZGUveHRlbnNhL2NvcmViaXRzLmgNCkBAIC0wLDAgKzEsMTg2IEBADQorLyoNCisgKiB4dGVuc2Ev Y29yZWJpdHMuaCAtIFh0ZW5zYSBTcGVjaWFsIFJlZ2lzdGVyIGZpZWxkIHBvc2l0aW9ucywgbWFz a3MsDQp2YWx1ZXMuDQorICoNCisgKiAoSW4gcHJldmlvdXMgcmVsZWFzZXMsIHRoZXNlIHdlcmUg ZGVmaW5lZCBpbiBzcGVjcmVnLmgsIGEgZ2VuZXJhdGVkDQpmaWxlLg0KKyAqICBUaGlzIGZpbGUg aXMgbm90IGdlbmVyYXRlZCwgaWUuIGl0IGlzIHByb2Nlc3NvciBjb25maWd1cmF0aW9uDQppbmRl cGVuZGVudC4pDQorICovDQorDQorLyogJElkOiAvL2RlcG90L3JlbC9FYWdsZW5lc3QvWHRlbnNh L09TL2luY2x1ZGUveHRlbnNhL2NvcmViaXRzLmgjMiAkDQoqLw0KKw0KKy8qDQorICogQ29weXJp Z2h0IChjKSAyMDA1LTIwMTEgVGVuc2lsaWNhIEluYy4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uDQpvYnRhaW5pbmcN CisgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUNCisgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nDQorICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0KKyAqIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 bw0KKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdA0KdG8NCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoN CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZQ0KaW5jbHVkZWQNCisgKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELA0KKyAqIEVYUFJFU1MgT1Ig SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0K KyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E DQpOT05JTkZSSU5HRU1FTlQuDQorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUg0KQU5ZDQorICogQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRg0KQ09OVFJBQ1QsDQor ICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUNCisgKiBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4NCisgKi8NCisNCisjaWZuZGVmIFhURU5TQV9DT1JFQklUU19IDQorI2Rl ZmluZSBYVEVOU0FfQ09SRUJJVFNfSA0KKw0KKy8qICBFWENDQVVTRSByZWdpc3RlciBmaWVsZHM6 ICAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfRVhDQ0FVU0VfU0hJRlQJMA0KKyNkZWZpbmUgRVhDQ0FV U0VfRVhDQ0FVU0VfTUFTSwkweDNGDQorLyogIEVYQ0NBVVNFIHJlZ2lzdGVyIHZhbHVlczogICov DQorLyoNCisgKiAgR2VuZXJhbCBFeGNlcHRpb24gQ2F1c2VzDQorICogICh2YWx1ZXMgb2YgRVhD Q0FVU0Ugc3BlY2lhbCByZWdpc3RlciBzZXQgYnkgZ2VuZXJhbCBleGNlcHRpb25zLA0KKyAqICAg d2hpY2ggdmVjdG9yIHRvIHRoZSB1c2VyLCBrZXJuZWwsIG9yIGRvdWJsZS1leGNlcHRpb24gdmVj dG9ycykuDQorICovDQorI2RlZmluZSBFWENDQVVTRV9JTExFR0FMCQkwCS8qIElsbGVnYWwgSW5z dHJ1Y3Rpb24NCiovDQorI2RlZmluZSBFWENDQVVTRV9TWVNDQUxMCQkxCS8qIFN5c3RlbSBDYWxs DQooU1lTQ0FMTCBpbnN0cnVjdGlvbikgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0lOU1RSX0VSUk9S CQkyCS8qIEluc3RydWN0aW9uIEZldGNoDQpFcnJvciAqLw0KKyMgZGVmaW5lIEVYQ0NBVVNFX0lG RVRDSEVSUk9SCQkyCS8qIChiYWNrd2FyZA0KY29tcGF0aWJpbGl0eSBtYWNybywgZGVwcmVjYXRl ZCwgYXZvaWQpICovDQorI2RlZmluZSBFWENDQVVTRV9MT0FEX1NUT1JFX0VSUk9SCTMJLyogTG9h ZCBTdG9yZSBFcnJvciAqLw0KKyMgZGVmaW5lIEVYQ0NBVVNFX0xPQURTVE9SRUVSUk9SCTMJLyog KGJhY2t3YXJkDQpjb21wYXRpYmlsaXR5IG1hY3JvLCBkZXByZWNhdGVkLCBhdm9pZCkgKi8NCisj ZGVmaW5lIEVYQ0NBVVNFX0xFVkVMMV9JTlRFUlJVUFQJNAkvKiBMZXZlbCAxIEludGVycnVwdA0K Ki8NCisjIGRlZmluZSBFWENDQVVTRV9MRVZFTDFJTlRFUlJVUFQJNAkvKiAoYmFja3dhcmQNCmNv bXBhdGliaWxpdHkgbWFjcm8sIGRlcHJlY2F0ZWQsIGF2b2lkKSAqLw0KKyNkZWZpbmUgRVhDQ0FV U0VfQUxMT0NBCQkJNQkvKiBTdGFjaw0KRXh0ZW5zaW9uIEFzc2lzdCAoTU9WU1AgaW5zdHJ1Y3Rp b24pIGZvciBhbGxvY2EgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0RJVklERV9CWV9aRVJPCQk2CS8q IEludGVnZXINCkRpdmlkZSBieSBaZXJvICovDQorI2RlZmluZSBFWENDQVVTRV9TUEVDVUxBVElP TgkJNwkvKiBVc2Ugb2YgRmFpbGVkDQpTcGVjdWxhdGl2ZSBBY2Nlc3MgKG5vdCBpbXBsZW1lbnRl ZCkgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX1BSSVZJTEVHRUQJCTgJLyogUHJpdmlsZWdlZA0KSW5z dHJ1Y3Rpb24gKi8NCisjZGVmaW5lIEVYQ0NBVVNFX1VOQUxJR05FRAkJOQkvKiBVbmFsaWduZWQg TG9hZCBvcg0KU3RvcmUgKi8NCisvKiBSZXNlcnZlZAkJCQkxMC4uMTEgKi8NCisjZGVmaW5lIEVY Q0NBVVNFX0lOU1RSX0RBVEFfRVJST1IJMTIJLyogUElGIERhdGEgRXJyb3Igb24NCkluc3RydWN0 aW9uIEZldGNoIChSQi0yMDB4IGFuZCBsYXRlcikgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0xPQURf U1RPUkVfREFUQV9FUlJPUgkxMwkvKiBQSUYgRGF0YSBFcnJvciBvbg0KTG9hZCBvciBTdG9yZSAo UkItMjAweCBhbmQgbGF0ZXIpICovDQorI2RlZmluZSBFWENDQVVTRV9JTlNUUl9BRERSX0VSUk9S CTE0CS8qIFBJRiBBZGRyZXNzIEVycm9yDQpvbiBJbnN0cnVjdGlvbiBGZXRjaCAoUkItMjAweCBh bmQgbGF0ZXIpICovDQorI2RlZmluZSBFWENDQVVTRV9MT0FEX1NUT1JFX0FERFJfRVJST1IJMTUJ LyogUElGIEFkZHJlc3MgRXJyb3INCm9uIExvYWQgb3IgU3RvcmUgKFJCLTIwMHggYW5kIGxhdGVy KSAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfSVRMQl9NSVNTCQkxNgkvKiBJVExCIE1pc3MgKG5vIElU TEINCmVudHJ5IG1hdGNoZXMsIGh3IHJlZmlsbCBhbHNvIG1pc3NlZCkgKi8NCisjZGVmaW5lIEVY Q0NBVVNFX0lUTEJfTVVMVElISVQJCTE3CS8qIElUTEIgTXVsdGloaXQNCihtdWx0aXBsZSBJVExC IGVudHJpZXMgbWF0Y2gpICovDQorI2RlZmluZSBFWENDQVVTRV9JTlNUUl9SSU5HCQkxOAkvKiBS aW5nIFByaXZpbGVnZQ0KVmlvbGF0aW9uIG9uIEluc3RydWN0aW9uIEZldGNoICovDQorLyogUmVz ZXJ2ZWQJCQkJMTkgKi8JLyogU2l6ZSBSZXN0cmljdGlvbiBvbg0KSUZldGNoIChub3QgaW1wbGVt ZW50ZWQpICovDQorI2RlZmluZSBFWENDQVVTRV9JTlNUUl9QUk9ISUJJVEVECTIwCS8qIENhY2hl IEF0dHJpYnV0ZQ0KZG9lcyBub3QgYWxsb3cgSW5zdHJ1Y3Rpb24gRmV0Y2ggKi8NCisvKiBSZXNl cnZlZAkJCQkyMS4uMjMgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0RUTEJfTUlTUwkJMjQJLyogRFRM QiBNaXNzIChubyBEVExCDQplbnRyeSBtYXRjaGVzLCBodyByZWZpbGwgYWxzbyBtaXNzZWQpICov DQorI2RlZmluZSBFWENDQVVTRV9EVExCX01VTFRJSElUCQkyNQkvKiBEVExCIE11bHRpaGl0DQoo bXVsdGlwbGUgRFRMQiBlbnRyaWVzIG1hdGNoKSAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfTE9BRF9T VE9SRV9SSU5HCTI2CS8qIFJpbmcgUHJpdmlsZWdlDQpWaW9sYXRpb24gb24gTG9hZCBvciBTdG9y ZSAqLw0KKy8qIFJlc2VydmVkCQkJCTI3ICovCS8qIFNpemUgUmVzdHJpY3Rpb24gb24NCkxvYWQv U3RvcmUgKG5vdCBpbXBsZW1lbnRlZCkgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0xPQURfUFJPSElC SVRFRAkyOAkvKiBDYWNoZSBBdHRyaWJ1dGUNCmRvZXMgbm90IGFsbG93IExvYWQgKi8NCisjZGVm aW5lIEVYQ0NBVVNFX1NUT1JFX1BST0hJQklURUQJMjkJLyogQ2FjaGUgQXR0cmlidXRlDQpkb2Vz IG5vdCBhbGxvdyBTdG9yZSAqLw0KKy8qIFJlc2VydmVkCQkJCTMwLi4zMSAqLw0KKyNkZWZpbmUg RVhDQ0FVU0VfQ1BfRElTQUJMRUQobikJCSgzMisobikpCS8qDQpBY2Nlc3MgdG8gQ29wcm9jZXNz b3IgJ24nIHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQMF9ESVNBQkxFRAkJ MzIJLyogQWNjZXNzIHRvDQpDb3Byb2Nlc3NvciAwIHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5l IEVYQ0NBVVNFX0NQMV9ESVNBQkxFRAkJMzMJLyogQWNjZXNzIHRvDQpDb3Byb2Nlc3NvciAxIHdo ZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQMl9ESVNBQkxFRAkJMzQJLyogQWNj ZXNzIHRvDQpDb3Byb2Nlc3NvciAyIHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNF X0NQM19ESVNBQkxFRAkJMzUJLyogQWNjZXNzIHRvDQpDb3Byb2Nlc3NvciAzIHdoZW4gZGlzYWJs ZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQNF9ESVNBQkxFRAkJMzYJLyogQWNjZXNzIHRvDQpD b3Byb2Nlc3NvciA0IHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQNV9ESVNB QkxFRAkJMzcJLyogQWNjZXNzIHRvDQpDb3Byb2Nlc3NvciA1IHdoZW4gZGlzYWJsZWQgKi8NCisj ZGVmaW5lIEVYQ0NBVVNFX0NQNl9ESVNBQkxFRAkJMzgJLyogQWNjZXNzIHRvDQpDb3Byb2Nlc3Nv ciA2IHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQN19ESVNBQkxFRAkJMzkJ LyogQWNjZXNzIHRvDQpDb3Byb2Nlc3NvciA3IHdoZW4gZGlzYWJsZWQgKi8NCisvKiBSZXNlcnZl ZAkJCQk0MC4uNjMgKi8NCisNCisvKiAgUFMgcmVnaXN0ZXIgZmllbGRzOiAgKi8NCisjZGVmaW5l IFBTX1dPRV9TSElGVAkJMTgNCisjZGVmaW5lIFBTX1dPRV9NQVNLCQkweDAwMDQwMDAwDQorI2Rl ZmluZSBQU19XT0UJCQlQU19XT0VfTUFTSw0KKyNkZWZpbmUgUFNfV09FX0FCSSAJCVBTX1dPRV9N QVNLDQorI2RlZmluZSBQU19DQUxMSU5DX1NISUZUCTE2DQorI2RlZmluZSBQU19DQUxMSU5DX01B U0sJCTB4MDAwMzAwMDANCisjZGVmaW5lIFBTX0NBTExJTkMobikJCSgoKG4pJjMpPDxQU19DQUxM SU5DX1NISUZUKQkvKiBuID0NCjAuLjMgKi8NCisjZGVmaW5lIFBTX09XQl9TSElGVAkJOA0KKyNk ZWZpbmUgUFNfT1dCX01BU0sJCTB4MDAwMDBGMDANCisjZGVmaW5lIFBTX09XQihuKQkJKCgobikm MTUpPDxQU19PV0JfU0hJRlQpCS8qIG4gPQ0KMC4uMTUgKG9yIDAuLjcpICovDQorI2RlZmluZSBQ U19SSU5HX1NISUZUCQk2DQorI2RlZmluZSBQU19SSU5HX01BU0sJCTB4MDAwMDAwQzANCisjZGVm aW5lIFBTX1JJTkcobikJCSgoKG4pJjMpPDxQU19SSU5HX1NISUZUKQkvKiBuID0NCjAuLjMgKi8N CisjZGVmaW5lIFBTX1VNX1NISUZUCQk1DQorI2RlZmluZSBQU19VTV9NQVNLCQkweDAwMDAwMDIw DQorI2RlZmluZSBQU19VTQkJCVBTX1VNX01BU0sNCisjZGVmaW5lIFBTX0VYQ01fU0hJRlQJCTQN CisjZGVmaW5lIFBTX0VYQ01fTUFTSwkJMHgwMDAwMDAxMA0KKyNkZWZpbmUgUFNfRVhDTQkJCVBT X0VYQ01fTUFTSw0KKyNkZWZpbmUgUFNfSU5UTEVWRUxfU0hJRlQJMA0KKyNkZWZpbmUgUFNfSU5U TEVWRUxfTUFTSwkweDAwMDAwMDBGDQorI2RlZmluZSBQU19JTlRMRVZFTChuKQkJKChuKSZQU19J TlRMRVZFTF9NQVNLKQkJLyogbiA9DQowLi4xNSAqLw0KKy8qICBCYWNrd2FyZCBjb21wYXRpYmls aXR5IChkZXByZWNhdGVkKTogICovDQorI2RlZmluZSBQU19QUk9HU1RBQ0tfU0hJRlQJUFNfVU1f U0hJRlQNCisjZGVmaW5lIFBTX1BST0dTVEFDS19NQVNLCVBTX1VNX01BU0sNCisjZGVmaW5lIFBT X1BST0dfU0hJRlQJCVBTX1VNX1NISUZUDQorI2RlZmluZSBQU19QUk9HX01BU0sJCVBTX1VNX01B U0sNCisjZGVmaW5lIFBTX1BST0cJCQlQU19VTQ0KKw0KKy8qICBEQlJFQUtDbiByZWdpc3RlciBm aWVsZHM6ICAqLw0KKyNkZWZpbmUgREJSRUFLQ19NQVNLX1NISUZUCQkwDQorI2RlZmluZSBEQlJF QUtDX01BU0tfTUFTSwkJMHgwMDAwMDAzRg0KKyNkZWZpbmUgREJSRUFLQ19MT0FEQlJFQUtfU0hJ RlQJCTMwDQorI2RlZmluZSBEQlJFQUtDX0xPQURCUkVBS19NQVNLCQkweDQwMDAwMDAwDQorI2Rl ZmluZSBEQlJFQUtDX1NUT1JFQlJFQUtfU0hJRlQJMzENCisjZGVmaW5lIERCUkVBS0NfU1RPUkVC UkVBS19NQVNLCQkweDgwMDAwMDAwDQorDQorLyogIERFQlVHQ0FVU0UgcmVnaXN0ZXIgZmllbGRz OiAgKi8NCisjZGVmaW5lIERFQlVHQ0FVU0VfREVCVUdJTlRfU0hJRlQJNQ0KKyNkZWZpbmUgREVC VUdDQVVTRV9ERUJVR0lOVF9NQVNLCTB4MjAJLyogZGVidWcgaW50ZXJydXB0ICovDQorI2RlZmlu ZSBERUJVR0NBVVNFX0JSRUFLTl9TSElGVAkJNA0KKyNkZWZpbmUgREVCVUdDQVVTRV9CUkVBS05f TUFTSwkJMHgxMAkvKiBCUkVBSy5OIGluc3RydWN0aW9uDQoqLw0KKyNkZWZpbmUgREVCVUdDQVVT RV9CUkVBS19TSElGVAkJMw0KKyNkZWZpbmUgREVCVUdDQVVTRV9CUkVBS19NQVNLCQkweDA4CS8q IEJSRUFLIGluc3RydWN0aW9uDQoqLw0KKyNkZWZpbmUgREVCVUdDQVVTRV9EQlJFQUtfU0hJRlQJ CTINCisjZGVmaW5lIERFQlVHQ0FVU0VfREJSRUFLX01BU0sJCTB4MDQJLyogREJSRUFLIG1hdGNo ICovDQorI2RlZmluZSBERUJVR0NBVVNFX0lCUkVBS19TSElGVAkJMQ0KKyNkZWZpbmUgREVCVUdD QVVTRV9JQlJFQUtfTUFTSwkJMHgwMgkvKiBJQlJFQUsgbWF0Y2ggKi8NCisjZGVmaW5lIERFQlVH Q0FVU0VfSUNPVU5UX1NISUZUCQkwDQorI2RlZmluZSBERUJVR0NBVVNFX0lDT1VOVF9NQVNLCQkw eDAxCS8qIElDT1VOVCB3b3VsZA0KaW5jcmVtZW50IHRvIHplcm8gKi8NCisNCisvKiAgTUVTUiBy ZWdpc3RlciBmaWVsZHM6ICAqLw0KKyNkZWZpbmUgTUVTUl9NRU1FCQkweDAwMDAwMDAxCS8qIG1l bW9yeSBlcnJvciAqLw0KKyNkZWZpbmUgTUVTUl9NRU1FX1NISUZUCQkwDQorI2RlZmluZSBNRVNS X0RNRQkJMHgwMDAwMDAwMgkvKiBkb3VibGUgbWVtb3J5IGVycm9yDQoqLw0KKyNkZWZpbmUgTUVT Ul9ETUVfU0hJRlQJCTENCisjZGVmaW5lIE1FU1JfUkNFCQkweDAwMDAwMDEwCS8qIHJlY29yZGVk IG1lbW9yeQ0KZXJyb3IgKi8NCisjZGVmaW5lIE1FU1JfUkNFX1NISUZUCQk0DQorI2RlZmluZSBN RVNSX0xDRQ0KKyNkZWZpbmUgTUVTUl9MQ0VfU0hJRlQJCT8NCisjZGVmaW5lIE1FU1JfTENFX0wN CisjZGVmaW5lIE1FU1JfRVJSRU5BQgkJMHgwMDAwMDEwMA0KKyNkZWZpbmUgTUVTUl9FUlJFTkFC X1NISUZUCTgNCisjZGVmaW5lIE1FU1JfRVJSVEVTVAkJMHgwMDAwMDIwMA0KKyNkZWZpbmUgTUVT Ul9FUlJURVNUX1NISUZUCTkNCisjZGVmaW5lIE1FU1JfREFURVhDCQkweDAwMDAwNDAwDQorI2Rl ZmluZSBNRVNSX0RBVEVYQ19TSElGVAkxMA0KKyNkZWZpbmUgTUVTUl9JTlNFWEMJCTB4MDAwMDA4 MDANCisjZGVmaW5lIE1FU1JfSU5TRVhDX1NISUZUCTExDQorI2RlZmluZSBNRVNSX1dBWU5VTV9T SElGVAkxNg0KKyNkZWZpbmUgTUVTUl9BQ0NUWVBFX1NISUZUCTIwDQorI2RlZmluZSBNRVNSX01F TVRZUEVfU0hJRlQJMjQNCisjZGVmaW5lIE1FU1JfRVJSVFlQRV9TSElGVAkzMA0KKw0KKy8qICBN RU1DVEwgcmVnaXN0ZXIgZmllbGRzOiAgKi8NCisjZGVmaW5lIE1FTUNUTF9TTk9PUF9FTl9TSElG VAkxDQorI2RlZmluZSBNRU1DVExfU05PT1BfRU4JCTB4MDIJLyogZW5hYmxlIHNub29wDQpyZXNw b25zZXMgKGRlZmF1bHQgMCkgKi8NCisjZGVmaW5lIE1FTUNUTF9MMElCVUZfRU5fU0hJRlQJMA0K KyNkZWZpbmUgTUVNQ1RMX0wwSUJVRl9FTgkweDAxCS8qIGVuYWJsZSBsb29wIGluc3RyLiBidWZm ZXINCihkZWZhdWx0IDEpICovDQorI2RlZmluZSBNRU1DVExfSU5WX0VOX1NISUZUCTIzDQorI2Rl ZmluZSBNRU1DVExfSU5WX0VOCQkweDAwODAwMDAwCS8qIGludmFsaWRhdGUgY2FjaGUNCndheXMg YmVpbmcgaW5jcmVhc2VkICovDQorI2RlZmluZSBNRU1DVExfRENXVV9TSElGVAk4DQorI2RlZmlu ZSBNRU1DVExfRENXVV9CSVRTCTUNCisjZGVmaW5lIE1FTUNUTF9EQ1dBX1NISUZUCTEzDQorI2Rl ZmluZSBNRU1DVExfRENXQV9CSVRTCTUNCisjZGVmaW5lIE1FTUNUTF9JQ1dVX1NISUZUCTE4DQor I2RlZmluZSBNRU1DVExfSUNXVV9CSVRTCTUNCisjZGVmaW5lIE1FTUNUTF9EQ1dVX01BU0sJMHgw MDAwMUYwMAkvKiBCaXRzICA4LTEyIGRjYWNoZQ0Kd2F5cyBpbiB1c2UgKi8NCisjZGVmaW5lIE1F TUNUTF9EQ1dBX01BU0sJMHgwMDAzRTAwMAkvKiBCaXRzIDEzLTE3IGRjYWNoZQ0Kd2F5cyBhbGxv Y2F0YWJsZSAqLw0KKyNkZWZpbmUgTUVNQ1RMX0lDV1VfTUFTSwkweDAwN0MwMDAwCS8qIEJpdHMg MTgtMjIgaWNhY2hlDQp3YXlzIGluIHVzZSAqLw0KKyNkZWZpbmUgTUVNQ1RMX0RDV1VfQ0xSX01B U0sJfihNRU1DVExfRENXVV9NQVNLKQ0KKyNkZWZpbmUgTUVNQ1RMX0RDV0FfQ0xSX01BU0sJfihN RU1DVExfRENXQV9NQVNLKQ0KKyNkZWZpbmUgTUVNQ1RMX0lDV1VfQ0xSX01BU0sJfihNRU1DVExf SUNXVV9NQVNLKQ0KKyNkZWZpbmUgTUVNQ1RMX0RDV19DTFJfTUFTSwkoTUVNQ1RMX0RDV1VfQ0xS X01BU0sgfA0KTUVNQ1RMX0RDV0FfQ0xSX01BU0spDQorI2RlZmluZSBNRU1DVExfSURDV19DTFJf TUFTSwkoTUVNQ1RMX0RDV19DTFJfTUFTSyB8DQpNRU1DVExfSUNXVV9DTFJfTUFTSykNCisNCisN CisjZW5kaWYgLypYVEVOU0FfQ09SRUJJVFNfSCovDQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3Mv eHRlbnNhL21haW4uYyBiL2xpYmdsb3NzL3h0ZW5zYS9tYWluLmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAuLjUxYjc2ZGYwZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGli Z2xvc3MveHRlbnNhL21haW4uYw0KQEAgLTAsMCArMSwxMCBAQA0KKyNpbmNsdWRlIDxzdGRpby5o Pg0KK2ludCBhYWEodm9pZCkNCit7DQorICByZXR1cm4gcmFuZCgpOw0KK30NCisNCisNCitpbnQg YmJiKCkgew0KKyAgcmV0dXJuIGFhYSgpICsgMTA7DQorfQ0KZGlmZiAtLWdpdCBhL2xpYmdsb3Nz L3h0ZW5zYS9uYW5vLnNwZWNzIGIvbGliZ2xvc3MveHRlbnNhL25hbm8uc3BlY3MNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmFkZjdhYmJhZg0KLS0tIC9kZXYvbnVsbA0K KysrIGIvbGliZ2xvc3MveHRlbnNhL25hbm8uc3BlY3MNCkBAIC0wLDAgKzEsMTggQEANCislcmVu YW1lIGxpbmsgICAgICAgICAgICAgICAgbmFub19saW5rDQorJXJlbmFtZSBsaW5rX2djY19jX3Nl cXVlbmNlICAgICAgICAgICAgICAgIG5hbm9fbGlua19nY2NfY19zZXF1ZW5jZQ0KKw0KKypuYW5v X2xpYmM6DQorLWxjX25hbm8NCisNCisqbmFub19saWJnbG9zczoNCisle3NwZWNzPW5vc3lzLnNw ZWNzOi1sbm9zeXN9DQorDQorKmxpbmtfZ2NjX2Nfc2VxdWVuY2U6DQorJShuYW5vX2xpbmtfZ2Nj X2Nfc2VxdWVuY2UpIC0tc3RhcnQtZ3JvdXAgJUcgJShuYW5vX2xpYmMpDQolKG5hbm9fbGliZ2xv c3MpIC0tZW5kLWdyb3VwDQorDQorKmxpbms6DQorJShuYW5vX2xpbmspICU6cmVwbGFjZS1vdXRm aWxlKC1sYyAtbGNfbmFubykgJTpyZXBsYWNlLW91dGZpbGUoLWxnIC0NCmxnX25hbm8pICU6cmVw bGFjZS1vdXRmaWxlKC1sbSAtbG1fbmFubykNCisNCisqbGliOg0KKyV7IXNoYXJlZDole2cqOi1s Z19uYW5vfSAleyFwOiV7IXBnOi1sY19uYW5vfX0le3A6LWxjX3B9JXtwZzotbGNfcH19DQorDQpk aWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL3NpbS1jYWxsLlMgYi9saWJnbG9zcy94dGVuc2Ev c2ltLWNhbGwuUw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNGI0OTNj Mjk2DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2Evc2ltLWNhbGwuUw0KQEAg LTAsMCArMSw4IEBADQorDQorCS50eXBlCV9fc2ltX2NhbGwsIEBmdW5jdGlvbg0KKwkuYWxpZ24J NA0KKwkuZ2xvYmFsIF9fc2ltX2NhbGwNCitfX3NpbV9jYWxsOg0KKwllbnRyeQlhMSwgMzINCisJ c2ltY2FsbA0KKwlyZXR3DQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL3NpbS12ZWN0b3Jz LlMgYi9saWJnbG9zcy94dGVuc2Evc2ltLQ0KdmVjdG9ycy5TDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwLi45MzY3NTNhNmQNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmds b3NzL3h0ZW5zYS9zaW0tdmVjdG9ycy5TDQpAQCAtMCwwICsxLDE2MyBAQA0KKyNpbmNsdWRlIDx4 dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+DQorI2luY2x1ZGUgPHN5c2NhbGxzLmg+DQorDQorLy8j ZGVmaW5lIFBTX09XQl9TSElGVCA4DQorLy8jZGVmaW5lIFBTX09XQl9CSVRTIDQNCisvLyNkZWZp bmUgRVhDQ0FVU0VfQUxMT0NBCQkJNQkvKiBTdGFjaw0KRXh0ZW5zaW9uIEFzc2lzdCAoTU9WU1Ag aW5zdHJ1Y3Rpb24pIGZvciBhbGxvY2EgKi8NCisNCisjaWYgWENIQUxfSEFWRV9MMzJSDQorICAg IC5zZWN0aW9uIC5yb2RhdGENCitfc2ltX3BhbmljX21zZzoNCisgICAgLmFzY2lpICJQQU5JQzog VW5oYW5kbGVkIGV4Y2VwdGlvbiFcbiINCisJX3NpbV9wYW5pY19tc2dfbGVuID0gLiAtIF9zaW1f cGFuaWNfbXNnDQorDQorICAgIC5zZWN0aW9uIC50ZXh0DQorICAgIC5saXRlcmFsIC5McGFuaWNf bXNnLCBfc2ltX3BhbmljX21zZw0KKyAgICAubGl0ZXJhbCAuTHBhbmljX21zZ19sZW4sIF9zaW1f cGFuaWNfbXNnX2xlbg0KKyAgICAuYWxpZ24gICAgICA0DQorX3h0X3VuaGFuZGxlZF9leGM6DQor ICAgIG1vdmkgYTIsIFNZU193cml0ZQ0KKyAgICBtb3ZpIGEzLCAyDQorICAgIGwzMnIgYTQsIC5M cGFuaWNfbXNnDQorICAgIGwzMnIgYTUsIC5McGFuaWNfbXNnX2xlbg0KKyAgICBzaW1jYWxsDQor I2Vsc2UNCitfeHRfdW5oYW5kbGVkX2V4YzoNCisjZW5kaWYNCisgICAgbW92aSBhMiwgU1lTX2V4 aXQNCisgICAgbW92aSBhMywgMQ0KKyAgICBzaW1jYWxsDQorDQorLyoNCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQotLS0tLS0tLS0tDQorSGFuZGxlIGFsbG9jYSBleGNlcHRpb24gZ2VuZXJhdGVkIGJ5IGludGVy cnVwdGVlIGV4ZWN1dGluZyAnbW92c3AnLg0KK1RoaXMgdXNlcyBzcGFjZSBiZXR3ZWVuIHRoZSB3 aW5kb3cgdmVjdG9ycywgc28gaXMgZXNzZW50aWFsbHkgImZyZWUiLg0KK0FsbCBpbnRlcnJ1cHRl ZSdzIHJlZ3MgYXJlIGludGFjdCBleGNlcHQgYTAgd2hpY2ggaXMgc2F2ZWQgaW4NCkVYQ1NBVkVf MSwNCithbmQgUFMuRVhDTSBoYXMgYmVlbiBzZXQgYnkgdGhlIGV4Y2VwdGlvbiBoYXJkd2FyZSAo Y2FuJ3QgYmUNCmludGVycnVwdGVkKS4NCitUaGUgZmFjdCB0aGUgYWxsb2NhIGV4Y2VwdGlvbiB3 YXMgdGFrZW4gbWVhbnMgdGhlIHJlZ2lzdGVycyBhc3NvY2lhdGVkDQp3aXRoDQordGhlIGJhc2Ut c2F2ZSBhcmVhIGhhdmUgYmVlbiBzcGlsbGVkIGFuZCB3aWxsIGJlIHJlc3RvcmVkIGJ5IHRoZQ0K dW5kZXJmbG93DQoraGFuZGxlciwgc28gdGhvc2UgNCByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBm b3Igc2NyYXRjaC4NCitUaGUgY29kZSBpcyBvcHRpbWl6ZWQgdG8gYXZvaWQgdW5hbGlnbmVkIGJy YW5jaGVzIGFuZCBtaW5pbWl6ZSBjYWNoZQ0KbWlzc2VzLg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0t LS0tLS0NCisqLw0KKw0KKyAgICAjaWYgWENIQUxfSEFWRV9XSU5ET1dFRA0KKyAgICAuc2VjdGlv biAudGV4dA0KKyAgICAuZ2xvYmFsIF94dF9hbGxvY2FfZXhjDQorICAgIC5hbGlnbiAgNA0KK194 dF9hbGxvY2FfZXhjOg0KKw0KKyAgICByc3IgICAgIGEwLCBXSU5ET1dCQVNFICAvKiBncmFiIFdJ TkRPV0JBU0UgYmVmb3JlIHJvdHcgY2hhbmdlcyBpdA0KKi8NCisgICAgcm90dyAgICAtMSAgICAg ICAgICAgICAgLyogV0lORE9XQkFTRSBnb2VzIHRvIGE0LCBuZXcgYTAtYTMgYXJlDQpzY3JhdGNo ICovDQorICAgIHJzciAgICAgYTIsIFBTDQorICAgIGV4dHVpICAgYTMsIGEyLCA4LypQU19PV0Jf QklUUyovLCA0LypQU19PV0JfQklUUyovDQorICAgIHhvciAgICAgYTMsIGEzLCBhNCAgICAgIC8q IGJpdHMgY2hhbmdlZCBmcm9tIG9sZCB0byBjdXJyZW50DQp3aW5kb3diYXNlICovDQorICAgIHJz ciAgICAgYTQsIEVYQ1NBVkUxICAgLyogcmVzdG9yZSBvcmlnaW5hbCBhMCAobm93IGluIGE0KSAq Lw0KKyAgICBzbGxpICAgIGEzLCBhMywgOA0KKyAgICB4b3IgICAgIGEyLCBhMiwgYTMgICAgICAv KiBmbGlwIGNoYW5nZWQgYml0cyBpbiBvbGQgd2luZG93IGJhc2UgKi8NCisgICAgd3NyICAgICBh MiwgUFMgICAgICAgICAgLyogdXBkYXRlIFBTLk9XQiB0byBuZXcgd2luZG93IGJhc2UgKi8NCisg ICAgcnN5bmMNCisNCisgICAgYmJjaS5sIGE0LCAzMSwgX1dpbmRvd1VuZGVyZmxvdzQNCisgICAg cm90dyAgICAtMSAgICAgICAgICAgICAgLyogb3JpZ2luYWwgYTAgZ29lcyB0byBhOCAqLw0KKyAg ICBiYmNpLmwgYTgsIDMwLCBfV2luZG93VW5kZXJmbG93OA0KKyAgICByb3R3ICAgIC0xDQorICAg IGogICAgICAgICAgICAgICBfV2luZG93VW5kZXJmbG93MTINCisgICAgI2VuZGlmDQorDQorDQor LyoNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tLS0tLS0tDQorICBVc2VyIGV4Y2VwdGlvbiBoYW5kbGVy Lg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCi0tLS0tLS0tLS0NCisqLw0KKw0KKyAgICAjaWYgWENIQUxfSEFW RV9XSU5ET1dFRA0KKyAgICAuc2VjdGlvbiAudGV4dA0KKyAgICAuYWxpZ24gICAgICA0DQorX3h0 X3RvX2FsbG9jYV9leGM6DQorICAgIGogICBfeHRfYWxsb2NhX2V4YyAgICAgICAgICAgICAgICAg IC8qIGluIHdpbmRvdyB2ZWN0b3JzIHNlY3Rpb24NCiovDQorICAgICNlbmRpZg0KKw0KKyAgICAu dHlwZSAgICAgICBfeHRfdXNlcl9leGMsQGZ1bmN0aW9uDQorICAgIC5hbGlnbiAgICAgIDQNCitf eHRfdXNlcl9leGM6DQorDQorICAgIHJzciAgICAgYTAsIEVYQ0NBVVNFDQorICAgIC8qIEhhbmRs ZSBhbGxvY2EgYW5kIHN5c2NhbGwgZXhjZXB0aW9ucyAqLw0KKyAgICAjaWYgWENIQUxfSEFWRV9X SU5ET1dFRA0KKyAgICBiZXFpICAgIGEwLCA1LypFWENDQVVTRV9BTExPQ0EqLywgIF94dF90b19h bGxvY2FfZXhjDQorICAgICNlbmRpZg0KKyAgICBqIF94dF91bmhhbmRsZWRfZXhjDQorDQorDQor LyoNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQotLS0tLS0tLS0tDQorTk1JIEV4Y2VwdGlvbg0KKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCi0tLS0tLS0tLS0NCisqLw0KKw0KKyAgICAuYmVnaW4gICAgICBsaXRlcmFsX3ByZWZp eCAuTk1JRXhjZXB0aW9uVmVjdG9yDQorICAgIC5zZWN0aW9uICAgIC5OTUlFeGNlcHRpb25WZWN0 b3IudGV4dCwgImF4Ig0KKyAgICAuZ2xvYmFsICAgICBOTUlFeGNlcHRpb25WZWN0b3INCisgICAg LnR5cGUgICAgICAgTk1JRXhjZXB0aW9uVmVjdG9yLEBmdW5jdGlvbg0KKyAgICAuYWxpZ24gICAg ICA0DQorDQorTk1JRXhjZXB0aW9uVmVjdG9yOg0KKyAgICBqICAgX3h0X3VuaGFuZGxlZF9leGMN CisNCisgICAgLmVuZCAgICAgICAgbGl0ZXJhbF9wcmVmaXgNCisNCisvKg0KKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi0tLS0tLS0tLS0NCitLZXJuZWwgRXhjZXB0aW9uDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLS0t LS0tLQ0KKyovDQorDQorICAgIC5iZWdpbiAgICAgIGxpdGVyYWxfcHJlZml4IC5LZXJuZWxFeGNl cHRpb25WZWN0b3INCisgICAgLnNlY3Rpb24gICAgLktlcm5lbEV4Y2VwdGlvblZlY3Rvci50ZXh0 LCAiYXgiDQorICAgIC5nbG9iYWwgICAgIEtlcm5lbEV4Y2VwdGlvblZlY3Rvcg0KKyAgICAudHlw ZSAgICAgICBLZXJuZWxFeGNlcHRpb25WZWN0b3IsQGZ1bmN0aW9uDQorICAgIC5hbGlnbiAgICAg IDQNCisNCitLZXJuZWxFeGNlcHRpb25WZWN0b3I6DQorICAgIGogICBfeHRfdW5oYW5kbGVkX2V4 Yw0KKw0KKyAgICAuZW5kICAgICAgICBsaXRlcmFsX3ByZWZpeA0KKw0KKy8qDQorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KLS0tLS0tLS0tLQ0KK1VzZXIgRXhjZXB0aW9uDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tLS0t LS0tLQ0KKyovDQorDQorICAgIC5iZWdpbiAgICAgIGxpdGVyYWxfcHJlZml4IC5Vc2VyRXhjZXB0 aW9uVmVjdG9yDQorICAgIC5zZWN0aW9uICAgIC5Vc2VyRXhjZXB0aW9uVmVjdG9yLnRleHQsICJh eCINCisgICAgLmdsb2JhbCAgICAgX1VzZXJFeGNlcHRpb25WZWN0b3INCisgICAgLnR5cGUgICAg ICAgX1VzZXJFeGNlcHRpb25WZWN0b3IsQGZ1bmN0aW9uDQorICAgIC5hbGlnbiAgICAgIDQNCisN CitfVXNlckV4Y2VwdGlvblZlY3RvcjoNCisNCisgICAgd3NyICAgICBhMCwgRVhDU0FWRTEgICAg ICAgICAgICAgICAgICAgLyogcHJlc2VydmUgYTAgKi8NCisgICAgaiAgIF94dF91c2VyX2V4YyAg ICAgICAgICAgICAgICAgICAgLyogdXNlciBleGNlcHRpb24gaGFuZGxlciAqLw0KKyAgICAvKiBu ZXZlciByZXR1cm5zIGhlcmUgLSBjYWxsMCBpcyB1c2VkIGFzIGEganVtcCAoc2VlIG5vdGUgYXQg dG9wKQ0KKi8NCisNCisgICAgLmVuZCAgICAgICAgbGl0ZXJhbF9wcmVmaXgNCisNCisvKg0KKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCi0tLS0tLS0tLS0NCitEb3VibGUgRXhjZXB0aW9uDQorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KLS0tLS0tLS0tLQ0KKyovDQorDQorICAgIC5iZWdpbiAgICAgIGxpdGVyYWxfcHJlZml4IC5E b3VibGVFeGNlcHRpb25WZWN0b3INCisgICAgLnNlY3Rpb24gICAgLkRvdWJsZUV4Y2VwdGlvblZl Y3Rvci50ZXh0LCAiYXgiDQorICAgIC5nbG9iYWwgICAgIERvdWJsZUV4Y2VwdGlvblZlY3Rvcg0K KyAgICAudHlwZSAgICAgICBEb3VibGVFeGNlcHRpb25WZWN0b3IsQGZ1bmN0aW9uDQorICAgIC5h bGlnbiAgICAgIDQNCisNCitEb3VibGVFeGNlcHRpb25WZWN0b3I6DQorICAgIGogICBfeHRfdW5o YW5kbGVkX2V4Yw0KKw0KKyAgICAuZW5kICAgICAgICBsaXRlcmFsX3ByZWZpeA0KZGlmZiAtLWdp dCBhL2xpYmdsb3NzL3h0ZW5zYS9zaW0uZWxmLnNwZWNzDQpiL2xpYmdsb3NzL3h0ZW5zYS9zaW0u ZWxmLnNwZWNzDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi4zMDI0ZjY4 ODcNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9zaW0uZWxmLnNwZWNzDQpA QCAtMCwwICsxLDUgQEANCisqc3RhcnRmaWxlOg0KK2NydDEtc2ltJU8lcw0KKw0KKypsaWI6DQor LWxjIC0td2hvbGUtYXJjaGl2ZSAtbGdsb3NzIC0tbm8td2hvbGUtYXJjaGl2ZSAtbHB0aHJlYWRf c3R1YnMgLWxjDQolVG1lbW9yeS5lbGYubGQgJVRhcHAuZWxmLmxkDQpkaWZmIC0tZ2l0IGEvbGli Z2xvc3MveHRlbnNhL3NsZWVwLlMgYi9saWJnbG9zcy94dGVuc2Evc2xlZXAuUw0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNDEzY2U5Mjg4DQotLS0gL2Rldi9udWxsDQor KysgYi9saWJnbG9zcy94dGVuc2Evc2xlZXAuUw0KQEAgLTAsMCArMSw2NCBAQA0KKyNpbmNsdWRl IDxzb2MvY3B1Lmg+DQorDQorI2RlZmluZSBVU0VDT05EU19JTl9TRUNPTkQgMTAwMDAwMA0KKw0K KwkudHlwZQlzbGVlcCwgQGZ1bmN0aW9uDQorCS5hbGlnbgk0DQorCS5nbG9iYWwgc2xlZXANCitz bGVlcDoNCisJZW50cnkJYTEsIDB4MzANCisJbW92Lm4JYTcsIGExDQorCXMzMmkubglhMiwgYTcs IDANCisNCisJbW92CWEzLCBhMg0KKy5Mc2xlZXBfZGVsYXlfc2Vjb25kOg0KKwlhZGRpCWEzLCBh MywgLTENCisJbW92aQlhMTAsIFVTRUNPTkRTX0lOX1NFQ09ORA0KKwljYWxsOAl1c2xlZXANCisJ Ym5leglhMywgLkxzbGVlcF9kZWxheV9zZWNvbmQNCisNCisuTHNsZWVwX2V4aXQ6DQorCXMzMmku bglhMiwgYTcsIDANCisJcmV0dw0KKw0KKw0KKwkudHlwZQl1c2xlZXAsIEBmdW5jdGlvbg0KKwku YWxpZ24JNA0KKwkuZ2xvYmFsIHVzbGVlcA0KK3VzbGVlcDoNCisJZW50cnkJYTEsIDB4MzANCisJ bW92Lm4JYTcsIGExDQorCXMzMmkubglhMiwgYTcsIDANCisNCisJLyogY29udmVydCB0aW1lIHRv IENMT0NLIHRpY2tzIHBlciAxdXMgKi8NCisJbW92aQlhNiwgQ1BVX0ZSRVFVRU5DWV9NSFogLy8g Q1BVX0ZSRVFVRU5DWV9NSFogPT0gdGlja3MNCnBlciB1cw0KKwltdWxsCWEyLCBhMiwgYTYNCisN CisJLyoNCisJICogUmVnaXN0ZXJzIHB1cnBvc2U6DQorCSAqICAgYTMgLSBzdGFydCBDQ09VTlQg dmFsdWUNCisJICogICBhNCAtIGN1cnJlbnQgQ0NPVU5UIHZhbHVlDQorCSAqICAgYTUgLSB0YXJn ZXQgQ0NPVU5UIHZhbHVlDQorCSAqLw0KKw0KKwlyc3IJYTMsIENDT1VOVA0KKwlhZGQJYTUsIGEz LCBhMg0KKwliZ2V1CWE1LCBhMywgLkx1c2xlZXBfd2FpdGxvb3ANCisNCisuTHVzbGVlcF93YWl0 b3ZlcmZsb3c6DQorCS8qIHlvdSBhcmUgaGVyZSBiZWNhdXNlIGE1ICh0YXJnZXQgQ0NPVU5UKSB3 YXMgb3ZlcmZsb3duDQorCSAqIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IENDT1VOVCBy ZWdpc3RlciBvdmVyZmxvdw0KKwkgKiBiZWZvcmUgZG8gbWFpbiBsb29wDQorCSAqLw0KKwlyc3IJ YTQsIENDT1VOVA0KKwliZ2V1CWE0LCBhMywgLkx1c2xlZXBfd2FpdG92ZXJmbG93DQorDQorLkx1 c2xlZXBfd2FpdGxvb3A6DQorCS8qIHdhaXQgdW50aWwgd2UgcmVhY2ggdGFyZ2V0IENDT1VOVCB2 YWx1ZSAqLw0KKwlyc3IJYTQsIENDT1VOVA0KKwliZ2V1CWE0LCBhNSwgLkx1c2xlZXBfZXhpdA0K KwlqCS5MdXNsZWVwX3dhaXRsb29wDQorLkx1c2xlZXBfZXhpdDoNCisJczMyaS5uCWEyLCBhNywg MA0KKwlyZXR3DQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL3N5cy5vcGVub2NkLnNw ZWNzDQpiL2xpYmdsb3NzL3h0ZW5zYS9zeXMub3Blbm9jZC5zcGVjcw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNDU3MzE4NDI0DQotLS0gL2Rldi9udWxsDQorKysgYi9s aWJnbG9zcy94dGVuc2Evc3lzLm9wZW5vY2Quc3BlY3MNCkBAIC0wLDAgKzEsOCBAQA0KKyVyZW5h bWUgbGlua19nY2NfY19zZXF1ZW5jZSAgICBvcGVub2NkX2xpbmtfZ2NjX2Nfc2VxdWVuY2UNCisN CisqbGlib3Blbm9jZDoNCistLXdob2xlLWFyY2hpdmUgLWxzeXNfb3Blbm9jZCAtLW5vLXdob2xl LWFyY2hpdmUNCisNCisqbGlua19nY2NfY19zZXF1ZW5jZToNCislKG9wZW5vY2RfbGlua19nY2Nf Y19zZXF1ZW5jZSkgLS1zdGFydC1ncm91cCAlRyAlKGxpYm9wZW5vY2QpIC0tZW5kLQ0KZ3JvdXAN CisNCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2Evc3lzLnFlbXUuc3BlY3MNCmIvbGliZ2xv c3MveHRlbnNhL3N5cy5xZW11LnNwZWNzDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAwLi41MTg1YzA0ODANCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9z eXMucWVtdS5zcGVjcw0KQEAgLTAsMCArMSw4IEBADQorJXJlbmFtZSBsaW5rX2djY19jX3NlcXVl bmNlICAgIHFlbXVfbGlua19nY2NfY19zZXF1ZW5jZQ0KKw0KKypsaWJxZW11Og0KKy0td2hvbGUt YXJjaGl2ZSAtbHN5c19xZW11IC0tbm8td2hvbGUtYXJjaGl2ZQ0KKw0KKypsaW5rX2djY19jX3Nl cXVlbmNlOg0KKyUocWVtdV9saW5rX2djY19jX3NlcXVlbmNlKSAtLXN0YXJ0LWdyb3VwICVHICUo bGlicWVtdSkgLS1lbmQtZ3JvdXANCisNCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2Evc3lz Y2FsbHMuYyBiL2xpYmdsb3NzL3h0ZW5zYS9zeXNjYWxscy5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwLi5lNzE5NzM0YzcNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmds b3NzL3h0ZW5zYS9zeXNjYWxscy5jDQpAQCAtMCwwICsxLDIyNiBAQA0KKyNpbmNsdWRlIDx1bmlz dGQuaD4NCisjaW5jbHVkZSA8c3lzY2FsbHMuaD4NCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4NCisj aW5jbHVkZSA8c29jL3VhcnQuaD4NCisNCisjaWYgZGVmaW5lZCAoT1BFTk9DRF9TRU1JSE9TVElO RykgfHwgKFFFTVVfU0VNSUhPU1RJTkcpDQorIyBkZWZpbmUgV0lUSF9TRU1JSE9TVElORw0KKyMg ZGVmaW5lIF9fV0VBS19GVU5DVElPTl9BVFRSX18NCisjZWxzZQ0KKyMgZGVmaW5lIF9fV0VBS19G VU5DVElPTl9BVFRSX18gX19hdHRyaWJ1dGVfXygoX193ZWFrX18pKQ0KKyNlbmRpZg0KKw0KKw0K Ky8qIF9fc2VtaWhvc3RpbmdfY2FsbCBpcyBhIGZ1bmN0aW9uIGluIGNhc2Ugc2VtaWhvc3Rpbmcg dXNhZ2UsIG1hY3JvDQooLTEpIG90aGVyd2lzZSAqLw0KKyNpZmRlZiBXSVRIX1NFTUlIT1NUSU5H DQorDQorc3RhdGljIGlubGluZSBpbnQNCitfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkp DQorX19zZW1paG9zdGluZ19jYWxsKGludCBpZCwgaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJn MywgaW50IGFyZzQpDQorew0KKyMgaWZkZWYgT1BFTk9DRF9TRU1JSE9TVElORw0KKyAgICByZWdp c3RlciBsb25nIGEyIGFzbSgiYTIiKSA9IGlkOw0KKyAgICBsb25nIGFyZ3NbXSA9IHthcmcxLCBh cmcyLCBhcmczLCBhcmc0fTsNCisgICAgcmVnaXN0ZXIgbG9uZyBhMyBhc20oImEzIikgPSAobG9u ZykmYXJnczsNCisNCisgICAgLyogT3Blbk9DRCBoYXMgZGlmZmVyZW50IHNlbWlob3N0aW5nIGFw aSBmb3Igc3lzX2V4aXQgb24gMzItYml0DQphbmQgNjQtYml0ICovDQorICAgIGlmIChpZCA9PSBT WVNfZXhpdCAmJiBzaXplb2Yodm9pZCAqKSAhPSA4KSB7DQorICAgICAgICBhMyA9IEFEUF9TVE9Q UEVEX0FQUExJQ0FUSU9OX0VYSVQ7DQorICAgIH0NCisgICAgX19hc21fXyAgX192b2xhdGlsZV9f ICgNCisgICAgICAgICJicmVhayAxLCAxNFxuIg0KKyAgICAgICAgOiAiK3IiKGEyKTogInIiKGEz KQ0KKyAgICAgICAgOiAibWVtb3J5Iik7DQorDQorICAgIC8vIHJldHVybiBjb2RlIGlzIHBsYWNl ZCBpbiBhMiByZWdpc3Rlciwgc28gcmV0dXJuIGl0IHRvIHRoZQ0KY2FsbGVyDQorICAgIHJldHVy biBhMjsNCisjIGVsc2UgLy8gT1BFTk9DRF9TRU1JSE9TVElORw0KKyAgICBleHRlcm4gaW50IF9f c2ltX2NhbGwoaW50IGlkLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLCBpbnQNCmFyZzQp Ow0KKyAgICByZXR1cm4gX19zaW1fY2FsbChpZCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7DQor IyBlbmRpZiAvLyBPUEVOT0NEX1NFTUlIT1NUSU5HDQorfQ0KKw0KKyMgaWZkZWYgT1BFTk9DRF9T RU1JSE9TVElORw0KKw0KK2ludA0KK19fc2VtaWhvc3RpbmdfaW5pdCAodm9pZCkNCit7DQorICAg IHN0cnVjdCB7DQorICAgICAgICBpbnQgdmVyc2lvbjsNCisgICAgfSB2ZXJfaW5mbyA9IHsgMiB9 Ow0KKyAgICBfX3NlbWlob3N0aW5nX2NhbGwoRVNQX1NFTUlIT1NUSU5HX1NZU19EUlZfSU5GTywg KGxvbmcpICZ2ZXJfaW5mbywNCnNpemVvZih2ZXJfaW5mbyksIDAsIDApOw0KK30NCisNCisjIGVu ZGlmIC8vIE9QRU5PQ0RfU0VNSUhPU1RJTkcNCisNCisjZWxzZSAvLyAhV0lUSF9TRU1JSE9TVElO Rw0KKyMgZGVmaW5lIF9fc2VtaWhvc3RpbmdfY2FsbCguLi4pICgtMSkNCisjZW5kaWYgLy8gV0lU SF9TRU1JSE9TVElORw0KKw0KKw0KK3ZvaWQNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorX19h dHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSkNCitfZXhpdCAoaW50IHN0YXR1cykNCit7DQorICAgIF9f c2VtaWhvc3RpbmdfY2FsbChTWVNfZXhpdCwgc3RhdHVzLCAwLCAwLCAwKTsNCisNCisgICAgZm9y ICg7Oykgew0KKyAgICAgICAgOw0KKyAgICB9DQorfQ0KKw0KKw0KK2ludA0KK19fV0VBS19GVU5D VElPTl9BVFRSX18NCitfb3Blbl9yIChzdHJ1Y3QgX3JlZW50ICpwdHIsDQorICAgICAgICAgY29u c3QgY2hhciAqZmlsZSwNCisgICAgICAgICBpbnQgZmxhZ3MsDQorICAgICAgICAgaW50IG1vZGUp DQorew0KKyAgICByZXR1cm4gX19zZW1paG9zdGluZ19jYWxsKFNZU19vcGVuLCAoaW50KSBmaWxl LCBmbGFncywgbW9kZSwgMCk7DQorfQ0KKw0KKw0KK2ludA0KK19fV0VBS19GVU5DVElPTl9BVFRS X18NCitfbHNlZWtfciAoc3RydWN0IF9yZWVudCAqcHRyLA0KKyAgICAgICAgICBpbnQgZmQsDQor ICAgICAgICAgIF9vZmZfdCBvZmYsDQorICAgICAgICAgIGludCB3aGVuY2UpDQorew0KKyAgICBy ZXR1cm4gX19zZW1paG9zdGluZ19jYWxsKFNZU19sc2VlaywgZmQsIG9mZiwgd2hlbmNlLCAwKTsN Cit9DQorDQorDQoraW50DQorX19XRUFLX0ZVTkNUSU9OX0FUVFJfXw0KK19jbG9zZV9yKHN0cnVj dCBfcmVlbnQgKnB0ciwgaW50IGZkKQ0KK3sNCisgICAgcmV0dXJuIF9fc2VtaWhvc3RpbmdfY2Fs bChTWVNfY2xvc2UsIGZkLCAwLCAwLCAwKTsNCit9DQorDQorDQorX3NzaXplX3QNCitfX1dFQUtf RlVOQ1RJT05fQVRUUl9fDQorX3dyaXRlX3IgKHN0cnVjdCBfcmVlbnQgKnB0ciwNCisgICAgICAg ICAgaW50IGZkLA0KKyAgICAgICAgICBjb25zdCBjaGFyICpidWYsDQorICAgICAgICAgIHNpemVf dCBjbnQpDQorew0KKyAgICBpbnQgcmV0ID0gMDsNCisjaWZkZWYgV0lUSF9TRU1JSE9TVElORw0K KyAgICByZXQgPSBfX3NlbWlob3N0aW5nX2NhbGwoU1lTX3dyaXRlLCBmZCwgKGludCkgYnVmLCBj bnQsIDApOw0KKyMgaWZkZWYgT1BFTk9DRF9TRU1JSE9TVElORw0KKyAgICAvKiByZXQgLSBudW1i ZXIgb2YgYnl0ZXMgdGhhdCBhcmUgTk9UIHdyaXR0ZW4uIENhbGN1bGF0ZSB3cml0dGVuDQoqLw0K KyAgICByZXQgPSBjbnQgLSByZXQ7DQorIyBlbmRpZiAvLyBPUEVOT0NEX1NFTUlIT1NUSU5HDQor I2Vsc2UgLy8gIVdJVEhfU0VNSUhPU1RJTkcNCisgICAgaWYgKGZkICE9IFNURE9VVF9GSUxFTk8g JiYgZmQgIT0gU1RERVJSX0ZJTEVOTykgew0KKyAgICAgICAgcmV0dXJuIC0xOw0KKyAgICB9DQor DQorICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjbnQ7IGkrKykgew0KKyAgICAgICAgYm9h cmRfdWFydF93cml0ZV9jaGFyKGJ1ZltpXSk7DQorICAgIH0NCisgICAgcmV0ID0gY250Ow0KKyNl bmRpZiAvLyBXSVRIX1NFTUlIT1NUSU5HDQorICAgIHJldHVybiByZXQ7DQorfQ0KKw0KKw0KKy8q IERvIG5vdCBjb21waWxlIGZ1bmN0aW9ucyB3aXRoIGNvbW1vbiBpbXBsZW1lbnRhdGlvbg0KKyAq IGlmIGJ1aWxkaW5nIHNlbWlob3N0aW5nIGxpYnJhcnkNCisgKi8NCisjaWZuZGVmIFdJVEhfU0VN SUhPU1RJTkcNCisNCitzdGF0aWMgc3RydWN0IF9yZWVudCBzX3JlZW50Ow0KKw0KK3N0cnVjdCBf cmVlbnQqDQorX19XRUFLX0ZVTkNUSU9OX0FUVFJfXw0KK19faW5pdHJlZW50KHZvaWQpDQorew0K KyAgICBfR0xPQkFMX1JFRU5UID0gJnNfcmVlbnQ7DQorICAgIF9SRUVOVF9JTklUX1BUUigmc19y ZWVudCk7DQorfQ0KKw0KKw0KK3N0cnVjdCBfcmVlbnQqDQorX19XRUFLX0ZVTkNUSU9OX0FUVFJf Xw0KK19fZ2V0cmVlbnQodm9pZCkNCit7DQorICAgIHJldHVybiBfR0xPQkFMX1JFRU5UOw0KK30N CisNCisNCitpbnQNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorX2ZzdGF0X3IgKHN0cnVjdCBf cmVlbnQgKnB0ciwNCisgICAgICAgICAgaW50IGZkLA0KKyAgICAgICAgICBzdHJ1Y3Qgc3RhdCAq cHN0YXQpDQorew0KKw0KKyAgICBpZiAoZmQgPCBTVERFUlJfRklMRU5PKQ0KKyAgICB7DQorICAg ICAgICBwc3RhdC0+c3RfbW9kZSA9IFNfSUZDSFI7DQorICAgICAgICByZXR1cm4gIDA7DQorICAg IH0NCisgICAgcmV0dXJuICAtMTsNCit9DQorDQorDQorX3NzaXplX3QNCitfX1dFQUtfRlVOQ1RJ T05fQVRUUl9fDQorX3JlYWRfciAoc3RydWN0IF9yZWVudCAqcHRyLA0KKyAgICAgICAgIGludCBm ZCwNCisgICAgICAgICBjaGFyICpidWYsDQorICAgICAgICAgc2l6ZV90IGNudCkNCit7DQorICAg IHJldHVybiAtMTsNCit9DQorDQorDQoraW50DQorX19XRUFLX0ZVTkNUSU9OX0FUVFJfXw0KK19n ZXRwaWRfciAoc3RydWN0IF9yZWVudCAqcHRyKQ0KK3sNCisgICAgcmV0dXJuIC0xOw0KK30NCisN CisNCitpbnQNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorX2tpbGxfciAoc3RydWN0IF9yZWVu dCAqcHRyLCBpbnQgc2lnKQ0KK3sNCisgICAgcmV0dXJuIC0xOw0KK30NCisNCisNCit2b2lkICoN CitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorX3NicmtfciAoc3RydWN0IF9yZWVudCAqcHRyLA0K KyAgICAgICAgIGludCBpbmNyKQ0KK3sNCisgICAgZXh0ZXJuIGNoYXIgICBlbmQ7IC8qIFNldCBi eSBsaW5rZXIuICAqLw0KKyAgICBzdGF0aWMgY2hhciAqIGhlYXBfZW5kOw0KKyAgICBjaGFyICog ICAgICAgIHByZXZfaGVhcF9lbmQ7DQorDQorICAgIGlmIChoZWFwX2VuZCA9PSAwKSB7DQorICAg ICAgICBoZWFwX2VuZCA9ICYgZW5kOw0KKyAgICB9DQorDQorICAgIHByZXZfaGVhcF9lbmQgPSBo ZWFwX2VuZDsNCisgICAgaGVhcF9lbmQgKz0gaW5jcjsNCisNCisgICAgcmV0dXJuICh2b2lkICop IHByZXZfaGVhcF9lbmQ7DQorfQ0KKw0KKw0KK2ludA0KK19fV0VBS19GVU5DVElPTl9BVFRSX18N CitwdGhyZWFkX3NldGNhbmNlbHN0YXRlIChpbnQgc3RhdGUsIGludCAqb2xkc3RhdGUpDQorew0K KyAgICByZXR1cm4gMDsNCit9DQorDQorI2VuZGlmIC8vIFdJVEhfU0VNSUhPU1RJTkcNCmRpZmYg LS1naXQgYS9saWJnbG9zcy94dGVuc2Evd2luZG93LXZlY3RvcnMuUyBiL2xpYmdsb3NzL3h0ZW5z YS93aW5kb3ctDQp2ZWN0b3JzLlMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAuLmFjYWI4YjM1NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL3dpbmRv dy12ZWN0b3JzLlMNCkBAIC0wLDAgKzEsMjUyIEBADQorLy8gd2luZG93LXZlY3RvcnMtbmV3LlMg LSBSZWdpc3RlciBXaW5kb3cgT3ZlcmZsb3cvVW5kZXJmbG93IEhhbmRsZXJzDQpmb3IgWEVBMg0K Ky8vICRJZDogLy9kZXBvdC9yZWwvRWFnbGVuZXN0L1h0ZW5zYS9PUy94dG9zL3dpbmRvdy12ZWN0 b3JzLW5ldy5TIzMgJA0KKw0KKy8vIENvcHlyaWdodCAoYykgMTk5OS0yMDEzIFRlbnNpbGljYSBJ bmMuDQorLy8NCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbg0Kb2J0YWluaW5nDQorLy8gYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQorLy8gIlNvZnR3YXJlIiks IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZw0K Ky8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwNCisvLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8NCisvLyBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QNCnRvDQorLy8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOg0KKy8vDQorLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUNCmluY2x1ZGVkDQorLy8gaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorLy8N CisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwNCisvLyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCisvLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORA0KTk9OSU5GUklOR0VNRU5ULg0KKy8vIElOIE5P IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1INCkFOWQ0KKy8vIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YNCkNPTlRSQUNULA0KKy8vIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFDQorLy8gU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorDQorLy8gRXhwb3J0 cw0KKy5nbG9iYWwgX1dpbmRvd092ZXJmbG93NA0KKy5nbG9iYWwgX1dpbmRvd1VuZGVyZmxvdzQN CisuZ2xvYmFsIF9XaW5kb3dPdmVyZmxvdzgNCisuZ2xvYmFsIF9XaW5kb3dVbmRlcmZsb3c4DQor Lmdsb2JhbCBfV2luZG93T3ZlcmZsb3cxMg0KKy5nbG9iYWwgX1dpbmRvd1VuZGVyZmxvdzEyDQor DQorCS8vICBOb3RlOiAgdGhlIGN1cnJlbnQgd2luZG93IGV4Y2VwdGlvbiB2ZWN0b3JzIGRvIG5v dA0KZ2VuZXJhdGUgYW55DQorCS8vICBsaXRlcmFscy4gIEhlbmNlIHRoZSBsaXRlcmFsX3ByZWZp eCBkaXJlY3RpdmUgaXMgbm90DQpuZWNlc3NhcnkuDQorCS8vICBTcGVjaWZ5aW5nIGl0ICJqdXN0 IGluIGNhc2UiIGNyZWF0ZXMgYW4gZW1wdHkgc2VjdGlvbg0KKG5hbWVkDQorCS8vICAiLldpbmRv d1ZlY3RvcnMubGl0ZXJhbCIpIHdoaWNoIGNhbiBpbiBzb21lIGNhc2VzIGNhdXNlDQpsaW5raW5n DQorCS8vICBwcm9ibGVtcyAodGhlIGxpbmtlciBzY3JpcHRzIGRvbid0IHBsYWNlIGl0IGFueXdo ZXJlKS4NCisJLy8gIFNvIGxlYXZlIGl0IGNvbW1lbnRlZCBvdXQ6DQorCS8vDQorCS8vLmJlZ2lu CWxpdGVyYWxfcHJlZml4CS5XaW5kb3dWZWN0b3JzDQorDQorCS5zZWN0aW9uCQkuV2luZG93VmVj dG9ycy50ZXh0LCAiYXgiDQorDQorLy8NCisvLyBHRU5FUkFMIE5PVEVTOg0KKy8vDQorLy8gVGhl c2Ugd2luZG93IGV4Y2VwdGlvbiBoYW5kbGVycyBuZWVkIG5vdCBiZSBtb2RpZmllZC4NCisvLyBU aGV5IGFyZSBzcGVjaWZpYyB0byB0aGUgd2luZG93ZWQgY2FsbCBBQkkgb25seS4NCisvLw0KKy8v IFVuZGVyZmxvdyBIYW5kbGVyczoNCisvLw0KKy8vIFRoZSB1bmRlcmZsb3cgaGFuZGxlciBmb3Ig cmV0dXJuaW5nIGZyb20gY2FsbFtpKzFdIHRvIGNhbGxbaV0NCisvLyBtdXN0IHByZXNlcnZlIGFs bCB0aGUgcmVnaXN0ZXJzIGZyb20gY2FsbFtpKzFdJ3Mgd2luZG93Lg0KKy8vIEluIHBhcnRpY3Vs YXIsIGEwIGFuZCBhMSBtdXN0IGJlIHByZXNlcnZlZCBiZWNhdXNlIHRoZSBSRVRXDQppbnN0cnVj dGlvbg0KKy8vIHdpbGwgYmUgcmVleGVjdXRlZCAoYW5kIG1heSBldmVuIHVuZGVyZmxvdyBhZ2Fp biBpZiBhbiBpbnRlcnZlbmluZw0KKy8vIGV4Y2VwdGlvbiBoYXMgZmx1c2hlZCBjYWxsW2ldJ3Mg cmVnaXN0ZXJzKS4NCisvLyBSZWdpc3RlcnMgYTIgYW5kIHVwIG1heSBjb250YWluIHJldHVybiB2 YWx1ZXMuDQorLy8NCisvLyBUaGUgY2FsbGVyIGNvdWxkIGFsc28gcG90ZW50aWFsbHkgYXNzdW1l IHRoYXQgdGhlIGNhbGxlZSdzIGEwIGFuZA0KYTENCisvLyAoaXRzIG93biBhNCZhNSBpZiBjYWxs NCwgYTgmYTkgaWYgY2FsbDgsIGExMiZhMTMgaWYgY2FsbDEyKQ0KKy8vIGFyZSBjb3JyZWN0IGZv ciB3aGF0ZXZlciByZWFzb24gKG5vdCBhIGNsZWFuIHRoaW5nIHRvIGRvIGluDQpnZW5lcmFsLA0K Ky8vIGJ1dCBpZiBpdCdzIHBvc3NpYmxlLCB1bmxlc3MgdGhlIEFCSSBleHBsaWNpdGx5IHByb2hp Yml0cyBpdCwNCisvLyBpdCB3aWxsIGV2ZW50dWFsbHkgYmUgZG9uZSA6KSAtLSB3aGV0aGVyIHRo ZSB0aGUgQUJJIG5lZWRzIHRvDQorLy8gcHJvaGliaXQgdGhpcyBpcyBhIGRpZmZlcmVudCBxdWVz dGlvbikuDQorLy8NCisvLyBUaW1pbmcgb2YgSGFuZGxlcnM6DQorLy8NCisvLyBIZXJlIGlzIGFu IG92ZXJ2aWV3IG9mIHRoZSBvdmVyaGVhZCBvZiB0YWtpbmcgYSB3aW5kb3cgZXhjZXB0aW9uLA0K Ky8vIGllLiB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgY3ljbGVzIHRha2VuIHJlbGF0aXZlIHRv IGNhc2Ugd2hlcmUNCisvLyBhbiBleGNlcHRpb24gaXMgbm90IHRha2VuLg0KKy8vIE5PVEU6ICB0 aGVzZSBudW1iZXJzIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCBhbnkgY2FjaGUgbWlzc2VzLA0K Ky8vIHdyaXRlIGJ1ZmZlciBzdGFsbHMsIG9yIG90aGVyIGV4dGVybmFsIHN0YWxscywgaWYgdGhl eSBvY2N1ci4NCisvLyBUaGUgdG90YWxzIGNvbnNpc3Qgb2YgNSBjeWNsZXMgdG8gZW50ZXIgdGhl IGhhbmRsZXIgKG9yIDYgb3IgNw0KKy8vIGZvciBvcHRpb25hbCBsb25nZXIgcGlwZWxpbmVzIGlu IFh0ZW5zYSBMWCksIHRoZSBudW1iZXIgb2YNCmluc3RydWN0aW9ucw0KKy8vIGFuZCBpbnRlcmxv Y2tzICgybmQgYW5kIDNyZCBjb2x1bW5zIGJlbG93KSwgYW5kIDIgY3ljbGVzIGp1bXAgZGVsYXkN CisvLyBvbiByZXR1cm4gKDMgY3ljbGVzIGZvciBvcHRpb25hbCBsb25nZXIgSS1zaWRlIHBpcGVs aW5lIGluIFh0ZW5zYQ0KTFgpOg0KKy8vDQorLy8JCQlJbnN0cnVjdGlvbitidWJibGVzCVRvdGFs cyAoNS1zdGFnZSkNCisvLwkJCVhFQTEJWEVBMgkJWEVBMQlYRUEyDQorLy8JT3ZlcmZsb3ctNAk3 CTUJCTE0CTEyDQorLy8JT3ZlcmZsb3ctOAkxNAkxMAkJMjEJMTcNCisvLwlPdmVyZmxvdy0xMgkx OAkxNAkJMjUJMjENCisvLwlVbmRlcmZsb3ctNAk2CTUJCTEzCTEyDQorLy8JVW5kZXJmbG93LTgJ MTQJMTAJCTIxCTE3DQorLy8JVW5kZXJmbG93LTEyCTE4CTE0CQkyNQkyMQ0KKy8vDQorLy8JVW5k ZXJmbG93LTgJMTUJMTIJCTI1CTIyCSg3LQ0Kc3RhZ2U7IGNvdWxkIGJlIG1hZGUgMSBsZXNzKQ0K Ky8vCVVuZGVyZmxvdy0xMgkxOQkxNgkJMjkJMjYJKDctDQpzdGFnZTsgY291bGQgYmUgbWFkZSAx IGxlc3MpDQorDQorDQorLy8gNC1SZWdpc3RlciBXaW5kb3cgT3ZlcmZsb3cgVmVjdG9yIChIYW5k bGVyKQ0KKy8vDQorLy8gSW52b2tlZCBpZiBhIGNhbGxbaV0gcmVmZXJlbmNlZCBhIHJlZ2lzdGVy IChhNC1hMTUpDQorLy8gdGhhdCBjb250YWlucyBkYXRhIGZyb20gYW5jZXN0b3IgY2FsbFtqXTsN CisvLyBjYWxsW2pdIGhhZCBkb25lIGEgY2FsbDQgdG8gY2FsbFtqKzFdLg0KKy8vIE9uIGVudHJ5 IGhlcmU6DQorLy8Jd2luZG93IHJvdGF0ZWQgdG8gY2FsbFtqXSBzdGFydCBwb2ludDsNCisvLwlh MC1hMyBhcmUgcmVnaXN0ZXJzIHRvIGJlIHNhdmVkOw0KKy8vCWE0LWExNSBtdXN0IGJlIHByZXNl cnZlZDsNCisvLwlhNSBpcyBjYWxsW2orMV0ncyBzdGFjayBwb2ludGVyLg0KKw0KKwkub3JnCTB4 MA0KK19XaW5kb3dPdmVyZmxvdzQ6DQorCXMzMmUJYTAsIGE1LCAtMTYJLy8gc2F2ZSBhMCB0byBj YWxsW2orMV0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWExLCBhNSwgLTEyCS8vIHNhdmUgYTEgdG8g Y2FsbFtqKzFdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhMiwgYTUsICAtOAkvLyBzYXZlIGEyIHRv IGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTMsIGE1LCAgLTQJLy8gc2F2ZSBhMyB0 byBjYWxsW2orMV0ncyBzdGFjayBmcmFtZQ0KKwlyZndvCQkJLy8gcm90YXRlcyBiYWNrIHRvIGNh bGxbaV0gcG9zaXRpb24NCisNCisJLnNpemUJX1dpbmRvd092ZXJmbG93NCwgLiAtIF9XaW5kb3dP dmVyZmxvdzQNCisNCisNCisvLyA0LVJlZ2lzdGVyIFdpbmRvdyBVbmRlcmZsb3cgVmVjdG9yIChI YW5kbGVyKQ0KKy8vDQorLy8gSW52b2tlZCBieSBSRVRXIHJldHVybmluZyBmcm9tIGNhbGxbaSsx XSB0byBjYWxsW2ldDQorLy8gd2hlcmUgY2FsbFtpXSdzIHJlZ2lzdGVycyBtdXN0IGJlIHJlbG9h ZGVkIChub3QgbGl2ZSBpbiBBUnMpOw0KKy8vIGNhbGxbaV0gaGFkIGRvbmUgYSBjYWxsNCB0byBj YWxsW2krMV0uDQorLy8gT24gZW50cnkgaGVyZToNCisvLyAgICAgIHdpbmRvdyByb3RhdGVkIHRv IGNhbGxbaV0gc3RhcnQgcG9pbnQ7DQorLy8gICAgICBhMC1hMyBhcmUgdW5kZWZpbmVkLCBtdXN0 IGJlIHJlbG9hZGVkIHdpdGggY2FsbFtpXS5yZWdbMC4uM107DQorLy8gICAgICBhNC1hMTUgbXVz dCBiZSBwcmVzZXJ2ZWQgKHRoZXkgYXJlIGNhbGxbaSsxXS5yZWdbMC4uMTFdKTsNCisvLyAgICAg IGE1IGlzIGNhbGxbaSsxXSdzIHN0YWNrIHBvaW50ZXIuDQorDQorCS5vcmcJMHg0MA0KK19XaW5k b3dVbmRlcmZsb3c0Og0KKwlsMzJlCWEwLCBhNSwgLTE2CS8vIHJlc3RvcmUgYTAgZnJvbSBjYWxs W2krMV0ncyBzdGFjaw0KZnJhbWUNCisJbDMyZQlhMSwgYTUsIC0xMgkvLyByZXN0b3JlIGExIGZy b20gY2FsbFtpKzFdJ3Mgc3RhY2sNCmZyYW1lDQorCWwzMmUJYTIsIGE1LCAgLTgJLy8gcmVzdG9y ZSBhMiBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrDQpmcmFtZQ0KKwlsMzJlCWEzLCBhNSwgIC00CS8v IHJlc3RvcmUgYTMgZnJvbSBjYWxsW2krMV0ncyBzdGFjaw0KZnJhbWUNCisJcmZ3dQ0KKw0KKwku c2l6ZQlfV2luZG93VW5kZXJmbG93NCwgLiAtIF9XaW5kb3dVbmRlcmZsb3c0DQorDQorDQorLy8g OC1SZWdpc3RlciBXaW5kb3cgT3ZlcmZsb3cgVmVjdG9yIChIYW5kbGVyKQ0KKy8vDQorLy8gSW52 b2tlZCBpZiBhIGNhbGxbaV0gcmVmZXJlbmNlZCBhIHJlZ2lzdGVyIChhNC1hMTUpDQorLy8gdGhh dCBjb250YWlucyBkYXRhIGZyb20gYW5jZXN0b3IgY2FsbFtqXTsNCisvLyBjYWxsW2pdIGhhZCBk b25lIGEgY2FsbDggdG8gY2FsbFtqKzFdLg0KKy8vIE9uIGVudHJ5IGhlcmU6DQorLy8Jd2luZG93 IHJvdGF0ZWQgdG8gY2FsbFtqXSBzdGFydCBwb2ludDsNCisvLwlhMC1hNyBhcmUgcmVnaXN0ZXJz IHRvIGJlIHNhdmVkOw0KKy8vCWE4LWExNSBtdXN0IGJlIHByZXNlcnZlZDsNCisvLwlhOSBpcyBj YWxsW2orMV0ncyBzdGFjayBwb2ludGVyLg0KKw0KKwkub3JnCTB4ODANCitfV2luZG93T3ZlcmZs b3c4Og0KKwlzMzJlCWEwLCBhOSwgLTE2CS8vIHNhdmUgYTAgdG8gY2FsbFtqKzFdJ3Mgc3RhY2sg ZnJhbWUNCisJbDMyZQlhMCwgYTEsIC0xMgkvLyBhMCA8LSBjYWxsW2otMV0ncyBzcCAodXNlZCB0 byBmaW5kDQplbmQgb2YgY2FsbFtqXSdzIGZyYW1lKQ0KKwlzMzJlCWExLCBhOSwgLTEyCS8vIHNh dmUgYTEgdG8gY2FsbFtqKzFdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhMiwgYTksICAtOAkvLyBz YXZlIGEyIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTMsIGE5LCAgLTQJLy8g c2F2ZSBhMyB0byBjYWxsW2orMV0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWE0LCBhMCwgLTMyCS8v IHNhdmUgYTQgdG8gY2FsbFtqXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTUsIGEwLCAtMjgJLy8g c2F2ZSBhNSB0byBjYWxsW2pdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhNiwgYTAsIC0yNAkvLyBz YXZlIGE2IHRvIGNhbGxbal0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWE3LCBhMCwgLTIwCS8vIHNh dmUgYTcgdG8gY2FsbFtqXSdzIHN0YWNrIGZyYW1lDQorCXJmd28JCQkvLyByb3RhdGVzIGJhY2sg dG8gY2FsbFtpXSBwb3NpdGlvbg0KKw0KKwkuc2l6ZQlfV2luZG93T3ZlcmZsb3c4LCAuIC0gX1dp bmRvd092ZXJmbG93OA0KKw0KKw0KKy8vIDgtUmVnaXN0ZXIgV2luZG93IFVuZGVyZmxvdyBWZWN0 b3IgKEhhbmRsZXIpDQorLy8NCisvLyBJbnZva2VkIGJ5IFJFVFcgcmV0dXJuaW5nIGZyb20gY2Fs bFtpKzFdIHRvIGNhbGxbaV0NCisvLyB3aGVyZSBjYWxsW2ldJ3MgcmVnaXN0ZXJzIG11c3QgYmUg cmVsb2FkZWQgKG5vdCBsaXZlIGluIEFScyk7DQorLy8gY2FsbFtpXSBoYWQgZG9uZSBhIGNhbGw4 IHRvIGNhbGxbaSsxXS4NCisvLyBPbiBlbnRyeSBoZXJlOg0KKy8vCXdpbmRvdyByb3RhdGVkIHRv IGNhbGxbaV0gc3RhcnQgcG9pbnQ7DQorLy8JYTAtYTcgYXJlIHVuZGVmaW5lZCwgbXVzdCBiZSBy ZWxvYWRlZCB3aXRoIGNhbGxbaV0ucmVnWzAuLjddOw0KKy8vCWE4LWExNSBtdXN0IGJlIHByZXNl cnZlZCAodGhleSBhcmUgY2FsbFtpKzFdLnJlZ1swLi43XSk7DQorLy8JYTkgaXMgY2FsbFtpKzFd J3Mgc3RhY2sgcG9pbnRlci4NCisNCisJLm9yZwkweEMwDQorX1dpbmRvd1VuZGVyZmxvdzg6DQor CWwzMmUJYTAsIGE5LCAtMTYJLy8gcmVzdG9yZSBhMCBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrDQpm cmFtZQ0KKwlsMzJlCWExLCBhOSwgLTEyCS8vIHJlc3RvcmUgYTEgZnJvbSBjYWxsW2krMV0ncyBz dGFjaw0KZnJhbWUNCisJbDMyZQlhMiwgYTksICAtOAkvLyByZXN0b3JlIGEyIGZyb20gY2FsbFtp KzFdJ3Mgc3RhY2sNCmZyYW1lDQorCWwzMmUJYTcsIGExLCAtMTIJLy8gYTcgPC0gY2FsbFtpLTFd J3Mgc3AgKHVzZWQgdG8gZmluZA0KZW5kIG9mIGNhbGxbaV0ncyBmcmFtZSkNCisJbDMyZQlhMywg YTksICAtNAkvLyByZXN0b3JlIGEzIGZyb20gY2FsbFtpKzFdJ3Mgc3RhY2sNCmZyYW1lDQorCWwz MmUJYTQsIGE3LCAtMzIJLy8gcmVzdG9yZSBhNCBmcm9tIGNhbGxbaV0ncyBzdGFjaw0KZnJhbWUN CisJbDMyZQlhNSwgYTcsIC0yOAkvLyByZXN0b3JlIGE1IGZyb20gY2FsbFtpXSdzIHN0YWNrDQpm cmFtZQ0KKwlsMzJlCWE2LCBhNywgLTI0CS8vIHJlc3RvcmUgYTYgZnJvbSBjYWxsW2ldJ3Mgc3Rh Y2sNCmZyYW1lLi4vLi4vLi4vLi9saWJnbG9zcy94dGVuc2Evd2luZG93LXZlY3RvcnMuUw0KKwls MzJlCWE3LCBhNywgLTIwCS8vIHJlc3RvcmUgYTcgZnJvbSBjYWxsW2ldJ3Mgc3RhY2sNCmZyYW1l DQorCXJmd3UNCisNCisJLnNpemUJX1dpbmRvd1VuZGVyZmxvdzgsIC4gLSBfV2luZG93VW5kZXJm bG93OA0KKw0KKw0KKy8vIDEyLVJlZ2lzdGVyIFdpbmRvdyBPdmVyZmxvdyBWZWN0b3IgKEhhbmRs ZXIpDQorLy8NCisvLyBJbnZva2VkIGlmIGEgY2FsbFtpXSByZWZlcmVuY2VkIGEgcmVnaXN0ZXIg KGE0LWExNSkNCisvLyB0aGF0IGNvbnRhaW5zIGRhdGEgZnJvbSBhbmNlc3RvciBjYWxsW2pdOw0K Ky8vIGNhbGxbal0gaGFkIGRvbmUgYSBjYWxsMTIgdG8gY2FsbFtqKzFdLg0KKy8vIE9uIGVudHJ5 IGhlcmU6DQorLy8Jd2luZG93IHJvdGF0ZWQgdG8gY2FsbFtqXSBzdGFydCBwb2ludDsNCisvLwlh MC1hMTEgYXJlIHJlZ2lzdGVycyB0byBiZSBzYXZlZDsNCisvLwlhMTItYTE1IG11c3QgYmUgcHJl c2VydmVkOw0KKy8vCWExMyBpcyBjYWxsW2orMV0ncyBzdGFjayBwb2ludGVyLg0KKw0KKwkub3Jn CTB4MTAwDQorX1dpbmRvd092ZXJmbG93MTI6DQorCXMzMmUJYTAsICBhMTMsIC0xNgkvLyBzYXZl IGEwIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTAsICBhMSwgIC0xMgkvLyBh MCA8LSBjYWxsW2otMV0ncyBzcCAodXNlZCB0byBmaW5kDQplbmQgb2YgY2FsbFtqXSdzIGZyYW1l KQ0KKwlzMzJlCWExLCAgYTEzLCAtMTIJLy8gc2F2ZSBhMSB0byBjYWxsW2orMV0ncyBzdGFjayBm cmFtZQ0KKwlzMzJlCWEyLCAgYTEzLCAgLTgJLy8gc2F2ZSBhMiB0byBjYWxsW2orMV0ncyBzdGFj ayBmcmFtZQ0KKwlzMzJlCWEzLCAgYTEzLCAgLTQJLy8gc2F2ZSBhMyB0byBjYWxsW2orMV0ncyBz dGFjayBmcmFtZQ0KKwlzMzJlCWE0LCAgYTAsICAtNDgJLy8gc2F2ZSBhNCB0byBlbmQgb2YgY2Fs bFtqXSdzIHN0YWNrDQpmcmFtZQ0KKwlzMzJlCWE1LCAgYTAsICAtNDQJLy8gc2F2ZSBhNSB0byBl bmQgb2YgY2FsbFtqXSdzIHN0YWNrDQpmcmFtZQ0KKwlzMzJlCWE2LCAgYTAsICAtNDAJLy8gc2F2 ZSBhNiB0byBlbmQgb2YgY2FsbFtqXSdzIHN0YWNrDQpmcmFtZQ0KKwlzMzJlCWE3LCAgYTAsICAt MzYJLy8gc2F2ZSBhNyB0byBlbmQgb2YgY2FsbFtqXSdzIHN0YWNrDQpmcmFtZQ0KKwlzMzJlCWE4 LCAgYTAsICAtMzIJLy8gc2F2ZSBhOCB0byBlbmQgb2YgY2FsbFtqXSdzIHN0YWNrDQpmcmFtZQ0K KwlzMzJlCWE5LCAgYTAsICAtMjgJLy8gc2F2ZSBhOSB0byBlbmQgb2YgY2FsbFtqXSdzIHN0YWNr DQpmcmFtZQ0KKwlzMzJlCWExMCwgYTAsICAtMjQJLy8gc2F2ZSBhMTAgdG8gZW5kIG9mIGNhbGxb al0ncyBzdGFjaw0KZnJhbWUNCisJczMyZQlhMTEsIGEwLCAgLTIwCS8vIHNhdmUgYTExIHRvIGVu ZCBvZiBjYWxsW2pdJ3Mgc3RhY2sNCmZyYW1lDQorCXJmd28JCQkvLyByb3RhdGVzIGJhY2sgdG8g Y2FsbFtpXSBwb3NpdGlvbg0KKw0KKwkuc2l6ZQlfV2luZG93T3ZlcmZsb3cxMiwgLiAtIF9XaW5k b3dPdmVyZmxvdzEyDQorDQorDQorLy8gMTItUmVnaXN0ZXIgV2luZG93IFVuZGVyZmxvdyBWZWN0 b3IgKEhhbmRsZXIpDQorLy8NCisvLyBJbnZva2VkIGJ5IFJFVFcgcmV0dXJuaW5nIGZyb20gY2Fs bFtpKzFdIHRvIGNhbGxbaV0NCisvLyB3aGVyZSBjYWxsW2ldJ3MgcmVnaXN0ZXJzIG11c3QgYmUg cmVsb2FkZWQgKG5vdCBsaXZlIGluIEFScyk7DQorLy8gY2FsbFtpXSBoYWQgZG9uZSBhIGNhbGwx MiB0byBjYWxsW2krMV0uDQorLy8gT24gZW50cnkgaGVyZToNCisvLwl3aW5kb3cgcm90YXRlZCB0 byBjYWxsW2ldIHN0YXJ0IHBvaW50Ow0KKy8vCWEwLWExMSBhcmUgdW5kZWZpbmVkLCBtdXN0IGJl IHJlbG9hZGVkIHdpdGgNCmNhbGxbaV0ucmVnWzAuLjExXTsNCisvLwlhMTItYTE1IG11c3QgYmUg cHJlc2VydmVkICh0aGV5IGFyZSBjYWxsW2krMV0ucmVnWzAuLjNdKTsNCisvLwlhMTMgaXMgY2Fs bFtpKzFdJ3Mgc3RhY2sgcG9pbnRlci4NCisNCisJLm9yZwkweDE0MA0KK19XaW5kb3dVbmRlcmZs b3cxMjoNCisJbDMyZQlhMCwgIGExMywgLTE2CS8vIHJlc3RvcmUgYTAgZnJvbSBjYWxsW2krMV0n cyBzdGFjaw0KZnJhbWUNCisJbDMyZQlhMSwgIGExMywgLTEyCS8vIHJlc3RvcmUgYTEgZnJvbSBj YWxsW2krMV0ncyBzdGFjaw0KZnJhbWUNCisJbDMyZQlhMiwgIGExMywgIC04CS8vIHJlc3RvcmUg YTIgZnJvbSBjYWxsW2krMV0ncyBzdGFjaw0KZnJhbWUNCisJbDMyZQlhMTEsIGExLCAgLTEyCS8v IGExMSA8LSBjYWxsW2ktMV0ncyBzcCAodXNlZCB0byBmaW5kDQplbmQgb2YgY2FsbFtpXSdzIGZy YW1lKQ0KKwlsMzJlCWEzLCAgYTEzLCAgLTQJLy8gcmVzdG9yZSBhMyBmcm9tIGNhbGxbaSsxXSdz IHN0YWNrDQpmcmFtZQ0KKwlsMzJlCWE0LCAgYTExLCAtNDgJLy8gcmVzdG9yZSBhNCBmcm9tIGVu ZCBvZiBjYWxsW2ldJ3MNCnN0YWNrIGZyYW1lDQorCWwzMmUJYTUsICBhMTEsIC00NAkvLyByZXN0 b3JlIGE1IGZyb20gZW5kIG9mIGNhbGxbaV0ncw0Kc3RhY2sgZnJhbWUNCisJbDMyZQlhNiwgIGEx MSwgLTQwCS8vIHJlc3RvcmUgYTYgZnJvbSBlbmQgb2YgY2FsbFtpXSdzDQpzdGFjayBmcmFtZQ0K KwlsMzJlCWE3LCAgYTExLCAtMzYJLy8gcmVzdG9yZSBhNyBmcm9tIGVuZCBvZiBjYWxsW2ldJ3MN CnN0YWNrIGZyYW1lDQorCWwzMmUJYTgsICBhMTEsIC0zMgkvLyByZXN0b3JlIGE4IGZyb20gZW5k IG9mIGNhbGxbaV0ncw0Kc3RhY2sgZnJhbWUNCisJbDMyZQlhOSwgIGExMSwgLTI4CS8vIHJlc3Rv cmUgYTkgZnJvbSBlbmQgb2YgY2FsbFtpXSdzDQpzdGFjayBmcmFtZQ0KKwlsMzJlCWExMCwgYTEx LCAtMjQJLy8gcmVzdG9yZSBhMTAgZnJvbSBlbmQgb2YgY2FsbFtpXSdzDQpzdGFjayBmcmFtZQ0K KwlsMzJlCWExMSwgYTExLCAtMjAJLy8gcmVzdG9yZSBhMTEgZnJvbSBlbmQgb2YgY2FsbFtpXSdz DQpzdGFjayBmcmFtZQ0KKwlyZnd1DQorDQorCS5zaXplCV9XaW5kb3dVbmRlcmZsb3cxMiwgLiAt IF9XaW5kb3dVbmRlcmZsb3cxMg0KKw0KKw0KKwkvLy5lbmQJbGl0ZXJhbF9wcmVmaXgNCisJLnRl eHQNCi0tIA0KMi4zNC4xDQoNCg==