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 A8C4410A6E for ; Wed, 17 Dec 2014 22:30:15 +0000 (UTC) Received: (qmail 96819 invoked by uid 500); 17 Dec 2014 22:30:15 -0000 Delivered-To: apmail-cordova-dev-archive@cordova.apache.org Received: (qmail 96783 invoked by uid 500); 17 Dec 2014 22:30:15 -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 96772 invoked by uid 99); 17 Dec 2014 22:30:14 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Dec 2014 22:30:14 +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 (athena.apache.org: domain of clantz@microsoft.com designates 207.46.100.129 as permitted sender) Received: from [207.46.100.129] (HELO na01-by2-obe.outbound.protection.outlook.com) (207.46.100.129) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Dec 2014 22:30:09 +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 22:29:47 +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 22:29:47 +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: AQHQFhYFaodJZ83BnkuhGcf9AmMOw5yMLHkAgAALFICABKQtIIAAL8DogABeXeCAAPGogIABk6fwgAAOzT2AAAS58IAASszagAAJkmA= Date: Wed, 17 Dec 2014 22:29:47 +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)(13464003)(199003)(24454002)(99396003)(120916001)(21056001)(2656002)(106116001)(20776003)(4396001)(31966008)(46102003)(106356001)(64706001)(66066001)(99286002)(19580405001)(92566001)(19580395003)(86362001)(110136001)(2351001)(74316001)(107046002)(105586002)(101416001)(107886001)(76576001)(33656002)(180100001)(76176999)(54356999)(62966003)(77156002)(54206007)(50986999)(54606007)(450100001)(97736003)(40100003)(122556002)(87936001)(86612001)(2900100001)(68736005)(93886004)(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 22:29:47.1184 (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 WWVhaCwgSSBhbHNvIGFtIHRoaW5raW5nIGFib3V0ICJ1cGdyYWRlIiBzaXR1YXRpb25zIHdoZXJl IHNvbWVvbmUgdGFrZXMgYW4gZXhpc3RpbmcgYXBwIGFuZCBtb3ZlcyBpdCB0byBBbmRyb2lkIENv cmRvdmEgNC4wLiBJdCBzdHJpa2VzIG1lIHRoZXJlIHdlJ2QgZWl0aGVyIHdhbnQgdGhlIGV4aXN0 aW5nIGJlaGF2aW9yIHRvIGJlIHByZXNlcnZlZCAoZmxhd3MgYXNpZGUpIG9yIG1vdmUgaXQgdG8g dGhlIHRvcCBsZXZlbCBuYXYgYmVoYXZpb3IuICBEaWQgSSByZWFkIGNvcnJlY3RseSB0aGUgY3Vy cmVudCB3aGl0ZWxpc3Qgd291bGQgYmUgcmVmYWN0b3JlZCBvdXQgdG8gYSBwbHVnaW4/DQoNCi1D aHVjaw0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogSWFuIENsZWxsYW5kIFtt YWlsdG86aWNsZWxsYW5kQGNocm9taXVtLm9yZ10gDQpTZW50OiBXZWRuZXNkYXksIERlY2VtYmVy IDE3LCAyMDE0IDE6MDIgUE0NClRvOiBkZXZAY29yZG92YS5hcGFjaGUub3JnDQpTdWJqZWN0OiBS ZTogSG93IHRvIGhhbmRsZSBDU1AgZm9yIFhIUiBpbiBDb3Jkb3ZhIDQuMA0KDQpJIHRoaW5rIHRo YXQgYWNjZXNzIHRhZ3MgKGFuZCB0aGUgd2lkZ2V0IHNwZWMgZ2VuZXJhbGx5KSB3ZXJlIG5ldmVy IGEgZ29vZCBmaXQgZm9yIHRoZSB0b3AtbGV2ZWwtbmF2aWdhdGlvbiBjYXNlLiBXaWRnZXRzLCBh cyBmYXIgYXMgSSBrbm93LCB3ZXJlIGFsd2F5cyBpbnRlbmRlZCB0byBiZSBzaW5nbGUgcGFnZSBh cHBzLCBhbmQgdGhlIDxhY2Nlc3M+IHRhZyB3b3VsZG4ndCBoYXZlIGFueSBhZmZlY3Qgb24gdGhh dCBhdCBhbGwuDQoNCldlJ3ZlIHVzZWQgaXQgZm9yIG5hdiBpbiB0aGUgcGFzdCwgdGhvdWdoLCBz byB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciBmYW1pbGlhcml0eSB3aXRoIHRoZSBvbGQgc3ludGF4 IHRydW1wcyB0aGUgZmFjdCB0aGF0IHdlJ3JlIGNoYW5naW5nIHRoZSBiZWhhdmlvdXIuDQoNCk9u IFdlZCBEZWMgMTcgMjAxNCBhdCAxMTo0NzowMiBBTSBDaHVjayBMYW50eiA8Y2xhbnR6QG1pY3Jv c29mdC5jb20+IHdyb3RlOg0KDQo+IEkgc3VwcG9zZSB0aGF0IGlzIGEgZ29vZCBxdWVzdGlvbi4g SSB0b29rIGEgbG9vayBhdCB0aGUgV2lkZ2V0IEFjY2VzcyANCj4gUmVxdWVzdCBQb2xpY3kgVzND IHNwZWMgd2hlcmUgdGhhdCBlbGVtZW50IGNvbWVzIGZyb20uICBJdCdzIGFjdHVhbGx5IA0KPiBw cmV0dHkgYW1iaWd1b3VzLg0KPg0KPiAiQSB1c2VyIGFnZW50IGVuZm9yY2VzIGFuIGFjY2VzcyBy ZXF1ZXN0IHBvbGljeS4gLi4uIEluIHRoZSBkZWZhdWx0IA0KPiBwb2xpY3ksIGEgdXNlciBhZ2Vu dCBtdXN0IGRlbnkgYWNjZXNzIHRvIG5ldHdvcmsgcmVzb3VyY2VzIGV4dGVybmFsIHRvIA0KPiB0 aGUgd2lkZ2V0IGJ5IGRlZmF1bHQsIHdoZXRoZXIgdGhpcyBhY2Nlc3MgaXMgcmVxdWVzdGVkIHRo cm91Z2ggQVBJcyAoZS5nLg0KPiBYTUxIdHRwUmVxdWVzdCkgb3IgdGhyb3VnaCBtYXJrdXAgKGUu Zy4gaWZyYW1lLCBzY3JpcHQsIGltZykuLiINCj4NCj4gLi4uIGJ1dC4uLg0KPg0KPiAiQSB1c2Vy IGFnZW50IG1heSBhcHBseSBhIGRpZmZlcmVudCBkZWZhdWx0IHBvbGljeSBpZiB0aGUgd2lkZ2V0 IGlzIA0KPiBiZWluZyB1c2VkIGluIGEgY29udGV4dCB0aGF0IGRlZmluZXMgaXRzIG93biBwb2xp Y3ksIHN1Y2ggYXMgZm9yIA0KPiBpbnN0YW5jZSBhIHdpZGdldCBzZXJ2ZWQgb3ZlciBIVFRQLiBB IG1vcmUgbGVuaWVudCBwb2xpY3kgY2FuIGJlIA0KPiBkZWZpbmVkIHdpdGggdGhlIGFjY2Vzcy1y ZXF1ZXN0IGxpc3QgYXMgZGVmaW5lZCBpbiB0aGUgcHJvY2Vzc2luZyANCj4gc2VjdGlvbi4gLi4u IEZ1cnRoZXJtb3JlLCBhIHVzZXIgYWdlbnQgbWF5IGdyYW50IGFjY2VzcyB0byBjZXJ0YWluIFVS SSANCj4gc2NoZW1lcyAoZS5nLiwgbWFpbHRvOikgd2l0aG91dCB0aGUgbmVlZCBvZiBhbiBhY2Nl c3MgcmVxdWVzdCBpZiBpdHMgDQo+IHNlY3VyaXR5IHBvbGljeSBjb25zaWRlcnMgdGhvc2Ugc2No ZW1lcyBiZW5pZ24uIg0KPg0KPiBJdCBzdHJpa2VzIG1lIHRoYXQgdG9kYXkgd2UgaW1wbGVtZW50 IHRoZSBkZWZhdWx0IHBvbGljeSBhbmQgd2hhdCANCj4gd2UncmUgcHJvcG9zaW5nIGhlcmUgaXMg YSBtb3JlIGxlbmllbnQsIGFsdGVybmF0ZSBwb2xpY3kuDQo+DQo+IEZvciB3aGF0IGl0J3Mgd29y dGgsIGhlcmUncyBob3cgdGhpcyBpcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHdvcmxkOg0KPg0K PiAgICAgICA8QXBwbGljYXRpb25Db250ZW50VXJpUnVsZXM+DQo+ICAgICAgICAgICA8UnVsZSBN YXRjaD0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbSIgVHlwZT0iaW5jbHVkZSIgLz4NCj4gICAgICAg PC9BcHBsaWNhdGlvbkNvbnRlbnRVcmlSdWxlcz4NCj4NCj4gLUNodWNrDQo+DQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IElhbiBDbGVsbGFuZCBbbWFpbHRvOmljbGVsbGFu ZEBjaHJvbWl1bS5vcmddDQo+IFNlbnQ6IFdlZG5lc2RheSwgRGVjZW1iZXIgMTcsIDIwMTQgODox NiBBTQ0KPiBUbzogZGV2QGNvcmRvdmEuYXBhY2hlLm9yZw0KPiBTdWJqZWN0OiBSZTogSG93IHRv IGhhbmRsZSBDU1AgZm9yIFhIUiBpbiBDb3Jkb3ZhIDQuMA0KPg0KPiBEZWZpbml0ZWx5IHdhbnQg dG8gaGFuZGxlIGlPUywgd2l0aCB0aGUgc2FtZSBwb2xpY3kuIEkndmUgYmVlbiB3b3JraW5nIA0K PiBvbiB0aGF0IGluIHBhcmFsbGVsIHdpdGggQW5kcm9pZC4NCj4NCj4gRG8gd2Ugd2FudCB0byB1 c2UgPGFjY2Vzcz4gZm9yIE5hdj8gSSB3YXNuJ3Qgc3VyZSwgZ2l2ZW4gaXRzIGhpc3RvcnksIA0K PiBhbmQgdGhlIGZhY3QgdGhhdCB3ZSdyZSBjaGFuZ2luZyBpdHMgYmVoYXZpb3VyLiBJcyBpdCBi ZXR0ZXIgdG8gc3RpY2sgDQo+IHdpdGggdGhlIGZhbWlsaWFyIHRhZyBhbmQgY2hhbmdlIHdoYXQg aXQgdHJpZXMgdG8gZG8/IE9yIGNyZWF0ZSBhIG5ldyANCj4gdGFnIGFuZCBkZXByZWNhdGUgPGFj Y2Vzcz4/DQo+DQo+IE9uIFdlZCBEZWMgMTcgMjAxNCBhdCAxMDozMDoxOCBBTSBDaHVjayBMYW50 eiA8Y2xhbnR6QG1pY3Jvc29mdC5jb20+DQo+IHdyb3RlOg0KPg0KPiA+IFdoYXQgYWJvdXQgdG9w IGxldmVsIG5hdiBhbmQgc2NyaXB0IGFjY2Vzcz8gIFdvdWxkIHRoZSB0aG91Z2h0IGJlIA0KPiA+ IHRoYXQgdGhlIDxhY2Nlc3M+IGVsZW1lbnRzIHdvdWxkIG1hcCB0byB0aGF0IGluIHRoZSBiYXNl IHBsYXRmb3JtPyAgDQo+ID4gSSdtIHRoaW5raW5nIGluIHRlcm1zIG9mIGNvbnNpc3RlbmN5IGFj cm9zcyB0aGUgZGlmZmVyZW50IHBsYXRmb3Jtcy4gIA0KPiA+IEl0IHN0cmlrZXMgbWUgd2UnZCB3 YW50IHRvIHVwZGF0ZSBpT1MgYXQgbGVhc3QgYXMgd2VsbC4NCj4gPg0KPiA+IC1DaHVjaw0KPiA+ DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBhZ3JpZXZlQGdvb2ds ZS5jb20gW21haWx0bzphZ3JpZXZlQGdvb2dsZS5jb21dIE9uIEJlaGFsZiBPZiANCj4gPiBBbmRy ZXcgR3JpZXZlDQo+ID4gU2VudDogVHVlc2RheSwgRGVjZW1iZXIgMTYsIDIwMTQgNzoyMSBBTQ0K PiA+IFRvOiBkZXYNCj4gPiBTdWJqZWN0OiBSZTogSG93IHRvIGhhbmRsZSBDU1AgZm9yIFhIUiBp biBDb3Jkb3ZhIDQuMA0KPiA+DQo+ID4gT24gTW9uLCBEZWMgMTUsIDIwMTQgYXQgODoxOSBQTSwg Q2h1Y2sgTGFudHogPGNsYW50ekBtaWNyb3NvZnQuY29tPg0KPiB3cm90ZToNCj4gPiA+DQo+ID4g PiBOZWFyIHRlcm0sIGZvciBXaW5kb3dzIDguMC84LjEsIGEgY3VzdG9tIHNlY3VyaXR5IHBvbGlj eSBpcyBpbiANCj4gPiA+IHBsYWNlIGF0IHRoZSBwbGF0Zm9ybSBsZXZlbCBmb3Igc3RvcmUgYXBw cyBzbyBDU1AgZG9lc24ndCByZWFsbHkgDQo+ID4gPiBhcHBseSB0aGVyZSBhdCB0aGUgbW9tZW50 LiAoQW5kLCB0byBiZSByZWFsbHkgc3BlY2lmaWMsIENTUCANCj4gPiA+IHN1cHBvcnQgaXMgcHJl dHR5IGxpbWl0ZWQgaW4NCj4gPiA+IElFMTAvMTEgZm9jdXNpbmcgb24gdGhlIHNhbmRib3ggZGly ZWN0aXZlLiBUaGUgV2luZG93cyAxMCBUZWNoIA0KPiA+ID4gUHJldmlldyBpcyB3aGVyZSB5b3Ug Y2FuIHNlZSB0aGUgcmVhbCBzdXBwb3J0IGluIElFIHJpZ2h0IG5vdy4pIA0KPiA+ID4gU28sIGl0 J3MgYSBtb3JlIG9mIGZvcndhcmQtdGhpbmtpbmcgdG9waWMgaW4gdGhhdCB3b3JsZC4NCj4gPiA+ DQo+ID4gPiBBIHJlbGF0ZWQgcXVlc3Rpb24sIGhvd2V2ZXIgLSBDU1Agc3VwcG9ydCBvbmx5IHN0 YXJ0ZWQgaW4gdGhlIA0KPiA+ID4gQW5kcm9pZCBicm93c2VyIHdpdGggNC40IGRpZCBpdCBub3Q/ IE9idmlvdXNseSBDcm9zc3dhbGsgd291bGQgDQo+ID4gPiBoYXZlIGl0IGJ1dCB3aGF0IGFib3V0 IHdoZW4gdXNpbmcgdGhlIGJhc2UgYnJvd3Nlcj8gIElzIHRoZSANCj4gPiA+IHRob3VnaHQgZGV2 cyBzaG91bGQgdXNlIHRoZSBvbGQgd2hpdGVsaXN0IG1vZGVsIGhlcmU/DQo+ID4gPg0KPiA+DQo+ ID4gSSB0aGluayBvbmUgb2YgdGhlIGJpZyBpc3N1ZXMgaXMgdGhhdCB0aGUgd2hpdGVsaXN0IG5l dmVyIHdvcmtlZCBmb3IgDQo+ID4gYmxvY2tpbmcgKmFsbCogcmVxdWVzdHMuIEl0IGRpZG4ndCB3 b3JrIHByZS0zLjAsIGFuZCBpdCBkb2Vzbid0IA0KPiA+IGJsb2NrIDxhdWRpbz4sIDx2aWRlbz4s IHdlYnNvY2tldCBpbiBhbnkgdmVyc2lvbi4gU3VwcG9ydGluZyB0aGUgDQo+ID4gaWxsdXNpb24g b2YgYSB3aGl0ZWxpc3QgaXMgcHJvYmFibHkgd29yc2UgdGhhbiBub3Qgc3VwcG9ydGluZyBpdCBh dCBhbGwuDQo+ID4NCj4gPg0KPiA+DQo+ID4gPg0KPiA+ID4gU2FmYXJpIHNlZW1zIHRvIHN1cHBv cnQgaXQgYmFjayBhdCBsZWFzdCBhcyBmYXIgYXMgaU9TIDcgKG9yIDYgDQo+ID4gPiB3aXRoIGEg Y3VzdG9tIGhlYWRlcikgLSB0aGUgbWFpbiByZWFzb24gSSBicmluZyBpdCB1cCBpcyANCj4gPiA+ IGRldmVsb3BlcnMgY291bGQgc2VlIGRpZmZlcmVudCBiZWhhdmlvcnMgYmV0d2VlbiBkZXZpY2Vz IGFuZCANCj4gPiA+IHZlcnNpb25zIGlmIHRoZSBkZWZhdWx0IENTUCBwb2xpY3kgbGVhdmVzIHNv bWV0aGluZyBsaWtlIGlubGluZSBvciBldmFsIGRpc2FibGVkLg0KPiA+ID4NCj4gPiA+IC1DaHVj aw0KPiA+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBJ YW4gQ2xlbGxhbmQgW21haWx0bzppY2xlbGxhbmRAY2hyb21pdW0ub3JnXQ0KPiA+ID4gU2VudDog TW9uZGF5LCBEZWNlbWJlciAxNSwgMjAxNCAxMToxNyBBTQ0KPiA+ID4gVG86IGRldkBjb3Jkb3Zh LmFwYWNoZS5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBIb3cgdG8gaGFuZGxlIENTUCBmb3IgWEhS IGluIENvcmRvdmEgNC4wDQo+ID4gPg0KPiA+ID4gT24gTW9uIERlYyAxNSAyMDE0IGF0IDExOjI4 OjQzIEFNIENodWNrIExhbnR6IA0KPiA+ID4gPGNsYW50ekBtaWNyb3NvZnQuY29tPg0KPiA+ID4g d3JvdGU6DQo+ID4gPg0KPiA+ID4gPiBGb3IgdGhlIFdpbmRvd3MgcGxhdGZvcm0sIElFIDEwIGFu ZCAxMSBzdXBwb3J0IENTUCAxLjAgLSB0aGVyZSdzIA0KPiA+ID4gPiBvbmUgc3VidGxlIGRpZmZl cmVuY2UgKFgtQ29udGVudC1TZWN1cml0eS1Qb2xpY3kgdnMgDQo+ID4gPiA+IENvbnRlbnQtU2Vj dXJpdHktUG9saWN5IGluIHRoZSBIVFRQIGhlYWRlcikuICBUaGUgV2luIDEwIFRlY2ggDQo+ID4g PiA+IFByZXZpZXcNCj4gPiA+IGFscmVhZHkgaGFzIGZ1bGwgQ1NQIHN1cHBvcnQuDQo+ID4gPiA+ IEluIGdlbmVyYWwsIHRoZSBjb252ZW50aW9uYWwgd2lzZG9tIGlzIHRvIHB1c2ggYXBwIG1vZGVs cyANCj4gPiA+ID4gdG93YXJkcyB0aGUgQ1NQIGFuZCBhd2F5IGZyb20gY3VzdG9tIGVuZm9yY2Vt ZW50IHBvbGljaWVzIGZyb20gDQo+ID4gPiA+IG91ciBwb2ludCBvZg0KPiA+IHZpZXcuDQo+ID4g PiA+IEkgbG92ZSB0aGUgaWRlYSBvZiBDb3Jkb3ZhIGhlYWRpbmcgdGhpcyBzYW1lIGRpcmVjdGlv bi4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGF0J3MgZ3JlYXQgdG8gaGVhci4NCj4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+IFdpbmRvd3MgYXBwcyBoYXZlIGEgVVJJIHdoaXRlbGlzdCBmb2N1c2Vk IG9uIHRvcCBsZXZlbCANCj4gPiA+ID4gbmF2aWdhdGlvbiBhbmQgSmF2YVNjcmlwdCBpbmNsdWRl cyBvbiBwYWdlcyBub3QgWEhSLiBUaGUgbWFpbiANCj4gPiA+ID4gcmVhc29uIHRvIGxvY2sgZG93 biBhdCB0aGlzIGxldmVsIGlzIHRvIHJlZHVjZSB0aGUgcmlzayBvZiBhIA0KPiA+ID4gPiBtYWxp Y2lvdXMgdXNlciBuYXZpZ2F0aW5nIHRoZSBwYWdlIHRvIGEgVVJJIG91dHNpZGUgb2YgdGhlIGFw cCANCj4gPiA+ID4gYXV0aG9yJ3MgY29udHJvbCBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2Ygc2Vuc2l0 aXZlIEFQSXMuICBTbywgSSANCj4gPiA+ID4gdGhpbmsgc29tZSBsZXZlbCBvZiB3aGl0ZWxpc3Qg dG8gaGVscCBvdXQgaW4gdGhpcyBzaXR1YXRpb24gaXMgDQo+ID4gPiA+IGFkdmlzYWJsZSBldmVu IHdpdGggQ1NQIGJlaW5nIHVzZWQuIFdl4oCZdmUgbWFwcGVkIDxhY2Nlc3M+IA0KPiA+ID4gPiBl bGVtZW50cyBpbiBjb25maWcueG1sIHRvIHRoZSB0b3AgbGV2ZWwgbmF2IHdoaXRlbGlzdCBmb3Ig dGhpcyANCj4gPiA+ID4gcmVhc29uLiBDU1AgaXNu4oCZdCByZWFsbHkgZGVzaWduZWQgdG8gaGVs cA0KPiA+IHdpdGggdGhpcyBraW5kIG9mIHByb2JsZW0uDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4g QWdyZWVkLiBDU1Agb24gdGhlIHdlYiBjYW4ndCByZWFsbHkgY29udHJvbCBuYXZpZ2F0aW9uLCBv ciBlbHNlIA0KPiA+ID4gd2ViIHBhZ2UgYXV0aG9ycyB3b3VsZCBiZSBhYmxlIHRvIHRyYXAgYnJv d3NlciB3aW5kb3dzIG9uIHRoZWlyIHNpdGVzLg0KPiA+ID4gSXQgbWFrZXMgc2Vuc2UgZm9yIGlu c3RhbGxlZCBhcHBzLCBidXQgbm90IHNvIG11Y2ggZm9yIHNpdGVzIG9yIA0KPiA+ID4gd2ViDQo+ IGFwcHMuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gUGVyaGFwcyBhIGRlZmF1bHQg Q1NQIHBvbGljeSBpbiB0aGUgdGVtcGxhdGUgY291cGxlZCB3aXRoIGEgdG9wIA0KPiA+ID4gPiBs ZXZlbCBuYXYgd2hpdGVsaXN0IGlzIHRoZSByaWdodCBzdGFydGluZyBwb2ludC4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gVGhhdCBzb3VuZHMgbGlrZSB3aGF0IEknbSB0cnlpbmcgdG8gaW1wbGVtZW50 IG9uIEFuZHJvaWQgYW5kIGlPUy4NCj4gPiA+IExldCBtZSBrbm93IHdoYXQgSSBjYW4gZG8gdG8g bWFrZSB0aGF0IGVhc3kgZm9yIFdpbmRvd3MuDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gRGV0ZXJt aW5pbmcgd2hhdCB0aGUgQ1NQIHBvbGljeSBsb29rcyBsaWtlIHdpbGwgYmUgcmVhbGx5IA0KPiA+ ID4gPiBpbXBvcnRhbnQg4oCTIGJ5IGRlZmF1bHQgQ1NQIGJsb2NrcyBib3RoIGlubGluZSBhbmQg ZXZhbCB1c2UuIE9mIA0KPiA+ID4gPiB0aGUgdHdvLCBpbmxpbmUgdXNlIHRlbmRzIHRvIGJlIHRo ZSBiaWdnZXIgcmlzayBmYWN0b3IuDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gVHJ1ZSAtLSBldmFs IHdpdGhvdXQgaW5saW5lIGNhbiB0aGVvcmV0aWNhbGx5IGJlIGNvbnRyb2xsZWQsIA0KPiA+ID4g YWx0aG91Z2ggaXQncyBub3QgZ3JlYXQgcHJhY3RpY2UuIGlubGluZSwgd2l0aCBvciB3aXRob3V0 IGV2YWwgaXMgDQo+ID4gPiBhbiBYU1Mgd2FpdGluZyB0byBoYXBwZW4sIGluIGEgd2ViIGFwcC4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiAtQ2h1Y2sNCj4gPiA+ID4NCj4gPiA+ID4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogSWFuIENsZWxsYW5kIFtt YWlsdG86aWNsZWxsYW5kQGdvb2dsZS5jb21dDQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgRGVjZW1i ZXIgMTIsIDIwMTQgOTozNCBBTQ0KPiA+ID4gPiBUbzogZGV2QGNvcmRvdmEuYXBhY2hlLm9yZw0K PiA+ID4gPiBTdWJqZWN0OiBSZTogSG93IHRvIGhhbmRsZSBDU1AgZm9yIFhIUiBpbiBDb3Jkb3Zh IDQuMA0KPiA+ID4gPg0KPiA+ID4gPiBEZWZhdWx0IENTUCBpcyBhIGdvb2QgaWRlYS4gSSB3YXMg d29ycmllZCBhYm91dCBsZWF2aW5nIG5ldyBhcHBzIA0KPiA+ID4gPiB2dWxuZXJhYmxlIGJ5IGRl ZmF1bHQgYnV0IHRoYXQgc2hvdWxkIGNsb3NlIHRoYXQuDQo+ID4gPiA+DQo+ID4gPiA+IERvIHdl IGtub3cgd2hhdCB0aGUgQ1NQIHN0b3J5IGlzIG9uIGFsbCBwbGF0Zm9ybXMsIHRvIGtub3cgdGhh dCANCj4gPiA+ID4gaXQgd29uJ3QgYnJlYWsgYW55dGhpbmcgZWxzZT8NCj4gPiA+ID4gT24gMTIg RGVjIDIwMTQgMTE6NTYsICJNaWNoYWwgTW9jbnkiIDxtbW9jbnlAY2hyb21pdW0ub3JnPiB3cm90 ZToNCj4gPiA+ID4NCj4gPiA+ID4gPiBJJ20gZmluZSB3aXRoIDEuIGNvdXBsZWQgd2l0aCBhIGRl ZmF1bHQgQ1NQIGluIHRoZSB0ZW1wbGF0ZQ0KPiA+ID4gYXBwbGljYXRpb24uDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBGb3Igb2xkZXIgYXBwcyBub3Qgd3JpdHRlbiBmcm9tIHNjcmF0Y2gsIHdlIGNh biBwZXJoYXBzIA0KPiA+ID4gPiA+IHN0cm9uZ2x5IHN1Z2dlc3QgaW5zdGFsbGluZyB0aGUgbGVn YWN5LXdoaXRlbGlzdCwgd2hpY2ggd291bGQgDQo+ID4gPiA+ID4gY2hhbmdlIHRoZSBkZWZhdWx0 LW9wZW4gYmVoYXZpb3VyIHRvIGRlZmF1bHQtY2xvc2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g VG9nZXRoZXIsIHRoYXQgd291bGQgZ2l2ZSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IGFyZW4ndA0K PiA+ID4gPiBvcGVuLXRvLWV2ZXJ5dGhpbmc/DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAtTWljaGFs DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBGcmksIERlYyAxMiwgMjAxNCBhdCA5OjEzIEFNLCBJ YW4gQ2xlbGxhbmQgDQo+ID4gPiA+ID4gPGljbGVsbGFuZEBjaHJvbWl1bS5vcmc+DQo+ID4gPiA+ ID4gd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEknbSBqdXN0IGJ1aWxkaW5nIHRoZSBu ZXcgb3B0aW9uYWwgd2hpdGVsaXN0IHBsdWdpbnMgZm9yIA0KPiA+ID4gPiA+ID4gQ29yZG92YSBB bmRyb2lkIGFuZCBpT1MgNC54LCBhbmQgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byANCj4gPiA+ ID4gPiA+IGVuY291cmFnZSBkZXZlbG9wZXJzIHRvIHVzZQ0KPiA+ID4gPiA+IENTUA0KPiA+ID4g PiA+ID4gZm9yIG5ldHdvcmsgcmVxdWVzdHMsIGFzIG9wcG9zZWQgdG8gYSANCj4gPiA+ID4gPiA+ IENvcmRvdmEtaW1wbGVtZW50ZWQtd2hpdGVsaXN0LXdoaWNoLXByb2JhYmx5LWxlYWtzLWxpa2Ut YS1zaWV2ZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAoTm90ZTogVGhpcyBpcyByZWFsbHkg anVzdCBhYm91dCB0aGluZ3MgbGlrZSBYSFIgcmVxdWVzdHMsIA0KPiA+ID4gPiA+ID4gPGltZz4g YW5kIDxzY3JpcHQ+IHRhZ3MsIGV0Yywgd2hpY2ggYXJlIGhpc3RvcmljYWxseSB0aGUgDQo+ID4g PiA+ID4gPiBvbmx5IHRoaW5ncyB0aGF0IHdlJ3ZlIHJlbGlhYmx5IGJlZW4gYWJsZSB0byBmaWx0 ZXIgb3V0LiANCj4gPiA+ID4gPiA+IE90aGVyIGNsYXNzZXMgb2YgbmV0d29yayByZXF1ZXN0cyBq dXN0IGJ5cGFzcyBhbGwgb2Ygb3VyIA0KPiA+ID4gPiA+ID4gY29kZSBhbnl3YXksIHdoaWNoIHN1 Y2tzLCBhbmQgZnJhbWUgbmF2aWdhdGlvbiBhbmQgZXh0ZXJuYWwgDQo+ID4gPiA+ID4gPiBhcHBs aWNhdGlvbiBsYXVuY2hlcyBhcmUgYWxyZWFkeSB3ZWxsIGhhbmRsZWQNCj4gPiA+ID4gYnkgdGhl IGZyYW1ld29yaykuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhlIHBvbGljeSBJJ3ZlIGlt cGxlbWVudGVkIG9uIHRoZSB1bnBsdWctd2hpdGVsaXN0IA0KPiA+ID4gPiA+ID4gYnJhbmNoZXMs IHdoaWNoIGF0IGZpcnN0IHRob3VnaHQgYXQgbGVhc3QgKnNvdW5kcyogc2FuZSwgaXMgDQo+ID4g PiA+ID4gPiB0aGF0IG5ldHdvcmsgcmVxdWVzdHMgYXJlDQo+ID4gPiA+ID4gYmxvY2tlZA0KPiA+ ID4gPiA+ID4gYnkgZGVmYXVsdC4gKEF0IGxlYXN0IGFsbCBvZiB0aGUgb25lcyB0aGF0IHdlIGNh biBpbnRlcmNlcHQpLg0KPiA+ID4gPiA+ID4gVGhhdCB3YXksIGEgcGx1Z2luLCBzdWNoIGFzIHRo ZSBsZWdhY3ktd2hpdGVsaXN0IHBsdWdpbiwgY2FuIA0KPiA+ID4gPiA+ID4gb3BlbiB1cCBhY2Nl c3MgdG8NCj4gPiA+ID4gPiBzcGVjaWZpYw0KPiA+ID4gPiA+ID4gcmVzb3VyY2VzLCBhbmQgdGhl IGZhbGxiYWNrIGlzIHNhZmV0eS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUbyB1c2UgQ1NQ LCB0aG91Z2gsIHdlIGhhdmUgdG8gb3BlbiB1cCBhY2Nlc3MgdG8gdGhlIA0KPiA+ID4gPiA+ID4g b3V0c2lkZSwgYW5kIHdlDQo+ID4gPiA+ID4gZG9uJ3QNCj4gPiA+ID4gPiA+IG5lY2Vzc2FyaWx5 IGtub3cgd2hhdCB0aGUgZGV2ZWxvcGVyIHdhbnRzIHRvIG9wZW4gKHRoZSB3aG9sZSANCj4gPiA+ ID4gPiA+IHBvaW50IGlzDQo+ID4gPiA+ID4gdGhhdA0KPiA+ID4gPiA+ID4gdGhleSBzcGVjaWZ5 IGluIHRoZSBIVE1MLCBub3QgaW4gYSBjb25maWcgZmlsZS4pIFRoZSBlYXNpZXN0IA0KPiA+ID4g PiA+ID4gd2F5IGlzIHRvDQo+ID4gPiA+ID4gb3Blbg0KPiA+ID4gPiA+ID4gdXAgYWNjZXNzIHRv ICphbGwqIHJlc291cmNlcyB0byB0aGUgd2VidmlldywgYW5kIHRoZW4gDQo+ID4gPiA+ID4gPiBy ZXN0cmljdCBpdCB0aHJvdWdoIHRoZSBDU1AgaGVhZGVyL21ldGEtdGFnLCB3aGljaCBkb2VzIGEg DQo+ID4gPiA+ID4gPiBiZXR0ZXIgam9iIG9mIGJsb2NraW5nIHRob3NlDQo+ID4gPiA+ID4gcmVx dWVzdHMNCj4gPiA+ID4gPiA+IHRoYW4gd2UgZG8gaW4gYW55IGNhc2UuDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gSSB0aGluayB0aGF0IHdlIHdhbnQgdG8gZW5jb3VyYWdlIGRldmVsb3BlcnMg dG8gdXNlIENTUCwgZm9yIA0KPiA+ID4gPiA+ID4gYSBsb3Qgb2YgcmVhc29ucywgYnV0IEknbSBn b2luZyB0byBoYXZlIHRvIGRvIG9uZSBvZiB0aGVzZSANCj4gPiA+ID4gPiA+IHRoaW5ncywgYW5k IEknbSBub3QgZW50aXJlbHkgc3VyZSB3aGljaCBpcyB0aGUgcmlnaHQgb25lOg0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IDEuIE9wZW4gYWNjZXNzIHRvIGFsbCBuZXR3b3JrIHJlc291cmNlcyBi eSBkZWZhdWx0IGluIA0KPiA+ID4gPiA+ID4gQ29yZG92YQ0KPiA0LnguDQo+ID4gPiA+ID4gPiAg ICogVGhpcyBkb2Vzbid0IGFwcGx5IHRvIG5hdmlnYXRpb25zLCBvciBsYXVuY2hpbmcgb3RoZXIg YXBwcy4NCj4gPiA+ID4gPiA+IFRoZXkncmUgc3RpbGwgYmxvY2tlZCBieSBkZWZhdWx0Lg0KPiA+ ID4gPiA+ID4gICAqIEFueSBwbHVnaW4gaW1wbGVtZW50aW5nIHNob3VsZEFsbG93UmVxdWVzdCB3 b3VsZCBzdGlsbCANCj4gPiA+ID4gPiA+IGJlIGFibGUgdG8NCj4gPiA+ID4gPiB0dXJuDQo+ID4g PiA+ID4gPiB0aGlzIGludG8gYSBkaXNhbGxvdy1ieS1kZWZhdWx0IHdoaXRlbGlzdA0KPiA+ID4g PiA+ID4gICAqIFdlIGNhbid0IGJsb2NrIGV2ZXJ5dGhpbmcgYW55d2F5IChzZWUgd2Vic29ja2V0 cywgDQo+ID4gPiA+ID4gPiBhdWRpby92aWRlbw0KPiA+ID4gPiA+IHN0cmVhbXMgLw0KPiA+ID4g PiA+ID4gcHJvYmFibHkgbW9yZSksIHNvIGl0IHJlbW92ZXMgdGhlIGlsbHVzaW9uIHRoYXQgd2Ug Y2FuLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IDIuIE1ha2UgYW5vdGhlciB3aGl0ZWxpc3Qt eSBwbHVnaW4sIHNvbWV0aGluZyBsaWtlDQo+ID4gPiA+ID4gIm9yZy5hcGFjaGUuY29yZG92YS5j c3AiDQo+ID4gPiA+ID4gPiB0aGF0IGV4aXN0cyBvbmx5IHRvIG9wZW4gdXAgYWNjZXNzIHRvIG5l dHdvcmsgcmVzb3VyY2VzLg0KPiA+ID4gPiA+ID4gRGlyZWN0IGFsbCB1c2VycyB3aG8gd2FudCB0 byB1c2UgQ1NQIHRvIGluc3RhbGwgdGhhdCBwbHVnaW4gZmlyc3QNCj4gPiA+ID4gPiA+ICAgKiBJ dCdzIGEgNHRoIG5ldHdvcmsgcGx1Z2luIChhZnRlciBsZWdhY3ktd2hpdGVsaXN0LA0KPiA+ID4g PiA+IG5hdmlnYXRpb24td2hpdGVsaXN0DQo+ID4gPiA+ID4gPiBhbmQgaW50ZW50LXdoaXRlbGlz dCkNCj4gPiA+ID4gPiA+ICAgKiBBZGRpbmcgaXQgZG9lc24ndCBhY3R1YWxseSBhZGQgYW55IENT UCBwcm90ZWN0aW9uLCBzbyBpdCANCj4gPiA+ID4gPiA+IHByb2JhYmx5DQo+ID4gPiA+ID4gbmVl ZHMNCj4gPiA+ID4gPiA+IGEgYmV0dGVyIG5hbWUNCj4gPiA+ID4gPiA+ICAgKiBJdCdzIGFuIGV4 dHJhIHN0ZXAgdGhhdCBtYXkgY29uZnVzZSBwZW9wbGUgYW5kIGxpbWl0IA0KPiA+ID4gPiA+ID4g YWRvcHRpb24NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAzLiBEbyBzb21ldGhpbmcgY3Jhenku IE1heWJlIGEgQ1NQIHBsdWdpbiB0aGF0IGF1dG9tYXRpY2FsbHkgDQo+ID4gPiA+ID4gPiBjcmVh dGVzIENTUCB0YWdzICphbmQqIHVwZGF0ZXMgdGhlIFhIUiB3aGl0ZWxpc3QsIGJvdGggZnJvbSAN Cj4gPiA+ID4gPiA+IGNvbmZpZw0KPiA+ID4gZGlyZWN0aXZlcy4NCj4gPiA+ID4gPiA+ICAgKiBM b3RzIG1vcmUgd29yaw0KPiA+ID4gPiA+ID4gICAqIFdlIHByb2JhYmx5IGRvbid0IGtub3cgZW5v dWdoIGFib3V0IHJlYWwgcmVxdWlyZW1lbnRzIHRvIA0KPiA+ID4gPiA+ID4gZ2V0IHRoaXMNCj4g PiA+ID4gPiByaWdodA0KPiA+ID4gPiA+ID4gICAqIElmIENTUCBpcyBkb2luZyBpdHMgam9iLCB0 aGVuIHRoZSBYSFIgd2hpdGVsaXN0IGlzbid0IA0KPiA+ID4gPiA+ID4gbmVlZGVkIGFueXdheTsN Cj4gPiA+ID4gPiBpdA0KPiA+ID4gPiA+ID4gd291bGQganVzdCBiZSBhbm90aGVyIGxheWVyIHRo YXQgaXNuJ3QgZG9pbmcgYW55dGhpbmcgZGlmZmVyZW50Lg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IEknbSBsZWFuaW5nIHRvd2FyZHMgIzEsIGJ1dCBpdHMgYSBpdCdzIGEgZGVjaXNpb24gdGhh dCB3ZSANCj4gPiA+ID4gPiA+IHJlYWxseSBzaG91bGQgdGhpbmsgYWJvdXQgYW5kIGRlY2lkZSBv bi1saXN0IGJlZm9yZSBtb3ZpbmcNCj4gZm9yd2FyZC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBJYW4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+ID4gPiAtLQ0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAtIFRvIHVuc3Vic2NyaWJlLCBlLW1haWw6 IGRldi11bnN1YnNjcmliZUBjb3Jkb3ZhLmFwYWNoZS5vcmcNCj4gPiA+ID4gRm9yIGFkZGl0aW9u YWwgY29tbWFuZHMsIGUtbWFpbDogZGV2LWhlbHBAY29yZG92YS5hcGFjaGUub3JnDQo+ID4gPiA+ DQo+ID4gPg0KPiA+DQo+DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUbyB1bnN1YnNjcmliZSwgZS1tYWls OiBkZXYtdW5zdWJzY3JpYmVAY29yZG92YS5hcGFjaGUub3JnDQo+IEZvciBhZGRpdGlvbmFsIGNv bW1hbmRzLCBlLW1haWw6IGRldi1oZWxwQGNvcmRvdmEuYXBhY2hlLm9yZw0KPg0K DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGRldi11bnN1YnNj cmliZUBjb3Jkb3ZhLmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1h aWw6IGRldi1oZWxwQGNvcmRvdmEuYXBhY2hlLm9yZw0K