From owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org  Tue Sep 26 19:40:21 2017
Return-Path: <owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org>
X-Original-To: sc22wg5-dom8
Delivered-To: sc22wg5-dom8@www.open-std.org
Received: by www.open-std.org (Postfix, from userid 521)
	id 81CD43587F5; Tue, 26 Sep 2017 19:40:21 +0200 (CEST)
Delivered-To: sc22wg5@open-std.org
Received: from postout2.mail.lrz.de (postout2.mail.lrz.de [129.187.255.138])
	(using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by www.open-std.org (Postfix) with ESMTP id DC4E2357250
	for <sc22wg5@open-std.org>; Tue, 26 Sep 2017 19:40:17 +0200 (CEST)
Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1])
	by postout2.mail.lrz.de (Postfix) with ESMTP id 3y1pBT2hKjzySx
	for <sc22wg5@open-std.org>; Tue, 26 Sep 2017 19:40:17 +0200 (CEST)
Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit key)
	reason="pass (just generated, assumed good)" header.d=lrz.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lrz.de; h=
	mime-version:content-type:content-type:content-language
	:accept-language:message-id:date:date:subject:subject:from:from
	:received:received:received:received; s=postout; t=1506447616;
	 bh=MkFpe/SNuXCl36DQyFWiZFe8kCoZ5A8u/oLegxtyvZw=; b=fTZM4L1uazy/
	5O3dZzhCTJWm6ujIItzLZA/PceXhDdyeoYtzOImRs4LTcYbtDFfu/WWKtAWbXYdo
	Z8vc1/3gT7/+T6KlVzPJq2IPz4eRbYW6eYuuiR7SFsqOieyoOeg9l1ByWMTqdNxO
	yx5rdOzgPDJVd5xglbvhrKJ82fGcGYiD07pnnDg4Dpgu2WyJmUbnNWeeKo8bhlhw
	mzJ/ESrsVim+r0cuv31BNjfxqQ8FvfYmKZDXA8BneOQhC6ww1ebgkzhQXlf4rY7E
	HZqCx4ZW74tqgjL4rOYG21hwXD500xmtVG+h2Sxa7RIf+Hq5llxdlHB3JswA+tll
	7re/Klvrbw==
X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
X-Spam-Flag: NO
X-Spam-Score: -2.879
X-Spam-Level:
X-Spam-Status: No, score=-2.879 tagged_above=-999 required=5
	tests=[ALL_TRUSTED=-1, BAYES_00=-1.9, LRZ_DATE_TZ_0000=0.001,
	LRZ_DKIM_DESTROY_MTA=0.001, LRZ_DMARC_LRZ_FAIL=0.001,
	LRZ_DMARC_OVERWRITE=0.001, LRZ_ENVFROM_FROM_ALIGNED_STRICT=0.001,
	LRZ_ENVFROM_FROM_MATCH=0.001, LRZ_ENVFROM_LRZ_S=0.001,
	LRZ_FROM_AP_PHRASE=0.001, LRZ_FROM_HOSTED_DOMAIN=0.001,
	LRZ_FROM_LRZ_S=0.001, LRZ_FROM_PHRASE=0.001,
	LRZ_FROM_PRE_SUR_ADDR=0.001, LRZ_FWD_MS_EX=0.001, LRZ_HAS_BND=0.001,
	LRZ_HAS_CLANG=0.001, LRZ_HAS_THREAD_INDEX=0.001,
	LRZ_HAS_X_ORIG_IP=0.001, LRZ_MSGID_HL32=0.001,
	LRZ_RCVD_BADWLRZ_EXCH=0.001, LRZ_RCVD_MS_EX=0.001,
	SPF_HELO_NONE=0.001] autolearn=no autolearn_force=no
Received: from postout2.mail.lrz.de ([127.0.0.1])
	by lxmhs52.srv.lrz.de (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024)
	with LMTP id 285-qOUjadgv for <sc22wg5@open-std.org>;
	Tue, 26 Sep 2017 19:40:16 +0200 (CEST)
Received: from BADWLRZ-SWMBX01.ads.mwn.de (BADWLRZ-SWMBX01.ads.mwn.de [IPv6:2001:4ca0:0:108::157])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits))
	(Client CN "BADWLRZ-SWMBX01", Issuer "BADWLRZ-SWMBX01" (not verified))
	by postout2.mail.lrz.de (Postfix) with ESMTPS id 3y1pBS4ykszyS1
	for <sc22wg5@open-std.org>; Tue, 26 Sep 2017 19:40:16 +0200 (CEST)
Received: from BADWLRZ-SWMBX05.ads.mwn.de (2001:4ca0:0:108::161) by
 BADWLRZ-SWMBX01.ads.mwn.de (2001:4ca0:0:108::157) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1034.26; Tue, 26 Sep 2017 19:40:16 +0200
Received: from BADWLRZ-SWMBX05.ads.mwn.de ([fe80::4095:4fb3:50be:d2bd]) by
 BADWLRZ-SWMBX05.ads.mwn.de ([fe80::4095:4fb3:50be:d2bd%12]) with mapi id
 15.01.1034.032; Tue, 26 Sep 2017 19:40:15 +0200
