From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=O3X2riMm; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by plum.tunbury.org (Postfix) with ESMTP id 68B244009D for ; Tue, 18 Aug 2026 06:57:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=B/05mWFUeo0nxjJb2Tn9w+EGZaXX8euHguc8+O73Cjo=; b=O3X2riMmdkSWB63l31c0m4MSGQj3ApDAKbQXpgQTwnWiEzYUyTsF0gra djilDE40pViwHupXeVqf58VOkHdatBYQuqGBRo61em+Nd/VH8qLMyanjn Oa3q6Nnvbx6a5igVA5KlRsEoNRrCB0bW4y7YdcmiWZKsZRtwm19KQ61K3 8=; X-CSE-ConnectionGUID: ipd3zUgGTw2PjT9qwfrf9w== X-CSE-MsgGUID: KIqjchqeTSqD2M7UVmn88w== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.25,230,1779141600"; d="asc'?scan'208,217";a="290487496" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 18 Aug 2026 08:57:14 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id ED55F81A42; Tue, 18 Aug 2026 08:57:13 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id C9D2481A25 for ; Tue, 18 Aug 2026 08:57:03 +0200 (CEST) X-CSE-ConnectionGUID: 0Vr+tYBATgiannS2UBsctA== X-CSE-MsgGUID: vIVot8PER/qvQ/l82EpWHw== IronPort-SDR: 6a840227_70QqmXsz1nikNWhyun82po/m3V9z0E3DDq0zZfENdLNPjav ZJh7Xoxe8XQFZ0nMcz69a3vIeYbvuSMl5CLb1/Q== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0H6BwAbAoRqhSIeaIFahBZbKRsBbl8zBwhJA4RVg0+OJ?= =?us-ascii?q?JxJgxQWIQIOBwEDAQgFLgEFGgECBAEBAQIBAgGCC4ItDzcCFo1WAh8GAQQ0E?= =?us-ascii?q?wECBAMCAwEBAQEBAQEBAQEBCwEBAQQBAQECAQECBAMBAQEBAhABAQEBQEmGT?= =?us-ascii?q?w2CRRk4cV4CBAECBgE3AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAgQEBAEjDS5AAQgKEwEBLgoYFA8DEAQBBgMCBA0BNQMUA?= =?us-ascii?q?RIaAQOCDFgBgiACAlADBAEMBqd7myJ6gTKBAYIMAQEGgQhQAw8v2hqBYAkDB?= =?us-ascii?q?hWBOIFYhBmCUQ8NAQUlSWoCAQKEUYMigR0CJw+BVUSBFYIpUW+BfmMBAQEBA?= =?us-ascii?q?ReBEBQBAQgJOwEJgyWCaoImehKBPDxQGAEmgVSGeYdWgWYDWSwBVRMXCwcFX?= =?us-ascii?q?oEIAyovLW4yHYEjPhc1WBsGBYEdgSiENyMZNnqBCV6BKypiEheBCYIKAoJzg?= =?us-ascii?q?gYCAUlBC209NxQZjQYQIQ2BP0kZIIFNGhUOCy8EAQcIGwMQJC0BEwgOAQEgL?= =?us-ascii?q?gYEIwcKBQcDAiUPCQUJBBcCGg0GCwUGAiUIkmoBFyt2nQCTWR1tNAeEIYFgB?= =?us-ascii?q?gyJCYEmlgeEBI0UhwOSUSKYZiOJXoEmCYFvH0yVQQsUhVmBRzgjgUkMBzMaM?= =?us-ascii?q?EOCZwkWMRwPVo1UAxaDOChBfYMaO8cIQjUCAQEHAzEHAgcBDASFTh0BAWmLH?= =?us-ascii?q?QICJAyBTAEB?= IronPort-PHdr: A9a23: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 FURVdYJ0HbbBIgfmAp/ab82qRNLOo/0Iy7D IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:G3xLzqNZNc8tlsBcTv6jsMiBIKoaSvp037BL7TESdfUxSKb0qy nAppUmPHPP5Ar5O0tQ+uxoWpPhfZq0z/ccirX5Vo3NYOCJggSVBbAnxbSn6TztES/z+4dmpM JdWpk7Lsb/SXxzjcOS2njeLz/M+qjizJyV X-Talos-CUID: 9a23:4mTsNmFoGCabZvhuqmI/ylRXBvEPW0HSzX7WJXTiNExyQ6G8HAo= X-Talos-MUID: 9a23:DTke1AmvobS33kSjVzC3dnp8Fflv//SWJXpKiIs//M3UbwFoBBeC2WE= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.25,230,1779141600"; d="asc'?scan'208,217";a="154428798" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDHovm2cyYLdDMV7ipS6RzeImvBFf5kbzF/i24?= =?us-ascii?q?hNzwZQ5kAZcP9aQS80Eiux5Bw9jGyoQGx4CQy0UM0Kz8AZBvZP3/RGNn?= =?us-ascii?q?s+QPs7cvPaOGu0deHbgaxwxa7pI5o+ljptvuNXW8BMNOPovM+KbR0RQl?= =?us-ascii?q?lyYv1yUde+AZxFW7rFT2ngUQ=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Aug 2026 08:56:40 +0200 Received: from TM.local (unknown [37.167.211.191]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 2F5141A421; Tue, 18 Aug 2026 08:56:38 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 18 Aug 2026 08:56:34 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="===-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Aug 18 08:56:39 2026 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.499936, queueID=0827B1A446 X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19565 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: Archived-At: --===-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgQXVndXN0IDExIHRvIDE4LA0KMjAyNi4NCg0KVGFibGUgb2YgQ29udGVudHMNCuKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQpBZmZlY3Qg MC4wLjAg4oCTIEEgc3RyZWFtbGluZWQgYW5kIG5hdHVyYWwgY29uY3VycmVuY3kgbW9kZWwgZm9y IE9DYW1sDQpTbGlwc2hvdyENCmludGVsX2hleC4wLjQNCkJpc2VjdF9wcHhfbmcgMyDigJMgZm9y ayBvZiBiaXNlY3RfcHB4DQpPU0VDLTIwMjYtMTc6IG1pcmFnZS1jcnlwdG8tZWM6IFRpbWluZyBs ZWFrIGluIE5JU1QgZWxsaXB0aWMgY3VydmVzIHNjYWxhciBtdWx0aXBsaWNhdGlvbg0KT2xkIENX Tg0KDQoNCkFmZmVjdCAwLjAuMCDigJMgQSBzdHJlYW1saW5lZCBhbmQgbmF0dXJhbCBjb25jdXJy ZW5jeSBtb2RlbCBmb3IgT0NhbWwNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0K DQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLWFmZmVjdC0w LTAtMC1hLXN0cmVhbWxpbmVkLWFuZC1uYXR1cmFsLWNvbmN1cnJlbmN5LW1vZGVsLWZvci1vY2Ft bC8xODQ1MS8xPg0KDQoNCkRhbmllbCBCw7xuemxpIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoN CiAgSGVsbG8sDQoNCiAgSXQncyBteSBwbGVhc3VyZSB0byBhbm5vdW5jZSB0aGUgZmlyc3QgcmVs ZWFzZSBvZiBgYWZmZWN0JzoNCg0KICAgICAgICBBZmZlY3QgaXMgYSBzdHJlYW1saW5lZCBhbmQg bmF0dXJhbCBjb25jdXJyZW5jeSBtb2RlbCBmb3INCiAgICAgICAgT0NhbWwuDQoNCiAgICAgICAg SXQgcHJvdmlkZXMgcGFyYWxsZWwgYXN5bmNocm9ub3VzIGZ1bmN0aW9ucyBhbmQNCiAgICAgICAg Zmlyc3QtY2xhc3Mgc3luY2hyb25vdXMgYWN0aW9ucyB0byBvcmNoZXN0cmF0ZSB0aGVtLiBUaGUN CiAgICAgICAgcmVzdWx0aW5nIGNvbmN1cnJlbmN5IG1vZGVsIGhhcyBzdHJ1Y3R1cmVkIGNvb3Bl cmF0aXZlDQogICAgICAgIGNvbmN1cnJlbmN5LCBzdHJ1Y3R1cmVkIGNhbmNlbGxhdGlvbiBhbmQg c3RydWN0dXJlZCBlZmZlY3QNCiAgICAgICAgaGFuZGxpbmcuDQoNCiAgICAgICAgQWZmZWN0IGlz IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS4gSXQgaGFzIG5vDQogICAgICAgIGRl cGVuZGVuY2llcy4gSXQgb3B0aW9uYWxseSBkZXBlbmRzIG9uIHRoZSBgY21kbGluZXInDQogICAg ICAgIGxpYnJhcnkgYW5kIHRoZSBPQ2FtbCBgdW5peCcgbGlicmFyeS4NCg0KICBUaGUgZ29hbCBv ZiBgYWZmZWN0JyBpcyB0byBwcm92aWRlIGEgc2hvcnQgYW5kIGVyZ29ub21pYyBbY29uY3VycmVu Y3kNCiAgbW9kZWxdIGFuZCBjb21wb3NhYmxlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIHRv IHByb2dyYW0gcGFyYWxsZWwNCiAgYW5kIGNvbmN1cnJlbnQgc3lzdGVtcyBpbiBPQ2FtbC4gSXQg aXM6DQoNCiAg4oCiIFN0cmVhbWxpbmVkLCBiZWNhdXNlIGl0IHN0cml2ZXMgdG8gbWluaW1pemUg dGhlIGV4cG9zZWQNCiAgICBhYnN0cmFjdGlvbnMsIHRlcm1pbm9sb2d5IGFuZCBjb25jZXB0dWFs IG92ZXJoZWFkLg0KDQogIOKAoiBOYXR1cmFsLCBiZWNhdXNlIGl0IGJhc2VzIGl0cyBjZW50cmFs IGNvbmN1cnJlbnQgY29tcHV0YXRpb25hbA0KICAgIGFic3RyYWN0aW9uIG9uIHRoZSBzdWJzdHJh dGUgb2YgdGhlIE9DYW1sIGxhbmd1YWdlOiBmdW5jdGlvbnMuDQoNCiAgSWYgdGhlIG5vdyBhbG1v c3QgNDAgeWVhcnMgb2xkIFtDTUwgZXZlbnRzXSBtZWFuIHNvbWUgdGhpbmcgdG8geW91LA0KICBv bmUgd2F5IG9mIHNlaW5nIGFmZmVjdCBpcyBqdXN0OiBzdHJ1Y3R1cmVkIGFuZCBjYW5jZWxsYWJs ZSBwYXJhbGxlbA0KICBhc3luY2hyb25vdXMgZnVuY3Rpb24gY2FsbHMgd2hvc2UgcmVzdWx0cyBj YW4gYmUgc3luY2hyb25pemVkIHdpdGggQ01MDQogIGV2ZW50cyAoYWN0aW9ucyBpbiBhZmZlY3Qp Lg0KDQogIElmIENNTCBldmVudHMgZG9uJ3QgbWVhbiBhbnl0aGluZyB0byB5b3UgYnV0IEdvIGNo YW5uZWxzIGRvLCB0aGVuIHRoZQ0KICB0YWtlIGF3YXkgaXMgdGhhdCB0aG9zZSBjYW4gYmUgaW1w bGVtZW50ZWQgd2l0aCBhZmZlY3QncyBmaXJzdC1jbGFzcw0KICBzeW5jaHJvbm91cyBhY3Rpb25z LiBIb3dldmVyIGFjdGlvbnMgZ2l2ZSB5b3UgbW9yZSB0aGFuIHRoYXQuIFRoZXkNCiAgZ2l2ZSB5 b3UgYSBnZW5lcmFsIGNvbXBvc2FibGUgc3luY2hyb25pemF0aW9uIG1lY2FuaXNtIHdoaWNoIHlv dSBjYW4NCiAgdW5kZXJzdGFuZCBhczoNCg0KDQpBbiBleHRlbnNpYmxlIGBzZWxlY3QnLg0K4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWMDQoNCiAgSW4gYWZmZWN0IHlvdSBjYW4gZm9yIGV4YW1wbGUgc2VsZWN0IHRvIHdh aXQgYmV0d2VlbiB0aGUgW3Jlc3VsdF0gb2YNCiAgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uLCB0 aGUgW2NhbmNlbGxhdGlvbl0gb2YgYW5vdGhlciBvbmUsIGENCiAgW3RpbWVvdXRdLCBhIFtzaWdu YWwgZGVsaXZlcnldLCBhIHNldC1vbmNlIGNlbGwgW2JlY29taW5nIHNldF0sIGEgZmlsZQ0KICBk ZXNjcmlwdG9yIFtiZWNvbWluZyByZWFkYWJsZV0gYW5kIGEgW2Z1bm55IHByaW1pdGl2ZV0gYWN0 aW9uIG9mIHlvdXINCiAgb3duLg0KDQogIFRoZSBsb2NrLWZyZWUgaW1wbGVtZW50aW9uIG9mIGFj dGlvbnMgZm9sbG93cyB0aGlzIDIwMDkgW3BhcGVyXSB3aXRoDQogIHNvbWUgaWRlYXMgdGFrZW4g ZnJvbSB0aGUgW0d1aWxlIGltcGxlbWVudGF0aW9uXSBvZiBDTUwuIExpa2UgdGhlDQogIGxhdHRl ciwgb25lIHRoaW5nIHRoYXQgYWZmZWN0IGRvZXMgaXMgdG8gY2hhbmdlIHRoZSBDTUwNCiAgdGVy bWlub2xvZ3kuIFdlIGZpbmQgdGhlIGV2ZW50LWJhc2VkIHRlcm1pbm9sb2d5IHRvIGJlICp2ZXJ5 Kg0KICBjb25mdXNpbmcgZm9yIHRoaW5raW5nIGFib3V0IHRoZXNlIG1lY2FuaXNtcy4gVG8gZnVs bHkgTWlsbmVyaXplDQogIE9DYW1sLCB3ZSBkcmV3IGluc3BpcmF0aW9uIGZyb20gW0NDU10gYW5k IHJlcGxhY2VkIGV2ZW50IGJ5IC9hY3Rpb24vLA0KICBhbmQgY2hhbm5lbCBieSAvcG9ydC8uIFNl ZSB0aGUgW2Rlc2lnbiBub3Rlc10gZm9yIG1vcmUgaW5mb3JtYXRpb24NCiAgYWJvdXQgdGhlc2Ug bmFtaW5nIGNoYW5nZXMuDQoNCiAgQmV5b25kIHRyeWluZyB0byBleHBvc2UgYSBjbGVhciBhbmQg YWNjZXNzaWJsZSBjb25jdXJyZW5jeSBtb2RlbCwgd2hhdA0KICBkaXN0aW5ndWlzaGVzIGFmZmVj dCBmcm9tIHRoZSBmaXJzdCBnZW5lcmF0aW9uIG9mIE9DYW1sIDUgY29uY3VycmVuY3kNCiAgbGli cmFyaWVzIGlzIHRoYXQ6DQoNCiAgMS4gSXQgZnVsbHkgZW1icmFjZXMgdGhlIG5ldyBwYXJhbGxl bCBuYXR1cmUgb2YgdGhlIE9DYW1sIHJ1bnRpbWUNCiAgICAgc3lzdGVtIGFuZCBtYWtlcyBubyBk aXN0aW5jdGlvbiBiZXR3ZWVuIGNvbmN1cnJlbmN5IGFuZA0KICAgICBwYXJhbGxlbGlzbS4NCg0K ICAyLiBJdCBleHBvc2VzIGl0cyBoaWdoLWxldmVsIGFic3RyYWN0aW9ucywgbmFtZWx5IGZpcnN0 LWNsYXNzDQogICAgIHN5bmNocm9ub3VzIGFjdGlvbnMgYW5kIGFzeW5jaHJvbm91cyBmdW5jdGlv bnMsIGZvciBvdGhlcnMgdG8gYmUNCiAgICAgaGFuZGxlZC4gQW5kIHRoZXNlIG1lY2hhbmlzbXMg YmVpbmcgcGFyYWxsZWwtc2FmZSBhbmQgbG9jay1mcmVlLA0KICAgICBub3QgbXVjaCB3b3JrIGlz IG5lZWRlZCB0byBpbnRlZ3JhdGUgdGhlbSwgbGl0dGxlIGNvbnN0cmFpbnRzIGFyZQ0KICAgICBp bXBvc2VkIG9uIHRoZSBjb250ZXh0IHdoZXJlIHRoZXkgY2FuIGJlIHVzZWQuDQoNCiAgVGhpcyBu b3RhYmx5IG1lYW5zIHRoYXQ6DQoNCiAg4oCiIElmIHlvdSBhcmUgdW5oYXBweSBhYm91dCBqdXN0 IHVzaW5nIGFuIGludm9jYXRpb24gb2YgdGhlIFtidWlsdC1pbg0KICAgIHNjaGVkdWxlcl0gaW4g dGhlIG1haW4gb2YgeW91ciBwcm9ncmFtIG9yIHVuaGFwcHkgYWJvdXQgdXNpbmcgaXQgYXQNCiAg ICBhbGwsIHlvdSBjYW4gcmVhc29uYWJseSBlYXNpbHkgcmVjbGFpbSBjb250cm9sIG92ZXIgeW91 cg0KICAgIGFwcGxpY2F0aW9uJ3MgY29uY3VycmVudCBhbmQgcGFyYWxsZWwgYXJjaGl0ZWN0dXJl IHdoaWxlIHN0aWxsIHVzaW5nDQogICAgZWNvLXN5c3RlbSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBt YWtlIHVzZSB0aGVzZSBhYnN0cmFjdGlvbnMuDQoNCiAgICBGb3IgZXhhbXBsZSBbdGhpcyB0ZXN0 XSBoYXMgY29kZSBhbmQgZXhhbXBsZXMgc2hvd2luZyBob3cgdG8gaGFuZGxlDQogICAgYWN0aW9u cyBvciBydW5uaW5nIGEgcm9vdCBhc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSB0aHJlYWQgYnkN CiAgICB5b3Vyc2VsZi4gVGhvc2UgY2FuIGV2ZW4gaW50ZXJhY3Qgd2l0aCBhIHBhcmFsbGVsIGlu dm9jYXRpb24gb2YgdGhlDQogICAgYnVpbHQtaW4gc2NoZWR1bGVyIGlmIHRoYXQncyB5b3VyIHRo aW5nLiBUaGlzIFtvdGhlciB0ZXN0XSBzaG93cw0KICAgIHRoYXQgdHdvIGluc3RhbmNlcyBvZiB0 aGUgc2NoZWR1bGVyIGNhbiBydW4gYWxvbmcgc2lkZSwgZWl0aGVyIGluDQogICAgdGhlaXIgaXNv bGF0ZSByZWFsbSBvciBldmVuIGNvbW11bmljYXRpbmcgdmlhIHBvcnRzLg0KDQogIOKAoiBTaW5j ZSBhdCBzb21lIHBvaW50IGl0IHdvdWxkIGJlIGdvb2QgdG8gYWdyZWUgb24gbW9yZSB0aGFuIGJ5 dGVzLCBpdA0KICAgIG11c3QgYmUgcG9zc2libGUgZm9yIGV4aXN0aW5nIHNjaGVkdWxlcnMgdG8g aGFuZGxlIGFmZmVjdCdzDQogICAgaGlnaC1sZXZlbCBhYnN0cmFjdGlvbnMgb3IgYSBzdWJzZXQg b2YgdGhlbS4gRm9yIGV4YW1wbGUgdG8gaGFuZGxlDQogICAgYWN0aW9ucywgb25seSBhIHBhcmFs bGVsLXNhZmUgY2xvc3VyZSB0byBzY2hlZHVsZSB0aGUgd29yayB0bw0KICAgIHVuYmxvY2sgaW4g eW91ciBzY2hlZHVsZXIgaGFzIHRvIGJlIHByb3ZpZGVkIGF0IGFjdGlvbiBpbnZvY2F0aW9uDQog ICAgaGFuZGxpbmcgdGltZS4NCg0KICBUTDtEUi4gWW91IGdldCBhIG5pY2UgYW5kIGVyZ29ub21p YyBjb25jdXJyZW5jeSBtb2RlbCAqYW5kKg0KICBmbGV4aWJsaXR5Lg0KDQogIFJlZ2FyZGluZyB0 aGUgcmVsZWFzZSwgd2hpbGUgSSB0aGluayB0aGF0IGFmZmVjdCBpcyBub3cgZmluYWxseQ0KICBj b25jZXB0dWFsbHkgd2VsbCByb290ZWQsIGl0J3MgZWFybHkgdGltZSBhbmQgaXQgaGFzIG5vdCBi ZWVuIHVzZWQNCiAgbXVjaC4gVGhlIGFpbSBvZiB0aGlzIGZpcnN0IHJlbGVhc2Ugd2FzIHRvIGhh dmUgYSBmdWxseSB3b3JraW5nIGFuZA0KICB1c2FibGUgaW1wbGVtZW50YXRpb24gb2YgYSBkZXNp Z24gdGhhdCBoYXMgYmVlbiByb3R0aW5nIGZvciB0d28geWVhcnMNCiAgaW4gYSByZXBvIGFuZCBp biBteSB0aG91Z2h0cy4gVGhpcyBtZWFucyB0aGF0IGluIHRoZSBjdXJyZW50IHN0YXRlOg0KDQog IOKAoiBZb3UgbGlrZWx5IGRvbid0IHdhbnQgdG8gdXNlIGl0IGluIHByb2R1Y3Rpb25bXjFdLg0K DQogIOKAoiBDaGFuZ2VzIHNob3VsZCBzdGlsbCBiZSBleHBlY3RlZC4gRXNwZWNpYWxseSBpZiB5 b3UgZmlkZGxlIHdpdGggdGhlDQogICAgcHJpdmF0ZSBBUElzLiBFYXJseSBhZG9wdGVycyBhbmQg cXVlc3Rpb25zIG9uIHRoaXMgZm9ydW0gYXJlDQogICAgd2VsY29tZS4gR2V0IGluIHRvdWNoIG9u IHRoZSBpc3N1ZSB0cmFja2VyIGlmIHlvdSBhcmUgdHJ5aW5nIHRoaW5ncw0KICAgIGFuZCBydW5u aW5nIGludG8gdHJvdWJsZS4NCg0KICDigKIgVGhlIGxpYnJhcnkgd2lsbCByZXF1aXJlIHRoZSBs YXRlc3QgdmVyc2lvbiBvZiBPQ2FtbCBmb3IgYSBjb3VwbGUgb2YNCiAgICByZWxlYXNlcy4NCg0K ICDigKIgT25lIHRoaW5nIHRoYXQgZGlkbid0IG1ha2UgaXQgdG8gdGhlIHJlbGVhc2UgaXMgdG8g cmVwbGFjZSB0aGUgdXNlDQogICAgb2YgYHNlbGVjdCgyKScgaW4gdGhlIGNvb3BlcmF0aXZlIFt+ VW5peH4gY29tcGF0aWJpbGl0eSBtb2R1bGVdLiBUaGUNCiAgICBpbml0aWFsIHBsYW4gd2FzIHRv IHVzZSBlcG9sbC9rcXVldWUgdGhlcmUsIGl0J3Mgc3RpbGwgdGhlIHBsYW4uDQoNCiAg4oCiIFRo ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdlbnQgZm9yIGNsYXJpdHkgYW5kIGNvcnJlY3RuZXNz LCBpZiBub3QNCiAgICBuYcOvdmV0eS4gSWYgeW91IGRvbid0IHNlZSBzaGluaW5nIHBlcmZvcm1h bmNlLCB0aGVyZSBhcmUgcXVpdGUgYSBmZXcNCiAgICBkaW1lbnNpb25zIHdoZXJlIGl0IGNhbiBi ZSBpbXByb3ZlZC4gU29tZSBzdHJ1Y3R1cmVzIGNhbiBiZQ0KICAgIHNwZWNpYWxpemVkLCBtb3Jl IGltcGVyYXRpdmUgZGF0YSBzdHJ1Y3R1cmVzIGNhbiBiZSB1c2VkIChub3QgYWx3YXlzDQogICAg YSB3aW4gdGhvdWdoKSwgc29tZSBhdG9taWNzIGNhbiBwZXJoYXBzIGJlIHJldHJhY3RlZCwgc2lt cGxpc3RpYyBvcg0KICAgIGR1bWIgc2NoZWR1bGluZyBzdHJhdGVnaWVzIGNhbiBiZSBtYWRlIG1v cmUgY29tcGxleCwgZXRjLiBBbmQgb2YNCiAgICBjb3Vyc2UgeW91IGNhbiBhbHdheXMgQllPUyAo dGhlIG1vbm8tdGhyZWFkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlDQogICAgZnVsbCBtb2RlbCBt ZW50aW9uZWQgZWFybGllciBbaXMgfjEwMCBsb2NdKS4NCg0KICAgIFRoZSBjb2RlIGJhc2Ugc2hv dWxkIGJlIHJlYXNvbmFibHkgYXBwcm9hY2hhYmxlLCBmb3Igbm93IGl0J3MgNjkwDQogICAgbG9j IGlmIHlvdSBjb25zaWRlciBvbmx5IHRoZSBjb3JlIG1vZHVsZXMgZm9yIGFjdGlvbiBhbmQNCiAg ICBhc3luY2hyb25vdXMgZnVuY3Rpb25zOyB0aGUgcGFyYWxsZWwgd29yayBzdGVhbGluZyBzY2hl ZHVsZXIgYWRkcw0KICAgIDM4MCBtb3JlLiBCdXQgdGhlIGRldmlsIGlzIGluIHRoZSBpbnRlcmxl YXZpbmcgOuKAkykNCg0KICBIYXBwYXJhcHlsbGVjb21wdXRsaW5nIQ0KDQogIFRoaXMgZmlyc3Qg cmVsZWFzZSB3YXMgbWFkZSBwb3NzaWJsZSB0aGFua3MgdG8gYSBncmFudCBmcm9tIHRoZSBbT0Nh bWwNCiAgU29mdHdhcmUgRm91bmRhdGlvbl0uIEkgYWxzbyB0aGFuayBteSBbZG9ub3JzXSBmb3Ig dGhlaXINCiAgc3VwcG9ydC4gRXZlcnlvbmUncyBzdXBwb3J0IGJlaW5nIGVzc2VudGlhbCBmb3Ig dGhlc2UgYml0cyB0byBnZXQNCiAgd29ya2VkIG9uIGFuZCBiZSBkaXN0cmlidXRlZC4NCg0KICDi gKIgSG9tZXBhZ2U6IDxodHRwczovL2VycmF0aXF1ZS5jaC9zb2Z0d2FyZS9hZmZlY3Q+DQogIOKA oiBEb2NzOiA8aHR0cHM6Ly9lcnJhdGlxdWUuY2gvc29mdHdhcmUvYWZmZWN0L2RvYz4gb3IgYG9k aWcgZG9jDQogICAgYWZmZWN0Jw0KICDigKIgSW5zdGFsbDogYG9wYW0gaW5zdGFsbCBhZmZlY3Qn IChbb3BhbSBQUl0pDQoNCiAgQmVzdCwNCg0KICBEYW5pZWwNCg0KICBbXjFdOiBJJ2xsIGJlIGNv bWZvcnRhYmxlIHRlbGxpbmcgeW91IHRvIGRvIHNvIHdoZW4gSSBoYXZlIGFuDQogIGFmZmVjdC1i YXNlZCBjb25uZWN0b3IgZm9yIG15IElPIGFnbm9zdGljIFtIVFRQIGxpYnJhcnldIGRlcGxveWVk IG9uIGENCiAgbGl2ZSBzeXN0ZW0gOi0pDQoNCg0KW3Jlc3VsdF0NCjxodHRwczovL2VycmF0aXF1 ZS5jaC9zb2Z0d2FyZS9hZmZlY3QvZG9jL0FmZmVjdC9GdW4vQXN5bmMvaW5kZXguaHRtbCNnZXRf YWN0aW9ucz4NCg0KW2NhbmNlbGxhdGlvbl0NCjxodHRwczovL2VycmF0aXF1ZS5jaC9zb2Z0d2Fy ZS9hZmZlY3QvZG9jL0FmZmVjdC9GdW4vQXN5bmMvaW5kZXguaHRtbCNjYW5jZWxsYXRpb25fYWN0 aW9ucz4NCg0KW3RpbWVvdXRdDQo8aHR0cHM6Ly9lcnJhdGlxdWUuY2gvc29mdHdhcmUvYWZmZWN0 L2RvYy9BZmZlY3RfdW5peC9NdGltZS9pbmRleC5odG1sI3ZhbC13YWl0X2Zvcic+DQoNCltzaWdu YWwgZGVsaXZlcnldDQo8aHR0cHM6Ly9lcnJhdGlxdWUuY2gvc29mdHdhcmUvYWZmZWN0L2RvYy9B ZmZlY3RfdW5peC9Vbml4L1NpZ25hbC9pbmRleC5odG1sI3ZhbC13YWl0Jz4NCg0KW2JlY29taW5n IHNldF0NCjxodHRwczovL2VycmF0aXF1ZS5jaC9zb2Z0d2FyZS9hZmZlY3QvZG9jL0FmZmVjdC9D ZWxsL09uY2UvaW5kZXguaHRtbCNhY3Rpb25zPg0KDQpbYmVjb21pbmcgcmVhZGFibGVdDQo8aHR0 cHM6Ly9lcnJhdGlxdWUuY2gvc29mdHdhcmUvYWZmZWN0L2RvYy9BZmZlY3RfdW5peC9Vbml4L2lu ZGV4Lmh0bWwjYWN0aW9uPg0KDQpbZnVubnkgcHJpbWl0aXZlXQ0KPGh0dHBzOi8vZXJyYXRpcXVl LmNoL3NvZnR3YXJlL2FmZmVjdC9kb2MvQWZmZWN0L0FjdGlvbi9Qcml2YXRlL0FjdGlvbi9Qcmlt aXRpdmUvaW5kZXguaHRtbD4NCg0KW3BhcGVyXSA8aHR0cHM6Ly9kb2kub3JnLzEwLjExNDUvMTU5 NjU1MC4xNTk2NTg4Pg0KDQpbR3VpbGUgaW1wbGVtZW50YXRpb25dDQo8aHR0cHM6Ly93aW5nb2xv Zy5vcmcvYXJjaGl2ZXMvMjAxNy8wNi8yOS9hLW5ldy1jb25jdXJyZW50LW1sPg0KDQpbQ0NTXSA8 aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FsY3VsdXNfb2ZfY29tbXVuaWNhdGluZ19z eXN0ZW1zPg0KDQpbZGVzaWduIG5vdGVzXSA8aHR0cHM6Ly9lcnJhdGlxdWUuY2gvc29mdHdhcmUv YWZmZWN0L2RvYy9kZXNpZ24uaHRtbD4NCg0KW2J1aWx0LWluIHNjaGVkdWxlcl0NCjxodHRwczov L2VycmF0aXF1ZS5jaC9zb2Z0d2FyZS9hZmZlY3QvZG9jL0FmZmVjdC9GdW4vQXN5bmMvaW5kZXgu aHRtbCNydW5uaW5nPg0KDQpbdGhpcyB0ZXN0XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9kYnVlbnps aS9hZmZlY3QvYmxvYi8wNTZmMDU5MzFlNTQzMjFiNDFmMjIwYWZhNzU2YzdmNzdhMThhMmZjL3Rl c3QvdGVzdF90aHJlYWQubWw+DQoNCltvdGhlciB0ZXN0XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9k YnVlbnpsaS9hZmZlY3QvYmxvYi9jZmMzM2NlNzFmMWVjMDIyZTlhYjFhY2YwNmNmYTI2ZjU3NjY0 MTJlL3Rlc3QvdGVzdF9tdWx0aV9zY2hlZHVsZXIubWwjTDM2Pg0KDQpbaXMgfjEwMCBsb2NdDQo8 aHR0cHM6Ly9naXRodWIuY29tL2RidWVuemxpL2FmZmVjdC9ibG9iL2NmYzMzY2U3MWYxZWMwMjJl OWFiMWFjZjA2Y2ZhMjZmNTc2NjQxMmUvdGVzdC90ZXN0X3RocmVhZC5tbCNMODgtTDIwMT4NCg0K W09DYW1sIFNvZnR3YXJlIEZvdW5kYXRpb25dIDxodHRwczovL29jYW1sLXNmLm9yZy8+DQoNCltk b25vcnNdIDxodHRwczovL2dpdGh1Yi5jb20vc3BvbnNvcnMvZGJ1ZW56bGk+DQoNCg0KU2xpcHNo b3chDQrilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8aHR0cHM6Ly9k aXNjdXNzLm9jYW1sLm9yZy90L2Fubi1zbGlwc2hvdy8xNjMzNy8yNj4NCg0KDQpDb250aW51aW5n IHRoaXMgdGhyZWFkLCBQYXVsLUVsbGlvdCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KDQogIEl0IGlzIHRocm91Z2ggdGhlIGVwaWMgdm9pY2Ugb2YgYW4gb2xkIGJhcmQgdGhhdCBJ IGFubm91bmNlIHRoZSBuZXh0DQogIHJlbGVhc2Ugb2YgU2xpcHNob3c6DQoNCg0KU2xpcHNob3cg MC4xMi4wOiBUaGUgTG9yZCBvZiB0aGUgU2xpcHM6IFRoZSBUd28gRWRpdG9ycw0K4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgVGhlIHJpdmFs cnkgYmV0d2VlbiB0aGUgYmVhcmRlZCBFbWFjcyB1c2VycyBhbmQgdGhlIHBvaW50eS1lYXJlZCBW Uw0KICBDb2RlIHVzZXJzIGhhcyBiZWVuIHBvaW50bGVzc2x5IHJhZ2luZyBmb3IgYWdlcyBub3cu IEJvdGggZmFjdGlvbnMNCiAgd2FudGVkIHRvIHByb3ZlIHRoZWlyIHN1cGVyaW9yaXR5IGFzIFNs aXBzaG93IGVkaXRvcnMsIGFuZCBjbGFpbSB0aGUNCiAgaGlnaGVzdCB0eXBvIGtpbGwtY291bnQu DQoNCiAgUG9pbnR5LWVhcmVkIFZTIENvZGUgdXNlcnMgaGFkIGFuIG9mZmljaWFsIFNsaXBzaG93 IGV4dGVuc2lvbiwgd2l0aCBhDQogIGxpdmUgcHJldmlldyB0aGF0IGRpZCBub3QgcmVxdWlyZSB0 aGUgU2xpcHNob3cgYmluYXJ5LiBIb3dldmVyLCB0aGF0DQogIGVtYmVkZGVkIGxpdmUgcHJldmll dyBoYWQgbGltaXRhdGlvbnMsIGVnIHdpdGggbXVsdGktZmlsZQ0KICBwcmVzZW50YXRpb25zLCBh bmQgbW9yZSBpbXBvcnRhbnRseSBoYWQgbm8gTFNQIHN1cHBvcnQuDQoNCiAgQmVhcmRlZCBFbWFj cyB1c2VycyBjb3VsZCB1c2UgdGhlIGJ1aWx0LWluIExTUCBjbGllbnQsIGBlZ2xvdCcuIEJ1dA0K ICB3aXRob3V0IGFuIG9mZmljaWFsIG1vZGUsIGl0IHdhcyBpbXBvc3NpYmxlIHRvIGV4dGVuZCB0 aGUgZmVhdHVyZSBzZXQNCiAgYmV5b25kIHN0cmljdCBMU1AuDQoNCiAgU28sIHRoaXMgcmVsZWFz ZSBvZiBTbGlwc2hvdyBjb21lcyB3aXRoIHR3byBjb21wYW5pb25zOg0KDQogIOKAoiBTbGlwc2hv dydzIFZTIENvZGUgZXh0ZW5zaW9uLCBhdmFpbGFibGUgaW4gW1ZTIENvZGUnc10NCiAgICBbTWFy a2V0cGxhY2VzXSAoYW5kIHdoaWNoIG5vdyByZXF1aXJlcyBhIHNsaXBzaG93IGJpbmFyeSkNCiAg 4oCiIFNsaXBzaG93J3MgRW1hY3MgW21ham9yIG1vZGVdLCBpbnN0YWxsYWJsZSB3aXRoIGAodXNl LXBhY2thZ2UNCiAgICBzbGlwc2hvdy1tb2RlIDp2YyAoOnVybA0KICAgICJodHRwczovL2dpdGh1 Yi5jb20vcGFuZ2xlc2Qvc2xpcHNob3ctZW1hY3MtbW9kZSIgOnJldiA6bmV3ZXN0KSknDQoNCiAg VGhleSBhbGxvdyBtdWNoIG1vcmUgY29vcGVyYXRpb24gYmV0d2VlbiB0aGUgZWRpdG9yIGFuZCB0 aGUgcHJldmlldw0KICBzZXJ2ZXIuIEZvciBpbnN0YW5jZSwgdGhlcmUgaXMgbm93IGEgc2ltcGxl IHNldHRpbmcgdG8gY2hvb3NlIGJldHdlZW4NCiAgcmVmcmVzaGluZyB0aGUgcHJldmlldyBvbiBl YWNoIGtleXN0cm9rZSwgb3Igb24gc2F2ZS4gVHdvIG5ldyBjb21tYW5kcw0KICBhcmUgYXZhaWxh YmxlIHRvIGNvbnRyb2wgdGhlIHByZXNlbnRhdGlvbiBkaXJlY3RseSBmcm9tIHRoZSBlZGl0b3Iu DQoNCiAgICAgICAgT25lIExTUCB0byBydWxlIHRoZW0gYWxsLCBvbmUgc2VydmVyIHRvIHN5bmMg dGhlbSwNCg0KICAgICAgICBPbmUga2V5c3Ryb2tlIHRvIHN0ZXAgdGhyb3VnaCBzbGlwcywgYW5k IGluIHRoZSBlZGl0b3INCiAgICAgICAgYmluZCB0aGVtLg0KDQogIEFub3RoZXIgaW1wcm92ZW1l bnQgd29ydGggbWVudGlvbmluZyBpcyB0aGF0IHRoZSB3b3JrZmxvdyBmb3Igc2F2aW5nDQogIGRy YXdpbmdzIGhhcyBiZWVuIGdyZWF0bHkgaW1wcm92ZWQ6IFlvdSBjYW4gbm93IHNhdmUgeW91ciBk cmF3aW5ncw0KICBzaW1wbHkgYnkgY2xpY2tpbmcgdGhlIGBTYXZlJyBidXR0b24sIGFuZCB0aGV5 IGFyZSBub3cgYW5jaG9yZWQgd2hlcmUNCiAgdGhleSBhcmUgaW5jbHVkZWQgKHNvLCBpZiB5b3Vy IHRleHR1YWwgY29udGVudCBjaGFuZ2VzLCBkcmF3aW5ncyBhcmUNCiAgbW92ZWQgYWNjb3JkaW5n bHkpLg0KDQogICAgICAgIFlvdSBzaGFsbCBub3QgZGVzeW5jaHJvbml6ZSB0ZXh0IGFuZCBkcmF3 aW5nIGNvbnRlbnQhDQoNCiAgSGVyZSBpcyBhIHByb29mIHRoYXQgYm90aCBlZGl0b3JzIGFyZSBn cmVhdCwgd2hlcmUgYSBkcmF3aW5nIGlzDQogIHJlY29yZGVkLCBzYXZlZCwgYW5kIGNvbnRlbnQg aXMgYWRkZWQgYmVmb3JlaGFuZDoNCg0KICA8aHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNo bWVudHMvYXNzZXRzL2M0ZjAxMzFkLTdlZGEtNGJkZC04NzRlLTUwYzE4NzI1ODBlYj4NCg0KICA8 aHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2Q0MTY0YzNmLWY2M2Et NDBmYi1iMDNiLWFkZDRmMGYzMjQzNT4NCg0KDQogIEFuZCBhcyBhbHdheXMsIHRoYW5rcyBzbyBt dWNoIHRvIE5MTmV0IGZvciB0aGUgc3VwcG9ydC4gVGhlIHZhc3QNCiAgYW1vdW50IG9mIHRpbWUg aXQgdG9vayBtZSB0byBsZWFybiBFbWFjcyBMaXNwIHdvdWxkIG5vdCBiZSByZWFzb25hYmxlDQog IHdpdGhvdXQgdGhlaXIgZ2VuZXJvdXMgc3VwcG9ydCENCg0KICAoSWYgeW91J3JlIGEgaGFpcnkt Zm9vdGVkIHVzZXIgb2YgYSB0aGlyZCwganVzdCBhcyBncmVhdCwgZWRpdG9yIGFuZA0KICB5b3Un ZCBsaWtlIHRvIGpvaW4gdGhlIEZlbGxvd3NsaXAsIHBsZWFzZSBnZXQgaW4gY29udGFjdCwgSSdk IGJlIGdsYWQNCiAgdG8gaGF2ZSBzb21lIGhlbHAhKQ0KDQogIEhlcmUgaXMgdGhlIGZ1bGwgY2hh bmdlbG9nOg0KDQoNCltWUyBDb2RlJ3NdDQo8aHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVk aW8uY29tL2l0ZW1zP2l0ZW1OYW1lPVNsaXBzaG93LnNsaXBzaG93Pg0KDQpbTWFya2V0cGxhY2Vz XSA8aHR0cHM6Ly9vcGVuLXZzeC5vcmcvZXh0ZW5zaW9uL1NsaXBzaG93L3NsaXBzaG93Pg0KDQpb bWFqb3IgbW9kZV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYW5nbGVzZC9zbGlwc2hvdy1lbWFjcy1t b2RlPg0KDQoNCkFkZGVkDQrilYzilYzilYzilYzilYwNCg0KICDigKIgYGF1dG8tY29udGludWUn IGF0dHJpYnV0ZSB0byBhdXRvbWF0aWNhbGx5IGNvbnRpbnVlIHRvIHRoZSBuZXh0DQogICAgYWN0 aW9uICgjMjQwKQ0KICDigKIgYSBgfmR1cmF0aW9uOkZMT0FUJyBhcmd1bWVudCB0byB0aGUgYHN0 ZXAnIGFjdGlvbi4gKCMyNDEpDQogIOKAoiBMU1A6DQogICAg4oCiIFR3byBjb21tYW5kcyB0byBt YWtlIHRoZSBwcmVzZW50YXRpb24gcHJldmlldyBnbyBmb3J3YXJkL2JhY2t3YXJkDQogICAgICBm cm9tIHRoZSBlZGl0b3IgKCMyNDIpDQogICAg4oCiIENvbnNpZGVyIGAuc2xwJyBhcyBpbnB1dCBm aWxlcy4gKCMyNDQpDQogICAg4oCiIEEgY29uZmlndXJhdGlvbiBmb3IgcmVmcmVzaGluZyB0aGUg cHJldmlldyBvbiBlYWNoIGtleXN0cm9rZSwgb3INCiAgICAgIG9uIHNhdmUuICgjMjQ4KQ0KICAg IOKAoiBXYXRjaCBkZXBlbmRlbmNpZXMgZm9yIGNoYW5nZSBhbmQgcmVmcmVzaCBwcmV2aWV3ICgj MjUyKQ0KDQoNCkNoYW5nZWQNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKAoiBEcmF3aW5n cyBhcmUgbm93IHNhdmVkIHRocm91Z2ggdGhlIHByZXZpZXcgc2VydmVyICgjMjQ5LCAjMjU0KQ0K ICDigKIgRHJhd2luZ3MgYXJlIGFuY2hvcmVkIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgZHJhd2lu ZyBoYXMgYmVlbg0KICAgIGFkZGVkLiAoIzI2MikNCiAg4oCiIERvbid0IHNwYW0gd2l0aCBub3Rp ZmljYXRpb25zIHRvIHRlbGwgYWJvdXQgdGhlIFVSTCBvZiB0aGUgc2xpcHNob3cNCiAgICBzZXJ2 ZXIgKCMyNjUpDQoNCg0KRml4ZWQNCuKVjOKVjOKVjOKVjOKVjA0KDQogIOKAoiBGaXggYWN0aW9u IGRldGVjdGlvbiBpbiBMU1AgaW4gbXVsdGlmaWxlIHNldHRpbmdzICgjMjQzKQ0KICDigKIgRml4 IGV4dGVybmFsIHRoZW1lcyBpbiBzZXJ2ZSBtb2RlICgjMjQ1KQ0KICDigKIgRml4IExTUCBwcmV2 aWV3IHdpdGggbXVsdGlwbGUgZmlsZXMgd2hlbiBzb21lIG9mIHRoZW0gYXJlIG5vdCBvcGVuZWQN CiAgICAoIzI1MCkNCg0KDQpEb2NzDQrilYzilYzilYzilYwNCg0KICDigKIgR3JlYXRseSBpbXBy b3ZlIHRoZSBxdWFsaXR5IG9mIHRoZSBFbmdsaXNoIGluIGRvY3VtZW50YXRpb24gKCMyNTUsDQog ICAgQFN5bmNocm8pDQoNCg0KaW50ZWxfaGV4LjAuNA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcv dC9hbm4taW50ZWwtaGV4LTAtNC8xODQ1Ni8xPg0KDQoNCk1pa2hhaWwgYW5ub3VuY2VkDQrilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICA8aHR0 cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS9jNWQ1NmRjMWVkMjE4MTIwYzk4MjliYjk1 NTE4NTdmNDMwOGRlNTQxZjIwZjZkMjFhMTI5NTliZjBhYmUxZGRlLzY4NzQ3NDcwNzMzYTJmMmY2 OTJlNjk2MjYyMmU2MzZmMmY2Yjc2NjgzNzUwMzQ3MDJmNmM2MTczNzQ2OTY4NjU3ODZjNmY2ODY3 NmYyZDMwMzAzMTJlNzA2ZTY3Pg0KICAvaXMgbmV3IHByZXR0eSBsb2dv4oCmLw0KDQogIFlvIQ0K DQogIEkgYW0gaGFwcHkgdG8gYW5ub3VuY2UgdGhlIG5ldyByZWxlYXNlIG9mIFtJbnRlbF9oZXhd IGxpYnJhcnkuIEl0IGlzIGENCiAgSW50ZWwgSEVYIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IGZvciBw YXJzaW5nIGFuZCBnZW5lcmF0aW5nIEludGVsIEhFWA0KICAoYWxzbyBrbm93biBhcyBJSEVYKSBv YmplY3RzLiBUaGlzIGZvcm1hdCBpcyBjb21tb25seSB1c2VkIHRvDQogIHJlcHJlc2VudCBjb21w aWxlZCBwcm9ncmFtIGNvZGUgYW5kIGRhdGEgdGhhdCBpcyBsb2FkZWQgaW50byBhDQogIG1pY3Jv Y29udHJvbGxlciwgZmxhc2ggbWVtb3J5LCBvciBST00gaW4gZW1iZWRkZWQgc3lzdGVtcyBwcm9n cmFtbWluZy4NCg0KICBUaGlzIG5ldyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIGNv bXBsZXRlbHkgcmV3cml0dGVuLA0KICByZXRob3VnaHQgYW5kIHRlc3RlZC4NCg0KDQpbSW50ZWxf aGV4XSA8aHR0cHM6Ly9naXRodWIuY29tL2R4M21vZC9pbnRlbF9oZXg+DQoNCkluIHVzZQ0K4pWM 4pWM4pWM4pWM4pWM4pWMDQoNCiAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUg YW4gSW50ZWwgSEVYIGZpbGUgd2l0aCB0ZXN0IGRhdGENCiAgYW5kIHByaW50IGl0Og0KDQogIOKU jOKUgOKUgOKUgOKUgA0KICDilIIgSW50ZWxfaGV4LlJlY29yZC4NCiAg4pSCIFsNCiAg4pSCICAg RXh0ZW5kZWRfbGluZWFyX2FkZHJlc3MgMHgwRjsNCiAg4pSCICAgRGF0YSAoMHgwMDAwLCAiSGVs bG8gIik7DQogIOKUgiAgIERhdGEgKDB4MDAwNywgIldvcmxkISIpOw0KICDilIIgICBFbmRfb2Zf ZmlsZTsNCiAg4pSCIF0NCiAg4pSCIHw+IEludGVsX2hleC5FbmNvZGUuaW50b19zdHJpbmcgDQog IOKUgiB8PiBwcmludF9lbmRsaW5lDQogIOKUlOKUgOKUgOKUgOKUgA0KICDilIzilIDilIDilIDi lIANCiAg4pSCIDowMjAwMDAwNDAwMEZFQg0KICDilIIgOjA2MDAwMDAwNDg2NTZDNkM2RjIwRTYN CiAg4pSCIDowNjAwMDcwMDU3NkY3MjZDNjQyMUNBDQogIOKUgiA6MDAwMDAwMDFGRg0KICDilJTi lIDilIDilIDilIANCiAgQWxzbywgeW91IGNhbiByZWFkIEludGVsIEhFWCBvYmplY3RzIGZyb20g YW55IHNvdXJjZSwgb2YgY291cnNlLg0KICDilIzilIDilIDilIDilIANCiAg4pSCIEluX2NoYW5u ZWwud2l0aF9vcGVuX3RleHQgImRhdGEuaGV4IiBJbnRlbF9oZXguRGVjb2RlLmZyb21fY2hhbm5l bA0KICDilJTilIDilIDilIDilIANCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAtIDogSW50ZWxf aGV4Lk9iamVjdC50ID0NCiAg4pSCIFtJbnRlbF9oZXguUmVjb3JkLkV4dGVuZGVkX2xpbmVhcl9h ZGRyZXNzKDB4MDAwRik7DQogIOKUgiAgSW50ZWxfaGV4LlJlY29yZC5EYXRhKDB4MDAwMCwgIkhl bGxvICIpOw0KICDilIIgIEludGVsX2hleC5SZWNvcmQuRGF0YSgweDAwMDcsICJXb3JsZCEiKTsN CiAg4pSCICBJbnRlbF9oZXguUmVjb3JkLkVuZF9vZl9maWxlXQ0KICDilJTilIDilIDilIDilIAN Cg0KDQpOZXcgZmVhdHVyZXMNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0K DQogIFsqSW50by9mcm9tIGJsb2JzKl0NCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIEludGVs X2hleC5PYmplY3QuZnJvbV9zdHJpbmcgfmJsb2NrX3NpemU6NiAiSGVsbG8gV29ybGQhIEkgbG92 ZSBpdCEiDQogIOKUlOKUgOKUgOKUgOKUgA0KICDilIzilIDilIDilIDilIANCiAg4pSCIC0gOiBJ bnRlbF9oZXguT2JqZWN0LnQgPQ0KICDilIIgW0ludGVsX2hleC5SZWNvcmQuRGF0YSgweDAwMDAs ICJIZWxsbyAiKTsNCiAg4pSCICBJbnRlbF9oZXguUmVjb3JkLkRhdGEoMHgwMDA2LCAiV29ybGQh Iik7DQogIOKUgiAgSW50ZWxfaGV4LlJlY29yZC5EYXRhKDB4MDAwQywgIiBJIGxvdiIpOw0KICDi lIIgIEludGVsX2hleC5SZWNvcmQuRGF0YSgweDAwMTIsICJlIGl0ISIpOw0KICDilIIgIEludGVs X2hleC5SZWNvcmQuRW5kX29mX2ZpbGVdDQogIOKUlOKUgOKUgOKUgOKUgA0KDQoNClsqSW50by9m cm9tIGJsb2JzKl0NCjxodHRwczovL29jYW1sLm9yZy9wL2ludGVsX2hleC9sYXRlc3QvZG9jL2lu dGVsX2hleC9JbnRlbF9oZXgvT2JqZWN0L2luZGV4Lmh0bWwjZnJvbS9pbnRvLXRvLWxpbmVhci1i bG9iLW1lbW9yeT4NCg0KDQpJbnN0YWxsYXRpb24NCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjA0KDQogIFlvdSBjYW4gaW5zdGFsbCB0aGUgYGludGVsX2hleCcgbGlicmFyeSB1 c2luZyB0aGUgW09QQU1dIHBhY2thZ2UNCiAgbWFuYWdlciBvciBhbnkgb3RoZXIgbWV0aG9kIHlv dSBwcmVmZXIuDQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiAkIG9wYW0gaW5zdGFsbCBpbnRl bF9oZXguMC40DQogIOKUlOKUgOKUgOKUgOKUgA0KDQoNCltPUEFNXSA8aHR0cHM6Ly9vcGFtLm9j YW1sLm9yZy8+DQoNCg0KQmlzZWN0X3BweF9uZyAzIOKAkyBmb3JrIG9mIGJpc2VjdF9wcHgNCuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFy Y2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYmlzZWN0LXBweC1uZy0zLWZv cmstb2YtYmlzZWN0LXBweC8xODQ1OS8xPg0KDQoNCktha2FkdSBhbm5vdW5jZWQNCuKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEJpc2VjdF9wcHhf bmcgMy4wLjAgW2hpdF0gb3BhbS4gV2hpbGUgb3JpZ2luYWwgW2Jpc2VjdF9wcHhdIGlzIG5vdA0K ICB1cGdyYWRlZCBmb3IgT0NhbWwgNS41IEknbSBnb2luZyB0byB1c2UgbXkgZm9yayBmb3IgY2Fs Y3VsYXRpbmcNCiAgY292ZXJhZ2UuDQoNCiAgUGxlYXNlLCB0ZXN0IGl0IGFuZCBzZW5kIHlvdXIg UFJzIHRvDQogIDxodHRwczovL2dpdGh1Yi5jb20vS2FrYWR1L2Jpc2VjdF9wcHhfbmc+DQogIOKA oiBJdCBzaG91bGQgd29yayBmb3IgNC4xNCwgNS4zIC0gNS41DQogIOKAoiBSZWFzb25NTCBzdXBw b3J0IGNvdWxkIGJlIGJyb2tlbg0KDQoNCltoaXRdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwv b3BhbS1yZXBvc2l0b3J5L3B1bGwvMzA0NjM+DQoNCltiaXNlY3RfcHB4XQ0KPGh0dHBzOi8vZGlz Y3Vzcy5vY2FtbC5vcmcvdC9iaXNlY3QtcHB4LW9jYW1sLWNvZGUtY292ZXJhZ2Utd2l0aC1uaWNl LWh0bWwtcmVwb3J0cy83Mjg+DQoNCg0KT1NFQy0yMDI2LTE3OiBtaXJhZ2UtY3J5cHRvLWVjOiBU aW1pbmcgbGVhayBpbiBOSVNUIGVsbGlwdGljIGN1cnZlcyBzY2FsYXIgbXVsdGlwbGljYXRpb24N CuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQpIYW5uZXMgTWVobmVy dCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIEEgbmV3IHNlY3VyaXR5IGFkdmlzb3J5 IGlzIGF2YWlsYWJsZS4gQXMgdXN1YWwsIGl0IGNhbiBiZSBmb3VuZCBhdA0KICA8aHR0cHM6Ly9n aXRodWIuY29tL29jYW1sL3NlY3VyaXR5LWFkdmlzb3JpZXM+IGFuZA0KICA8aHR0cHM6Ly9vc3Yu ZGV2L2xpc3Q/cT0mZWNvc3lzdGVtPW9wYW0+DQoNCiAgQmVzdCwNCg0KICBIYW5uZXMNCg0KICDi lIzilIDilIDilIDilIANCiAg4pSCIGlkOiBPU0VDLTIwMjYtMTcNCiAg4pSCIG1vZGlmaWVkOiAi MjAyNi0wOC0xN1QwOTo0NTowMFoiDQogIOKUgiBwdWJsaXNoZWQ6ICIyMDI2LTA4LTE3VDA5OjQ1 OjAwWiINCiAg4pSCIHNldmVyaXR5OiAiQ1ZTUzozLjEvQVY6Ti9BQzpIL1BSOk4vVUk6Ti9TOlUv QzpIL0k6Ti9BOk4iDQogIOKUgiBzZXZlcml0eV9zY29yZTogIjUuOSAoTWVkaXVtKSINCiAg4pSC IGFmZmVjdGVkOiAibWlyYWdlLWNyeXB0by1lYyIgez49ICIwLjExLjMiICYgPCAiMi40LjAifQ0K ICDilIIgZXZlbnRzOiBbDQogIOKUgiAgICBbDQogIOKUgiAgICAgIGdpdCAiaHR0cHM6Ly9naXRo dWIuY29tL21pcmFnZS9taXJhZ2UtY3J5cHRvIiBbDQogIOKUgiAgICAgICAgW2ZpeGVkICIxYTYx YWVlZTdmNTkzZWMwNjc2MTJkZjE3MzllYzkwNWVhYjA0NTBmIl0NCiAg4pSCICAgICAgXQ0KICDi lIIgICAgXQ0KICDilIIgXQ0KICDilIIgY3JlZGl0czogWw0KICDilIIgICAgW3JlcG9ydGVyICJF cmljIEViaW5nZXIiXQ0KICDilIIgICAgW2Nvb3JkaW5hdG9yICJIYW5uZXMgTWVobmVydCJdDQog IOKUgiAgICBbcmVtZWRpYXRpb25fcmV2aWV3ZXIgIlZpcmdpbGUgUm9ibGVzIl0NCiAg4pSCICAg IFtyZW1lZGlhdGlvbl9kZXZlbG9wZXIgIkVyaWMgRWJpbmdlciJdDQogIOKUgiBdDQogIOKUgiBj d2U6IFsgQ1dFLTIwOCBdDQogIOKUgiBhZmZlY3RlZF9iaW5kaW5nczogWw0KICDilIIgICAgIk1p cmFnZV9jcnlwdG9fZWMuUDI1Ni5EaC5zaGFyZSINCiAg4pSCICAgICJNaXJhZ2VfY3J5cHRvX2Vj LlAyNTYuRHNhLmdlbmVyYXRlIg0KICDilIIgICAgIk1pcmFnZV9jcnlwdG9fZWMuUDI1Ni5Ec2Eu c2lnbiINCiAg4pSCICAgICJNaXJhZ2VfY3J5cHRvX2VjLlAyNTYuRHNhLnB1Yl9vZl9wcml2Ig0K ICDilIIgICAgIk1pcmFnZV9jcnlwdG9fZWMuUDM4NC5EaC5zaGFyZSINCiAg4pSCICAgICJNaXJh Z2VfY3J5cHRvX2VjLlAzODQuRHNhLmdlbmVyYXRlIg0KICDilIIgICAgIk1pcmFnZV9jcnlwdG9f ZWMuUDM4NC5Ec2Euc2lnbiINCiAg4pSCICAgICJNaXJhZ2VfY3J5cHRvX2VjLlAzODQuRHNhLnB1 Yl9vZl9wcml2Ig0KICDilIIgICAgIk1pcmFnZV9jcnlwdG9fZWMuUDUyMS5EaC5zaGFyZSINCiAg 4pSCICAgICJNaXJhZ2VfY3J5cHRvX2VjLlA1MjEuRHNhLmdlbmVyYXRlIg0KICDilIIgICAgIk1p cmFnZV9jcnlwdG9fZWMuUDUyMS5Ec2Euc2lnbiINCiAg4pSCICAgICJNaXJhZ2VfY3J5cHRvX2Vj LlA1MjEuRHNhLnB1Yl9vZl9wcml2Ig0KICDilIIgICBdDQogIOKUlOKUgOKUgOKUgOKUgA0KDQoN ClRpbWluZyBsZWFrIGluIE5JU1QgZWxsaXB0aWMgY3VydmVzIHNjYWxhciBtdWx0aXBsaWNhdGlv bg0K4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWMDQoNCiAgVGhlIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBpbmNsdWRlcyBwcmUtY29tcHV0ZWQg dGFibGVzIGZvciBzcGVlZHVwDQogIChpbnRyb2R1Y2VkIGluIG1pcmFnZS1jcnlwdG8tZWMgMC4x MS4zKS4gVGhlIGxvb2t1cCBhbGdvcml0aG0gZm9yDQogIHRoZXNlIHRhYmxlcyBwZXJmb3JtcyBz ZWNyZXQtZGVwZW5kZW50IHJlYWRzIGluc3RlYWQgb2Ygc2Nhbm5pbmcgdGhlDQogIGVudGlyZSB0 YWJsZS4NCg0KDQril4ogU29sdXRpb24NCg0KICBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBpbmRleCBg biAtIDEnLCB3aGVyZSBgbicgaXMgc2VjcmV0LWRlcGVuZGVudCwgdXNlDQogIGBpIC0gMScsIGFz IGRvbmUgaW4gdGhlIEdvIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4gSWYgYG4nIGlzIDAsDQog IHRoZXJlIGlzIGEgb3V0LW9mLWJvdW5kcyByZWFkIGJlZm9yZSB0aGUgcGF0Y2guDQoNCg0K4peK IFRpbWVsaW5lDQoNCiAg4oCiIDIwMjYtMDgtMTI6IHJlcG9ydCBieSBFcmljIEViaW5nZXIgdG8g c2VjdXJpdHlAb2NhbWwub3JnDQogIOKAoiAyMDI2LTA4LTE3OiByZWxlYXNlIG9mIG1pcmFnZS1j cnlwdG8tZWMgMi40LjAgYW5kIHRoaXMgYWR2aXNvcnkNCg0KDQpPbGQgQ1dODQrilZDilZDilZDi lZDilZDilZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3Nl bmQgbWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBh IGxvb2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZl c10uDQoNCiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFp bCwgeW91IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNj aG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5 dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1l Lm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBl dGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEu aW5yaWEuZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczov L2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --==-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of August 11 to 18, 2026.

Affect 0.0.0 =E2=80=93 A streamlined and natural concurrency m= odel for OCaml

Daniel B=C3=BCnzli announced

Hello,=20

It's my pleasure to announce the first release of affect:

Affect is a streamlined and natural concurrency model for OCaml.

It provides parallel asynchronous functions and first-class synchronous act= ions to orchestrate them. The resulting concurrency model has structured co= operative concurrency, structured cancellation and structured effect handli= ng.

Affect is distributed under the ISC license. It has no dependencies. It opt= ionally depends on the cmdliner library and the OCaml un= ix library.

The goal of affect is to provide a short and ergonomic [concur= rency model] and composable synchronization primitives to program parallel = and concurrent systems in OCaml. It is:

  • Streamlined, because it strives to minimize the exposed abstractions, t= erminology and conceptual overhead.
  • Natural, because it bases its central concurrent computational abstract= ion on the substrate of the OCaml language: functions.

If the now almost 40 years old [CML events] mean some thing to you, one way= of seing affect is just: structured and cancellable parallel asynchronous = function calls whose results can be synchronized with CML events (actions i= n affect).

If CML events don't mean anything to you but Go channels do, then the take = away is that those can be implemented with affect's first-class synchronous= actions. However actions give you more than that. They give you a general = composable synchronization mecanism which you can understand as:

An extensible select.

In affect you can for example select to wait between the = result of an asynchronous function, the canc= ellation of another one, a timeout, a signal delivery, a set-once cell becoming= set, a file descriptor becoming readable and a funny primitive action of your own.

The lock-free implemention of actions follows this 2009 paper with some ideas taken from the <= a href=3D"https://wingolog.org/archives/2017/06/29/a-new-concurrent-ml">Gui= le implementation of CML. Like the latter, one thing that affect does i= s to change the CML terminology. We find the event-based terminology to be = very confusing for thinking about these mecanisms. To fully Milneriz= e OCaml, we drew inspiration from CCS and replaced event by action<= /i>, and channel by port. See the design notes for more information about = these naming changes.

Beyond trying to expose a clear and accessible concurrency model, what dist= inguishes affect from the first generation of OCaml 5 concurrency libraries= is that:

  1. It fully embraces the new parallel nature of the OCaml runtime system a= nd makes no distinction between concurrency and parallelism.
  2. It exposes its high-level abstractions, namely first-class synchronous = actions and asynchronous functions, for others to be handled. And these mec= hanisms being parallel-safe and lock-free, not much work is needed to integ= rate them, little constraints are imposed on the context where they can be = used.

This notably means that:

  • If you are unhappy about just using an invocation of the buil= t-in scheduler in the main of your program or unhappy about using it at= all, you can reasonably easily reclaim control over your application's con= current and parallel architecture while still using eco-system libraries th= at would make use these abstractions.=20

    For example this test has code an= d examples showing how to handle actions or running a root asynchronous fun= ction in a thread by yourself. Those can even interact with a parallel invo= cation of the built-in scheduler if that's your thing. This other test shows that two instances= of the scheduler can run along side, either in their isolate realm or even= communicating via ports.

  • Since at some point it would be good to agree on more than bytes, it mu= st be possible for existing schedulers to handle affect's high-level abstra= ctions or a subset of them. For example to handle actions, only a parallel= -safe closure to schedule the work to unblock in your scheduler has to be = provided at action invocation handling time.

TL;DR. You get a nice and ergonomic concurrency model and flexiblity.

Regarding the release, while I think that affect is now finally conceptuall= y well rooted, it's early time and it has not been used much. The aim of th= is first release was to have a fully working and usable implementation of a= design that has been rotting for two years in a repo and in my thoughts. T= his means that in the current state:

  • You likely don't want to use it in production[^1].
  • Changes should still be expected. Especially if you fiddle with the pri= vate APIs. Early adopters and questions on this forum are welcome. Get in t= ouch on the issue tracker if you are trying things and running into trouble= .
  • The library will require the latest version of OCaml for a couple of re= leases.
  • One thing that didn't make it to the release is to replace the use of <= code>select(2) in the cooperative [~Unix~ compatibility module]. The= initial plan was to use epoll/kqueue there, it's still the plan.
  • The current implementation went for clarity and correctness, if not na=C3= =AFvety. If you don't see shining performance, there are quite a few dimens= ions where it can be improved. Some structures can be specialized, more imp= erative data structures can be used (not always a win though), some atomics= can perhaps be retracted, simplistic or dumb scheduling strategies can be = made more complex, etc. And of course you can always BYOS (the mono-threade= d implementation of the full model mentioned earlier is ~100 loc).

    The code base should be reasonably approachable, for now it's 690 loc if yo= u consider only the core modules for action and asynchronous functions; the= parallel work stealing scheduler adds 380 more. But the devil is in the in= terleaving :=E2=80=93)

Happarapyllecomputling!

This first release was made possible thanks to a grant from the OCaml Software Foundation. I also thank my donors for their support. E= veryone's support being essential for these bits to get worked on and be di= stributed.

Best,

Daniel

[^1]: I'll be comfortable telling you to do so when I have an affect-based = connector for my IO agnostic [HTTP library] deployed on a live system :-)

Slipshow!

Continuing this thread, Paul-Elliot announced

It is through the epic voice of an old bard that I announce the next releas= e of Slipshow:

Slipshow 0.12.0: The Lord of the Slips: The Two Edito= rs

The rivalry between the bearded Emacs users and the pointy-eared VS Code us= ers has been pointlessly raging for ages now. Both factions wanted to prove= their superiority as Slipshow editors, and claim the highest typo kill-cou= nt.

Pointy-eared VS Code users had an official Slipshow extension, with a live = preview that did not require the Slipshow binary. However, that embedded li= ve preview had limitations, eg with multi-file presentations, and more impo= rtantly had no LSP support.

Bearded Emacs users could use the built-in LSP client, eglot. = But without an official mode, it was impossible to extend the feature set b= eyond strict LSP.

So, this release of Slipshow comes with two companions:

  • Slipshow's VS Code extension, available in VS Code's Marketplaces (a= nd which now requires a slipshow binary)
  • Slipshow's Emacs major mode, installable with (use-package slipshow-mode :vc= (:url "https://github.com/panglesd/slipshow-emacs-mode" :rev :newest))

They allow much more cooperation between the editor and the preview server.= For instance, there is now a simple setting to choose between refreshing t= he preview on each keystroke, or on save. Two new commands are available to= control the presentation directly from the editor.

One LSP to rule them all, one server to sync them,

One keystroke to step through slips, and in the editor bind them.

Another improvement worth mentioning is that the workflow for saving drawin= gs has been greatly improved: You can now save your drawings simply by clic= king the Save button, and they are now anchored where they are= included (so, if your textual content changes, drawings are moved accordin= gly).

You shall not desynchronize text and drawing content!

Here is a proof that both editors are great, where a drawing is recorded, s= aved, and content is added beforehand:

https://github.com/user-attachments/assets/c= 4f0131d-7eda-4bdd-874e-50c1872580eb

https://github.com/user-attachments/assets/d= 4164c3f-f63a-40fb-b03b-add4f0f32435

And as always, thanks so much to NLNet for the support. The vast amount of = time it took me to learn Emacs Lisp would not be reasonable without their g= enerous support!

(If you're a hairy-footed user of a third, just as great, editor and you'd = like to join the Fellowslip, please get in contact, I'd be glad to have som= e help!)

Here is the full changelog:

Added

  • auto-continue attribute to automatically continue to the n= ext action (#240)
  • a ~duration:FLOAT argument to the step action= . (#241)
  • LSP:
    • Two commands to make the presentation preview go forward/backward from = the editor (#242)
    • Consider .slp as input files. (#244)
    • A configuration for refreshing the preview on each keystroke, or on save. (#248)
    • Watch dependencies for change and refresh preview (#252)

Changed

  • Drawings are now saved through the preview server (#249, #254)
  • Drawings are anchored to the point where the drawing has been added. (#= 262)
  • Don't spam with notifications to tell about the URL of the slipshow ser= ver (#265)

Fixed

  • Fix action detection in LSP in multifile settings (#243)
  • Fix external themes in serve mode (#245)
  • Fix LSP preview with multiple files when some of them are not opened (#= 250)

Docs

  • Greatly improve the quality of the English in documentation (#255, @Syn= chro)

intel_hex.0.4

Mikhail announced

https:= //camo.githubusercontent.com/c5d56dc1ed218120c9829bb9551857f4308de541f20f6d= 21a12959bf0abe1dde/68747470733a2f2f692e6962622e636f2f6b7668375034702f6c6173= 74696865786c6f68676f2d3030312e706e67 is new pretty logo…

Yo!=20

I am happy to announce the new release of Intel_hex library. It is a Intel HEX manipulation librar= y for parsing and generating Intel HEX (also known as IHEX) objects. This f= ormat is commonly used to represent compiled program code and data that is = loaded into a microcontroller, flash memory, or ROM in embedded systems pro= gramming.

This new version of the library has been completely rewritten, rethought an= d tested.

In use

Here is an example of how to create an Intel HEX file with test data and pr= int it:

Intel_hex.Record.
[
  Extended_linear_address 0x0F;
  Data (0x0000, "Hello ");
  Data (0x0007, "World!");
  End_of_file;
]
|> Intel_hex.Encode.into_string=20
|> print_endline
:02000004000FEB
:0600000048656C6C6F20E6
:06000700576F726C6421CA
:00000001FF

Also, you can read Intel HEX objects from any source, of course.

In_channel.with_open_text "data.hex" Intel=
_hex.Decode.from_channel
- : Intel_hex.Object.t =3D
[Intel_hex.Record.Extended_linear_address(0x000F);
 Intel_hex.Record.Data(0x0000, "Hello ");
 Intel_hex.Record.Data(0x0007, "World!");
 Intel_hex.Record.End_of_file]

New features

Into/from blobs

Intel_hex.Object.from_string ~block_size:6 "Hello World! I love it!"
- : Intel_hex.Object.t =3D
[Intel_hex.Record.Data(0x0000, "Hello ");
 Intel_hex.Record.Data(0x0006, "World!");
 Intel_hex.Record.Data(0x000C, " I lov");
 Intel_hex.Record.Data(0x0012, "e it!");
 Intel_hex.Record.End_of_file]

Installation

You can install the intel_hex library using the OPAM package manager or any other method you pref= er.

$ opam install intel_hex.0.4

Bisect_ppx_ng 3 – fork of bisect_ppx

Kakadu announced

Bisect_ppx_ng 3.0.0 hit opam. While original bisect_ppx= is not upgraded for OCaml 5.5 I'm going to use my fork for calculating co= verage.

Please, test it and send your PRs to https://github.com/Kakadu/bisect_ppx_ng

  • It should work for 4.14, 5.3 - 5.5
  • ReasonML support could be broken

OSEC-2026-17: mirage-crypto-ec: Timing leak in NIST elliptic c= urves scalar multiplication

Hannes Mehnert announced

A new security advisory is available. As usual, it can be found at=20 https://github.com= /ocaml/security-advisories and=20 https://osv.dev/= list?q=3D&ecosystem=3Dopam

Best,

Hannes

id: OSEC-2026-17
modified: "2026-08-17T09:45:00Z"
published: "2026-08-17T09:45:00Z"
severity: "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N"
severity_score: "5.9 (Medium)"
affected: "mirage-crypto-ec" {>=3D "0.11.3" & < "2.4.0"}
events: [
   [
     git "https://github.com/mirage/mirage-crypto" [
       [fixed "1a61aeee7f593ec067612df1739ec905eab0450f"]
     ]
   ]
]
credits: [
   [reporter "Eric Ebinger"]
   [coordinator "Hannes Mehnert"]
   [remediation_reviewer "Virgile Robles"]
   [remediation_developer "Eric Ebinger"]
]
cwe: [ CWE-208 ]
affected_bindings: [
   "Mirage_crypto_ec.P256.Dh.share"
   "Mirage_crypto_ec.P256.Dsa.generate"
   "Mirage_crypto_ec.P256.Dsa.sign"
   "Mirage_crypto_ec.P256.Dsa.pub_of_priv"
   "Mirage_crypto_ec.P384.Dh.share"
   "Mirage_crypto_ec.P384.Dsa.generate"
   "Mirage_crypto_ec.P384.Dsa.sign"
   "Mirage_crypto_ec.P384.Dsa.pub_of_priv"
   "Mirage_crypto_ec.P521.Dh.share"
   "Mirage_crypto_ec.P521.Dsa.generate"
   "Mirage_crypto_ec.P521.Dsa.sign"
   "Mirage_crypto_ec.P521.Dsa.pub_of_priv"
  ]

Timing leak in NIST elliptic curves scalar multiplica= tion

The scalar multiplication includes pre-computed tables for speedup=20 (introduced in mirage-crypto-ec 0.11.3). The lookup algorithm for these=20 tables performs secret-dependent reads instead of scanning the entire table.

  • Solution

    Instead of using the index n - 1, where n is secr= et-dependent, use=20 i - 1, as done in the Go reference implementation. If n<= /code> is 0, there=20 is a out-of-bounds read before the patch.

  • Timeline
    • 2026-08-12: report by Eric Ebinger to security@ocaml.org
    • 2026-08-17: release of mirage-crypto-ec 2.4.0 and this advisory

Old CWN

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a loo= k at the archive or the <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

If you also wish to receive it every week by mail, you may subscribe to the= caml-list.

--==-=-=-- --=-=-=-- --===-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQFvBAEBCABZFiEE6lXof/BsSVW56ZmGBA0KO07S5ccFAmqEAiIbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5cfKAQgAmzSxPDVDF2WZbVCaxmBrSqpkCXJKmml6x3yBqLfs qQ6YV+8YXfyHxM5TrZSlkmswcNgNcuSpyeYcy18Cc92f8OAZBlJRg6AEpxldtL02 7pB/s3wQM2Zw2MWx9Ab0hfclj2fEoRuklSqsyXMSuApDj4+0i2v5VpkXjuyT1Dh/ 1A1qkcKupM/abmlZxrq7J1HwSwXHVRXh+YKftbfIUH8lFjhPTsuBrQz8Ax1rNjEY 6sMkVh/Y82gkE9bomLGEyrXGOJycMR5NZ6bmzsxs3ZK/F52WvAqPJtsJAGI1MEzd sy3qI7YwhIgN8VzRRPZz2EG4Hp+KiIm4avCUayc+iAV9Iw== =q51v -----END PGP SIGNATURE----- --===-=-=--