From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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= Authentication-Results: plum; dmarc=fail (p=none dis=none) header.from=polytechnique.org 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=QvIBmFIn; dkim-atps=neutral Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id 769B4B80123 for ; Tue, 9 Jul 2024 10:19:21 +0100 (BST) 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=AaF/JmlK9GVOYRZTyIYqNsX3Z/fIiAXTJdDlgvbT16k=; b=QvIBmFInfd9L1i10bA0ccf4ifI29Tw7jCpkDGgHXJ2HBdauPJq1k1tOj utehGNJfTOJ7TVyh2hU9rPGl1kypCOrSf7o+pzFY1+DNoiAqi91gO+/cJ +jZsDuITAtkrZn0qNKs7thptIqQLaCAj4XMgY6FvHpfTqWKDW7ykUMvYG w=; Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; 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 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 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@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.09,194,1716242400"; d="scan'208,217";a="174610691" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 09 Jul 2024 11:19:18 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id D6C11E0D22; Tue, 9 Jul 2024 11:19:16 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 55D86E004E for ; Tue, 9 Jul 2024 11:19:11 +0200 (CEST) X-IronPort-AV: E=Sophos;i="6.09,194,1716242400"; d="scan'208,217";a="174610629" Received: from mac-03220211.irisa.fr ([131.254.21.249]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jul 2024 11:19:11 +0200 From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 09 Jul 2024 11:19:09 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19155 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: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl ZWsgb2YgSnVseSAwMiB0byAwOSwNCjIwMjQuDQoNClRhYmxlIG9mIENvbnRlbnRzDQrilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KVGhlIFN0cnVj dHVyZSBvZiBHb2RvdGNhbWwgYXMgb2YgVG9kYXksIGJ5IE1hdHQgV2Fsa2VyIFtGaXp6aXhuZXJk XQ0Kb3BhbSAyLjIuMCBpcyBvdXQhDQpPQ2FtbC5vcmcgTmV3c2xldHRlcjogSnVuZSAyMDI0DQpv Y2FtbC1saWJicGY6IExpYmJwZiBDLWJpbmRpbmdzIGZvciBPQ2FtbA0KSG93IEkgYnVpbHQgdGhl IEFjdXRpcyB0ZW1wbGF0ZSBsYW5ndWFnZSBpbiBPQ2FtbA0KTWlyYWdlT1MgcG9kY2FzdA0KT2xk IENXTg0KDQoNClRoZSBTdHJ1Y3R1cmUgb2YgR29kb3RjYW1sIGFzIG9mIFRvZGF5LCBieSBNYXR0 IFdhbGtlciBbRml6eml4bmVyZF0NCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQog IEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYmxvZy10aGUtc3RydWN0 dXJlLW9mLWdvZG90Y2FtbC1hcy1vZi10b2RheS1ieS1tYXR0LXdhbGtlci1maXp6aXhuZXJkLzE0 ODkyLzE+DQoNCg0KTWF0dCBXYWxrZXIgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBGaXhlZCBzb21l IGJ1Z3MgaW4gdGhlIEdvZG90IE9DYW1sIGJpbmRpbmdzIEknbSB3b3JraW5nIG9uLiAgSGVyZSBp cyBhDQogIGJsb2cgcG9zdCB0aGF0IGNvdWxkIGJlIG9mIGludGVyZXN0IGlmIHlvdSdyZSBsb29r aW5nIHRvIGRpdmUgaW50bw0KICB0aGVtLCBvciB1c2luZyBDdHlwZXMgaW4gYW5vdGhlciBwcm9q ZWN0LCBvciBhcmUgd3JpdGluZyBHb2RvdA0KICBiaW5kaW5ncyBmb3IgYW5vdGhlciBsYW5ndWFn ZSwgb3IganVzdCBoYXZlIHNvbWUgdGltZSB0bw0KICBraWxsLiA6c21pbGV5Og0KDQogIDxodHRw czovL2ZpenppeG5lcmQuY29tL2Jsb2cvMjAyNC0wNy0wMi10aGUtc3RydWN0dXJlLW9mLWdvZG90 Y2FtbC1hcy1vZi10b2RheS8+DQoNCg0Kb3BhbSAyLjIuMCBpcyBvdXQhDQrilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8 aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1vcGFtLTItMi0wLWlzLW91dC8xNDg5My8x Pg0KDQoNCkthdGUgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIANCg0KICBXZeKAmXJlIHZlcnkgaGFwcHkgdG8gZmluYWxseSBhbm5vdW5jZSB0aGUg cmVsZWFzZSBvZiBvcGFtIDIuMi4wLg0KDQoNCldoYXTigJlzIG5ldz8NCuKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIOKAoiAqV2luZG93cyBzdXBwb3J0KiA6d2luZG93OiA6 dGFkYTogKHlvdSBjYW4gaGVhciBhbGwgYWJvdXQgaXQgaW4gdGhlDQogICAgIFtibG9nIHBvc3Rd KQ0KICDigKIgYG9wYW0gdHJlZScgLyBgb3BhbSB3aHknOiBuZXcgY29tbWFuZHMgc2hvd2luZyBh IHRyZWUgdmlldyBvZiB0aGUNCiAgICBnaXZlbiBwYWNrYWdlcyBhbmQgdGhlaXIgZGVwZW5kZW5j aWVzIGFuZCByZXZlcnNlLWRlcGVuZGVuY2llcywNCiAgICByZXNwZWN0aXZlbHkuDQogIOKAoiBg d2l0aC1kZXYtc2V0dXAnOiBhIG5ldyB2YXJpYWJsZSBhbmQgYXJndW1lbnQgdG8gaW5zdGFsbCB0 aGUNCiAgICByZWNvbW1lbmQgZGV2ZWxvcGVtZW50IHNldHVwIGZvciBhIGxvY2FsIHByb2plY3Qu DQogIOKAoiBgb3BhbSBwaW4gLS1yZWN1cnNpdmUnIGFuZCBgLS1zdWJwYXRoJyB0byBoYXZlIG9w YW0gbG9vayBhdCBvcGFtDQogICAgZmlsZXMgZWxzZXdoZXJlIHRoYW4gdGhlIHJvb3QgZGlyZWN0 b3J5IG9mIGEgcHJvamVjdC4NCiAg4oCiIGBvcGFtIHN3aXRjaCAtJyB0byBnbyBiYWNrIHRvIHRo ZSBwcmV2aW91cyBnbG9iYWwgc3dpdGNoIChpbnNwaXJlZA0KICAgIGJ5IGBnaXQgc3dpdGNoIC0n KQ0KICDigKIgYG9wYW0gcGluIC0tY3VycmVudCcgZml4ZXMgYSBwYWNrYWdlIHRvIGl0cyBjdXJy ZW50IHN0YXRlIChkaXNhYmxpbmcNCiAgICBwZW5kaW5nIHJlaW5zdGFsbGF0aW9ucyBvciByZW1v dmFscyBmcm9tIHRoZSByZXBvc2l0b3J5KQ0KICDigKIgYG9wYW0gcGluIHJlbW92ZSAtLWFsbCcg cmVtb3ZlcyBhbGwgdGhlIHBpbm5lZCBwYWNrYWdlcyBmcm9tIGENCiAgICBzd2l0Y2gNCiAg4oCi IGBvcGFtIGV4ZWMgLS1uby1zd2l0Y2gnIHJlbW92ZXMgdGhlIG9wYW0gZW52aXJvbm1lbnQgd2hl biBydW5uaW5nIGENCiAgICBjb21tYW5kLiBJdCBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBs YXVuY2ggYSBjb21tYW5kIHdpdGhvdXQgb3BhbQ0KICAgIGVudmlyb25tZW50IGNoYW5nZXMuDQog IOKAoiBgb3BhbSBjbGVhbiAtLXVudHJhY2tlZCcgcmVtb3ZlcyB1bnRyYWNrZWQgZmlsZXMgaW50 ZXJhY3RpdmVseQ0KICAgIHJlbWFpbmluZyBmcm9tIHByZXZpb3VzIHBhY2thZ2VzIHJlbW92YWwu DQogIOKAoiBgb3BhbSBhZG1pbiBhZGQtY29uc3RyYWludCA8Y3N0PiAtLXBhY2thZ2VzIHBrZzEs cGtnMixwa2czJyBhcHBsaWVzDQogICAgdGhlIGdpdmVuIGNvbnN0cmFpbnQgdG8gYSBnaXZlbiBz ZXQgb2YgcGFja2FnZXMNCiAg4oCiIGBvcGFtIGxpc3QgLS1iYXNlJyBoYXMgYmVlbiByZW5hbWVk IGludG8gYC0taW52YXJpYW50JywgcmVmbGVjdGluZw0KICAgIHRoZSBmYWN0IHRoYXQgc2luY2Ug b3BhbSAyLjEgdGhlICJiYXNlIiBwYWNrYWdlcyBvZiBhIHN3aXRjaCBhcmUNCiAgICBpbnN0ZWFk IGV4cHJlc3NlZCB1c2luZyBhIHN3aXRjaCBpbnZhcmlhbnQNCiAg4oCiIGBvcGFtIGluc3RhbGwg LS1mb3JtdWxhIDxmb3JtdWxhPicgaW5zdGFsbHMgYSBmb3JtdWxhIGluc3RlYWQgb2YgYQ0KICAg IGxpc3Qgb2YgcGFja2FnZXMuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3Ugd291bGQgbGlrZSB0 byBpbnN0YWxsDQogICAgb25lIHBhY2thZ2Ugb3IgYW5vdGhlciBvbmUuIEZvciBleGFtcGxlIGBv cGFtIGluc3RhbGwgLS1mb3JtdWxhDQogICAgJyJleHRsaWIiIHwgImV4dGxpYi1jb21wYXQiJycg d2lsbCBpbnN0YWxsIGVpdGhlciBgZXh0bGliJyBvcg0KICAgIGBleHRsaWItY29tcGF0JyBkZXBl bmRpbmcgb24gd2hhdCdzIGJlc3QgZm9yIHRoZSBjdXJyZW50IHN3aXRjaC4NCiAg4oCiIGFuZCBt YW55IG90aGVyIGZlYXR1cmVzLCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgYW5kIGZpeGVzDQoN CiAgOm9wZW5fYm9vazogWW91IGNhbiByZWFkIG91ciBbYmxvZyBwb3N0XSBmb3IgbW9yZSBpbmZv cm1hdGlvbiBhYm91dA0KICB0aGVzZSBjaGFuZ2VzIGFuZCBhIGxvdCBtb3JlLg0KDQoNCltibG9n IHBvc3RdDQo8aHR0cHM6Ly9vcGFtLm9jYW1sLm9yZy9ibG9nL29wYW0tMi0yLTAvI01ham9yLWNo YW5nZS1XaW5kb3dzLXN1cHBvcnQ+DQoNCltibG9nIHBvc3RdIDxodHRwczovL29wYW0ub2NhbWwu b3JnL2Jsb2cvb3BhbS0yLTItMC8+DQoNCg0KSG93IHRvIHVwZ3JhZGUNCuKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogIEluIGNhc2UgeW91IHBsYW4gYSBwb3Nz aWJsZSByb2xsYmFjaywgeW91IG1heSB3YW50IHRvIGZpcnN0IGJhY2t1cA0KICB5b3VyDQoNCiAg YH4vLm9wYW0nIG9yIGAkZW52OkxPQ0FMQVBQREFUQVxvcGFtJyBkaXJlY3RvcnkuDQoNCiAgVGhl IHVwZ3JhZGUgaW5zdHJ1Y3Rpb25zIGFyZSB1bmNoYW5nZWQ6DQoNCiAgRm9yIFVuaXggc3lzdGVt cw0KDQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgYmFzaCAtYyAic2ggPChjdXJsIC1mc1NMIGh0 dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vY2FtbC9vcGFtL21hc3Rlci9zaGVsbC9p bnN0YWxsLnNoKSAtLXZlcnNpb24gMi4yLjAiDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIG9yIGZy b20gUG93ZXJTaGVsbCBmb3IgV2luZG93cyBzeXN0ZW1zDQoNCiAg4pSM4pSA4pSA4pSA4pSADQog IOKUgiBJbnZva2UtRXhwcmVzc2lvbiAiJiB7ICQoSW52b2tlLVJlc3RNZXRob2QgaHR0cHM6Ly9y YXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29jYW1sL29wYW0vbWFzdGVyL3NoZWxsL2luc3RhbGwu cHMxKSB9Ig0KICDilJTilIDilIDilIDilIANCg0KICBvciBkb3dubG9hZCBtYW51YWxseSBmcm9t IFt0aGUgR2l0aHViICJSZWxlYXNlcyIgcGFnZV0gdG8geW91ciBQQVRILg0KDQogIFlvdSBzaG91 bGQgdGhlbiBydW46DQoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKUgiBvcGFtIGluaXQgLS1yZWlu aXQgLW5pDQogIOKUlOKUgOKUgOKUgOKUgA0KDQoNClt0aGUgR2l0aHViICJSZWxlYXNlcyIgcGFn ZV0NCjxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb3BhbS9yZWxlYXNlcy90YWcvMi4yLjA+DQoN Cg0KT0NhbWwub3JnIE5ld3NsZXR0ZXI6IEp1bmUgMjAyNA0K4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZToNCiAgPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5v cmcvdC9vY2FtbC1vcmctbmV3c2xldHRlci1qdW5lLTIwMjQvMTQ4OTgvMT4NCg0KDQpTYWJpbmUg U2NobWFsdHogYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBXZWxjb21lIHRvIHRo ZSBKdW5lIDIwMjQgZWRpdGlvbiBvZiB0aGUgT0NhbWwub3JnIG5ld3NsZXR0ZXIhIFRoaXMNCiAg dXBkYXRlIGhhcyBiZWVuIGNvbXBpbGVkIGJ5IHRoZSBPQ2FtbC5vcmcgdGVhbS4gWW91IGNhbiBm aW5kIFtwcmV2aW91cw0KICB1cGRhdGVzXSBvbiBEaXNjdXNzLg0KDQogIE91ciBnb2FsIGlzIHRv IG1ha2UgT0NhbWwub3JnIHRoZSBiZXN0IHJlc291cmNlIGZvciBhbnlvbmUgd2hvIHdhbnRzDQog IHRvIGdldCBzdGFydGVkIGFuZCBiZSBwcm9kdWN0aXZlIGluIE9DYW1sLiBUaGUgT0NhbWwub3Jn IG5ld3NsZXR0ZXINCiAgcHJvdmlkZXMgYW4gdXBkYXRlIG9uIG91ciBwcm9ncmVzcyB0b3dhcmRz IHRoYXQgZ29hbCBhbmQgYW4gb3ZlcnZpZXcNCiAgb2YgdGhlIGNoYW5nZXMgd2UgYXJlIHdvcmtp bmcgb24uDQoNCiAgV2UgY291bGRuJ3QgZG8gaXQgd2l0aG91dCBhbGwgdGhlIGFtYXppbmcgcGVv cGxlIHdobyBoZWxwIHVzIHJldmlldywNCiAgcmV2aXNlLCBhbmQgY3JlYXRlIGJldHRlciBPQ2Ft bCBkb2N1bWVudGF0aW9uIGFuZCB3b3JrIG9uIGlzc3Vlcy4gWW91cg0KICBwYXJ0aWNpcGF0aW9u IGVuYWJsZXMgdXMgdG8gc28gbXVjaCBtb3JlIHRoYW4gd2UgY291bGQganVzdCBieQ0KICBvdXJz ZWx2ZXMuIFRoYW5rIHlvdSENCg0KICBUaGlzIG5ld3NsZXR0ZXIgY292ZXJzOg0KICDigKIgKlJl Y2lwZXMgZm9yIHRoZSBPQ2FtbCBDb29rYm9vazoqIEhlbHAgdXMgbWFrZSB0aGUgT0NhbWwgQ29v a2Jvb2sNCiAgICAgcmVhbGx5IHVzZWZ1bCBieSBjb250cmlidXRpbmcgYW5kIHJldmlld2luZyBy ZWNpcGVzIGZvciBjb21tb24NCiAgICAgdGFza3MhDQogIOKAoiAqQ29tbXVuaXR5ICYgTWFya2V0 aW5nIFBhZ2VzIFJld29yazoqIEltcGxlbWVudGF0aW9uIHdvcmsgaW4NCiAgICAgcHJvZ3Jlc3Mu DQogIOKAoiAqR2VuZXJhbCBJbXByb3ZlbWVudHM6KiBBcyB1c3VhbCwgd2UgYWxzbyB3b3JrZWQg b24gZ2VuZXJhbA0KICAgICBtYWludGVuYW5jZSBhbmQgaW1wcm92ZW1lbnRzLCBzbyB3ZSdyZSBo aWdobGlnaHRpbmcgc29tZSBvZiB0aGUNCiAgICAgd29yayB0aGF0IGhhcHBlbmVkIGJlbG93Lg0K DQoNCltwcmV2aW91cyB1cGRhdGVzXSA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90YWcvb2Nh bWxvcmctbmV3c2xldHRlcj4NCg0KT3BlbiBJc3N1ZXMgZm9yIENvbnRyaWJ1dG9ycw0K4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM4pWM 4pWM4pWM4pWM4pWM4pWM4pWM4pWMDQoNCiAgWW91IGNhbiBmaW5kIFtvcGVuIGlzc3VlcyBmb3Ig Y29udHJpYnV0b3JzIGhlcmVdIQ0KDQoNCltvcGVuIGlzc3VlcyBmb3IgY29udHJpYnV0b3JzIGhl cmVdDQo8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9pc3N1ZXM/cT1pcyUzQWlz c3VlK2lzJTNBb3BlbitsYWJlbCUzQSUyMmhlbHArd2FudGVkJTIyK25vJTNBYXNzaWduZWU+DQoN Cg0KUmVjaXBlcyBmb3IgdGhlIE9DYW1sIENvb2tib29rDQrilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi lYzilYzilYzilYwNCg0KICBUaGUgT0NhbWwgQ29va2Jvb2sgaXMgYSBwbGFjZSB3aGVyZSBPQ2Ft bCBkZXZlbG9wZXJzIHNoYXJlIGhvdyB0bw0KICBzb2x2ZSBjb21tb24gdGFza3MgdXNpbmcgcGFj a2FnZXMgZnJvbSB0aGUgZWNvc3lzdGVtLg0KDQogIEEgcmVjaXBlIGlzIGEgY29kZSBzYW1wbGUg YW5kIGV4cGxhbmF0aW9ucyBvbiBob3cgdG8gcGVyZm9ybSBhIHRhc2sNCiAgdXNpbmcgYSBjb21i aW5hdGlvbiBvZiBvcGVuLXNvdXJjZSBsaWJyYXJpZXMuDQoNCiAgVGhlIENvb2tib29rIGlzIGxp dmUgYXQgW29jYW1sLm9yZy9jb29rYm9va10uDQoNCiAgSGVyZSdzIGhvdyB5b3UgY2FuIGhlbHA6 DQoNCiAgMS4gUmV2aWV3LCB0aGVuIFtvcGVuIHB1bGwgcmVxdWVzdHMgZm9yIGNvb2tib29rIHJl Y2lwZXNdIQ0KICAyLiBDb250cmlidXRlIG5ldyByZWNpcGVzIGFuZCB0YXNrcyBmb3IgdGhlIGNv b2tib29rIQ0KDQogICpSZWxldmFudCBQUnMgYW5kIEFjdGl2aXRpZXM6Kg0KICDigKIgKG9wZW4p IFBSOiBDb29rYm9vayBFeHRyYWN0IExpbmtzIEZyb20gSFRNTCBbb2NhbWwvb2NhbWwub3JnIzI1 NTJdDQogICAgYnkgW0BnZ3NtaXRoODQyXQ0KICDigKIgKG9wZW4pIFBSOiBDb29rYm9vayBNZWFz dXJlcyBvZiBDZW50cmFsIFRlbmRlbmN5DQogICAgW29jYW1sL29jYW1sLm9yZyMyNTQwXSBieSBb QGdnc21pdGg4NDJdDQogIOKAoiAob3BlbikgUFI6IENvb2tib29rIFNlbmQgYSBQT1NUL1BBVENI IFJlcXVlc3Qgdy8gQXV0aGVudGljYXRpb24NCiAgICBbb2NhbWwvb2NhbWwub3JnIzI1MzRdDQog IOKAoiBQUjogQ29va2Jvb2sgTm9ybWFsaXNlIFZlY3RvciBbb2NhbWwvb2NhbWwub3JnIzI1MTNd IGJ5DQogICAgW0BnZ3NtaXRoODQyXQ0KICDigKIgUFI6IChkb2NzKSBDb29rYm9vayAiVmFsaWRh dGUgYW4gRW1haWwgQWRkcmVzcyIgV2l0aCBgcmUnDQogICAgW29jYW1sL29jYW1sLm9yZyMyNTE4 XSBieSBbQGdnc21pdGg4NDJdDQoNCg0KW29jYW1sLm9yZy9jb29rYm9va10gPGh0dHBzOi8vb2Nh bWwub3JnL2Nvb2tib29rPg0KDQpbb3BlbiBwdWxsIHJlcXVlc3RzIGZvciBjb29rYm9vayByZWNp cGVzXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbHM/cT1pcyUzQXBy K2lzJTNBb3BlbitsYWJlbCUzQUNvb2tib29rPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NTJdIDxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU1Mj4NCg0KW0BnZ3NtaXRo ODQyXSA8aHR0cHM6Ly9naXRodWIuY29tL2dnc21pdGg4NDI+DQoNCltvY2FtbC9vY2FtbC5vcmcj MjU0MF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTQwPg0KDQpb b2NhbWwvb2NhbWwub3JnIzI1MzRdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3Jn L3B1bGwvMjUzND4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTEzXSA8aHR0cHM6Ly9naXRodWIuY29t L29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MTM+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjUxOF0gPGh0 dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTE4Pg0KDQoNCkNvbW11bml0 eSAmIE1hcmtldGluZyBQYWdlcyBSZXdvcmsNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjA0KDQogIFdlIGhhdmUgW1VJIGRlc2lnbnMgZm9yIHRoZSByZXdvcmtl ZCBhbmQgbmV3IHBhZ2VzIG9mIHRoZSBjb21tdW5pdHkNCiAgc2VjdGlvbl0sIGFuZCBpbXBsZW1l bnRhdGlvbiBpcyBpbiBwcm9ncmVzcy4NCg0KICAqUmVsZXZhbnQgUFJzIGFuZCBBY3Rpdml0aWVz OioNCg0KICDigKIgUFI6IEV2ZW50cyBmZWVkIFtvY2FtbC9vY2FtbC5vcmcjMjQ5NV0gYnkgW0Bp c2hhcjE5XQ0KICDigKIgKG9wZW4pIFBSOiBPQ2FtbCBJbiBOdW1iZXJzOiBBIGRhc2hib2FyZCB3 aXRoIGtleSBtZXRyaWNzIGFuZA0KICAgIHN0YXRpc3RpY3MgYWJvdXQgdGhlIE9DYW1sIGNvbW11 bml0eSBbb2NhbWwvb2NhbWwub3JnIzI1MTRdIGJ5DQogICAgW0B0bWF0dGlvXQ0KICDigKIgUFI6 IEFkZCBmaWVsZHMgcHJvZmVzc29yLCBlbnJvbGxtZW50LCBhbmQgYGxhc3RfY2hlY2snIHRvIEFj YWRlbWljDQogICAgW29jYW1sL29jYW1sLm9yZyMyNDg5XSBieSBbQGN1aWh0bGF1YWNdDQogIOKA oiBQUjogRml4OiByZW5kZXIgZnVsbCB0aXRsZSBvZiBPQ2FtbCBDb29rYm9vayByZWNpcGUgYXMg SFRNTCBwYWdlDQogICAgdGl0bGUgW29jYW1sL29jYW1sLm9yZyMyNTYwXSBieSBbQHNhYmluZV0N Cg0KDQpbVUkgZGVzaWducyBmb3IgdGhlIHJld29ya2VkIGFuZCBuZXcgcGFnZXMgb2YgdGhlIGNv bW11bml0eSBzZWN0aW9uXQ0KPGh0dHBzOi8vd3d3LmZpZ21hLmNvbS9maWxlLzdobW9Xa1FQOVBn TFRmWkNxaVpNV2EvT0NhbWwtQ29tbXVuaXR5LVBhZ2VzP3R5cGU9ZGVzaWduJm5vZGUtaWQ9NjM3 JTNBNDUzOSZtb2RlPWRlc2lnbiZ0PVJwUWxHdk9wZWcxYTkzQVotMT4NCg0KW29jYW1sL29jYW1s Lm9yZyMyNDk1XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI0OTU+ DQoNCltAaXNoYXIxOV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9pc2hhcjE5Pg0KDQpbb2NhbWwvb2Nh bWwub3JnIzI1MTRdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjUx ND4NCg0KW0B0bWF0dGlvXSA8aHR0cHM6Ly9naXRodWIuY29tL3RtYXR0aW8+DQoNCltvY2FtbC9v Y2FtbC5vcmcjMjQ4OV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8y NDg5Pg0KDQpbQGN1aWh0bGF1YWNdIDxodHRwczovL2dpdGh1Yi5jb20vY3VpaHRsYXVhYz4NCg0K W29jYW1sL29jYW1sLm9yZyMyNTYwXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9y Zy9wdWxsLzI1NjA+DQoNCltAc2FiaW5lXSA8aHR0cHM6Ly9naXRodWIuY29tL3NhYmluZT4NCg0K DQpHZW5lcmFsIEltcHJvdmVtZW50cyBhbmQgRGF0YSBBZGRpdGlvbnMNCuKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQogICpTdW1t YXJ5OioNCg0KICDigKIgVG8gcmVkdWNlIHJlcGV0aXRpb24gb2YgdGhlIG1vZHVsZSBpbnRlcmZh Y2UgZGVmaW5pdGlvbnMgcmVsYXRpbmcgdG8NCiAgICBgb29kLWdlbicgKHRoZSB0b29sIHRoYXQg dHVybnMgdGhlIGZpbGVzIGluIHRoZSBgZGF0YS8nIGZvbGRlciBpbnRvDQogICAgT0NhbWwgbW9k dWxlcyksIHR5cGVzIGhhdmUgYmVlbiBmYWN0b3JlZCBvdXQuIFRoaXMgaG9wZWZ1bGx5IG1ha2Vz DQogICAgaXQgc2ltcGxlciB0byBjb250cmlidXRlIHRvIGNoYW5nZXMgdG8gdGhlIGRhdGEgbW9k ZWxzLg0KICDigKIgTWF0ZXJpYWxzIGZvciBzb21lIG9mIHRoZSB0dXRvcmlhbHMgaGF2ZSBiZWVu IHB1Ymxpc2hlZCB1bmRlciB0aGUNCiAgICA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXdlYj4g R2l0SHViIG9yZ2FuaXNhdGlvbjogW+KAnFlvdXIgRmlyc3QNCiAgICBPQ2FtbCBQcm9ncmFt4oCd XSwgW+KAnE1vZHVsZXPigJ1dLCBb4oCcRnVuY3RvcnPigJ1dLCBhbmQgW+KAnExpYnJhcmllcyBX aXRoDQogICAgRHVuZeKAnV0uDQogIOKAoiBUaGUgT0NhbWxGb3JtYXQgdmVyc2lvbiB1c2VkIHRv IGZvcm1hdCB0aGUgcHJvamVjdCBpcyBub3cgMC4yNi4yLg0KDQogICpSZWxldmFudCBQUnMgYW5k IEFjdGl2aXRpZXM6Kg0KICDigKIgUFI6IFVwZGF0ZSBjb2RlIGhpZ2hsaWdodGluZyBjb2xvciBz Y2hlbWUgW29jYW1sL29jYW1sLm9yZyMyNDk2XSBieQ0KICAgIFtAU2lkZGhhbnQtSy1jb2RlXQ0K ICDigKIgRGF0YQ0KICAgIOKAoiBQUjogKGRhdGEpIEFkZCBPQ2FtbC5vcmcgbmV3c2xldHRlciBN YXkgMjAyNA0KICAgICAgW29jYW1sL29jYW1sLm9yZyMyNDk4XSBieSBbQHNhYmluZV0NCiAgICDi gKIgUFI6IEFkZCBjaGFuZ2Vsb2cgZW50cnkgZm9yIE1lcmxpbiBgNC4xNS00MTQvNTAxJw0KICAg ICAgW29jYW1sL29jYW1sLm9yZyMyNDczXSBieSBbQHZvb2Rvb3NdDQogICAg4oCiIFBSOiBBZGQg dGhlIGFubm91bmVtZW50IGZvciBvcGFtIDIuMi4wfmJldGEzDQogICAgICBbb2NhbWwvb2NhbWwu b3JnIzI1MDldIGJ5IFtAa2l0LXR5LWthdGVdDQogICAg4oCiIFBSOiBBZGQgbWlzc2luZyBjaGFu Z2Vsb2cgZW50cmllcyBbb2NhbWwvb2NhbWwub3JnIzI0NzZdIGJ5DQogICAgICBbQHRtYXR0aW9d DQogICAg4oCiIFBSOiBBZGQgY2hhbmdlbG9nIGVudHJ5IGZvciBgcHB4bGliLjAuMzIuMScgcmVs ZWFzZQ0KICAgICAgW29jYW1sL29jYW1sLm9yZyMyNDc5XSBieSBbQE5hdGhhblJlYl0NCiAgICDi gKIgUFI6IChkYXRhKSBhZGQgYG9kb2MnIGRldiBtZWV0aW5nIHRvIGdvdmVybmFuY2UNCiAgICAg IFtvY2FtbC9vY2FtbC5vcmcjMjUyMV0gYnkgW0BzYWJpbmVdDQogICAg4oCiIFBSOiAoZGF0YSkg VXBkYXRlIG1lZXRpbmcgbGluayBhbmQgZnJlcXVlbmN5IGluIGdvdmVybmFuY2UgZm9yDQogICAg ICBPQ2FtbC5vcmcgW29jYW1sL29jYW1sLm9yZyMyNTQyXSBieSBbQHNhYmluZV0NCiAg4oCiIERv Y3VtZW50YXRpb246DQogICAg4oCiIFBSOiBQcmVyZXF1aXNpdGVzIGZvciBMaWJyYXJpZXMgV2l0 aCBEdW5lIFtvY2FtbC9vY2FtbC5vcmcjMjU1MV0NCiAgICAgIGJ5IFtAY3VpaHRsYXVhY10NCiAg ICDigKIgQWRkZWQgcmVwb3NpdG9yaWVzIGhvbGRpbmcgbWF0ZXJpYWxzIGZvciBzb21lIG9mIHRo ZSB0dXRvcmlhbHMgYXQNCiAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbG0td2ViPg0KICAg ICAg4oCiIFBSOn5vY2FtbC13ZWJ+IHJlcG8gbGluayBbb2NhbWwvb2NhbWwub3JnIzI1NDddIGJ5 IFtAY3VpaHRsYXVhY10NCiAgICAgIOKAoiBQUjogUHJlcmVxdWlzaXRlcyBhbmQgYG9jYW1sLXdl YicgcmVwbyBsaW5rDQogICAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjU0NF0gYnkgW0BjdWlodGxh dWFjXQ0KICAgICAg4oCiIFBSOiBQcmVyZXF1aXNpdGVzIGFuZCBgb2NhbWwtd2ViJyByZXBvIGxp bmsNCiAgICAgICAgW29jYW1sL29jYW1sLm9yZyMyNTQzXSBieSBbQGN1aWh0bGF1YWNdDQogICAg ICDigKIgUFI6IEZpeCB0eXBvIGluIGAwaXRfMDBfdmFsdWVzX2Z1bmN0aW9ucy5tZCcNCiAgICAg ICAgW29jYW1sL29jYW1sLm9yZyMyNTQ4XSBieSBbQGJvaXNnZXJhXQ0KICAgICAg4oCiIFBSOiBg b2NhbWwtd2ViJyB0dXRvcmlhbCBtYXRlcmlhbCBVUkxzIFtvY2FtbC9vY2FtbC5vcmcjMjU1MF0g YnkNCiAgICAgICAgW0BjdWlodGxhdWFjXQ0KICAgIOKAoiBQUjogSW4gIk1vZHVsZXMiIHR1dG9y aWFsOiBGaXggYGR1bmUnIGZpbGVzIFtvY2FtbC9vY2FtbC5vcmcjMjUzNV0NCiAgICAgIGJ5IFtA Y3VpaHRsYXVhY10NCiAgICDigKIgUFI6IEZpeCB0eXBvIGluICJUb3VyIG9mIE9DYW1sIiBbb2Nh bWwvb2NhbWwub3JnIzI1MTldIGJ5DQogICAgICBbQGJsYWNrd2luZGZvcmNlXQ0KICAgIOKAoiBQ UjogQ2xhcmlmaWNhdGlvbiBvbiBwYXR0ZXJuIG1hdGNoaW5nIGFuZCBkZWZpbml0aW9ucw0KICAg ICAgW29jYW1sL29jYW1sLm9yZyMyNTAwXSBieSBbQGN1aWh0bGF1YWNdDQogIOKAoiBSZWZhY3Rv cmluZyAvIENvZGUgaGVhbHRoOg0KICAgIOKAoiBGYWN0b3Igb3V0IHR5cGVzIG9uIGBvb2QtZ2Vu JyB0b29sIHRoYXQgcGFyc2VzIHRoZSBmaWxlcyBpbiB0aGUNCiAgICAgIGBkYXRhLycgZm9sZGVy Og0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRpb24gZm9yIE91dHJlYWNo eQ0KICAgICAgICBbb2NhbWwvb2NhbWwub3JnIzI0ODFdIGJ5IFtAY3VpaHRsYXVhY10NCiAgICAg IOKAoiBQUjogU2luZ2xlIGRhdGEgdHlwZSBkZWZpbml0aW9uIGZvciBSZXNvdXJjZQ0KICAgICAg ICBbb2NhbWwvb2NhbWwub3JnIzI1MzNdIGJ5IFtAY3VpaHRsYXVhY10NCiAgICAgIOKAoiBQUjog U2luZ2xlIGRhdGEgdHlwZSBkZWZpbnRpb24gZm9yIFN1Y2Nlc3Nfc3RvcnkNCiAgICAgICAgW29j YW1sL29jYW1sLm9yZyMyNTM2XSBieSBbQGN1aWh0bGF1YWNdDQogICAgICDigKIgUFI6IFNpbmds ZSBkYXRhIHR5cGUgZGVmaW50aW9uIGZvciBUb29sIFtvY2FtbC9vY2FtbC5vcmcjMjUzOF0NCiAg ICAgICAgYnkgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgdHlwZSBmb3IgVG9v bF9wYWdlIFtvY2FtbC9vY2FtbC5vcmcjMjUzOV0gYnkNCiAgICAgICAgW0BjdWlodGxhdWFjXQ0K ICAgICAg4oCiIFBSOiBTaW5nbGUgdHlwZSBmb3IgQm9vayBbb2NhbWwvb2NhbWwub3JnIzI0ODhd IGJ5IFtAY3VpaHRsYXVhY10NCiAgICAgIOKAoiBQUjogU2luZ2xlIGRhdGEgdHlwZSBkZWZpbml0 aW9uIGZvciBFeGVyY2lzZQ0KICAgICAgICBbb2NhbWwvb2NhbWwub3JnIzI0OTddIGJ5IFtAY3Vp aHRsYXVhY10NCiAgICAgIOKAoiBQUjogU2luZ2xlIGRhdGEgdHlwZSBkZWZpbml0aW9ucyBmb3Ig UGxhbmV0DQogICAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjUyOV0gYnkgW0BjdWlodGxhdWFjXQ0K ICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRpb24gZm9yIFJlbGVhc2UNCiAg ICAgICAgW29jYW1sL29jYW1sLm9yZyMyNTMxXSBieSBbQGN1aWh0bGF1YWNdDQogICAgICDigKIg UFI6IFNpbmdsZSBkYXRhIHR5cGUgZGVmaW5pdGlvbiBmb3IgQ2hhbmdlbG9nDQogICAgICAgIFtv Y2FtbC9vY2FtbC5vcmcjMjQ5Ml0gYnkgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5n bGUgZGF0YSB0eXBlIGRlZmluaXRpb24gZm9yIENvb2tib29rDQogICAgICAgIFtvY2FtbC9vY2Ft bC5vcmcjMjQ5MF0gYnkgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0 eXBlIGRlZmluaXRpb24gZm9yIEdvdmVybmFuY2UNCiAgICAgICAgW29jYW1sL29jYW1sLm9yZyMy NTA0XSBieSBbQGN1aWh0bGF1YWNdDQogICAgICDigKIgUFI6IFNpbmdsZSBkYXRhIHR5cGUgZGVm aW5pdGlvbnMgZm9yIFR1dG9yaWFsDQogICAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjU1NV0gYnkg W0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRpb24g Zm9yIEV2ZW50IFtvY2FtbC9vY2FtbC5vcmcjMjU1OV0NCiAgICAgICAgYnkgW0BjdWlodGxhdWFj XQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRpb24gZm9yIEluZHVzdHJp YWxfdXNlcg0KICAgICAgICBbb2NhbWwvb2NhbWwub3JnIzI1MDVdIGJ5IFtAY3VpaHRsYXVhY10N CiAgICAgIOKAoiBQUjogU2luZ2xlIHR5cGUgZm9yIElzX29jYW1sX3lldCBbb2NhbWwvb2NhbWwu b3JnIzI1MDhdIGJ5DQogICAgICAgIFtAY3VpaHRsYXVhY10NCiAgICAgIOKAoiBQUjogU2luZ2xl IHR5cGUgZGVmaW5pdGlvbiBmb3IgSm9iIFtvY2FtbC9vY2FtbC5vcmcjMjUxNl0gYnkNCiAgICAg ICAgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRp b24gZm9yIE5ld3MgW29jYW1sL29jYW1sLm9yZyMyNTIwXQ0KICAgICAgICBieSBbQGN1aWh0bGF1 YWNdDQogICAgICDigKIgUFI6IFNpbmdsZSBkYXRhIHR5cGUgZGVmaW50aW9uIGZvciBvcGFtX3Vz ZXINCiAgICAgICAgW29jYW1sL29jYW1sLm9yZyMyNTIyXSBieSBbQGN1aWh0bGF1YWNdDQogICAg ICDigKIgUFI6IFNpbmdsZSBkYXRhIHR5cGUgZGVmaW5pdGlvbiBmb3IgV29ya3Nob3ANCiAgICAg ICAgW29jYW1sL29jYW1sLm9yZyMyNTQxXSBieSBbQGN1aWh0bGF1YWNdDQogICAgICDigKIgUFI6 IFNpbmdsZSBkYXRhIHR5cGUgZGVmaW50aW9uIGZvciBXYXRjaCBbb2NhbWwvb2NhbWwub3JnIzI1 NDVdDQogICAgICAgIGJ5IFtAY3VpaHRsYXVhY10NCiAgICAgIOKAoiBQUjogU2luZ2xlIGRhdGEg dHlwZSBkZWZpbml0aW9uIGZvciBQYWdlIFtvY2FtbC9vY2FtbC5vcmcjMjUyNF0NCiAgICAgICAg YnkgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRp b24gZm9yIFBhcGVyIFtvY2FtbC9vY2FtbC5vcmcjMjUyNl0NCiAgICAgICAgYnkgW0BjdWlodGxh dWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRpb24gZm9yIEFjYWRl bWljX0luc3RpdHV0aW9uDQogICAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjQ3N10gYnkgW0BjdWlo dGxhdWFjXQ0KICAgICAg4oCiIFBSOiBTaW5nbGUgZGF0YSB0eXBlIGRlZmluaXRpb24gZm9yIENv ZGVfZXhhbXBsZXMNCiAgICAgICAgW29jYW1sL29jYW1sLm9yZyMyNTAxXSBieSBbQGN1aWh0bGF1 YWNdDQogICAg4oCiIFBSOiBSZW1vdmUgcmVkdW5kYW50IGRhdGEgdHlwZSBXYXRjaCBbb2NhbWwv b2NhbWwub3JnIzI1MDddIGJ5DQogICAgICBbQGN1aWh0bGF1YWNdDQogICAg4oCiIEluY3JlYXNl IE9DYW1sRm9ybWF0IHZlcnNpb24gdXNlZCB0byBmb3JtYXQgdGhlIHByb2plY3QgZnJvbQ0KICAg ICAgMC4yNS4xIHRvIDAuMjYuMg0KICAgICAg4oCiIFBSOiBCcmluZ3VwIE9DYW1sRm9ybWF0IFtv Y2FtbC9vY2FtbC5vcmcjMjQ4Ml0gYnkgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCiIFBSOiBGb3Jt YXR0aW5nIFtvY2FtbC9vY2FtbC5vcmcjMjQ4NF0gYnkgW0BjdWlodGxhdWFjXQ0KICAgICAg4oCi IFBSOiBBZGQgaW5mb3JtYXRpb24gb24gc3dpdGNoIHBpbiB1cGRhdGUgW29jYW1sL29jYW1sLm9y ZyMyNDgzXQ0KICAgICAgICBieSBbQGN1aWh0bGF1YWNdDQogICAgICDigKIgUFI6IEJyaW5ndXAg T0NhbWxGb3JtYXQgaW4gQ0kgW29jYW1sL29jYW1sLm9yZyMyNDg1XSBieQ0KICAgICAgICBbQGN1 aWh0bGF1YWNdDQogICAgICDigKIgUFI6IEFkZCBpbmZvcm1hdGlvbiBvbiBzd2l0Y2ggcGluIHVw ZGF0ZSwgY29udCdkDQogICAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjQ4Nl0gYnkgW0BjdWlodGxh dWFjXQ0KICAgIOKAoiBQUjogUmVuYW1lIFV0aWxzIGBtYXBfZmlsZXMnIGludG8gYG1hcF9tZF9m aWxlcycNCiAgICAgIFtvY2FtbC9vY2FtbC5vcmcjMjUxNV0gYnkgW0BjdWlodGxhdWFjXQ0KICAg IOKAoiBQUjogUmVtb3ZlIHVudXNlZCBWaWRlbyBkYXRhIFtvY2FtbC9vY2FtbC5vcmcjMjUwNl0g YnkNCiAgICAgIFtAY3VpaHRsYXVhY10NCiAgICDigKIgUFI6IFJlbW92ZSB1bnVzZWQgYG9vZC92 aWRlbycgZmlsZXMgW29jYW1sL29jYW1sLm9yZyMyNTQ2XSBieQ0KICAgICAgW0BjdWlodGxhdWFj XQ0KDQoNClvigJxZb3VyIEZpcnN0IE9DYW1sIFByb2dyYW3igJ1dDQo8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sLXdlYi9vY2FtbG9yZy1kb2NzLXlvdXItZmlyc3QtcHJvZ3JhbT4NCg0KW+KAnE1v ZHVsZXPigJ1dIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtd2ViL29jYW1sb3JnLWRvY3MtbW9k dWxlcz4NCg0KW+KAnEZ1bmN0b3Jz4oCdXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sLXdlYi9v Y2FtbG9yZy1kb2NzLWZ1bmN0b3JzPg0KDQpb4oCcTGlicmFyaWVzIFdpdGggRHVuZeKAnV0NCjxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwtd2ViL29jYW1sb3JnLWRvY3MtbGlicmFyaWVzLWR1bmU+ DQoNCltvY2FtbC9vY2FtbC5vcmcjMjQ5Nl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2Ft bC5vcmcvcHVsbC8yNDk2Pg0KDQpbQFNpZGRoYW50LUstY29kZV0gPGh0dHBzOi8vZ2l0aHViLmNv bS9TaWRkaGFudC1LLWNvZGU+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjQ5OF0gPGh0dHBzOi8vZ2l0 aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNDk4Pg0KDQpbQHNhYmluZV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9zYWJpbmU+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjQ3M10gPGh0dHBzOi8vZ2l0 aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNDczPg0KDQpbQHZvb2Rvb3NdIDxodHRwczov L2dpdGh1Yi5jb20vdm9vZG9vcz4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTA5XSA8aHR0cHM6Ly9n aXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MDk+DQoNCltAa2l0LXR5LWthdGVdIDxo dHRwczovL2dpdGh1Yi5jb20va2l0LXR5LWthdGU+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjQ3Nl0g PGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNDc2Pg0KDQpbQHRtYXR0 aW9dIDxodHRwczovL2dpdGh1Yi5jb20vdG1hdHRpbz4NCg0KW29jYW1sL29jYW1sLm9yZyMyNDc5 XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI0Nzk+DQoNCltATmF0 aGFuUmViXSA8aHR0cHM6Ly9naXRodWIuY29tL05hdGhhblJlYj4NCg0KW29jYW1sL29jYW1sLm9y ZyMyNTIxXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MjE+DQoN CltvY2FtbC9vY2FtbC5vcmcjMjU0Ml0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5v cmcvcHVsbC8yNTQyPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NTFdIDxodHRwczovL2dpdGh1Yi5j b20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU1MT4NCg0KW0BjdWlodGxhdWFjXSA8aHR0cHM6Ly9n aXRodWIuY29tL2N1aWh0bGF1YWM+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU0N10gPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTQ3Pg0KDQpbb2NhbWwvb2NhbWwub3Jn IzI1NDRdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU0ND4NCg0K W29jYW1sL29jYW1sLm9yZyMyNTQzXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9y Zy9wdWxsLzI1NDM+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU0OF0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTQ4Pg0KDQpbQGJvaXNnZXJhXSA8aHR0cHM6Ly9naXRo dWIuY29tL2JvaXNnZXJhPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NTBdIDxodHRwczovL2dpdGh1 Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjU1MD4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTM1 XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MzU+DQoNCltvY2Ft bC9vY2FtbC5vcmcjMjUxOV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVs bC8yNTE5Pg0KDQpbQGJsYWNrd2luZGZvcmNlXSA8aHR0cHM6Ly9naXRodWIuY29tL2JsYWNrd2lu ZGZvcmNlPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1MDBdIDxodHRwczovL2dpdGh1Yi5jb20vb2Nh bWwvb2NhbWwub3JnL3B1bGwvMjUwMD4NCg0KW29jYW1sL29jYW1sLm9yZyMyNDgxXSA8aHR0cHM6 Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI0ODE+DQoNCltvY2FtbC9vY2FtbC5v cmcjMjUzM10gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTMzPg0K DQpbb2NhbWwvb2NhbWwub3JnIzI1MzZdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwu b3JnL3B1bGwvMjUzNj4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTM4XSA8aHR0cHM6Ly9naXRodWIu Y29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1Mzg+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjUzOV0g PGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTM5Pg0KDQpbb2NhbWwv b2NhbWwub3JnIzI0ODhdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwv MjQ4OD4NCg0KW29jYW1sL29jYW1sLm9yZyMyNDk3XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1s L29jYW1sLm9yZy9wdWxsLzI0OTc+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjUyOV0gPGh0dHBzOi8v Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTI5Pg0KDQpbb2NhbWwvb2NhbWwub3Jn IzI1MzFdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjUzMT4NCg0K W29jYW1sL29jYW1sLm9yZyMyNDkyXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9y Zy9wdWxsLzI0OTI+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjQ5MF0gPGh0dHBzOi8vZ2l0aHViLmNv bS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNDkwPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1MDRdIDxo dHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjUwND4NCg0KW29jYW1sL29j YW1sLm9yZyMyNTU1XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1 NTU+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjU1OV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9v Y2FtbC5vcmcvcHVsbC8yNTU5Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1MDVdIDxodHRwczovL2dp dGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjUwNT4NCg0KW29jYW1sL29jYW1sLm9yZyMy NTA4XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MDg+DQoNCltv Y2FtbC9vY2FtbC5vcmcjMjUxNl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcv cHVsbC8yNTE2Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1MjBdIDxodHRwczovL2dpdGh1Yi5jb20v b2NhbWwvb2NhbWwub3JnL3B1bGwvMjUyMD4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTIyXSA8aHR0 cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MjI+DQoNCltvY2FtbC9vY2Ft bC5vcmcjMjU0MV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTQx Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1NDVdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2Nh bWwub3JnL3B1bGwvMjU0NT4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTI0XSA8aHR0cHM6Ly9naXRo dWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1MjQ+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjUy Nl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTI2Pg0KDQpbb2Nh bWwvb2NhbWwub3JnIzI0NzddIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1 bGwvMjQ3Nz4NCg0KW29jYW1sL29jYW1sLm9yZyMyNTAxXSA8aHR0cHM6Ly9naXRodWIuY29tL29j YW1sL29jYW1sLm9yZy9wdWxsLzI1MDE+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjUwN10gPGh0dHBz Oi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNTA3Pg0KDQpbb2NhbWwvb2NhbWwu b3JnIzI0ODJdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjQ4Mj4N Cg0KW29jYW1sL29jYW1sLm9yZyMyNDg0XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1s Lm9yZy9wdWxsLzI0ODQ+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjQ4M10gPGh0dHBzOi8vZ2l0aHVi LmNvbS9vY2FtbC9vY2FtbC5vcmcvcHVsbC8yNDgzPg0KDQpbb2NhbWwvb2NhbWwub3JnIzI0ODVd IDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjQ4NT4NCg0KW29jYW1s L29jYW1sLm9yZyMyNDg2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxs LzI0ODY+DQoNCltvY2FtbC9vY2FtbC5vcmcjMjUxNV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2Ft bC9vY2FtbC5vcmcvcHVsbC8yNTE1Pg0KDQpbb2NhbWwvb2NhbWwub3JnIzI1MDZdIDxodHRwczov L2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwub3JnL3B1bGwvMjUwNj4NCg0KW29jYW1sL29jYW1sLm9y ZyMyNTQ2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sLm9yZy9wdWxsLzI1NDY+DQoN Cg0Kb2NhbWwtbGliYnBmOiBMaWJicGYgQy1iaW5kaW5ncyBmb3IgT0NhbWwNCuKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0K DQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLW9jYW1sLWxp YmJwZi1saWJicGYtYy1iaW5kaW5ncy1mb3Itb2NhbWwvMTQ5MDUvMT4NCg0KDQpMZWUgS29vbiBX ZW4gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJJ20gZXhjaXRlZCB0byBhbm5vdW5jZSB0aGUg Zmlyc3QgcmVsZWFzZSBvZiBvY2FtbC1saWJicGYsIGEgbmV3DQogIGxpYnJhcnkgcHJvdmlkaW5n IE9DYW1sIGJpbmRpbmdzIGZvciBsaWJicGYsIHRoZSBlc3NlbnRpYWwgQyBsaWJyYXJ5DQogIGZv ciB3b3JraW5nIHdpdGggZUJQRiBwcm9ncmFtcy4gVGhpcyBsaWJyYXJ5IGFsbG93cyB5b3UgdG8g bG9hZCwNCiAgaW5pdGlhbGl6ZSwgbGluaywgYW5kIG1hbmFnZSBlQlBGIHByb2dyYW1zIHdpdGhp biBPQ2FtbCwgc2ltcGxpZnlpbmcNCiAgdGhlIHByb2Nlc3Mgb2Ygd29ya2luZyB3aXRoIHRoZXNl IHBvd2VyZnVsIGluLWtlcm5lbCBhcHBsaWNhdGlvbnMuDQoNCiAg4pSM4pSA4pSA4pSA4pSADQog IOKUgiBvcGFtIGluc3RhbGwgbGliYnBmDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIEtleSBGZWF0 dXJlczoNCiAg4oCiIEhpZ2gtbGV2ZWwgYW5kIExvdy1sZXZlbCBBUElzOiBBY2Nlc3MgYm90aCBy YXcgYmluZGluZ3MgYW5kDQogICAgdXNlci1mcmllbmRseSBoaWdoLWxldmVsIGZ1bmN0aW9ucyBm b3IgZUJQRiBtYW5hZ2VtZW50Lg0KICDigKIgU2VhbWxlc3MgSW50ZWdyYXRpb246IExvYWQgZUJQ RiBFTEYgZmlsZXMgaW50byB0aGUga2VybmVsIHdpdGggZWFzZS4NCiAg4oCiIEJQRiBNYXAgU3Vw cG9ydDogTWFuYWdlIEJQRiBtYXBzIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdXNlcg0KICAg IHNwYWNlIGFuZCBrZXJuZWwgc3BhY2UuDQoNCiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0 IHRoZSBbb2NhbWwtbGliYnBmXSByZXBvLiBDb250cmlidXRpb25zIGFuZA0KICBmZWVkYmFjayBh cmUgd2VsY29tZSENCg0KICBFbmpveSENCg0KDQpbb2NhbWwtbGliYnBmXSA8aHR0cHM6Ly9naXRo dWIuY29tL2tvb253ZW4vb2NhbWwtbGliYnBmPg0KDQoNCkhvdyBJIGJ1aWx0IHRoZSBBY3V0aXMg dGVtcGxhdGUgbGFuZ3VhZ2UgaW4gT0NhbWwNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYmxvZy1o b3ctaS1idWlsdC10aGUtYWN1dGlzLXRlbXBsYXRlLWxhbmd1YWdlLWluLW9jYW1sLzE0OTE2LzE+ DQoNCg0KSm9obiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgA0KDQogIEFjdXRpcyBpcyBhIHBlcnNvbmFsIHByb2plY3QgSSd2ZSBiZWVuIGRldmVs b3Bpbmcgb24tYW5kLW9mZiBvdmVyIHRoZQ0KICBsYXN0IGZldyB5ZWFycy4gSXQncyBhIHRlbXBs YXRlIGxhbmd1YWdlIChzaW1pbGFyIHRvIE11c3RhY2hlLA0KICBOdW5qdWNrcywgZXRjLikgdGhh dCBoYXMgYSBzdGF0aWMgdHlwZSBzeXN0ZW0sIHVzZXMgcGF0dGVybi1tYXRjaGluZywNCiAgYW5k IGNhbiBjb21waWxlIHRlbXBsYXRlcyBpbnRvIEphdmFTY3JpcHQgZmlsZXMuIEknbSBzaGFyaW5n IGl0IG5vdw0KICBiZWNhdXNlIGl0J3MgcmVhY2hlZCBhIHNvbWV3aGF0LXN0YWJsZSBzdGF0ZS4N Cg0KICBbWW91IGNhbiB2aWV3IGl0cyBob21lIHBhZ2UgaGVyZV0gYW5kIFtpdHMgc291cmNlIGNv ZGUgaGVyZV0uIEkgYWxzbw0KICB3cm90ZSBhIGJsb2ctc3R5bGUgYXJ0aWNsZSB0aGF0IGV4cGxh aW5zIGhvdyBJIGNyZWF0ZWQgQWN1dGlzLCB0aGUNCiAgcHJvYmxlbXMgSSBmYWNlZCwgYW5kIHRo ZSBkZWNpc2lvbnMgSSBtYWRlLiBZb3UgY2FuIHJlYWQgaXQgaGVyZToNCiAgIltUaGUgQWN1dGlz IHRlbXBsYXRlIGxhbmd1YWdlLCBvcjogaG93IEkgb3Zlci1lbmdpbmVlcmVkIGEgcHJvZ3JhbQ0K ICB0aGF0IGp1c3QgcHJpbnRzIHRleHRdIi4NCg0KICBJIGRvbid0IGVzcGVjaWFsbHkgZXhwZWN0 IHBlb3BsZSB0byB1c2UgQWN1dGlzIG11Y2gsIHNpbmNlIGl0J3MgdmVyeQ0KICBwZXJzb25hbCBh bmQgYmFzZWQgYXJvdW5kIG15IHNwZWNpZmljIHVzZSBjYXNlcy4gKEFsc28sIHdlIGhhdmUgYW4N CiAgb3ZlcmFidW5kYW5jZSBvZiB0ZW1wbGF0ZSBsYW5ndWFnZXMgYWxyZWFkeSBhbnl3YXkuKSBO b25ldGhlbGVzcywNCiAgYnVpbGRpbmcgaXQgd2FzIGEgZnVuIGFuZCByZXdhcmRpbmcgbGVhcm5p bmcgZXhwZXJpZW5jZSBmb3INCiAgbWUuIFBlcmhhcHMgc29tZSBwZW9wbGUgd2lsbCBmaW5kIGl0 IGFzIGludGVyZXN0aW5nIGFzIEkgZGlkLiDwn5mCDQoNCg0KW1lvdSBjYW4gdmlldyBpdHMgaG9t ZSBwYWdlIGhlcmVdIDxodHRwczovL2pvaG5yaWRlc2EuYmlrZS9hY3V0aXMvPg0KDQpbaXRzIHNv dXJjZSBjb2RlIGhlcmVdIDxodHRwczovL2dpdGh1Yi5jb20vam9obnJpZGVzYWJpa2UvYWN1dGlz Pg0KDQpbVGhlIEFjdXRpcyB0ZW1wbGF0ZSBsYW5ndWFnZSwgb3I6IGhvdyBJIG92ZXItZW5naW5l ZXJlZCBhIHByb2dyYW0gdGhhdA0KanVzdCBwcmludHMgdGV4dF0gPGh0dHBzOi8vam9obnJpZGVz YS5iaWtlL3NvZnR3YXJlL2FjdXRpcy8+DQoNCg0KTWlyYWdlT1MgcG9kY2FzdA0K4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0 dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9taXJhZ2Vvcy1wb2RjYXN0LzE0OTI3LzE+DQoNCg0K SGFubmVzIE1laG5lcnQgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJIHJlY2VudGx5 IHdhcyBpbnRlcnZpZXdlZCBieSBNYXR0aGlhcyBLaXJzY2huZXIgZnJvbSBGU0ZFIGFib3V0DQog IE1pcmFnZU9TICgrIE9DYW1sKS4gVGhlIHJlc3VsdCBpcyBhIHBvZGNhc3QNCiAgPGh0dHBzOi8v ZnNmZS5vcmcvbmV3cy9wb2RjYXN0L2VwaXNvZGUtMjUuZW4uaHRtbD4NCg0KICBTcHJlYWQgdGhl IHdvcmQsIGhhdmUgYSBsaXN0ZW4sIGFuZCBwbGVhc2UgZG9uJ3QgaGVzaXRhdGUgdG8gZ2l2ZQ0K ICBmZWVkYmFjayAtIHZpYSBlbWFpbCBvciBpbiB0aGlzIHRocmVhZC4NCg0KDQpPbGQgQ1dODQri lZDilZDilZDilZDilZDilZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlv dSBjYW4gW3NlbmQgbWUgYSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3Ig Z28gdGFrZSBhIGxvb2sgYXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0K ICBhcmNoaXZlc10uDQoNCiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdl ZWsgYnkgbWFpbCwgeW91IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQog IFtBbGFuIFNjaG1pdHRdDQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2No bWl0dEBwb2x5dGVjaG5pcXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBl dGl0ZXBvbW1lLm5ldC9jd24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6 Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBz Oi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRd IDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0Lz4NCg0K --=-=-= 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 July 02 to 09, 2024.