From: "Bader, Reinhold" <Reinhold.Bader@lrz.de>
To: WG5 <sc22wg5@open-std.org>
Subject: generic programming in F2020
Thread-Topic: generic programming in F2020
Thread-Index: AdM27fZeHXRYN1MZRAisoIDdS0BiIA==
Date: Tue, 26 Sep 2017 17:40:15 +0000
Message-ID: <2b40b5da47404caaa3cbd5bd344383d7@lrz.de>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [91.113.85.147]
Content-Type: multipart/mixed;
	boundary="_002_2b40b5da47404caaa3cbd5bd344383d7lrzde_"
MIME-Version: 1.0
Sender: owner-sc22wg5@open-std.org
Precedence: bulk

--_002_2b40b5da47404caaa3cbd5bd344383d7lrzde_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Dear WG5,=20

attached please find a draft with my musings on what generic programming fe=
atures in F2020 might look like.=20

Regards
Reinhold


--_002_2b40b5da47404caaa3cbd5bd344383d7lrzde_
Content-Type: text/plain; name="requirements_generic_programming.txt"
Content-Description: requirements_generic_programming.txt
Content-Disposition: attachment;
	filename="requirements_generic_programming.txt"; size=10960;
	creation-date="Tue, 26 Sep 2017 17:39:34 GMT";
	modification-date="Tue, 26 Sep 2017 17:35:09 GMT"
Content-Transfer-Encoding: base64

