From dev-return-8854-archive-asf-public=cust-asf.ponee.io@samza.apache.org Fri Mar 16 23:28:58 2018 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 [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 3A98218067B for ; Fri, 16 Mar 2018 23:28:57 +0100 (CET) Received: (qmail 2445 invoked by uid 500); 16 Mar 2018 22:28:56 -0000 Mailing-List: contact dev-help@samza.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@samza.apache.org Delivered-To: mailing list dev@samza.apache.org Received: (qmail 2248 invoked by uid 99); 16 Mar 2018 22:28:55 -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; Fri, 16 Mar 2018 22:28:55 +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 DEA48C1E3A for ; Fri, 16 Mar 2018 22:28:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.102 X-Spam-Level: X-Spam-Status: No, score=-0.102 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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=ntent.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id SYbNvZvgwLGu for ; Fri, 16 Mar 2018 22:28:52 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0117.outbound.protection.outlook.com [104.47.32.117]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id A73985F202 for ; Fri, 16 Mar 2018 22:28:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ntent.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=IyFvjQpKUw750Lm9gqLb08Y18UMNVB2aydXwu5l77Ic=; b=Sx94NHv5krwhtnNN1VkvefVhQJIscEeLRRF+ZxpqKVi/E1656mTdgebiY9XKLm8Qu3QSiOf8mZ3u+kqHkj0x7/2A13wIj4oTMsUmCN7TQVoXyMEq2SQ8nY921G9W7e75wr3ECBrGxagWOtvs1wJ3ljqXfC7CXXXWvj8IzOd57Ko= Received: from MWHPR02MB3280.namprd02.prod.outlook.com (10.164.187.140) by MWHPR02MB3390.namprd02.prod.outlook.com (10.164.187.167) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.567.14; Fri, 16 Mar 2018 22:28:42 +0000 Received: from MWHPR02MB3280.namprd02.prod.outlook.com ([fe80::28e8:934c:c4b8:925b]) by MWHPR02MB3280.namprd02.prod.outlook.com ([fe80::28e8:934c:c4b8:925b%13]) with mapi id 15.20.0567.019; Fri, 16 Mar 2018 22:28:42 +0000 From: Thunder Stumpges To: "dev@samza.apache.org" , Jagadish Venkatraman CC: "tom@recursivedream.com" , "Yipan@linkedin.com" , Yi Pan Subject: RE: Old style "low level" Tasks with alternative deployment model(s) Thread-Topic: Old style "low level" Tasks with alternative deployment model(s) Thread-Index: AdO7uEOJMc/02rAFTu61zh/d/zBdKAAPzxMAAAdSZOAACSZ9gAAR7U4QAAl3VQAAAd0oUAAwAgGgAAEY0YA= Date: Fri, 16 Mar 2018 22:28:42 +0000 Message-ID: References: <87d106qi1n.fsf@recursivedream.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=tstumpges@ntent.com; x-originating-ip: [70.167.13.165] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;MWHPR02MB3390;7:FSG+N9ueJG3TYz5gyiZc8hHglnQtEXwN/BQW8T5oCQWgC53ZL+pM9qmKb14WZRKjyYo4feuWOAwU2kylKAAzwFlfiBXsCSJbnH51xaY1cJMa7S0dtY8TTguVrRPIvwZGKNSAZuBQsqw3ZJ0SGi/y3vOcEU5tO+Epr6+a3T65EVd8VHNEGD5OtEcjUHn1n+93kKFWS79PrGHtmcQNDKWwAhRzEaO7OOim4WFeFoyTY9WN7hSRw0m6lyH43gc4SjSU x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: d272b5a3-e061-4a26-85fa-08d58b8d4634 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(7021125)(5600026)(4604075)(3008032)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020);SRVR:MWHPR02MB3390; x-ms-traffictypediagnostic: MWHPR02MB3390: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(93897516114553)(72170088055959)(166708455590820)(85827821059158)(6514569264521)(100405760836317)(81160342030619)(21532816269658)(211171220733660); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040522)(2401047)(8121501046)(5005006)(3231221)(944501244)(52105095)(93006095)(93001095)(3002001)(10201501046)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(2016111802025)(6043046)(6072148)(201708071742011);SRVR:MWHPR02MB3390;BCL:0;PCL:0;RULEID:;SRVR:MWHPR02MB3390; x-forefront-prvs: 0613912E23 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39840400004)(346002)(39380400002)(396003)(376002)(366004)(199004)(189003)(377424004)(53754006)(51874003)(43544003)(51914003)(57704003)(54534003)(13464003)(97736004)(8676002)(54906003)(74316002)(305945005)(81166006)(59450400001)(7736002)(68736007)(2906002)(81156014)(5660300001)(3660700001)(3280700002)(110136005)(99286004)(53546011)(76176011)(6506007)(26005)(8656006)(7696005)(102836004)(186003)(53936002)(9686003)(6306002)(55016002)(53946003)(229853002)(6436002)(2950100002)(8936002)(2900100001)(66066001)(86362001)(105586002)(106356001)(33656002)(575784001)(45080400002)(39060400002)(478600001)(4326008)(316002)(3846002)(6116002)(25786009)(2940100002)(6246003)(14454004)(5250100002)(2501003)(93886005)(579004)(559001)(19627235001);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR02MB3390;H:MWHPR02MB3280.namprd02.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; received-spf: None (protection.outlook.com: ntent.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: p27dbCnFo11U5Kmu/CBsyEG0x5RuoWrzI2BlAqkfQgG5YaAAG3is3OhsF5mGHiaZ4P4g00+kwERFIJ/HNcBn/JdJsvPQzRCa4F9E9W9PYDpBrNjh5jp5qbXVA0yVrkdiG4+fPHqTzs5cNKIcxvQOL42ov6ydovc5JQdvLStZmQ0NCXufIy80dj6jgo+hZAv823W5PQmA24sY6sdwAKRPdCnZUokb3M7XUuCm3Z3LCG7E9y0Utg0lwYquwIoLdrhyi9Q29KXaw6PuwmrJN4va5dcHycmbytLT3kqHy07Mn023SUp6ia8EmXdtjuyQ0bFv1uZJYmSrC9E+VAFBsm2DUA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ntent.com X-MS-Exchange-CrossTenant-Network-Message-Id: d272b5a3-e061-4a26-85fa-08d58b8d4634 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Mar 2018 22:28:42.4321 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 54e30995-0515-489d-96e2-98c764cd3749 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB3390 U28sIG15IGludmVzdGlnYXRpb24gc3RhcnRzIGF0IFN0cmVhbVByb2Nlc3Nvci5qYXZhLiAgTGlu ZSAyOTQgaW4gbWV0aG9kIG9uTmV3Sm9iTW9kZWwoKSBsb2dzIGFuIElORk8gbWVzc2FnZSB0aGF0 IGl0J3Mgc3RhcnRpbmcgYSBjb250YWluZXIuIFRoaXMgbWVzc2FnZSBuZXZlciBhcHBlYXJzLiAN Cg0KSSBzZWUgdGhhdCBaa0pvYkNvb3JkaW5hdG9yIGNhbGxzIG9uTmV3Sm9iTW9kZWwgZnJvbSBp dHMgb25OZXdKb2JNb2RlbENvbmZpcm1lZCBtZXRob2Qgd2hpY2ggYWxzbyBsb2dzIGFuIGluZm8g bWVzc2FnZSBzdGF0aW5nICJ2ZXJzaW9uIFggb2YgdGhlIGpvYiBtb2RlbCBnb3QgY29uZmlybWVk Ii4gSSBuZXZlciBzZWUgdGhpcyBtZXNzYWdlIGVpdGhlciwgc28gSSBnbyB1cCB0aGUgY2hhaW4g c29tZSBtb3JlLg0KDQpJIERPIHNlZToNCg0KMjAxOC0wMy0xNiAyMTo0Mzo1OCBsb2diYWNrIDIw NDk4IFtaa0NsaWVudC1FdmVudFRocmVhZC0xMy0xMC4wLjEyNy4xMTQ6MjE4MV0gSU5GTyAgby5h cGFjaGUuc2FtemEuemsuWmtKb2JDb29yZGluYXRvciAtIFprSm9iQ29vcmRpbmF0b3I6Om9uQmVj b21lTGVhZGVyIC0gSSBiZWNhbWUgdGhlIGxlYWRlciENCkFuZA0KMjAxOC0wMy0xNiAyMTo0NDox OCBsb2diYWNrIDQwNzEyIFtkZWJvdW5jZS10aHJlYWQtMF0gSU5GTyAgby5hcGFjaGUuc2FtemEu emsuWmtKb2JDb29yZGluYXRvciAtIHBpZD05MWUwN2QyMC1hZTMzLTQxNTYtYTVmMy01MzRhOTU2 NDIxMzNHZW5lcmF0ZWQgbmV3IEpvYiBNb2RlbC4gVmVyc2lvbiA9IDENCg0KV2hpY2ggbGVkIG1l IHRvIG1ldGhvZCBvbkRvUHJvY2Vzc29yQ2hhbmdlIGxpbmUgMjEwLiBJIHNlZSB0aGF0IGxpbmUs IGJ1dCBub3QgdGhlIGxpbmUgYmVsb3cgIiBQdWJsaXNoZWQgbmV3IEpvYiBNb2RlbC4gVmVyc2lv biA9IiBzbyBzb21ldGhpbmcgaW4gaGVyZSBpcyBub3QgY29tcGxldGluZzoNCg0KICAgIExPRy5p bmZvKCJwaWQ9IiArIHByb2Nlc3NvcklkICsgIkdlbmVyYXRlZCBuZXcgSm9iIE1vZGVsLiBWZXJz aW9uID0gIiArIG5leHRKTVZlcnNpb24pOw0KDQogICAgLy8gUHVibGlzaCB0aGUgbmV3IGpvYiBt b2RlbA0KICAgIHprVXRpbHMucHVibGlzaEpvYk1vZGVsKG5leHRKTVZlcnNpb24sIGpvYk1vZGVs KTsNCg0KICAgIC8vIFN0YXJ0IHRoZSBiYXJyaWVyIGZvciB0aGUgam9iIG1vZGVsIHVwZGF0ZQ0K ICAgIGJhcnJpZXIuY3JlYXRlKG5leHRKTVZlcnNpb24sIGN1cnJlbnRQcm9jZXNzb3JJZHMpOw0K DQogICAgLy8gTm90aWZ5IGFsbCBwcm9jZXNzb3JzIGFib3V0IHRoZSBuZXcgSm9iTW9kZWwgYnkg dXBkYXRpbmcgSm9iTW9kZWwgVmVyc2lvbiBudW1iZXINCiAgICB6a1V0aWxzLnB1Ymxpc2hKb2JN b2RlbFZlcnNpb24oY3VycmVudEpNVmVyc2lvbiwgbmV4dEpNVmVyc2lvbik7DQoNCiAgICBMT0cu aW5mbygicGlkPSIgKyBwcm9jZXNzb3JJZCArICJQdWJsaXNoZWQgbmV3IEpvYiBNb2RlbC4gVmVy c2lvbiA9ICIgKyBuZXh0Sk1WZXJzaW9uKTsNCg0KQXMgSSBtZW50aW9uZWQsIGFmdGVyIHRoZSBs aW5lICJHZW5lcmF0ZWQgbmV3IEpvYiBNb2RlbC4gVmVyc2lvbiA9IDEiIEkganVzdCBnZXQgcmVw ZWF0ZWQgemsgcGluZyByZXNwb25zZXMuLiBubyBtb3JlIGFwcGxpY2F0aW9uIGxvZ2dpbmcuIA0K DQpUaGUgdmVyeSBuZXh0IHRoaW5nIHRoYXQncyBydW4gaXMgemtVdGlscy5wdWJsaXNoSm9iTW9k ZWwoKSB3aGljaCBvbmx5IGhhcyB0d28gbGluZXMgYmVmb3JlIGFub3RoZXIgbG9nIHN0YXRlbWVu dCAod2hpY2ggSSBkb24ndCBzZWUpOg0KDQogIHB1YmxpYyB2b2lkIHB1Ymxpc2hKb2JNb2RlbChT dHJpbmcgam9iTW9kZWxWZXJzaW9uLCBKb2JNb2RlbCBqb2JNb2RlbCkgew0KICAgIHRyeSB7DQog ICAgICBPYmplY3RNYXBwZXIgbW1hcHBlciA9IFNhbXphT2JqZWN0TWFwcGVyLmdldE9iamVjdE1h cHBlcigpOw0KICAgICAgU3RyaW5nIGpvYk1vZGVsU3RyID0gbW1hcHBlci53cml0ZXJXaXRoRGVm YXVsdFByZXR0eVByaW50ZXIoKS53cml0ZVZhbHVlQXNTdHJpbmcoam9iTW9kZWwpOw0KICAgICAg TE9HLmluZm8oImpvYk1vZGVsQXNTdHJpbmc9IiArIGpvYk1vZGVsU3RyKTsNCiAgICAgIC4uLg0K DQpDb3VsZCBpdCByZWFsbHkgYmUgZ2V0dGluZyBodW5nIHVwIG9uIG9uZSBvZiB0aGVzZSB0d28g bGluZXM/IChzZWVtcyBsaWtlIGl0IG11c3QgYmUsIGJ1dCBJIGRvbid0IHNlZSBhbnl0aGluZyB0 aGVyZSB0aGF0IHNlZW1zIGxpa2UgaXQgd291bGQganVzdCBoYW5nKS4gSSdsbCBrZWVwIHRyb3Vi bGVzaG9vdGluZywgbWF5YmUgYWRkIHNvbWUgbW9yZSBkZWJ1ZyBsb2dnaW5nIGFuZCB0cnkgYWdh aW4uDQoNClRoYW5rcyBmb3IgYW55IGd1aWRhbmNlIHlvdSBhbGwgbWlnaHQgaGF2ZS4NCi1UaHVu ZGVyDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFRodW5kZXIgU3R1bXBn ZXMgW21haWx0bzp0c3R1bXBnZXNAbnRlbnQuY29tXSANClNlbnQ6IEZyaWRheSwgTWFyY2ggMTYs IDIwMTggMTQ6NDMNClRvOiBkZXZAc2FtemEuYXBhY2hlLm9yZzsgSmFnYWRpc2ggVmVua2F0cmFt YW4gPGphZ2FkaXNoMTk4OUBnbWFpbC5jb20+DQpDYzogdG9tQHJlY3Vyc2l2ZWRyZWFtLmNvbTsg WWlwYW5AbGlua2VkaW4uY29tOyBZaSBQYW4gPG5pY2twYW40N0BnbWFpbC5jb20+DQpTdWJqZWN0 OiBSRTogT2xkIHN0eWxlICJsb3cgbGV2ZWwiIFRhc2tzIHdpdGggYWx0ZXJuYXRpdmUgZGVwbG95 bWVudCBtb2RlbChzKQ0KDQpXZWxsIEkgaGF2ZSBteSBzdGFuZC1hbG9uZSBhcHBsaWNhdGlvbiBp biBkb2NrZXIgYW5kIHJ1bm5pbmcgaW4ga3ViZXJuZXRlcy4gSSB0aGluayBzb21ldGhpbmcgaXNu J3Qgd2lyZWQgdXAgYWxsIHRoZSB3YXkgdGhvdWdoLCBiZWNhdXNlIG15IHRhc2sgbmV2ZXIgYWN0 dWFsbHkgZ2V0cyBpbnZva2VkLiBJIHNlZSBubyBlcnJvcnMsIGhvd2V2ZXIgSSdtIG5vdCBnZXR0 aW5nIHRoZSB1c3VhbCBzdGFydHVwIGxvZ3MgKGNoZWNraW5nIGV4aXN0aW5nIG9mZnNldHMsICJl bnRlcmluZyBydW4gbG9vcCIuLi4pIE15IGxvZ3MgbG9vayBsaWtlIHRoaXM6DQoNCjIwMTgtMDMt MTYgMjE6MDU6NTUgbG9nYmFjayA1MDc5NyBbZGVib3VuY2UtdGhyZWFkLTBdIElORk8gIGthZmth LnV0aWxzLlZlcmlmaWFibGVQcm9wZXJ0aWVzIC0gVmVyaWZ5aW5nIHByb3BlcnRpZXMNCjIwMTgt MDMtMTYgMjE6MDU6NTUgbG9nYmFjayA1MDc5NyBbZGVib3VuY2UtdGhyZWFkLTBdIElORk8gIGth ZmthLnV0aWxzLlZlcmlmaWFibGVQcm9wZXJ0aWVzIC0gUHJvcGVydHkgY2xpZW50LmlkIGlzIG92 ZXJyaWRkZW4gdG8gc2FtemFfYWRtaW4tdGVzdF9zdHJlYW1fdGFzay0xDQoyMDE4LTAzLTE2IDIx OjA1OjU1IGxvZ2JhY2sgNTA3OTggW2RlYm91bmNlLXRocmVhZC0wXSBJTkZPICBrYWZrYS51dGls cy5WZXJpZmlhYmxlUHJvcGVydGllcyAtIFByb3BlcnR5IG1ldGFkYXRhLmJyb2tlci5saXN0IGlz IG92ZXJyaWRkZW4gdG8gdGVzdC1rYWZrYS1rYWZrYS50ZXN0LXN2Yzo5MDkyDQoyMDE4LTAzLTE2 IDIxOjA1OjU1IGxvZ2JhY2sgNTA3OTggW2RlYm91bmNlLXRocmVhZC0wXSBJTkZPICBrYWZrYS51 dGlscy5WZXJpZmlhYmxlUHJvcGVydGllcyAtIFByb3BlcnR5IHJlcXVlc3QudGltZW91dC5tcyBp cyBvdmVycmlkZGVuIHRvIDMwMDAwDQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2JhY2sgNTA3OTkg W2RlYm91bmNlLXRocmVhZC0wXSBJTkZPICBrYWZrYS5jbGllbnQuQ2xpZW50VXRpbHMkIC0gRmV0 Y2hpbmcgbWV0YWRhdGEgZnJvbSBicm9rZXIgQnJva2VyRW5kUG9pbnQoMCx0ZXN0LWthZmthLWth ZmthLnRlc3Qtc3ZjLDkwOTIpIHdpdGggY29ycmVsYXRpb24gaWQgMCBmb3IgMSB0b3BpYyhzKSBT ZXQoZGV2X2s4cy5zYW16YS50ZXN0LnRvcGljKQ0KMjAxOC0wMy0xNiAyMTowNTo1NSBsb2diYWNr IDUwODAwIFtkZWJvdW5jZS10aHJlYWQtMF0gREVCVUcga2Fma2EubmV0d29yay5CbG9ja2luZ0No YW5uZWwgLSBDcmVhdGVkIHNvY2tldCB3aXRoIFNPX1RJTUVPVVQgPSAzMDAwMCAocmVxdWVzdGVk IDMwMDAwKSwgU09fUkNWQlVGID0gMTc5NjgwIChyZXF1ZXN0ZWQgLTEpLCBTT19TTkRCVUYgPSAx MDI0MDAgKHJlcXVlc3RlZCAxMDI0MDApLCBjb25uZWN0VGltZW91dE1zID0gMzAwMDAuIA0KMjAx OC0wMy0xNiAyMTowNTo1NSBsb2diYWNrIDUwODAwIFtkZWJvdW5jZS10aHJlYWQtMF0gSU5GTyAg a2Fma2EucHJvZHVjZXIuU3luY1Byb2R1Y2VyIC0gQ29ubmVjdGVkIHRvIHRlc3Qta2Fma2Eta2Fm a2EudGVzdC1zdmM6OTA5MiBmb3IgcHJvZHVjaW5nDQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2Jh Y2sgNTA4MDQgW2RlYm91bmNlLXRocmVhZC0wXSBJTkZPICBrYWZrYS5wcm9kdWNlci5TeW5jUHJv ZHVjZXIgLSBEaXNjb25uZWN0aW5nIGZyb20gdGVzdC1rYWZrYS1rYWZrYS50ZXN0LXN2Yzo5MDky DQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2JhY2sgNTA4MDQgW2RlYm91bmNlLXRocmVhZC0wXSBE RUJVRyBrYWZrYS5jbGllbnQuQ2xpZW50VXRpbHMkIC0gU3VjY2Vzc2Z1bGx5IGZldGNoZWQgbWV0 YWRhdGEgZm9yIDEgdG9waWMocykgU2V0KGRldl9rOHMuc2FtemEudGVzdC50b3BpYykNCjIwMTgt MDMtMTYgMjE6MDU6NTUgbG9nYmFjayA1MDgxMyBbZGVib3VuY2UtdGhyZWFkLTBdIElORk8gIG8u YS5zLmNvb3JkaW5hdG9yLkpvYk1vZGVsTWFuYWdlciQgLSBTeXN0ZW1TdHJlYW1QYXJ0aXRpb25H cm91cGVyIG9yZy5hcGFjaGUuc2FtemEuY29udGFpbmVyLmdyb3VwZXIuc3RyZWFtLkdyb3VwQnlQ YXJ0aXRpb25AMWE3MTU4Y2MgaGFzIGdyb3VwZWQgdGhlIFN5c3RlbVN0cmVhbVBhcnRpdGlvbnMg aW50byAxMCB0YXNrcyB3aXRoIHRoZSBmb2xsb3dpbmcgdGFza05hbWVzOiBbUGFydGl0aW9uIDEs IFBhcnRpdGlvbiAwLCBQYXJ0aXRpb24gMywgUGFydGl0aW9uIDIsIFBhcnRpdGlvbiA1LCBQYXJ0 aXRpb24gNCwgUGFydGl0aW9uIDcsIFBhcnRpdGlvbiA2LCBQYXJ0aXRpb24gOSwgUGFydGl0aW9u IDhdDQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2JhY2sgNTA4MTggW2RlYm91bmNlLXRocmVhZC0w XSBJTkZPICBvLmEucy5jb29yZGluYXRvci5Kb2JNb2RlbE1hbmFnZXIkIC0gTmV3IHRhc2sgUGFy dGl0aW9uIDAgaXMgYmVpbmcgYXNzaWduZWQgY2hhbmdlbG9nIHBhcnRpdGlvbiAwLiANCjIwMTgt MDMtMTYgMjE6MDU6NTUgbG9nYmFjayA1MDgxOSBbZGVib3VuY2UtdGhyZWFkLTBdIElORk8gIG8u YS5zLmNvb3JkaW5hdG9yLkpvYk1vZGVsTWFuYWdlciQgLSBOZXcgdGFzayBQYXJ0aXRpb24gMSBp cyBiZWluZyBhc3NpZ25lZCBjaGFuZ2Vsb2cgcGFydGl0aW9uIDEuIA0KMjAxOC0wMy0xNiAyMTow NTo1NSBsb2diYWNrIDUwODIwIFtkZWJvdW5jZS10aHJlYWQtMF0gSU5GTyAgby5hLnMuY29vcmRp bmF0b3IuSm9iTW9kZWxNYW5hZ2VyJCAtIE5ldyB0YXNrIFBhcnRpdGlvbiAyIGlzIGJlaW5nIGFz c2lnbmVkIGNoYW5nZWxvZyBwYXJ0aXRpb24gMi4gDQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2Jh Y2sgNTA4MjAgW2RlYm91bmNlLXRocmVhZC0wXSBJTkZPICBvLmEucy5jb29yZGluYXRvci5Kb2JN b2RlbE1hbmFnZXIkIC0gTmV3IHRhc2sgUGFydGl0aW9uIDMgaXMgYmVpbmcgYXNzaWduZWQgY2hh bmdlbG9nIHBhcnRpdGlvbiAzLiANCjIwMTgtMDMtMTYgMjE6MDU6NTUgbG9nYmFjayA1MDgyMCBb ZGVib3VuY2UtdGhyZWFkLTBdIElORk8gIG8uYS5zLmNvb3JkaW5hdG9yLkpvYk1vZGVsTWFuYWdl ciQgLSBOZXcgdGFzayBQYXJ0aXRpb24gNCBpcyBiZWluZyBhc3NpZ25lZCBjaGFuZ2Vsb2cgcGFy dGl0aW9uIDQuIA0KMjAxOC0wMy0xNiAyMTowNTo1NSBsb2diYWNrIDUwODIwIFtkZWJvdW5jZS10 aHJlYWQtMF0gSU5GTyAgby5hLnMuY29vcmRpbmF0b3IuSm9iTW9kZWxNYW5hZ2VyJCAtIE5ldyB0 YXNrIFBhcnRpdGlvbiA1IGlzIGJlaW5nIGFzc2lnbmVkIGNoYW5nZWxvZyBwYXJ0aXRpb24gNS4g DQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2JhY2sgNTA4MjAgW2RlYm91bmNlLXRocmVhZC0wXSBJ TkZPICBvLmEucy5jb29yZGluYXRvci5Kb2JNb2RlbE1hbmFnZXIkIC0gTmV3IHRhc2sgUGFydGl0 aW9uIDYgaXMgYmVpbmcgYXNzaWduZWQgY2hhbmdlbG9nIHBhcnRpdGlvbiA2LiANCjIwMTgtMDMt MTYgMjE6MDU6NTUgbG9nYmFjayA1MDgyMCBbZGVib3VuY2UtdGhyZWFkLTBdIElORk8gIG8uYS5z LmNvb3JkaW5hdG9yLkpvYk1vZGVsTWFuYWdlciQgLSBOZXcgdGFzayBQYXJ0aXRpb24gNyBpcyBi ZWluZyBhc3NpZ25lZCBjaGFuZ2Vsb2cgcGFydGl0aW9uIDcuIA0KMjAxOC0wMy0xNiAyMTowNTo1 NSBsb2diYWNrIDUwODIwIFtkZWJvdW5jZS10aHJlYWQtMF0gSU5GTyAgby5hLnMuY29vcmRpbmF0 b3IuSm9iTW9kZWxNYW5hZ2VyJCAtIE5ldyB0YXNrIFBhcnRpdGlvbiA4IGlzIGJlaW5nIGFzc2ln bmVkIGNoYW5nZWxvZyBwYXJ0aXRpb24gOC4gDQoyMDE4LTAzLTE2IDIxOjA1OjU1IGxvZ2JhY2sg NTA4MjAgW2RlYm91bmNlLXRocmVhZC0wXSBJTkZPICBvLmEucy5jb29yZGluYXRvci5Kb2JNb2Rl bE1hbmFnZXIkIC0gTmV3IHRhc2sgUGFydGl0aW9uIDkgaXMgYmVpbmcgYXNzaWduZWQgY2hhbmdl bG9nIHBhcnRpdGlvbiA5Lg0KMjAxOC0wMy0xNiAyMTowNTo1NSBsb2diYWNrIDUwODM4IFttYWlu LVNlbmRUaHJlYWQoMTAuMC4xMjcuMTE0OjIxODEpXSBERUJVRyBvcmcuYXBhY2hlLnpvb2tlZXBl ci5DbGllbnRDbnhuIC0gUmVhZGluZyByZXBseSBzZXNzaW9uaWQ6MHgxNjIyYzhiNWZjMDFhYzcs IHBhY2tldDo6IGNsaWVudFBhdGg6bnVsbCBzZXJ2ZXJQYXRoOm51bGwgZmluaXNoZWQ6ZmFsc2Ug aGVhZGVyOjogMjMsNCAgcmVwbHlIZWFkZXI6OiAyMywxNDAyNCwwICByZXF1ZXN0OjogJy9hcHAt dGVzdF9zdHJlYW1fdGFzay0xL2Rldl90ZXN0X3N0cmVhbV90YXNrLTEtY29vcmRpbmF0aW9uRGF0 YS9Kb2JNb2RlbEdlbmVyYXRpb24vam9iTW9kZWxWZXJzaW9uLFQgIHJlc3BvbnNlOjogLHN7MTM4 NzgsMTM4NzgsMTUyMTIzNDAxMDA4OSwxNTIxMjM0MDEwMDg5LDAsMCwwLDAsMCwwLDEzODc4fQ0K MjAxOC0wMy0xNiAyMTowNTo1NSBsb2diYWNrIDUwODM4IFtkZWJvdW5jZS10aHJlYWQtMF0gSU5G TyAgby5hcGFjaGUuc2FtemEuemsuWmtKb2JDb29yZGluYXRvciAtIHBpZD1hMTRhMDQzNC1hMjM4 LTRmZjYtOTM1Yi1jNzhkOTA2ZmU4MGRHZW5lcmF0ZWQgbmV3IEpvYiBNb2RlbC4gVmVyc2lvbiA9 IDENCjIwMTgtMDMtMTYgMjE6MDY6MDUgbG9nYmFjayA2MDg0OCBbbWFpbi1TZW5kVGhyZWFkKDEw LjAuMTI3LjExNDoyMTgxKV0gREVCVUcgb3JnLmFwYWNoZS56b29rZWVwZXIuQ2xpZW50Q254biAt IEdvdCBwaW5nIHJlc3BvbnNlIGZvciBzZXNzaW9uaWQ6IDB4MTYyMmM4YjVmYzAxYWM3IGFmdGVy IDJtcw0KMjAxOC0wMy0xNiAyMTowNjoxNSBsb2diYWNrIDcwODU2IFttYWluLVNlbmRUaHJlYWQo MTAuMC4xMjcuMTE0OjIxODEpXSBERUJVRyBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhu IC0gR290IHBpbmcgcmVzcG9uc2UgZm9yIHNlc3Npb25pZDogMHgxNjIyYzhiNWZjMDFhYzcgYWZ0 ZXIgMW1zDQoyMDE4LTAzLTE2IDIxOjA2OjI1IGxvZ2JhY2sgODA4NjUgW21haW4tU2VuZFRocmVh ZCgxMC4wLjEyNy4xMTQ6MjE4MSldIERFQlVHIG9yZy5hcGFjaGUuem9va2VlcGVyLkNsaWVudENu eG4gLSBHb3QgcGluZyByZXNwb25zZSBmb3Igc2Vzc2lvbmlkOiAweDE2MjJjOGI1ZmMwMWFjNyBh ZnRlciAybXMgLi4uIA0KDQpUaGUgemsgcGluZyByZXNwb25zZXMgY29udGludWUgZXZlcnkgMTAg c2Vjb25kcywgYnV0IG5vIG90aGVyIGFjdGl2aXR5IG9yIG1lc3NhZ2VzIG9jY3VyLg0KSXQgbG9v a3MgbGlrZSBpdCBnZXRzIGFzIGZhciBhcyBjb25maXJtaW5nIHRoZSBKb2JNb2RlbCBhbmQgZ3Jv dXBpbmcgdGhlIHBhcnRpdGlvbnMsIGJ1dCBub3RoaW5nIGFjdHVhbGx5IHN0YXJ0cyB1cC4NCg0K QW55IGlkZWFzPw0KVGhhbmtzIGluIGFkdmFuY2UhDQpUaHVuZGVyDQoNCg0KLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCkZyb206IFRodW5kZXIgU3R1bXBnZXMgW21haWx0bzp0c3R1bXBnZXNA bnRlbnQuY29tXQ0KU2VudDogVGh1cnNkYXksIE1hcmNoIDE1LCAyMDE4IDE2OjM1DQpUbzogSmFn YWRpc2ggVmVua2F0cmFtYW4gPGphZ2FkaXNoMTk4OUBnbWFpbC5jb20+DQpDYzogZGV2QHNhbXph LmFwYWNoZS5vcmc7IHRvbUByZWN1cnNpdmVkcmVhbS5jb207IFlpcGFuQGxpbmtlZGluLmNvbTsg WWkgUGFuIDxuaWNrcGFuNDdAZ21haWwuY29tPg0KU3ViamVjdDogUkU6IE9sZCBzdHlsZSAibG93 IGxldmVsIiBUYXNrcyB3aXRoIGFsdGVybmF0aXZlIGRlcGxveW1lbnQgbW9kZWwocykNCg0KVGhh bmtzIGEgbG90IGZvciB0aGUgaW5mby4gSSBoYXZlIHNvbWV0aGluZyBiYXNpY2FsbHkgd29ya2lu ZyBhdCB0aGlzIHBvaW50ISBJIGhhdmUgbm90IGludGVncmF0ZWQgaXQgd2l0aCBEb2NrZXIgbm9y IEt1YmVybmV0ZXMgeWV0LCBidXQgaXQgZG9lcyBydW4gZnJvbSBteSBsb2NhbCBtYWNoaW5lLg0K DQpJIGhhdmUgZGV0ZXJtaW5lZCB0aGF0IExvY2FsQXBwbGljYXRpb25SdW5uZXIgZG9lcyBOT1Qg ZG8gY29uZmlnIHJld3JpdGluZy4gSSBoYWQgdG8gd3JpdGUgbXkgb3duIGxpdHRsZSDigJxTdGFu ZEFsb25lQXBwbGljYXRpb25SdW5uZXLigJ0gdGhhdCBoYW5kbGVzIHRoZSDigJxtYWlu4oCdIGVu dHJ5cG9pbnQuIEl0IGRvZXMgY29tbWFuZCBwYXJzaW5nIHVzaW5nIENvbW1hbmRMaW5lLCBsb2Fk IGNvbmZpZyBmcm9tIENvbmZpZ0ZhY3RvcnksIGFuZCBwZXJmb3JtIHJld3JpdGluZyBiZWZvcmUg Y3JlYXRpbmcgdGhlIG5ldyBpbnN0YW5jZSBvZiBMb2NhbEFwcGxpY2F0aW9uUnVubmVyLiBUaGlz IGlzIGFsbCBteSBTdGFuZEFsb25lQXBwbGljYXRpb25SdW5uZXIgY29udGFpbnM6DQoNCg0Kb2Jq ZWN0IFN0YW5kQWxvbmVTYW16YVJ1bm5lciBleHRlbmRzIEFwcCB3aXRoIExhenlMb2dnaW5nIHsN Cg0KICAvLyBwYXJzZSBjb21tYW5kIGxpbmUgYXJncyBqdXN0IGxpa2UgSm9iUnVubmVyLg0KICB2 YWwgY21kbGluZSA9IG5ldyBBcHBsaWNhdGlvblJ1bm5lckNvbW1hbmRMaW5lDQogIHZhbCBvcHRp b25zID0gY21kbGluZS5wYXJzZXIucGFyc2UoYXJnczogXyopDQogIHZhbCBjb25maWcgPSBjbWRs aW5lLmxvYWRDb25maWcob3B0aW9ucykNCg0KICB2YWwgcnVubmVyID0gbmV3IExvY2FsQXBwbGlj YXRpb25SdW5uZXIoVXRpbC5yZXdyaXRlQ29uZmlnKGNvbmZpZykpDQogIHJ1bm5lci5ydW5UYXNr KCkNCiAgcnVubmVyLndhaXRGb3JGaW5pc2goKQ0KfQ0KDQpUaGUgb25seSBjb25maWcgc2V0dGlu Z3MgSSBuZWVkZWQgdG8gbWFrZSB0byB1c2UgdGhpcyBydW5uZXIgd2VyZSAoZWFzaWx5IGNvbmZp Z3VyZWQgZHVlIHRvIG91ciBjZW50cmFsIENvbnN1bCBjb25maWcgc3lzdGVtIGFuZCBvdXIgcmV3 cml0ZXIpIDoNCg0KIyB1c2UgdGhlIFpLIGJhc2VkIGpvYiBjb29yZGluYXRvcg0Kam9iLmNvb3Jk aW5hdG9yLmZhY3Rvcnk9b3JnLmFwYWNoZS5zYW16YS56ay5aa0pvYkNvb3JkaW5hdG9yRmFjdG9y eQ0KIyBuZWVkIHRvIHVzZSBHcm91cEJ5Q29udGFpbmVySWRzIGluc3RlYWQgb2YgR3JvdXBCeUNv bnRhaW5lckNvdW50IHRhc2submFtZS5ncm91cGVyLmZhY3Rvcnk9b3JnLmFwYWNoZS5zYW16YS5j b250YWluZXIuZ3JvdXBlci50YXNrLkdyb3VwQnlDb250YWluZXJJZHNGYWN0b3J5DQojIFpLSkMg Y29uZmlnDQpqb2IuY29vcmRpbmF0b3IuemsuY29ubmVjdD08b3VyX3prX2Nvbm5lY3Rpb24+DQoN CkkgZGlkIHJ1biBpbnRvIG9uZSBwb3RlbnRpYWwgcHJvYmxlbTsgYXMgeW91IHNlZSBhYm92ZSwg SSBoYXZlIHN0YXJ0ZWQgdGhlIHRhc2sgdXNpbmcgcnVuVGFzaygpIGFuZCB0aGVuIHRvIHByZXZl bnQgbXkgbWFpbiBtZXRob2QgZnJvbSByZXR1cm5pbmcsIEkgaGF2ZSBjYWxsZWQgd2FpdEZvckZp bmlzaCgpLiBUaGUgZmlyc3QgdGltZSBJIHJhbiBpdCwgdGhlIGpvYiBpdHNlbGYgZmFpbGVkIGJl Y2F1c2UgSSBoYWQgZm9yZ290dGVuIHRvIG92ZXJyaWRlIHRoZSB0YXNrIGdyb3VwZXIsIGFuZCBj b250YWluZXIgY291bnQgd2FzIHB1bGxlZCBmcm9tIG91ciBzdGFnaW5nIGVudmlyb25tZW50LiBU aGVyZSBhcmUgc29tZSBmYWlsdXJlcyBsb2dnZWQgYW5kIGl0IGFwcGVhcnMgdGhlIEpvYkNvb3Jk aW5hdG9yIGZhaWxzLCBidXQgaXQgbmV2ZXIgcmV0dXJucyBmcm9tIHdhaXRGb3JGaW5pc2guIFN0 YWNrIHRyYWNlIGFuZCBjb250aW51YXRpb24gb2YgbG9nIGlzIGJlbG93Og0KDQoyMDE4LTAzLTE1 IDIyOjM0OjMyIGxvZ2JhY2sgNzc3ODYgW2RlYm91bmNlLXRocmVhZC0wXSBFUlJPUiBvLmEucy56 ay5TY2hlZHVsZUFmdGVyRGVib3VuY2VUaW1lIC0gRXhlY3V0aW9uIG9mIGFjdGlvbjogT25Qcm9j ZXNzb3JDaGFuZ2UgZmFpbGVkLg0KamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjog WW91ciBjb250YWluZXIgY291bnQgKDQpIGlzIGxhcmdlciB0aGFuIHlvdXIgdGFzayBjb3VudCAo MikuIENhbid0IGhhdmUgY29udGFpbmVycyB3aXRoIG5vdGhpbmcgdG8gZG8sIHNvIGFib3J0aW5n Lg0KICAgICAgIGF0IG9yZy5hcGFjaGUuc2FtemEuY29udGFpbmVyLmdyb3VwZXIudGFzay5Hcm91 cEJ5Q29udGFpbmVyQ291bnQudmFsaWRhdGVUYXNrcyhHcm91cEJ5Q29udGFpbmVyQ291bnQuamF2 YToyMTIpDQogICAgICAgYXQgb3JnLmFwYWNoZS5zYW16YS5jb250YWluZXIuZ3JvdXBlci50YXNr Lkdyb3VwQnlDb250YWluZXJDb3VudC5ncm91cChHcm91cEJ5Q29udGFpbmVyQ291bnQuamF2YTo2 MikNCiAgICAgICBhdCBvcmcuYXBhY2hlLnNhbXphLmNvbnRhaW5lci5ncm91cGVyLnRhc2suVGFz a05hbWVHcm91cGVyLmdyb3VwKFRhc2tOYW1lR3JvdXBlci5qYXZhOjU2KQ0KICAgICAgIGF0IG9y Zy5hcGFjaGUuc2FtemEuY29vcmRpbmF0b3IuSm9iTW9kZWxNYW5hZ2VyJC5yZWFkSm9iTW9kZWwo Sm9iTW9kZWxNYW5hZ2VyLnNjYWxhOjI2NikNCiAgICAgICBhdCBvcmcuYXBhY2hlLnNhbXphLmNv b3JkaW5hdG9yLkpvYk1vZGVsTWFuYWdlci5yZWFkSm9iTW9kZWwoSm9iTW9kZWxNYW5hZ2VyLnNj YWxhKQ0KICAgICAgIGF0IG9yZy5hcGFjaGUuc2FtemEuemsuWmtKb2JDb29yZGluYXRvci5nZW5l cmF0ZU5ld0pvYk1vZGVsKFprSm9iQ29vcmRpbmF0b3IuamF2YTozMDYpDQogICAgICAgYXQgb3Jn LmFwYWNoZS5zYW16YS56ay5aa0pvYkNvb3JkaW5hdG9yLmRvT25Qcm9jZXNzb3JDaGFuZ2UoWmtK b2JDb29yZGluYXRvci5qYXZhOjE5NykNCiAgICAgICBhdCBvcmcuYXBhY2hlLnNhbXphLnprLlpr Sm9iQ29vcmRpbmF0b3IkTGVhZGVyRWxlY3Rvckxpc3RlbmVySW1wbC5sYW1iZGEkb25CZWNvbWlu Z0xlYWRlciQwKFprSm9iQ29vcmRpbmF0b3IuamF2YTozMTgpDQogICAgICAgYXQgb3JnLmFwYWNo ZS5zYW16YS56ay5TY2hlZHVsZUFmdGVyRGVib3VuY2VUaW1lLmxhbWJkYSRnZXRTY2hlZHVsZWFi bGVBY3Rpb24kMChTY2hlZHVsZUFmdGVyRGVib3VuY2VUaW1lLmphdmE6MTM0KQ0KICAgICAgIGF0 IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbCQkJGNh cHR1cmUoRXhlY3V0b3JzLmphdmE6NTExKQ0KICAgICAgIGF0IGphdmEudXRpbC5jb25jdXJyZW50 LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YSkNCiAgICAgICBh dCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1biQkJGNhcHR1cmUoRnV0dXJlVGFz ay5qYXZhOjI2NikNCiAgICAgICBhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1 bihGdXR1cmVUYXNrLmphdmEpDQogICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1 bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJFNjaGVkdWxlZEZ1dHVyZVRhc2suYWNjZXNzJDIwMShTY2hl ZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxODApDQogICAgICAgYXQgamF2YS51dGlsLmNv bmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yJFNjaGVkdWxlZEZ1dHVyZVRhc2su cnVuKFNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjI5MykNCiAgICAgICBhdCBqYXZh LnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xF eGVjdXRvci5qYXZhOjExNDIpDQogICAgICAgYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFk UG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjE3KQ0KICAg ICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0NSkNCjIwMTgtMDMtMTUg MjI6MzQ6MzIgbG9nYmFjayA3Nzc4NyBbZGVib3VuY2UtdGhyZWFkLTBdIERFQlVHIG8uYS5zYW16 YS5wcm9jZXNzb3IuU3RyZWFtUHJvY2Vzc29yIC0gQ29udGFpbmVyIGlzIG5vdCBpbnN0YW50aWF0 ZWQgeWV0Lg0KMjAxOC0wMy0xNSAyMjozNDozMiBsb2diYWNrIDc3Nzg3IFtkZWJvdW5jZS10aHJl YWQtMF0gREVCVUcgb3JnLkkwSXRlYy56a2NsaWVudC5aa0NsaWVudCAtIENsb3NpbmcgWmtDbGll bnQuLi4NCjIwMTgtMDMtMTUgMjI6MzQ6MzIgbG9nYmFjayA3Nzc4OSBbWmtDbGllbnQtRXZlbnRU aHJlYWQtMTUtMTAuMC4xMjcuMTE0OjIxODFdIElORk8gIG9yZy5JMEl0ZWMuemtjbGllbnQuWmtF dmVudFRocmVhZCAtIFRlcm1pbmF0ZSBaa0NsaWVudCBldmVudCB0aHJlYWQuDQoNCkFuZCB0aGVu IHRoZSBhcHBsaWNhdGlvbiBjb250aW51ZXMgb24gd2l0aCBtZXRyaWMgcmVwb3J0ZXJzLCBhbmQg b3RoZXIgZGVidWcgbG9nZ2luZyAobm90IGFjdHVhbGx5IHJ1bm5pbmcgdGhlIHRhc2sgdGhvdWdo KQ0KDQpUaGFua3MgaW4gYWR2YW5jZSBmb3IgdGhlIGd1aWRhbmNlLCB0aGlzIGhhcyBiZWVuIGVh c2llciB0aGFuIEkgaW1hZ2luZWQhIEnigJlsbCByZXBvcnQgYmFjayB3aGVuIEkgZ2V0IG1vcmUg b2YgdGhlIERvY2tlcml6YXRpb24vS3ViZXJuZXRlcyBydW5uaW5nIGFuZCB0ZXN0IGl0IGEgYml0 IG1vcmUuDQpDaGVlcnMsDQpUaHVuZGVyDQoNCg0KRnJvbTogSmFnYWRpc2ggVmVua2F0cmFtYW4g W21haWx0bzpqYWdhZGlzaDE5ODlAZ21haWwuY29tXQ0KU2VudDogVGh1cnNkYXksIE1hcmNoIDE1 LCAyMDE4IDE0OjQ2DQpUbzogVGh1bmRlciBTdHVtcGdlcyA8dHN0dW1wZ2VzQG50ZW50LmNvbT4N CkNjOiBkZXZAc2FtemEuYXBhY2hlLm9yZzsgdG9tQHJlY3Vyc2l2ZWRyZWFtLmNvbTsgWWlwYW5A bGlua2VkaW4uY29tOyBZaSBQYW4gPG5pY2twYW40N0BnbWFpbC5jb20+DQpTdWJqZWN0OiBSZTog T2xkIHN0eWxlICJsb3cgbGV2ZWwiIFRhc2tzIHdpdGggYWx0ZXJuYXRpdmUgZGVwbG95bWVudCBt b2RlbChzKQ0KDQo+PiAgVGhhbmtzIGZvciB0aGUgaW5mbyBvbiB0aGUgdHJhZGVvZmZzLiBUaGF0 IG1ha2VzIGEgbG90IG9mIHNlbnNlLiBJIGFtIG9uLWJvYXJkIHdpdGggdXNpbmcgWmtKb2JDb29y ZGluYXRvciwgc291bmRzIGxpa2Ugc29tZSBnb29kIGJlbmVmaXRzIG92ZXIganVzdCB0aGUgS2Fm a2EgaGlnaC1sZXZlbCBjb25zdW1lci4NCg0KVGhpcyBjZXJ0YWlubHkgbG9va3MgbGlrZSB0aGUg c2ltcGxlc3QgYWx0ZXJuYXRpdmUuDQoNCkZvciB5b3VyIG90aGVyIHF1ZXN0aW9ucywgcGxlYXNl IGZpbmQgbXkgYW5zd2VycyBpbmxpbmUuDQoNCj4+IFExOiBJZiBJIHVzZSBMb2NhbEFwcGxpY2F0 aW9uUnVubmVyLCBJdCBkb2VzIG5vdCB1c2UgIlByb2Nlc3NKb2JGYWN0b3J5IiAob3IgYW55IFN0 cmVhbUpvYiBvciAqSm9iIGNsYXNzZXMpIGNvcnJlY3Q/DQoNCllvdXIgdW5kZXJzdGFuZGluZyBp cyBjb3JyZWN0LiBJdCBkaXJlY3RseSBpbnN0YW50aWF0ZXMgdGhlIFN0cmVhbVByb2Nlc3Nvciwg d2hpY2ggaW4tdHVybiBjcmVhdGVzIGFuZCBydW5zIHRoZSBTYW16YUNvbnRhaW5lci4NCg0KPj4g UTI6IElmIEkgdXNlIExvY2FsQXBwbGljYXRpb25SdW5uZXIsIEkgd2lsbCBuZWVkIHRvIGNvZGUg bXlzZWxmIHRoZSBsb2FkaW5nIGFuZCByZXdyaXRpbmcgb2YgdGhlIENvbmZpZyB0aGF0IGlzIGN1 cnJlbnRseSBoYW5kbGVkIGJ5IEpvYlJ1bm5lciwgY29ycmVjdD8NCg0KSSBkb24ndCB0aGluayB5 b3UnbGwgbmVlZCB0byBkbyB0aGlzLiBJSVVDLCB0aGUgTG9jYWxBcHBsaWNhdGlvblJ1bm5lciBz aG91bGQgYXV0b21hdGljYWxseSBpbnZva2UgcmV3cml0ZXJzIGFuZCBkbyB0aGUgcmlnaHQgdGhp bmcuDQoNCj4+ICBRMzogRG8gSSBuZWVkIHRvIGFsc28gaGFuZGxlIGNvb3JkaW5hdG9yIHN0cmVh bShzKSBhbmQgc3RvcmluZyBvZiBjb25maWcgdGhhdCBpcyBkb25lIGluIEpvYlJ1bm5lciAoSSBk b27igJl0IHRoaW5rIHNvIGFzIHRoZSA/DQoNCkkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBuZWNlc3Nh cnkgZWl0aGVyLiBUaGUgY3JlYXRpb24gb2YgY29vcmRpbmF0b3Igc3RyZWFtIGFuZCBwZXJzaXN0 aW5nIGNvbmZpZ3VyYXRpb24gaGFwcGVucyBpbiB0aGUgTG9jYWxBcHBsaWNhdGlvblJ1bm5lciAo bW9yZSBzcGVjaWZpY2FsbHkgaW4gU3RyZWFtTWFuYWdlciNjcmVhdGVTdHJlYW1zKS4NCg0KPj4g UTQ6IFdoZXJlL0hvdyBkbyBJIHNwZWNpZnkgdGhlIENvbnRhaW5lciBJRCBmb3IgZWFjaCBpbnN0 YW5jZT8gSXMgdGhlcmUgYSBjb25maWcgc2V0dGluZyB0aGF0IEkgY2FuIHBhc3MsIChvciBwdWxs IGZyb20gYW4gZW52IHZhcmlhYmxlIGFuZCBhZGQgdG8gdGhlIGNvbmZpZykgPyBJIGFtIGFzc3Vt aW5nIGl0IGlzIG15IHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IGVhY2ggaW5zdGFuY2Ug aXMgc3RhcnRlZCB3aXRoIGEgdW5pcXVlIGNvbnRhaW5lciBJRC4uPw0KDQpOb3BlLCBJZiB5b3Ug YXJlIHVzaW5nIHRoZSBaa0pvYkNvb3JkaW5hdG9yLCB5b3UgbmVlZCBub3QgaGF2ZSB0byB3b3Jy eSBhYm91dCBhc3NpZ25pbmcgSURzIGZvciBlYWNoIGluc3RhbmNlLiBUaGUgZnJhbWV3b3JrIHdp bGwgYXV0b21hdGljYWxseSB0YWtlIGNhcmUgb2YgZ2VuZXJhdGluZyBJRHMgYW5kIHJlYWNoaW5n IGNvbnNlbnN1cyBieSBlbGVjdGluZyBhIGxlYWRlci4gSWYgeW91IGFyZSBjdXJpb3VzIHBsZWFz ZSB0YWtlIGEgbG9vayBhdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFByb2Nlc3NvcklkR2VuZXJh dG9yIGludGVyZmFjZS4NCg0KUGxlYXNlIGxldCB1cyBrbm93IHNob3VsZCB5b3UgaGF2ZSBmdXJ0 aGVyIHF1ZXN0aW9ucyENCg0KQmVzdCwNCkphZ2Rpc2gNCg0KT24gVGh1LCBNYXIgMTUsIDIwMTgg YXQgMTE6NDggQU0sIFRodW5kZXIgU3R1bXBnZXMgPHRzdHVtcGdlc0BudGVudC5jb208bWFpbHRv OnRzdHVtcGdlc0BudGVudC5jb20+PiB3cm90ZToNCg0KVGhhbmtzIGZvciB0aGUgaW5mbyBvbiB0 aGUgdHJhZGVvZmZzLiBUaGF0IG1ha2VzIGEgbG90IG9mIHNlbnNlLiBJIGFtIG9uLWJvYXJkIHdp dGggdXNpbmcgWmtKb2JDb29yZGluYXRvciwgc291bmRzIGxpa2Ugc29tZSBnb29kIGJlbmVmaXRz IG92ZXIganVzdCB0aGUgS2Fma2EgaGlnaC1sZXZlbCBjb25zdW1lci4NCg0KDQoNClRvIHRoYXQg ZW5kLCBJIGhhdmUgbWFkZSBzb21lIG5vdGVzIG9uIHBvc3NpYmxlIGFwcHJvYWNoZXMgYmFzZWQg b24gdGhlIHByZXZpb3VzIHRocmVhZCwgYW5kIGZyb20gbXkgbG9vayBpbnRvIHRoZSBjb2RlLiBJ 4oCZZCBsb3ZlIHRvIGdldCBmZWVkYmFjay4NCg0KDQoNCkFwcHJvYWNoIDEuIENvbmZpZ3VyZSBq b2JzIHRvIHVzZSDigJxQcm9jZXNzSm9iRmFjdG9yeeKAnSBhbmQgcnVuIGluc3RhbmNlcyBvZiB0 aGUgam9iIHVzaW5nIHJ1bi1qb2Iuc2ggb3IgdXNpbmcgSm9iUnVubmVyIGRpcmVjdGx5Lg0KDQpJ IGRvbuKAmXQgdGhpbmsgdGhpcyBtYWtlcyBzZW5zZSBmcm9tIHdoYXQgSSBjYW4gc2VlIGZvciBh IGZldyByZWFzb25zOg0KDQogICogICBKb2JSdW5uZXIgaXMgY29uY2VybmVkIHdpdGggc3R1ZmYg SSBkb24ndCAqdGhpbmsqIHdlIG5lZWQ6DQoNCiAgICAgKiAgIGNvb3JkaW5hdG9yU3lzdGVtUHJv ZHVjZXJ8Q29uc3VtZXIsDQogICAgICogICB3cml0aW5nL3JlYWRpbmcgdGhlIGNvbmZpZ3VyYXRp b24gdG8gdGhlIGNvb3JkaW5hdG9yIHN0cmVhbXMNCg0KICAqICAgUHJvY2Vzc0pvYkZhY3Rvcnkg aGFyZC1jb2RlcyB0aGUgSUQgdG8g4oCcMOKAnSBzbyBJIGRvbuKAmXQgdGhpbmsgdGhhdCB3aWxs IHdvcmsgZm9yIG11bHRpcGxlIGluc3RhbmNlcy4NCg0KDQoNCkFwcHJvYWNoIDIuIENvbmZpZ3Vy ZSBaa0pvYkNvb3JkaW5hdG9yLCBHcm91cEJ5Q29udGFpbmVySWRzLCBhbmQgaW52b2tlIExvY2Fs QXBwbGljYXRpb25SdW5uZXIucnVuVGFzaygpDQoNCg0KDQogICAgUTE6IElmIEkgdXNlIExvY2Fs QXBwbGljYXRpb25SdW5uZXIsIEl0IGRvZXMgbm90IHVzZSAiUHJvY2Vzc0pvYkZhY3RvcnkiIChv ciBhbnkgU3RyZWFtSm9iIG9yICpKb2IgY2xhc3NlcykgY29ycmVjdD8NCg0KICAgIFEyOiBJZiBJ IHVzZSBMb2NhbEFwcGxpY2F0aW9uUnVubmVyLCBJIHdpbGwgbmVlZCB0byBjb2RlIG15c2VsZiB0 aGUgbG9hZGluZyBhbmQgcmV3cml0aW5nIG9mIHRoZSBDb25maWcgdGhhdCBpcyBjdXJyZW50bHkg aGFuZGxlZCBieSBKb2JSdW5uZXIsIGNvcnJlY3Q/DQoNCiAgICBRMzogRG8gSSBuZWVkIHRvIGFs c28gaGFuZGxlIGNvb3JkaW5hdG9yIHN0cmVhbShzKSBhbmQgc3RvcmluZyBvZiBjb25maWcgdGhh dCBpcyBkb25lIGluIEpvYlJ1bm5lciAoSSBkb27igJl0IHRoaW5rIHNvIGFzIHRoZSA/DQoNCiAg ICBRNDogV2hlcmUvSG93IGRvIEkgc3BlY2lmeSB0aGUgQ29udGFpbmVyIElEIGZvciBlYWNoIGlu c3RhbmNlPyBJcyB0aGVyZSBhIGNvbmZpZyBzZXR0aW5nIHRoYXQgSSBjYW4gcGFzcywgKG9yIHB1 bGwgZnJvbSBhbiBlbnYgdmFyaWFibGUgYW5kIGFkZCB0byB0aGUgY29uZmlnKSA/IEkgYW0gYXNz dW1pbmcgaXQgaXMgbXkgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgZWFjaCBpbnN0YW5j ZSBpcyBzdGFydGVkIHdpdGggYSB1bmlxdWUgY29udGFpbmVyIElELi4/DQoNCkkgYW0gZ2V0dGlu ZyBzdGFydGVkIG9uIHRoZSBhYm92ZSAoQXBwcm9hY2ggMi4pLCBhbmQgbG9va2luZyBjbG9zZXIg YXQgdGhlIGNvZGUgc28gSSBtYXkgaGF2ZSBteSBvd24gYW5zd2VycyB0byBteSBxdWVzdGlvbnMs IGJ1dCBmaWd1cmVkIEkgc2hvdWxkIGdvIGFoZWFkIGFuZCBhc2sgbm93IGFueXdheS4gVGhhbmtz IQ0KDQotVGh1bmRlcg0KDQoNCkZyb206IEphZ2FkaXNoIFZlbmthdHJhbWFuIFttYWlsdG86amFn YWRpc2gxOTg5QGdtYWlsLmNvbTxtYWlsdG86amFnYWRpc2gxOTg5QGdtYWlsLmNvbT5dDQpTZW50 OiBUaHVyc2RheSwgTWFyY2ggMTUsIDIwMTggMTo0MQ0KVG86IGRldkBzYW16YS5hcGFjaGUub3Jn PG1haWx0bzpkZXZAc2FtemEuYXBhY2hlLm9yZz47IFRodW5kZXIgU3R1bXBnZXMgPHRzdHVtcGdl c0BudGVudC5jb208bWFpbHRvOnRzdHVtcGdlc0BudGVudC5jb20+PjsgdG9tQHJlY3Vyc2l2ZWRy ZWFtLmNvbTxtYWlsdG86dG9tQHJlY3Vyc2l2ZWRyZWFtLmNvbT4NCkNjOiBZaXBhbkBsaW5rZWRp bi5jb208bWFpbHRvOllpcGFuQGxpbmtlZGluLmNvbT47IFlpIFBhbiA8bmlja3BhbjQ3QGdtYWls LmNvbTxtYWlsdG86bmlja3BhbjQ3QGdtYWlsLmNvbT4+DQoNClN1YmplY3Q6IFJlOiBPbGQgc3R5 bGUgImxvdyBsZXZlbCIgVGFza3Mgd2l0aCBhbHRlcm5hdGl2ZSBkZXBsb3ltZW50IG1vZGVsKHMp DQoNCj4+IFlvdSBhcmUgY29ycmVjdCB0aGF0IHRoaXMgaXMgZm9jdXNlZCBvbiB0aGUgaGlnaGVy LWxldmVsIEFQSSBidXQgDQo+PiBkb2Vzbid0DQpwcmVjbHVkZSB1c2luZyB0aGUgbG93ZXItbGV2 ZWwgQVBJLiBJIHdhcyBhdCB0aGUgc2FtZSBwb2ludCB5b3Ugd2VyZSBub3QgbG9uZyBhZ28sIGlu IGZhY3QsIGFuZCBoYWQgYSB2ZXJ5IHByb2R1Y3RpdmUgY29udmVyc2F0aW9uIG9uIHRoZSBsaXN0 DQoNClRoYW5rcyBUb20gZm9yIGxpbmtpbmcgdGhlIHRocmVhZCwgYW5kIEknbSBnbGFkIHRoYXQg eW91IHdlcmUgYWJsZSB0byBnZXQgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbiB3b3JraW5nIHdpdGgg U2FtemEuDQoNCj4+IElmIGl0IGlzIGhlbHBmdWwgZm9yIGV2ZXJ5b25lLCBvbmNlIEkgZ2V0IHRo ZSBsb3ctbGV2ZWwgQVBJICsgDQo+PiBaa0pvYkNvb3JkaW5hdG9yICsgRG9ja2VyICsNCks4cyB3 b3JraW5nLCBJJ2QgYmUgZ2xhZCB0byBmb3JtdWxhdGUgYW4gYWRkaXRpb25hbCBzYW1wbGUgZm9y IGhlbGxvLXNhbXphLg0KDQpAVGh1bmRlciBTdHVtcGdlczoNCldlJ2QgYmUgdGhyaWxsZWQgdG8g cmVjZWl2ZSB5b3VyIGNvbnRyaWJ1dGlvbi4gRXhhbXBsZXMsIGRlbW9zLCB0dXRvcmlhbHMgZXRj Lg0KY29udHJpYnV0ZSBhIGdyZWF0IGRlYWwgdG8gaW1wcm92aW5nIHRoZSBlYXNlIG9mIHVzZSBv ZiBBcGFjaGUgU2FtemEuIEknbSBoYXBweSB0byBzaGVwaGVyZCBkZXNpZ24gZGlzY3Vzc2lvbnMv Y29kZS1yZXZpZXdzIGluIHRoZSBvcGVuLXNvdXJjZSBpbmNsdWRpbmcgYW5zd2VyaW5nIGFueSBx dWVzdGlvbnMgeW91IG1heSBoYXZlLg0KDQoNCj4+IE9uZSB0aGluZyBJJ20gc3RpbGwgY3VyaW91 cyBhYm91dCwgaXMgd2hhdCBhcmUgdGhlIGRyYXdiYWNrcyBvciANCj4+IGNvbXBsZXhpdGllcyBv ZiBsZXZlcmFnaW5nIHRoZSBLYWZrYSBIaWdoLWxldmVsIGNvbnN1bWVyICsgDQo+PiBQYXNzdGhy b3VnaEpvYkNvb3JkaW5hdG9yIGluIGEgc3RhbmQtYWxvbmUgc2V0dXAgbGlrZSB0aGlzPyBXZSBk byANCj4+IGhhdmUgWm9va2VlcGVyIChiZWNhdXNlIG9mIGthZmthKSBzbyBJIHRoaW5rIGVpdGhl ciB3b3VsZCB3b3JrLiBUaGUgDQo+PiBLYWZrYSBIaWdoLWxldmVsIGNvbnN1bWVyIGNvbWVzIHdp dGggb3RoZXIgbmljZSB0b29scyBmb3IgbW9uaXRvcmluZyANCj4+IG9mZnNldHMsIGxhZywgZXRj DQoNCg0KQFRodW5kZXIgU3R1bXBnZXM6DQoNClNhbXphIHVzZXMgYSAiSm9iLUNvb3JkaW5hdG9y IiB0byBhc3NpZ24geW91ciBpbnB1dC1wYXJ0aXRpb25zIGFtb25nIHRoZSBkaWZmZXJlbnQgaW5z dGFuY2VzIG9mIHlvdXIgYXBwbGljYXRpb24gcy50LiB0aGV5IGRvbid0IG92ZXJsYXAuIEEgdHlw aWNhbCB3YXkgdG8gc29sdmUgdGhpcyAicGFydGl0aW9uIGRpc3RyaWJ1dGlvbiINCnByb2JsZW0g aXMgdG8gaGF2ZSBhIHNpbmdsZSBpbnN0YW5jZSBlbGVjdGVkIGFzIGEgImxlYWRlciIgYW5kIGhh dmUgdGhlIGxlYWRlciBhc3NpZ24gcGFydGl0aW9ucyB0byB0aGUgZ3JvdXAuDQpUaGUgWmtKb2JD b29yZGluYXRvciB1c2VzIFprIHByaW1pdGl2ZXMgdG8gYWNoaWV2ZSB0aGlzLCB3aGlsZSB0aGUg WWFybkpDIHJlbGllcyBvbiBZYXJuJ3MgZ3VhcmFudGVlIHRoYXQgdGhlcmUgd2lsbCBiZSBhIHNp bmdsZXRvbi1BcHBNYXN0ZXIgdG8gYWNoaWV2ZSB0aGlzLg0KDQpBIGtleSBkaWZmZXJlbmNlIHRo YXQgc2VwYXJhdGVzIHRoZSBQYXNzdGhyb3VnaEpDIGZyb20gdGhlIFlhcm4vWmsgdmFyaWFudHMg aXMgdGhhdCBpdCBkb2VzIF9ub3RfIGF0dGVtcHQgdG8gc29sdmUgdGhlICJwYXJ0aXRpb24gZGlz dHJpYnV0aW9uIiBwcm9ibGVtLiBBcyBhIHJlc3VsdCwgdGhlcmUncyBubyBsZWFkZXItZWxlY3Rp b24gaW52b2x2ZWQuIEluc3RlYWQsIGl0IHB1c2hlcyB0aGUgcHJvYmxlbSBvZiAicGFydGl0aW9u IGRpc3RyaWJ1dGlvbiIgdG8gdGhlIHVuZGVybHlpbmcgY29uc3VtZXIuDQoNClRoZSBQYXNzVGhy b3VnaEpjIHN1cHBvcnRzIHRoZXNlIDIgc2NlbmFyaW9zOg0KDQoxLiBDb25zdW1lci1tYW5hZ2Vk IHBhcnRpdGlvbiBkaXN0cmlidXRpb246IFdoZW4gdXNpbmcgdGhlIEthZmthIGhpZ2gtbGV2ZWwg Y29uc3VtZXIgKG9yIGFuIEFXUyBLaW5lc2lzQ2xpZW50TGlicmFyeSBjb25zdW1lcikgd2l0aCBT YW16YSwgdGhlIGNvbnN1bWVyIG1hbmFnZXMgcGFydGl0aW9ucyBpbnRlcm5hbGx5Lg0KDQoyLiBT dGF0aWMgcGFydGl0aW9uIGRpc3RyaWJ1dGlvbjogQWx0ZXJuYXRlbHksIHBhcnRpdGlvbnMgY2Fu IGJlIG1hbmFnZWQgc3RhdGljYWxseSB1c2luZyBjb25maWd1cmF0aW9uLiBZb3UgY2FuIGFjaGll dmUgc3RhdGljIHBhcnRpdGlvbiBhc3NpZ25tZW50IGJ5IGltcGxlbWVudGluZyBhIGN1c3RvbSBT eXN0ZW1TdHJlYW1QYXJ0aXRpb25Hcm91cGVyPGh0dHBzOi8vc2FtemEuYXBhY2hlLm9yZy9sZWFy bi9kb2N1bWVudGF0aW9uLzAuOC9hcGkvamF2YWRvY3Mvb3JnL2FwYWNoZS9zYW16YS9jb250YWlu ZXIvZ3JvdXBlci9zdHJlYW0vU3lzdGVtU3RyZWFtUGFydGl0aW9uR3JvdXBlci5odG1sPiBhbmQg VGFza05hbWVHcm91cGVyPGh0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvc2FtemEvYmxvYi9tYXN0 ZXIvc2FtemEtY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvc2FtemEvY29udGFpbmVyL2dy b3VwZXIvdGFzay9UYXNrTmFtZUdyb3VwZXIuamF2YT4uIFNvbHV0aW9ucyBpbiB0aGlzIGNhdGVn b3J5IHdpbGwgdHlwaWNhbGx5IHJlcXVpcmUgeW91IHRvIGRpc3Rpbmd1aXNoIHRoZSB2YXJpb3Vz IHByb2Nlc3NvcnMgaW4gdGhlIGdyb3VwIGJ5IHByb3ZpZGluZyBhbiAiaWQiIGZvciBlYWNoLg0K T25jZSB0aGUgImlkInMgYXJlIGRlY2lkZWQsIHlvdSBjYW4gdGhlbiBzdGF0aWNhbGx5IGNvbXB1 dGUgYXNzaWdubWVudHMgdXNpbmcgYSBmdW5jdGlvbiAoZWc6IG1vZHVsbyBOKS4NCllvdSBjYW4g cmVseSBvbiB0aGUgZm9sbG93aW5nIG1lY2hhbmlzbXMgdG8gcHJvdmlkZSB0aGlzIGlkOg0KIC0g Q29uZmlndXJlIGVhY2ggaW5zdGFuY2UgZGlmZmVyZW50bHkgdG8gaGF2ZSBpdHMgb3duIGlkDQog LSBPYnRhaW4gdGhlIGlkIGZyb20gdGhlIGNsdXN0ZXItbWFuYWdlci4gRm9yIGluc3RhbmNlLCBL dWJlcm5ldGVzIHdpbGwgcHJvdmlkZSBlYWNoIFBPRCBhbiB1bmlxdWUgaWQgaW4gdGhlIHJhbmdl IFswLE4pLiBBV1MgRUNTIHNob3VsZCBleHBvc2Ugc2ltaWxhciBjYXBhYmlsaXRpZXMgdmlhIGEg UkVTVCBlbmQtcG9pbnQuDQoNCj4+IE9uZSB0aGluZyBJJ20gc3RpbGwgY3VyaW91cyBhYm91dCwg aXMgd2hhdCBhcmUgdGhlIGRyYXdiYWNrcyBvciBjb21wbGV4aXRpZXMgb2YgbGV2ZXJhZ2luZyB0 aGUgS2Fma2EgSGlnaC1sZXZlbCBjb25zdW1lciArIFBhc3N0aHJvdWdoSm9iQ29vcmRpbmF0b3Ig aW4gYSBzdGFuZC1hbG9uZSBzZXR1cCBsaWtlIHRoaXM/DQoNCkxldmVyYWdpbmcgdGhlIEthZmth IEhpZ2gtbGV2ZWwgY29uc3VtZXI6DQoNClRoZSBLYWZrYSBoaWdoLWxldmVsIGNvbnN1bWVyIGlz IG5vdCBpbnRlZ3JhdGVkIGludG8gU2FtemEganVzdCB5ZXQuIEluc3RlYWQsIFNhbXphJ3MgaW50 ZWdyYXRpb24gd2l0aCBLYWZrYSB1c2VzIHRoZSBsb3ctbGV2ZWwgY29uc3VtZXIgYmVjYXVzZQ0K aSkgSXQgYWxsb3dzIGZvciBncmVhdGVyIGNvbnRyb2wgaW4gZmV0Y2hpbmcgZGF0YSBmcm9tIGlu ZGl2aWR1YWwgYnJva2Vycy4gSXQgaXMgc2ltcGxlIGFuZCBwZXJmb3JtYW50IGluLXRlcm1zIG9m IHRoZSB0aHJlYWRpbmcgbW9kZWwgdG8gaGF2ZSBvbmUtdGhyZWFkIHB1bGwgZnJvbSBlYWNoIGJy b2tlci4NCmlpKSBJdCBpcyBlZmZpY2llbnQgaW4gbWVtb3J5IHV0aWxpemF0aW9uIHNpbmNlIGl0 IGRvZXMgbm90IGRvIGludGVybmFsLWJ1ZmZlcmluZyBvZiBtZXNzYWdlcy4NCmlpaSkgVGhlcmUn cyBubyBvdmVyaGVhZCBsaWtlIEthZmthLWNvbnRyb2xsZXIgaGVhcnQtYmVhdHMgdGhhdCBhcmUg ZHJpdmVuIGJ5IGNvbnN1bWVyLnBvbGwNCg0KU2luY2UgdGhlcmUncyBubyBidWlsdC1pbiBpbnRl Z3JhdGlvbiwgeW91IHdpbGwgaGF2ZSB0byBidWlsZCBhIG5ldyBTeXN0ZW1Db25zdW1lciBpZiB5 b3UgbmVlZCB0byBpbnRlZ3JhdGUgd2l0aCB0aGUgS2Fma2EgSGlnaC1sZXZlbCBjb25zdW1lci4g RnVydGhlciwgdGhlcmUncyBtb3JlIGEgZmFpciBiaXQgb2YgY29tcGxleGl0eSB0byBtYW5hZ2Ug aW4gY2hlY2twb2ludGluZy4NCg0KPj4gVGhlIEthZmthIEhpZ2gtbGV2ZWwgY29uc3VtZXIgY29t ZXMgd2l0aCBvdGhlciBuaWNlIHRvb2xzIGZvciANCj4+IG1vbml0b3Jpbmcgb2Zmc2V0cywgbGFn LCBldGMNCg0KU2FtemEgZXhwb3NlczxodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL3NhbXphL2Js b2IvbWFzdGVyL3NhbXphLWthZmthL3NyYy9tYWluL3NjYWxhL29yZy9hcGFjaGUvc2FtemEvc3lz dGVtL2thZmthL0thZmthU3lzdGVtQ29uc3VtZXJNZXRyaWNzLnNjYWxhPiB0aGUgYmVsb3cgbWV0 cmljcyBmb3IgbGFnLW1vbml0b3Jpbmc6DQotIFRoZSBjdXJyZW50IGxvZy1lbmQgb2Zmc2V0IGZv ciBlYWNoIHBhcnRpdGlvbg0KLSBUaGUgbGFzdCBjaGVjay1wb2ludGVkIG9mZnNldCBmb3IgZWFj aCBwYXJ0aXRpb24NCi0gVGhlIG51bWJlciBvZiBtZXNzYWdlcyBiZWhpbmQgdGhlIGhpZ2h3YXRl cm1hcmsgb2YgdGhlIHBhcnRpdGlvbg0KDQpQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQg aGVscCBkaXNjb3ZlcmluZyB0aGVzZSBvciBpbnRlZ3JhdGluZyB0aGVzZSB3aXRoIG90aGVyIHN5 c3RlbXMvdG9vbHMuDQoNCg0KTGV2ZXJhZ2luZyB0aGUgUGFzc3Rocm91Z2ggSm9iQ29vcmRpbmF0 b3I6DQoNCkl0J3MgaGVscGZ1bCB0byBzcGxpdCB0aGlzIGRpc2N1c3Npb24gb24gdHJhZGVvZmZz IHdpdGggUGFzc3Rocm91Z2hKQyBpbnRvIDIgcGFydHM6DQoNCjEuIFBhc3N0aHJvdWdoSkMgKyBj b25zdW1lciBtYW5hZ2VkIHBhcnRpdGlvbnM6DQoNCi0gSW4gdGhpcyBtb2RlbCwgU2FtemEgaGFz IG5vIGNvbnRyb2wgb3ZlciBwYXJ0aXRpb24tYXNzaWdubWVudCBzaW5jZSBpdCdzIG1hbmFnZWQg YnkgdGhlIGNvbnN1bWVyLiBUaGlzIG1lYW5zIHRoYXQgc3RhdGVmdWwgb3BlcmF0aW9ucyBsaWtl IGpvaW5zIHRoYXQgcmVseSBvbiBwYXJ0aXRpb25zIGJlaW5nIGNvLWxvY2F0ZWQgb24gdGhlIHNh bWUgdGFzayB3aWxsIG5vdCB3b3JrLg0KU2ltcGxlIHN0YXRlbGVzcyBvcGVyYXRpb25zIChlZzog bWFwLCBmaWx0ZXIsIHJlbW90ZSBsb29rdXBzKSBhcmUgZmluZS4NCg0KLSBBIGtleSBkaWZmZXJl bnRpYXRvciBiZXR3ZWVuIFNhbXphIGFuZCBvdGhlciBmcmFtZXdvcmtzIGlzIG91ciBzdXBwb3J0 IGZvciAiaG9zdCBhZmZpbml0eTxodHRwczovL3NhbXphLmFwYWNoZS5vcmcvbGVhcm4vZG9jdW1l bnRhdGlvbi8wLjE0L3lhcm4veWFybi1ob3N0LWFmZmluaXR5Lmh0bWw+Ii4gU2FtemEgYWNoaWV2 ZXMgdGhpcyBieSBhc3NpZ25pbmcgcGFydGl0aW9ucyB0byBob3N0cyB0YWtpbmcgZGF0YS1sb2Nh bGl0eSBpbnRvIGFjY291bnQuIElmIHRoZSBjb25zdW1lciBjYW4gYXJiaXRyYXJpbHkgc2h1ZmZs ZSBwYXJ0aXRpb25zLCBpdCdkIGJlIGhhcmQgdG8gc3VwcG9ydCB0aGlzIGFmZmluaXR5L2xvY2Fs aXR5LiBPZnRlbiB0aGlzIGlzIGEga2V5IG9wdGltaXphdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBs YXJnZSBzdGF0ZWZ1bCBqb2JzLg0KDQoyLiBQYXNzdGhyb3VnaEpDICsgc3RhdGljIHBhcnRpdGlv bnM6DQoNCi0gSW4gdGhpcyBtb2RlbCwgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBzdGF0ZWZ1bCBw cm9jZXNzaW5nIChpbmNsdWRpbmcgaG9zdCBhZmZpbml0eSkgd29yayBieSBjYXJlZnVsbHkgY2hv b3NpbmcgaG93ICJpZCJzIGFyZSBhc3NpZ25lZCBhbmQgY29tcHV0ZWQuDQoNClJlY29tbWVuZGF0 aW9uOg0KDQotIE93aW5nIHRvIHRoZSBhYm92ZSBzdWJ0bGV0aWVzLCBJIHdvdWxkIHJlY29tbWVu ZCB0aGF0IHdlIGdpdmUgdGhlIFprSm9iQ29vcmRpbmF0b3IgKyB0aGUgYnVpbHQtaW4gbG93LWxl dmVsIEthZmthIGludGVncmF0aW9uIGEgdHJ5Lg0KLSBJZiB3ZSBoaXQgc25hZ3MgZG93biB0aGlz IHBhdGgsIHdlIGNhbiBjZXJ0YWlubHkgZXhwbG9yZSB0aGUgYXBwcm9hY2ggd2l0aCBQYXNzdGhy b3VnaEpDICsgc3RhdGljIHBhcnRpdGlvbnMuDQotIFVzaW5nIHRoZSBQYXNzdGhyb3VnaEpDICsg Y29uc3VtZXItbWFuYWdlZCBkaXN0cmlidXRpb24gd291bGQgYmUgbGVhc3QgcHJlZmVyYWJsZSBv d2luZyB0byB0aGUgc3VidGxldGllcyBJIG91dGxpbmVkIGFib3ZlLg0KDQpQbGVhc2UgbGV0IHVz IGtub3cgc2hvdWxkIHlvdSBoYXZlIG1vcmUgcXVlc3Rpb25zLg0KDQpCZXN0LA0KSmFnZGlzaA0K DQpPbiBXZWQsIE1hciAxNCwgMjAxOCBhdCA5OjI0IFBNLCBUaHVuZGVyIFN0dW1wZ2VzIDx0c3R1 bXBnZXNAbnRlbnQuY29tPG1haWx0bzp0c3R1bXBnZXNAbnRlbnQuY29tPj4gd3JvdGU6DQpXb3cs IHdoYXQgZ3JlYXQgdGltaW5nLCBhbmQgd2hhdCBhIGdyZWF0IHRocmVhZCEgSSBkZWZpbml0ZWx5 IGhhdmUgc29tZSBnb29kIHN0YXJ0ZXJzIHRvIGdvIG9mZiBvZiBoZXJlLg0KDQpJZiBpdCBpcyBo ZWxwZnVsIGZvciBldmVyeW9uZSwgb25jZSBJIGdldCB0aGUgbG93LWxldmVsIEFQSSArIFprSm9i Q29vcmRpbmF0b3IgKyBEb2NrZXIgKyBLOHMgd29ya2luZywgSSdkIGJlIGdsYWQgdG8gZm9ybXVs YXRlIGFuIGFkZGl0aW9uYWwgc2FtcGxlIGZvciBoZWxsby1zYW16YS4NCg0KT25lIHRoaW5nIEkn bSBzdGlsbCBjdXJpb3VzIGFib3V0LCBpcyB3aGF0IGFyZSB0aGUgZHJhd2JhY2tzIG9yIGNvbXBs ZXhpdGllcyBvZiBsZXZlcmFnaW5nIHRoZSBLYWZrYSBIaWdoLWxldmVsIGNvbnN1bWVyICsgUGFz c3Rocm91Z2hKb2JDb29yZGluYXRvciBpbiBhIHN0YW5kLWFsb25lIHNldHVwIGxpa2UgdGhpcz8g V2UgZG8gaGF2ZSBab29rZWVwZXIgKGJlY2F1c2Ugb2Yga2Fma2EpIHNvIEkgdGhpbmsgZWl0aGVy IHdvdWxkIHdvcmsuIFRoZSBLYWZrYSBIaWdoLWxldmVsIGNvbnN1bWVyIGNvbWVzIHdpdGggb3Ro ZXIgbmljZSB0b29scyBmb3IgbW9uaXRvcmluZyBvZmZzZXRzLCBsYWcsIGV0Yy4uLi4NCg0KVGhh bmtzIGd1eXMhDQotVGh1bmRlcg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTog VG9tIERhdmlzIFttYWlsdG86dG9tQHJlY3Vyc2l2ZWRyZWFtLmNvbTxtYWlsdG86dG9tQHJlY3Vy c2l2ZWRyZWFtLmNvbT5dDQpTZW50OiBXZWRuZXNkYXksIE1hcmNoIDE0LCAyMDE4IDE3OjUwDQpU bzogZGV2QHNhbXphLmFwYWNoZS5vcmc8bWFpbHRvOmRldkBzYW16YS5hcGFjaGUub3JnPg0KU3Vi amVjdDogUmU6IE9sZCBzdHlsZSAibG93IGxldmVsIiBUYXNrcyB3aXRoIGFsdGVybmF0aXZlIGRl cGxveW1lbnQgbW9kZWwocykNCg0KSGV5IHRoZXJlIQ0KDQpZb3UgYXJlIGNvcnJlY3QgdGhhdCB0 aGlzIGlzIGZvY3VzZWQgb24gdGhlIGhpZ2hlci1sZXZlbCBBUEkgYnV0IGRvZXNuJ3QgcHJlY2x1 ZGUgdXNpbmcgdGhlIGxvd2VyLWxldmVsIEFQSS4gSSB3YXMgYXQgdGhlIHNhbWUgcG9pbnQgeW91 IHdlcmUgbm90IGxvbmcgYWdvLCBpbiBmYWN0LCBhbmQgaGFkIGEgdmVyeSBwcm9kdWN0aXZlIGNv bnZlcnNhdGlvbiBvbiB0aGUgbGlzdDoNCnlvdSBzaG91bGQgbG9vayBmb3IgIlF1ZXN0aW9uIGFi b3V0IGN1c3RvbSBTdHJlYW1Kb2IvRmFjdG9yeSIgaW4gdGhlIGxpc3QgYXJjaGl2ZSBmb3IgdGhl IHBhc3QgY291cGxlIG1vbnRocy4NCg0KSSdsbCBxdW90ZSBKYWdhZGlzaCBWZW5rYXRyYW1hbiBm cm9tIHRoYXQgdGhyZWFkOg0KDQo+IEZvciB0aGUgc2VjdGlvbiBvbiB0aGUgbG93LWxldmVsIEFQ SSwgY2FuIHlvdSB1c2UgDQo+IExvY2FsQXBwbGljYXRpb25SdW5uZXIjcnVuVGFzaygpPyBJdCBi YXNpY2FsbHkgY3JlYXRlcyBhIG5ldyANCj4gU3RyZWFtUHJvY2Vzc29yIGFuZCBydW5zIGl0LiBS ZW1lbWJlciB0byBwcm92aWRlIHRhc2suY2xhc3MgYW5kIHNldCBpdCANCj4gdG8geW91ciBpbXBs ZW1lbnRhdGlvbiBvZiBTdHJlYW1UYXNrIG9yIEFzeW5jU3RyZWFtVGFzay4gUGxlYXNlIG5vdGUg DQo+IHRoYXQgdGhpcyBpcyBhbiBldm9sdmluZyBBUEkgYW5kIGhlbmNlLCBzdWJqZWN0IHRvIGNo YW5nZS4NCg0KSSBlbmRlZCB1cCBqdXN0IHN3aXRjaGluZyB0byB0aGUgaGlnaC1sZXZlbCBBUEkg YmVjYXVzZSBJIGRvbid0IGhhdmUgYW55IGV4aXN0aW5nIFRhc2tzIGFuZCB0aGUgS3ViZXJuZXRl cyBzdG9yeSBpcyBhIGxpdHRsZSBtb3JlIHN0cmFpZ2h0IGZvcndhcmQgdGhlcmUgKHRoZXJlJ3Mg b25seSBvbmUgY29udGFpbmVyL2NvbmZpZ3VyYXRpb24gdG8gZGVwbG95KS4NCg0KQmVzdCwNCg0K VG9tDQoNClRodW5kZXIgU3R1bXBnZXMgPHRzdHVtcGdlc0BudGVudC5jb208bWFpbHRvOnRzdHVt cGdlc0BudGVudC5jb20+PiB3cml0ZXM6DQoNCj4gSGkgYWxsLA0KPg0KPiBXZSBhcmUgdXNpbmcg U2FtemEgKDAuMTIuMCkgaW4gYWJvdXQgMiBkb3plbiBqb2JzIGltcGxlbWVudGluZyBzZXZlcmFs IA0KPiBwcm9jZXNzaW5nIHBpcGVsaW5lcy4gV2UgaGF2ZSBhbHNvIGJlZ3VuIGEgc2lnbmlmaWNh bnQgbW92ZSBvZiBvdGhlciANCj4gc2VydmljZXMgd2l0aGluIG91ciBjb21wYW55IHRvIERvY2tl ci9LdWJlcm5ldGVzLiBSaWdodCBub3cgb3VyIA0KPiBIYWRvb3AvWWFybiBjbHVzdGVyIGhhcyBh IG1peCBvZiBzdHJlYW0gYW5kIGJhdGNoICJNYXAgUmVkdWNlIiBqb2JzIChtYW55IHJlcG9ydGlu ZyBhbmQgb3RoZXIgYmF0Y2ggcHJvY2Vzc2luZyBqb2JzKS4gV2Ugd291bGQgcmVhbGx5IGxpa2Ug dG8gbW92ZSBvdXIgc3RyZWFtIHByb2Nlc3Npbmcgb2ZmIG9mIEhhZG9vcC9ZYXJuIGFuZCBvbnRv IEt1YmVybmV0ZXMuDQo+DQo+IFdoZW4gSSBqdXN0IHJlYWQgYWJvdXQgc29tZSBvZiB0aGUgbmV3 IHByb2dyZXNzIGluIC4xMyBhbmQgLjE0IEkgZ290IA0KPiByZWFsbHkgZXhjaXRlZCEgV2Ugd291 bGQgbG92ZSB0byBoYXZlIG91ciBqb2JzIHJ1biBhcyBzaW1wbGUgbGlicmFyaWVzIA0KPiBpbiBv dXIgb3duIEpWTSwgYW5kIHVzZSB0aGUgS2Fma2EgSGlnaC1MZXZlbC1Db25zdW1lciBmb3IgcGFy dGl0aW9uIGRpc3RyaWJ1dGlvbiBhbmQgc3VjaC4gVGhpcyB3b3VsZCBsZXQgdXMgImRvY2tlcmZ5 IiBvdXIgYXBwbGljYXRpb24gYW5kIHJ1bi9zY2FsZSBpbiBrdWJlcm5ldGVzLg0KPg0KPiBIb3dl dmVyIGFzIEkgcmVhZCBpdCwgdGhpcyBuZXcgZGVwbG95bWVudCBtb2RlbCBpcyBPTkxZIGZvciB0 aGUNCj4gbmV3KGVyKSBIaWdoIExldmVsIEFQSSwgY29ycmVjdD8gSXMgdGhlcmUgYSBwbGFuIGFu ZC9vciByZXNvdXJjZXMgZm9yIA0KPiBhZGFwdGluZyB0aGlzIGJhY2sgdG8gZXhpc3RpbmcgbG93 LWxldmVsIHRhc2tzID8gSG93IGNvbXBsaWNhdGVkIG9mIGEgdGFzayBpcyB0aGF0PyBEbyBJIGhh dmUgYW55IG90aGVyIG9wdGlvbnMgdG8gbWFrZSB0aGlzIHRyYW5zaXRpb24gZWFzaWVyPw0KPg0K PiBUaGFua3MgaW4gYWR2YW5jZS4NCj4gVGh1bmRlcg0KDQoNCg0KLS0NCkphZ2FkaXNoIFYsDQpH cmFkdWF0ZSBTdHVkZW50LA0KRGVwYXJ0bWVudCBvZiBDb21wdXRlciBTY2llbmNlLA0KU3RhbmZv cmQgVW5pdmVyc2l0eQ0KDQoNCg0KLS0NCkphZ2FkaXNoIFYsDQpHcmFkdWF0ZSBTdHVkZW50LA0K RGVwYXJ0bWVudCBvZiBDb21wdXRlciBTY2llbmNlLA0KU3RhbmZvcmQgVW5pdmVyc2l0eQ0K