The Structure of Godotcaml as of Today, by Matt Walker [Fizzix= nerd]

Matt Walker announced

Fixed some bugs in the Godot OCaml bindings I'm working on. Here is a blog= post that could be of interest if you're looking to dive into them, or usi= ng Ctypes in another project, or are writing Godot bindings for another lan= guage, or just have some time to kill. :smiley:=20

https://fizzixnerd.com/blog/2024-07-02-the-structure-of-god= otcaml-as-of-today/

opam 2.2.0 is out!

Kate announced

We=E2=80=99re very happy to finally announce the release of opam 2.2.0.

What=E2=80=99s new?

  • Windows support :window: :tada: (you can hear all about it in th= e blog post)
  • opam tree / opam why: new commands showing a = tree view of the given packages and their dependencies and reverse-dependen= cies, respectively.
  • with-dev-setup: a new variable and argument to install the= recommend developement setup for a local project.
  • opam pin --recursive and --subpath to have op= am look at opam files elsewhere than the root directory of a project.
  • opam switch - to go back to the previous global switch (in= spired by git switch -)
  • opam pin --current fixes a package to its current state (d= isabling pending reinstallations or removals from the repository)
  • opam pin remove --all removes all the pinned packages from= a switch
  • opam exec --no-switch removes the opam environment when ru= nning a command. It is useful when you want to launch a command without opa= m environment changes.
  • opam clean --untracked removes untracked files interactive= ly remaining from previous packages removal.
  • opam admin add-constraint <cst> --packages pkg1,pkg2,pkg3 applies the given constraint to a given set of packages
  • opam list --base has been renamed into --invariant, reflecting the fact that since opam 2.1 the "base" packages of a swi= tch are instead expressed using a switch invariant
  • opam install --formula <formula> installs a formula = instead of a list of packages. This can be useful if you would like to inst= all one package or another one. For example opam install --formula '"= extlib" | "extlib-compat"' will install either extlib o= r extlib-compat depending on what's best for the current switc= h.
  • and many other features, performance improvements and fixes

