Return-Path: X-Original-To: apmail-cordova-dev-archive@www.apache.org Delivered-To: apmail-cordova-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 343BDC7AC for ; Wed, 17 Dec 2014 16:46:58 +0000 (UTC) Received: (qmail 39936 invoked by uid 500); 17 Dec 2014 16:46:55 -0000 Delivered-To: apmail-cordova-dev-archive@cordova.apache.org Received: (qmail 39898 invoked by uid 500); 17 Dec 2014 16:46:55 -0000 Mailing-List: contact dev-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list dev@cordova.apache.org Received: (qmail 39261 invoked by uid 99); 17 Dec 2014 16:46:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Dec 2014 16:46:54 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of clantz@microsoft.com designates 65.55.169.122 as permitted sender) Received: from [65.55.169.122] (HELO na01-bl2-obe.outbound.protection.outlook.com) (65.55.169.122) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Dec 2014 16:46:27 +0000 Received: from BLUPR03MB065.namprd03.prod.outlook.com (10.255.209.153) by BLUPR03MB067.namprd03.prod.outlook.com (10.255.209.155) with Microsoft SMTP Server (TLS) id 15.1.49.10; Wed, 17 Dec 2014 16:46:03 +0000 Received: from BLUPR03MB065.namprd03.prod.outlook.com ([169.254.4.20]) by BLUPR03MB065.namprd03.prod.outlook.com ([169.254.4.20]) with mapi id 15.01.0049.002; Wed, 17 Dec 2014 16:46:02 +0000 From: Chuck Lantz To: "dev@cordova.apache.org" Subject: RE: How to handle CSP for XHR in Cordova 4.0 Thread-Topic: How to handle CSP for XHR in Cordova 4.0 Thread-Index: AQHQFhYFaodJZ83BnkuhGcf9AmMOw5yMLHkAgAALFICABKQtIIAAL8DogABeXeCAAPGogIABk6fwgAAOzT2AAAS58A== Date: Wed, 17 Dec 2014 16:46:02 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [74.36.136.83] authentication-results: cordova.apache.org; dkim=none (message not signed) header.d=none; x-microsoft-antispam: BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB067; x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB067; x-forefront-prvs: 042857DBB5 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(51704005)(189002)(377454003)(15404003)(199003)(24454002)(120916001)(99396003)(31966008)(21056001)(2656002)(20776003)(106116001)(46102003)(4396001)(106356001)(64706001)(66066001)(99286002)(19580405001)(92566001)(19580395003)(2351001)(86362001)(110136001)(74316001)(105586002)(107046002)(107886001)(101416001)(76576001)(33656002)(180100001)(54356999)(76176999)(62966003)(77156002)(450100001)(54206007)(54606007)(50986999)(40100003)(97736003)(122556002)(87936001)(86612001)(68736005)(93886004)(2900100001)(102836002)(2950100001)(15975445007)(2501002);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB067;H:BLUPR03MB065.namprd03.prod.outlook.com;FPR:;SPF:None;MLV:sfv;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.onmicrosoft.com X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Dec 2014 16:46:02.4843 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB067 X-Virus-Checked: Checked by ClamAV on apache.org SSBzdXBwb3NlIHRoYXQgaXMgYSBnb29kIHF1ZXN0aW9uLiBJIHRvb2sgYSBsb29rIGF0IHRoZSBX aWRnZXQgQWNjZXNzIFJlcXVlc3QgUG9saWN5IFczQyBzcGVjIHdoZXJlIHRoYXQgZWxlbWVudCBj b21lcyBmcm9tLiAgSXQncyBhY3R1YWxseSBwcmV0dHkgYW1iaWd1b3VzLg0KDQoiQSB1c2VyIGFn ZW50IGVuZm9yY2VzIGFuIGFjY2VzcyByZXF1ZXN0IHBvbGljeS4gLi4uIEluIHRoZSBkZWZhdWx0 IHBvbGljeSwgYSB1c2VyIGFnZW50IG11c3QgZGVueSBhY2Nlc3MgdG8gbmV0d29yayByZXNvdXJj ZXMgZXh0ZXJuYWwgdG8gdGhlIHdpZGdldCBieSBkZWZhdWx0LCB3aGV0aGVyIHRoaXMgYWNjZXNz IGlzIHJlcXVlc3RlZCB0aHJvdWdoIEFQSXMgKGUuZy4gWE1MSHR0cFJlcXVlc3QpIG9yIHRocm91 Z2ggbWFya3VwIChlLmcuIGlmcmFtZSwgc2NyaXB0LCBpbWcpLi4iDQoNCi4uLiBidXQuLi4NCg0K IkEgdXNlciBhZ2VudCBtYXkgYXBwbHkgYSBkaWZmZXJlbnQgZGVmYXVsdCBwb2xpY3kgaWYgdGhl IHdpZGdldCBpcyBiZWluZyB1c2VkIGluIGEgY29udGV4dCB0aGF0IGRlZmluZXMgaXRzIG93biBw b2xpY3ksIHN1Y2ggYXMgZm9yIGluc3RhbmNlIGEgd2lkZ2V0IHNlcnZlZCBvdmVyIEhUVFAuIEEg bW9yZSBsZW5pZW50IHBvbGljeSBjYW4gYmUgZGVmaW5lZCB3aXRoIHRoZSBhY2Nlc3MtcmVxdWVz dCBsaXN0IGFzIGRlZmluZWQgaW4gdGhlIHByb2Nlc3Npbmcgc2VjdGlvbi4gLi4uIEZ1cnRoZXJt b3JlLCBhIHVzZXIgYWdlbnQgbWF5IGdyYW50IGFjY2VzcyB0byBjZXJ0YWluIFVSSSBzY2hlbWVz IChlLmcuLCBtYWlsdG86KSB3aXRob3V0IHRoZSBuZWVkIG9mIGFuIGFjY2VzcyByZXF1ZXN0IGlm IGl0cyBzZWN1cml0eSBwb2xpY3kgY29uc2lkZXJzIHRob3NlIHNjaGVtZXMgYmVuaWduLiINCg0K SXQgc3RyaWtlcyBtZSB0aGF0IHRvZGF5IHdlIGltcGxlbWVudCB0aGUgZGVmYXVsdCBwb2xpY3kg YW5kIHdoYXQgd2UncmUgcHJvcG9zaW5nIGhlcmUgaXMgYSBtb3JlIGxlbmllbnQsIGFsdGVybmF0 ZSBwb2xpY3kuDQoNCkZvciB3aGF0IGl0J3Mgd29ydGgsIGhlcmUncyBob3cgdGhpcyBpcyBkZWZp bmVkIGluIHRoZSBXaW5kb3dzIHdvcmxkOg0KDQogICAgICA8QXBwbGljYXRpb25Db250ZW50VXJp UnVsZXM+DQogICAgICAgICAgPFJ1bGUgTWF0Y2g9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iIFR5 cGU9ImluY2x1ZGUiIC8+DQogICAgICA8L0FwcGxpY2F0aW9uQ29udGVudFVyaVJ1bGVzPg0KDQot Q2h1Y2sNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IElhbiBDbGVsbGFuZCBb bWFpbHRvOmljbGVsbGFuZEBjaHJvbWl1bS5vcmddIA0KU2VudDogV2VkbmVzZGF5LCBEZWNlbWJl ciAxNywgMjAxNCA4OjE2IEFNDQpUbzogZGV2QGNvcmRvdmEuYXBhY2hlLm9yZw0KU3ViamVjdDog UmU6IEhvdyB0byBoYW5kbGUgQ1NQIGZvciBYSFIgaW4gQ29yZG92YSA0LjANCg0KRGVmaW5pdGVs eSB3YW50IHRvIGhhbmRsZSBpT1MsIHdpdGggdGhlIHNhbWUgcG9saWN5LiBJJ3ZlIGJlZW4gd29y a2luZyBvbiB0aGF0IGluIHBhcmFsbGVsIHdpdGggQW5kcm9pZC4NCg0KRG8gd2Ugd2FudCB0byB1 c2UgPGFjY2Vzcz4gZm9yIE5hdj8gSSB3YXNuJ3Qgc3VyZSwgZ2l2ZW4gaXRzIGhpc3RvcnksIGFu ZCB0aGUgZmFjdCB0aGF0IHdlJ3JlIGNoYW5naW5nIGl0cyBiZWhhdmlvdXIuIElzIGl0IGJldHRl ciB0byBzdGljayB3aXRoIHRoZSBmYW1pbGlhciB0YWcgYW5kIGNoYW5nZSB3aGF0IGl0IHRyaWVz IHRvIGRvPyBPciBjcmVhdGUgYSBuZXcgdGFnIGFuZCBkZXByZWNhdGUgPGFjY2Vzcz4/DQoNCk9u IFdlZCBEZWMgMTcgMjAxNCBhdCAxMDozMDoxOCBBTSBDaHVjayBMYW50eiA8Y2xhbnR6QG1pY3Jv c29mdC5jb20+IHdyb3RlOg0KDQo+IFdoYXQgYWJvdXQgdG9wIGxldmVsIG5hdiBhbmQgc2NyaXB0 IGFjY2Vzcz8gIFdvdWxkIHRoZSB0aG91Z2h0IGJlIHRoYXQgDQo+IHRoZSA8YWNjZXNzPiBlbGVt ZW50cyB3b3VsZCBtYXAgdG8gdGhhdCBpbiB0aGUgYmFzZSBwbGF0Zm9ybT8gIEknbSANCj4gdGhp bmtpbmcgaW4gdGVybXMgb2YgY29uc2lzdGVuY3kgYWNyb3NzIHRoZSBkaWZmZXJlbnQgcGxhdGZv cm1zLiAgSXQgDQo+IHN0cmlrZXMgbWUgd2UnZCB3YW50IHRvIHVwZGF0ZSBpT1MgYXQgbGVhc3Qg YXMgd2VsbC4NCj4NCj4gLUNodWNrDQo+DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IGFncmlldmVAZ29vZ2xlLmNvbSBbbWFpbHRvOmFncmlldmVAZ29vZ2xlLmNvbV0gT24g QmVoYWxmIE9mIA0KPiBBbmRyZXcgR3JpZXZlDQo+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDE2 LCAyMDE0IDc6MjEgQU0NCj4gVG86IGRldg0KPiBTdWJqZWN0OiBSZTogSG93IHRvIGhhbmRsZSBD U1AgZm9yIFhIUiBpbiBDb3Jkb3ZhIDQuMA0KPg0KPiBPbiBNb24sIERlYyAxNSwgMjAxNCBhdCA4 OjE5IFBNLCBDaHVjayBMYW50eiA8Y2xhbnR6QG1pY3Jvc29mdC5jb20+IHdyb3RlOg0KPiA+DQo+ ID4gTmVhciB0ZXJtLCBmb3IgV2luZG93cyA4LjAvOC4xLCBhIGN1c3RvbSBzZWN1cml0eSBwb2xp Y3kgaXMgaW4gcGxhY2UgDQo+ID4gYXQgdGhlIHBsYXRmb3JtIGxldmVsIGZvciBzdG9yZSBhcHBz IHNvIENTUCBkb2Vzbid0IHJlYWxseSBhcHBseSANCj4gPiB0aGVyZSBhdCB0aGUgbW9tZW50LiAo QW5kLCB0byBiZSByZWFsbHkgc3BlY2lmaWMsIENTUCBzdXBwb3J0IGlzIA0KPiA+IHByZXR0eSBs aW1pdGVkIGluDQo+ID4gSUUxMC8xMSBmb2N1c2luZyBvbiB0aGUgc2FuZGJveCBkaXJlY3RpdmUu IFRoZSBXaW5kb3dzIDEwIFRlY2ggDQo+ID4gUHJldmlldyBpcyB3aGVyZSB5b3UgY2FuIHNlZSB0 aGUgcmVhbCBzdXBwb3J0IGluIElFIHJpZ2h0IG5vdy4pIFNvLCANCj4gPiBpdCdzIGEgbW9yZSBv ZiBmb3J3YXJkLXRoaW5raW5nIHRvcGljIGluIHRoYXQgd29ybGQuDQo+ID4NCj4gPiBBIHJlbGF0 ZWQgcXVlc3Rpb24sIGhvd2V2ZXIgLSBDU1Agc3VwcG9ydCBvbmx5IHN0YXJ0ZWQgaW4gdGhlIA0K PiA+IEFuZHJvaWQgYnJvd3NlciB3aXRoIDQuNCBkaWQgaXQgbm90PyBPYnZpb3VzbHkgQ3Jvc3N3 YWxrIHdvdWxkIGhhdmUgDQo+ID4gaXQgYnV0IHdoYXQgYWJvdXQgd2hlbiB1c2luZyB0aGUgYmFz ZSBicm93c2VyPyAgSXMgdGhlIHRob3VnaHQgZGV2cyANCj4gPiBzaG91bGQgdXNlIHRoZSBvbGQg d2hpdGVsaXN0IG1vZGVsIGhlcmU/DQo+ID4NCj4NCj4gSSB0aGluayBvbmUgb2YgdGhlIGJpZyBp c3N1ZXMgaXMgdGhhdCB0aGUgd2hpdGVsaXN0IG5ldmVyIHdvcmtlZCBmb3IgDQo+IGJsb2NraW5n ICphbGwqIHJlcXVlc3RzLiBJdCBkaWRuJ3Qgd29yayBwcmUtMy4wLCBhbmQgaXQgZG9lc24ndCBi bG9jayANCj4gPGF1ZGlvPiwgPHZpZGVvPiwgd2Vic29ja2V0IGluIGFueSB2ZXJzaW9uLiBTdXBw b3J0aW5nIHRoZSBpbGx1c2lvbiBvZiANCj4gYSB3aGl0ZWxpc3QgaXMgcHJvYmFibHkgd29yc2Ug dGhhbiBub3Qgc3VwcG9ydGluZyBpdCBhdCBhbGwuDQo+DQo+DQo+DQo+ID4NCj4gPiBTYWZhcmkg c2VlbXMgdG8gc3VwcG9ydCBpdCBiYWNrIGF0IGxlYXN0IGFzIGZhciBhcyBpT1MgNyAob3IgNiB3 aXRoIA0KPiA+IGEgY3VzdG9tIGhlYWRlcikgLSB0aGUgbWFpbiByZWFzb24gSSBicmluZyBpdCB1 cCBpcyBkZXZlbG9wZXJzIGNvdWxkIA0KPiA+IHNlZSBkaWZmZXJlbnQgYmVoYXZpb3JzIGJldHdl ZW4gZGV2aWNlcyBhbmQgdmVyc2lvbnMgaWYgdGhlIGRlZmF1bHQgDQo+ID4gQ1NQIHBvbGljeSBs ZWF2ZXMgc29tZXRoaW5nIGxpa2UgaW5saW5lIG9yIGV2YWwgZGlzYWJsZWQuDQo+ID4NCj4gPiAt Q2h1Y2sNCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogSWFu IENsZWxsYW5kIFttYWlsdG86aWNsZWxsYW5kQGNocm9taXVtLm9yZ10NCj4gPiBTZW50OiBNb25k YXksIERlY2VtYmVyIDE1LCAyMDE0IDExOjE3IEFNDQo+ID4gVG86IGRldkBjb3Jkb3ZhLmFwYWNo ZS5vcmcNCj4gPiBTdWJqZWN0OiBSZTogSG93IHRvIGhhbmRsZSBDU1AgZm9yIFhIUiBpbiBDb3Jk b3ZhIDQuMA0KPiA+DQo+ID4gT24gTW9uIERlYyAxNSAyMDE0IGF0IDExOjI4OjQzIEFNIENodWNr IExhbnR6IDxjbGFudHpAbWljcm9zb2Z0LmNvbT4NCj4gPiB3cm90ZToNCj4gPg0KPiA+ID4gRm9y IHRoZSBXaW5kb3dzIHBsYXRmb3JtLCBJRSAxMCBhbmQgMTEgc3VwcG9ydCBDU1AgMS4wIC0gdGhl cmUncyANCj4gPiA+IG9uZSBzdWJ0bGUgZGlmZmVyZW5jZSAoWC1Db250ZW50LVNlY3VyaXR5LVBv bGljeSB2cyANCj4gPiA+IENvbnRlbnQtU2VjdXJpdHktUG9saWN5IGluIHRoZSBIVFRQIGhlYWRl cikuICBUaGUgV2luIDEwIFRlY2ggDQo+ID4gPiBQcmV2aWV3DQo+ID4gYWxyZWFkeSBoYXMgZnVs bCBDU1Agc3VwcG9ydC4NCj4gPiA+IEluIGdlbmVyYWwsIHRoZSBjb252ZW50aW9uYWwgd2lzZG9t IGlzIHRvIHB1c2ggYXBwIG1vZGVscyB0b3dhcmRzIA0KPiA+ID4gdGhlIENTUCBhbmQgYXdheSBm cm9tIGN1c3RvbSBlbmZvcmNlbWVudCBwb2xpY2llcyBmcm9tIG91ciBwb2ludCANCj4gPiA+IG9m DQo+IHZpZXcuDQo+ID4gPiBJIGxvdmUgdGhlIGlkZWEgb2YgQ29yZG92YSBoZWFkaW5nIHRoaXMg c2FtZSBkaXJlY3Rpb24uDQo+ID4gPg0KPiA+DQo+ID4gVGhhdCdzIGdyZWF0IHRvIGhlYXIuDQo+ ID4NCj4gPiA+DQo+ID4gPiBXaW5kb3dzIGFwcHMgaGF2ZSBhIFVSSSB3aGl0ZWxpc3QgZm9jdXNl ZCBvbiB0b3AgbGV2ZWwgbmF2aWdhdGlvbiANCj4gPiA+IGFuZCBKYXZhU2NyaXB0IGluY2x1ZGVz IG9uIHBhZ2VzIG5vdCBYSFIuIFRoZSBtYWluIHJlYXNvbiB0byBsb2NrIA0KPiA+ID4gZG93biBh dCB0aGlzIGxldmVsIGlzIHRvIHJlZHVjZSB0aGUgcmlzayBvZiBhIG1hbGljaW91cyB1c2VyIA0K PiA+ID4gbmF2aWdhdGluZyB0aGUgcGFnZSB0byBhIFVSSSBvdXRzaWRlIG9mIHRoZSBhcHAgYXV0 aG9yJ3MgY29udHJvbCANCj4gPiA+IGFuZCB0YWtlIGFkdmFudGFnZSBvZiBzZW5zaXRpdmUgQVBJ cy4gIFNvLCBJIHRoaW5rIHNvbWUgbGV2ZWwgb2YgDQo+ID4gPiB3aGl0ZWxpc3QgdG8gaGVscCBv dXQgaW4gdGhpcyBzaXR1YXRpb24gaXMgYWR2aXNhYmxlIGV2ZW4gd2l0aCBDU1AgDQo+ID4gPiBi ZWluZyB1c2VkLiBXZeKAmXZlIG1hcHBlZCA8YWNjZXNzPiBlbGVtZW50cyBpbiBjb25maWcueG1s IHRvIHRoZSANCj4gPiA+IHRvcCBsZXZlbCBuYXYgd2hpdGVsaXN0IGZvciB0aGlzIHJlYXNvbi4g Q1NQIGlzbuKAmXQgcmVhbGx5IGRlc2lnbmVkIA0KPiA+ID4gdG8gaGVscA0KPiB3aXRoIHRoaXMg a2luZCBvZiBwcm9ibGVtLg0KPiA+ID4NCj4gPg0KPiA+IEFncmVlZC4gQ1NQIG9uIHRoZSB3ZWIg Y2FuJ3QgcmVhbGx5IGNvbnRyb2wgbmF2aWdhdGlvbiwgb3IgZWxzZSB3ZWIgDQo+ID4gcGFnZSBh dXRob3JzIHdvdWxkIGJlIGFibGUgdG8gdHJhcCBicm93c2VyIHdpbmRvd3Mgb24gdGhlaXIgc2l0 ZXMuIA0KPiA+IEl0IG1ha2VzIHNlbnNlIGZvciBpbnN0YWxsZWQgYXBwcywgYnV0IG5vdCBzbyBt dWNoIGZvciBzaXRlcyBvciB3ZWIgYXBwcy4NCj4gPg0KPiA+DQo+ID4gPg0KPiA+ID4gUGVyaGFw cyBhIGRlZmF1bHQgQ1NQIHBvbGljeSBpbiB0aGUgdGVtcGxhdGUgY291cGxlZCB3aXRoIGEgdG9w IA0KPiA+ID4gbGV2ZWwgbmF2IHdoaXRlbGlzdCBpcyB0aGUgcmlnaHQgc3RhcnRpbmcgcG9pbnQu DQo+ID4NCj4gPg0KPiA+IFRoYXQgc291bmRzIGxpa2Ugd2hhdCBJJ20gdHJ5aW5nIHRvIGltcGxl bWVudCBvbiBBbmRyb2lkIGFuZCBpT1MuIA0KPiA+IExldCBtZSBrbm93IHdoYXQgSSBjYW4gZG8g dG8gbWFrZSB0aGF0IGVhc3kgZm9yIFdpbmRvd3MuDQo+ID4NCj4gPg0KPiA+ID4gRGV0ZXJtaW5p bmcgd2hhdCB0aGUgQ1NQIHBvbGljeSBsb29rcyBsaWtlIHdpbGwgYmUgcmVhbGx5IA0KPiA+ID4g aW1wb3J0YW50IOKAkyBieSBkZWZhdWx0IENTUCBibG9ja3MgYm90aCBpbmxpbmUgYW5kIGV2YWwg dXNlLiBPZiB0aGUgDQo+ID4gPiB0d28sIGlubGluZSB1c2UgdGVuZHMgdG8gYmUgdGhlIGJpZ2dl ciByaXNrIGZhY3Rvci4NCj4gPiA+DQo+ID4NCj4gPiBUcnVlIC0tIGV2YWwgd2l0aG91dCBpbmxp bmUgY2FuIHRoZW9yZXRpY2FsbHkgYmUgY29udHJvbGxlZCwgDQo+ID4gYWx0aG91Z2ggaXQncyBu b3QgZ3JlYXQgcHJhY3RpY2UuIGlubGluZSwgd2l0aCBvciB3aXRob3V0IGV2YWwgaXMgYW4gDQo+ ID4gWFNTIHdhaXRpbmcgdG8gaGFwcGVuLCBpbiBhIHdlYiBhcHAuDQo+ID4NCj4gPg0KPiA+ID4N Cj4gPiA+IC1DaHVjaw0KPiA+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gPiBGcm9tOiBJYW4gQ2xlbGxhbmQgW21haWx0bzppY2xlbGxhbmRAZ29vZ2xlLmNvbV0NCj4g PiA+IFNlbnQ6IEZyaWRheSwgRGVjZW1iZXIgMTIsIDIwMTQgOTozNCBBTQ0KPiA+ID4gVG86IGRl dkBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBIb3cgdG8gaGFuZGxlIENT UCBmb3IgWEhSIGluIENvcmRvdmEgNC4wDQo+ID4gPg0KPiA+ID4gRGVmYXVsdCBDU1AgaXMgYSBn b29kIGlkZWEuIEkgd2FzIHdvcnJpZWQgYWJvdXQgbGVhdmluZyBuZXcgYXBwcyANCj4gPiA+IHZ1 bG5lcmFibGUgYnkgZGVmYXVsdCBidXQgdGhhdCBzaG91bGQgY2xvc2UgdGhhdC4NCj4gPiA+DQo+ ID4gPiBEbyB3ZSBrbm93IHdoYXQgdGhlIENTUCBzdG9yeSBpcyBvbiBhbGwgcGxhdGZvcm1zLCB0 byBrbm93IHRoYXQgaXQgDQo+ID4gPiB3b24ndCBicmVhayBhbnl0aGluZyBlbHNlPw0KPiA+ID4g T24gMTIgRGVjIDIwMTQgMTE6NTYsICJNaWNoYWwgTW9jbnkiIDxtbW9jbnlAY2hyb21pdW0ub3Jn PiB3cm90ZToNCj4gPiA+DQo+ID4gPiA+IEknbSBmaW5lIHdpdGggMS4gY291cGxlZCB3aXRoIGEg ZGVmYXVsdCBDU1AgaW4gdGhlIHRlbXBsYXRlDQo+ID4gYXBwbGljYXRpb24uDQo+ID4gPiA+DQo+ ID4gPiA+IEZvciBvbGRlciBhcHBzIG5vdCB3cml0dGVuIGZyb20gc2NyYXRjaCwgd2UgY2FuIHBl cmhhcHMgc3Ryb25nbHkgDQo+ID4gPiA+IHN1Z2dlc3QgaW5zdGFsbGluZyB0aGUgbGVnYWN5LXdo aXRlbGlzdCwgd2hpY2ggd291bGQgY2hhbmdlIHRoZSANCj4gPiA+ID4gZGVmYXVsdC1vcGVuIGJl aGF2aW91ciB0byBkZWZhdWx0LWNsb3NlZC4NCj4gPiA+ID4NCj4gPiA+ID4gVG9nZXRoZXIsIHRo YXQgd291bGQgZ2l2ZSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IGFyZW4ndA0KPiA+ID4gb3Blbi10 by1ldmVyeXRoaW5nPw0KPiA+ID4gPg0KPiA+ID4gPiAtTWljaGFsDQo+ID4gPiA+DQo+ID4gPiA+ IE9uIEZyaSwgRGVjIDEyLCAyMDE0IGF0IDk6MTMgQU0sIElhbiBDbGVsbGFuZCANCj4gPiA+ID4g PGljbGVsbGFuZEBjaHJvbWl1bS5vcmc+DQo+ID4gPiA+IHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4g PiA+IEknbSBqdXN0IGJ1aWxkaW5nIHRoZSBuZXcgb3B0aW9uYWwgd2hpdGVsaXN0IHBsdWdpbnMg Zm9yIA0KPiA+ID4gPiA+IENvcmRvdmEgQW5kcm9pZCBhbmQgaU9TIDQueCwgYW5kIEknbSB0aGlu a2luZyBhYm91dCBob3cgdG8gDQo+ID4gPiA+ID4gZW5jb3VyYWdlIGRldmVsb3BlcnMgdG8gdXNl DQo+ID4gPiA+IENTUA0KPiA+ID4gPiA+IGZvciBuZXR3b3JrIHJlcXVlc3RzLCBhcyBvcHBvc2Vk IHRvIGEgDQo+ID4gPiA+ID4gQ29yZG92YS1pbXBsZW1lbnRlZC13aGl0ZWxpc3Qtd2hpY2gtcHJv YmFibHktbGVha3MtbGlrZS1hLXNpZXZlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gKE5vdGU6IFRo aXMgaXMgcmVhbGx5IGp1c3QgYWJvdXQgdGhpbmdzIGxpa2UgWEhSIHJlcXVlc3RzLCANCj4gPiA+ ID4gPiA8aW1nPiBhbmQgPHNjcmlwdD4gdGFncywgZXRjLCB3aGljaCBhcmUgaGlzdG9yaWNhbGx5 IHRoZSBvbmx5IA0KPiA+ID4gPiA+IHRoaW5ncyB0aGF0IHdlJ3ZlIHJlbGlhYmx5IGJlZW4gYWJs ZSB0byBmaWx0ZXIgb3V0LiBPdGhlciANCj4gPiA+ID4gPiBjbGFzc2VzIG9mIG5ldHdvcmsgcmVx dWVzdHMganVzdCBieXBhc3MgYWxsIG9mIG91ciBjb2RlIA0KPiA+ID4gPiA+IGFueXdheSwgd2hp Y2ggc3Vja3MsIGFuZCBmcmFtZSBuYXZpZ2F0aW9uIGFuZCBleHRlcm5hbCANCj4gPiA+ID4gPiBh cHBsaWNhdGlvbiBsYXVuY2hlcyBhcmUgYWxyZWFkeSB3ZWxsIGhhbmRsZWQNCj4gPiA+IGJ5IHRo ZSBmcmFtZXdvcmspLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhlIHBvbGljeSBJJ3ZlIGltcGxl bWVudGVkIG9uIHRoZSB1bnBsdWctd2hpdGVsaXN0IGJyYW5jaGVzLCANCj4gPiA+ID4gPiB3aGlj aCBhdCBmaXJzdCB0aG91Z2h0IGF0IGxlYXN0ICpzb3VuZHMqIHNhbmUsIGlzIHRoYXQgbmV0d29y ayANCj4gPiA+ID4gPiByZXF1ZXN0cyBhcmUNCj4gPiA+ID4gYmxvY2tlZA0KPiA+ID4gPiA+IGJ5 IGRlZmF1bHQuIChBdCBsZWFzdCBhbGwgb2YgdGhlIG9uZXMgdGhhdCB3ZSBjYW4gaW50ZXJjZXB0 KS4NCj4gPiA+ID4gPiBUaGF0IHdheSwgYSBwbHVnaW4sIHN1Y2ggYXMgdGhlIGxlZ2FjeS13aGl0 ZWxpc3QgcGx1Z2luLCBjYW4gDQo+ID4gPiA+ID4gb3BlbiB1cCBhY2Nlc3MgdG8NCj4gPiA+ID4g c3BlY2lmaWMNCj4gPiA+ID4gPiByZXNvdXJjZXMsIGFuZCB0aGUgZmFsbGJhY2sgaXMgc2FmZXR5 Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVG8gdXNlIENTUCwgdGhvdWdoLCB3ZSBoYXZlIHRvIG9w ZW4gdXAgYWNjZXNzIHRvIHRoZSBvdXRzaWRlLCANCj4gPiA+ID4gPiBhbmQgd2UNCj4gPiA+ID4g ZG9uJ3QNCj4gPiA+ID4gPiBuZWNlc3NhcmlseSBrbm93IHdoYXQgdGhlIGRldmVsb3BlciB3YW50 cyB0byBvcGVuICh0aGUgd2hvbGUgDQo+ID4gPiA+ID4gcG9pbnQgaXMNCj4gPiA+ID4gdGhhdA0K PiA+ID4gPiA+IHRoZXkgc3BlY2lmeSBpbiB0aGUgSFRNTCwgbm90IGluIGEgY29uZmlnIGZpbGUu KSBUaGUgZWFzaWVzdCANCj4gPiA+ID4gPiB3YXkgaXMgdG8NCj4gPiA+ID4gb3Blbg0KPiA+ID4g PiA+IHVwIGFjY2VzcyB0byAqYWxsKiByZXNvdXJjZXMgdG8gdGhlIHdlYnZpZXcsIGFuZCB0aGVu IHJlc3RyaWN0IA0KPiA+ID4gPiA+IGl0IHRocm91Z2ggdGhlIENTUCBoZWFkZXIvbWV0YS10YWcs IHdoaWNoIGRvZXMgYSBiZXR0ZXIgam9iIG9mIA0KPiA+ID4gPiA+IGJsb2NraW5nIHRob3NlDQo+ ID4gPiA+IHJlcXVlc3RzDQo+ID4gPiA+ID4gdGhhbiB3ZSBkbyBpbiBhbnkgY2FzZS4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IEkgdGhpbmsgdGhhdCB3ZSB3YW50IHRvIGVuY291cmFnZSBkZXZlbG9w ZXJzIHRvIHVzZSBDU1AsIGZvciBhIA0KPiA+ID4gPiA+IGxvdCBvZiByZWFzb25zLCBidXQgSSdt IGdvaW5nIHRvIGhhdmUgdG8gZG8gb25lIG9mIHRoZXNlIA0KPiA+ID4gPiA+IHRoaW5ncywgYW5k IEknbSBub3QgZW50aXJlbHkgc3VyZSB3aGljaCBpcyB0aGUgcmlnaHQgb25lOg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gMS4gT3BlbiBhY2Nlc3MgdG8gYWxsIG5ldHdvcmsgcmVzb3VyY2VzIGJ5IGRl ZmF1bHQgaW4gQ29yZG92YSA0LnguDQo+ID4gPiA+ID4gICAqIFRoaXMgZG9lc24ndCBhcHBseSB0 byBuYXZpZ2F0aW9ucywgb3IgbGF1bmNoaW5nIG90aGVyIGFwcHMuDQo+ID4gPiA+ID4gVGhleSdy ZSBzdGlsbCBibG9ja2VkIGJ5IGRlZmF1bHQuDQo+ID4gPiA+ID4gICAqIEFueSBwbHVnaW4gaW1w bGVtZW50aW5nIHNob3VsZEFsbG93UmVxdWVzdCB3b3VsZCBzdGlsbCBiZSANCj4gPiA+ID4gPiBh YmxlIHRvDQo+ID4gPiA+IHR1cm4NCj4gPiA+ID4gPiB0aGlzIGludG8gYSBkaXNhbGxvdy1ieS1k ZWZhdWx0IHdoaXRlbGlzdA0KPiA+ID4gPiA+ICAgKiBXZSBjYW4ndCBibG9jayBldmVyeXRoaW5n IGFueXdheSAoc2VlIHdlYnNvY2tldHMsIA0KPiA+ID4gPiA+IGF1ZGlvL3ZpZGVvDQo+ID4gPiA+ IHN0cmVhbXMgLw0KPiA+ID4gPiA+IHByb2JhYmx5IG1vcmUpLCBzbyBpdCByZW1vdmVzIHRoZSBp bGx1c2lvbiB0aGF0IHdlIGNhbi4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IDIuIE1ha2UgYW5vdGhl ciB3aGl0ZWxpc3QteSBwbHVnaW4sIHNvbWV0aGluZyBsaWtlDQo+ID4gPiA+ICJvcmcuYXBhY2hl LmNvcmRvdmEuY3NwIg0KPiA+ID4gPiA+IHRoYXQgZXhpc3RzIG9ubHkgdG8gb3BlbiB1cCBhY2Nl c3MgdG8gbmV0d29yayByZXNvdXJjZXMuIA0KPiA+ID4gPiA+IERpcmVjdCBhbGwgdXNlcnMgd2hv IHdhbnQgdG8gdXNlIENTUCB0byBpbnN0YWxsIHRoYXQgcGx1Z2luIGZpcnN0DQo+ID4gPiA+ID4g ICAqIEl0J3MgYSA0dGggbmV0d29yayBwbHVnaW4gKGFmdGVyIGxlZ2FjeS13aGl0ZWxpc3QsDQo+ ID4gPiA+IG5hdmlnYXRpb24td2hpdGVsaXN0DQo+ID4gPiA+ID4gYW5kIGludGVudC13aGl0ZWxp c3QpDQo+ID4gPiA+ID4gICAqIEFkZGluZyBpdCBkb2Vzbid0IGFjdHVhbGx5IGFkZCBhbnkgQ1NQ IHByb3RlY3Rpb24sIHNvIGl0IA0KPiA+ID4gPiA+IHByb2JhYmx5DQo+ID4gPiA+IG5lZWRzDQo+ ID4gPiA+ID4gYSBiZXR0ZXIgbmFtZQ0KPiA+ID4gPiA+ICAgKiBJdCdzIGFuIGV4dHJhIHN0ZXAg dGhhdCBtYXkgY29uZnVzZSBwZW9wbGUgYW5kIGxpbWl0IA0KPiA+ID4gPiA+IGFkb3B0aW9uDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAzLiBEbyBzb21ldGhpbmcgY3JhenkuIE1heWJlIGEgQ1NQIHBs dWdpbiB0aGF0IGF1dG9tYXRpY2FsbHkgDQo+ID4gPiA+ID4gY3JlYXRlcyBDU1AgdGFncyAqYW5k KiB1cGRhdGVzIHRoZSBYSFIgd2hpdGVsaXN0LCBib3RoIGZyb20gDQo+ID4gPiA+ID4gY29uZmln DQo+ID4gZGlyZWN0aXZlcy4NCj4gPiA+ID4gPiAgICogTG90cyBtb3JlIHdvcmsNCj4gPiA+ID4g PiAgICogV2UgcHJvYmFibHkgZG9uJ3Qga25vdyBlbm91Z2ggYWJvdXQgcmVhbCByZXF1aXJlbWVu dHMgdG8gDQo+ID4gPiA+ID4gZ2V0IHRoaXMNCj4gPiA+ID4gcmlnaHQNCj4gPiA+ID4gPiAgICog SWYgQ1NQIGlzIGRvaW5nIGl0cyBqb2IsIHRoZW4gdGhlIFhIUiB3aGl0ZWxpc3QgaXNuJ3QgDQo+ ID4gPiA+ID4gbmVlZGVkIGFueXdheTsNCj4gPiA+ID4gaXQNCj4gPiA+ID4gPiB3b3VsZCBqdXN0 IGJlIGFub3RoZXIgbGF5ZXIgdGhhdCBpc24ndCBkb2luZyBhbnl0aGluZyBkaWZmZXJlbnQuDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBJJ20gbGVhbmluZyB0b3dhcmRzICMxLCBidXQgaXRzIGEgaXQn cyBhIGRlY2lzaW9uIHRoYXQgd2UgDQo+ID4gPiA+ID4gcmVhbGx5IHNob3VsZCB0aGluayBhYm91 dCBhbmQgZGVjaWRlIG9uLWxpc3QgYmVmb3JlIG1vdmluZyBmb3J3YXJkLg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gSWFuDQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gPiA+IC0tDQo+ID4gPiAtIFRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGRldi11bnN1YnNjcmli ZUBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4gPiA+IEZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1h aWw6IGRldi1oZWxwQGNvcmRvdmEuYXBhY2hlLm9yZw0KPiA+ID4NCj4gPg0KPg0K DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGRldi11bnN1YnNj cmliZUBjb3Jkb3ZhLmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1h aWw6IGRldi1oZWxwQGNvcmRvdmEuYXBhY2hlLm9yZw0K