From octave-sources-request at bevo dot che dot wisc dot edu Mon Jan 21 04:08:18 2002 Subject: 3/N-D MArrays (once more) and 3D Matrix From: "G.W.M. Vissers" To: Octave Sources Mailing List Date: Mon, 21 Jan 2002 11:07:22 +0100 (CET) This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime at docserver dot cac dot washington dot edu for more info. ---1367106628-2088797501-1011607642=:24460 Content-Type: TEXT/PLAIN; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Hello, This is a second patch against cvs in our quest for multidimensional array support. It is assumed that you have applied the first patch (dated Jan-17-2002). Changes include: * Adapted Makefile.in so that MArray3.o and MArrayN.o are actually built and linked in :) * instantiations of Array3, ArrayN, MArray3 and MArrayN classes for Complex, bool, char, double, int and short types. * Start of new class dMatrix3, which is going to be the new 3D double Matrix class. Greetings, Gé ---1367106628-2088797501-1011607642=:24460 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="dMatrix3.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="dMatrix3.patch" ZGlmZiAtTmF1ciBvY3RhdmUvbGlib2N0YXZlL0FycmF5LUMuY2Mgb2N0YXZl LW5ldy9saWJvY3RhdmUvQXJyYXktQy5jYw0KLS0tIG9jdGF2ZS9saWJvY3Rh dmUvQXJyYXktQy5jYwlUaHUgTWF5IDMxIDIxOjMwOjQ5IDIwMDENCisrKyBv Y3RhdmUtbmV3L2xpYm9jdGF2ZS9BcnJheS1DLmNjCVN1biBKYW4gMjAgMjA6 NDI6MzcgMjAwMg0KQEAgLTYyLDYgKzYyLDE2IEBADQogdGVtcGxhdGUgaW50 IGFzc2lnbiAoQXJyYXkyPENvbXBsZXg+JiwgY29uc3QgQXJyYXkyPHNob3J0 PiYsIGNvbnN0IENvbXBsZXgmKTsNCiB0ZW1wbGF0ZSBpbnQgYXNzaWduIChB cnJheTI8Q29tcGxleD4mLCBjb25zdCBBcnJheTI8Y2hhcj4mLCBjb25zdCBD b21wbGV4Jik7DQogDQorI2luY2x1ZGUgIkFycmF5My5oIg0KKyNpbmNsdWRl ICJBcnJheTMuY2MiDQorDQordGVtcGxhdGUgY2xhc3MgQXJyYXkzPENvbXBs ZXg+Ow0KKw0KKyNpbmNsdWRlICJBcnJheU4uaCINCisjaW5jbHVkZSAiQXJy YXlOLmNjIg0KKw0KK3RlbXBsYXRlIGNsYXNzIEFycmF5TjxDb21wbGV4PjsN CisNCiAjaW5jbHVkZSAiRGlhZ0FycmF5Mi5oIg0KICNpbmNsdWRlICJEaWFn QXJyYXkyLmNjIg0KIA0KZGlmZiAtTmF1ciBvY3RhdmUvbGlib2N0YXZlL0Fy cmF5LWIuY2Mgb2N0YXZlLW5ldy9saWJvY3RhdmUvQXJyYXktYi5jYw0KLS0t IG9jdGF2ZS9saWJvY3RhdmUvQXJyYXktYi5jYwlNb24gSmFuIDIxIDEwOjU0 OjA0IDIwMDINCisrKyBvY3RhdmUtbmV3L2xpYm9jdGF2ZS9BcnJheS1iLmNj CVN1biBKYW4gMjAgMjA6NDY6MDMgMjAwMg0KQEAgLTQ0LDYgKzQ0LDE2IEBA DQogDQogdGVtcGxhdGUgaW50IGFzc2lnbiAoQXJyYXkyPGJvb2w+JiwgY29u c3QgQXJyYXkyPGJvb2w+JiwgY29uc3QgYm9vbCYpOw0KIA0KKyNpbmNsdWRl ICJBcnJheTMuaCINCisjaW5jbHVkZSAiQXJyYXkzLmNjIg0KKw0KK3RlbXBs YXRlIGNsYXNzIEFycmF5Mzxib29sPjsNCisNCisjaW5jbHVkZSAiQXJyYXlO LmgiDQorI2luY2x1ZGUgIkFycmF5Ti5jYyINCisNCit0ZW1wbGF0ZSBjbGFz cyBBcnJheU48Ym9vbD47DQorDQogI2luY2x1ZGUgIkRpYWdBcnJheTIuaCIN CiAjaW5jbHVkZSAiRGlhZ0FycmF5Mi5jYyINCiANCmRpZmYgLU5hdXIgb2N0 YXZlL2xpYm9jdGF2ZS9BcnJheS1jaC5jYyBvY3RhdmUtbmV3L2xpYm9jdGF2 ZS9BcnJheS1jaC5jYw0KLS0tIG9jdGF2ZS9saWJvY3RhdmUvQXJyYXktY2gu Y2MJTW9uIEphbiAyMSAxMDo1NDowOCAyMDAyDQorKysgb2N0YXZlLW5ldy9s aWJvY3RhdmUvQXJyYXktY2guY2MJU3VuIEphbiAyMCAyMDo0NToyNyAyMDAy DQpAQCAtNDQsNiArNDQsMTYgQEANCiANCiB0ZW1wbGF0ZSBpbnQgYXNzaWdu IChBcnJheTI8Y2hhcj4mLCBjb25zdCBBcnJheTI8Y2hhcj4mLCBjb25zdCBj aGFyJik7DQogDQorI2luY2x1ZGUgIkFycmF5My5oIg0KKyNpbmNsdWRlICJB cnJheTMuY2MiDQorDQordGVtcGxhdGUgY2xhc3MgQXJyYXkzPGNoYXI+Ow0K Kw0KKyNpbmNsdWRlICJBcnJheU4uaCINCisjaW5jbHVkZSAiQXJyYXlOLmNj Ig0KKw0KK3RlbXBsYXRlIGNsYXNzIEFycmF5TjxjaGFyPjsNCisNCiAjaW5j bHVkZSAiRGlhZ0FycmF5Mi5oIg0KICNpbmNsdWRlICJEaWFnQXJyYXkyLmNj Ig0KIA0KZGlmZiAtTmF1ciBvY3RhdmUvbGlib2N0YXZlL0FycmF5LWQuY2Mg b2N0YXZlLW5ldy9saWJvY3RhdmUvQXJyYXktZC5jYw0KLS0tIG9jdGF2ZS9s aWJvY3RhdmUvQXJyYXktZC5jYwlNb24gSmFuIDIxIDEwOjU0OjExIDIwMDIN CisrKyBvY3RhdmUtbmV3L2xpYm9jdGF2ZS9BcnJheS1kLmNjCVN1biBKYW4g MjAgMjA6NDM6MzggMjAwMg0KQEAgLTU2LDYgKzU2LDExIEBADQogdGVtcGxh dGUgaW50IGFzc2lnbiAoQXJyYXkyPGRvdWJsZT4mLCBjb25zdCBBcnJheTI8 c2hvcnQ+JiwgY29uc3QgZG91YmxlJik7DQogdGVtcGxhdGUgaW50IGFzc2ln biAoQXJyYXkyPGRvdWJsZT4mLCBjb25zdCBBcnJheTI8Y2hhcj4mLCBjb25z dCBkb3VibGUmKTsNCiANCisjaW5jbHVkZSAiQXJyYXkzLmgiDQorI2luY2x1 ZGUgIkFycmF5My5jYyINCisNCit0ZW1wbGF0ZSBjbGFzcyBBcnJheTM8ZG91 YmxlPjsNCisNCiAjaW5jbHVkZSAiQXJyYXlOLmgiDQogI2luY2x1ZGUgIkFy cmF5Ti5jYyINCiANCmRpZmYgLU5hdXIgb2N0YXZlL2xpYm9jdGF2ZS9BcnJh eS1pLmNjIG9jdGF2ZS1uZXcvbGlib2N0YXZlL0FycmF5LWkuY2MNCi0tLSBv Y3RhdmUvbGlib2N0YXZlL0FycmF5LWkuY2MJTW9uIEphbiAyMSAxMDo1NDox MyAyMDAyDQorKysgb2N0YXZlLW5ldy9saWJvY3RhdmUvQXJyYXktaS5jYwlT dW4gSmFuIDIwIDIwOjQ0OjEwIDIwMDINCkBAIC01Miw2ICs1MiwxNiBAQA0K IHRlbXBsYXRlIGludCBhc3NpZ24gKEFycmF5MjxpbnQ+JiwgY29uc3QgQXJy YXkyPHNob3J0PiYsIGNvbnN0IGludCYpOw0KIHRlbXBsYXRlIGludCBhc3Np Z24gKEFycmF5MjxpbnQ+JiwgY29uc3QgQXJyYXkyPGNoYXI+JiwgY29uc3Qg aW50Jik7DQogDQorI2luY2x1ZGUgIkFycmF5My5oIg0KKyNpbmNsdWRlICJB cnJheTMuY2MiDQorDQordGVtcGxhdGUgY2xhc3MgQXJyYXkzPGludD47DQor DQorI2luY2x1ZGUgIkFycmF5Ti5oIg0KKyNpbmNsdWRlICJBcnJheU4uY2Mi DQorDQordGVtcGxhdGUgY2xhc3MgQXJyYXlOPGludD47DQorDQogI2luY2x1 ZGUgIkRpYWdBcnJheTIuaCINCiAjaW5jbHVkZSAiRGlhZ0FycmF5Mi5jYyIN CiANCmRpZmYgLU5hdXIgb2N0YXZlL2xpYm9jdGF2ZS9BcnJheS1zLmNjIG9j dGF2ZS1uZXcvbGlib2N0YXZlL0FycmF5LXMuY2MNCi0tLSBvY3RhdmUvbGli b2N0YXZlL0FycmF5LXMuY2MJTW9uIEphbiAyMSAxMDo1NDoxNyAyMDAyDQor Kysgb2N0YXZlLW5ldy9saWJvY3RhdmUvQXJyYXktcy5jYwlTdW4gSmFuIDIw IDIwOjQ0OjUwIDIwMDINCkBAIC00OCw2ICs0OCwxNiBAQA0KIHRlbXBsYXRl IGludCBhc3NpZ24gKEFycmF5MjxzaG9ydD4mLCBjb25zdCBBcnJheTI8c2hv cnQ+JiwgY29uc3Qgc2hvcnQmKTsNCiB0ZW1wbGF0ZSBpbnQgYXNzaWduIChB cnJheTI8c2hvcnQ+JiwgY29uc3QgQXJyYXkyPGNoYXI+JiwgY29uc3Qgc2hv cnQmKTsNCiANCisjaW5jbHVkZSAiQXJyYXkzLmgiDQorI2luY2x1ZGUgIkFy cmF5My5jYyINCisNCit0ZW1wbGF0ZSBjbGFzcyBBcnJheTM8c2hvcnQ+Ow0K Kw0KKyNpbmNsdWRlICJBcnJheU4uaCINCisjaW5jbHVkZSAiQXJyYXlOLmNj Ig0KKw0KK3RlbXBsYXRlIGNsYXNzIEFycmF5TjxzaG9ydD47DQorDQogI2lu Y2x1ZGUgIkRpYWdBcnJheTIuaCINCiAjaW5jbHVkZSAiRGlhZ0FycmF5Mi5j YyINCiANCmRpZmYgLU5hdXIgb2N0YXZlL2xpYm9jdGF2ZS9NQXJyYXktQy5j YyBvY3RhdmUtbmV3L2xpYm9jdGF2ZS9NQXJyYXktQy5jYw0KLS0tIG9jdGF2 ZS9saWJvY3RhdmUvTUFycmF5LUMuY2MJTW9uIEphbiAyMSAxMDo1NDoyMSAy MDAyDQorKysgb2N0YXZlLW5ldy9saWJvY3RhdmUvTUFycmF5LUMuY2MJU2F0 IEphbiAxOSAxNzowNDoxNyAyMDAyDQpAQCAtNDIsNiArNDIsMjAgQEANCiAN CiBJTlNUQU5USUFURV9NQVJSQVkyX0ZSSUVORFMgKENvbXBsZXgpDQogDQor I2luY2x1ZGUgIk1BcnJheTMuaCINCisjaW5jbHVkZSAiTUFycmF5My5jYyIN CisgDQordGVtcGxhdGUgY2xhc3MgTUFycmF5MzxDb21wbGV4PjsNCisgDQor SU5TVEFOVElBVEVfTUFSUkFZM19GUklFTkRTIChDb21wbGV4KQ0KKw0KKyNp bmNsdWRlICJNQXJyYXlOLmgiDQorI2luY2x1ZGUgIk1BcnJheU4uY2MiDQor IA0KK3RlbXBsYXRlIGNsYXNzIE1BcnJheU48Q29tcGxleD47DQorIA0KK0lO U1RBTlRJQVRFX01BUlJBWU5fRlJJRU5EUyAoQ29tcGxleCkNCisNCiAjaW5j bHVkZSAiTURpYWdBcnJheTIuaCINCiAjaW5jbHVkZSAiTURpYWdBcnJheTIu Y2MiDQogDQpkaWZmIC1OYXVyIG9jdGF2ZS9saWJvY3RhdmUvTUFycmF5LWNo LmNjIG9jdGF2ZS1uZXcvbGlib2N0YXZlL01BcnJheS1jaC5jYw0KLS0tIG9j dGF2ZS9saWJvY3RhdmUvTUFycmF5LWNoLmNjCU1vbiBKYW4gMjEgMTA6NTQ6 MjYgMjAwMg0KKysrIG9jdGF2ZS1uZXcvbGlib2N0YXZlL01BcnJheS1jaC5j YwlTYXQgSmFuIDE5IDE3OjM5OjM0IDIwMDINCkBAIC00MCw2ICs0MCwyMCBA QA0KIA0KIElOU1RBTlRJQVRFX01BUlJBWTJfRlJJRU5EUyAoY2hhcikNCiAN CisjaW5jbHVkZSAiTUFycmF5My5oIg0KKyNpbmNsdWRlICJNQXJyYXkzLmNj Ig0KKyANCit0ZW1wbGF0ZSBjbGFzcyBNQXJyYXkzPGNoYXI+Ow0KKyANCitJ TlNUQU5USUFURV9NQVJSQVkzX0ZSSUVORFMgKGNoYXIpDQorDQorI2luY2x1 ZGUgIk1BcnJheU4uaCINCisjaW5jbHVkZSAiTUFycmF5Ti5jYyINCisgDQor dGVtcGxhdGUgY2xhc3MgTUFycmF5TjxjaGFyPjsNCisgDQorSU5TVEFOVElB VEVfTUFSUkFZTl9GUklFTkRTIChjaGFyKQ0KKw0KICNpbmNsdWRlICJNRGlh Z0FycmF5Mi5oIg0KICNpbmNsdWRlICJNRGlhZ0FycmF5Mi5jYyINCiANCmRp ZmYgLU5hdXIgb2N0YXZlL2xpYm9jdGF2ZS9NQXJyYXktZC5jYyBvY3RhdmUt bmV3L2xpYm9jdGF2ZS9NQXJyYXktZC5jYw0KLS0tIG9jdGF2ZS9saWJvY3Rh dmUvTUFycmF5LWQuY2MJTW9uIEphbiAyMSAxMDo1NDozMCAyMDAyDQorKysg b2N0YXZlLW5ldy9saWJvY3RhdmUvTUFycmF5LWQuY2MJU2F0IEphbiAxOSAx Nzo0MDowMCAyMDAyDQpAQCAtNDAsNiArNDAsMjAgQEANCiANCiBJTlNUQU5U SUFURV9NQVJSQVkyX0ZSSUVORFMgKGRvdWJsZSkNCiANCisjaW5jbHVkZSAi TUFycmF5My5oIg0KKyNpbmNsdWRlICJNQXJyYXkzLmNjIg0KKyANCit0ZW1w bGF0ZSBjbGFzcyBNQXJyYXkzPGRvdWJsZT47DQorDQorSU5TVEFOVElBVEVf TUFSUkFZM19GUklFTkRTIChkb3VibGUpDQorDQorI2luY2x1ZGUgIk1BcnJh eU4uaCINCisjaW5jbHVkZSAiTUFycmF5Ti5jYyINCisgDQordGVtcGxhdGUg Y2xhc3MgTUFycmF5Tjxkb3VibGU+Ow0KKyANCitJTlNUQU5USUFURV9NQVJS QVlOX0ZSSUVORFMgKGRvdWJsZSkNCisNCiAjaW5jbHVkZSAiTURpYWdBcnJh eTIuaCINCiAjaW5jbHVkZSAiTURpYWdBcnJheTIuY2MiDQogDQpkaWZmIC1O YXVyIG9jdGF2ZS9saWJvY3RhdmUvTUFycmF5LWRlZnMuaCBvY3RhdmUtbmV3 L2xpYm9jdGF2ZS9NQXJyYXktZGVmcy5oDQotLS0gb2N0YXZlL2xpYm9jdGF2 ZS9NQXJyYXktZGVmcy5oCU1vbiBKYW4gMjEgMTA6NTQ6MzUgMjAwMg0KKysr IG9jdGF2ZS1uZXcvbGlib2N0YXZlL01BcnJheS1kZWZzLmgJU2F0IEphbiAx OSAxODozNDoyMyAyMDAyDQpAQCAtMjYyLDE0ICsyNjIsMjggQEANCiAgIE1B UlJBWV9VTk9QX0RFRlMgKE1BcnJheSwgVCkgXA0KICAgTUFSUkFZX0JJTk9Q X0RFRlMgKE1BcnJheSwgVCkNCiANCi0vLyBJbnN0YW50aWF0ZSBhbGwgdGhl IE1BcnJheSBmcmllbmRzIGZvciBNQXJyYXkgZWxlbWVudCB0eXBlIFQuDQor Ly8gSW5zdGFudGlhdGUgYWxsIHRoZSBNQXJyYXkyIGZyaWVuZHMgZm9yIE1B cnJheSBlbGVtZW50IHR5cGUgVC4NCiAjZGVmaW5lIElOU1RBTlRJQVRFX01B UlJBWTJfRlJJRU5EUyhUKSBcDQogICBNQVJSQVlfT1BfQVNTSUdOX0RFRlMg KE1BcnJheTIsIFQsIFQpIFwNCiAgIE1BUlJBWV9PUF9BU1NJR05fREVGUyAo TUFycmF5MiwgVCwgTUFycmF5MjxUPikgXA0KICAgTUFSUkFZX1VOT1BfREVG UyAoTUFycmF5MiwgVCkgXA0KICAgTUFSUkFZX0JJTk9QX0RFRlMgKE1BcnJh eTIsIFQpDQogDQotLy8gSW5zdGFudGlhdGUgYWxsIHRoZSBNQXJyYXkgZnJp ZW5kcyBmb3IgTUFycmF5IGVsZW1lbnQgdHlwZSBULg0KKy8vIEluc3RhbnRp YXRlIGFsbCB0aGUgTUFycmF5MyBmcmllbmRzIGZvciBNQXJyYXkgZWxlbWVu dCB0eXBlIFQuDQorI2RlZmluZSBJTlNUQU5USUFURV9NQVJSQVkzX0ZSSUVO RFMoVCkgXA0KKyAgTUFSUkFZX09QX0FTU0lHTl9ERUZTIChNQXJyYXkzLCBU LCBUKSBcDQorICBNQVJSQVlfT1BfQVNTSUdOX0RFRlMgKE1BcnJheTMsIFQs IE1BcnJheTM8VD4pIFwNCisgIE1BUlJBWV9VTk9QX0RFRlMgKE1BcnJheTMs IFQpIFwNCisgIE1BUlJBWV9CSU5PUF9ERUZTIChNQXJyYXkzLCBUKQ0KKw0K Ky8vIEluc3RhbnRpYXRlIGFsbCB0aGUgTUFycmF5TiBmcmllbmRzIGZvciBN QXJyYXkgZWxlbWVudCB0eXBlIFQuDQorI2RlZmluZSBJTlNUQU5USUFURV9N QVJSQVlOX0ZSSUVORFMoVCkgXA0KKyAgTUFSUkFZX09QX0FTU0lHTl9ERUZT IChNQXJyYXlOLCBULCBUKSBcDQorICBNQVJSQVlfT1BfQVNTSUdOX0RFRlMg KE1BcnJheU4sIFQsIE1BcnJheU48VD4pIFwNCisgIE1BUlJBWV9VTk9QX0RF RlMgKE1BcnJheU4sIFQpIFwNCisgIE1BUlJBWV9CSU5PUF9ERUZTIChNQXJy YXlOLCBUKSANCisNCisvLyBJbnN0YW50aWF0ZSBhbGwgdGhlIE1EaWFnQXJy YXkyIGZyaWVuZHMgZm9yIE1BcnJheSBlbGVtZW50IHR5cGUgVC4NCiAjZGVm aW5lIElOU1RBTlRJQVRFX01ESUFHQVJSQVkyX0ZSSUVORFMoVCkgXA0KICAg TUFSUkFZX09QX0FTU0lHTl9ERUZTIChNRGlhZ0FycmF5MiwgVCwgTURpYWdB cnJheTI8VD4pIFwNCiAgIE1BUlJBWV9VTk9QX0RFRlMgKE1EaWFnQXJyYXky LCBUKSBcDQpkaWZmIC1OYXVyIG9jdGF2ZS9saWJvY3RhdmUvTUFycmF5LWku Y2Mgb2N0YXZlLW5ldy9saWJvY3RhdmUvTUFycmF5LWkuY2MNCi0tLSBvY3Rh dmUvbGlib2N0YXZlL01BcnJheS1pLmNjCU1vbiBKYW4gMjEgMTA6NTQ6NDMg MjAwMg0KKysrIG9jdGF2ZS1uZXcvbGlib2N0YXZlL01BcnJheS1pLmNjCVNh dCBKYW4gMTkgMTc6NDA6MTMgMjAwMg0KQEAgLTQwLDYgKzQwLDIwIEBADQog DQogSU5TVEFOVElBVEVfTUFSUkFZMl9GUklFTkRTIChpbnQpDQogDQorI2lu Y2x1ZGUgIk1BcnJheTMuaCINCisjaW5jbHVkZSAiTUFycmF5My5jYyINCisg DQordGVtcGxhdGUgY2xhc3MgTUFycmF5MzxpbnQ+Ow0KKyANCitJTlNUQU5U SUFURV9NQVJSQVkzX0ZSSUVORFMgKGludCkNCisNCisjaW5jbHVkZSAiTUFy cmF5Ti5oIg0KKyNpbmNsdWRlICJNQXJyYXlOLmNjIg0KKyANCit0ZW1wbGF0 ZSBjbGFzcyBNQXJyYXlOPGludD47DQorIA0KK0lOU1RBTlRJQVRFX01BUlJB WU5fRlJJRU5EUyAoaW50KQ0KKw0KICNpbmNsdWRlICJNRGlhZ0FycmF5Mi5o Ig0KICNpbmNsdWRlICJNRGlhZ0FycmF5Mi5jYyINCiANCmRpZmYgLU5hdXIg b2N0YXZlL2xpYm9jdGF2ZS9NQXJyYXktcy5jYyBvY3RhdmUtbmV3L2xpYm9j dGF2ZS9NQXJyYXktcy5jYw0KLS0tIG9jdGF2ZS9saWJvY3RhdmUvTUFycmF5 LXMuY2MJTW9uIEphbiAyMSAxMDo1NDo0NiAyMDAyDQorKysgb2N0YXZlLW5l dy9saWJvY3RhdmUvTUFycmF5LXMuY2MJU2F0IEphbiAxOSAxNzo0MDoyOSAy MDAyDQpAQCAtNDAsNiArNDAsMjAgQEANCiANCiBJTlNUQU5USUFURV9NQVJS QVkyX0ZSSUVORFMgKHNob3J0KQ0KIA0KKyNpbmNsdWRlICJNQXJyYXkzLmgi DQorI2luY2x1ZGUgIk1BcnJheTMuY2MiDQorIA0KK3RlbXBsYXRlIGNsYXNz IE1BcnJheTM8c2hvcnQ+Ow0KKyANCitJTlNUQU5USUFURV9NQVJSQVkzX0ZS SUVORFMgKHNob3J0KQ0KKw0KKyNpbmNsdWRlICJNQXJyYXlOLmgiDQorI2lu Y2x1ZGUgIk1BcnJheU4uY2MiDQorIA0KK3RlbXBsYXRlIGNsYXNzIE1BcnJh eU48c2hvcnQ+Ow0KKyANCitJTlNUQU5USUFURV9NQVJSQVlOX0ZSSUVORFMg KHNob3J0KQ0KKw0KICNpbmNsdWRlICJNRGlhZ0FycmF5Mi5oIg0KICNpbmNs dWRlICJNRGlhZ0FycmF5Mi5jYyINCiANCmRpZmYgLU5hdXIgb2N0YXZlL2xp Ym9jdGF2ZS9NQXJyYXlOLmNjIG9jdGF2ZS1uZXcvbGlib2N0YXZlL01BcnJh eU4uY2MNCi0tLSBvY3RhdmUvbGlib2N0YXZlL01BcnJheU4uY2MJTW9uIEph biAyMSAxMDo1NDo0OSAyMDAyDQorKysgb2N0YXZlLW5ldy9saWJvY3RhdmUv TUFycmF5Ti5jYwlTYXQgSmFuIDE5IDE3OjA3OjU2IDIwMDINCkBAIC00MSw3 ICs0MSw3IEBADQogICBpbnQgbGRpbXNfYSA9IGRpbXNfYS5sZW5ndGggKCks IGxkaW1zX2IgPSBkaW1zX2IubGVuZ3RoICgpOw0KICAgYm9vbCBkaW1zb2sg PSBsZGltc19hID09IGxkaW1zX2IsIGRpbXNwb3MgPSB0cnVlOw0KIA0KLSAg Zm9yIChpZGltID0gMDsgZGltc29rICYmIGlkaW0gPCBsZGltc19hOyBpZGlt KyspIHsNCisgIGZvciAoaW50IGlkaW0gPSAwOyBkaW1zb2sgJiYgaWRpbSA8 IGxkaW1zX2E7IGlkaW0rKykgew0KICAgICBkaW1zb2sgID0gZGltc29rICYm IGRpbXNfYShpZGltKSA9PSBkaW1zX2IoaWRpbSk7DQogICAgIGRpbXNwb3Mg PSBkaW1zcG9zICYmIGRpbXNfYShpZGltKSA+IDA7DQogICB9IA0KZGlmZiAt TmF1ciBvY3RhdmUvbGlib2N0YXZlL01ha2VmaWxlLmluIG9jdGF2ZS1uZXcv bGlib2N0YXZlL01ha2VmaWxlLmluDQotLS0gb2N0YXZlL2xpYm9jdGF2ZS9N YWtlZmlsZS5pbglNb24gSmFuIDIxIDEwOjU0OjU2IDIwMDINCisrKyBvY3Rh dmUtbmV3L2xpYm9jdGF2ZS9NYWtlZmlsZS5pbglTYXQgSmFuIDE5IDE1OjMz OjMzIDIwMDINCkBAIC0yNSwxMyArMjUsMTMgQEANCiANCiBNQVRSSVhfSU5D IDo9IEFycmF5LmggQXJyYXkyLmggQXJyYXkzLmggQXJyYXlOLmggRGlhZ0Fy cmF5Mi5oIEFycmF5LWZsYWdzLmggXA0KIAlBcnJheS1pZHguaCBBcnJheTIt aWR4LmggQXJyYXkzLWlkeC5oIEFycmF5Ti1pZHguaCBNQXJyYXktZGVmcy5o IFwNCi0JTUFycmF5LmggTUFycmF5Mi5oIE1EaWFnQXJyYXkyLmggTWF0cml4 LmggXA0KKwlNQXJyYXkuaCBNQXJyYXkyLmggTUFycmF5My5oIE1BcnJheU4u aCBNRGlhZ0FycmF5Mi5oIE1hdHJpeC5oIFwNCiAJYmFzZS1sdS5oIG14LWJh c2UuaCBteC1vcC1kZWZzLmggbXgtZGVmcy5oIG14LWV4dC5oIFwNCiAJQ0Nv bFZlY3Rvci5oIENEaWFnTWF0cml4LmggQ01hdHJpeC5oIENSb3dWZWN0b3Iu aCBDbXBseEFFUEJBTC5oIFwNCiAJQ21wbHhDSE9MLmggQ21wbHhERVQuaCBD bXBseEhFU1MuaCBDbXBseExVLmggQ21wbHhRUi5oIFwNCiAJQ21wbHhRUlAu aCBDbXBseFNDSFVSLmggQ21wbHhTVkQuaCBFSUcuaCBib29sTWF0cml4Lmgg Y2hNYXRyaXguaCBcDQotCWRDb2xWZWN0b3IuaCBkRGlhZ01hdHJpeC5oIGRN YXRyaXguaCBkUm93VmVjdG9yLmggZGJsZUFFUEJBTC5oIFwNCi0JZGJsZUNI T0wuaCBkYmxlREVULmggZGJsZUhFU1MuaCBkYmxlTFUuaCBkYmxlUVIuaCBc DQorCWRDb2xWZWN0b3IuaCBkRGlhZ01hdHJpeC5oIGRNYXRyaXguaCBkTWF0 cml4My5oIGRSb3dWZWN0b3IuaCBcDQorCWRibGVBRVBCQUwuaCBkYmxlQ0hP TC5oIGRibGVERVQuaCBkYmxlSEVTUy5oIGRibGVMVS5oIGRibGVRUi5oIFwN CiAJZGJsZVFSUC5oIGRibGVTQ0hVUi5oIGRibGVTVkQuaA0KIA0KIE1YX09Q X0lOQyA6PSBteC1jZG0tY20uaCBteC1jZG0tY3MuaCBteC1jZG0tZG0uaCBt eC1jZG0tbS5oIFwNCkBAIC02MCw3ICs2MCw4IEBADQogCSQoVlhfT1BfSU5D KQ0KIA0KIFRFTVBMQVRFX1NSQyA6PSBBcnJheS5jYyBBcnJheTIuY2MgQXJy YXkzLmNjIEFycmF5Ti5jYyBEaWFnQXJyYXkyLmNjIFwNCi0JTUFycmF5LmNj IE1BcnJheTIuY2MgTURpYWdBcnJheTIuY2MgYmFzZS1sdS5jYw0KKwlNQXJy YXkuY2MgTUFycmF5Mi5jYyBNQXJyYXkzLmNjIE1BcnJheU4uY2MgTURpYWdB cnJheTIuY2MgXA0KKwliYXNlLWx1LmNjDQogDQogVElfU1JDIDo9IEFycmF5 LUMuY2MgQXJyYXktYi5jYyBBcnJheS1jaC5jYyBBcnJheS1pLmNjIEFycmF5 LWQuY2MgXA0KIAlBcnJheS1zLmNjIEFycmF5LXN0ci5jYyBBcnJheS1pZHgt dmVjLmNjIFwNCkBAIC03MCw5ICs3MSw5IEBADQogCUNSb3dWZWN0b3IuY2Mg Q21wbHhBRVBCQUwuY2MgQ21wbHhDSE9MLmNjIENtcGx4REVULmNjIFwNCiAJ Q21wbHhIRVNTLmNjIENtcGx4TFUuY2MgQ21wbHhRUi5jYyBDbXBseFFSUC5j YyBDbXBseFNDSFVSLmNjIFwNCiAJQ21wbHhTVkQuY2MgRUlHLmNjIE1BcnJh eS1taXNjLmNjIGJvb2xNYXRyaXguY2MgY2hNYXRyaXguY2MgXA0KLQlkQ29s VmVjdG9yLmNjIGREaWFnTWF0cml4LmNjIGRNYXRyaXguY2MgZFJvd1ZlY3Rv ci5jYyBcDQotCWRibGVBRVBCQUwuY2MgZGJsZUNIT0wuY2MgZGJsZURFVC5j YyBkYmxlSEVTUy5jYyBkYmxlTFUuY2MgXA0KLQlkYmxlUVIuY2MgZGJsZVFS UC5jYyBkYmxlU0NIVVIuY2MgZGJsZVNWRC5jYw0KKwlkQ29sVmVjdG9yLmNj IGREaWFnTWF0cml4LmNjIGRNYXRyaXguY2MgZE1hdHJpeDMuY2MgXA0KKwlk Um93VmVjdG9yLmNjIGRibGVBRVBCQUwuY2MgZGJsZUNIT0wuY2MgZGJsZURF VC5jYyBkYmxlSEVTUy5jYyBcDQorCWRibGVMVS5jYyBkYmxlUVIuY2MgZGJs ZVFSUC5jYyBkYmxlU0NIVVIuY2MgZGJsZVNWRC5jYw0KIA0KIE1YX09QX1NS QyA6PSBteC1jZG0tY20uY2MgbXgtY2RtLWNzLmNjIG14LWNkbS1kbS5jYyBt eC1jZG0tbS5jYyBcDQogCW14LWNkbS1zLmNjIG14LWNtLWNkbS5jYyBteC1j bS1kbS5jYyBteC1jbS1tLmNjIG14LWNtLXMuY2MgXA0KZGlmZiAtTmF1ciBv Y3RhdmUvbGlib2N0YXZlL2RNYXRyaXgzLmNjIG9jdGF2ZS1uZXcvbGlib2N0 YXZlL2RNYXRyaXgzLmNjDQotLS0gb2N0YXZlL2xpYm9jdGF2ZS9kTWF0cml4 My5jYwlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCisrKyBvY3RhdmUtbmV3 L2xpYm9jdGF2ZS9kTWF0cml4My5jYwlTdW4gSmFuIDIwIDIyOjQzOjUxIDIw MDINCkBAIC0wLDAgKzEsMTgxIEBADQorI2lmIGRlZmluZWQgKF9fR05VR19f KQ0KKyNwcmFnbWEgaW1wbGVtZW50YXRpb24NCisjZW5kaWYNCisNCisjaWZk ZWYgSEFWRV9DT05GSUdfSA0KKyNpbmNsdWRlIDxjb25maWcuaD4NCisjZW5k aWYNCisNCisjaW5jbHVkZSAiZE1hdHJpeDMuaCINCisjaW5jbHVkZSAibXgt YmFzZS5oIg0KKyNpbmNsdWRlICJteC1pbmxpbmVzLmNjIg0KKw0KK01hdHJp eDM6Ok1hdHJpeDMgKGNvbnN0IFJvd1ZlY3RvciYgcnYpDQorICA6IE1BcnJh eTM8ZG91YmxlPiAoMSwgcnYubGVuZ3RoICgpLCAxLCAwLjApDQorew0KKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCBydi5sZW5ndGggKCk7IGkrKykNCisgICAg ZWxlbSAoMCwgaSwgMCkgPSBydi5lbGVtIChpKTsNCit9DQorDQorTWF0cml4 Mzo6TWF0cml4MyAoY29uc3QgQ29sdW1uVmVjdG9yJiBjdikNCisgIDogTUFy cmF5Mzxkb3VibGU+IChjdi5sZW5ndGggKCksIDEsIDEsIDAuMCkNCit7DQor ICBmb3IgKGludCBpID0gMDsgaSA8IGN2Lmxlbmd0aCAoKTsgaSsrKQ0KKyAg ICBlbGVtIChpLCAwLCAwKSA9IGN2LmVsZW0gKGkpOw0KK30NCisNCitNYXRy aXgzOjpNYXRyaXgzIChjb25zdCBNYXRyaXgmIG0pIA0KKyAgOiBNQXJyYXkz PGRvdWJsZT4gKG0ucm93cyAoKSwgbS5jb2x1bW5zICgpLCAxLCAwLjApDQor ew0KKyAgZm9yIChpbnQgaiA9IDA7IGogPCBtLmNvbHVtbnMgKCk7IGorKykg DQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbS5yb3dzICgpOyBpKyspDQor ICAgICAgZWxlbSAoaSwgaiwgMCkgPSBtLmVsZW0gKGksIGopOw0KK30NCisN CitNYXRyaXgzOjpNYXRyaXgzIChjb25zdCBEaWFnTWF0cml4JiBtKSANCisg IDogTUFycmF5Mzxkb3VibGU+IChtLnJvd3MgKCksIG0uY29sdW1ucyAoKSwg MSwgMC4wKQ0KK3sNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgbS5sZW5ndGgg KCk7IGkrKykgDQorICAgIGVsZW0gKGksIGksIDApID0gbS5lbGVtIChpLCBp KTsNCit9DQorDQorYm9vbA0KK01hdHJpeDM6Om9wZXJhdG9yID09IChjb25z dCBNYXRyaXgzJiBhKSBjb25zdA0KK3sNCisgIGlmICggIHJvd3MgKCkgIT0g YS5yb3dzICgpIHx8IGNvbHMgKCkgIT0gYS5jb2xzICgpIA0KKyAgICAgfHwg c2xpY2VzICgpICE9IGEuc2xpY2VzICgpKQ0KKyAgICByZXR1cm4gZmFsc2U7 DQorIA0KKyAgcmV0dXJuIG14X2lubGluZV9lcXVhbCAoZGF0YSAoKSwgYS5k YXRhICgpLCBsZW5ndGggKCkpOw0KK30NCisgDQorYm9vbA0KK01hdHJpeDM6 Om9wZXJhdG9yICE9IChjb25zdCBNYXRyaXgzJiBhKSBjb25zdA0KK3sNCisg IHJldHVybiAhKCp0aGlzID09IGEpOw0KK30NCisNCitNYXRyaXgzJg0KK01h dHJpeDM6Omluc2VydCAoY29uc3QgTWF0cml4MyYgbSwgaW50IHIsIGludCBj LCBpbnQgcykNCit7DQorICBBcnJheTM8ZG91YmxlPjo6aW5zZXJ0IChtLCBy LCBjLCBzKTsNCisgIHJldHVybiAqdGhpczsNCit9DQorDQorTWF0cml4MyYN CitNYXRyaXgzOjppbnNlcnQgKGNvbnN0IFJvd1ZlY3RvciYgcnYsIGludCBy LCBpbnQgYywgaW50IHMpDQorew0KKyAgaW50IHZfbGVuID0gcnYubGVuZ3Ro ICgpOw0KKyAgaWYgKCAgciA8IDAgfHwgciA+PSByb3dzICgpIA0KKyAgICAg fHwgYyA8IDAgfHwgYyArIHZfbGVuID4gY29scyAoKSANCisgICAgIHx8IHMg PCAwIHx8IHMgPj0gc2xpY2VzICgpKQ0KKyAgICB7DQorICAgICAgKCpjdXJy ZW50X2xpYm9jdGF2ZV9lcnJvcl9oYW5kbGVyKSAoInJhbmdlIGVycm9yIGZv ciBpbnNlcnQiKTsNCisgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisg IA0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKQ0KKyAgICBl bGVtIChyLCBjK2ksIHMpID0gcnYuZWxlbSAoaSk7DQorICANCisgIHJldHVy biAqdGhpczsNCit9DQorDQorTWF0cml4MyYNCitNYXRyaXgzOjppbnNlcnQg KGNvbnN0IENvbHVtblZlY3RvciYgY3YsIGludCByLCBpbnQgYywgaW50IHMp DQorew0KKyAgaW50IHZfbGVuID0gY3YubGVuZ3RoICgpOw0KKyAgaWYgKCAg ciA8IDAgfHwgciArIHZfbGVuID4gcm93cyAoKSANCisgICAgIHx8IGMgPCAw IHx8IGMgPj0gY29scyAoKSANCisgICAgIHx8IHMgPCAwIHx8IHMgPj0gc2xp Y2VzICgpKQ0KKyAgICB7DQorICAgICAgKCpjdXJyZW50X2xpYm9jdGF2ZV9l cnJvcl9oYW5kbGVyKSAoInJhbmdlIGVycm9yIGZvciBpbnNlcnQiKTsNCisg ICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgIA0KKyAgZm9yIChpbnQg aSA9IDA7IGkgPCB2X2xlbjsgaSsrKQ0KKyAgICBlbGVtIChyK2ksIGMsIHMp ID0gY3YuZWxlbSAoaSk7DQorICANCisgIHJldHVybiAqdGhpczsNCit9DQor DQorTWF0cml4MyYNCitNYXRyaXgzOjppbnNlcnQgKGNvbnN0IE1hdHJpeCYg bSwgaW50IHIsIGludCBjLCBpbnQgcykNCit7DQorICBpbnQgbXIgPSBtLnJv d3MgKCksDQorICAgICAgbWMgPSBtLmNvbHMgKCk7DQorICBpZiAoICByIDwg MCB8fCByICsgbXIgPiByb3dzICgpIA0KKyAgICAgfHwgYyA8IDAgfHwgYyAr IG1jID4gY29scyAoKSANCisgICAgIHx8IHMgPCAwIHx8IHMgPj0gc2xpY2Vz ICgpKQ0KKyAgICB7DQorICAgICAgKCpjdXJyZW50X2xpYm9jdGF2ZV9lcnJv cl9oYW5kbGVyKSAoInJhbmdlIGVycm9yIGZvciBpbnNlcnQiKTsNCisgICAg ICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisgIA0KKyAgZm9yIChpbnQgaiA9 IDA7IGogPCBtYzsgaisrKQ0KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1y OyBpKyspDQorICAgICAgZWxlbSAocitpLCBjK2osIHMpID0gbS5lbGVtIChp LCBqKTsNCisgIA0KKyAgcmV0dXJuICp0aGlzOw0KK30NCisNCitNYXRyaXgz Jg0KK01hdHJpeDM6Omluc2VydCAoY29uc3QgRGlhZ01hdHJpeCYgbSwgaW50 IHIsIGludCBjLCBpbnQgcykNCit7DQorICBpbnQgbXIgPSBtLnJvd3MgKCks DQorICAgICAgbWMgPSBtLmNvbHMgKCk7DQorICBpZiAoICByIDwgMCB8fCBy ICsgbXIgPiByb3dzICgpIA0KKyAgICAgfHwgYyA8IDAgfHwgYyArIG1jID4g Y29scyAoKSANCisgICAgIHx8IHMgPCAwIHx8IHMgPj0gc2xpY2VzICgpKQ0K KyAgICB7DQorICAgICAgKCpjdXJyZW50X2xpYm9jdGF2ZV9lcnJvcl9oYW5k bGVyKSAoInJhbmdlIGVycm9yIGZvciBpbnNlcnQiKTsNCisgICAgICByZXR1 cm4gKnRoaXM7DQorICAgIH0NCisgIA0KKyAgZmlsbCAoMC4wLCByLCBjLCBz LCByICsgbXIgLSAxLCBjICsgbWMgLSAxLCBzKTsNCisgIA0KKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBtLmxlbmd0aCAoKTsgaSsrKQ0KKyAgICBlbGVtIChy K2ksIGMraSwgcykgPSBtLmVsZW0gKGksIGkpOw0KKyAgDQorICByZXR1cm4g KnRoaXM7DQorfQ0KKw0KK01hdHJpeDMmDQorTWF0cml4Mzo6ZmlsbCAoZG91 YmxlIHZhbCkNCit7DQorICBpbnQgbnIgPSByb3dzICgpLA0KKyAgICAgIG5j ID0gY29scyAoKSwNCisgICAgICBucyA9IHNsaWNlcyAoKTsNCisgIGlmIChu ciA+IDAgJiYgbmMgPiAwICYmIG5zID4gMCkNCisgICAgZm9yIChpbnQgayA9 IDA7IGsgPCBuczsgaysrKQ0KKyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg bmM7IGorKykNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnI7IGkr KykNCisgICAgICAgICAgZWxlbSAoaSwgaiwgaykgPSB2YWw7DQorICANCisg IHJldHVybiAqdGhpczsNCit9DQorDQorTWF0cml4MyYNCitNYXRyaXgzOjpm aWxsIChkb3VibGUgdmFsLCBpbnQgcjEsIGludCBjMSwgaW50IHMxLCBpbnQg cjIsIGludCBjMiwgaW50IHMyKQ0KK3sNCisgIGludCBuciA9IHJvd3MgKCks DQorICAgICAgbmMgPSBjb2xzICgpLA0KKyAgICAgIG5zID0gc2xpY2VzICgp Ow0KKyAgaWYgKCAgcjEgPCAgMCAgfHwgcjIgPCAgMCAgfHwgYzEgPCAgMCAg fHwgYzIgPCAgMCAgfHwgczEgPCAgMCAgfHwgczIgPCAgMA0KKyAgICAgfHwg cjEgPj0gbnIgfHwgcjIgPj0gbnIgfHwgYzEgPj0gbmMgfHwgYzIgPj0gbmMg fHwgczEgPj0gbnMgfHwgczIgPj0gbnMpDQorICAgIHsNCisgICAgICAoKmN1 cnJlbnRfbGlib2N0YXZlX2Vycm9yX2hhbmRsZXIpICgicmFuZ2UgZXJyb3Ig Zm9yIGZpbGwiKTsNCisgICAgICByZXR1cm4gKnRoaXM7DQorICAgIH0NCisg IA0KKyAgaWYgKHIxID4gcjIpIHsgaW50IHRtcCA9IHIxOyByMSA9IHIyOyBy MiA9IHRtcDsgfQ0KKyAgaWYgKGMxID4gYzIpIHsgaW50IHRtcCA9IGMxOyBj MSA9IGMyOyBjMiA9IHRtcDsgfQ0KKyAgaWYgKHMxID4gczIpIHsgaW50IHRt cCA9IHMxOyBzMSA9IHMyOyBzMiA9IHRtcDsgfQ0KKw0KKyAgZm9yIChpbnQg ayA9IHMxOyBrIDw9IHMyOyBrKyspIA0KKyAgICBmb3IgKGludCBqID0gYzE7 IGogPD0gYzI7IGorKykNCisgICAgICBmb3IgKGludCBpID0gcjE7IGkgPD0g cjI7IGkrKykNCisgICAgICAgIGVsZW0gKGksIGosIGspID0gdmFsOw0KKyAg DQorICByZXR1cm4gKnRoaXM7DQorfQ0KKw0KZGlmZiAtTmF1ciBvY3RhdmUv bGlib2N0YXZlL2RNYXRyaXgzLmggb2N0YXZlLW5ldy9saWJvY3RhdmUvZE1h dHJpeDMuaA0KLS0tIG9jdGF2ZS9saWJvY3RhdmUvZE1hdHJpeDMuaAlUaHUg SmFuICAxIDAxOjAwOjAwIDE5NzANCisrKyBvY3RhdmUtbmV3L2xpYm9jdGF2 ZS9kTWF0cml4My5oCVN1biBKYW4gMjAgMjI6Mzk6MDMgMjAwMg0KQEAgLTAs MCArMSw2MSBAQA0KKyNpZiAhZGVmaW5lZCAob2N0YXZlX01hdHJpeDNfaCkN CisjZGVmaW5lIG9jdGF2ZV9NYXRyaXgzX2ggMQ0KKyANCisjaWYgZGVmaW5l ZCAoX19HTlVHX18pDQorI3ByYWdtYSBpbnRlcmZhY2UNCisjZW5kaWYNCisN CisjaW5jbHVkZSAiTUFycmF5My5oIg0KKw0KKyNpbmNsdWRlICJteC1kZWZz LmgiDQorDQorY2xhc3MNCitNYXRyaXgzIDogcHVibGljIE1BcnJheTM8ZG91 YmxlPg0KK3sNCitwdWJsaWM6DQorDQorICBNYXRyaXgzICh2b2lkKSA6IE1B cnJheTM8ZG91YmxlPiAoKSB7IH0NCisgIA0KKyAgTWF0cml4MyAoaW50IHIs IGludCBjLCBpbnQgcykgOiBNQXJyYXkzPGRvdWJsZT4gKHIsIGMsIHMpIHsg fQ0KKyAgDQorICBNYXRyaXgzIChpbnQgciwgaW50IGMsIGludCBzLCBkb3Vi bGUgdmFsKSA6IE1BcnJheTM8ZG91YmxlPiAociwgYywgcywgdmFsKSB7IH0N CisgIA0KKyAgTWF0cml4MyAoY29uc3QgTWF0cml4MyYgYSkgOiBNQXJyYXkz PGRvdWJsZT4gKGEpIHsgfQ0KKyAgDQorICBNYXRyaXgzIChjb25zdCBNQXJy YXkzPGRvdWJsZT4mIGEpIDogTUFycmF5Mzxkb3VibGU+IChhKSB7IH0NCisN CisgIGV4cGxpY2l0IE1hdHJpeDMgKGNvbnN0IFJvd1ZlY3RvciYgcnYpOw0K KyAgDQorICBleHBsaWNpdCBNYXRyaXgzIChjb25zdCBDb2x1bW5WZWN0b3Im IGN2KTsNCisNCisgIGV4cGxpY2l0IE1hdHJpeDMgKGNvbnN0IE1hdHJpeCYg YSk7DQorICANCisgIGV4cGxpY2l0IE1hdHJpeDMgKGNvbnN0IERpYWdNYXRy aXgmIGEpOw0KKw0KKyAgTWF0cml4MyYgb3BlcmF0b3IgPSAoY29uc3QgTWF0 cml4MyYgYSkgDQorICAgIHsNCisgICAgICBNQXJyYXkzPGRvdWJsZT46Om9w ZXJhdG9yID0gKGEpOw0KKyAgICAgIHJldHVybiAqdGhpczsNCisgICAgfQ0K Kw0KKyAgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgTWF0cml4MyYgYSkgY29u c3Q7DQorICBib29sIG9wZXJhdG9yICE9IChjb25zdCBNYXRyaXgzJiBhKSBj b25zdDsNCisgIA0KKyAgTWF0cml4MyYgaW5zZXJ0IChjb25zdCBNYXRyaXgz JiBhLCBpbnQgciwgaW50IGMsIGludCBzKTsNCisgIE1hdHJpeDMmIGluc2Vy dCAoY29uc3QgUm93VmVjdG9yJiBhLCBpbnQgciwgaW50IGMsIGludCBzKTsN CisgIE1hdHJpeDMmIGluc2VydCAoY29uc3QgQ29sdW1uVmVjdG9yJiBhLCBp bnQgciwgaW50IGMsIGludCBzKTsNCisgIE1hdHJpeDMmIGluc2VydCAoY29u c3QgTWF0cml4JiBhLCBpbnQgciwgaW50IGMsIGludCBzKTsNCisgIE1hdHJp eDMmIGluc2VydCAoY29uc3QgRGlhZ01hdHJpeCYgYSwgaW50IHIsIGludCBj LCBpbnQgcyk7DQorDQorICBNYXRyaXgzJiBmaWxsIChkb3VibGUgdmFsKTsN CisgIE1hdHJpeDMmIGZpbGwgKGRvdWJsZSB2YWwsIGludCByMSwgaW50IGMx LCBpbnQgczEsIGludCByMiwgaW50IGMyLCBpbnQgczIpOw0KKw0KK307DQor DQorI2VuZGlmDQorIA0KKy8qDQorOzs7IExvY2FsIFZhcmlhYmxlczogKioq DQorOzs7IG1vZGU6IEMrKyAqKioNCis7OzsgRW5kOiAqKioNCisqLw0K ---1367106628-2088797501-1011607642=:24460--