:open_book: You can read our blog post for more information about these changes and a lot more.

How to upgrade

In case you plan a possible rollback, you may want to first backup your

~/.opam or $env:LOCALAPPDATA\opam directory.

The upgrade instructions are unchanged:

For Unix systems

bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/ma=
ster/shell/install.sh) --version 2.2.0"

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubuserconten=
t.com/ocaml/opam/master/shell/install.ps1) }"

or download manually from the Github "Releases" page to your PATH.

You should then run:

opam init --reinit -ni

OCaml.org Newsletter: June 2024

Sabine Schmaltz announced

Welcome to the June 2024 edition of the OCaml.org newsletter! This update h= as been compiled by the OCaml.org team. You can find previous updates on Discuss.

Our goal is to make OCaml.org the best resource for anyone who wants to get= started and be productive in OCaml. The OCaml.org newsletter provides an u= pdate on our progress towards that goal and an overview of the changes we a= re working on.

We couldn't do it without all the amazing people who help us review, revise= , and create better OCaml documentation and work on issues. Your participat= ion enables us to so much more than we could just by ourselves. Thank you!

This newsletter covers:

  • Recipes for the OCaml Cookbook: Help us make the OCaml Cookbook = really useful by contributing and reviewing recipes for common tasks!
  • Community & Marketing Pages Rework: Implementation work in p= rogress.
  • General Improvements: As usual, we also worked on general mainte= nance and improvements, so we're highlighting some of the work that happene= d below.

