Porting to vxWorks 6.6-correction
Yakov Gerlovin <[email protected]> Fri, 26 Sep 2008 11:15:25 +0300
| Newsgroups | gmane.comp.corba.omniorb.devel |
|---|---|
| Message-ID | <93BC09B2B8795C49B4E3453CE6A45A186678CFE737@ILPTMAIL02.ecitele.com> |
--_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, I'd like to share with you the fix I made, while compiling the omniORB for = vxWorks (I'm running Workbench 3.0 under WinXP). The problem is that for some strange reason the 'inet_addr' function is de= clared as u_long inet_addr(register char *inetString) and the compiler generates the following errors when compiling orbcore\tra= nsportRules.cc (Revision 1.1.4.8) omniORB/orbcore/transportRules.cc: In member function 'virtual CORBA::Boole= an omni::builtinIPv4Rule::match(const char*)': omniORB/orbcore/transportRules.cc:287: error: invalid conversion from 'cons= t char*' to 'char*' omniORB/orbcore/transportRules.cc:287: error: initializing argument 1 of = 'long unsigned int inet_addr(char*)' omniORB/orbcore/transportRules.cc:294: error: invalid conversion from 'cons= t char*' to 'char*' omniORB/orbcore/transportRules.cc:294: error: initializing argument 1 of = 'long unsigned int inet_addr(char*)' omniORB/orbcore/transportRules.cc: In static member function 'static CORBA:= :Boolean omni::builtinRuleType::parseIPv4AddressMask(const char*, CORBA::UL= ong&, CORBA::ULong&)': omniORB/orbcore/transportRules.cc:476: error: invalid conversion from 'cons= t char*' to 'char*' omniORB/orbcore/transportRules.cc:476: error: initializing argument 1 of = 'long unsigned int inet_addr(char*)' the fix is obvious: #287: CORBA::ULong address =3D inet_addr((char*)ipv4.in()); #294: CORBA::ULong address =3D inet_addr((char*)ipv4.in() + 7); #476: network =3D inet_addr((char*)cp.in()); Kind regards, Yakov --_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_ Content-Type: application/octet-stream; name="transportRules.cc" Content-Description: transportRules.cc Content-Disposition: attachment; filename="transportRules.cc"; size=21835; creation-date="Sun, 21 Sep 2008 18:57:05 GMT"; modification-date="Wed, 24 Sep 2008 17:33:26 GMT" Content-Transfer-Encoding: base64 Ly8gLSotIE1vZGU6IEMrKzsgLSotDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNr YWdlICAgOiBvbW5pT1JCDQovLyB0cmFuc3BvcnRSdWxlLmNjICAgICAgICAgICBDcmVhdGVkIG9u OiAyMS8wOC8yMDAxDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3IgICAgOiBT YWkgTGFpIExvIChzbGwpDQovLw0KLy8gICAgQ29weXJpZ2h0IChDKSAyMDAxIEFUJlQgTGFib3Jh dG9yaWVzIENhbWJyaWRnZQ0KLy8NCi8vICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBvbW5p T1JCIGxpYnJhcnkNCi8vDQovLyAgICBUaGUgb21uaU9SQiBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KLy8gICAgbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCi8vICAgIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0K Ly8gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLg0KLy8NCi8vICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KLy8gICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCi8vICAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VDQovLyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCi8vDQovLyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KLy8gICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KLy8gICAgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BDQovLyAgICAw MjExMS0xMzA3LCBVU0ENCi8vDQovLw0KLy8gRGVzY3JpcHRpb246DQovLw0KDQovKg0KICAkTG9n OiB0cmFuc3BvcnRSdWxlcy5jYyx2ICQNCiAgUmV2aXNpb24gMS4xLjQuOCAgMjAwNy8xMC8yOSAx MTozMzozOSAgZGdyaXNieQ0KICBQcm9wZXJseSBzdXBwb3J0IElQdjQgaW4gSVB2NiBpbiBsb2Nh bGhvc3QgdHJhbnNwb3J0IHJ1bGUuDQoNCiAgUmV2aXNpb24gMS4xLjQuNyAgMjAwNi8xMS8wMiAx NDowMDo1NCAgZGdyaXNieQ0KICBSZW1vdmUgYSBmZXcgd2FybmluZ3MuDQoNCiAgUmV2aXNpb24g MS4xLjQuNiAgMjAwNi8wOC8wOSAxNzo1NTozMiAgZGdyaXNieQ0KICBQZXJtaXQgaG9zdG5hbWVz IGluIHRyYW5zcG9ydFJ1bGVzLg0KDQogIFJldmlzaW9uIDEuMS40LjUgIDIwMDYvMDQvMjQgMTQ6 MjY6MDAgIGRncmlzYnkNCiAgTWF0Y2ggSVB2NC1pbi1JUHY2IGFkZHJlc3NlcyBpbiBJUHY0IHJ1 bGVzLg0KDQogIFJldmlzaW9uIDEuMS40LjQgIDIwMDYvMDQvMjEgMTQ6NDA6MzkgIGRncmlzYnkN CiAgSVB2NiBzdXBwb3J0IGluIHRyYW5zcG9ydCBydWxlcy4NCg0KICBSZXZpc2lvbiAxLjEuNC4z ICAyMDA2LzAzLzI1IDE4OjU0OjAzICBkZ3Jpc2J5DQogIEluaXRpYWwgSVB2NiBzdXBwb3J0Lg0K DQogIFJldmlzaW9uIDEuMS40LjIgIDIwMDUvMDEvMDYgMjM6MTA6NDEgIGRncmlzYnkNCiAgQmln IG1lcmdlIGZyb20gb21uaTRfMF9kZXZlbG9wLg0KDQogIFJldmlzaW9uIDEuMS40LjEgIDIwMDMv MDMvMjMgMjE6MDI6MDAgIGRncmlzYnkNCiAgU3RhcnQgb2Ygb21uaU9SQiA0LjEueCBkZXZlbG9w bWVudCBicmFuY2guDQoNCiAgUmV2aXNpb24gMS4xLjIuNyAgMjAwMy8wMi8xNyAwMjowMzowOSAg ZGdyaXNieQ0KICB2eFdvcmtzIHBvcnQuIChUaGFua3MgTWljaGFlbCBTdHVybSAvIEFjdGVybmEg RW5pbmdlbiBHbWJIKS4NCg0KICBSZXZpc2lvbiAxLjEuMi42ICAyMDAzLzAxLzA2IDExOjExOjU1 ICBkZ3Jpc2J5DQogIE5ldyBBZGRySW5mbyBpbnN0ZWFkIG9mIGdldGhvc3RieW5hbWUuDQoNCiAg UmV2aXNpb24gMS4xLjIuNSAgMjAwMS8wOS8yNCAxNjoxNjoxMCAgc2xsDQogIEFsbG93IHNlcnZl clRyYW5zcG9ydFJ1bGUgYW5kIGNsaWVudFRyYW5zcG9ydFJ1bGUgdG8gYmUgc3BlY2lmaWVkIGFz DQogIC1PUkIgaW5pdGlhbGlzYXRpb24gb3B0aW9ucy4NCg0KICBSZXZpc2lvbiAxLjEuMi40ICAy MDAxLzA4LzMxIDE2OjU5OjU5ICBzbGwNCiAgU3VwcG9ydCAnXicgcHJlZml4IGluIGFkZHJlc3Mg ZmllbGQuDQogIERvIGhvc3QgYWRkcmVzcyBsb29rdXAgaW4gZXh0cmFjdElQdjQgaWYgbmVjZXNz YXJ5Lg0KDQogIFJldmlzaW9uIDEuMS4yLjMgIDIwMDEvMDgvMzEgMTE6NTY6NTIgIHNsbA0KICBD aGFuZ2UgdGhlIGRlZmF1bHQgcHJlZmVyZW5jZSB0byB1bml4LHRjcCxzc2wuDQogIE1pbm9yIGZp eCB0byBleHRyYWN0SVB2NC4NCg0KICBSZXZpc2lvbiAxLjEuMi4yICAyMDAxLzA4LzI5IDE3OjU0 OjE1ICBzbGwNCiAgTmV3IG1ldGhvZCBkdW1wUnVsZS4NCg0KICBSZXZpc2lvbiAxLjEuMi4xICAy MDAxLzA4LzIzIDE2OjAwOjM1ICBzbGwNCiAgQWRkZWQgbWV0aG9kIGluIGdpb3BUcmFuc3BvcnRJ bXBsIHRvIHJldHVybiB0aGUgYWRkcmVzc2VzIG9mIHRoZSBob3N0DQogIGludGVyZmFjZXMuDQoN CiovDQoNCiNpbmNsdWRlIDxvbW5pT1JCNC9DT1JCQS5oPg0KI2luY2x1ZGUgPG9tbmlPUkI0L29t bmlVUkkuaD4NCiNpbmNsdWRlIDxvcmJPcHRpb25zLmg+DQojaW5jbHVkZSA8dHJhbnNwb3J0UnVs ZXMuaD4NCiNpbmNsdWRlIDxpbml0aWFsaXNlci5oPg0KI2luY2x1ZGUgPFNvY2tldENvbGxlY3Rp b24uaD4NCiNpbmNsdWRlIDxsaWJjV3JhcHBlci5oPg0KI2luY2x1ZGUgPG9tbmlPUkI0L2dpb3BF bmRwb2ludC5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5j bHVkZSA8Y3R5cGUuaD4NCg0KI2luY2x1ZGUgPHRjcC90Y3BDb25uZWN0aW9uLmg+DQoNCk9NTklf TkFNRVNQQUNFX0JFR0lOKG9tbmkpDQoNCnN0YXRpYyB0cmFuc3BvcnRSdWxlcyBzZXJ2ZXJSdWxl c187DQpzdGF0aWMgdHJhbnNwb3J0UnVsZXMgY2xpZW50UnVsZXNfOw0KDQpzdGF0aWMgY2hhciog ZHVtcFJ1bGVTdHJpbmcodHJhbnNwb3J0UnVsZXM6OlJ1bGVBY3Rpb25QYWlyKiByYSk7DQoNCi8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vDQp0cmFuc3BvcnRSdWxlczo6dHJhbnNwb3J0UnVsZXMoKSB7DQp9 DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQp0cmFuc3BvcnRSdWxlczo6fnRyYW5zcG9ydFJ1bGVz KCkgew0KICByZXNldCgpOw0KfQ0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0Kdm9pZA0KdHJhbnNw b3J0UnVsZXM6OnJlc2V0KCkgew0KICBvbW5pdmVjdG9yPFJ1bGVBY3Rpb25QYWlyKj46Oml0ZXJh dG9yIGkgPSBwZF9ydWxlcy5iZWdpbigpOw0KICBvbW5pdmVjdG9yPFJ1bGVBY3Rpb25QYWlyKj46 Oml0ZXJhdG9yIGxhc3QgPSBwZF9ydWxlcy5lbmQoKTsNCg0KICBmb3IgKDsgaSAhPSBsYXN0OyBp KyspIHsNCiAgICBkZWxldGUgKCppKTsNCiAgfQ0KICBwZF9ydWxlcy5lcmFzZShwZF9ydWxlcy5i ZWdpbigpLGxhc3QpOw0KfQ0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KdHJhbnNwb3J0UnVsZXMm DQp0cmFuc3BvcnRSdWxlczo6c2VydmVyUnVsZXMoKSB7DQogIHJldHVybiBzZXJ2ZXJSdWxlc187 DQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQp0cmFuc3BvcnRSdWxlcyYNCnRyYW5zcG9ydFJ1 bGVzOjpjbGllbnRSdWxlcygpIHsNCiAgcmV0dXJuIGNsaWVudFJ1bGVzXzsNCn0NCg0KLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8NCkNPUkJBOjpCb29sZWFuDQp0cmFuc3BvcnRSdWxlczo6bWF0Y2goY29u c3QgY2hhciogZW5kcG9pbnQsDQoJCSAgICAgIHRyYW5zcG9ydFJ1bGVzOjpzZXF1ZW5jZVN0cmlu ZyYgYWN0aW9ucywNCgkJICAgICAgQ09SQkE6OlVMb25nJiBwcmlvcml0eSkgew0KDQogIG9tbml2 ZWN0b3I8UnVsZUFjdGlvblBhaXIqPjo6aXRlcmF0b3IgaSA9IHBkX3J1bGVzLmJlZ2luKCk7DQog IG9tbml2ZWN0b3I8UnVsZUFjdGlvblBhaXIqPjo6aXRlcmF0b3IgbGFzdCA9IHBkX3J1bGVzLmVu ZCgpOw0KDQogIHdoaWxlIChpICE9IGxhc3QpIHsNCiAgICBpZiAoKCppKS0+cnVsZV8tPm1hdGNo KGVuZHBvaW50KSkgew0KICAgICAgQ09SQkE6OlVMb25nIG1heCA9ICgqaSktPmFjdGlvbl8ubWF4 aW11bSgpOw0KICAgICAgQ09SQkE6OlVMb25nIGxlbiA9ICgqaSktPmFjdGlvbl8ubGVuZ3RoKCk7 DQogICAgICBhY3Rpb25zLnJlcGxhY2UobWF4LGxlbiwoKmkpLT5hY3Rpb25fLmdldF9idWZmZXIo KSwwKTsNCiAgICAgIHByaW9yaXR5ID0gaSAtIHBkX3J1bGVzLmJlZ2luKCk7DQogICAgICByZXR1 cm4gMTsNCiAgICB9DQogICAgaSsrOw0KICB9DQogIHJldHVybiAwOw0KfQ0KDQovLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLw0KY2hhcioNCnRyYW5zcG9ydFJ1bGVzOjpkdW1wUnVsZShDT1JCQTo6VUxvbmcg aW5kZXgpIHsNCiAgb21uaXZlY3RvcjxSdWxlQWN0aW9uUGFpcio+OjppdGVyYXRvciBpID0gcGRf cnVsZXMuYmVnaW4oKTsNCiAgb21uaXZlY3RvcjxSdWxlQWN0aW9uUGFpcio+OjppdGVyYXRvciBs YXN0ID0gcGRfcnVsZXMuZW5kKCk7DQoNCiAgaWYgKCAoaStpbmRleCkgPj0gbGFzdCApIHJldHVy biAwOw0KDQogIHJldHVybiBkdW1wUnVsZVN0cmluZygoKihpK2luZGV4KSkpOw0KfQ0KDQoNCi8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vDQpzdGF0aWMgDQpvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpS dWxlVHlwZSo+KiYNCnJ1bGVUeXBlcygpIHsNCiAgc3RhdGljIG9tbml2ZWN0b3I8dHJhbnNwb3J0 UnVsZXM6OlJ1bGVUeXBlKj4qIHJ1bGV0eXBlc18gPSAwOw0KICBpZiAoIXJ1bGV0eXBlc18pIHsN CiAgICBydWxldHlwZXNfID0gbmV3IG9tbml2ZWN0b3I8dHJhbnNwb3J0UnVsZXM6OlJ1bGVUeXBl Kj47DQogIH0NCiAgcmV0dXJuIHJ1bGV0eXBlc187DQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v DQp2b2lkDQp0cmFuc3BvcnRSdWxlczo6YWRkUnVsZVR5cGUodHJhbnNwb3J0UnVsZXM6OlJ1bGVU eXBlKiBydCkgew0KICBydWxlVHlwZXMoKS0+cHVzaF9iYWNrKHJ0KTsNCn0NCg0KDQoNCi8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KY2xhc3MgYnVpbHRpbk1hdGNo QWxsUnVsZSA6IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6UnVsZSB7DQpwdWJsaWM6DQogIGJ1aWx0 aW5NYXRjaEFsbFJ1bGUoY29uc3QgY2hhciogYWRkcmVzc19tYXNrKSA6IA0KICAgIHRyYW5zcG9y dFJ1bGVzOjpSdWxlKGFkZHJlc3NfbWFzaykge30NCg0KICB+YnVpbHRpbk1hdGNoQWxsUnVsZSgp IHt9DQoNCiAgQ09SQkE6OkJvb2xlYW4gbWF0Y2goY29uc3QgY2hhciopIHsgcmV0dXJuIDE7IH0N Cn07DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQpzdGF0aWMgY2hhciogZXh0cmFjdEhvc3QoY29u c3QgY2hhciogZW5kcG9pbnQpIHsNCiAgLy8gUmV0dXJucyB0aGUgaG9zdCBhZGRyZXNzIGlmIHRo ZXJlIGlzIG9uZSBpbiB0aGUgZW5kcG9pbnQgc3RyaW5nLg0KDQogIC8vIFNraXAgZ2lvcDp0Y3A6 IG9yIGVxdWl2YWxlbnQuDQogIGNvbnN0IGNoYXIqIHAgPSBzdHJjaHIoZW5kcG9pbnQsICc6Jyk7 DQogIGlmIChwKSBwID0gc3RyY2hyKHArMSwgJzonKTsNCiAgaWYgKHApIHsNCiAgICArK3A7DQog ICAgQ09SQkE6OlVTaG9ydCBwb3J0Ow0KICAgIENPUkJBOjpTdHJpbmdfdmFyIGhvc3QgPSBvbW5p VVJJOjpleHRyYWN0SG9zdFBvcnQocCwgcG9ydCwgMCk7DQoNCiAgICBpZiAoTGliY1dyYXBwZXI6 OmlzaXA0YWRkcihob3N0KSkgew0KICAgICAgcmV0dXJuIGhvc3QuX3JldG4oKTsNCiAgICB9DQog ICAgZWxzZSBpZiAoTGliY1dyYXBwZXI6OmlzaXA2YWRkcihob3N0KSkgew0KICAgICAgLy8gQ2hl Y2sgaWYgaXQncyBJUHY0IGVuY2Fwc3VsYXRlZCBpbiBJUHY2DQogICAgICBpZiAoc3RybmNhc2Vj bXAoaG9zdCwgIjo6ZmZmZjoiLCA3KSA9PSAwICYmDQoJICBMaWJjV3JhcHBlcjo6aXNpcDRhZGRy KChjb25zdCBjaGFyKilob3N0ICsgNykpIHsNCg0KCXJldHVybiBDT1JCQTo6c3RyaW5nX2R1cCgo Y29uc3QgY2hhciopaG9zdCArIDcpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIGhvc3QuX3JldG4o KTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAvLyBUcnkgdG8gcmVzb2x2ZSBuYW1lDQogICAg ICBMaWJjV3JhcHBlcjo6QWRkckluZm9fdmFyIGFpKExpYmNXcmFwcGVyOjpnZXRBZGRySW5mbyho b3N0LHBvcnQpKTsNCiAgICAgIGlmIChhaS5pbigpKQ0KICAgICAgICByZXR1cm4gYWktPmFzU3Ry aW5nKCk7DQogICAgfQ0KICB9DQogIHJldHVybiAwOw0KfQ0KDQoNCi8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vDQpjbGFzcyBidWlsdGluTG9jYWxIb3N0UnVsZSA6IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6 UnVsZSB7DQpwdWJsaWM6DQogIGJ1aWx0aW5Mb2NhbEhvc3RSdWxlKGNvbnN0IGNoYXIqIGFkZHJl c3NfbWFzaykgOiANCiAgICB0cmFuc3BvcnRSdWxlczo6UnVsZShhZGRyZXNzX21hc2spIHt9DQoN CiAgfmJ1aWx0aW5Mb2NhbEhvc3RSdWxlKCkge30NCg0KICBDT1JCQTo6Qm9vbGVhbiBtYXRjaChj b25zdCBjaGFyKiBlbmRwb2ludCkgeyANCg0KICAgIGlmIChzdHJuY21wKGVuZHBvaW50LCJnaW9w OnVuaXgiLDkpID09IDApIHJldHVybiAxOw0KDQogICAgLy8gT3RoZXJ3aXNlLCB3ZSB3YW50IHRv IGNoZWNrIGlmIHRoaXMgZW5kcG9pbnQgbWF0Y2hlcyBvbmUgb2Ygb3VyDQogICAgLy8gYWRkcmVz c2VzLg0KICAgIENPUkJBOjpTdHJpbmdfdmFyIGhvc3Q7DQogICAgaG9zdCA9IGV4dHJhY3RIb3N0 KGVuZHBvaW50KTsNCg0KICAgIGlmICggKGNvbnN0IGNoYXIqKWhvc3QgKSAgew0KICAgICAgLy8g R2V0IHRoaXMgaG9zdCdzIElQIGFkZHJlc3NlcyBhbmQgbG9vayBmb3IgYSBtYXRjaA0KICAgICAg Y29uc3Qgb21uaXZlY3Rvcjxjb25zdCBjaGFyKj4qIGlmYWRkcnM7DQogICAgICBpZmFkZHJzID0g Z2lvcFRyYW5zcG9ydEltcGw6OmdldEludGVyZmFjZUFkZHJlc3MoImdpb3A6dGNwIik7DQogICAg ICBpZiAoIWlmYWRkcnMpIHJldHVybiAwOw0KICAgICAgew0KCW9tbml2ZWN0b3I8Y29uc3QgY2hh cio+Ojpjb25zdF9pdGVyYXRvciBpICAgID0gaWZhZGRycy0+YmVnaW4oKTsNCglvbW5pdmVjdG9y PGNvbnN0IGNoYXIqPjo6Y29uc3RfaXRlcmF0b3IgbGFzdCA9IGlmYWRkcnMtPmVuZCgpOw0KCXdo aWxlICggaSAhPSBsYXN0ICkgew0KCSAgaWYgKCBvbW5pOjpzdHJNYXRjaCgoKmkpLGhvc3QpICkg cmV0dXJuIDE7DQoJICBpKys7DQoJfQ0KICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiAwOyAN CiAgfQ0KfTsNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCmNsYXNzIGJ1aWx0aW5JUHY0UnVsZSA6 IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6UnVsZSB7DQpwdWJsaWM6DQogIGJ1aWx0aW5JUHY0UnVs ZShjb25zdCBjaGFyKiBhZGRyZXNzX21hc2ssDQoJCSAgQ09SQkE6OlVMb25nIG4sIENPUkJBOjpV TG9uZyBtKSA6IA0KICAgIHRyYW5zcG9ydFJ1bGVzOjpSdWxlKGFkZHJlc3NfbWFzayksIG5ldHdv cmtfKG4pLCBuZXRtYXNrXyhtKSB7fQ0KDQogIH5idWlsdGluSVB2NFJ1bGUoKSB7fQ0KDQogIENP UkJBOjpCb29sZWFuIG1hdGNoKGNvbnN0IGNoYXIqIGVuZHBvaW50KSB7IA0KDQogICAgQ09SQkE6 OlN0cmluZ192YXIgaXB2NDsNCiAgICBpcHY0ID0gZXh0cmFjdEhvc3QoZW5kcG9pbnQpOw0KICAg IGlmICgoY29uc3QgY2hhciopaXB2NCkgew0KICAgICAgaWYgKExpYmNXcmFwcGVyOjppc2lwNGFk ZHIoaXB2NCkpIHsNCglDT1JCQTo6VUxvbmcgYWRkcmVzcyA9IGluZXRfYWRkcigoY2hhciopaXB2 NC5pbigpKTsNCglyZXR1cm4gKG5ldHdvcmtfID09IChhZGRyZXNzICYgbmV0bWFza18pKTsNCiAg ICAgIH0NCiAgICAgIGVsc2UgaWYgKHN0cm5jYXNlY21wKGlwdjQsICI6OmZmZmY6IiwgNykgPT0g MCAmJg0KCSAgICAgICBMaWJjV3JhcHBlcjo6aXNpcDRhZGRyKChjb25zdCBjaGFyKilpcHY0ICsg NykpIHsNCg0KCS8vIElQdjQgaW4gSVB2Ng0KCUNPUkJBOjpVTG9uZyBhZGRyZXNzID0gaW5ldF9h ZGRyKChjaGFyKilpcHY0LmluKCkgKyA3KTsNCglyZXR1cm4gKG5ldHdvcmtfID09IChhZGRyZXNz ICYgbmV0bWFza18pKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoc3RybmNtcChlbmRwb2lu dCwiZ2lvcDp1bml4Iiw5KSA9PSAwKSB7DQogICAgICAvLyBsb2NhbCB0cmFuc3BvcnQuIERvZXMg dGhpcyBydWxlIGFwcGx5IHRvIHRoaXMgaG9zdCdzIA0KICAgICAgLy8gSVAgYWRkcmVzcyhlcyk/ IA0KICAgICAgY29uc3Qgb21uaXZlY3Rvcjxjb25zdCBjaGFyKj4qIGlmYWRkcnM7DQogICAgICBp ZmFkZHJzID0gZ2lvcFRyYW5zcG9ydEltcGw6OmdldEludGVyZmFjZUFkZHJlc3MoImdpb3A6dGNw Iik7DQogICAgICBpZiAoIWlmYWRkcnMpIHJldHVybiAwOw0KICAgICAgew0KCW9tbml2ZWN0b3I8 Y29uc3QgY2hhcio+Ojpjb25zdF9pdGVyYXRvciBpICAgID0gaWZhZGRycy0+YmVnaW4oKTsNCglv bW5pdmVjdG9yPGNvbnN0IGNoYXIqPjo6Y29uc3RfaXRlcmF0b3IgbGFzdCA9IGlmYWRkcnMtPmVu ZCgpOw0KCXdoaWxlICggaSAhPSBsYXN0ICkgew0KCSAgaWYgKExpYmNXcmFwcGVyOjppc2lwNGFk ZHIoKmkpKSB7DQoJICAgIENPUkJBOjpVTG9uZyBhZGRyZXNzID0gaW5ldF9hZGRyKChjaGFyKiko KmkpKTsNCgkgICAgaWYgKCBuZXR3b3JrXyA9PSAoYWRkcmVzcyAmIG5ldG1hc2tfKSApIHJldHVy biAxOw0KCSAgfQ0KCSAgaSsrOw0KCX0NCglyZXR1cm4gMDsNCiAgICAgIH0NCiAgICB9DQogICAg cmV0dXJuIDA7DQogIH0NCg0KcHJpdmF0ZToNCiAgQ09SQkE6OlVMb25nIG5ldHdvcmtfOw0KICBD T1JCQTo6VUxvbmcgbmV0bWFza187DQp9Ow0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KI2lmIGRl ZmluZWQoT01OSV9TVVBQT1JUX0lQVjYpDQoNCmNsYXNzIGJ1aWx0aW5JUHY2UnVsZSA6IHB1Ymxp YyB0cmFuc3BvcnRSdWxlczo6UnVsZSB7DQpwdWJsaWM6DQogIHR5cGVkZWYgQ09SQkE6Ok9jdGV0 IEFkZHJbMTZdOw0KDQogIGJ1aWx0aW5JUHY2UnVsZShjb25zdCBjaGFyKiBhZGRyZXNzX21hc2ss DQoJCSAgY29uc3QgQWRkciYgbiwgQ09SQkE6OlVMb25nIHApIDogDQogICAgdHJhbnNwb3J0UnVs ZXM6OlJ1bGUoYWRkcmVzc19tYXNrKSwgcHJlZml4XyhwKQ0KICB7DQogICAgZm9yIChpbnQgaT0w OyBpIDwgMTY7ICsraSkNCiAgICAgIG5ldHdvcmtfW2ldID0gbltpXTsNCiAgfQ0KDQogIH5idWls dGluSVB2NlJ1bGUoKSB7fQ0KDQogIENPUkJBOjpCb29sZWFuIG1hdGNoQWRkcihjb25zdCBjaGFy KiBpcHY2KQ0KICB7DQogICAgTGliY1dyYXBwZXI6OkFkZHJJbmZvX3ZhciBhaShMaWJjV3JhcHBl cjo6Z2V0QWRkckluZm8oaXB2NiwwKSk7DQogICAgaWYgKCFhaS5pbigpKSByZXR1cm4gMDsNCg0K ICAgIHNvY2thZGRyX2luNiogc2EgPSAoc29ja2FkZHJfaW42KilhaS0+YWRkcigpOw0KICAgIENP UkJBOjpPY3RldCogaXA2X2J5dGVzID0gKENPUkJBOjpPY3RldCopJnNhLT5zaW42X2FkZHIuczZf YWRkcjsNCg0KICAgIENPUkJBOjpVTG9uZyBiaXRzID0gcHJlZml4XzsNCiAgICBDT1JCQTo6VUxv bmcgaTsNCg0KICAgIGZvciAoaT0wOyBpIDwgMTYgJiYgYml0cyA+IDc7ICsraSwgYml0cy09OCkg ew0KICAgICAgaWYgKG5ldHdvcmtfW2ldICE9IGlwNl9ieXRlc1tpXSkNCglyZXR1cm4gMDsNCiAg ICB9DQogICAgaWYgKGJpdHMpIHsNCiAgICAgIENPUkJBOjpPY3RldCBtYXNrID0gKDB4ZmYgPDwg KDggLSBiaXRzKSkgJiAweGZmOw0KICAgICAgaWYgKChuZXR3b3JrX1tpXSAmIG1hc2spICE9IChp cDZfYnl0ZXNbaV0gJiBtYXNrKSkNCglyZXR1cm4gMDsNCiAgICB9DQogICAgcmV0dXJuIDE7DQog IH0NCg0KICBDT1JCQTo6Qm9vbGVhbiBtYXRjaChjb25zdCBjaGFyKiBlbmRwb2ludCkNCiAgew0K ICAgIENPUkJBOjpTdHJpbmdfdmFyIGlwdjY7DQogICAgaXB2NiA9IGV4dHJhY3RIb3N0KGVuZHBv aW50KTsNCg0KICAgIGlmICgoY29uc3QgY2hhciopaXB2NiAmJiBMaWJjV3JhcHBlcjo6aXNpcDZh ZGRyKGlwdjYpKSB7DQogICAgICByZXR1cm4gbWF0Y2hBZGRyKGlwdjYpOw0KICAgIH0NCg0KICAg IGlmIChzdHJuY21wKGVuZHBvaW50LCJnaW9wOnVuaXgiLDkpID09IDApIHsNCiAgICAgIC8vIGxv Y2FsIHRyYW5zcG9ydC4gRG9lcyB0aGlzIHJ1bGUgYXBwbHkgdG8gdGhpcyBob3N0J3MgDQogICAg ICAvLyBJUCBhZGRyZXNzKGVzKT8gDQogICAgICBjb25zdCBvbW5pdmVjdG9yPGNvbnN0IGNoYXIq PiogaWZhZGRyczsNCiAgICAgIGlmYWRkcnMgPSBnaW9wVHJhbnNwb3J0SW1wbDo6Z2V0SW50ZXJm YWNlQWRkcmVzcygiZ2lvcDp0Y3AiKTsNCiAgICAgIGlmICghaWZhZGRycykgcmV0dXJuIDA7DQog ICAgICB7DQoJb21uaXZlY3Rvcjxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIGkgICAgPSBp ZmFkZHJzLT5iZWdpbigpOw0KCW9tbml2ZWN0b3I8Y29uc3QgY2hhcio+Ojpjb25zdF9pdGVyYXRv ciBsYXN0ID0gaWZhZGRycy0+ZW5kKCk7DQoJd2hpbGUgKCBpICE9IGxhc3QgKSB7DQoJICBpZiAo TGliY1dyYXBwZXI6OmlzaXA2YWRkcigqaSkgJiYgbWF0Y2hBZGRyKCppKSkNCgkgICAgcmV0dXJu IDE7DQoJICBpKys7DQoJfQ0KICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gMDsNCiAgfQ0KDQpw cml2YXRlOg0KICBBZGRyICAgICAgICAgbmV0d29ya187DQogIENPUkJBOjpVTG9uZyBwcmVmaXhf Ow0KfTsNCg0KI2VuZGlmDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCmNsYXNzIGJ1aWx0aW5S dWxlVHlwZSA6IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6UnVsZVR5cGUgew0KcHVibGljOg0KICBi dWlsdGluUnVsZVR5cGUoKSB7DQogICAgdHJhbnNwb3J0UnVsZXM6OmFkZFJ1bGVUeXBlKCh0cmFu c3BvcnRSdWxlczo6UnVsZVR5cGUqKXRoaXMpOw0KICB9DQogIHZpcnR1YWwgfmJ1aWx0aW5SdWxl VHlwZSgpIHt9DQoNCiAgdHJhbnNwb3J0UnVsZXM6OlJ1bGUqIGNyZWF0ZVJ1bGUoY29uc3QgY2hh ciogYWRkcmVzc19tYXNrKSB7DQogICAgDQogICAgQ09SQkE6OlVMb25nIG5ldHdvcmsgPSAwLCBu ZXRtYXNrID0gMDsNCg0KI2lmIGRlZmluZWQoT01OSV9TVVBQT1JUX0lQVjYpDQogICAgYnVpbHRp bklQdjZSdWxlOjpBZGRyIGlwNm5ldHdvcms7DQogICAgQ09SQkE6OlVMb25nIHByZWZpeDsNCiNl bmRpZg0KDQogICAgaWYgKCBvbW5pOjpzdHJNYXRjaChhZGRyZXNzX21hc2ssIioiICkgKSB7DQog ICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVzOjpSdWxlKikgbmV3IGJ1aWx0aW5NYXRjaEFsbFJ1 bGUoYWRkcmVzc19tYXNrKTsNCiAgICB9DQogICAgZWxzZSBpZiAoIG9tbmk6OnN0ck1hdGNoKGFk ZHJlc3NfbWFzaywibG9jYWxob3N0IikgKSB7DQogICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVz OjpSdWxlKikgbmV3IGJ1aWx0aW5Mb2NhbEhvc3RSdWxlKGFkZHJlc3NfbWFzayk7DQogICAgfQ0K ICAgIGVsc2UgaWYgKCBwYXJzZUlQdjRBZGRyZXNzTWFzayhhZGRyZXNzX21hc2ssbmV0d29yayxu ZXRtYXNrKSApIHsNCiAgICAgIHJldHVybiAodHJhbnNwb3J0UnVsZXM6OlJ1bGUqKSBuZXcgYnVp bHRpbklQdjRSdWxlKGFkZHJlc3NfbWFzaywNCgkJCQkJCQkgbmV0d29yaywNCgkJCQkJCQkgbmV0 bWFzayk7DQogICAgfQ0KI2lmIGRlZmluZWQoT01OSV9TVVBQT1JUX0lQVjYpDQogICAgZWxzZSBp ZiAoIHBhcnNlSVB2NkFkZHJlc3NNYXNrKGFkZHJlc3NfbWFzayxpcDZuZXR3b3JrLHByZWZpeCkg KSB7DQogICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVzOjpSdWxlKikgbmV3IGJ1aWx0aW5JUHY2 UnVsZShhZGRyZXNzX21hc2ssDQoJCQkJCQkJIGlwNm5ldHdvcmssDQoJCQkJCQkJIHByZWZpeCk7 DQogICAgfQ0KI2VuZGlmDQogICAgLy8gVHJ5IHRvIHJlc29sdmUgYXMgYSBob3N0bmFtZQ0KICAg IExpYmNXcmFwcGVyOjpBZGRySW5mb192YXIgYWkoTGliY1dyYXBwZXI6OmdldEFkZHJJbmZvKGFk ZHJlc3NfbWFzaywwKSk7DQogICAgaWYgKGFpLmluKCkpIHsNCiAgICAgIENPUkJBOjpTdHJpbmdf dmFyIGFkZHIgPSBhaS0+YXNTdHJpbmcoKTsNCiAgICAgIGlmIChvbW5pT1JCOjp0cmFjZSgyMCkp IHsNCiAgICAgICAgb21uaU9SQjo6bG9nZ2VyIGxvZzsNCiAgICAgICAgbG9nIDw8ICJOYW1lICci IDw8IGFkZHJlc3NfbWFzayA8PCAiJyBpbiB0cmFuc3BvcnQgcnVsZSByZXNvbHZlZCB0byAnIg0K ICAgICAgICAgICAgPDwgYWRkciA8PCAiJy5cbiI7DQogICAgICB9DQogICAgICBpZiAoIHBhcnNl SVB2NEFkZHJlc3NNYXNrKGFkZHIsbmV0d29yayxuZXRtYXNrKSApIHsNCiAgICAgICAgcmV0dXJu ICh0cmFuc3BvcnRSdWxlczo6UnVsZSopIG5ldyBidWlsdGluSVB2NFJ1bGUoYWRkcmVzc19tYXNr LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZXR3b3JrLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuZXRtYXNrKTsNCiAgICAgIH0NCiNpZiBkZWZpbmVkKE9NTklfU1VQ UE9SVF9JUFY2KQ0KICAgICAgZWxzZSBpZiAoIHBhcnNlSVB2NkFkZHJlc3NNYXNrKGFkZHIsaXA2 bmV0d29yayxwcmVmaXgpICkgew0KICAgICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVzOjpSdWxl KikgbmV3IGJ1aWx0aW5JUHY2UnVsZShhZGRyZXNzX21hc2ssDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwNm5ldHdvcmssDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy ZWZpeCk7DQogICAgICB9DQojZW5kaWYNCiAgICB9DQogICAgcmV0dXJuIDA7DQogIH0NCg0KICBz dGF0aWMgQ09SQkE6OkJvb2xlYW4gcGFyc2VJUHY0QWRkcmVzc01hc2soY29uc3QgY2hhciogYWRk cmVzcywNCgkJCQkJICAgICBDT1JCQTo6VUxvbmcmIG5ldHdvcmssDQoJCQkJCSAgICAgQ09SQkE6 OlVMb25nJiBuZXRtYXNrKSB7DQogICAgQ09SQkE6OlN0cmluZ192YXIgY3AoYWRkcmVzcyk7DQog ICAgY2hhciogbWFzayA9IHN0cmNocigoY2hhciopY3AsJy8nKTsNCiAgICBpZiAobWFzaykgew0K ICAgICAgKm1hc2sgPSAnXDAnOw0KICAgICAgbWFzaysrOw0KICAgIH0NCiAgICBlbHNlIHsNCiAg ICAgIG1hc2sgPSAoY2hhciopICIyNTUuMjU1LjI1NS4yNTUiOw0KICAgIH0NCg0KICAgIGlmICgg ISBMaWJjV3JhcHBlcjo6aXNpcDRhZGRyKGNwKSApIHJldHVybiAwOw0KICAgIG5ldHdvcmsgPSBp bmV0X2FkZHIoKGNoYXIqKWNwLmluKCkpOw0KDQogICAgaWYgKCBMaWJjV3JhcHBlcjo6aXNpcDRh ZGRyKG1hc2spICkgew0KICAgICAgbmV0bWFzayA9IGluZXRfYWRkcihtYXNrKTsNCiAgICB9DQog ICAgZWxzZSB7DQogICAgICBjaGFyKiBtYXNrZTsNCiAgICAgIENPUkJBOjpVTG9uZyBwcmVmaXgg PSBzdHJ0b3VsKG1hc2ssICZtYXNrZSwgMTApOw0KICAgICAgaWYgKCptYXNrZSB8fCBwcmVmaXgg PiAzMikNCglyZXR1cm4gMDsNCiAgICAgIG5ldG1hc2sgPSAweGZmZmZmZmZmVSA8PCAoMzIgLSBw cmVmaXgpOw0KICAgICAgbmV0bWFzayA9IGh0b25sKG5ldG1hc2spOw0KICAgIH0NCiAgICByZXR1 cm4gMTsNCiAgfQ0KDQojaWYgZGVmaW5lZChPTU5JX1NVUFBPUlRfSVBWNikNCiAgc3RhdGljIENP UkJBOjpCb29sZWFuIHBhcnNlSVB2NkFkZHJlc3NNYXNrKGNvbnN0IGNoYXIqICAgICAgICAgICAg YWRkcmVzcywNCgkJCQkJICAgICBidWlsdGluSVB2NlJ1bGU6OkFkZHImIG5ldHdvcmssDQoJCQkJ CSAgICAgQ09SQkE6OlVMb25nJiAgICAgICAgICBwcmVmaXgpIHsNCiAgICBDT1JCQTo6U3RyaW5n X3ZhciBjcChhZGRyZXNzKTsNCg0KICAgIGNoYXIqIG1hc2sgPSBzdHJjaHIoKGNoYXIqKWNwLCcv Jyk7DQogICAgaWYgKG1hc2spIHsNCiAgICAgICptYXNrID0gJ1wwJzsNCiAgICAgIG1hc2srKzsN CiAgICAgIGNoYXIqIG1hc2tlOw0KICAgICAgcHJlZml4ID0gc3RydG91bChtYXNrLCAmbWFza2Us IDEwKTsNCg0KICAgICAgaWYgKCEqbWFzayB8fCAqbWFza2UgfHwgcHJlZml4ID4gMTI4KQ0KCXJl dHVybiAwOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIHByZWZpeCA9IDEyODsNCiAgICB9DQog ICAgaWYgKCFMaWJjV3JhcHBlcjo6aXNpcDZhZGRyKGNwKSkgcmV0dXJuIDA7DQoNCiAgICBMaWJj V3JhcHBlcjo6QWRkckluZm9fdmFyIGFpKExpYmNXcmFwcGVyOjpnZXRBZGRySW5mbyhjcCwgMCkp Ow0KICAgIGlmICghYWkuaW4oKSkNCiAgICAgIHJldHVybiAwOw0KDQogICAgc29ja2FkZHJfaW42 KiBzYSA9IChzb2NrYWRkcl9pbjYqKWFpLT5hZGRyKCk7DQogICAgbWVtY3B5KCh2b2lkKikmbmV0 d29yaywgKGNvbnN0IHZvaWQqKSYoc2EtPnNpbjZfYWRkci5zNl9hZGRyKSwgMTYpOw0KICAgIHJl dHVybiAxOw0KICB9DQojZW5kaWYNCg0KfTsNCg0Kc3RhdGljIGJ1aWx0aW5SdWxlVHlwZSBidWls dGluUnVsZVR5cGVfOw0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8NCnN0YXRpYw0KQ09SQkE6OkJvb2xlYW4NCnBhcnNlQW5kQWRkUnVsZVN0cmluZyhvbW5pdmVj dG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+JiBydWxlU3RvcmUsDQoJCSAgICAg IGNvbnN0IGNoYXIqIHJ1bGVfc3RyaW5nKSB7DQoNCiAgdHJhbnNwb3J0UnVsZXM6OnNlcXVlbmNl U3RyaW5nIGFjdGlvbig0KTsNCiAgQ09SQkE6OlN0cmluZ192YXIgYWRkcmVzc19tYXNrOw0KICBD T1JCQTo6Qm9vbGVhbiByZXNldF9saXN0ID0gMDsNCg0KICBDT1JCQTo6U3RyaW5nX3ZhciBycyhy dWxlX3N0cmluZyk7ICAvLyBtYWtlIGEgY29weQ0KDQogIC8vIEV4dHJhY3QgYWRkcmVzcyBtYXNr DQogIGNoYXIqIHAgPSByczsNCiAgd2hpbGUgKCBpc3NwYWNlKCpwKSApDQogICAgcCsrOw0KDQog IGNoYXIqIHEgPSBwOw0KICB3aGlsZSAoICFpc3NwYWNlKCpwKSAmJiAqcCAhPSAnXDAnICkNCiAg ICBwKys7DQoNCiAgaWYgKCpwID09ICdcMCcpDQogICAgcmV0dXJuIDA7DQoNCiAgKnAgPSAnXDAn Ow0KDQogIGlmICggKnEgPT0gJ14nICkgew0KICAgIHJlc2V0X2xpc3QgPSAxOw0KICAgIHErKzsN CiAgICBpZiAoKnEgPT0gJ1wwJykgcmV0dXJuIDA7DQogIH0NCiAgYWRkcmVzc19tYXNrID0gQ09S QkE6OnN0cmluZ19kdXAocSk7DQogIHArKzsNCg0KICAvLyBFeHRyYWN0IGFjdGlvbiBsaXN0LCBv bmUgb3IgbW9yZSBjb21tYSBzZXBhcmF0ZWQgYWN0aW9uLg0KICAvLyBUaGVyZSBtYXkgYWxzbyBi ZSB3aGl0ZSBzcGFjZXMgYmV0d2VlbiB0aGUgYWN0aW9ucyBhbmQgY29tbWEgc2VwYXJhdG9ycy4N CiAgd2hpbGUgKCBpc3NwYWNlKCpwKSApDQogICAgcCsrOw0KICANCiAgcSA9IHA7DQogIA0KICBw ID0gc3RyY2hyKHEsJywnKTsNCiAgd2hpbGUgKCBwICYmIHAgIT0gcSApIHsNCiAgICAqcCA9ICdc MCc7DQogICAgY2hhciogdCA9IHE7DQogICAgd2hpbGUgKCAhaXNzcGFjZSgqdCkgJiYgKnQgIT0g J1wwJyApDQogICAgICB0Kys7DQogICAgKnQgPSAnXDAnOw0KICAgIGFjdGlvbi5sZW5ndGgoYWN0 aW9uLmxlbmd0aCgpKzEpOw0KICAgIGFjdGlvblthY3Rpb24ubGVuZ3RoKCktMV0gPSAoY29uc3Qg Y2hhciopIHE7DQoNCiAgICBwKys7DQogICAgd2hpbGUgKCBpc3NwYWNlKCpwKSApDQogICAgICBw Kys7DQogICAgcSA9IHA7DQogICAgcCA9IHN0cmNocihxLCcsJyk7DQogIH0NCiAgaWYgKCpxID09 ICcsJykNCiAgICByZXR1cm4gMDsNCiAgaWYgKCpxICE9ICdcMCcpIHsNCiAgICBwID0gcTsNCiAg ICB3aGlsZSAoICFpc3NwYWNlKCpwKSAmJiAqcCAhPSAnXDAnICkNCiAgICAgIHArKzsNCiAgICBp ZiAoKnAgIT0gJ1wwJykNCiAgICAgICpwID0gJ1wwJzsNCiAgICBhY3Rpb24ubGVuZ3RoKGFjdGlv bi5sZW5ndGgoKSsxKTsNCiAgICBhY3Rpb25bYWN0aW9uLmxlbmd0aCgpLTFdID0gKGNvbnN0IGNo YXIqKSBxOw0KICB9DQoNCiAgb21uaXZlY3Rvcjx0cmFuc3BvcnRSdWxlczo6UnVsZVR5cGUqPiYg cnVsZXR5cGVzID0gKnJ1bGVUeXBlcygpOw0KICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpS dWxlVHlwZSo+OjppdGVyYXRvciBpID0gcnVsZXR5cGVzLmJlZ2luKCk7DQogIG9tbml2ZWN0b3I8 dHJhbnNwb3J0UnVsZXM6OlJ1bGVUeXBlKj46Oml0ZXJhdG9yIGxhc3QgPSBydWxldHlwZXMuZW5k KCk7DQoNCiAgd2hpbGUgKGkgIT0gbGFzdCkgew0KICAgIHRyYW5zcG9ydFJ1bGVzOjpSdWxlKiBy dWxlID0gKCppKS0+Y3JlYXRlUnVsZShhZGRyZXNzX21hc2spOw0KICAgIGlmIChydWxlKSB7DQog ICAgICB0cmFuc3BvcnRSdWxlczo6UnVsZUFjdGlvblBhaXIqIHJhOw0KICAgICAgcmEgPSBuZXcg dHJhbnNwb3J0UnVsZXM6OlJ1bGVBY3Rpb25QYWlyKHJ1bGUsYWN0aW9uKTsNCiAgICAgIGlmIChy ZXNldF9saXN0KSBydWxlU3RvcmUuZXJhc2UocnVsZVN0b3JlLmJlZ2luKCkscnVsZVN0b3JlLmVu ZCgpKTsNCiAgICAgIHJ1bGVTdG9yZS5wdXNoX2JhY2socmEpOw0KICAgICAgcmV0dXJuIDE7DQog ICAgfQ0KICAgIGkrKzsNCiAgfQ0KICByZXR1cm4gMDsNCn0NCg0KLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8NCnN0YXRpYw0KY2hhcioNCmR1bXBSdWxlU3RyaW5nKHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0 aW9uUGFpciogcmEpIHsNCg0KICB0cmFuc3BvcnRSdWxlczo6c2VxdWVuY2VTdHJpbmcmIHNzID0g cmEtPmFjdGlvbl87DQogIENPUkJBOjpVTG9uZyBsZW4gPSBzdHJsZW4ocmEtPnJ1bGVfLT5hZGRy ZXNzTWFzaygpKSArIDE7DQoNCiAgQ09SQkE6OlVMb25nIGkgPSAwOw0KICBmb3IgKDsgaSA8IHNz Lmxlbmd0aCgpOyBpKyspIHsNCiAgICBsZW4gKz0gc3RybGVuKHNzW2ldKSArIDE7DQogIH0NCiAg DQogIENPUkJBOjpTdHJpbmdfdmFyIHYoQ09SQkE6OnN0cmluZ19hbGxvYyhsZW4pKTsNCiAgc3By aW50Zih2LCIlcyAiLHJhLT5ydWxlXy0+YWRkcmVzc01hc2soKSk7DQoNCiAgaSA9IDA7DQogIHdo aWxlICggaSA8IHNzLmxlbmd0aCgpICkgew0KICAgIHN0cmNhdCh2LHNzW2ldKTsNCiAgICBpKys7 DQogICAgaWYgKGkgIT0gc3MubGVuZ3RoKCkpIHN0cmNhdCh2LCIsIik7DQogIH0NCiAgcmV0dXJu IHYuX3JldG4oKTsNCn0NCg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KY2xhc3MgY2xpZW50VHJh bnNwb3J0UnVsZUhhbmRsZXIgOiBwdWJsaWMgb3JiT3B0aW9uczo6SGFuZGxlciB7DQpwdWJsaWM6 DQoNCiAgY2xpZW50VHJhbnNwb3J0UnVsZUhhbmRsZXIoKSA6IA0KICAgIG9yYk9wdGlvbnM6Okhh bmRsZXIoImNsaWVudFRyYW5zcG9ydFJ1bGUiLA0KCQkJImNsaWVudFRyYW5zcG9ydFJ1bGUgPSA8 YWRkcmVzcyBtYXNrPiAgW2FjdGlvbl0rIiwNCgkJCTEsDQoJCQkiLU9SQmNsaWVudFRyYW5zcG9y dFJ1bGUgXCI8YWRkcmVzcyBtYXNrPiAgW2FjdGlvbl0rXCIiKSB7fQ0KDQogIHZvaWQgdmlzaXQo Y29uc3QgY2hhciogdmFsdWUsDQoJICAgICBvcmJPcHRpb25zOjpTb3VyY2UpICB0aHJvdyAob3Ji T3B0aW9uczo6QmFkUGFyYW0pIHsNCg0KICAgIGlmICghcGFyc2VBbmRBZGRSdWxlU3RyaW5nKGNs aWVudFJ1bGVzXy5wZF9ydWxlcyx2YWx1ZSkpIHsNCiAgICAgIHRocm93IG9yYk9wdGlvbnM6OkJh ZFBhcmFtKGtleSgpLHZhbHVlLCJVbnJlY29nbmlzZWQgYWRkcmVzcyBtYXNrIik7DQogICAgfQ0K ICB9DQoNCiAgdm9pZCBkdW1wKG9yYk9wdGlvbnM6OnNlcXVlbmNlU3RyaW5nJiByZXN1bHQpIHsN CiAgICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+DQogICAgICA6 Oml0ZXJhdG9yIGkgPSBjbGllbnRSdWxlc18ucGRfcnVsZXMuYmVnaW4oKTsNCiAgICBvbW5pdmVj dG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+DQogICAgICA6Oml0ZXJhdG9yIGxh c3QgPSBjbGllbnRSdWxlc18ucGRfcnVsZXMuZW5kKCk7DQoNCiAgICB3aGlsZSAoIGkgIT0gbGFz dCApIHsNCiAgICAgIENPUkJBOjpTdHJpbmdfdmFyIHY7DQogICAgICB2ID0gZHVtcFJ1bGVTdHJp bmcoKmkpOw0KICAgICAgb3JiT3B0aW9uczo6YWRkS1ZTdHJpbmcoa2V5KCksdixyZXN1bHQpOw0K ICAgICAgaSsrOw0KICAgIH0NCiAgfQ0KfTsNCg0Kc3RhdGljIGNsaWVudFRyYW5zcG9ydFJ1bGVI YW5kbGVyIGNsaWVudFRyYW5zcG9ydFJ1bGVIYW5kbGVyXzsNCg0KLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8NCmNsYXNzIHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyIDogcHVibGljIG9yYk9wdGlvbnM6 OkhhbmRsZXIgew0KcHVibGljOg0KDQogIHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyKCkgOiAN CiAgICBvcmJPcHRpb25zOjpIYW5kbGVyKCJzZXJ2ZXJUcmFuc3BvcnRSdWxlIiwNCgkJCSJzZXJ2 ZXJUcmFuc3BvcnRSdWxlID0gPGFkZHJlc3MgbWFzaz4gIFthY3Rpb25dKyIsDQoJCQkxLA0KCQkJ Ii1PUkJzZXJ2ZXJUcmFuc3BvcnRSdWxlIFwiPGFkZHJlc3MgbWFzaz4gIFthY3Rpb25dK1wiIikg e30NCg0KICB2b2lkIHZpc2l0KGNvbnN0IGNoYXIqIHZhbHVlLA0KCSAgICAgb3JiT3B0aW9uczo6 U291cmNlKSB0aHJvdyAob3JiT3B0aW9uczo6QmFkUGFyYW0pIHsNCg0KICAgIGlmICghcGFyc2VB bmRBZGRSdWxlU3RyaW5nKHNlcnZlclJ1bGVzXy5wZF9ydWxlcyx2YWx1ZSkpIHsNCiAgICAgIHRo cm93IG9yYk9wdGlvbnM6OkJhZFBhcmFtKGtleSgpLHZhbHVlLCJVbnJlY29nbmlzZWQgYWRkcmVz cyBtYXNrIik7DQogICAgfQ0KICB9DQoNCiAgdm9pZCBkdW1wKG9yYk9wdGlvbnM6OnNlcXVlbmNl U3RyaW5nJiByZXN1bHQpIHsNCiAgICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0 aW9uUGFpcio+DQogICAgICA6Oml0ZXJhdG9yIGkgPSBzZXJ2ZXJSdWxlc18ucGRfcnVsZXMuYmVn aW4oKTsNCiAgICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+DQog ICAgICA6Oml0ZXJhdG9yIGxhc3QgPSBzZXJ2ZXJSdWxlc18ucGRfcnVsZXMuZW5kKCk7DQoNCiAg ICB3aGlsZSAoIGkgIT0gbGFzdCApIHsNCiAgICAgIENPUkJBOjpTdHJpbmdfdmFyIHY7DQogICAg ICB2ID0gZHVtcFJ1bGVTdHJpbmcoKmkpOw0KICAgICAgb3JiT3B0aW9uczo6YWRkS1ZTdHJpbmco a2V5KCksdixyZXN1bHQpOw0KICAgICAgaSsrOw0KICAgIH0NCiAgfQ0KfTsNCg0Kc3RhdGljIHNl cnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyIHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyXzsNCg0K Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vICAgICAgICAgICAgTW9kdWxlIGluaXRpYWxpc2VyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQovLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLw0KY2xhc3Mgb21uaV90cmFuc3BvcnRSdWxlc19pbml0aWFsaXNlciA6IHB1YmxpYyBv bW5pSW5pdGlhbGlzZXIgew0KcHVibGljOg0KDQogIG9tbmlfdHJhbnNwb3J0UnVsZXNfaW5pdGlh bGlzZXIoKSB7DQogICAgb3JiT3B0aW9uczo6c2luZ2xldG9uKCkucmVnaXN0ZXJIYW5kbGVyKGNs aWVudFRyYW5zcG9ydFJ1bGVIYW5kbGVyXyk7DQogICAgb3JiT3B0aW9uczo6c2luZ2xldG9uKCku cmVnaXN0ZXJIYW5kbGVyKHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyXyk7DQogIH0NCiAgdmly dHVhbCB+b21uaV90cmFuc3BvcnRSdWxlc19pbml0aWFsaXNlcigpIHsNCiAgICBvbW5pdmVjdG9y PHRyYW5zcG9ydFJ1bGVzOjpSdWxlVHlwZSo+KiYgcnVsZXR5cGVzID0gcnVsZVR5cGVzKCk7DQog ICAgaWYgKHJ1bGV0eXBlcykgew0KICAgICAgZGVsZXRlIHJ1bGV0eXBlczsNCiAgICAgIHJ1bGV0 eXBlcyA9IDA7DQogICAgfQ0KICB9DQogIHZvaWQgYXR0YWNoKCkgeyANCiAgICBpZiAoY2xpZW50 UnVsZXNfLnBkX3J1bGVzLnNpemUoKSA9PSAwKSB7DQogICAgICAvLyBBZGQgYSBkZWZhdWx0IHJ1 bGUNCiAgICAgIHBhcnNlQW5kQWRkUnVsZVN0cmluZyhjbGllbnRSdWxlc18ucGRfcnVsZXMsDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogdW5peCxzc2wsdGNwIik7DQogICAgfQ0KICAg IGlmIChzZXJ2ZXJSdWxlc18ucGRfcnVsZXMuc2l6ZSgpID09IDApIHsNCiAgICAgIC8vIEFkZCBh IGRlZmF1bHQgcnVsZQ0KICAgICAgcGFyc2VBbmRBZGRSdWxlU3RyaW5nKHNlcnZlclJ1bGVzXy5w ZF9ydWxlcywNCgkJCSAgICAiKiB1bml4LHNzbCx0Y3AiKTsNCiAgICB9DQogIH0NCiAgdm9pZCBk ZXRhY2goKSB7IA0KICAgIHNlcnZlclJ1bGVzXy5yZXNldCgpOw0KICAgIGNsaWVudFJ1bGVzXy5y ZXNldCgpOw0KICB9DQp9Ow0KDQoNCnN0YXRpYyBvbW5pX3RyYW5zcG9ydFJ1bGVzX2luaXRpYWxp c2VyIGluaXRpYWxpc2VyOw0KDQpvbW5pSW5pdGlhbGlzZXImIG9tbmlfdHJhbnNwb3J0UnVsZXNf aW5pdGlhbGlzZXJfID0gaW5pdGlhbGlzZXI7DQoNCg0KDQpPTU5JX05BTUVTUEFDRV9FTkQob21u aSkNCg== --_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ omniORB-dev mailing list [email protected] http://www.omniorb-support.com/mailman/listinfo/omniorb-dev --_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_--