From dev-return-2063-archive-asf-public=cust-asf.ponee.io@plc4x.apache.org Mon Apr 29 08:49:24 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id 64D3218061A for ; Mon, 29 Apr 2019 10:49:24 +0200 (CEST) Received: (qmail 10990 invoked by uid 500); 29 Apr 2019 08:49:23 -0000 Mailing-List: contact dev-help@plc4x.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@plc4x.apache.org Delivered-To: mailing list dev@plc4x.apache.org Received: (qmail 10978 invoked by uid 99); 29 Apr 2019 08:49:23 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2019 08:49:23 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id B10F9C0667 for ; Mon, 29 Apr 2019 08:49:22 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.003 X-Spam-Level: X-Spam-Status: No, score=-0.003 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=cwareitservice.onmicrosoft.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id XH26Ar0HZrwf for ; Mon, 29 Apr 2019 08:49:18 +0000 (UTC) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20109.outbound.protection.outlook.com [40.107.2.109]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 45BEF5F33E for ; Mon, 29 Apr 2019 08:49:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CWareITService.onmicrosoft.com; s=selector1-cware-de0c; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S1xB4Wc8BXrJbb66t+FKpWECnF02rhbWw9ZekBm+Szg=; b=EYXFzsfWEVIDxx8IbFUbYkJCEDvMLRbCqU2oVqVf22DrhxOAXZzhC0rLVpC4mglw6x53/6IAo7T028Qvyw0mwJ3zlFmFqLY5H7uy7CD32EuwedoMdcvwA87ggC+NcTBoz9eSOF2XPYR97NGfjEI0/4gJVfJUDrrKZkvJMpxBAk4= Received: from VI1PR0502MB3663.eurprd05.prod.outlook.com (52.134.7.149) by VI1PR0502MB4029.eurprd05.prod.outlook.com (52.134.18.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.15; Mon, 29 Apr 2019 08:49:11 +0000 Received: from VI1PR0502MB3663.eurprd05.prod.outlook.com ([fe80::6022:24ee:738a:e7c2]) by VI1PR0502MB3663.eurprd05.prod.outlook.com ([fe80::6022:24ee:738a:e7c2%4]) with mapi id 15.20.1835.018; Mon, 29 Apr 2019 08:49:11 +0000 From: Christofer Dutz To: "dev@plc4x.apache.org" Subject: Re: [generation] Another approach to generated drivers Thread-Topic: [generation] Another approach to generated drivers Thread-Index: AQHU/lOiSrqhloPFc06inb+mxaSYYaZSs6yAgAA13oCAAAgrgIAAA/0A Date: Mon, 29 Apr 2019 08:49:10 +0000 Message-ID: References: <307CA7F4-53FC-42FC-8429-F2617086CD82@pragmaticminds.de> <14869D64-0124-454A-A479-5044FB759E7F@c-ware.de> <4DE6CACD-350C-4127-91E6-43C0DDAD8A8E@pragmaticminds.de> In-Reply-To: <4DE6CACD-350C-4127-91E6-43C0DDAD8A8E@pragmaticminds.de> Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=christofer.dutz@c-ware.de; x-originating-ip: [217.110.130.19] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b61ebcf2-df5e-45ee-e42a-08d6cc7f8c87 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(7168020)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7027125)(7023125)(5600141)(711020)(4605104)(2017052603328)(7193020);SRVR:VI1PR0502MB4029; x-ms-traffictypediagnostic: VI1PR0502MB4029: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0022134A87 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39830400003)(376002)(396003)(346002)(136003)(366004)(189003)(199004)(53234004)(53754006)(33656002)(6916009)(102836004)(6436002)(76176011)(5640700003)(2351001)(6486002)(186003)(256004)(14444005)(6512007)(25786009)(6306002)(81156014)(7736002)(74482002)(26005)(3846002)(1730700003)(6116002)(66066001)(305945005)(81166006)(75402003)(561944003)(8936002)(36756003)(587094005)(8676002)(508600001)(966005)(14454004)(316002)(66446008)(6246003)(53386004)(76116006)(91956017)(73956011)(66946007)(64756008)(66556008)(66476007)(53936002)(6506007)(53546011)(55236004)(97736004)(2906002)(99286004)(82746002)(68736007)(71200400001)(71190400001)(83716004)(86362001)(93886005)(476003)(446003)(11346002)(486006)(2501003)(2616005)(5660300002)(44832011)(229853002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0502MB4029;H:VI1PR0502MB3663.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: c-ware.de does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 5J/jjk/xDl1am8I+57V8Vwyyiyym3cpsh7S5sAkzXa2Olg20aUtg84oMOUQealBBHVrUFqAfcLPQeIohYZ8E1EpnGe21RDTajCQ3sxR6CPtmpsuoD+0XvbloyUVIX/Qrm717uC3nJ6jHcofTZs72JY+uZ6ZEgOzNW/kT4CtQoJ44DVMIfmsXerlZCTj435KKLOSzXJS1dqOqq/M41ovYHtv/0pV25Xjlw5qnGG1rynVjUAS/Zp0AAfWv2W65fG0YJsxAL1yYQlZ74M5WjxuyBR+zMNVgMuRk2fnjefJonuOaZPl+v5kPDtp4i2FPaAKc07nTYNad8xzeEQEt7/Wqb93YLzSNjH8x6xjgZhQZAGU8ZPQroWmhRdJWWiz5i9vJy5NWkKaLcMUuxX6ySMFjTHm0pPlttcvtJrqtwkQPki4= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: c-ware.de X-MS-Exchange-CrossTenant-Network-Message-Id: b61ebcf2-df5e-45ee-e42a-08d6cc7f8c87 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2019 08:49:10.9432 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9d387546-1437-4b89-846c-691d64a7e74d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0502MB4029 SGkgSnVsaWFuLA0KDQpJJ20gdG90YWxseSBmaW5lIHdpdGggdGhhdCA7LSkNCg0KQ2hyaXMNCg0K DQoNCg0K77u/QW0gMjkuMDQuMTksIDEwOjQzIHNjaHJpZWIgIkp1bGlhbiBGZWluYXVlciIgPGou ZmVpbmF1ZXJAcHJhZ21hdGljbWluZHMuZGU+Og0KDQogICAgSGkgQ2hyaXMsDQogICAgSGkgTmlj bGFzLA0KICAgIA0KICAgIEBOaWNsYXM6DQogICAgQmFzaWNhbGx5IENocmlzIGFuc3dlcmVkIGFs bCB0aG9zZSBxdWVzdGlvbnMgYXMgSSB3b3VsZC4gSSBhbHNvIGxvb2tlZCBhdCBNZXRhIExhbmd1 YWdlcyBsaWtlIEhheGUgYnV0IHRoZXJlIHVzdWFsbHkgd2hlcmUgc29tZSBkcmF3YmFja3MuDQog ICAgQnV0IHdoYXQgd2UgZGlzY3Vzc2VkIHdhcyB0aGUgaWRlYSB0byBnZW5lcmF0ZSB0aGUgRFNM IG9yIHRoZSBBU1QgZnJvbSBweXRob24gY29kZSAodmVyeSBsaW1pdGVkIHB5dGhvbiBjb2RlKSwg c28gdGhhdCBvdXIgRFNMIHdvdWxkIGJlIGVxdWl2YWxlbnQgdG8gYSBzdWJzZXQgb2YgUHl0aG9u ICh3aGljaCB3b3VsZCBhbGxvdyBlYXN5IGFuZCBlZmZpY2llbnQgZGVidWdnaW5nIGFuZCBzdWNo KS4NCiAgICANCiAgICBAQ2hyaXM6DQogICAgSSB3cm90ZSB0aGlzIGVtYWlsIHJhdGhlciBsb25n aXNoIHRvIGVuc3VyZSwgdGhhdCB5b3UgZG9u4oCZdCBnZXQgbWUgd3JvbmcuIEkgc2VlIGJvdGgg YXBwcm9hY2hlcyBzaW1wbHkgYXMgdHdvIGNvbnRlbmRlcnMgZm9yIHRoZSBiZXN0IG9uZSwgYW5k IGluZGVlZCB3ZSBzaG91bGQgZXZvbHZlIGJvdGggYW5kIHRoZW4gZGlzY3VzcyAoYW5kIGZpbmFs bHkgVk9URSkgd2hpY2ggcm91dGUgdG8gZm9sbG93LCB0aGlzIGlzIHRoZSB3YXkgdG8gZG8gaXQu DQogICAgQW5kIHJlZ2FyZGluZyB0aGUgImluLWJldHdlZW4iIEkgYWdyZWUgd2l0aCB5b3UuIEkg Y2FuIGltYWdpbmUgdGhhdCBERkRMIGlzIHRoZSB3YXkgdG8gZ28gZm9yIHRoZSBtZXNzYWdlcyBh bmQgdHlwZXMgYW5kIHRoYXQgd2UgcmVwbGFjZSB0aGUgU0NYTUwgd2l0aCBzb21ldGhpbmcgd2hp Y2ggY29tZXMgb3V0IG9mIG91ciBhcHByb2FjaC4NCiAgICBBbmQgd2l0aCAiaGVhZCBleHBsb2Rp bmciIHdlIGRpZCBub3QgbWVudGlvbiBzb21lIG9mIHlvdXIgd29ya3MgYnV0IHNpbXBseSB0aGUg dGhvdWdodCB0byBkZXZlbG9wIGEgU0NYTUwgZGVzY3JpcHRpb24gb2YgYSBjb21wbGV4IHByb3Rv Y29sLCBzbyBwbGVhc2UgZG9u4oCZdCB0YWtlIHRoaXMgYXMgYW55IG9mZmVuY2UuDQogICAgDQog ICAgVG8gdGhlIHR3byBvdGhlciBzdGF0ZW1lbnRzLi4uIEkgZG8gbm90IHdhbnQgdG8gY291cGxl IHByb2plY3Qgc3R1ZmYgd2l0aCBzdHVkZW50cyB3b3JrIGl0cyBqdXN0IGEgcG9zc2liaWxpdHkg dG8gZXhwbG9yZSB0aGluZ3MgbW9yZSBpbiBkZXB0aCBhbmQgZS5nLiBkZXZlbG9wIHNvbWUgdG9v bGluZyB3aGljaCBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBuaWNlIHRvIGhhdmUuDQog ICAgDQogICAgQW5kIGZvciB0aGUgcHJpdmF0ZSBSZXBvLi4uIEl0IGFsc28gZmVsdCB3cm9uZyBm b3IgbWUgdG8gd3JpdGUgdGhpcy4gQW5kIHN0cmljdGx5IHNwZWFraW5nIGl0cyBub3QgYSBQTEM0 WCBQYXBlciBidXQgYSBQYXBlciB3aGljaCAidGFsa3MgYWJvdXQiIFBMQzRYLiBUaGUgbWFpbiBy ZWFzb24gZm9yIHRoZSBwcml2YXRlIHJlcG8gYXJlIGxpY2Vuc2UgY29uY2VybnMgYXMgdGhlIGF1 dGhvcnMgdXN1YWxseSBoYXZlIHRvIGhhbmQgb3ZlciBzZXZlcmFsIHJpZ2h0cyB0byB0aGUgUHVi bGlzaGVyIHdoaWNoIHdvdWxkIG5vdCBiZSBwb3NzaWJsZSBpbiBjYXNlIG9mIHRoZSBBcGFjaGUg TGljZW5zZS4gWW91IGRvbuKAmXQgaGF2ZSB0byBsaWtlIHRoYXQgYnV0IHRoYXTigJlzIGhvdyBp dCB3b3Jrcy4NCiAgICBDdXJyZW50bHksIEkgc2VlIGl0IGFzIGFuIHJlc2VhcmNoIGVuZ2FnZW1l bnQgb2YgTWF0dGhpYXMgYW5kIG15c2VsZiBidXQgd2FudCB0byBpbnZpdGUgZXZlcnlib2R5IHRv IHBhcnRpY2lwYXRlIGJ1dCAoYWxzbyBmb3IgdGhlIHJlYXNvbiBhYm92ZSkgd291bGQgbm90IG1h a2UgaXQgYSBjZW50cmFsIGNvbmNlcm4gb2YgdGhlIHByb2plY3QuDQogICAgDQogICAgSSBob3Bl IHlvdSBjYW4gYWdyZWUgb24gdGhhdD8NCiAgICANCiAgICBKdWxpYW4NCiAgICANCiAgICBBbSAy OS4wNC4xOSwgMTA6MDUgc2NocmllYiAiQ2hyaXN0b2ZlciBEdXR6IiA8Y2hyaXN0b2Zlci5kdXR6 QGMtd2FyZS5kZT46DQogICAgDQogICAgICAgIEhpIEFsbCwNCiAgICAgICAgDQogICAgICAgIHRv IGFuc3dlciBOaWNsYXMnIHF1ZXN0aW9uIGZpcnN0IC4uLiB5ZXMgYSBsb3Qgb2YgdG9vbHMgYWxs b3cgd3JpdGluZyBjb2RlIGluIGZvciBleGFtcGxlIEphdmEgYW5kIGhhdmUgdGhhdCBjb21waWxl ZCB0byBjLWxpa2UgcHJvZ3JhbXMuDQogICAgICAgIEkgaGFkIGEgbG9vayBhdCBhIGxvdCBvZiB0 aGVzZSBvcHRpb25zIGJlZm9yZSBzdGFydGluZyB0byB3b3JrIG9uIFBMQzRYIGFuZCBjb250aW51 ZWQgc2luY2UgdGhlbi4gDQogICAgICAgIA0KICAgICAgICBJIHdhcyBuZXZlciBxdWl0ZSBoYXBw eSB3aXRoIHRoZSByZXN1bHRzLiBXaGlsZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIG9yaWdpbmFs IGlzIC4uLiB3ZWxsIC4uLiAxMDAlIHlvdSB1c3VhbGx5IGhhdmUgZ3JlYXQgbG9zc2VzIG9uIHRo ZSBjcm9zcyBjb21waWxlZCBvdXRwdXRzLiBBbHNvIHRoZXJlIGlzIHRoZSBwcm9ibGVtIHRoYXQg dGhlIGNyb3NzLWNvbXBpbGVkIHZlcnNpb24gdXN1YWxseSBuZWVkcyBxdWl0ZSBhIGxvdCBtb3Jl IHJlc291cmNlcyBhcyB0aGUgb3JpZ2luYWwgYW5kIGVzcGVjaWFsbHkgYXMgdGhlIG5hdGl2ZSBp bXBsZW1lbnRhdGlvbi4NCiAgICAgICAgDQogICAgICAgIEZvciBleGFtcGxlIHdoZW4gd3JpdGlu ZyBSYXctU29ja2V0IGNvZGUgaW4gamF2YSwgd2UgdXNlIHNvbWUgZXh0cmEgaG9vcHMgdG8gZG8g c28sIGluIEMsIEMrKywgQyMgKG1heWJlIGV2ZW4gcHl0aG9uKSB3ZSBjb3VsZCBkaXJlY3RseSB1 c2UgdGhlIG5ldHdvcmsgaGFyZHdhcmUuIFNvIGRlcGVuZGluZyBvbiB0aGUgbGFuZ3VhZ2UgeW91 IHVzZSBhbmQgdGhlIHBsYXRmb3JtIHlvdSBidWlsZCBmb3IgdGhlIGRyaXZlcnMgY291bGQgYmUg cXVpdGUgZGlmZmVyZW50LiANCiAgICAgICAgDQogICAgICAgIEFuZCByZWdhcmRpbmcgdGhlIEFQ STogV2Ugd291bGQgYmUgdHJhbnNsYXRpbmcgYW4gQVBJIG9mIG9uZSBsYW5ndWFnZSB0byBvdGhl cnMgLi4uIHdoYXQgd291bGQgd2UgdXNlIGZvciBDIHN1cHBvcnQ/IE1hcHBpbmcgSmF2YSB0byBD IGlzbid0IHRyaXZpYWwgYW5kIHRoZSByZXN1bHQgd291bGQgYmUgcXVpdGUgZXZpbCBsb29raW5n LCBJIGJldC4gVGhlIHdheSB3ZSB3ZXJlIGN1cnJlbnRseSBwbGFubmluZyBvbiBkb2luZyB0aGlu Z3MsIHdvdWxkIGJlIHRvIG1hbnVhbGx5IGltcGxlbWVudCBhbiBBUEkgbW9kdWxlIHRoYXQgcGVy ZmVjdGx5IGZpdHMgZm9yIHRoZSBsYW5ndWFnZSB3ZSBhcmUgdGFyZ2V0aW5nIGFuZCB0byBnZW5l cmF0ZSB0aGUgZHJpdmVycyBmb3IgdGhhdCBsYW5ndWFnZS4NCiAgICAgICAgDQogICAgICAgIFJl Z2FyZGluZyBKdWxpYW4ncyBwcm9wb3NhbDoNCiAgICAgICAgV2VsbCBpZiB5b3Ugd291bGRuJ3Qg YmUgc3Bhd25pbmcgbmV3IGluaXRpYXRpdmVzIHRoYXQgYmluZCBtZSB3aXRoIHByZXBhcmluZyB0 aGUgYnVpbGQgYWxsIHRoZSB0aW1lLCBJIHdvdWxkIGhhdmUgYSBjaGFuY2UgdG8gYWN0dWFsbHkg d29yayBvbiBteSBwcm9wb3NhbCA7LSkgKEhhdmVuJ3Qgd29ya2VkIG9uIHRoYXQgZm9yIHdlZWtz KSANCiAgICAgICAgDQogICAgICAgIEFsc28gZGlkbid0IEkgZXZlciBoYXZlIHRoZSBjaGFuY2Ug dG8gZXhwbGFpbiBpdCB0byBhbnlvbmUgeWV0LCBzbyBjYWxsaW5nIGl0IGEgIm1pbmQgZGV0b25h dG9yIiBpcyBhIGxpdHRsZSB1bmZhaXIsIGNhdXNlIEkgdGhpbmsgaXQncyBhIGxvdCBzaW1wbGVy IHRoYW4gb3VyIGN1cnJlbnQgaGFuZC13cml0dGVuIGRyaXZlcnMuIEkgZG8gYWdyZWUgdGhhdCBh IHNwZWNpYWxseSBoYW5kLWNyYWZ0ZWQgYW5kIHdlbGwgaW1wbGVtZW50ZWQgRFNMIGZvciBleGFj dGx5IHRoaXMgdXNlLWNhc2Ugd2lsbCBwcm9iYWJseSBiZSBlYXNpZXIsIGJ1dCB5b3Ugd291bGQg aGF2ZSB0byBpbXBsZW1lbnQgdGhlIERTTCBmaXJzdCBhbmQgdGhlbiB0aGUgdG9vbGluZyAoS2Vl cCBpbiBtaW5kIHdpdGggRGFmZm9kaWwvREZETCB3ZSBnZXQgYSBmdWxsIGJsb3duIHRvb2xraXQg dG8gd3JpdGUgdW5pdC10ZXN0cyBhbmQgZG9jdW1lbnQgdGhlIHByb3RvY29sKS4gSSB3YXMgdHJ5 aW5nIHRvIHVzZSwgd2hhdCdzIGFscmVhZHkgb3V0IHRoZXJlLCBjYXVzZSBJIGtuZXcgdGhhdCBp bnZlbnRpbmcgc29tZXRoaW5nIHRoYXQgYWNoaWV2ZXMgOTAlIG9mIHdoYXQgeW91IGFyZSBkb2lu ZyBpcyBzdXBlci1lYXN5LCBob3dldmVyIHRvIGdldCB0byAxMDAlIHlvdSBuZWVkIHRvIHB1dCBp biBncmVhdCBlZmZvcnRzLg0KICAgICAgICANCiAgICAgICAgSSB3b3VsZCBiZSB0aGUgbGFzdCB0 byBvYmplY3QgaW4gZ2VuZXJhbCwgYnV0IEkgd291bGRuJ3Qgd2FudCB0byByZWx5IG9uIGEgc3R1 ZGVudCBwcm9qZWN0IHdoZXJlIHdlIGhhdmUgdG8gd2FpdCB0aWxsIHNvbWVvbmUgZWxzZSBmaW5p c2hlcyBzb21ldGhpbmcgYW5kIGhvcGUgdGhhdCBoZSBkb2VzLiBFc3BlY2lhbGx5IGlmIHRoZSBr ZXktcGVyc29uIGluIGNoYXJnZSBvZiB0aGlzIGluaXRpYXRpdmUgc2VlbXMgdG8gaGF2ZSBncmVh dCBwcm9ibGVtcyBjb21tdW5pY2F0aW5nIG9uIHRoaXMgbGlzdCAoTWUgIndhaXZpbmcgd2l0aCBh IGZlbmNlIHBvbGUiIGhlcmUgOi1QKS4gSSB3b3VsZCBvbmx5IGNhbGwgaXQgYSBQTEM0WCBQYXBl ciwgaWYgaXQncyBhY3R1YWxseSBkb25lIGJ5IGludm9sdmluZyB0aGUgY29tbXVuaXR5IC4uLiBh bmQgZG9pbmcgdGhhdCBpbiBhIHByaXZhdGUgcmVwbyBpc24ndCBxdWl0ZSB0aGUgd2F5IHdlIGRv IHRoaW5ncyBhdCBBcGFjaGUuIFNvIGZvciB0aGlzIHRvIGJlIGEgcmVhbCBBcGFjaGUgaW5pdGlh dGl2ZSAuLi4gZG8gaXQgaW4gcHVibGljIGFuZCBkbyBkaXNjdXNzaW9ucyBvbiB0aGUgbGlzdC4N CiAgICAgICAgDQogICAgICAgIFNvIGlmIEkgZmluYWxseSBtYW5hZ2UgdG8gY2xlYW4gdXAgYW5k IHByZXBhcmUgdGhlIGJ1aWxkIGZvciB0aGUgbXVsdGktbGFuZ3VhZ2UgcGFydCAuLi4gcGxlYXNl IGF0IGxlYXN0IGdpdmUgbWUgdGhlIGNoYW5jZSB0byB3b3JrIG9uIG15IHByb3Bvc2FsIGEgbGl0 dGxlIG1vcmUgYW5kIGF0IGxlYXN0IGV4cGxhaW4gd2hhdCBJIGhhZCBwbGFubmVkLiANCiAgICAg ICAgDQogICAgICAgIEkgd291bGQgc3VnZ2VzdCB5b3Ugd29yayBvbiB0aGUgb3RoZXIgb3B0aW9u IGFuZCB0aGVuIHdlIGxldCB0aGUgY29tbXVuaXR5IGRlY2lkZSB3aGljaCBwYXRoIHRvIHRha2Uu IEkgYW0gcmVhbGx5IGZvbmQgb2YgdGhlIERGREwgcGFydCwgYnV0IG5vdCBzbyBvdmVyd2hlbG1l ZCBieSB0aGUgU0NYTUwgcGFydCBvZiBteSBwcm9wb3NhbC4uLiBwZXJoYXBzIHRoZSBpZGVhbCBz b2x1dGlvbiB3b3VsZCBiZSBzb21ldGhpbmcgaW4tYmV0d2Vlbi4NCiAgICAgICAgDQogICAgICAg IENocmlzDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgQW0gMjkuMDQuMTksIDA4OjUzIHNj aHJpZWIgIk5pY2xhcyBIZWRobWFuIiA8bmljbGFzQGhlZGhtYW4ub3JnPjoNCiAgICAgICAgDQog ICAgICAgICAgICBPdXRzaWRlciBsb29raW5nIGluOyBNYW55IGxhbmd1YWdlIHJ1bnRpbWVzIGFs bG93cyBlbWJlZGRpbmcgb2Ygb3RoZXINCiAgICAgICAgICAgIGxhbmd1YWdlcycgcnVudGltZXMg d2l0aGluLiBTbyB3aHkgbm90IHBpY2sgYSBsYW5ndWFnZXMgdGhhdCBpcyByZWFzb25hYmx5DQog ICAgICAgICAgICBlYXN5IHRvIGludGVncmF0ZSBpbnRvIG90aGVyIGxhbmd1YWdlcywgYW5kIHRo ZW4gd3JpdGUgdGhlIGRyaXZlcnMgaW4gYQ0KICAgICAgICAgICAgZnVsbHkgZmxlZGdlZCBwcm9n cmFtbWluZyBsYW5ndWFnZSwgcmF0aGVyIHRoYW4gdGhlIERGREwgYWJzdHJhY3Rpb24gb3INCiAg ICAgICAgICAgIGNyZWF0aW5nIGEgbmV3IERTTCB3aXRoIGEgd2hvbGUgc2xldyBvZiBjb25zZXF1 ZW5jZXMgbGF0ZXIgb24uDQogICAgICAgICAgICANCiAgICAgICAgICAgIExhbmd1YWdlcyB0aGF0 IG1pZ2h0IGJlIHN1aXRhYmxlOyBKYXZhU2NyaXB0LCBMdWEsIEZvcnRoLCBtaWNyb1B5dGhvbiBv cg0KICAgICAgICAgICAgZXZlbiBDLi4uDQogICAgICAgICAgICANCiAgICAgICAgICAgIE5pY2xh cw0KICAgICAgICAgICAgDQogICAgICAgICAgICBPbiBNb24sIEFwciAyOSwgMjAxOSBhdCAyOjIw IFBNIEp1bGlhbiBGZWluYXVlciA8DQogICAgICAgICAgICBqLmZlaW5hdWVyQHByYWdtYXRpY21p bmRzLmRlPiB3cm90ZToNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPiBIaSBhbGwsDQogICAg ICAgICAgICA+DQogICAgICAgICAgICA+IGp1c3Qgd2FudGVkIHRvIHN1bSB1cCBzb21lIHRhbGtz IGFuZCBkaXNjdXNzaW9ucyB3ZSBoYWQgb2ZmLWxpc3QgYWJvdXQgdGhlDQogICAgICAgICAgICA+ IHdob2xlIHRvcGljIG9mIGRyaXZlciBnZW5lcmF0aW9uIC8gcHJvdmlkaW5nIGRyaXZlcnMgaW4g b3RoZXIgbGFuZ3VhZ2VzLg0KICAgICAgICAgICAgPiBDdXJyZW50bHksIHRoZXJlIGFyZSB0aGUg Zm9sbG93aW5nIHR3byBhcHByb2FjaGVzIGdvaW5nIG9uOg0KICAgICAgICAgICAgPg0KICAgICAg ICAgICAgPiBEcml2ZXIgR2VuZXJhdGlvbiBiYXNlZCBvbiBERkRMIGJ5IENocmlzOg0KICAgICAg ICAgICAgPiBDaHJpcyBhbHJlYWR5IHNoYXJlZCBoaXMgYnJhbmNoIGFuZCBpcyB3b3JraW5nIG9u IHRoZSBnZW5lcmF0aW9uIG9mDQogICAgICAgICAgICA+IGRyaXZlcnMgYmFzZWQgb24gdGhlIHNw ZWNpZmljYXRpb24gb2YgdGhlIG1lc3NhZ2VzIGFuZCBhIHN0YXRlIG1hY2hpbmUuDQogICAgICAg ICAgICA+IFRoaXMgc2hvdWxkIHRoZW4gZ2VuZXJhdGUgQ29kZSBiYXNlZCBvbiBGcmVlbWFya2Vy IFRlbXBsYXRlcy4NCiAgICAgICAgICAgID4NCiAgICAgICAgICAgID4gUHJveHkgRHJpdmVycyBi eSBtZSwgQ2hyaXMgYW5kIGFsc28gb3RoZXJzOg0KICAgICAgICAgICAgPiBXZSBoYXZlIGEgdGhy aWZ0IGJhc2VkIHNlcnZlciAvIGNsaWVudCBzcGVjLg0KICAgICAgICAgICAgPiBBIHNpbXBsZSBK YXZhIFNlcnZlciBpcyBpbXBsZW1lbnRlZCBhcyBJbnRlcm9wIFNlcnZlciBhbmQgd2Ugd29yayBv bg0KICAgICAgICAgICAgPiBwcm92aWRpbmcgY2xpZW50IGluIG90aGVyIGxhbmd1YWdlcy4NCiAg ICAgICAgICAgID4gVGhpcyBpcyBhIHNlcGFyYXRlIGZlYXR1cmUgKGFzIFByb3h5KSBidXQgaW4g YSBtb2RlLCB3aGVyZSB0aGUgQ2xpZW50DQogICAgICAgICAgICA+IGl0c2VsZiBzdGFydHMgdGhl IHNlcnZlciBpbiB0aGUgYmFja2dyb3VuZCwgdGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUNCiAgICAg ICAgICAgID4gc29sdXRpb24gdG8gYWxyZWFkeSBwcm92aWRlIG90aGVyIGxhbmd1YWdlIGJpbmRp bmdzIChhbHRob3VnaCBhdCBhIGNvc3QpLg0KICAgICAgICAgICAgPiBBbGwgd29yayBpcyBkb25l IGluIHRoZSBQTEM0WC0xMTEgYnJhbmNoIGFuZCBJIGhvcGUgdGhhdCB3ZSB3aWxsIGJlIGFibGUN CiAgICAgICAgICAgID4gdG8gTWVyZ2UgdGhhdCBzb29uIChDaHJpcyBzcGVuZCBhIGxvdCBvZiBl ZmZvcnQgdG8gaW5jbHVkZSBhbGwgdGhlIG5ldw0KICAgICAgICAgICAgPiBzdHVmZiBpbiBvdXIg YnVpbGQpLg0KICAgICAgICAgICAgPg0KICAgICAgICAgICAgPiBBbmQgdGhlcmUgaXMgYSBuZXcg dGhpbmcgY29taW5nIGN1cnJlbnRseSB3aGljaCBpcyBtb3N0bHkgRHJpdmVuIGJ5DQogICAgICAg ICAgICA+IE1hdHRoaWFzIGFuZCBteXNlbGYgcmVnYXJkaW5nIHRoZSBkcml2ZXIgY29kZSBnZW5l cmF0aW9uLg0KICAgICAgICAgICAgPiBXZSB3ZW50IG92ZXIgQ2hyaXMgZXhhbXBsZSBjb2RlIChh bmQgdGhlIHhtbHMpIGFuZCBvdXIgaGVhZHMgbmVhcmx5DQogICAgICAgICAgICA+IGV4cGxvZGVk IGFzIGl0IGlzIHNvIGFic3RyYWN0Lg0KICAgICAgICAgICAgPiBBbmQgYXMgTWF0dGhpYXMgZG9l cyBhIGxvdCB3aXRoIG1vZGVsIGJhc2VkIGNvZGUgZ2VuZXJhdGlvbiB3ZSBoYWQgYSBsb25nDQog ICAgICAgICAgICA+IGRpc2N1c3Npb24gYWJvdXQgdXNpbmcgYSBtb2RlbCBiYXNlZCBhcHByb2Fj aCAocHJvYmFibHkgd2l0aCBhIERTTCkuDQogICAgICAgICAgICA+IFNvIHdlIGN1cnJlbnRseSB0 cnkgdG8gaW52ZXN0aWdhdGUgdGhhdCBhIGJpdCBidXQgYWxzbyB3aXRoIGEgZm9jdXMgb24NCiAg ICAgICAgICAgID4gcmVzZWFyY2guIEluIGZhY3QsIHdlIGhhdmUgdGhlIHBvdGVudGlhbCB0aGF0 IHdlIGNhbiBlbmdhZ2Ugc29tZSBzdHVkZW50cw0KICAgICAgICAgICAgPiBmcm9tIGhpcyBpbnN0 aXR1dGUgdG8gcGFydGljaXBhdGUgYXQgdGhlIHdvcmsuDQogICAgICAgICAgICA+IEluIGZhY3Qs IHdlIGV2ZW4gc3RhcnRlZCBhIHByaXZhdGUgUmVwbyB3aGVyZSB3ZSBwcmVwYXJlIGEgUGFwZXIg dG8NCiAgICAgICAgICAgID4gZGlzY3VzcyB0aGUgbWF0dGVyLg0KICAgICAgICAgICAgPiBBcyB0 aGlzIHdvdWxkIGJlIG91ciBmaXJzdCDigJxQTEM0WCBQYXBlcuKAnSBldmVyeWJvZHkgaXMgaW52 aXRlZCB0byBqb2luIHVzDQogICAgICAgICAgICA+IGFuZCBzaG91bGQgc2ltcGx5IHBpbmcgbWUg KHdpdGggZ2l0aHViIGNyZWRlbnRpYWxzKSwgdG8gZ2V0IHJlcG8gYWNjZXNzLg0KICAgICAgICAg ICAgPiBJZiB3ZSBtYWtlIGl0IHRocm91Z2ggd2Ugd2lsbCB3aWxsIG9mIGNvdXJzZSBsaXN0IGV2 ZXJ5Ym9keSB3aG8NCiAgICAgICAgICAgID4gY29udHJpYnV0ZWQgYXMgYXV0aG9yLg0KICAgICAg ICAgICAgPg0KICAgICAgICAgICAgPiBUbyBtYWtlIGl0IGNsZWFyLCB0aGlzIHdvcmssIHRoZSBE U0wgYmFzZWQgZHJpdmVyIGdlbmVyYXRpb24gdHJpZXMgdG8NCiAgICAgICAgICAgID4gYWNoaWV2 ZSB0aGUgc2FtZSBhcyBDaHJpcyBhcHByb2FjaCBiYXNlZCBvbiBERkRMIGp1c3QgdGhyb3VnaCBh bm90aGVyIHdheS4NCiAgICAgICAgICAgID4gQW5kIHJpZ2h0IG5vdyBJ4oCZbSB1bmFibGUgdG8g c2F5IHdoaWNoIG9uZSBpcyBiZXR0ZXIsIGNvdWxkIGJlIGJldHRlciBhbmQNCiAgICAgICAgICAg ID4gd2hlcmUgYXJlIHRoZSBkcmF3YmFja3MgYW5kIGFkdmFudGFnZXMuIFNvIHdlIHdhbnQgdG8g aW52ZXN0aWdhdGUgdGhhdCB0bw0KICAgICAgICAgICAgPiBoYXZlIGEgYmFzaXMgZm9yIGEgZGlz Y3Vzc2lvbiBhbmQgZGVjaXNpb24uIEluIGZhY3QsIGJvdGggYXBwcm9hY2hlcyBzaG91bGQNCiAg ICAgICAgICAgID4gYmUgZXF1YWxseSBwb3dlcmZ1bCwgc28gb25lIGNvdWxkIGJlIGFibGUgdG8g dHJhbnNsYXRlIG9uZSB0byB0aGUgb3RoZXIgYW5kDQogICAgICAgICAgICA+IHZpY2UgdmVyc2Es IGluIHRoZW9yeS4NCiAgICAgICAgICAgID4gSSBjb25zaWRlciBpdCBoaWdobHkgaW1wb3J0YW50 IHRvIGhhdmUgYSBnb29kIGFuZCBlYXN5IHdheSB0byBkZXZlbG9wIGFuZA0KICAgICAgICAgICAg PiBtYWludGFpbiBkcml2ZXJzIGFzIHRoaXMgaXMgdGhlIGNydWNpYWwgdGhpbmcgZm9yIHRoZSBm dXR1cmUgb2YgUExDNFguDQogICAgICAgICAgICA+DQogICAgICAgICAgICA+IFNvIHBsZWFzZSBm ZWVsIGZyZWUgdG8gY29tbWVudCBvciBkaXNjdXNzLCBpZiB5b3UgZmVlbCBsaWtlIDogKQ0KICAg ICAgICAgICAgPg0KICAgICAgICAgICAgPiBKdWxpYW4NCiAgICAgICAgICAgID4NCiAgICAgICAg ICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICAtLSANCiAgICAgICAgICAgIE5pY2xhcyBI ZWRobWFuLCBTb2Z0d2FyZSBEZXZlbG9wZXINCiAgICAgICAgICAgIGh0dHA6Ly9wb2x5Z2VuZS5h cGFjaGUub3JnIC0gTmV3IEVuZXJneSBmb3IgSmF2YQ0KICAgICAgICAgICAgDQogICAgICAgIA0K ICAgICAgICANCiAgICANCiAgICANCg0K