Open Issues for Contributors

Recipes for the OCaml Cookbook

The OCaml Cookbook is a place where OCaml developers share how to solve com= mon tasks using packages from the ecosystem.

A recipe is a code sample and explanations on how to perform a task using a= combination of open-source libraries.

The Cookbook is live at ocaml.org/co= okbook.

Here's how you can help:

  1. Review, then open pull requests for cookbook recipes!
  2. Contribute new recipes and tasks for the cookbook!

Relevant PRs and Activities:

Community & Marketing Pages Rework

We have UI designs for the reworked and new pages of the = community section, and implementation is in progress.

Relevant PRs and Activities:

General Improvements and Data Additions

Summary:

Relevant PRs and Activities:

ocaml-libbpf: Libbpf C-bindings for OCaml

Lee Koon Wen announced

I'm excited to announce the first release of ocaml-libbpf, a new library pr= oviding OCaml bindings for libbpf, the essential C library for working with= eBPF programs. This library allows you to load, initialize, link, and mana= ge eBPF programs within OCaml, simplifying the process of working with thes= e powerful in-kernel applications.

opam install libbpf

Key Features:

  • High-level and Low-level APIs: Access both raw bindings and user-friend= ly high-level functions for eBPF management.
  • Seamless Integration: Load eBPF ELF files into the kernel with ease.
  • BPF Map Support: Manage BPF maps for communication between user space a= nd kernel space.

