From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=tamu.edu Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=tamu.edu header.i=@tamu.edu header.a=rsa-sha256 header.s=ppae6d7b header.b=RJufBZVS; dkim-atps=neutral Received: from mx0a-00178102.pphosted.com (mx0a-00178102.pphosted.com [148.163.135.245]) by passt.top (Postfix) with ESMTPS id A2F7C5A0265 for ; Mon, 03 Aug 2026 22:34:41 +0200 (CEST) Received: from pps.filterd (m0169867.ppops.net [127.0.0.1]) by mx0a-00178102.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 673KOBNv2049754; Mon, 3 Aug 2026 15:34:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tamu.edu; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=ppae6d7b; bh=7+UrVzAevhXwn7d3/xSkCBsPE OH1ui1Rpgk026/4+2s=; b=RJufBZVSoD1s0rtFt50/Kg9qoOf3Y7vuZ3hPcte53 VYTxRnWWV63KJHV8S1EkesfolWgMK9phRjYOCKy0gyz7QN7a26GSsXvBfBIstLAi 6GqvGciZU8dN0G4qk0CIg165UmczzMNSbVgho8lDakFNCYHlKLRbzsKP0V739NqH UyMoYC3X0ZdwEKx8pS/nM4+E0RndeIptn4+eRDqzF+Vb2KXFJCtCvXniBRV1GGJ5 rissqF9EQ/01S9RUO2gNHQv8DhHVmaFgRpPEcJji73FiVy2rmSnwYISJaOkcvZiS 8ZK3GOL/fMO4bPSCwcKVgDJf7ghbOCDYhGjII8FwFGuow== Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010036.outbound.protection.outlook.com [52.101.46.36]) by mx0a-00178102.pphosted.com (PPS) with ESMTPS id 4fu0k4rpcc-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 03 Aug 2026 15:34:22 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E1e2N+8tvHLL0GhtZ+lGBehz9wsTjmN/61xY9iMRqbSN0k1Z/RMa5Xtoi1AxJX7U4r0vFMVkNPDOq3YZLlCh7AxQe4pIpPuF3qTz4je2ZMkqe1Og3/fsIzYueMsiia4a+GfC3pDO6QH/ozmnVHp4+g3Ps6BUY1olJM84dqoBKbJMso2RyLSZYSP8wBXib3HQSZRL4sY5e/Mp/0RNTUhWDy7LMwQtXpc9mvQ3a2mbI/iY5N/BV8r6hENRY9yA+1d8uiofyjXwgEW6dwh/m/1ma/DOYQge4Zu7NtNCIo3N9YDaJ5A3hSz9f/Gu8/mjwSzbFGwTtKuYwpfU3GBU/m6uEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=7+UrVzAevhXwn7d3/xSkCBsPEOH1ui1Rpgk026/4+2s=; b=hLBan83YpQWvjjo3WR86c9YXRUqJ/0xQrunh7KSe3vew6ODMP208g802TZuez0YUMafhtu9HAQF6xXHvvlxbsT94O2iwS4GXCevZVT+urN+I2sADJ/udkPI0yU/uvIXHButTSArQZtXZAoxJLGUghAN9Gyqn25E8WXZ/I2UBsVOCo4xdiUGVkjssTnxxag95TS7e0g70lPI0gNuEk5FVTI3R13O31okR9NF2Q293ZzgPOlrs+e7O4eSfcawCEjouSmfhWmLk2xvIWx7XKEZG6VEQxnIEusJIPtXb0ovMP5XDkh1H4A4sNGPv2P1bu94I4L55oNgZoVsNKCrCWcsydw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=tamu.edu; dmarc=pass action=none header.from=tamu.edu; dkim=pass header.d=tamu.edu; arc=none Received: from DM3PR11MB8713.namprd11.prod.outlook.com (2603:10b6:0:45::15) by IA1PR11MB6145.namprd11.prod.outlook.com (2603:10b6:208:3ef::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Mon, 3 Aug 2026 20:34:19 +0000 Received: from DM3PR11MB8713.namprd11.prod.outlook.com ([fe80::e63e:f56e:ed80:ee28]) by DM3PR11MB8713.namprd11.prod.outlook.com ([fe80::e63e:f56e:ed80:ee28%4]) with mapi id 15.21.0270.017; Mon, 3 Aug 2026 20:34:19 +0000 From: "Lawrence, Richard E" To: David Gibson Subject: Re: [PATCH v2] feat: Pass open files to child in pasta mode Thread-Topic: [PATCH v2] feat: Pass open files to child in pasta mode Thread-Index: AQHdIPAo/SyQAMkfzU6GqDPSlDAarLaLw6KAgAD3b10= Date: Mon, 3 Aug 2026 20:34:19 +0000 Message-ID: References: <20260731132601.422518-1-rlawrence@tamu.edu> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM3PR11MB8713:EE_|IA1PR11MB6145:EE_ x-ms-office365-filtering-correlation-id: 0b58e0df-dc70-4cd9-7739-08def19e9846 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|23010399003|1800799024|786006|376014|22082099003|18002099003|11063799006|4143699003|5023799004|8096899003|3023799007|38070700021|6133799003|10067099003|56012099006; x-microsoft-antispam-message-info: rH7esCo8QcTMII2HY6dSAat71V+2uDjrp0Rrvuh/kE5Trx741X93ZaJKMJj+1a/rxz+70cg48ng8jllwyOsxLLkaLv6+PjNwmTY/ZD3ys3nyXQeRiCrhqKZV+aoWY6Xyae/Ve2dAg+Q0nlMCAznuwZBTZ5TObLN4tmoRDCs8XuOYwcGj3l5bE9CLvHF4U6xaNDaGEc1wNMfj8fbosR76TzQP7a46jstlrIqh0YgEZQzDn/o/4o46ET7P/Edg+A8kST1BEkylzgeSwTURUkvSUBEPVz9/jN09Pbnu21TH6QE4JR9uydxov48bmVQMdsGYOwMQaWOQvVls7Ba9FSQPyLtu3AAFMiEsG0RKNq0v5JdxHbKNLPNaq1oxwkPT29GxLLNkHDbKrDrzg7jzzZk1IQJgiKL/h8cz77W3JdLbJCX0qHxSVi6kp/b2nvaU441FsUhl0Sub0MFjhJCuZaygd+BPOar2sXBYB9CZdqH6o5xrSU7+SI7QTjbI8ncWcUA2ZZMZ8Oig2j+k1DLAviPEpz2zVojzR9hBoDgFbTW5rVp3eFXilimqlDqTLAQ4mHntdOxAPpM9d9u4vAz7n9FxV1Tiqas64GQr8UgsrRAQ9okR5AUb/GGtBT0KN6cLIBB5EirJgXsIS1w9Du9a+j3hdENshHES/WN3KzWncsNZrqqHqKEryXkJyk3q7AQrsnq1OiKk8pThr+jU1CI9FlGzeMNiBtrvhMWblqcljqaBy/Q= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR11MB8713.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(1800799024)(786006)(376014)(22082099003)(18002099003)(11063799006)(4143699003)(5023799004)(8096899003)(3023799007)(38070700021)(6133799003)(10067099003)(56012099006);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?R1krdDdtSjRra25oNXVLejZSUzBtZ1RjdUE5Szl6ZHZydWNUS094aG5wVFl1?= =?utf-8?B?VkJrNmFHbzJESlpwZXNvaWdhV3E4MHE2bHFkM3pNTEthc25DemhiRGFTY0hH?= =?utf-8?B?akphOTZSTzhtb2NwenY4VlB6MnZ5OW9iUnBMekgzbE55OUV4RWpPN3F4Rzhh?= =?utf-8?B?ZFpUSHljdUt5aDV0cUVnNXpJVW9ZVTNOSnI4RnN3VDQxdlc0K3ljSmJFT2dK?= =?utf-8?B?REpQK3JYbFR2YUZabFM5eTExT2hCZGRocTNhM3AveUJBVGQ0a1pBZ2wxY25h?= =?utf-8?B?c21WeTVDV1BsUU4xRjdJNGh2cndGVDU2VDdGRVZmdUltUzBtYlZZczVzUXl0?= =?utf-8?B?SVVWT3o5UjRkZm4zNVROa3Y4V2o3aVo5amwreExVWHd4SkE5MDFBL0paWXg4?= =?utf-8?B?ME9sR0c4VCtRMGc5YkxYbUdqK2VPamRxb3RmeXBTaFczSHhNdW5kZU1XOHZl?= =?utf-8?B?c2V6ZGdHeHNOZ01KWHJhVDJBdlB2Nm9peGZxcXZpQUV2WWF6NDZ0cUUzZ2d1?= =?utf-8?B?QmQrNFRpVzFOSUdlejRDVmlVcCtMUzAzRDkrNmllbFJncjNVa2xQOWxmcnRO?= =?utf-8?B?T1I5TVE4eTBVbzI1dEJXV3dHMEF3bnJ3Uys2SkJkck8rQVB1bjQ4cWJFWFY0?= =?utf-8?B?bnFFYzFLUDFCZGlGb1I0NDV5cEZ1Y2ExblZYR2w4WGRXOTlTU0k3V3lVVXMr?= =?utf-8?B?K1U1WTVNa0FpQjVwMW14K3dmSExsZUNob2VyNDQ4MjRqaUM4VnR1ODBHQ0U4?= =?utf-8?B?aXB2b0JHWDljaFhYRlVYcldMdGdiNkpWdXRFVXo0cjlDdWdwNXNod1U4bkVo?= =?utf-8?B?MHFwbXVtSWZQOWVIUjc0OUsxa3Y3MjdObUtWTWkwOVdQcWtLek9zT1hlalQz?= =?utf-8?B?RkRMOEZ5YXlwajR2RnNORXZEeWxXY0IrU1VzV0RmUUVRRkozT1NMSnBYYURq?= =?utf-8?B?clhGWDFyUnJRblBsSGc2TTN5NXNidnUwekxIQUhwcUoxU2RrR0FPdmEwcUZD?= =?utf-8?B?SnNUeG1ZSkc5M05PRXF4WkZDSm1wbDlFL2dyVFBwRi9PRlJQYXBiUkZxQWJY?= =?utf-8?B?d3VTQ2F1dEhoand6RW5tZnFLdU90Y3BYQ1M4WnJvT044ekx5NGFlK2VtTDJX?= =?utf-8?B?QXl2R09kckRGZ1BFSGloSUwvNVFsTHdmYjdoaDQvN0NZRlI5aWVPVkZ4ZnNq?= =?utf-8?B?bTMrT2gvMVhnNUQ3Wm8yRU1ZblRNUURIU254K0FJa25UN3RkdHBnR0ExakZw?= =?utf-8?B?VXRMYnpMSVFhVGNMSVYxclJpa2tubnBhRllGemxFOVYyM1Q2bHpuVnFCeERr?= =?utf-8?B?c2VaQzhVaUdFQlIyc2xLM3FlY3ZPN0NlVGd5ckFPZ3p0QlRUaTVnbW9DYTRj?= =?utf-8?B?TVhvYndJTXJFTzZ4S0xjc3cxeVNFMXUwMDR0Y2xESTdVYU9nVmg1TU4yaTR6?= =?utf-8?B?Z3Ywa0tJQ2VZM3lPb0Z2TnhwbmRjY011MkpxK200OTNrUHpJZ3ZnRUFqVVM0?= =?utf-8?B?bTZvVVd5dHhuZHhER1JoUThKeGZubG9ubW1lOGdsZkxiUkZqRmRTVGhHa3ND?= =?utf-8?B?ekxoRW5pbzRVS0FWWlFrVTlnZDBDbm1Cb2F5bUkzMzNhSWlWU1IvOXlwN2RF?= =?utf-8?B?M1IrMzNFS1lSalRtQ3c5UTBrM0IraFZBekdRREJjTVBlU1RYSi9MUjdiOE1V?= =?utf-8?B?MU11NmsrTk0yZUZ3RnhmNnFuZ25QemNxcHVQVmhRd2tuUHlTMEtKcW5CSW1l?= =?utf-8?B?dFMrdlpUazlKOW9QdG9jZUJsMVNFOUlHZjEvWENXSDI1cnR3STFLZG1ndmxD?= =?utf-8?B?bjROaTkvMlFGRkdEaW1ZWksvR0xieFFiZ1lBd2RrcllmVEhTSUVDTXVCd0l4?= =?utf-8?B?eXJQT1E0bEN1clljVDBpcGZrZE5ZbEVtcW90SDd1N2JlVjB1WDF1b3ZLdzlY?= =?utf-8?B?RUhzVlMvZHdETkkwbCtLMGRVQWNRb3Evd2gydjFocllRUC95dWZ0MTNIalpD?= =?utf-8?B?dGRFUkZwdWZzcWltUi9uQTVGWitid3RGUXYrZVBwVVMrd3ZoWTFLREZPcWFL?= =?utf-8?B?MFNKUjI0RXBLdmVLQ09jcFRKdnVYODUyaDRVVGxDMm44MHlEU1AyWTV2dlk1?= =?utf-8?B?QWUwYS9YcHArZDVOUEVMZ0xKK3k0bVo2elk0Y3ZPdHo0Nk9VQ1I0Y0JYTUdI?= =?utf-8?B?UUxrSlBwRk9xZUpUSGpTb1dsVENwcXhUelVicTgvekx3NVJxTUs4ZCs2WmlG?= =?utf-8?B?T3N5Ky9MUkwwblo1dTVYM3FoNVg5bFB4ais4N29jTDd5Q3I4Rkh6WWkxdlJ3?= =?utf-8?Q?0MznwLZlIJkbBd/3Hb?= Content-Type: multipart/alternative; boundary="_000_DM3PR11MB8713F3835423C29FE8A78042DAD52DM3PR11MB8713namp_" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: JBpvxT4ZOiVQjyjihd5hwDDuFN7fHJa56KkTGatHzrIGY7lM24271MHzDcxqKTA1VMjWLTO0TBJEWrpy/LVayzN+8pAm7PO7fbifQIs4Hp5KjFWikyr3PSQciQt41R+SxHoJwOVII6vRTv355WqQ4bVhw8FlB79+zM+sD/FLfXgahkc5iw3SRCMljX/dVYGD8g28nSPcuB9ODVsLdltejxNRU0mr2m081iPW4sYufZ0C4V/sHdGYC+pLxGgqs1q567As+tKJv0NEjTuaOsX2uVBN+9LaXUBPAmuiQNOY0VSbCfsL7F7jENDhANo3Qdq7DYUGKNrKlimy2j1l8mjr/A== X-OriginatorOrg: tamu.edu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM3PR11MB8713.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b58e0df-dc70-4cd9-7739-08def19e9846 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Aug 2026 20:34:19.4878 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 68f381e3-46da-47b9-ba57-6f322b8f0da1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: x18K3M4kTV8uvpDt8nZCmDaW58+OobCMTZit5yng1kqxLneLPupoc7Qe4EVYmfPwubZtxLEorRZki3pZ9+qdjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB6145 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDE4MSBTYWx0ZWRfX/YUVqmi4yBev Z0t6JstQwx2zK8fYuksA0Phlm8YVCZUBZwcofamUs9D67YpiNLGrdXQFHAbuMmZygH7OOqfR+73 yy4hw8PvcfI9kVfUX9LMywXIDGuwvO4= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDE4MSBTYWx0ZWRfX113rmllC667f XfslkiJ7Qm8JtN/A3w2j6q/U4uAVO53H1FwknkSF8zJsgnImBaDjkULT90O31LwhYJeAkeWK4sn XFp2grheoQ5qCWQMFGQGmvZWS0o/fsZ2khM9Nc2DL/rADmhMwBy74NmzY3ETGoQjhNnEXwA+ADC 1dSDInIJMRLj/6A2Irs4jgIJWJY8i62WD/yjZlLqOS9FhvBg+WUTloC45NKo8eaAPeXnJJytf69 PfTpyP8cSWbaynw9Naz6ICupfa0sscNVFkDqxbYCCWRR2Y5XY0zElImCR1e7cBx/frjISoy/7Nx mFULck2HuyOyyRlvNJM+Ay+QMo+bOmfBztlub8VJeQq8gx7DoJaBc/hb3+c5MVL/xhq7B8e2jl9 b/x9YPkkz8W9K334BxXqesEoLRKLGdW39YnnlWBYJOBz1mKzZu+gKVJ2wns3o6JESCdoXq4HKIH g3wuTzSKxSKLkaI/OAg== X-Authority-Analysis: v=2.4 cv=AtTeGu9P c=1 sm=1 tr=0 ts=6a70fb4e cx=c_pps a=8DpcgsHgAViCMqsLoRaOsQ==:117 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=fWIk7vUBimkA:10 a=VkNPw1HP01LnGYTKEx00:22 a=HuL5yKgYSaDc2Nh3iM7q:22 a=_Zy6Tl1u7MzQiFvf_v7L:22 a=voM4FWlXAAAA:8 a=qW_gxJ6hMWOnnuqeLzoA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=8D0HfziuWz1swOdCVasA:9 a=tqdMzFhGG8mD8GCBlf4leDhY3gs=:19 a=C0E2cQzZBMzmb4it:21 a=frz4AuCg-hUA:10 a=_W_S_7VecoQA:10 a=IC2XNlieTeVoXbcui8wp:22 X-Proofpoint-GUID: VjKoiOlB469DhjO8MWR6mmo3j_-WwUKf X-Proofpoint-ORIG-GUID: VjKoiOlB469DhjO8MWR6mmo3j_-WwUKf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-03_05,2026-08-03_02,2025-10-01_01 X-MailFrom: rlawrence@tamu.edu X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation Message-ID-Hash: CNJMJCATTAPPPK4ZDRZDJ6G6PTASPCHN X-Message-ID-Hash: CNJMJCATTAPPPK4ZDRZDJ6G6PTASPCHN X-Mailman-Approved-At: Mon, 03 Aug 2026 23:06:54 +0200 CC: "passt-dev@passt.top" X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --_000_DM3PR11MB8713F3835423C29FE8A78042DAD52DM3PR11MB8713namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SG93ZHkgRGF2aWQsDQoNCldoeSBlbnVtZXJhdGUgaW5oZXJpdGVkIGZkcz8NCuKAguKAguKAguKA gldlbGwsIEkgZmlyc3QgdHJpZWQgdXNpbmcgY2xvc2VfcmFuZ2UoKSBmcm9tIHRoZSB0YXAgZmQg dXAgdG8gbWF4LCBhcyB5b3Ugc3VnZ2VzdGVkLCBhbmQgSSBmb3VuZCB0aGF0IGl0IHdhcyBjbG9z aW5nIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBwYXNzdCBoYWQgaXRzZWxmIG9wZW5lZCAobGlrZSB0 aGUgbG9nIGZpbGUpLCB3aGljaCBpcyBvYnZpb3VzbHkgbm90IGNvcnJlY3QuDQrigILigILigILi gIJJIGNvbnNpZGVyZWQgZW51bWVyYXRpbmcgYWxsIHRoZSBwb3NzaWJsZSBmaWxlIGRlc2NyaXB0 b3JzIHRoYXQgcGFzc3QgKm1pZ2h0KiBoYXZlIG9wZW5lZCwgYW5kIHBhc3MgdGhlbSB0byBpc29s YXRlX2ZkcyBhcyBmZHNfdG9fa2VlcDogaXQgdHVybnMgb3V0IHRoYXQgdGhlcmUgYXJlIGFyb3Vu ZCAxMCBvciBzbyBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVu IG9wZW5lZCBiZWZvcmUgdGhlIGNhbGwgdG8gaXNvbGF0ZV9mZHMuIEkgZGVjaWRlZCBJIGRpZG4n dCBsaWtlIHRoYXQgc3RyYXRlZ3ksIGJlY2F1c2UgaXQgd291bGQgY3JlYXRlIGEgbWFpbnRlbmFu Y2UgYnVyZGVuOiBldmVyeSB0aW1lIHNvbWVvbmUgdGlua2VycyB3aXRoIGEgZmlsZSBkZXNjcmlw dG9yIG9yIHJlb3JkZXJzIHRoZSBzdGFydHVwIHNlcXVlbmNlLCB0aGV5IHdvdWxkIGhhdmUgdG8g cmVtZW1iZXIgdG8gYWxzbyBjaGVjayB0aGUgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzIHRvIGtl ZXAuIEFuZCBpbiBwYXJ0aWN1bGFyLCBzb21lIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3JzIGFyZSBu b24taW50dWl0aXZlLiBNYXliZSBub3QgZXZlcnlvbmUgcmVhbGl6ZXMgdGhhdCBhIHNvY2tldCBj b3VudHMgYSBmaWxlIGRlc2NyaXB0b3IuIFdoYXQgaWYgdGhlcmUncyBhIGJ1ZyBpbiBzb21lb25l J3MgbmV3IGZlYXR1cmUgd2hlcmUgc29ja2V0cyBhcmUganVzdCBkaXNhcHBlYXJpbmcgd2l0aG91 dCBhIHRyYWNlPyBJIHdvdWxkIGhhdGUgdG8gd2FzdGUgc29tZW9uZSdzIHRpbWUgY2hhc2luZyBh IHN1YnRsZSBidWcgbGlrZSB0aGF0LiBTbywgSSBkZWNpZGVkIHRoYXQgZW51bWVyYXRpbmcgZmRz X3RvX2Nsb3NlIGF0IHJ1bnRpbWUgdGltZSB3b3VsZCBiZSBsZXNzIG9mIGEgbWFpbnRlbmFuY2Ug YnVyZGVuIHRoYW4gZW51bWVyYXRpbmcgZmRzX3RvX2tlZXAgaW4gY29kZS4NCuKAguKAguKAguKA gkkgYWxzbyBjb25zaWRlcmVkIHJlb3JkZXJpbmcgdGhlIHN0YXJ0dXAgc28gdGhhdCBmb3JraW5n IGhhcHBlbnMgYmVmb3JlIG9wZW5pbmcgYW55IGZpbGVzLCBzbyBpc29sYXRlIGZkcyBjYW4gcnVu IHdpdGggb25seSB0aGUgdGFwIGZkIGFzIGl0cyBleGNsdXNpb24gbGlzdCwgYnV0IEkgZGlkbid0 IHNlZSBob3cgdG8gbWFrZSB0aGF0IGNoYW5nZSB3aXRob3V0IHNpZ25pZmljYW50IHJlZmFjdG9y aW5nLiBJdCBtaWdodCBlbmQgdXAgYmVpbmcgbmVjZXNzYXJ5LCBidXQgSSBjYW4ndCBtYWtlIHRo YXQgZGVjaXNpb24gb24gbXkgb3duLiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIGNvZGUgd2VsbCBl bm91Z2guIEludGVyZXN0ZWQgaW4gdGFsa2luZyB0aGF0IHRocm91Z2g/DQoNCkkgZG9uJ3QgdW5k ZXJzdGFuZCB5b3VyIGNvbW1lbnQgYWJvdXQgY29uZl90YXBfZmQgYmVjb21pbmcgc3RhdGljLiBN eSBpbXBsZW1lbnRhdGlvbiBwYXJzZXMgLUYgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgb3RoZXIg YXJndW1lbnRzIChub3QgZWFybHkgYW55bW9yZSkuIERpZCB5b3UgbWVhbiB0aGF0IHlvdSB3b3Vs ZCBpbmxpbmUgdGhlIHN0cmluZyB0byBpbnQgY29udmVyc2lvbiBpbiBjb25mKCk/IFRoYXQgc2Vl bXMgcmVhc29uYWJsZS4gSSBqdXN0IGZlbHQgdGhhdCBjb25mX3RhcF9mZCB3YXMgb3ZlcmFsbCB0 b28gY29tcGxleCB0byBpbmxpbmUgaW4gaXRzIGN1cnJlbnQgZm9ybS4NCg0KV2hpbGUgcmVsb2Nh dGluZyB0YXAgZmQgdG8gMysgY291bGQgZWFzaWx5IGhhcHBlbiBsYXRlciwgSSBzdGlsbCBkb24n dCB0aGluayBpdCBzaG91bGQgaGFwcGVuIGR1cmluZyBpc29sYXRpb24sIGJlY2F1c2UgaXQgYWN0 dWFsbHkgY29uY2VwdHVhbGx5IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggaXNvbGF0aW9uLiBJdCdz IGFib3V0IGF2b2lkaW5nIGEgY29ybmVyIGNhc2UgdGhhdCB3b3VsZCBjYXVzZSB0YXAgZGV2aWNl IGNoYXR0ZXIgYWNjaWRlbnRhbGx5IGJlaW5nIHByaW50ZWQgdG8gc3RkIGVyciBvciBzb21ldGhp bmcgbGlrZSB0aGF0LiBJc29sYXRpb24gc2hvdWxkIGJlIGZvY3VzZWQgb24gY2xvc2luZyB1bnVz ZWQgZmRzLCBub3Qgb24gbWFuYWdpbmcgZmRzIHRoYXQgYXJlIGluIHVzZS4gUGVyaGFwcyB3ZSBj b3VsZCByZWxvY2F0ZSB0aGUgdGFwIGZkIHRvIDMrIGluIG1haW4sIGFyb3VuZCB0aGUgc2FtZSB0 aW1lIHRoYXQgd2UgYXJlIHBvcHVsYXRpbmcgMOKAlDIsIGZvciBjbGFyaXR5IChzaW5jZSB0aG9z ZSB0d28gc3RlcHMgbmVlZCB0byBjb29yZGluYXRlKS4NCg0KSSB3YXMgbm90IGF3YXJlIHRoYXQg ZHluYW1pYyBtZW1vcnkgd291bGQgYmUgb2ZmIHRoZSB0YWJsZS4gTXkgbWFpbiByZWFzb24gZm9y IGRvaW5nIGl0IHRoYXQgd2F5IGlzIGJlY2F1c2UgSSBkaWRuJ3Qgd2FudCBhIHZlcnkgbGFyZ2Ug YXJyYXkgKG1heCBmZHMpIHRvIGJlIGFsd2F5cyBpbiBtZW1vcnkgZXZlbiB0aG91Z2ggbW9zdCBv ZiB0aGUgdGltZSBpdCB3b3VsZCBiZSB1bnVzZWQuIEkgd2lsbCBoYXZlIHRvIHJlLXRoaW5rIHRo ZSBzdHJhdGVneS4gTWF5YmUgdGhlcmUgaXMgYW5vdGhlciB3YXkgdG8gYXZvaWQgYSBsYXJnZSB1 bnVzZWQgYXJyYXkuDQoNClRoYW5rIHlvdSBmb3IgcG9pbnRpbmcgb3V0IHRoZSBmbGF3IGluIG15 IGxvZ2ljIHJlZ2FyZGluZyB0aGUgbWF4IG9wZW4gZmlsZXMgbGltaXQuIEkgd2lsbCBoYXZlIHRv IHRoaW5rIGhhcmRlciBhYm91dCBhIGNvcnJlY3Qgd2F5IHRvIGNsb3NlIGZkcy4NCg0KSSBkbyBu b3QgYmVsaWV2ZSB0aGF0IG15IHBhdGNoIGRpc2FibGVzIHlvdXIgZmVhdHVyZSBvZiBwb3B1bGF0 aW5nIGZkcyAw4oCUMiB3aXRoIGRldm51bGwuIFRoYXQgaGFwcGVucyBpbiBtYWluLCBub3QgaW4g aXNvbGF0ZSBmZHMuIE15IGltcGxlbWVudGF0aW9uIG9mIGVudW1lcmF0aW5nIHRoZSBpbmhlcml0 ZWQgZmRzIGV4Y2x1ZGVzIDDigJQyLg0KDQpJIGhvcGUgdG8gaGVhciBmcm9tIHlvdSBhZ2FpbiBz b29uDQpSaWNoYXJkDQoNClBTLiBJbiBjYXNlIGFueW9uZSBlbHNlIHdobydzIHJlYWRpbmcgYWxv bmcgaGFzIGNvbmNlcm5zIGFib3V0IHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaGl0IGNhdXNl ZCBieSBhYmFuZG9uaW5nIGNsb3NlX3JhbmdlKCksIEkgaGF2ZSBhbiBhcmd1bWVudCBwcmVwYXJl ZCB0byBleHBsYWluIHdoeSB0aGF0IGlzIG5vdCBhIHNlcmlvdXMgY29uY2Vybi4NCg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCkZyb206IERhdmlkIEdpYnNvbg0KU2VudDogU3Vu ZGF5LCBBdWd1c3QgMiwgMjAyNiAxMTo0NCBQTQ0KVG86IExhd3JlbmNlLCBSaWNoYXJkIEUNCkNj OiBwYXNzdC1kZXZAcGFzc3QudG9wDQpTdWJqZWN0OiBSZTogW1BBVENIIHYyXSBmZWF0OiBQYXNz IG9wZW4gZmlsZXMgdG8gY2hpbGQgaW4gcGFzdGEgbW9kZQ0KDQpPbiBGcmksIEp1bCAzMSwgMjAy NiBhdCAwODrigIoyNjrigIowMUFNIC0wNTAwLCBSaWNoYXJkIExhd3JlbmNlIHdyb3RlOiA+IFdo ZW4gcGFzdGEgbW9kZSBpcyB1c2VkIHRvIGxhdW5jaCBhbiBleGVjdXRhYmxlIChgcGFzdGEgW0NP TU1BTkRdYCkgYW5kID4gdGhhdCBleGVjdXRhYmxlIGFjY2VwdHMgaW5wdXRzIGluIHRoZSBmb3Jt IG9mIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0b3JzID4gKHN1Y2ggYXMgYGJ3cmFwYCksDQpaalFj bVFSWUZwZnB0QmFubmVyU3RhcnQNClRoaXMgTWVzc2FnZSBJcyBGcm9tIGFuIEV4dGVybmFsIFNl bmRlcg0KVGhpcyBtZXNzYWdlIGNhbWUgZnJvbSBvdXRzaWRlIHlvdXIgb3JnYW5pemF0aW9uLg0K DQpaalFjbVFSWUZwZnB0QmFubmVyRW5kDQoNCk9uIEZyaSwgSnVsIDMxLCAyMDI2IGF0IDA4OjI2 OjAxQU0gLTA1MDAsIFJpY2hhcmQgTGF3cmVuY2Ugd3JvdGU6DQo+IFdoZW4gcGFzdGEgbW9kZSBp cyB1c2VkIHRvIGxhdW5jaCBhbiBleGVjdXRhYmxlIChgcGFzdGEgW0NPTU1BTkRdYCkgYW5kDQo+ IHRoYXQgZXhlY3V0YWJsZSBhY2NlcHRzIGlucHV0cyBpbiB0aGUgZm9ybSBvZiBhcmJpdHJhcnkg ZmlsZSBkZXNjcmlwdG9ycw0KPiAoc3VjaCBhcyBgYndyYXBgKSwgdGhlbiBwYXNzdCBzaG91bGQg bm90IHN0YW5kIGluIHRoZSB3YXkgb2YgdGhlIHBhcmVudA0KPiBwcm9jZXNzIGhhbmRpbmcgb2Zm IHRob3NlIGZpbGUgZGVzY3JpcHRvcnMgdG8gdGhlIGNoaWxkIHByb2Nlc3MuDQo+IFNlZSBidWcg MjA0IGZvciBhZGRpdGlvbmFsIGRpc2N1c3Npb24uDQo+DQo+IFRoZSBzdHJhdGVneSB1c2VkIGhl cmUgaXMgdG8gZGVsYXkgdGhlIGNsb3Npbmcgb2YgaW5oZXJpdGVkIGZpbGUNCj4gZGVzY3JpcHRv cnMgdW50aWwgYWZ0ZXIgcGFzdGEgaGFzIGZvcmtlZCB0byBleGVjdXRlIHRoZSBDT01NQU5ELA0K PiB3aGljaCBoYXBwZW5zIGR1cmluZyB0aGUgY2FsbCB0byBgY29uZigpYC4NCj4NCj4gQSBuaWNl IHNpZGUtZWZmZWN0IGlzIHRoYXQgdGhlIGAtLWZkYCBhcmd1bWVudCBubyBsb25nZXIgbmVlZHMg dG8gYmUNCj4gcGFyc2VkIGVhcmx5LCBhbmQgY2FuIHJlam9pbiB0aGUgb3RoZXIgYXJncyBwYXJz ZWQgbm9ybWFsbHkgaW4gYGNvbmYoKWAuDQo+DQo+IEhpZ2hsaWdodGVkIGNoYW5nZXM6DQo+IC0g YGNvbmZfdGFwX2ZkKClgIGlzIG5vdyBjYWxsZWQgZGlyZWN0bHkgYnkgYGNvbmYoKWAuDQo+IC0g VGhlIHRhcCBmZCBpcyByZWxvY2F0ZWQgdG8gYSBudW1iZXIgYXQgbGVhc3QgMywgcmF0aGVyIHRo YW4gZXhhY3RseSAzLg0KPiAtIGBzbmFwc2hvdF9pbml0aWFsX2ZkcygpYCBtZW1vcml6ZXMgaW5o ZXJpdGVkIGZkcyBlYXJseSBpbiBzdGFydHVwLg0KPiAtIEluaGVyaXRlZCBmZHMgYXJlIGRpc2Nv dmVyZWQgYnkgcmVhZGluZyBmcm9tIGAvcHJvY2AgaWYgYXZhaWxhYmxlLg0KPiAtIGBpc29sYXRl X2ZkcygpYCBpcyBub3cgY2FsbGVkIGFmdGVyIGBjb25mKClgIGluIGBtYWluKClgLg0KDQpUaGFu a3MgZm9yIHRoZSBuZXcgdmVyc2lvbiwgSSBsaWtlIHRoZSBiZWhhdmlvdXIgb2YgdGhpcyBvbmUg bXVjaA0KYmV0dGVyLiAgSG93ZXZlci4uIG1heWJlIEknbSBtaXNzaW5nIHNvbWV0aGluZywgYnV0 IGl0IHNlZW1zIGxpa2UgaXQncw0KbW9yZSBjb21wbGljYXRlZCB0aGFuIGl0IG5lZWRzIHRvIGJl Lg0KDQpJbiBwYXJ0aWN1bGFyLCB5b3UndmUgY29tcGxldGVseSByZXBsYWNlZCB0aGUgaW1wbGVt ZW50YXRpb24gb2YNCmlzb2xhdGVfZmRzKCkgLSByYXRoZXIgdGhhbiB1c2luZyBjbG9zZV9yYW5n ZSgpLCBpdCdzIGVudW1lcmF0aW5nIHRoZQ0Kb3BlbiBmZHMgdmlhIC9wcm9jIGFuZCBjbG9zZSgp aW5nIHRoZW0gaW5kaXZpZHVhbGx5LiAgSXMgdGhlcmUgYQ0KcmVhc29uIHRvIGRvIHRoaXM/ICBB RkFJQ1Qgbm93IHRoYXQgdGhhdCBpc29sYXRlX2ZkcygpIGlzIG1vdmVkIGFmdGVyDQp0aGUgc3Bh d25pbmcgb2YgdGhlIHRoZSBwYXN0YSBzaGVsbCAob3Igd2hhdGV2ZXIpLCB3ZSdyZSBmcmVlIHRv IGNsb3NlDQpldmVyeSBmZCBleGNlcHQgdGFwX2ZkLCBhbmQgdGhlIGV4aXN0aW5nIGltcGxlbWVu dGF0aW9uIHNob3VsZCBkbyB0aGF0DQpqdXN0IGZpbmUuICAoY2xvc2VfcmFuZ2UoKSBpcyBub24t cG9ydGFibGUsIG9mIGNvdXJzZSwgYnV0IHRoYXQncyB0cnVlDQpvZiAvcHJvYy9zZWxmL2ZkIHRv bykuDQoNClNvbWUgbW9yZSBtaW5vciBwb2ludHMgbm90ZWQgYmVsb3cuDQoNCj4gU2lnbmVkLW9m Zi1ieTogUmljaGFyZCBMYXdyZW5jZSA8cmxhd3JlbmNlQHRhbXUuZWR1Pg0KPiAtLS0NCj4gIGNv bmYuYyAgICAgIHwgIDM5ICsrKysrKysrLS0tLS0tLQ0KPiAgY29uZi5oICAgICAgfCAgIDEgLQ0K PiAgaXNvbGF0aW9uLmMgfCAxMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLQ0KPiAgaXNvbGF0aW9uLmggfCAgIDkgKysrLQ0KPiAgcGFzc3QuYyAg ICAgfCAgIDcgKystDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCA2MiBk ZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2NvbmYuYyBiL2NvbmYuYw0KPiBpbmRleCBm YWYyNjgxLi42YmZkZmI2IDEwMDY0NA0KPiAtLS0gYS9jb25mLmMNCj4gKysrIGIvY29uZi5jDQo+ IEBAIC0xMTY5LDI2ICsxMTY5LDIwIEBAIHN0YXRpYyB2b2lkIGNvbmZfc29ja19saXN0ZW4oY29u c3Qgc3RydWN0IGN0eCAqYykNCj4gIH0NCj4NCj4gIC8qKg0KPiAtICogY29uZl90YXBfZmQoKSAt IFJlYWQgdGFwIGZkIGFzIHN1cHBsaWVkIGJ5IC1GIGNvbW1hbmQgbGluZSBvcHRpb24NCj4gLSAq IEBhcmdjOiAgICBBcmd1bWVudCBjb3VudA0KPiAtICogQGFyZ3Y6ICAgIENvbW1hbmQgbGluZSBv cHRpb25zDQo+ICsgKiBjb25mX3RhcF9mZCgpIC0gUmVhZCBhbmQgcmVsb2NhdGUgdGFwIGZkIGFz IHN1cHBsaWVkIGJ5IC1GIGNvbW1hbmQgbGluZSBvcHRpb24NCj4gKyAqIEBmZGFyZzogICBTdHJp bmcgY29udGFpbmluZyBmZA0KPiArICoNCj4gKyAqIFNob3VsZDoNCj4gKyAqICAtIG1vdmUgdGhl IC0tZmQgZGVzY3JpcHRvciBvdXQgb2YgdGhlIHJhbmdlIDAtMg0KPiAgICoNCj4gICAqIFJldHVy bjogZmQgbnVtYmVyIGZyb20gLS1mZCBvcHRpb24sIG9yIC0xIGlmIG5vdCBzdXBwbGllZA0KPiAg ICovDQo+IC1pbnQgY29uZl90YXBfZmQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiAraW50IGNv bmZfdGFwX2ZkKGNvbnN0IGNoYXIgKmZkYXJnKQ0KDQpOb3cgdGhhdCBpc29sYXRlX2ZkcygpIGlz IGFmdGVyIGNvbmYoKSwgd2Ugc2hvdWxkbid0IG5lZWQgdG8gcHJlcGFyc2UNCi1GIGFueSBtb3Jl IC0gd2UgY2FuIHVzZSB0aGUgbm9ybWFsIHBhcnNlIGluIGNvbmYoKS4gIEkgdGhpbmsgdGhhdA0K bWVhbnMgdGhpcyBjYW4gYmVjb21lIHN0YXRpYy4NCg0KPiAgew0KPiAtICAgICBjb25zdCBzdHJ1 Y3Qgb3B0aW9uIG9wdGZkW10gPSB7IHsgImZkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdG JyB9LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMCB9LCB9Ow0K PiAtICAgICBjb25zdCBjaGFyICpmZGFyZyA9IE5VTEwsICpwOw0KPiAgICAgICB1bnNpZ25lZCBs b25nIHZhbDsNCj4gLSAgICAgaW50IG5hbWU7DQo+IC0NCj4gLSAgICAgb3B0aW5kID0gMDsNCj4g LSAgICAgZG8gew0KPiAtICAgICAgICAgICAgIG5hbWUgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2 LCAiLTpGOiIsIG9wdGZkLCBOVUxMKTsNCj4gLSAgICAgICAgICAgICBpZiAobmFtZSA9PSAnRicp DQo+IC0gICAgICAgICAgICAgICAgICAgICBmZGFyZyA9IG9wdGFyZzsNCj4gLSAgICAgfSB3aGls ZSAobmFtZSAhPSAtMSk7DQo+ICsgICAgIGNvbnN0IGNoYXIgKnA7DQo+ICsgICAgIGludCBuZXdf ZmQ7DQo+ICsgICAgIGludCBmZDsNCj4NCj4gICAgICAgaWYgKCFmZGFyZykNCj4gICAgICAgICAg ICAgICByZXR1cm4gLTE7DQo+IEBAIC0xMTk3LDcgKzExOTEsMTggQEAgaW50IGNvbmZfdGFwX2Zk KGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gICAgICAgaWYgKCFwYXJzZV91bnNpZ25lZCgmcCwg MCwgJnZhbCkgfHwgIXBhcnNlX2VvaShwKSB8fCB2YWwgPiBJTlRfTUFYKQ0KPiAgICAgICAgICAg ICAgIGRpZSgiSW52YWxpZCAtLWZkOiAlcyIsIGZkYXJnKTsNCj4NCj4gLSAgICAgcmV0dXJuIHZh bDsNCj4gKyAgICAgZmQgPSAoaW50KXZhbDsNCj4gKyAgICAgaWYgKGZkID49IDAgJiYgZmQgPCAz KSB7DQo+ICsgICAgICAgICAgICAgbmV3X2ZkID0gZmNudGwoZmQsIEZfRFVQRkQsIDMpOw0KPiAr DQo+ICsgICAgICAgICAgICAgaWYgKG5ld19mZCA8IDApDQo+ICsgICAgICAgICAgICAgICAgICAg ICBkaWVfcGVycm9yKCJDb3VsZCBub3QgcmVsb2NhdGUgLS1mZCBkZXNjcmlwdG9yIik7DQo+ICsN Cj4gKyAgICAgICAgICAgICBjbG9zZShmZCk7DQo+ICsgICAgICAgICAgICAgZmQgPSBuZXdfZmQ7 DQoNCkkgdGhpbmsgd2UgY2FuIGRlbGF5IHRoaXMgcmVsb2NhdGlvbiB0byBpc29sYXRlX2Zkcygp IC0gaW4gd2hpY2ggY2FzZSwNCmFnYWluLCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gc2hv dWxkIGFscmVhZHkgZG8gd2hhdCB3ZSBuZWVkLg0KDQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBy ZXR1cm4gZmQ7DQo+ICB9DQo+DQo+ICAvKioNCj4gQEAgLTE2MjUsNyArMTYzMCw3IEBAIHZvaWQg Y29uZihzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ICAgICAgICAgICAg ICAgICAgICAgICBjLT5mZF9jb250cm9sX2xpc3RlbiA9IGMtPmZkX2NvbnRyb2wgPSAtMTsNCj4g ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICAgIGNhc2UgJ0YnOg0K PiAtICAgICAgICAgICAgICAgICAgICAgLyogLS1mZCB3YXMgcGFyc2VkIGVhcmx5IGFuZCBjLT5m ZF90YXAgc2V0IGluIG1haW4oKSAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgYy0+ZmRfdGFw ID0gY29uZl90YXBfZmQob3B0YXJnKTsNCj4gICAgICAgICAgICAgICAgICAgICAgIGMtPm9uZV9v ZmYgPSB0cnVlOw0KPiAgICAgICAgICAgICAgICAgICAgICAgKmMtPnNvY2tfcGF0aCA9IDA7DQo+ ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gZGlmZiAtLWdpdCBhL2NvbmYuaCBiL2Nv bmYuaA0KPiBpbmRleCAxOWJmOWJjLi4xNmY5NzE4IDEwMDY0NA0KPiAtLS0gYS9jb25mLmgNCj4g KysrIGIvY29uZi5oDQo+IEBAIC03LDcgKzcsNiBAQA0KPiAgI2RlZmluZSBDT05GX0gNCj4NCj4g IGVudW0gcGFzc3RfbW9kZXMgY29uZl9tb2RlKGludCBhcmdjLCBjaGFyICphcmd2W10pOw0KPiAt aW50IGNvbmZfdGFwX2ZkKGludCBhcmdjLCBjaGFyICoqYXJndik7DQo+ICB2b2lkIGNvbmYoc3Ry dWN0IGN0eCAqYywgaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsNCj4gIHZvaWQgY29uZl9saXN0ZW5f aGFuZGxlcihzdHJ1Y3QgY3R4ICpjLCB1aW50MzJfdCBldmVudHMpOw0KPiAgdm9pZCBjb25mX2hh bmRsZXIoc3RydWN0IGN0eCAqYywgdWludDMyX3QgZXZlbnRzKTsNCj4gZGlmZiAtLWdpdCBhL2lz b2xhdGlvbi5jIGIvaXNvbGF0aW9uLmMNCj4gaW5kZXggOTRjYmU3Zi4uMjQzNDc0OCAxMDA2NDQN Cj4gLS0tIGEvaXNvbGF0aW9uLmMNCj4gKysrIGIvaXNvbGF0aW9uLmMNCj4gQEAgLTI0LDE5ICsy NCwxMyBAQA0KPiAgICogZG9uZSBhbnl0aGluZyB3ZSBuZWVkIHRvIGRvIHdpdGggdGhvc2UgcmVz b3VyY2VzLCBzbyB3ZSBoYXZlDQo+ICAgKiBtdWx0aXBsZSBzdGFnZXMgb2Ygc2VsZi1pc29sYXRp b24uICBJbiBvcmRlciB0aGVzZSBhcmU6DQo+ICAgKg0KPiAtICogMWEuIGlzb2xhdGVfaW5pdGlh bCgpDQo+ICsgKiAxLiBpc29sYXRlX2luaXRpYWwoKQ0KPiAgICogPT09PT09PT09PT09PT09PT09 PT0NCj4gICAqDQo+ICAgKiBFeGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlciBzdGFydHVwLCBkcm9w cyBjYXBhYmlsaXRpZXMgd2UgZG9uJ3QNCj4gICAqIG5lZWQgYXQgYW55IHBvaW50IGR1cmluZyBl eGVjdXRpb24gKG9yIHdoaWNoIHdlIGdhaW4gYmFjayB3aGVuIHdlDQo+ICAgKiBuZWVkIGJ5IGpv aW5pbmcgb3RoZXIgbmFtZXNwYWNlcykuDQo+ICAgKg0KPiAtICogMWIuIGlzb2xhdGVfZmRzKCkN Cj4gLSAqID09PT09PT09PT09PT09PT0NCj4gLSAqDQo+IC0gKiBFeGVjdXRlZCBpbW1lZGlhdGVs eSBhZnRlciBpc29sYXRlX2luaXRpYWwoKS4gIENsb3NlcyBhbnkgbGVha2VkDQo+IC0gKiBmaWxl cyB3ZSBtaWdodCBoYXZlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgcHJvY2Vzcy4NCj4gLSAq DQo+ICAgKiAyLiBpc29sYXRlX3VzZXIoKQ0KPiAgICogPT09PT09PT09PT09PT09PT0NCj4gICAq DQo+IEBAIC00NCwxNCArMzgsMjAgQEANCj4gICAqIG9wZXJhdGUgaW4uICBTZXRzIG91ciBmaW5h bCBVSUQgJiBHSUQsIGFuZCBlbnRlcnMgdGhlIGNvcnJlY3QgdXNlcg0KPiAgICogbmFtZXNwYWNl Lg0KPiAgICoNCj4gLSAqIDMuIGlzb2xhdGVfcHJlZm9yaygpDQo+ICsgKiAzLiBpc29sYXRlX2Zk cygpDQo+ICsgKiA9PT09PT09PT09PT09PT09DQo+ICsgKg0KPiArICogRXhlY3V0ZWQgYWZ0ZXIg Y29uZigpLiAgQ2xvc2VzIGFueSBsZWFrZWQNCj4gKyAqIGZpbGVzIHdlIG1pZ2h0IGhhdmUgaW5o ZXJpdGVkIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzLg0KPiArICoNCj4gKyAqIDQuIGlzb2xhdGVf cHJlZm9yaygpDQo+ICAgKiA9PT09PT09PT09PT09PT09PT09PQ0KPiAgICoNCj4gICAqIEV4ZWN1 dGVkIGFmdGVyIGFsbCBzZXR1cCwgYnV0IGJlZm9yZSBkYWVtb25pc2luZyAoZm9yaygpaW5nIGlu dG8NCj4gICAqIHRoZSBiYWNrZ3JvdW5kKS4gIFVzZXMgbW91bnQgbmFtZXNwYWNlIGFuZCBwaXZv dF9yb290KCkgdG8gcmVtb3ZlDQo+ICAgKiBvdXIgYWNjZXNzIHRvIHRoZSBmaWxlc3lzdGVtLg0K PiAgICoNCj4gLSAqIDQuIGlzb2xhdGVfcG9zdGZvcmsoKQ0KPiArICogNS4gaXNvbGF0ZV9wb3N0 Zm9yaygpDQo+ICAgKiA9PT09PT09PT09PT09PT09PT09PT0NCj4gICAqDQo+ICAgKiBFeGVjdXRl ZCBpbW1lZGlhdGVseSBhZnRlciBkYWVtb25pemluZywgYnV0IGJlZm9yZSBlbnRlcmluZyB0aGUN Cj4gQEAgLTYxLDYgKzYxLDcgQEANCj4gICAqIHJ1bnRpbWUgb3BlcmF0aW9uLg0KPiAgICovDQo+ DQo+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+DQo+ICAjaW5jbHVkZSA8ZXJybm8uaD4NCj4gICNpbmNs dWRlIDxmY250bC5oPg0KPiAgI2luY2x1ZGUgPGdycC5oPg0KPiBAQCAtNzcsNiArNzgsNyBAQA0K PiAgI2luY2x1ZGUgPHVuaXN0ZC5oPg0KPiAgI2luY2x1ZGUgPHN5cy9tb3VudC5oPg0KPiAgI2lu Y2x1ZGUgPHN5cy9wcmN0bC5oPg0KPiArI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPg0KPiAgI2lu Y2x1ZGUgPHN5cy9zb2NrZXQuaD4NCj4gICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPg0KPiAgI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPg0KPiBAQCAtMjQ4LDQ3ICsyNTAsOTYgQEAgdm9pZCBpc29sYXRl X2luaXRpYWwodm9pZCkNCj4gICAgICAgZHJvcF9jYXBzX2VwX2V4Y2VwdChrZWVwKTsNCj4gIH0N Cj4NCj4gLS8qDQo+IC0gKiBpc29sYXRlX2ZkcygpIC0gQ2xvc2UgbGVha2VkIGZpbGVzLCBidXQg bm90IC0tZmQsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycg0KPiAtICogQGFyZ2M6ICAgIEFyZ3VtZW50 IGNvdW50DQo+IC0gKiBAYXJndjogICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMsIGFzIHdlIG5lZWQg dG8gc2tpcCBhbnkgZmlsZSBnaXZlbiB2aWEgLS1mZA0KPiAtICoNCj4gLSAqIFNob3VsZDoNCj4g LSAqICAtIGNsb3NlIGFsbCBvcGVuIGZpbGVzIGV4Y2VwdCBmb3Igc3RhbmRhcmQgc3RyZWFtcyBh bmQgdGhlIG9uZSBmcm9tIC0tZmQNCj4gLSAqICAtIG1vdmUgdGhlIC0tZmQgZGVzY3JpcHRvciBv dXQgb2YgdGhlIHJhbmdlIDAtMg0KPiAtICoNCj4gLSAqIFJldHVybjogbmV3IGZkIG51bWJlciBm b3IgZGVzY3JpcHRvciBmcm9tIC0tZmQsIG9yIC0xIGlmIG5vdCBzcGVjaWZpZWQNCj4gKy8qKg0K PiArICogc25hcHNob3RfaW5pdGlhbF9mZHMoKSAtIFNuYXBzaG90IGluaXRpYWwgZmlsZSBkZXNj cmlwdG9ycyBpbmhlcml0ZWQgZnJvbSBwYXJlbnQNCj4gKyAqIG90aGVyIHRoYW4gc3RhbmRhcmQg c3RyZWFtcyAoc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQ0KPiArICogQGlmZHM6ICAgIFNuYXBzaG90 IHN0cnVjdCBvZiBpbml0aWFsIGZpbGUgZGVzY3JpcHRvcnMgdG8gcG9wdWxhdGUNCj4gICAqLw0K PiAtaW50IGlzb2xhdGVfZmRzKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gK3ZvaWQgc25hcHNo b3RfaW5pdGlhbF9mZHMoc3RydWN0IGluaXRpYWxfZmRfc25hcHNob3QgKmlmZHMpDQo+ICB7DQo+ IC0gICAgIGludCBmZCwgY2xvc2VfZnJvbSA9IFNUREVSUl9GSUxFTk8gKyAxOw0KPiArICAgICBz dHJ1Y3QgZGlyZW50ICplbnRyeTsNCj4gKyAgICAgc2l6ZV90IGNhcGFjaXR5ID0gMTY7DQo+ICsg ICAgIGludCBtYXhfZmQgPSAxMDI0Ow0KPiArICAgICBzdHJ1Y3QgcmxpbWl0IHJsOw0KPiArICAg ICBsb25nIHBhcnNlZF9mZDsNCj4gKyAgICAgY2hhciAqZW5kcHRyOw0KPiArICAgICBpbnQgZGly X2ZkOw0KPiArICAgICBESVIgKmRpcjsNCj4gKyAgICAgaW50IGZkOw0KPiArDQo+ICsgICAgIGlm ZHMtPmFyciA9IE5VTEw7DQo+ICsgICAgIGlmZHMtPmNvdW50ID0gMDsNCj4gKw0KPiArICAgICBk aXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7DQo+ICsgICAgIGlmIChkaXIpIHsNCj4gKyAg ICAgICAgICAgICBkaXJfZmQgPSBkaXJmZChkaXIpOw0KPiArICAgICAgICAgICAgIGlmZHMtPmFy ciA9IG1hbGxvYyhzaXplb2YoaW50KSAqIGNhcGFjaXR5KTsNCg0KV2UgZG9uJ3QgYWxsb2NhdGUo KSBtZW1vcnkgaW4gcGFzc3QgYXMgYSBtYXR0ZXIgb2YgcG9saWN5LiAgV2UgZW5mb3JjZQ0KdGhh dCB3aXRoIHNlY2NvbXAsIGFsdGhvdWdoIHlvdSdsbCBnZXQgYXdheSB3aXRoIGl0IGhlcmUgYmVj YXVzZSB0aGUNCnNlY2NvbXAgZmlsdGVyIGlzIG9ubHkgYXBwbGllZCBpbiBpc29sYXRlX3Bvc3Rm b3JrKCkuICBOb25ldGhlbGVzcyBhDQpzdGF0aWMgYXJyYXkgc2hvdWxkIGJlIHVzZWQgaW5zdGVh ZC4gIElmIHRoaXMgZnVuY3Rpb24gaXMgZXZlbiBuZWVkZWQsDQp3aGljaCBhcyBub3RlZCBhYm92 ZSwgSSBkb24ndCBhY3R1YWxseSBzZWUgYSByZWFzb24gZm9yIGF0IHRoZSBtb21lbnQuDQoNCj4g KyAgICAgICAgICAgICBpZiAoIWlmZHMtPmFycikNCj4gKyAgICAgICAgICAgICAgICAgICAgIGRp ZV9wZXJyb3IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGluaGVyaXRlZCBmZHMiKTsN Cj4gKw0KPiArICAgICAgICAgICAgIHdoaWxlICgoZW50cnkgPSByZWFkZGlyKGRpcikpICE9IE5V TEwpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+ZF9uYW1lWzBdIDwgJzAn IHx8IGVudHJ5LT5kX25hbWVbMF0gPiAnOScpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiArICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2ZkID0gc3RydG9s KGVudHJ5LT5kX25hbWUsICZlbmRwdHIsIDEwKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGlm ICgqZW5kcHRyICE9ICdcMCcgfHwgcGFyc2VkX2ZkIDwgMCB8fCBwYXJzZWRfZmQgPiBJTlRfTUFY KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIGZkID0gKGludClwYXJzZWRfZmQ7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAvKiBJZ25vcmUgc3RkaW4vc3Rkb3V0L3N0ZGVyciBhbmQgdGhlIG9wZW5kaXIgaGFuZGxlIGl0 c2VsZiAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGZkID4gU1RERVJSX0ZJTEVOTyAm JiBmZCAhPSBkaXJfZmQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlm ZHMtPmNvdW50ID49IGNhcGFjaXR5KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IG5ld19jYXAgPSBjYXBhY2l0eSAqIDI7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuZXdfYXJyID0gcmVhbGxvYyhpZmRzLT5hcnIs IHNpemVvZihpbnQpICogbmV3X2NhcCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIW5ld19hcnIpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkaWVfcGVycm9yKCJGYWlsZWQgdG8gcmVhbGxvY2F0ZSBtZW1v cnkgZm9yIGluaGVyaXRlZCBmZHMiKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmZHMtPmFyciA9IG5ld19hcnI7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FwYWNpdHkgPSBuZXdfY2FwOw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZHMtPmFy cltpZmRzLT5jb3VudCsrXSA9IGZkOw0KPiArICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAg ICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICBjbG9zZWRpcihkaXIpOw0KPiArICAgICAgICAg ICAgIHJldHVybjsNCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIC8qIEZhbGxiYWNrIGZvciBlbnZp cm9ubWVudHMgd2l0aG91dCAvcHJvYyAoZS5nLiBtaW5pbWFsIGNocm9vdHMpICovDQo+ICsgICAg IGlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA9PSAwICYmIHJsLnJsaW1fY3VyICE9 IFJMSU1fSU5GSU5JVFkpDQo+ICsgICAgICAgICAgICAgbWF4X2ZkID0gKGludClybC5ybGltX2N1 cjsNCj4NCj4gLSAgICAgZmQgPSBjb25mX3RhcF9mZChhcmdjLCBhcmd2KTsNCj4gKyAgICAgaWZk cy0+YXJyID0gbWFsbG9jKHNpemVvZihpbnQpICogbWF4X2ZkKTsNCj4gKyAgICAgaWYgKCFpZmRz LT5hcnIpDQo+ICsgICAgICAgICAgICAgZGllX3BlcnJvcigiRmFpbGVkIHRvIGFsbG9jYXRlIG1l bW9yeSBmb3IgaW5oZXJpdGVkIGZkcyBmYWxsYmFjayIpOw0KPg0KPiAtICAgICBpZiAoZmQgPj0g MCkgew0KPiAtICAgICAgICAgICAgIC8qIE1vdmUgdGhlIHBhc3NlZCBmZCB0byBhIG1vcmUgY29u dmVuaWVudCBsb2NhdGlvbiAqLw0KPiAtICAgICAgICAgICAgIGlmIChmZCAhPSBjbG9zZV9mcm9t ICAgICAgICAgICAgICAgICAgICAmJg0KPiAtICAgICAgICAgICAgICAgICAoZHVwMihmZCwgY2xv c2VfZnJvbSkgIT0gY2xvc2VfZnJvbSB8fA0KPiAtICAgICAgICAgICAgICAgICAgY2xvc2UoZmQp KSkNCj4gLSAgICAgICAgICAgICAgICAgICAgIGRpZV9wZXJyb3IoIkNvdWxkIG5vdCBtb3ZlIC0t ZmQgZGVzY3JpcHRvciIpOw0KPiAtICAgICAgICAgICAgIGZkID0gY2xvc2VfZnJvbSsrOw0KPiAr ICAgICBmb3IgKGZkID0gU1RERVJSX0ZJTEVOTyArIDE7IGZkIDwgbWF4X2ZkOyBmZCsrKSB7DQoN CkkgZG9uJ3QgdGhpbmsgdGhlIFJMSU1JVF9OT0ZJTEUgZ3VhcmFudGVlcyB0aGF0IGFsbCBmZHMg d2lsbCBiZSBsZXNzDQp0aGFuIGl0LiAgVGhleSBnZW5lcmFsbHkgd2lsbCBiZSwgYnV0IEkgZG9u J3QgdGhpbmsgYW55dGhpbmcgd2lsbCBzdG9wDQp5b3UgdXNpbmcgZHVwMigpIHRvIG1vdmUgYSBz aW5nbGUgZmQgdG8gc29tZSB2ZXJ5IGhpZ2ggZmQgbnVtYmVyLg0KDQo+ICsgICAgICAgICAgICAg aWYgKGZjbnRsKGZkLCBGX0dFVEZEKSA+PSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgaWZk cy0+YXJyW2lmZHMtPmNvdW50KytdID0gZmQ7DQo+ICAgICAgIH0NCj4gK30NCj4NCj4gLSAgICAg aWYgKGNsb3NlX3JhbmdlKGNsb3NlX2Zyb20sIH4wVSwgQ0xPU0VfUkFOR0VfVU5TSEFSRSkpIHsN Cj4gLSAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09IEVJTlZBTCkg ew0KPiAtICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBwcm9iYWJseSBtZWFucyBjbG9zZV9y YW5nZSgpIG9yIHRoZQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICogQ0xPU0VfUkFOR0VfVU5T SEFSRSBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgKiBrZXJuZWwuICBOb3QgbXVjaCB3ZSBjYW4gZG8gaGVyZSBleGNlcHQgY2Fycnkgb24gYW5k DQo+IC0gICAgICAgICAgICAgICAgICAgICAgKiBob3BlIGZvciB0aGUgYmVzdC4NCj4gLSAgICAg ICAgICAgICAgICAgICAgICAqLw0KPiAtICAgICAgICAgICAgICAgICAgICAgd2FybigNCj4gLSJD YW4ndCB1c2UgY2xvc2VfcmFuZ2UoKSB0byBlbnN1cmUgbm8gZmlsZXMgbGVha2VkIGJ5IHBhcmVu dCIpOw0KPiAtICAgICAgICAgICAgIH0gZWxzZSB7DQo+IC0gICAgICAgICAgICAgICAgICAgICBk aWVfcGVycm9yKCJGYWlsZWQgdG8gY2xvc2UgZmlsZXMgbGVha2VkIGJ5IHBhcmVudCIpOw0KPiAt ICAgICAgICAgICAgIH0NCj4gKy8qKg0KPiArICogaXNvbGF0ZV9mZHMoKSAtIENsb3NlIGxlYWtl ZCBmaWxlcyBmcm9tIHRoZSBwYXJlbnQgcHJvY2Vzcw0KPiArICogQGlmZHM6ICAgIFNuYXBzaG90 IG9mIGluaXRpYWwgZmlsZSBkZXNjcmlwdG9ycw0KPiArICogQGtlZXBfZmQ6IEZpbGUgZGVzY3Jp cHRvciB0byBrZWVwIG9wZW4sIGlmIGFueQ0KPiArICoNCj4gKyAqIFNob3VsZDoNCj4gKyAqICAt IGNsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgd2VyZSBvcGVuIGF0IHN0YXJ0dXAsIGV4 Y2VwdCBmb3Iga2VlcF9mZA0KPiArICovDQo+ICt2b2lkIGlzb2xhdGVfZmRzKHN0cnVjdCBpbml0 aWFsX2ZkX3NuYXBzaG90ICppZmRzLCBpbnQga2VlcF9mZCkNCg0KVGhlIHJld3JpdHRlbiBpc29s YXRlX2ZkcygpIG5vIGxvbmdlciBlbnN1cmVzIHRoYXQgZmRzIDAsIDEsIDIgYXJlDQpwb3B1bGF0 ZWQgKHdpdGggL2Rldi9udWxsLCBpZiBuZWNlc3NhcnkpLiAgVGhhdCdzIG5vdCBzdHJpY3RseQ0K bmVjZXNzYXJ5LCBidXQgSSBkaWQgaW1wbGVtZW50IGl0IG9uIHB1cnBvc2UsIGJlY2F1c2UgSSB0 aGluayBpdA0KYXZvaWRzIGNvbmZ1c2lvbi4NCg0KPiArew0KPiArICAgICBzaXplX3QgaTsNCj4g Kw0KPiArICAgICBpZiAoIWlmZHMgfHwgIWlmZHMtPmFycikNCj4gKyAgICAgICAgICAgICByZXR1 cm47DQo+ICsNCj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGlmZHMtPmNvdW50OyBpKyspIHsNCj4g KyAgICAgICAgICAgICBpZiAoaWZkcy0+YXJyW2ldICE9IGtlZXBfZmQpDQo+ICsgICAgICAgICAg ICAgICAgICAgICBjbG9zZShpZmRzLT5hcnJbaV0pOw0KPiAgICAgICB9DQo+DQo+IC0gICAgIHJl dHVybiBmZDsNCj4gKyAgICAgZnJlZShpZmRzLT5hcnIpOw0KPiArICAgICBpZmRzLT5hcnIgPSBO VUxMOw0KPiArICAgICBpZmRzLT5jb3VudCA9IDA7DQo+ICB9DQo+DQo+ICAvKioNCj4gZGlmZiAt LWdpdCBhL2lzb2xhdGlvbi5oIGIvaXNvbGF0aW9uLmgNCj4gaW5kZXggZWM0NzAzOC4uOGFkYTk4 OCAxMDA2NDQNCj4gLS0tIGEvaXNvbGF0aW9uLmgNCj4gKysrIGIvaXNvbGF0aW9uLmgNCj4gQEAg LTgsMTAgKzgsMTcgQEANCj4gICNkZWZpbmUgSVNPTEFUSU9OX0gNCj4NCj4gICNpbmNsdWRlIDxz dGRib29sLmg+DQo+ICsjaW5jbHVkZSA8c3RkZGVmLmg+DQo+ICAjaW5jbHVkZSA8dW5pc3RkLmg+ DQo+DQo+ICtzdHJ1Y3QgaW5pdGlhbF9mZF9zbmFwc2hvdCB7DQo+ICsgICAgIGludCAqYXJyOw0K PiArICAgICBzaXplX3QgY291bnQ7DQo+ICt9Ow0KPiArDQo+ICB2b2lkIGlzb2xhdGVfaW5pdGlh bCh2b2lkKTsNCj4gLWludCBpc29sYXRlX2ZkcyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KPiAr dm9pZCBzbmFwc2hvdF9pbml0aWFsX2ZkcyhzdHJ1Y3QgaW5pdGlhbF9mZF9zbmFwc2hvdCAqaWZk cyk7DQo+ICt2b2lkIGlzb2xhdGVfZmRzKHN0cnVjdCBpbml0aWFsX2ZkX3NuYXBzaG90ICppZmRz LCBpbnQga2VlcF9mZCk7DQo+ICB2b2lkIGlzb2xhdGVfdXNlcihjb25zdCBzdHJ1Y3QgY3R4ICpj LCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgYm9vbCB1c2VfdXNlcm5zLA0KPiAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqdXNlcm5zKTsNCj4gIGludCBpc29sYXRlX3ByZWZvcmsoY29uc3Qgc3Ry dWN0IGN0eCAqYyk7DQo+IGRpZmYgLS1naXQgYS9wYXNzdC5jIGIvcGFzc3QuYw0KPiBpbmRleCA1 MDU0NTUxLi5jNDMzNWJmIDEwMDY0NA0KPiAtLS0gYS9wYXNzdC5jDQo+ICsrKyBiL3Bhc3N0LmMN Cj4gQEAgLTMzNSw2ICszMzUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ ICAgICAgIHN0cnVjdCBlcG9sbF9ldmVudCBldmVudHNbTlVNX0VQT0xMX0VWRU5UU107DQo+ICAg ICAgIGludCBuZmRzLCBkZXZudWxsX2ZkID0gLTEsIGZkOw0KPiAgICAgICBzdHJ1Y3QgY3R4ICpj ID0gJnBhc3N0X2N0eDsNCj4gKyAgICAgc3RydWN0IGluaXRpYWxfZmRfc25hcHNob3QgaWZkczsN Cj4gICAgICAgc3RydWN0IHJsaW1pdCBsaW1pdDsNCj4gICAgICAgc3RydWN0IHRpbWVzcGVjIG5v dzsNCj4gICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsNCj4gQEAgLTM0NCw4ICszNDUsOSBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+DQo+ICAgICAgIGFyY2hfYXZ4Ml9leGVj KGFyZ3YpOw0KPg0KPiArICAgICBzbmFwc2hvdF9pbml0aWFsX2ZkcygmaWZkcyk7DQo+ICsNCj4g ICAgICAgaXNvbGF0ZV9pbml0aWFsKCk7DQo+IC0gICAgIGMtPmZkX3RhcCA9IGlzb2xhdGVfZmRz KGFyZ2MsIGFyZ3YpOw0KPg0KPiAgICAgICBpZiAoKGRldm51bGxfZmQgPSBvcGVuKCIvZGV2L251 bGwiLCBPX1JEV1IgfCBPX0NMT0VYRUMpKSA8IDApDQo+ICAgICAgICAgICAgICAgZGllX3BlcnJv cigiRmFpbGVkIHRvIG9wZW4gL2Rldi9udWxsIik7DQo+IEBAIC0zOTAsNiArMzkyLDkgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KPiAgICAgICBzb2NrX3Byb2JlX2ZlYXR1cmVz KGMpOw0KPg0KPiAgICAgICBjb25mKGMsIGFyZ2MsIGFyZ3YpOw0KPiArDQo+ICsgICAgIGlzb2xh dGVfZmRzKCZpZmRzLCBjLT5mZF90YXApOw0KPiArDQo+ICAgICAgIHRyYWNlX2luaXQoYy0+dHJh Y2UpOw0KPg0KPiAgICAgICBwYXN0YV9uZXRuc19xdWl0X2luaXQoYyk7DQo+IC0tDQo+IDIuNTIu MA0KPg0KDQotLQ0KRGF2aWQgR2lic29uIChoZSBvciB0aGV5KSAgICAgICB8IEknbGwgaGF2ZSBt eSBtdXNpYyBiYXJvcXVlLCBhbmQgbXkgY29kZQ0KZGF2aWQgQVQgZ2lic29uLmRyb3BiZWFyLmlk LmF1ICB8IG1pbmltYWxpc3QsIHRoYW5rIHlvdSwgbm90IHRoZSBvdGhlciB3YXkNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBhcm91bmQuDQpodHRwOi8vd3d3Lm96bGFicy5vcmcv fmRnaWJzb24NCg0K --_000_DM3PR11MB8713F3835423C29FE8A78042DAD52DM3PR11MB8713namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01T Rm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpIb3dkeSBEYXZpZCwmbmJzcDs8L2Rpdj4NCjxk aXY+PGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCldoeSBlbnVtZXJhdGUgaW5oZXJpdGVkIGZk cz88L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsiPg0K4oCC4oCC4oCC4oCCV2VsbCwgSSBmaXJzdCB0cmllZCB1 c2luZyA8Y29kZT5jbG9zZV9yYW5nZSgpPC9jb2RlPiBmcm9tIHRoZSB0YXAgZmQgdXAgdG8gbWF4 LCBhcyB5b3Ugc3VnZ2VzdGVkLCBhbmQgSSBmb3VuZCB0aGF0IGl0IHdhcyBjbG9zaW5nIGZpbGUg ZGVzY3JpcHRvcnMgdGhhdCBwYXNzdCBoYWQgaXRzZWxmIG9wZW5lZCAobGlrZSB0aGUgbG9nIGZp bGUpLCB3aGljaCBpcyBvYnZpb3VzbHkgbm90IGNvcnJlY3QuPC9kaXY+DQo8ZGl2IGNsYXNzPSJl bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N CuKAguKAguKAguKAgkkgY29uc2lkZXJlZCBlbnVtZXJhdGluZyBhbGwgdGhlIHBvc3NpYmxlIGZp bGUgZGVzY3JpcHRvcnMgdGhhdCBwYXNzdCAqbWlnaHQqIGhhdmUgb3BlbmVkLCBhbmQgcGFzcyB0 aGVtIHRvIGlzb2xhdGVfZmRzIGFzIGZkc190b19rZWVwOiBpdCB0dXJucyBvdXQgdGhhdCB0aGVy ZSBhcmUgYXJvdW5kIDEwIG9yIHNvIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBtYXkgb3IgbWF5IG5v dCBoYXZlIGJlZW4gb3BlbmVkIGJlZm9yZSB0aGUgY2FsbCB0bw0KIGlzb2xhdGVfZmRzLiBJIGRl Y2lkZWQgSSBkaWRuJ3QgbGlrZSB0aGF0IHN0cmF0ZWd5LCBiZWNhdXNlIGl0IHdvdWxkIGNyZWF0 ZSBhIG1haW50ZW5hbmNlIGJ1cmRlbjogZXZlcnkgdGltZSBzb21lb25lIHRpbmtlcnMgd2l0aCBh IGZpbGUgZGVzY3JpcHRvciBvciByZW9yZGVycyB0aGUgc3RhcnR1cCBzZXF1ZW5jZSwgdGhleSB3 b3VsZCBoYXZlIHRvIHJlbWVtYmVyIHRvIGFsc28gY2hlY2sgdGhlIGxpc3Qgb2YgZmlsZSBkZXNj cmlwdG9ycyB0bw0KIGtlZXAuIEFuZCBpbiBwYXJ0aWN1bGFyLCBzb21lIG9mIHRoZSBmaWxlIGRl c2NyaXB0b3JzIGFyZSBub24taW50dWl0aXZlLiBNYXliZSBub3QgZXZlcnlvbmUgcmVhbGl6ZXMg dGhhdCBhIHNvY2tldCBjb3VudHMgYSBmaWxlIGRlc2NyaXB0b3IuIFdoYXQgaWYgdGhlcmUncyBh IGJ1ZyBpbiBzb21lb25lJ3MgbmV3IGZlYXR1cmUgd2hlcmUgc29ja2V0cyBhcmUganVzdCBkaXNh cHBlYXJpbmcgd2l0aG91dCBhIHRyYWNlPyBJIHdvdWxkIGhhdGUgdG8NCiB3YXN0ZSBzb21lb25l J3MgdGltZSBjaGFzaW5nIGEgc3VidGxlIGJ1ZyBsaWtlIHRoYXQuIFNvLCBJIGRlY2lkZWQgdGhh dCBlbnVtZXJhdGluZyBmZHNfdG9fY2xvc2UgYXQgcnVudGltZSB0aW1lIHdvdWxkIGJlIGxlc3Mg b2YgYSBtYWludGVuYW5jZSBidXJkZW4gdGhhbiBlbnVtZXJhdGluZyBmZHNfdG9fa2VlcCBpbiBj b2RlLiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQrigILigILigILigIJJIGFsc28gY29uc2lk ZXJlZCByZW9yZGVyaW5nIHRoZSBzdGFydHVwIHNvIHRoYXQgZm9ya2luZyBoYXBwZW5zIGJlZm9y ZSBvcGVuaW5nIGFueSBmaWxlcywgc28gaXNvbGF0ZSBmZHMgY2FuIHJ1biB3aXRoIG9ubHkgdGhl IHRhcCBmZCBhcyBpdHMgZXhjbHVzaW9uIGxpc3QsIGJ1dCBJIGRpZG4ndCBzZWUgaG93IHRvIG1h a2UgdGhhdCBjaGFuZ2Ugd2l0aG91dCBzaWduaWZpY2FudCByZWZhY3RvcmluZy4gSXQgbWlnaHQg ZW5kIHVwIGJlaW5nDQogbmVjZXNzYXJ5LCBidXQgSSBjYW4ndCBtYWtlIHRoYXQgZGVjaXNpb24g b24gbXkgb3duLiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIGNvZGUgd2VsbCBlbm91Z2guIEludGVy ZXN0ZWQgaW4gdGFsa2luZyB0aGF0IHRocm91Z2g/PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50 VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBz YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4N CjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+DQpJIGRvbid0IHVuZGVyc3RhbmQgeW91ciBjb21tZW50IGFi b3V0IDxjb2RlPmNvbmZfdGFwX2ZkPC9jb2RlPiBiZWNvbWluZyBzdGF0aWMuIE15IGltcGxlbWVu dGF0aW9uIHBhcnNlcw0KPGNvZGU+LUY8L2NvZGU+Jm5ic3A7YXQgdGhlIHNhbWUgdGltZSBhcyB0 aGUgb3RoZXIgYXJndW1lbnRzIChub3QgZWFybHkgYW55bW9yZSkuIERpZCB5b3UgbWVhbiB0aGF0 IHlvdSB3b3VsZCBpbmxpbmUgdGhlIHN0cmluZyB0byBpbnQgY29udmVyc2lvbiBpbg0KPGNvZGU+ Y29uZigpPC9jb2RlPj8gVGhhdCBzZWVtcyByZWFzb25hYmxlLiBJIGp1c3QgZmVsdCB0aGF0IGNv bmZfdGFwX2ZkIHdhcyBvdmVyYWxsIHRvbyBjb21wbGV4IHRvIGlubGluZSBpbiBpdHMgY3VycmVu dCBmb3JtLiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJm b250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1z aXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xh c3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAw KTsiPg0KV2hpbGUgcmVsb2NhdGluZyB0YXAgZmQgdG8gMysgY291bGQgZWFzaWx5IGhhcHBlbiBs YXRlciwgSSBzdGlsbCBkb24ndCB0aGluayBpdCBzaG91bGQgaGFwcGVuIGR1cmluZyBpc29sYXRp b24sIGJlY2F1c2UgaXQgYWN0dWFsbHkgY29uY2VwdHVhbGx5IGhhcyBub3RoaW5nIHRvIGRvIHdp dGggaXNvbGF0aW9uLiBJdCdzIGFib3V0IGF2b2lkaW5nIGEgY29ybmVyIGNhc2UgdGhhdCB3b3Vs ZCBjYXVzZSB0YXAgZGV2aWNlIGNoYXR0ZXIgYWNjaWRlbnRhbGx5DQogYmVpbmcgcHJpbnRlZCB0 byBzdGQgZXJyIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuIElzb2xhdGlvbiBzaG91bGQgYmUgZm9j dXNlZCBvbiBjbG9zaW5nIHVudXNlZCBmZHMsIG5vdCBvbiBtYW5hZ2luZyBmZHMgdGhhdCBhcmUg aW4gdXNlLiBQZXJoYXBzIHdlIGNvdWxkIHJlbG9jYXRlIHRoZSB0YXAgZmQgdG8gMysgaW4gbWFp biwgYXJvdW5kIHRoZSBzYW1lIHRpbWUgdGhhdCB3ZSBhcmUgcG9wdWxhdGluZyAw4oCUMiwgZm9y IGNsYXJpdHkgKHNpbmNlDQogdGhvc2UgdHdvIHN0ZXBzIG5lZWQgdG8gY29vcmRpbmF0ZSkuJm5i c3A7PC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7 IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVu dFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpJIHdh cyBub3QgYXdhcmUgdGhhdCBkeW5hbWljIG1lbW9yeSB3b3VsZCBiZSBvZmYgdGhlIHRhYmxlLiBN eSBtYWluIHJlYXNvbiBmb3IgZG9pbmcgaXQgdGhhdCB3YXkgaXMgYmVjYXVzZSBJIGRpZG4ndCB3 YW50IGEgdmVyeSBsYXJnZSBhcnJheSAobWF4IGZkcykgdG8gYmUgYWx3YXlzIGluIG1lbW9yeSBl dmVuIHRob3VnaCBtb3N0IG9mIHRoZSB0aW1lIGl0IHdvdWxkIGJlIHVudXNlZC4gSSB3aWxsIGhh dmUgdG8gcmUtdGhpbmsgdGhlIHN0cmF0ZWd5Lg0KIE1heWJlIHRoZXJlIGlzIGFub3RoZXIgd2F5 IHRvIGF2b2lkIGEgbGFyZ2UgdW51c2VkIGFycmF5LiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0i ZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+ DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KVGhhbmsgeW91IGZvciBwb2ludGluZyBvdXQg dGhlIGZsYXcgaW4gbXkgbG9naWMgcmVnYXJkaW5nIHRoZSBtYXggb3BlbiBmaWxlcyBsaW1pdC4g SSB3aWxsIGhhdmUgdG8gdGhpbmsgaGFyZGVyIGFib3V0IGEgY29ycmVjdCB3YXkgdG8gY2xvc2Ug ZmRzLiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250 LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9 ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsi Pg0KSSBkbyBub3QgYmVsaWV2ZSB0aGF0IG15IHBhdGNoIGRpc2FibGVzIHlvdXIgZmVhdHVyZSBv ZiBwb3B1bGF0aW5nIGZkcyAw4oCUMiB3aXRoIGRldm51bGwuIFRoYXQgaGFwcGVucyBpbiBtYWlu LCBub3QgaW4gaXNvbGF0ZSBmZHMuIE15IGltcGxlbWVudGF0aW9uIG9mIGVudW1lcmF0aW5nIHRo ZSBpbmhlcml0ZWQgZmRzIGV4Y2x1ZGVzIDDigJQyLiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0i ZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+ DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m YW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog MTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KSSBob3BlIHRvIGhlYXIgZnJvbSB5b3UgYWdh aW4gc29vbjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpSaWNoYXJkPC9kaXY+DQo8ZGl2IGNsYXNzPSJl bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4N Cjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZh bWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpQUy4gSW4gY2FzZSBhbnlvbmUgZWxzZSB3aG8n cyByZWFkaW5nIGFsb25nIGhhcyBjb25jZXJucyBhYm91dCB0aGUgcG90ZW50aWFsIHBlcmZvcm1h bmNlIGhpdCBjYXVzZWQgYnkgYWJhbmRvbmluZw0KPGNvZGU+Y2xvc2VfcmFuZ2UoKTwvY29kZT4s IEkgaGF2ZSBhbiBhcmd1bWVudCBwcmVwYXJlZCB0byBleHBsYWluIHdoeSB0aGF0IGlzIG5vdCBh IHNlcmlvdXMgY29uY2Vybi4mbmJzcDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+ DQo8aHIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDk4JTsiPg0KPGRpdiBz dHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGI+RnJvbTo8L2I+IERh dmlkIEdpYnNvbjxicj4NCjxiPlNlbnQ6PC9iPiBTdW5kYXksIEF1Z3VzdCAyLCAyMDI2IDExOjQ0 IFBNPGJyPg0KPGI+VG86PC9iPiBMYXdyZW5jZSwgUmljaGFyZCBFPGJyPg0KPGI+Q2M6PC9iPiBw YXNzdC1kZXZAcGFzc3QudG9wPGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbUEFUQ0ggdjJdIGZl YXQ6IFBhc3Mgb3BlbiBmaWxlcyB0byBjaGlsZCBpbiBwYXN0YSBtb2RlIDwvZGl2Pg0KPGRpdiBz dHlsZT0iZm9udC1mYW1pbHk6IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJyPg0KPC9kaXY+DQo8 ZGl2IHN0eWxlPSJsaW5lLWhlaWdodDogMXB4OyBkaXNwbGF5OiBub25lOyBmb250LXNpemU6IDFw eDsgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsiPg0KT24gRnJpLCBKdWwgMzEsIDIwMjYgYXQg MDg64oCKMjY64oCKMDFBTSAtMDUwMCwgUmljaGFyZCBMYXdyZW5jZSB3cm90ZTogJmd0OyBXaGVu IHBhc3RhIG1vZGUgaXMgdXNlZCB0byBsYXVuY2ggYW4gZXhlY3V0YWJsZSAoYHBhc3RhIFtDT01N QU5EXWApIGFuZCAmZ3Q7IHRoYXQgZXhlY3V0YWJsZSBhY2NlcHRzIGlucHV0cyBpbiB0aGUgZm9y bSBvZiBhcmJpdHJhcnkgZmlsZSBkZXNjcmlwdG9ycyAmZ3Q7IChzdWNoIGFzIGBid3JhcGApLDwv ZGl2Pg0KPGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6IDFweDsgZGlzcGxheTogbm9uZTsgZm9udC1z aXplOiAxcHg7IGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij4NClpqUWNtUVJZRnBmcHRCYW5u ZXJTdGFydDwvZGl2Pg0KPGRpdiBpZD0ieF9wZnB0QmFubmVyNzgyN2lpNCIgc3R5bGU9ImJhY2tn cm91bmQtY29sb3I6IHJnYigyMDgsIDIxNiwgMjIwKTsgbWFyZ2luOiAwcHggMHB4IDEwcHg7IHBh ZGRpbmc6IDdweCAxNnB4IDhweDsgYm9yZGVyLXRvcDogNHB4IHNvbGlkIHJnYigxNDQsIDE2NCwg MTc0KTsgYm9yZGVyLXJhZGl1czogNHB4OyBtaW4td2lkdGg6IDIwMHB4OyBkaXNwbGF5OiBibG9j azsiPg0KPGRpdiBpZD0ieF9wZnB0QmFubmVyNzgyN2lpNCIgc3R5bGU9ImJhY2tncm91bmQtY29s b3I6IHJnYigyMDgsIDIxNiwgMjIwKTsgbWFyZ2luOiAxcHggMHB4OyBkaXNwbGF5OiBibG9jazsi Pg0KPGRpdiBpZD0ieF9wZnB0QmFubmVyNzgyN2lpNCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6 IHJnYigyMDgsIDIxNiwgMjIwKTsgZGlzcGxheTogYmxvY2s7Ij4NCjxkaXYgc3R5bGU9ImRpcmVj dGlvbjogbHRyOyB0ZXh0LWFsaWduOiBsZWZ0OyBsaW5lLWhlaWdodDogMS4yOTsgZm9udC1mYW1p bHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMCwgMCwg MCk7Ij4NCjxiPlRoaXMgTWVzc2FnZSBJcyBGcm9tIGFuIEV4dGVybmFsIFNlbmRlcjwvYj48L2Rp dj4NCjwvZGl2Pg0KPGRpdiBpZD0ieF9wZnB0QmFubmVyNzgyN2lpNCIgc3R5bGU9ImJhY2tncm91 bmQtY29sb3I6IHJnYigyMDgsIDIxNiwgMjIwKTsgbWFyZ2luLXRvcDogMnB4OyBkaXNwbGF5OiBi bG9jazsiPg0KPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBsdHI7IHRleHQtYWxpZ246IGxlZnQ7IGxp bmUtaGVpZ2h0OiAxLjU7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXpl OiAxMnB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpUaGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91 dHNpZGUgeW91ciBvcmdhbml6YXRpb24uPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHls ZT0iZGlyZWN0aW9uOiBsdHI7IHRleHQtYWxpZ246IGxlZnQ7IGxpbmUtaGVpZ2h0OiAwOyBkaXNw bGF5OiBibG9jazsgZm9udC1zaXplOiAwLjAxcHg7Ij4NCiZuYnNwOzwvZGl2Pg0KPC9kaXY+DQo8 ZGl2IHN0eWxlPSJsaW5lLWhlaWdodDogMXB4OyBkaXNwbGF5OiBub25lOyBmb250LXNpemU6IDFw eDsgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsiPg0KWmpRY21RUllGcGZwdEJhbm5lckVuZDwv ZGl2Pg0KPHByZT48ZGl2IHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGZvbnQtZmFtaWx5 OiBzYW5zLXNlcmlmOyI+T24gRnJpLCBKdWwgMzEsIDIwMjYgYXQgMDg6MjY6MDFBTSAtMDUwMCwg UmljaGFyZCBMYXdyZW5jZSB3cm90ZToKJmd0OyBXaGVuIHBhc3RhIG1vZGUgaXMgdXNlZCB0byBs YXVuY2ggYW4gZXhlY3V0YWJsZSAoYHBhc3RhIFtDT01NQU5EXWApIGFuZAomZ3Q7IHRoYXQgZXhl Y3V0YWJsZSBhY2NlcHRzIGlucHV0cyBpbiB0aGUgZm9ybSBvZiBhcmJpdHJhcnkgZmlsZSBkZXNj cmlwdG9ycwomZ3Q7IChzdWNoIGFzIGBid3JhcGApLCB0aGVuIHBhc3N0IHNob3VsZCBub3Qgc3Rh bmQgaW4gdGhlIHdheSBvZiB0aGUgcGFyZW50CiZndDsgcHJvY2VzcyBoYW5kaW5nIG9mZiB0aG9z ZSBmaWxlIGRlc2NyaXB0b3JzIHRvIHRoZSBjaGlsZCBwcm9jZXNzLgomZ3Q7IFNlZSBidWcgMjA0 IGZvciBhZGRpdGlvbmFsIGRpc2N1c3Npb24uCiZndDsgCiZndDsgVGhlIHN0cmF0ZWd5IHVzZWQg aGVyZSBpcyB0byBkZWxheSB0aGUgY2xvc2luZyBvZiBpbmhlcml0ZWQgZmlsZQomZ3Q7IGRlc2Ny aXB0b3JzIHVudGlsIGFmdGVyIHBhc3RhIGhhcyBmb3JrZWQgdG8gZXhlY3V0ZSB0aGUgQ09NTUFO RCwKJmd0OyB3aGljaCBoYXBwZW5zIGR1cmluZyB0aGUgY2FsbCB0byBgY29uZigpYC4KJmd0OyAK Jmd0OyBBIG5pY2Ugc2lkZS1lZmZlY3QgaXMgdGhhdCB0aGUgYC0tZmRgIGFyZ3VtZW50IG5vIGxv bmdlciBuZWVkcyB0byBiZQomZ3Q7IHBhcnNlZCBlYXJseSwgYW5kIGNhbiByZWpvaW4gdGhlIG90 aGVyIGFyZ3MgcGFyc2VkIG5vcm1hbGx5IGluIGBjb25mKClgLgomZ3Q7IAomZ3Q7IEhpZ2hsaWdo dGVkIGNoYW5nZXM6CiZndDsgLSBgY29uZl90YXBfZmQoKWAgaXMgbm93IGNhbGxlZCBkaXJlY3Rs eSBieSBgY29uZigpYC4KJmd0OyAtIFRoZSB0YXAgZmQgaXMgcmVsb2NhdGVkIHRvIGEgbnVtYmVy IGF0IGxlYXN0IDMsIHJhdGhlciB0aGFuIGV4YWN0bHkgMy4KJmd0OyAtIGBzbmFwc2hvdF9pbml0 aWFsX2ZkcygpYCBtZW1vcml6ZXMgaW5oZXJpdGVkIGZkcyBlYXJseSBpbiBzdGFydHVwLgomZ3Q7 IC0gSW5oZXJpdGVkIGZkcyBhcmUgZGlzY292ZXJlZCBieSByZWFkaW5nIGZyb20gYC9wcm9jYCBp ZiBhdmFpbGFibGUuCiZndDsgLSBgaXNvbGF0ZV9mZHMoKWAgaXMgbm93IGNhbGxlZCBhZnRlciBg Y29uZigpYCBpbiBgbWFpbigpYC4KClRoYW5rcyBmb3IgdGhlIG5ldyB2ZXJzaW9uLCBJIGxpa2Ug dGhlIGJlaGF2aW91ciBvZiB0aGlzIG9uZSBtdWNoCmJldHRlci4gJm5ic3A7SG93ZXZlci4uIG1h eWJlIEknbSBtaXNzaW5nIHNvbWV0aGluZywgYnV0IGl0IHNlZW1zIGxpa2UgaXQncwptb3JlIGNv bXBsaWNhdGVkIHRoYW4gaXQgbmVlZHMgdG8gYmUuCgpJbiBwYXJ0aWN1bGFyLCB5b3UndmUgY29t cGxldGVseSByZXBsYWNlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YKaXNvbGF0ZV9mZHMoKSAtIHJh dGhlciB0aGFuIHVzaW5nIGNsb3NlX3JhbmdlKCksIGl0J3MgZW51bWVyYXRpbmcgdGhlCm9wZW4g ZmRzIHZpYSAvcHJvYyBhbmQgY2xvc2UoKWluZyB0aGVtIGluZGl2aWR1YWxseS4gJm5ic3A7SXMg dGhlcmUgYQpyZWFzb24gdG8gZG8gdGhpcz8gJm5ic3A7QUZBSUNUIG5vdyB0aGF0IHRoYXQgaXNv bGF0ZV9mZHMoKSBpcyBtb3ZlZCBhZnRlcgp0aGUgc3Bhd25pbmcgb2YgdGhlIHRoZSBwYXN0YSBz aGVsbCAob3Igd2hhdGV2ZXIpLCB3ZSdyZSBmcmVlIHRvIGNsb3NlCmV2ZXJ5IGZkIGV4Y2VwdCB0 YXBfZmQsIGFuZCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gc2hvdWxkIGRvIHRoYXQKanVz dCBmaW5lLiAmbmJzcDsoY2xvc2VfcmFuZ2UoKSBpcyBub24tcG9ydGFibGUsIG9mIGNvdXJzZSwg YnV0IHRoYXQncyB0cnVlCm9mIC9wcm9jL3NlbGYvZmQgdG9vKS4KClNvbWUgbW9yZSBtaW5vciBw b2ludHMgbm90ZWQgYmVsb3cuCgomZ3Q7IFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgTGF3cmVuY2Ug Jmx0O3JsYXdyZW5jZUB0YW11LmVkdSZndDsKJmd0OyAtLS0KJmd0OyAmbmJzcDtjb25mLmMgJm5i c3A7ICZuYnNwOyAmbmJzcDt8ICZuYnNwOzM5ICsrKysrKysrLS0tLS0tLQomZ3Q7ICZuYnNwO2Nv bmYuaCAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJm5ic3A7IDEgLQomZ3Q7ICZuYnNwO2lzb2xhdGlv bi5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0KJmd0OyAmbmJzcDtpc29sYXRpb24uaCB8ICZuYnNwOyA5ICsrKy0KJmd0OyAmbmJzcDtw YXNzdC5jICZuYnNwOyAmbmJzcDsgfCAmbmJzcDsgNyArKy0KJmd0OyAmbmJzcDs1IGZpbGVzIGNo YW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKJmd0OyAKJmd0OyBkaWZm IC0tZ2l0IGEvY29uZi5jIGIvY29uZi5jCiZndDsgaW5kZXggZmFmMjY4MS4uNmJmZGZiNiAxMDA2 NDQKJmd0OyAtLS0gYS9jb25mLmMKJmd0OyArKysgYi9jb25mLmMKJmd0OyBAQCAtMTE2OSwyNiAr MTE2OSwyMCBAQCBzdGF0aWMgdm9pZCBjb25mX3NvY2tfbGlzdGVuKGNvbnN0IHN0cnVjdCBjdHgg KmMpCiZndDsgJm5ic3A7fQomZ3Q7ICZuYnNwOwomZ3Q7ICZuYnNwOy8qKgomZ3Q7IC0gKiBjb25m X3RhcF9mZCgpIC0gUmVhZCB0YXAgZmQgYXMgc3VwcGxpZWQgYnkgLUYgY29tbWFuZCBsaW5lIG9w dGlvbgomZ3Q7IC0gKiBAYXJnYzoJQXJndW1lbnQgY291bnQKJmd0OyAtICogQGFyZ3Y6CUNvbW1h bmQgbGluZSBvcHRpb25zCiZndDsgKyAqIGNvbmZfdGFwX2ZkKCkgLSBSZWFkIGFuZCByZWxvY2F0 ZSB0YXAgZmQgYXMgc3VwcGxpZWQgYnkgLUYgY29tbWFuZCBsaW5lIG9wdGlvbgomZ3Q7ICsgKiBA ZmRhcmc6CVN0cmluZyBjb250YWluaW5nIGZkCiZndDsgKyAqCiZndDsgKyAqIFNob3VsZDoKJmd0 OyArICogJm5ic3A7LSBtb3ZlIHRoZSAtLWZkIGRlc2NyaXB0b3Igb3V0IG9mIHRoZSByYW5nZSAw LTIKJmd0OyAmbmJzcDsgKgomZ3Q7ICZuYnNwOyAqIFJldHVybjogZmQgbnVtYmVyIGZyb20gLS1m ZCBvcHRpb24sIG9yIC0xIGlmIG5vdCBzdXBwbGllZAomZ3Q7ICZuYnNwOyAqLwomZ3Q7IC1pbnQg Y29uZl90YXBfZmQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQomZ3Q7ICtpbnQgY29uZl90YXBfZmQo Y29uc3QgY2hhciAqZmRhcmcpCgpOb3cgdGhhdCBpc29sYXRlX2ZkcygpIGlzIGFmdGVyIGNvbmYo KSwgd2Ugc2hvdWxkbid0IG5lZWQgdG8gcHJlcGFyc2UKLUYgYW55IG1vcmUgLSB3ZSBjYW4gdXNl IHRoZSBub3JtYWwgcGFyc2UgaW4gY29uZigpLiAmbmJzcDtJIHRoaW5rIHRoYXQKbWVhbnMgdGhp cyBjYW4gYmVjb21lIHN0YXRpYy4KCiZndDsgJm5ic3A7ewomZ3Q7IC0JY29uc3Qgc3RydWN0IG9w dGlvbiBvcHRmZFtdID0gewl7ICZxdW90O2ZkJnF1b3Q7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgJ0YnIH0sCiZndDsgLQkJCQkJeyAwIH0sIH07CiZndDsgLQljb25zdCBjaGFyICpmZGFyZyA9 IE5VTEwsICpwOwomZ3Q7ICZuYnNwOwl1bnNpZ25lZCBsb25nIHZhbDsKJmd0OyAtCWludCBuYW1l OwomZ3Q7IC0KJmd0OyAtCW9wdGluZCA9IDA7CiZndDsgLQlkbyB7CiZndDsgLQkJbmFtZSA9IGdl dG9wdF9sb25nKGFyZ2MsIGFyZ3YsICZxdW90Oy06RjomcXVvdDssIG9wdGZkLCBOVUxMKTsKJmd0 OyAtCQlpZiAobmFtZSA9PSAnRicpCiZndDsgLQkJCWZkYXJnID0gb3B0YXJnOwomZ3Q7IC0JfSB3 aGlsZSAobmFtZSAhPSAtMSk7CiZndDsgKwljb25zdCBjaGFyICpwOwomZ3Q7ICsJaW50IG5ld19m ZDsKJmd0OyArCWludCBmZDsKJmd0OyAmbmJzcDsKJmd0OyAmbmJzcDsJaWYgKCFmZGFyZykKJmd0 OyAmbmJzcDsJCXJldHVybiAtMTsKJmd0OyBAQCAtMTE5Nyw3ICsxMTkxLDE4IEBAIGludCBjb25m X3RhcF9mZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiZndDsgJm5ic3A7CWlmICghcGFyc2VfdW5z aWduZWQoJmFtcDtwLCAwLCAmYW1wO3ZhbCkgfHwgIXBhcnNlX2VvaShwKSB8fCB2YWwgJmd0OyBJ TlRfTUFYKQomZ3Q7ICZuYnNwOwkJZGllKCZxdW90O0ludmFsaWQgLS1mZDogJXMmcXVvdDssIGZk YXJnKTsKJmd0OyAmbmJzcDsKJmd0OyAtCXJldHVybiB2YWw7CiZndDsgKwlmZCA9IChpbnQpdmFs OwomZ3Q7ICsJaWYgKGZkICZndDs9IDAgJmFtcDsmYW1wOyBmZCAmbHQ7IDMpIHsKJmd0OyArCQlu ZXdfZmQgPSBmY250bChmZCwgRl9EVVBGRCwgMyk7CiZndDsgKwomZ3Q7ICsJCWlmIChuZXdfZmQg Jmx0OyAwKQomZ3Q7ICsJCQlkaWVfcGVycm9yKCZxdW90O0NvdWxkIG5vdCByZWxvY2F0ZSAtLWZk IGRlc2NyaXB0b3ImcXVvdDspOwomZ3Q7ICsKJmd0OyArCQljbG9zZShmZCk7CiZndDsgKwkJZmQg PSBuZXdfZmQ7CgpJIHRoaW5rIHdlIGNhbiBkZWxheSB0aGlzIHJlbG9jYXRpb24gdG8gaXNvbGF0 ZV9mZHMoKSAtIGluIHdoaWNoIGNhc2UsCmFnYWluLCB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRp b24gc2hvdWxkIGFscmVhZHkgZG8gd2hhdCB3ZSBuZWVkLgoKJmd0OyArCX0KJmd0OyArCiZndDsg KwlyZXR1cm4gZmQ7CiZndDsgJm5ic3A7fQomZ3Q7ICZuYnNwOwomZ3Q7ICZuYnNwOy8qKgomZ3Q7 IEBAIC0xNjI1LDcgKzE2MzAsNyBAQCB2b2lkIGNvbmYoc3RydWN0IGN0eCAqYywgaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQomZ3Q7ICZuYnNwOwkJCWMtJmd0O2ZkX2NvbnRyb2xfbGlzdGVuID0gYy0m Z3Q7ZmRfY29udHJvbCA9IC0xOwomZ3Q7ICZuYnNwOwkJCWJyZWFrOwomZ3Q7ICZuYnNwOwkJY2Fz ZSAnRic6CiZndDsgLQkJCS8qIC0tZmQgd2FzIHBhcnNlZCBlYXJseSBhbmQgYy0mZ3Q7ZmRfdGFw IHNldCBpbiBtYWluKCkgKi8KJmd0OyArCQkJYy0mZ3Q7ZmRfdGFwID0gY29uZl90YXBfZmQob3B0 YXJnKTsKJmd0OyAmbmJzcDsJCQljLSZndDtvbmVfb2ZmID0gdHJ1ZTsKJmd0OyAmbmJzcDsJCQkq Yy0mZ3Q7c29ja19wYXRoID0gMDsKJmd0OyAmbmJzcDsJCQlicmVhazsKJmd0OyBkaWZmIC0tZ2l0 IGEvY29uZi5oIGIvY29uZi5oCiZndDsgaW5kZXggMTliZjliYy4uMTZmOTcxOCAxMDA2NDQKJmd0 OyAtLS0gYS9jb25mLmgKJmd0OyArKysgYi9jb25mLmgKJmd0OyBAQCAtNyw3ICs3LDYgQEAKJmd0 OyAmbmJzcDsjZGVmaW5lIENPTkZfSAomZ3Q7ICZuYnNwOwomZ3Q7ICZuYnNwO2VudW0gcGFzc3Rf bW9kZXMgY29uZl9tb2RlKGludCBhcmdjLCBjaGFyICphcmd2W10pOwomZ3Q7IC1pbnQgY29uZl90 YXBfZmQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKJmd0OyAmbmJzcDt2b2lkIGNvbmYoc3RydWN0 IGN0eCAqYywgaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKJmd0OyAmbmJzcDt2b2lkIGNvbmZfbGlz dGVuX2hhbmRsZXIoc3RydWN0IGN0eCAqYywgdWludDMyX3QgZXZlbnRzKTsKJmd0OyAmbmJzcDt2 b2lkIGNvbmZfaGFuZGxlcihzdHJ1Y3QgY3R4ICpjLCB1aW50MzJfdCBldmVudHMpOwomZ3Q7IGRp ZmYgLS1naXQgYS9pc29sYXRpb24uYyBiL2lzb2xhdGlvbi5jCiZndDsgaW5kZXggOTRjYmU3Zi4u MjQzNDc0OCAxMDA2NDQKJmd0OyAtLS0gYS9pc29sYXRpb24uYwomZ3Q7ICsrKyBiL2lzb2xhdGlv bi5jCiZndDsgQEAgLTI0LDE5ICsyNCwxMyBAQAomZ3Q7ICZuYnNwOyAqIGRvbmUgYW55dGhpbmcg d2UgbmVlZCB0byBkbyB3aXRoIHRob3NlIHJlc291cmNlcywgc28gd2UgaGF2ZQomZ3Q7ICZuYnNw OyAqIG11bHRpcGxlIHN0YWdlcyBvZiBzZWxmLWlzb2xhdGlvbi4gJm5ic3A7SW4gb3JkZXIgdGhl c2UgYXJlOgomZ3Q7ICZuYnNwOyAqCiZndDsgLSAqIDFhLiBpc29sYXRlX2luaXRpYWwoKQomZ3Q7 ICsgKiAxLiBpc29sYXRlX2luaXRpYWwoKQomZ3Q7ICZuYnNwOyAqID09PT09PT09PT09PT09PT09 PT09CiZndDsgJm5ic3A7ICoKJmd0OyAmbmJzcDsgKiBFeGVjdXRlZCBpbW1lZGlhdGVseSBhZnRl ciBzdGFydHVwLCBkcm9wcyBjYXBhYmlsaXRpZXMgd2UgZG9uJ3QKJmd0OyAmbmJzcDsgKiBuZWVk IGF0IGFueSBwb2ludCBkdXJpbmcgZXhlY3V0aW9uIChvciB3aGljaCB3ZSBnYWluIGJhY2sgd2hl biB3ZQomZ3Q7ICZuYnNwOyAqIG5lZWQgYnkgam9pbmluZyBvdGhlciBuYW1lc3BhY2VzKS4KJmd0 OyAmbmJzcDsgKgomZ3Q7IC0gKiAxYi4gaXNvbGF0ZV9mZHMoKQomZ3Q7IC0gKiA9PT09PT09PT09 PT09PT09CiZndDsgLSAqCiZndDsgLSAqIEV4ZWN1dGVkIGltbWVkaWF0ZWx5IGFmdGVyIGlzb2xh dGVfaW5pdGlhbCgpLiAmbmJzcDtDbG9zZXMgYW55IGxlYWtlZAomZ3Q7IC0gKiBmaWxlcyB3ZSBt aWdodCBoYXZlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgcHJvY2Vzcy4KJmd0OyAtICoKJmd0 OyAmbmJzcDsgKiAyLiBpc29sYXRlX3VzZXIoKQomZ3Q7ICZuYnNwOyAqID09PT09PT09PT09PT09 PT09CiZndDsgJm5ic3A7ICoKJmd0OyBAQCAtNDQsMTQgKzM4LDIwIEBACiZndDsgJm5ic3A7ICog b3BlcmF0ZSBpbi4gJm5ic3A7U2V0cyBvdXIgZmluYWwgVUlEICZhbXA7IEdJRCwgYW5kIGVudGVy cyB0aGUgY29ycmVjdCB1c2VyCiZndDsgJm5ic3A7ICogbmFtZXNwYWNlLgomZ3Q7ICZuYnNwOyAq CiZndDsgLSAqIDMuIGlzb2xhdGVfcHJlZm9yaygpCiZndDsgKyAqIDMuIGlzb2xhdGVfZmRzKCkK Jmd0OyArICogPT09PT09PT09PT09PT09PQomZ3Q7ICsgKgomZ3Q7ICsgKiBFeGVjdXRlZCBhZnRl ciBjb25mKCkuICZuYnNwO0Nsb3NlcyBhbnkgbGVha2VkCiZndDsgKyAqIGZpbGVzIHdlIG1pZ2h0 IGhhdmUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzLgomZ3Q7ICsgKgomZ3Q7ICsg KiA0LiBpc29sYXRlX3ByZWZvcmsoKQomZ3Q7ICZuYnNwOyAqID09PT09PT09PT09PT09PT09PT09 CiZndDsgJm5ic3A7ICoKJmd0OyAmbmJzcDsgKiBFeGVjdXRlZCBhZnRlciBhbGwgc2V0dXAsIGJ1 dCBiZWZvcmUgZGFlbW9uaXNpbmcgKGZvcmsoKWluZyBpbnRvCiZndDsgJm5ic3A7ICogdGhlIGJh Y2tncm91bmQpLiAmbmJzcDtVc2VzIG1vdW50IG5hbWVzcGFjZSBhbmQgcGl2b3Rfcm9vdCgpIHRv IHJlbW92ZQomZ3Q7ICZuYnNwOyAqIG91ciBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0uCiZndDsg Jm5ic3A7ICoKJmd0OyAtICogNC4gaXNvbGF0ZV9wb3N0Zm9yaygpCiZndDsgKyAqIDUuIGlzb2xh dGVfcG9zdGZvcmsoKQomZ3Q7ICZuYnNwOyAqID09PT09PT09PT09PT09PT09PT09PQomZ3Q7ICZu YnNwOyAqCiZndDsgJm5ic3A7ICogRXhlY3V0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGFlbW9uaXpp bmcsIGJ1dCBiZWZvcmUgZW50ZXJpbmcgdGhlCiZndDsgQEAgLTYxLDYgKzYxLDcgQEAKJmd0OyAm bmJzcDsgKiBydW50aW1lIG9wZXJhdGlvbi4KJmd0OyAmbmJzcDsgKi8KJmd0OyAmbmJzcDsKJmd0 OyArI2luY2x1ZGUgJmx0O2RpcmVudC5oJmd0OwomZ3Q7ICZuYnNwOyNpbmNsdWRlICZsdDtlcnJu by5oJmd0OwomZ3Q7ICZuYnNwOyNpbmNsdWRlICZsdDtmY250bC5oJmd0OwomZ3Q7ICZuYnNwOyNp bmNsdWRlICZsdDtncnAuaCZndDsKJmd0OyBAQCAtNzcsNiArNzgsNyBAQAomZ3Q7ICZuYnNwOyNp bmNsdWRlICZsdDt1bmlzdGQuaCZndDsKJmd0OyAmbmJzcDsjaW5jbHVkZSAmbHQ7c3lzL21vdW50 LmgmZ3Q7CiZndDsgJm5ic3A7I2luY2x1ZGUgJmx0O3N5cy9wcmN0bC5oJmd0OwomZ3Q7ICsjaW5j bHVkZSAmbHQ7c3lzL3Jlc291cmNlLmgmZ3Q7CiZndDsgJm5ic3A7I2luY2x1ZGUgJmx0O3N5cy9z b2NrZXQuaCZndDsKJmd0OyAmbmJzcDsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJmd0 OyAmbmJzcDsjaW5jbHVkZSAmbHQ7c3lzL3R5cGVzLmgmZ3Q7CiZndDsgQEAgLTI0OCw0NyArMjUw LDk2IEBAIHZvaWQgaXNvbGF0ZV9pbml0aWFsKHZvaWQpCiZndDsgJm5ic3A7CWRyb3BfY2Fwc19l cF9leGNlcHQoa2VlcCk7CiZndDsgJm5ic3A7fQomZ3Q7ICZuYnNwOwomZ3Q7IC0vKgomZ3Q7IC0g KiBpc29sYXRlX2ZkcygpIC0gQ2xvc2UgbGVha2VkIGZpbGVzLCBidXQgbm90IC0tZmQsIHN0ZGlu LCBzdGRvdXQsIHN0ZGVycgomZ3Q7IC0gKiBAYXJnYzoJQXJndW1lbnQgY291bnQKJmd0OyAtICog QGFyZ3Y6CUNvbW1hbmQgbGluZSBvcHRpb25zLCBhcyB3ZSBuZWVkIHRvIHNraXAgYW55IGZpbGUg Z2l2ZW4gdmlhIC0tZmQKJmd0OyAtICoKJmd0OyAtICogU2hvdWxkOgomZ3Q7IC0gKiAmbmJzcDst IGNsb3NlIGFsbCBvcGVuIGZpbGVzIGV4Y2VwdCBmb3Igc3RhbmRhcmQgc3RyZWFtcyBhbmQgdGhl IG9uZSBmcm9tIC0tZmQKJmd0OyAtICogJm5ic3A7LSBtb3ZlIHRoZSAtLWZkIGRlc2NyaXB0b3Ig b3V0IG9mIHRoZSByYW5nZSAwLTIKJmd0OyAtICoKJmd0OyAtICogUmV0dXJuOiBuZXcgZmQgbnVt YmVyIGZvciBkZXNjcmlwdG9yIGZyb20gLS1mZCwgb3IgLTEgaWYgbm90IHNwZWNpZmllZAomZ3Q7 ICsvKioKJmd0OyArICogc25hcHNob3RfaW5pdGlhbF9mZHMoKSAtIFNuYXBzaG90IGluaXRpYWwg ZmlsZSBkZXNjcmlwdG9ycyBpbmhlcml0ZWQgZnJvbSBwYXJlbnQKJmd0OyArICogb3RoZXIgdGhh biBzdGFuZGFyZCBzdHJlYW1zIChzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpCiZndDsgKyAqIEBpZmRz OglTbmFwc2hvdCBzdHJ1Y3Qgb2YgaW5pdGlhbCBmaWxlIGRlc2NyaXB0b3JzIHRvIHBvcHVsYXRl CiZndDsgJm5ic3A7ICovCiZndDsgLWludCBpc29sYXRlX2ZkcyhpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiZndDsgK3ZvaWQgc25hcHNob3RfaW5pdGlhbF9mZHMoc3RydWN0IGluaXRpYWxfZmRfc25h cHNob3QgKmlmZHMpCiZndDsgJm5ic3A7ewomZ3Q7IC0JaW50IGZkLCBjbG9zZV9mcm9tID0gU1RE RVJSX0ZJTEVOTyArIDE7CiZndDsgKwlzdHJ1Y3QgZGlyZW50ICplbnRyeTsKJmd0OyArCXNpemVf dCBjYXBhY2l0eSA9IDE2OwomZ3Q7ICsJaW50IG1heF9mZCA9IDEwMjQ7CiZndDsgKwlzdHJ1Y3Qg cmxpbWl0IHJsOwomZ3Q7ICsJbG9uZyBwYXJzZWRfZmQ7CiZndDsgKwljaGFyICplbmRwdHI7CiZn dDsgKwlpbnQgZGlyX2ZkOwomZ3Q7ICsJRElSICpkaXI7CiZndDsgKwlpbnQgZmQ7CiZndDsgKwom Z3Q7ICsJaWZkcy0mZ3Q7YXJyID0gTlVMTDsKJmd0OyArCWlmZHMtJmd0O2NvdW50ID0gMDsKJmd0 OyArCiZndDsgKwlkaXIgPSBvcGVuZGlyKCZxdW90Oy9wcm9jL3NlbGYvZmQmcXVvdDspOwomZ3Q7 ICsJaWYgKGRpcikgewomZ3Q7ICsJCWRpcl9mZCA9IGRpcmZkKGRpcik7CiZndDsgKwkJaWZkcy0m Z3Q7YXJyID0gbWFsbG9jKHNpemVvZihpbnQpICogY2FwYWNpdHkpOwoKV2UgZG9uJ3QgYWxsb2Nh dGUoKSBtZW1vcnkgaW4gcGFzc3QgYXMgYSBtYXR0ZXIgb2YgcG9saWN5LiAmbmJzcDtXZSBlbmZv cmNlCnRoYXQgd2l0aCBzZWNjb21wLCBhbHRob3VnaCB5b3UnbGwgZ2V0IGF3YXkgd2l0aCBpdCBo ZXJlIGJlY2F1c2UgdGhlCnNlY2NvbXAgZmlsdGVyIGlzIG9ubHkgYXBwbGllZCBpbiBpc29sYXRl X3Bvc3Rmb3JrKCkuICZuYnNwO05vbmV0aGVsZXNzIGEKc3RhdGljIGFycmF5IHNob3VsZCBiZSB1 c2VkIGluc3RlYWQuICZuYnNwO0lmIHRoaXMgZnVuY3Rpb24gaXMgZXZlbiBuZWVkZWQsCndoaWNo IGFzIG5vdGVkIGFib3ZlLCBJIGRvbid0IGFjdHVhbGx5IHNlZSBhIHJlYXNvbiBmb3IgYXQgdGhl IG1vbWVudC4KCiZndDsgKwkJaWYgKCFpZmRzLSZndDthcnIpCiZndDsgKwkJCWRpZV9wZXJyb3Io JnF1b3Q7RmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaW5oZXJpdGVkIGZkcyZxdW90Oyk7 CiZndDsgKwomZ3Q7ICsJCXdoaWxlICgoZW50cnkgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsK Jmd0OyArCQkJaWYgKGVudHJ5LSZndDtkX25hbWVbMF0gJmx0OyAnMCcgfHwgZW50cnktJmd0O2Rf bmFtZVswXSAmZ3Q7ICc5JykKJmd0OyArCQkJCWNvbnRpbnVlOwomZ3Q7ICsJCQlwYXJzZWRfZmQg PSBzdHJ0b2woZW50cnktJmd0O2RfbmFtZSwgJmFtcDtlbmRwdHIsIDEwKTsKJmd0OyArCQkJaWYg KCplbmRwdHIgIT0gJ1wwJyB8fCBwYXJzZWRfZmQgJmx0OyAwIHx8IHBhcnNlZF9mZCAmZ3Q7IElO VF9NQVgpCiZndDsgKwkJCQljb250aW51ZTsKJmd0OyArCQkJZmQgPSAoaW50KXBhcnNlZF9mZDsK Jmd0OyArCQkJLyogSWdub3JlIHN0ZGluL3N0ZG91dC9zdGRlcnIgYW5kIHRoZSBvcGVuZGlyIGhh bmRsZSBpdHNlbGYgKi8KJmd0OyArCQkJaWYgKGZkICZndDsgU1RERVJSX0ZJTEVOTyAmYW1wOyZh bXA7IGZkICE9IGRpcl9mZCkgewomZ3Q7ICsJCQkJaWYgKGlmZHMtJmd0O2NvdW50ICZndDs9IGNh cGFjaXR5KSB7CiZndDsgKwkJCQkJc2l6ZV90IG5ld19jYXAgPSBjYXBhY2l0eSAqIDI7CiZndDsg KwkJCQkJaW50ICpuZXdfYXJyID0gcmVhbGxvYyhpZmRzLSZndDthcnIsIHNpemVvZihpbnQpICog bmV3X2NhcCk7CiZndDsgKwomZ3Q7ICsJCQkJCWlmICghbmV3X2FycikKJmd0OyArCQkJCQkJZGll X3BlcnJvcigmcXVvdDtGYWlsZWQgdG8gcmVhbGxvY2F0ZSBtZW1vcnkgZm9yIGluaGVyaXRlZCBm ZHMmcXVvdDspOwomZ3Q7ICsKJmd0OyArCQkJCQlpZmRzLSZndDthcnIgPSBuZXdfYXJyOwomZ3Q7 ICsJCQkJCWNhcGFjaXR5ID0gbmV3X2NhcDsKJmd0OyArCQkJCX0KJmd0OyArCQkJCWlmZHMtJmd0 O2FycltpZmRzLSZndDtjb3VudCsrXSA9IGZkOwomZ3Q7ICsJCQl9CiZndDsgKwkJfQomZ3Q7ICsJ CWNsb3NlZGlyKGRpcik7CiZndDsgKwkJcmV0dXJuOwomZ3Q7ICsJfQomZ3Q7ICsKJmd0OyArCS8q IEZhbGxiYWNrIGZvciBlbnZpcm9ubWVudHMgd2l0aG91dCAvcHJvYyAoZS5nLiBtaW5pbWFsIGNo cm9vdHMpICovCiZndDsgKwlpZiAoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZhbXA7cmwpID09 IDAgJmFtcDsmYW1wOyBybC5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZKQomZ3Q7ICsJCW1heF9m ZCA9IChpbnQpcmwucmxpbV9jdXI7CiZndDsgJm5ic3A7CiZndDsgLQlmZCA9IGNvbmZfdGFwX2Zk KGFyZ2MsIGFyZ3YpOwomZ3Q7ICsJaWZkcy0mZ3Q7YXJyID0gbWFsbG9jKHNpemVvZihpbnQpICog bWF4X2ZkKTsKJmd0OyArCWlmICghaWZkcy0mZ3Q7YXJyKQomZ3Q7ICsJCWRpZV9wZXJyb3IoJnF1 b3Q7RmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaW5oZXJpdGVkIGZkcyBmYWxsYmFjayZx dW90Oyk7CiZndDsgJm5ic3A7CiZndDsgLQlpZiAoZmQgJmd0Oz0gMCkgewomZ3Q7IC0JCS8qIE1v dmUgdGhlIHBhc3NlZCBmZCB0byBhIG1vcmUgY29udmVuaWVudCBsb2NhdGlvbiAqLwomZ3Q7IC0J CWlmIChmZCAhPSBjbG9zZV9mcm9tCQkJJmFtcDsmYW1wOwomZ3Q7IC0JCSAmbmJzcDsgJm5ic3A7 KGR1cDIoZmQsIGNsb3NlX2Zyb20pICE9IGNsb3NlX2Zyb20JfHwKJmd0OyAtCQkgJm5ic3A7ICZu YnNwOyBjbG9zZShmZCkpKQomZ3Q7IC0JCQlkaWVfcGVycm9yKCZxdW90O0NvdWxkIG5vdCBtb3Zl IC0tZmQgZGVzY3JpcHRvciZxdW90Oyk7CiZndDsgLQkJZmQgPSBjbG9zZV9mcm9tKys7CiZndDsg Kwlmb3IgKGZkID0gU1RERVJSX0ZJTEVOTyArIDE7IGZkICZsdDsgbWF4X2ZkOyBmZCsrKSB7CgpJ IGRvbid0IHRoaW5rIHRoZSBSTElNSVRfTk9GSUxFIGd1YXJhbnRlZXMgdGhhdCBhbGwgZmRzIHdp bGwgYmUgbGVzcwp0aGFuIGl0LiAmbmJzcDtUaGV5IGdlbmVyYWxseSB3aWxsIGJlLCBidXQgSSBk b24ndCB0aGluayBhbnl0aGluZyB3aWxsIHN0b3AKeW91IHVzaW5nIGR1cDIoKSB0byBtb3ZlIGEg c2luZ2xlIGZkIHRvIHNvbWUgdmVyeSBoaWdoIGZkIG51bWJlci4KCiZndDsgKwkJaWYgKGZjbnRs KGZkLCBGX0dFVEZEKSAmZ3Q7PSAwKQomZ3Q7ICsJCQlpZmRzLSZndDthcnJbaWZkcy0mZ3Q7Y291 bnQrK10gPSBmZDsKJmd0OyAmbmJzcDsJfQomZ3Q7ICt9CiZndDsgJm5ic3A7CiZndDsgLQlpZiAo Y2xvc2VfcmFuZ2UoY2xvc2VfZnJvbSwgfjBVLCBDTE9TRV9SQU5HRV9VTlNIQVJFKSkgewomZ3Q7 IC0JCWlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRUlOVkFMKSB7CiZndDsgLQkJCS8q IFRoaXMgcHJvYmFibHkgbWVhbnMgY2xvc2VfcmFuZ2UoKSBvciB0aGUKJmd0OyAtCQkJICogQ0xP U0VfUkFOR0VfVU5TSEFSRSBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCiZndDsgLQkJCSAq IGtlcm5lbC4gJm5ic3A7Tm90IG11Y2ggd2UgY2FuIGRvIGhlcmUgZXhjZXB0IGNhcnJ5IG9uIGFu ZAomZ3Q7IC0JCQkgKiBob3BlIGZvciB0aGUgYmVzdC4KJmd0OyAtCQkJICovCiZndDsgLQkJCXdh cm4oCiZndDsgLSZxdW90O0Nhbid0IHVzZSBjbG9zZV9yYW5nZSgpIHRvIGVuc3VyZSBubyBmaWxl cyBsZWFrZWQgYnkgcGFyZW50JnF1b3Q7KTsKJmd0OyAtCQl9IGVsc2UgewomZ3Q7IC0JCQlkaWVf cGVycm9yKCZxdW90O0ZhaWxlZCB0byBjbG9zZSBmaWxlcyBsZWFrZWQgYnkgcGFyZW50JnF1b3Q7 KTsKJmd0OyAtCQl9CiZndDsgKy8qKgomZ3Q7ICsgKiBpc29sYXRlX2ZkcygpIC0gQ2xvc2UgbGVh a2VkIGZpbGVzIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzCiZndDsgKyAqIEBpZmRzOglTbmFwc2hv dCBvZiBpbml0aWFsIGZpbGUgZGVzY3JpcHRvcnMKJmd0OyArICogQGtlZXBfZmQ6CUZpbGUgZGVz Y3JpcHRvciB0byBrZWVwIG9wZW4sIGlmIGFueQomZ3Q7ICsgKgomZ3Q7ICsgKiBTaG91bGQ6CiZn dDsgKyAqICZuYnNwOy0gY2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCB3ZXJlIG9wZW4g YXQgc3RhcnR1cCwgZXhjZXB0IGZvciBrZWVwX2ZkCiZndDsgKyAqLwomZ3Q7ICt2b2lkIGlzb2xh dGVfZmRzKHN0cnVjdCBpbml0aWFsX2ZkX3NuYXBzaG90ICppZmRzLCBpbnQga2VlcF9mZCkKClRo ZSByZXdyaXR0ZW4gaXNvbGF0ZV9mZHMoKSBubyBsb25nZXIgZW5zdXJlcyB0aGF0IGZkcyAwLCAx LCAyIGFyZQpwb3B1bGF0ZWQgKHdpdGggL2Rldi9udWxsLCBpZiBuZWNlc3NhcnkpLiAmbmJzcDtU aGF0J3Mgbm90IHN0cmljdGx5Cm5lY2Vzc2FyeSwgYnV0IEkgZGlkIGltcGxlbWVudCBpdCBvbiBw dXJwb3NlLCBiZWNhdXNlIEkgdGhpbmsgaXQKYXZvaWRzIGNvbmZ1c2lvbi4KCiZndDsgK3sKJmd0 OyArCXNpemVfdCBpOwomZ3Q7ICsKJmd0OyArCWlmICghaWZkcyB8fCAhaWZkcy0mZ3Q7YXJyKQom Z3Q7ICsJCXJldHVybjsKJmd0OyArCiZndDsgKwlmb3IgKGkgPSAwOyBpICZsdDsgaWZkcy0mZ3Q7 Y291bnQ7IGkrKykgewomZ3Q7ICsJCWlmIChpZmRzLSZndDthcnJbaV0gIT0ga2VlcF9mZCkKJmd0 OyArCQkJY2xvc2UoaWZkcy0mZ3Q7YXJyW2ldKTsKJmd0OyAmbmJzcDsJfQomZ3Q7ICZuYnNwOwom Z3Q7IC0JcmV0dXJuIGZkOwomZ3Q7ICsJZnJlZShpZmRzLSZndDthcnIpOwomZ3Q7ICsJaWZkcy0m Z3Q7YXJyID0gTlVMTDsKJmd0OyArCWlmZHMtJmd0O2NvdW50ID0gMDsKJmd0OyAmbmJzcDt9CiZn dDsgJm5ic3A7CiZndDsgJm5ic3A7LyoqCiZndDsgZGlmZiAtLWdpdCBhL2lzb2xhdGlvbi5oIGIv aXNvbGF0aW9uLmgKJmd0OyBpbmRleCBlYzQ3MDM4Li44YWRhOTg4IDEwMDY0NAomZ3Q7IC0tLSBh L2lzb2xhdGlvbi5oCiZndDsgKysrIGIvaXNvbGF0aW9uLmgKJmd0OyBAQCAtOCwxMCArOCwxNyBA QAomZ3Q7ICZuYnNwOyNkZWZpbmUgSVNPTEFUSU9OX0gKJmd0OyAmbmJzcDsKJmd0OyAmbmJzcDsj aW5jbHVkZSAmbHQ7c3RkYm9vbC5oJmd0OwomZ3Q7ICsjaW5jbHVkZSAmbHQ7c3RkZGVmLmgmZ3Q7 CiZndDsgJm5ic3A7I2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomZ3Q7ICZuYnNwOwomZ3Q7ICtz dHJ1Y3QgaW5pdGlhbF9mZF9zbmFwc2hvdCB7CiZndDsgKwlpbnQgKmFycjsKJmd0OyArCXNpemVf dCBjb3VudDsKJmd0OyArfTsKJmd0OyArCiZndDsgJm5ic3A7dm9pZCBpc29sYXRlX2luaXRpYWwo dm9pZCk7CiZndDsgLWludCBpc29sYXRlX2ZkcyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwomZ3Q7 ICt2b2lkIHNuYXBzaG90X2luaXRpYWxfZmRzKHN0cnVjdCBpbml0aWFsX2ZkX3NuYXBzaG90ICpp ZmRzKTsKJmd0OyArdm9pZCBpc29sYXRlX2ZkcyhzdHJ1Y3QgaW5pdGlhbF9mZF9zbmFwc2hvdCAq aWZkcywgaW50IGtlZXBfZmQpOwomZ3Q7ICZuYnNwO3ZvaWQgaXNvbGF0ZV91c2VyKGNvbnN0IHN0 cnVjdCBjdHggKmMsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBib29sIHVzZV91c2VybnMsCiZndDsg Jm5ic3A7CQkgJm5ic3A7Y29uc3QgY2hhciAqdXNlcm5zKTsKJmd0OyAmbmJzcDtpbnQgaXNvbGF0 ZV9wcmVmb3JrKGNvbnN0IHN0cnVjdCBjdHggKmMpOwomZ3Q7IGRpZmYgLS1naXQgYS9wYXNzdC5j IGIvcGFzc3QuYwomZ3Q7IGluZGV4IDUwNTQ1NTEuLmM0MzM1YmYgMTAwNjQ0CiZndDsgLS0tIGEv cGFzc3QuYwomZ3Q7ICsrKyBiL3Bhc3N0LmMKJmd0OyBAQCAtMzM1LDYgKzMzNSw3IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKJmd0OyAmbmJzcDsJc3RydWN0IGVwb2xsX2V2ZW50 IGV2ZW50c1tOVU1fRVBPTExfRVZFTlRTXTsKJmd0OyAmbmJzcDsJaW50IG5mZHMsIGRldm51bGxf ZmQgPSAtMSwgZmQ7CiZndDsgJm5ic3A7CXN0cnVjdCBjdHggKmMgPSAmYW1wO3Bhc3N0X2N0eDsK Jmd0OyArCXN0cnVjdCBpbml0aWFsX2ZkX3NuYXBzaG90IGlmZHM7CiZndDsgJm5ic3A7CXN0cnVj dCBybGltaXQgbGltaXQ7CiZndDsgJm5ic3A7CXN0cnVjdCB0aW1lc3BlYyBub3c7CiZndDsgJm5i c3A7CXN0cnVjdCBzaWdhY3Rpb24gc2E7CiZndDsgQEAgLTM0NCw4ICszNDUsOSBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiZndDsgJm5ic3A7CiZndDsgJm5ic3A7CWFyY2hfYXZ4 Ml9leGVjKGFyZ3YpOwomZ3Q7ICZuYnNwOwomZ3Q7ICsJc25hcHNob3RfaW5pdGlhbF9mZHMoJmFt cDtpZmRzKTsKJmd0OyArCiZndDsgJm5ic3A7CWlzb2xhdGVfaW5pdGlhbCgpOwomZ3Q7IC0JYy0m Z3Q7ZmRfdGFwID0gaXNvbGF0ZV9mZHMoYXJnYywgYXJndik7CiZndDsgJm5ic3A7CiZndDsgJm5i c3A7CWlmICgoZGV2bnVsbF9mZCA9IG9wZW4oJnF1b3Q7L2Rldi9udWxsJnF1b3Q7LCBPX1JEV1Ig fCBPX0NMT0VYRUMpKSAmbHQ7IDApCiZndDsgJm5ic3A7CQlkaWVfcGVycm9yKCZxdW90O0ZhaWxl ZCB0byBvcGVuIC9kZXYvbnVsbCZxdW90Oyk7CiZndDsgQEAgLTM5MCw2ICszOTIsOSBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiZndDsgJm5ic3A7CXNvY2tfcHJvYmVfZmVhdHVy ZXMoYyk7CiZndDsgJm5ic3A7CiZndDsgJm5ic3A7CWNvbmYoYywgYXJnYywgYXJndik7CiZndDsg KwomZ3Q7ICsJaXNvbGF0ZV9mZHMoJmFtcDtpZmRzLCBjLSZndDtmZF90YXApOwomZ3Q7ICsJCiZn dDsgJm5ic3A7CXRyYWNlX2luaXQoYy0mZ3Q7dHJhY2UpOwomZ3Q7ICZuYnNwOwomZ3Q7ICZuYnNw OwlwYXN0YV9uZXRuc19xdWl0X2luaXQoYyk7CiZndDsgLS0gCiZndDsgMi41Mi4wCiZndDsgCgot LSAKRGF2aWQgR2lic29uIChoZSBvciB0aGV5KQl8IEknbGwgaGF2ZSBteSBtdXNpYyBiYXJvcXVl LCBhbmQgbXkgY29kZQpkYXZpZCBBVCBnaWJzb24uZHJvcGJlYXIuaWQuYXUJfCBtaW5pbWFsaXN0 LCB0aGFuayB5b3UsIG5vdCB0aGUgb3RoZXIgd2F5CgkJCQl8IGFyb3VuZC4KaHR0cDovL3d3dy5v emxhYnMub3JnL35kZ2lic29uCjwvZGl2PjwvcHJlPg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_DM3PR11MB8713F3835423C29FE8A78042DAD52DM3PR11MB8713namp_--