VG86ICAgICAgSjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSjMv
IyMtIyMjCkZyb206ICAgIFIuIEJhZGVyClN1YmplY3Q6IEdlbmVyaWMgcHJvZ3JhbW1pbmcgaW4g
ZnV0dXJlIEZvcnRyYW4KRGF0ZTogMjAxNyBTZXB0ZW1iZXIgMjYKUmVmZXJlbmNlczogRm9ydHJh
biAyMDIwIGZlYXR1cmUgY29sbGVjdGlvbgoKClRoaXMgaXMgYW4gYXR0ZW1wdCB0byBwdXQgdG9n
ZXRoZXIgYSBtaW5pbWFsIHNldCBvZiByZXF1aXJlbWVudHMKZm9yIHRoZSBzdXBwb3J0IG9mIGdl
bmVyaWMgcHJvZ3JhbW1pbmcgKGFrYSAidGVtcGxhdGVzIikgaW4gYQpmdXR1cmUgRm9ydHJhbiBz
dGFuZGFyZC4KCgoxLiBJdCBzaGFsbCBiZSBwb3NzaWJsZSB0byBkZW5vdGF0ZSBhbGdvcml0aG1z
IHRoYXQgb3BlcmF0ZQogICBpbmRlcGVuZGVudGx5IG9mIHRoZSB0eXBlcyBvZiB0aGUgb2JqZWN0
IG9yIG9iamVjdHMgdGhleSB3b3JrIG9uCiAgICgiZ2VuZXJpYyBhbGdvcml0aG0iKS4gVGhlIGRl
bm90YXRpb24gd2lsbCBuZWVkIHRvIG1ha2UgdXNlIG9mCiAgIHBsYWNlaG9sZGVycyBmb3IgdGhl
IHR5cGVzIG9mIHRoZSB0YXJnZXRlZCBvYmplY3RzLCB3aGljaCBhcmUgbGlrZWx5CiAgIGJlc3Qg
c3BlY2lmaWVkIGFzIGNvbXBpbGUtdGltZSBldmFsdWFibGUgcGFyYW1ldGVycyBvZiBhIGNvbnRh
aW5lci0KICAgbGlrZSBwcm9ncmFtIHVuaXQgKHRlcm1lZCBhICJwcmVtb2R1bGUiIGluIHRoaXMg
cGFwZXIpLgoKMi4gSXQgc2hhbGwgYmUgcG9zc2libGUgdG8gcHJvZHVjZSBpbnN0YW5jZXMgb2Yg
c3VjaCBhbGdvcml0aG1zIGZvcgogICBhIHNldCBvZiBzdXBwbGllZCB0eXBlcyB0aGF0IGNvcnJl
c3BvbmRzIHRvIHRoZSBwbGFjZWhvbGRlciB0eXBlcyBpbgogICB0aGUgZGVub3RhdGlvbi4gU3Vj
aCBhbiBpbnN0YW50aWF0aW9uIHNoYWxsIGJlIGdlbmVyYWJsZSBhdCBjb21waWxlCiAgIHRpbWUs
IGFuZCBib3RoIGNyZWF0aW9uIG9mIGluY29tcGxldGUgaW5zdGFuY2VzICh1bmxlc3MgZXhwbGlj
aXRseQogICByZXF1ZXN0ZWQ/KSBhbmQgdW5uZWNlc3NhcnkgZHVwbGljYXRpb24gb2YgaW5zdGFu
Y2VzIHNoYWxsIGJlIGF2b2lkZWQuCgozLiBUaGUgY29uY3JldGUgZnVuY3Rpb25hbGl0eSBpbiB0
aGVzZSBpbnN0YW5jZXMgc2hhbGwgYmUgbWFkZSBhdmFpbGFibGUKICAgdG8gb3RoZXIgcHJvZ3Jh
bSB1bml0cyB2aWEgYSBzdWl0YWJseSBkZXNpZ25lZCAoYW5kIGVhc3ktdG8tdXNlKQogICBuYW1p
bmcgc2NoZW1lLiBUaGUgbmFtaW5nIHNjaGVtZSBzaG91bGQgZXhwbG9pdCB0aGUgZXhpc3Rpbmcg
Z2VuZXJpYwogICBkaXNhbWJpZ3VhdGlvbiBydWxlcywgYW5kIG1ha2UgdXNlIG9mIGEgc3VpdGFi
bGUgZXh0ZW5zaW9uIG9mIHRoZQogICBleGlzdGluZyBtb2R1bGUgY29uY2VwdC4gCgo0LiBJbnNp
ZGUgdGhlIGdlbmVyaWMgYWxnb3JpdGhtLCB0aGVyZSBzaGFsbCBiZSBhbiBvYmxpZ2F0aW9uIHRv
IGltcG9zZQogICByZXF1aXJlbWVudHMgb24gYW55IGFkZGl0aW9uYWwgcHJvcGVydGllcyBvZiB0
aGUgdHlwZXMgdGhhdCBhcmUgdXNlZAogICBmb3IgY29kZSBpbiB0aGUgcHJlbW9kdWxlLiBTdWNo
IHJlcXVpcmVtZW50cyBzaGFsbCBiZSBjaGVja2VkIHdoZW4KICAgYW4gaW5zdGFuY2Ugb2YgdGhl
IGdlbmVyaWMgYWxnb3JpdGhtIGlzIGNyZWF0ZWQuCgpUaGlzIGlzIHN1cmVseSB2ZXJ5IGluY29t
cGxldGUsIGJ1dCBJIGhvcGUgdGhhdCBpdCBnaXZlcyBhIHJlYXNvbmFibHkKZ29vZCBzdGFydGlu
ZyBwb2ludCBmb3IgZGVzaWduaW5nIHRoZSBmZWF0dXJlLgoKClNvbWUgZXhlbXBsYXJ5IHVzZSBj
YXNlcwp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KTm90ZTogcHNldWRvLXN5bnRheCAoaG9wZWZ1
bGx5IHN1ZmZpY2llbnRseSBleHBsYWluZWQgd2hlcmUgbmVjZXNzYXJ5KQogICAgICB3aWxsIGJl
IHVzZWQgdGhyb3VnaG91dCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzLgoKKEEpIGdlbmVyaWMgY29u
dGFpbmVyIHR5cGUgYW5kIGFzc29jaWF0ZWQgcHJvY2VkdXJlcwoKICAgSW1hZ2luZSB0aGF0IGlu
IGEgZnJhY3Rpb24gZiA9IGEvYiB0aGUgcXVhbnRpdGllcyBhIGFuZCBiIGFyZSBub3QKICAgaW50
ZWdlcnMsIGJ1dCBvZiBzb21lIHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgdXN1YWwgYXJpdGhtZXRp
YwogICBvcGVyYXRpb25zLiBNYWtpbmcgdXNlIG9mIGl0ZW0gMS4gYWJvdmUsIGl0IHdvdWxkIGJl
IHBvc3NpYmxlIHRvCgogICAoYSkgZGVjbGFyZSBhIGdlbmVyaWMgdHlwZSAKCiAgIFRZUEUsIEdF
TkVSSUMgOjogZnJhY3Rpb24oVCkKICAgICBUWVBFKFQpIDo6IG51bWVyYXRvciwgZGVub21pbmF0
b3IKICAgRU5EIFRZUEUKCiAgIChiKSB3cml0ZSBhIHByb2NlZHVyZQoKICAgVFlQRShmcmFjdGlv
bihUKSkgRlVOQ1RJT04gYWRkX2ZyYWN0aW9ucyhzMSwgczIpCiAgICAgVFlQRShmcmFjdGlvbihU
KSksIElOVEVOVChpbikgOjogczEsIHMyCiAgICAgLi4uICEgaW1wbGVtZW50IHMxK3MyIGluIHRl
cm1zIG9mIHRoZSB0eXBlIGNvbXBvbmVudHMKICAgRU5EIEZVTkNUSU9OCgogICAoYykgaWYgZGVz
aXJlZCwgZGVjbGFyZSBhIHNlY29uZC1sZXZlbCBnZW5lcmljIGludGVyZmFjZQoKICAgR0VORVJJ
QyA6OiBvcGVyYXRvcigrKSA9PiBhZGRfZnJhY3Rpb25zCgogICBUaGUgcHJvZHVjdGlvbiBvZiBp
bnN0YW5jZXMgYWNjb3JkaW5nIHRvIDIuIGFib3ZlIHdvdWxkCiAgIG5lZWQgdG8gbWFrZSB1c2Ug
b2YgY29uY3JldGUgdHlwZXM6CgogICAoZCkgQXNzdW1pbmcgdGhlIGFib3ZlIGNvZGUgaXMgcGxh
Y2VkIGluc2lkZSBhIHByZW1vZHVsZQogICBjYWxsZWQgImZyYWN0aW9uX2NvbnRhaW5lciIsIGEg
c3RhdGVtZW50CgogICBJTlNUQU5USUFURShmcmFjdGlvbl9jb250YWluZXIobW9kX215dHlwZTo6
bXl0eXBlKSkKCiAgIG1pZ2h0IGNyZWF0ZSBhbiBpbnN0YW5jZSB0aGF0IHJlZmVycyB0byB0aGUg
dHlwZSBkZWNsYXJhdGlvbgogICBvZiBteXR5cGUgdGhhdCBpcyBhc3N1bWVkIHRvIGV4aXN0IGlu
IG1vZHVsZSAibW9kX215dHlwZSIuCiAgIFRvIHByZXZlbnQgY3JlYXRpb24gb2YgbXVsdGlwbGUg
aW5zdGFudGlhdGlvbnMsIGFkZGl0aW9uYWwKICAgc3ludGFjdGljIHN1cHBvcnQgYW5kL29yIGNv
bnN0cmFpbnRzIG9uIHRoZSBwbGFjZW1lbnQgb2YgdGhpcwogICBzdGF0ZW1lbnQgd2lsbCBsaWtl
bHkgYmUgbmVlZGVkIChwZXJoYXBzIGluIGEgc2VwYXJhdGUKICAgaW5zdGFudGlhdGlvbiBzZWN0
aW9uIG9mIGEgcHJlbW9kdWxlKS4KCiAgIEFjY2Vzc2luZyBhbiBpbnN0YW5jZSBhY2NvcmRpbmcg
dG8gaXRlbSAzLiBhYm92ZToKCiAgIChlKSBUaGlzIGNvdWxkIGJlIGRvbmUgdGhyb3VnaCBhIHVz
ZSBzdGF0ZW1lbnQgb24gdGhlCiAgIGluc3RhbnRpYXRlZCBtb2R1bGUsIGxpa2UKCiAgIFVTRSBt
b2RfbXl0eXBlICAgICAgICAgICAgICAgICAgICAhIGdldCBhY2Nlc3MgdG8gbXl0eXBlCiAgIFVT
RSBmcmFjdGlvbl9jb250YWluZXIobXl0eXBlKQogICBVU0UgZnJhY3Rpb25fY29udGFpbmVyKG90
aGVydHlwZSkgISBhbm90aGVyIGluc3RhbmNlCgogICBUaGUgY29tcGlsZXIgc2hvdWxkIGNvbXBs
YWluIGlmIG5vIGluc3RhbmNlIGV4aXN0cywgb3IgaWYKICAgYW1iaWd1aXRpZXMgYXJpc2UuCgog
ICAoZikgT2JqZWN0cyBub3cgY291bGQgYmUgZGVjbGFyZWQgbGlrZQoKICAgVFlQRShmcmFjdGlv
bihteXR5cGUpKSwgQUxMT0NBVEFCTEUgOjogbWYoOikKICAgVFlQRShmcmFjdGlvbihvdGhlcnR5
cGUpKSA6OiB4ICAhIHVzZSBvdGhlciBpbnN0YW5jZQoKICAgKGcpIEludm9jYXRpb24gb2YgYSBw
cm9jZWR1cmUgKGlmIFBVQkxJQykgbWlnaHQgYmUgZG9uZSB2aWEKCiAgIG1mKDEpID0gYWRkX2Zy
YWN0aW9ucyhtZigxKSwgbWYoMikpCgogICBtYWtpbmcgdXNlIG9mIGFuIGF1dG8tZ2VuZXJhdGVk
IGdlbmVyaWMgY2FsbCBpbiB0aGUgaW5zdGFudGlhdGlvbi4KCiAgIChoKSBJbiB0aGlzIGV4YW1w
bGUsIHRoZSBzYW1lIGVmZmVjdCB3b3VsZCBiZSBhY2hpZXZlZCBieSB1c2luZwogICB0aGUgc2Vj
b25kLWxldmVsIGdlbmVyaWM6CgogICBtZigxKSA9IG1mKDEpICsgbWYoMikKCiAgIChpKSBTcGVj
aWFsaXphdGlvbnMgb3IgZXh0ZW5zaW9ucyBjb3VsZCBiZSBhY2hpZXZlZCBieSBzcGVjaWZ5aW5n
CiAgIGFuIE9OTFkgY2xhdXNlIG9uIHRoZSBVU0Ugc3RhdGVtZW50IGZvciBmcmFjdGlvbl9jb250
YWluZXIgYW5kCiAgIGFkZGluZyB0aGUgc3BlY2lhbCBwdXJwb3NlIGNvZGUgb3IgdGhlIGV4dGVu
c2lvbiBjb2RlIGxvY2FsbHkuCgogICBUYWtpbmcgYWNjb3VudCBvZiBpdGVtIDQuOgoKICAgKGop
IFdoZW4gdGhlIElOU1RBTlRJQVRFIHN0YXRlbWVudCBhYm92ZSBpcyBjb21waWxlZCwgdGhlIGNv
bXBpbGVyCiAgIHdvdWxkIGJlIG9ibGlnZWQgdG8gY2hlY2sgd2hldGhlciBvcGVyYXRvcigrKSBp
cyBhdmFpbGFibGUgZm9yCiAgIG9iamVjdHMgb2YgdGhhdCB0eXBlLCBhbmQgcmVmdXNlIHRvIHBl
cmZvcm0gdGhlIGluc3RhbnRpYXRpb24gaWYKICAgdGhpcyBpcyBub3QgdGhlIGNhc2UuIFNvbWUg
YWRkaXRpb25hbCBzeW50YXggd2lsbCBiZSBuZWVkZWQgYXMgaW5wdXQKICAgZm9yIHRoZSBjb21w
aWxlciwgbGlrZQoKICAgUkVRVUlSRQogICAgIElOVEVSRkFDRSBPUEVSQVRPUigrKQogICAgICAg
VFlQRShUKSBGVU5DVElPTiBwbHVzKHgsIHkpCiAgICAgICAgIFRZUEUoVCksIElOVEVOVChpbikg
OjogeCwgeQogICAgICAgRU5EIEZVTkNUSU9OCiAgICAgRU5EIElOVEVSRkFDRQogICBFTkQgUkVR
VUlSRQogICAKICAgaW4gdGhlIHNwZWNpZmljYXRpb24gcGFydCBvZiB0aGUgY29udGFpbmVyIG1v
ZHVsZS4gSW50ZXJmYWNlcyBpbgogICBSRVFVSVJFIGJsb2NrcyBhcmUgYWx3YXlzIGNvbnNpZGVy
ZWQgdG8gYmUgYWJzdHJhY3QuIFVzaW5nIGFuCiAgIGludHJpbnNpYyB0eXBlIGluIHRoZSBpbnN0
YW50aWF0aW9uIHNob3VsZCBiZSBhY2NlcHRhYmxlLgogICBBbHRlcm5hdGl2ZWx5LCBvbmUgY291
bGQgaW5zdGVhZCByZXF1aXJlIGEgdHlwZS1ib3VuZCBvcGVyYXRvcjoKCiAgIFJFUVVJUkUKICAg
ICBJTlRFUkZBQ0UKICAgICAgIFRZUEUoVCkgRlVOQ1RJT04gcGx1cyh4LCB5KQogICAgICAgICBD
TEFTUyhUKSwgSU5URU5UKGluKSA6OiB4LCB5CiAgICAgICBFTkQgRlVOQ1RJT04gICAgICAgICAK
ICAgICBFTkQgSU5URVJGQUNFCiAgICAgVFlQRSA6OiBUCiAgICAgQ09OVEFJTlMKICAgICAgIEdF
TkVSSUMgT1BFUkFUT1IoKykgPT4gUFJPQ0VEVVJFKHBsdXMpCiAgICAgICAhIGF2b2lkIHJlcXVp
cmluZyBhIHR5cGUtYm91bmQgcHJvY2VkdXJlCiAgICAgRU5EIFRZUEUKICAgRU5EIFJFUVVJUkUK
CiAgIFRoaXMgd291bGQgbGlrZWx5IGV4Y2x1ZGUgdGhlIHVzZSBvZiBhbiBpbnRyaW5zaWMgdHlw
ZSBpbiB0aGUKICAgaW5zdGFudGlhdGlvbiAoZHVlIHRvIHRoZSBwb2x5bW9ycGhpYyBkdW1teSBh
cmd1bWVudCkuIEl0IHdvdWxkCiAgIGJlIG9ibGlnYXRvcnkgdGhhdCBvbmUgb2YgdGhlIHR3byBh
Ym92ZSByZXF1aXJlbWVudCBibG9ja3MgYXJlCiAgIHByZXNlbnQuCgooQikgc2Vjb25kLWxldmVs
IGdlbmVyaWMgcHJvY2VkdXJlCgogICBUbyBleHRlbmQgdGhlIE1BWCBpbnRyaW5zaWMgKGZvciB0
d28gYXJndW1lbnRzKSB0byBhcmd1bWVudHMgb2YKICAgYW55IHR5cGUsIGEgY29udGFpbmVyIG1v
ZHVsZSBwcm9jZWR1cmUgY291bGQgYmUgZGVub3RhdGVkIChpdGVtIDEuKQogICBsaWtlCgogICBQ
UkVNT0RVTEUgZXh0ZW5kX2ludHIoVCkKICAgICAuLi4KICAgQ09OVEFJTlMKICAgICBUWVBFKFQp
IEZVTkNUSU9OIG1heCAoIHgsIHkgKQogICAgICAgVFlQRShUKSwgSU5URU5UKGluKSA6OiB4LCB5
CiAgICAgICBJRiAoIHggPCB5ICkgVEhFTgogICAgICAgICBtYXggPSB5CiAgICAgICBFTFNFCiAg
ICAgICAgIG1heCA9IHgKICAgICAgIEVORCBJRgogICAgIEVORCBGVU5DVElPTgogICBFTkQgUFJF
TU9EVUxFCgogICBGb2xsb3dpbmcgaXRlbSA0LiwgcmVxdWlyZW1lbnRzIG9uIHRoZSBleGlzdGVu
Y2Ugb2YgdGhlIGNvbXBhcmlzb24KICAgb3BlcmF0b3IoPCkgYW5kIHBvc3NpYmx5IHRoZSBhc3Np
Z25tZW50KD0pIHdvdWxkIGJlIG5lZWRlZCBpbiB0aGUKICAgc3BlY2lmaWNhdGlvbiBwYXJ0LiBU
aGUgaW5zdGFudGlhdGlvbiBhY2NvcmRpbmcgdG8gaXRlbSAyLiwgd2hpY2gKICAgYXV0b2dlbmVy
YXRlcyBhIGdlbmVyaWMgaW50ZXJmYWNlIGZvciBNQVgsIGNvdWxkIHRoZW4gYmUgdXNlZAogICAo
aXRlbSAzLikgbGlrZQoKICAgVVNFIGV4dGVuZF9pbnRyKHNvbWV0eXBlKQogICB0eXBlKHNvbWV0
eXBlKSA6OiB4eCwgeXksIHp6CiAgIC4uLgoKICAgenogPSBtYXggKHh4LCB5eSkKICAgCiAgIAoo
QykgbXVsdGlwbGUgdHlwZSBwYXJhbWV0ZXJzCgogICBHaXZlbiBhbiBhYnN0cmFjdCB0eXBlIHdp
dGggYSBkZWZlcnJlZCB0eXBlLWJvdW5kIHByb2NlZHVyZSBhbmQKICAgdGhlIG5lZWQgdG8gY3Jl
YXRlIGl0cyBleHRlbnNpb25zIGFuZCBvdmVycmlkaW5nIFRCUHMgd2l0aCBhCiAgIHVuaWZvcm0g
YWxnb3JpdGhtLCBnZW5lcmljIGNvZGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgbWlnaHQgYmUgdXNl
ZAogICAoaXRlbSAxLik6CgogICBQUkVNT0RVTEUgYXV0b190YnBfY29udGFpbmVyKFQsIFUpCiAg
ICAgVVNFIG1vZF9iYXNlICAgICAgICAgICAgICAgICAgICAgISBhY2Nlc3MgYWJzdHJhY3QgdHlw
ZSAiYmFzZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIGZyb20gbW9k
dWxlICJtb2RfYmFzZSIKICAgICAKICAgICBVU0UgZXh0ZW5kX2ludHIoVSkgICAgICAgICAgICAg
ICAhIGFjY2VzcyBwcmVtb2R1bGUgZXh0ZW5kX2ludHIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAhIGZhY2lsaXRpZXMgaW4gZXh0ZW5kX2ludHIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAhIGltcGxpY2l0bHkgYmVjb21lIHJlcXVpcmVtZW50cwoJ
CQkJICAgICAgISBpbiB0aGlzIHByZW1vZHVsZS4KCQkJCSAgICAgICEgaW4gYW4gaW5zdGFudGlh
dGlvbiwgdGhlCgkJCQkgICAgICAhIHVzZSBhc3NvY2lhdGlvbnMgYXJlIGNvbnZlcnRlZAoJCQkJ
ICAgICAgISB0byByZWd1bGFyIG1vZHVsZSBVU0Ugc3RtdHMuCgogICAgIElNUExJQ0lUIG5vbmUK
CiAgICAgVFlQRSwgRVhURU5EUyhiYXNlKSA6OiBjb250YWluZXIoVCwgVSkKICAgICAgIFRZUEUo
VCksIEFMTE9DQVRBQkxFIDo6IHQoOikKICAgICAgIFRZUEUoVSkgOjogdQogICAgIENPTlRBSU5T
CiAgICAgICBQUk9DRURVUkUgOjogcCA9PiBwX2NvbnRhaW5lciAgISBvdmVycmlkZXMgZGVmZXJy
ZWQgcAogICAgIEVORCBUWVBFCiAgIENPTlRBSU5TCiAgICAgU1VCUk9VVElORSBwX2NvbnRhaW5l
cih0aGlzLCBvdCwgLi4uKQogICAgICAgQ0xBU1MoY29udGFpbmVyKFQsVSkpIDo6IHRoaXMKICAg
ICAgIFRZUEUoVCkgOjogb3QoOikKICAgICAgIC4uLgogICAgICAgVFlQRShVKSA6OiBhLCBiCiAg
ICAgICAuLi4KICAgICAgIEFMTE9DQVRFKHRoaXMldCwgU09VUkNFPW90KQogICAgICAgYSA9IC4u
LjsgYiA9IC4uLgogICAgICAgdGhpcyV1ID0gbWF4KGEsIGIpICAgICAgICAgICAgICEgZXh0ZW5k
ZWQgTUFYIGZyb20gKEIpIGFib3ZlCiAgICAgICAuLi4KICAgICBFTkQgU1VCUk9VVElORQogICBF
TkQgUFJFTU9EVUxFCgogICBJbnN0YW50aWF0aW9uIGFjY29yZGluZyB0byBpdGVtIDIuIHdvdWxk
IHJlcXVpcmUgYSBzZXF1ZW5jZSBsaWtlCgogICBJTlNUQU5USUFURShleHRlbmRfaW50cih0eXBl
X2IpKQogICAuLi4KICAgSU5TVEFOVElBVEUoYXV0b190YnBfY29udGFpbmVyKHR5cGVfYSwgdHlw
ZV9iKSkKCiAgIGluIG9yZGVyIHRvIHNhdGlzZnkgdGhlIHNlY29uZCBVU0Ugc3RhdGVtZW50IGlu
IHRoZSBhYm92ZSBjb2RlLgogICAKICAgVG8gYXZvaWQgZHVwbGljYXRlIGluc3RhbnRpYXRpb25z
LCBhIHJlcXVpcmVtZW50IGlzIGxpa2VseSBuZWVkZWQKICAgdGhhdCBhbGwgZ2VuZXJpYyBjb250
YWluZXIgdHlwZXMgYW5kIGFsbCAocHVibGljLCBpZiBwcml2YXRlIGlzCiAgIHBvc3NpYmxlIGF0
IGFsbCkgcHJvY2VkdXJlIGludGVyZmFjZXMgbXVzdCByZWZlcmVuY2UgYWxsCiAgIHBhcmFtZXRl
cnMgb2YgYSBwcmVtb2R1bGUuCiAgIEFzIGEgY29uc2VxdWVuY2UsIGxheWVyaW5nIG9mIE4rMS1w
YXJhbWV0ZXIgcHJlbW9kdWxlcyBvbiB0b3Agb2YKICAgMSwuLi4sTi1wYXJhbWV0ZXIgcHJlbW9k
dWxlcyBtdXN0IGJlIHBvc3NpYmxlLCBhcyBpbGx1c3RyYXRlZCBieQogICB0aGlzIGV4YW1wbGUu
CgooRCkgaW50ZWdyYXRpb24gb2YgcGFyYW1ldGVyaXplZCBkYXRhIHR5cGVzCgogICBCZWNhdXNl
IHRoZSB0eXBlLXNwZWMgdGhhdCBhcHBlYXJzIGluIG1hbnkgY29udGV4dHMgcmVxdWlyZXMgdGhl
CiAgIHF1YWxpZmljYXRpb24gb2YgYm90aCBLSU5EIGFuZCBMRU4gcGFyYW1ldGVyIHZhbHVlcyAg
KGVzcGVjaWFsbHksCiAgIGFsbG9jYXRpb24gYW5kIGR1bW15IGFyZ3VtZW50IHNwZWNzKSwgaXQg
YXBwZWFycyB0byBtZSB0aGF0IG9ubHkgYQogICBsaW1pdGVkIGZvcm0gb2YgaW50ZWdyYXRpb24g
Y2FuIGJlIGFjaGlldmVkIHdpdGhvdXQgc2lnbmlmaWNhbnQKICAgYWRkaXRpb25hbCBlZmZvcnQu
IE5vdCBlbnRpcmVseSB1bmV4cGVjdGVkbHksIHRoaXMgYXJlYSBhZ2FpbiBtYXkKICAgY2F1c2Ug
dGhlIGJpZ2dlc3QgaGVhZGFjaGVzIC4uLiBhcGFydCBmcm9tIGJlaW5nIGNvbnRyb3ZlcnNpYWwu
CgogICBJbiBvcmRlciB0byBpbnN0YW50aWF0ZSBhIGNvbnRhaW5lciBtb2R1bGUgbW9kX3BhciB3
aXRoIGEKICAgcGFyYW1ldGVyaXplZCBkZXJpdmVkIHR5cGUsIHNheQoKICAgVFlQRSA6OiBwcChp
LCBsKQogICAgIElOVEVHRVIsIEtJTkQgOjogaSA9IDEKICAgICBJTlRFR0VSLCBMRU4gOjogbAog
ICBFTkQgVFlQRQogICAuLi4KICAgSU5TVEFOVElBVEUoIG1vZF9wYXIocHAoaT0yKSkgKQogICBJ
TlNUQU5USUFURSggbW9kX3BhcihwcChpPTMpKSApCiAgIElOU1RBTlRJQVRFKCBtb2RfcGFyKHBw
KSApICAgICAgISBvbmx5IGlmICVpIGlzIGRlZmF1bHQgaW5pdGlhbGl6ZWQKCiAgIHRoZSBwcmVt
b2R1bGUgd291bGQgbmVlZCB0byBzcGVjaWZ5IHN1aXRhYmxlIHJlcXVpcmVtZW50czoKCiAgIFBS
RU1PRFVMRSBtb2RfcGFyKFQpCiAgICAgUkVRVUlSRQogICAgICAgLi4uICAgICAgICAgICAgICAg
ICAgICAhIHNlZSBiZWxvdwogICAgICAgVFlQRSA6OiBUKGksIGwpICAgICAgICAhIG5hbWUgYW5k
IG9yZGVyIGZpeGVkCiAgICAgICAgIElOVEVHRVIsIEtJTkQgOjogaQoJIElOVEVHRVIsIExFTiA6
OiBsCiAgICAgICBFTkQgVFlQRQogICAgIEVORCBSRVFVSVJFCiAgIEVORCBQUkVNT0RVTEUKCiAg
IFRoZSBlbnRpdHkgVCBjb3VsZCBhcHBlYXIgYXMgYSB0eXBlIGNvbXBvbmVudCBpbiBhIGdlbmVy
aWMKICAgY29udGFpbmVyIHR5cGUgZGVjbGFyYXRpb24sIG9yIGFzIGEgZHVtbXkgYXJndW1lbnQg
aW4gYQogICBwcm9jZWR1cmUgaW50ZXJmYWNlLiBJZiBzdXBwb3J0IGZvciBub25hbGxvY2F0YWJs
ZS9ub25wb2ludGVyCiAgIHR5cGUgY29tcG9uZW50cyBpcyBkZXNpcmVkLCBpdCB3b3VsZCBiZSBu
ZWNlc3NhcnkgdG8gYWxzbyBhbGxvdwogICBpbnRlZ2VyIHBhcmFtZXRlcnMsIHNheQoKICAgUFJF
TU9EVUxFIG1vZF9wYXIoVCwgTEspCiAgICAgUkVRVUlSRQogICAgICAgSU5URUdFUiwgUEFSQU1F
VEVSIDo6IExLCiAgICAgICAuLi4gISBzYW1lIGFzIGFib3ZlCiAgICAgRU5EIFJFUVVJUkUKICAg
ICAKICAgICBUWVBFLCBHRU5FUklDIDo6IHBhcl9jb250YWluZXIoVCwgTEspCiAgICAgICBUWVBF
KFQoaT1UJWksbD1MSykgOjogeQogICAgICAgLi4uCiAgICAgRU5EIFRZUEUgCiAgIEVORCBQUkVN
T0RVTEUKICAgICAKICAgT3RoZXJ3aXNlLCBMRU4gdHlwZSBwYXJhbWV0ZXJzIHJlbWFpbiB1bmRl
dGVybWluZWQgYXQgY29tcGlsZSB0aW1lCiAgIChsPTogb3IgbD0qKS4KCiAgIER1bW15IGFyZ3Vt
ZW50cyBvZiBhIHNlY29uZC1sZXZlbCBnZW5lcmljIHByb2NlZHVyZSB3b3VsZCBzaW1pbGFybHkK
ICAgbmVlZCB0byBiZSBkZWNsYXJlZCBsaWtlCgogICBUWVBFKFQoaT1UJWksIEw9KikpIDo6IGQx
CiAgIFRZUEUoVChpPVQlaSwgTD06KSksIEFMTE9DQVRBQkxFIDo6IGQyCiAgIFRZUEUoVChpPVQl
aSwgTD0qKSksIFBPSU5URVIgOjogZDMKICAgVFlQRShUKGk9VCVpLCBMPUxLKSkgOjogZDQgICAg
ISBpZiBpbnRlZ2VyIHBhcmFtZXRlcnMgYXJlIHN1cHBvcnRlZAogICAKICAgVXNpbmcgdGhlIGlu
c3RhbnRpYXRpb24gdGhyb3VnaAoKICAgVVNFIG1vZF9wcAogICBVU0UgbW9kX3BhcihwcChpPTIp
KSAgISBvbmx5IEtJTkQgcGFyYW1zIHJlcXVpcmVkCiAgIFVTRSBtb2RfcGFyKHBwKGk9MykpICAK
CiAgIHdvdWxkIG5vdyBwZXJtaXQgY3JlYXRpbmcgb2JqZWN0cyBvZiB0eXBlIHBhcl9jb250YWlu
ZXIsCgogICBUWVBFKHBhcl9jb250YWluZXIocHAoaT0yKSkpIDo6IHhjICEgb25seSBLSU5EIHBh
cmFtcyByZXF1aXJlZAoKICAgb3IsIGlmIHN1cHBvcnQgZm9yIGludGVnZXIgcGFyYW1ldGVycyBp
cyBzdXBwbGllZAoKICAgVFlQRShwYXJfY29udGFpbmVyKFQ9cHAoaT0yKSwgTEs9MTUpIDo6IHhj
CgogICBUaGUgbGltaXRhdGlvbnMgYXQgbWluaW11bSBhcmU6CiAgIAogICAqIFBEVHMgYXJlIG5v
dCB1c2FibGUgaW4gY29udGFpbmVyIG1vZHVsZXMgdGhhdCBkbyBub3QgaGF2ZQogICAgIHR5cGUg
cGFyYW1ldGVycyBpbiB0aGVpciByZXF1aXJlbWVudHMgKGFuZCB0aGUgY29udmVyc2UpLAogICAq
IGNvbnRhaW5lciBtb2R1bGUgY29kZSBjYW5ub3QgYmUgcmV1c2VkIGZvciB0eXBlIGV4dGVuc2lv
bnMKICAgICB0aGF0IGFkZCBhZGRpdGlvbmFsIHR5cGUgcGFyYW1ldGVycwoKCgoKICAgCgoKICAg
CiAKCiAgIAoKICAgCiAgCg==

--_002_2b40b5da47404caaa3cbd5bd344383d7lrzde_--