For more information, visit the ocaml-libbpf repo. Contributions and feedback are welcome!

Enjoy!

How I built the Acutis template language in OCaml

John announced

Acutis is a personal project I've been developing on-and-off over the last = few years. It's a template language (similar to Mustache, Nunjucks, etc.) t= hat has a static type system, uses pattern-matching, and can compile templa= tes into JavaScript files. I'm sharing it now because it's reached a somewh= at-stable state.

You can view its home page here= and its source co= de here. I also wrote a blog-style article that explains how I created = Acutis, the problems I faced, and the decisions I made. You can read it her= e: "The Acutis templat= e language, or: how I over-engineered a program that just prints text".

I don't especially expect people to use Acutis much, since it's very person= al and based around my specific use cases. (Also, we have an overabundance = of template languages already anyway.) Nonetheless, building it was a fun a= nd rewarding learning experience for me. Perhaps some people will find it a= s interesting as I did. =F0=9F=99=82

MirageOS podcast

Hannes Mehnert announced

I recently was interviewed by Matthias Kirschner from FSFE about MirageOS (= + OCaml). The result is a podcast https://fsfe.org/news/podcast/episode-25.en.html

Spread the word, have a listen, and please don't hesitate to give feedback = - via email or in this thread.

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.

--=-=-=--