From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25527 invoked by alias); 28 Dec 2004 14:09:33 -0000 Mailing-List: contact binutils-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sources.redhat.com Received: (qmail 25422 invoked from network); 28 Dec 2004 14:09:17 -0000 Received: from unknown (HELO ngate.noida.hcltech.com) (202.54.110.230) by sourceware.org with SMTP; 28 Dec 2004 14:09:17 -0000 Received: from noida.hcltech.com ([10.112.42.221]) by ngate.noida.hcltech.com (8.12.5/8.12.5) with ESMTP id iBSE7L2W026310 for ; Tue, 28 Dec 2004 19:37:23 +0530 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C4ECE6.B84C8FB8" Subject: [PATCH]: binutils patch for maxq target. Content-class: urn:content-classes:message Date: Tue, 28 Dec 2004 14:09:00 -0000 Message-ID: <33BC33A9E76474479B76AD0DE8A169728DF1@exch-ntd.nec.noida.hcltech.com> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: From: "Inderpreet Singh Baweja" To: Cc: "Naveen Sharma, Noida" X-SW-Source: 2004-12/txt/msg00319.txt.bz2 This is a multi-part message in MIME format. ------_=_NextPart_001_01C4ECE6.B84C8FB8 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 2359 Hi, I am attaching a patch for the maxq-target with the following changes: 1. Added variants support for the target maxq10 and maxq20. 2. Fixed problem with relative address handling. 3. Testcases fix for the above problem. I am also including a patch for the config.sub file as I require This to bring the binutils in sync. With the gcc port for maxq. This is the third time I am posting this patch.=20 I have even tried Sending mails with this patch to config-patches@gnu.org But have received no reply or even a commit verification=20 Please commit t <> hese changes.=20 And can anyone please tell me what needs to be done if I want my name in the Maintainers list for the maxq port? **************************************** Change Log **************************************************** 2004-12-28 Inderpreet Singh * config.sub: new target maxq added =20 bfd/ * archures.c: define bfd_mach_maxq10 and bfd_mach_maxq20. * bfd-in2.h: Likewise. * coff-maxq.c(coff_maxq20_reloc): check added for undefined symbol and relative jump addresses fixed. (bfd_coff_maxq_swap_table): swap table defined for maxq-coff. * coffcode.h: added check for machine type differentiation. * cpu-maxq.c: arch_info_type defined for maxq10 and maxq20. =09 gas/config * tc-maxq.c(maxq_end): defined to set machine arch. (tc_gen_reloc): local variables initialized.=20 (md_estimate_size_before_reloc): relative jumps fixed. (md_convert_frag): Same. (md_apply_fix3): fixed frag handling for pfx0. (maxq20_immediate): increased temp array size. (output_disp): relative addresses fixed. call to write_pfx added. (output_data): call to write_pfx added. (md_begin): call to maxq_end() added. *gas/testsuite/gas/maxq10/call.d: testcases fixed for the relative addresses. to be decremented by 1. *gas/testsuite/gas/maxq10/jump.d: Likewise. *gas/testsuite/gas/maxq20/call.d: Likewise. *gas/testsuite/gas/maxq20/jump.d: Likewise. =09=09=09 include/coff/ * maxq.h: Added machine flags F_MAXQ10, F_MAXQ20 and F_MACHMASK =09=09 ld/scripttempl/ * maxqcoff.sc: updated default linker script. =20=20=20 opcodes/ * maxq-dis.c(get_group): Replace magic numbers. (print_insn): warning fixed due to extra argument to fprintf. Thanks,=20 Inder. ------_=_NextPart_001_01C4ECE6.B84C8FB8 Content-Type: application/octet-stream; name="patch-binutils-27122004" Content-Transfer-Encoding: base64 Content-Description: patch-binutils-27122004 Content-Disposition: attachment; filename="patch-binutils-27122004" Content-length: 52757 SW5kZXg6IGNvbmZpZy5zdWINCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvY29uZmlnLnN1Yix2DQpyZXRyaWV2aW5n IHJldmlzaW9uIDEuNDkNCmRpZmYgLWMgLTMgLXAgLXIxLjQ5IGNvbmZpZy5z dWINCioqKiBjb25maWcuc3ViCTE2IE5vdiAyMDA0IDAxOjE4OjM5IC0wMDAw CTEuNDkNCi0tLSBjb25maWcuc3ViCTI3IERlYyAyMDA0IDA4OjM4OjM4IC0w MDAwDQoqKioqKioqKioqKioqKiogY2FzZSAkYmFzaWNfbWFjaGluZSBpbg0K KioqIDIzNywyNDMgKioqKg0KICAJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8 IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQg XA0KICAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwNCiAgCXwgaXAy ayB8IGlxMjAwMCBcDQohIAl8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBt NjhrIHwgbTg4ayB8IG1jb3JlIFwNCiAgCXwgbWlwcyB8IG1pcHNiZSB8IG1p cHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcDQogIAl8IG1pcHMxNiBcDQogIAl8 IG1pcHM2NCB8IG1pcHM2NGVsIFwNCi0tLSAyMzcsMjQzIC0tLS0NCiAgCXwg aDgzMDAgfCBoODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8 IGhwcGEyLjBbbnddIHwgaHBwYTY0IFwNCiAgCXwgaTM3MCB8IGk4NjAgfCBp OTYwIHwgaWE2NCBcDQogIAl8IGlwMmsgfCBpcTIwMDAgXA0KISAJfCBtMzJy IHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgfCBtYXhxIHwgbWNv cmUgXA0KICAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwg bWlwc2xlIFwNCiAgCXwgbWlwczE2IFwNCiAgCXwgbWlwczY0IHwgbWlwczY0 ZWwgXA0KKioqKioqKioqKioqKioqIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4N CioqKiAzMTEsMzE3ICoqKioNCiAgCXwgbTMyci0qIHwgbTMycmxlLSogXA0K ICAJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwg bTY4Mz8yLSogfCBtNjhrLSogXA0KICAJfCBtODgxMTAtKiB8IG04OGstKiB8 IG1jb3JlLSogXA0KISAJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0q IHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcDQogIAl8IG1pcHMxNi0qIFwNCiAg CXwgbWlwczY0LSogfCBtaXBzNjRlbC0qIFwNCiAgCXwgbWlwczY0dnItKiB8 IG1pcHM2NHZyZWwtKiBcDQotLS0gMzExLDMxNyAtLS0tDQogIAl8IG0zMnIt KiB8IG0zMnJsZS0qIFwNCiAgCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0w LSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwNCiAgCXwgbTg4 MTEwLSogfCBtODhrLSogfCBtY29yZS0qIFwNCiEgCXwgbWF4cS0qIHwgbWlw cy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xl LSogXA0KICAJfCBtaXBzMTYtKiBcDQogIAl8IG1pcHM2NC0qIHwgbWlwczY0 ZWwtKiBcDQogIAl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXA0KKioq KioqKioqKioqKioqIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4NCioqKiA2NDYs NjUxICoqKioNCi0tLSA2NDYsNjU0IC0tLS0NCiAgCW04OGstb21yb24qKQ0K ICAJCWJhc2ljX21hY2hpbmU9bTg4ay1vbXJvbg0KICAJCTs7DQorIAltYXhx KQ0KKyAJCWJhc2ljX21hY2hpbmU9bWF4cQ0KKyAJCTs7DQogIAltYWdudW0g fCBtMzIzMCkNCiAgCQliYXNpY19tYWNoaW5lPW1pcHMtbWlwcw0KICAJCW9z PS1zeXN2DQpJbmRleDogYmZkL2JmZC1pbjIuaA0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9iZmQvYmZkLWluMi5o LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMTENCmRpZmYgLWMgLTMgLXAg LXIxLjMxMSBiZmQtaW4yLmgNCioqKiBiZmQvYmZkLWluMi5oCTIyIERlYyAy MDA0IDE0OjI1OjQyIC0wMDAwCTEuMzExDQotLS0gYmZkL2JmZC1pbjIuaAky NyBEZWMgMjAwNCAwODozODozOSAtMDAwMA0KKioqKioqKioqKioqKioqIGVu dW0gYmZkX2FyY2hpdGVjdHVyZQ0KKioqIDE4MDcsMTgxMiAqKioqDQotLS0g MTgwNywxODE0IC0tLS0NCiAgICBiZmRfYXJjaF94dGVuc2EsICAgIC8qIFRl bnNpbGljYSdzIFh0ZW5zYSBjb3Jlcy4gICovDQogICNkZWZpbmUgYmZkX21h Y2hfeHRlbnNhICAgICAgICAxDQogICAgIGJmZF9hcmNoX21heHEsICAgICAv KiBEYWxsYXMgTUFYUSAxMC8yMCAqLw0KKyAjZGVmaW5lIGJmZF9tYWNoX21h eHExMCAgICAgICAgIDEwDQorICNkZWZpbmUgYmZkX21hY2hfbWF4cTIwICAg ICAgICAgMjANCiAgICBiZmRfYXJjaF9sYXN0DQogICAgfTsNCiAgDQpJbmRl eDogYmZkL2NvZmYtbWF4cS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL2JmZC9jb2ZmLW1heHEuYyx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMQ0KZGlmZiAtYyAtMyAtcCAtcjEuMSBjb2Zm LW1heHEuYw0KKioqIGJmZC9jb2ZmLW1heHEuYwk4IE5vdiAyMDA0IDEzOjE3 OjM2IC0wMDAwCTEuMQ0KLS0tIGJmZC9jb2ZmLW1heHEuYwkyNyBEZWMgMjAw NCAwODozODozOSAtMDAwMA0KKioqKioqKioqKioqKioqDQoqKiogMjYsMzEg KioqKg0KLS0tIDI2LDMyIC0tLS0NCiAgI2luY2x1ZGUgInN5c2RlcC5oIg0K ICAjaW5jbHVkZSAibGliYmZkLmgiDQogICNpbmNsdWRlICJjb2ZmL21heHEu aCINCisgI2luY2x1ZGUgImNvZmYvZXh0ZXJuYWwuaCINCiAgI2luY2x1ZGUg ImNvZmYvaW50ZXJuYWwuaCINCiAgI2luY2x1ZGUgImxpYmNvZmYuaCINCiAg I2luY2x1ZGUgImxpYmliZXJ0eS5oIg0KKioqKioqKioqKioqKioqIGNvZmZf bWF4cTIwX3JlbG9jIChiZmQgKiAgICAgIGFiZmQsDQoqKiogNzksODUgKioq Kg0KICAJCSAgIGFzeW1ib2wgKiAgc3ltYm9sX2luLA0KICAJCSAgIHZvaWQg KiAgICAgZGF0YSwNCiAgCQkgICBhc2VjdGlvbiAqIGlucHV0X3NlY3Rpb24g QVRUUklCVVRFX1VOVVNFRCwNCiEgCQkgICBiZmQgKiAgICAgIG91dHB1dF9i ZmQgICAgQVRUUklCVVRFX1VOVVNFRCwNCiAgCQkgICBjaGFyICoqICAgIGVy cm9yX21lc3NhZ2UgQVRUUklCVVRFX1VOVVNFRCkNCiAgew0KICAgIHJlbG9j X2hvd3RvX3R5cGUgKmhvd3RvID0gTlVMTDsNCi0tLSA4MCw4NiAtLS0tDQog IAkJICAgYXN5bWJvbCAqICBzeW1ib2xfaW4sDQogIAkJICAgdm9pZCAqICAg ICBkYXRhLA0KICAJCSAgIGFzZWN0aW9uICogaW5wdXRfc2VjdGlvbiBBVFRS SUJVVEVfVU5VU0VELA0KISAJCSAgIGJmZCAqICAgICAgb3V0cHV0X2JmZCAs DQogIAkJICAgY2hhciAqKiAgICBlcnJvcl9tZXNzYWdlIEFUVFJJQlVURV9V TlVTRUQpDQogIHsNCiAgICByZWxvY19ob3d0b190eXBlICpob3d0byA9IE5V TEw7DQoqKioqKioqKioqKioqKiogY29mZl9tYXhxMjBfcmVsb2MgKGJmZCAq ICAgICAgYWJmZCwNCioqKiA5Miw5OCAqKioqDQogICAgLyogSWYgdGhpcyBp cyBhbiB1bmRlZmluZWQgc3ltYm9sLCByZXR1cm4gZXJyb3IuICAqLw0KICAg IGlmIChzeW1ib2xfaW4tPnNlY3Rpb24gPT0gJmJmZF91bmRfc2VjdGlvbg0K ICAgICAgICAmJiAoc3ltYm9sX2luLT5mbGFncyAmIEJTRl9XRUFLKSA9PSAw KQ0KISAgICAgcmV0dXJuIGJmZF9yZWxvY19jb250aW51ZTsNCiAgDQogICAg aWYgKGRhdGEgJiYgcmVsb2NfZW50cnkpDQogICAgICB7DQotLS0gOTMsOTkg LS0tLQ0KICAgIC8qIElmIHRoaXMgaXMgYW4gdW5kZWZpbmVkIHN5bWJvbCwg cmV0dXJuIGVycm9yLiAgKi8NCiAgICBpZiAoc3ltYm9sX2luLT5zZWN0aW9u ID09ICZiZmRfdW5kX3NlY3Rpb24NCiAgICAgICAgJiYgKHN5bWJvbF9pbi0+ ZmxhZ3MgJiBCU0ZfV0VBSykgPT0gMCkNCiEgICAgIHJldHVybiBvdXRwdXRf YmZkID8gYmZkX3JlbG9jX2NvbnRpbnVlOmJmZF9yZWxvY191bmRlZmluZWQ7 DQogIA0KICAgIGlmIChkYXRhICYmIHJlbG9jX2VudHJ5KQ0KICAgICAgew0K KioqKioqKioqKioqKioqIGNvZmZfbWF4cTIwX3JlbG9jIChiZmQgKiAgICAg IGFiZmQsDQoqKiogMTIxLDEyNyAqKioqDQogIAkgIGVsc2UgaWYgKGFkZGVu ZCA8IDApDQogIAkgICAgY2FsbF9hZGRyID0gY2FsbF9hZGRyICsgYWRkZW5k Ow0KICANCiEgCSAgZGlmZiA9ICgoY2FsbF9hZGRyIDw8IDEpIC0gKHJlbG9j X2VudHJ5LT5hZGRyZXNzIDw8IDEpKTsNCiAgDQogIAkgIGlmICghSVNfU0pV TVBfUkFOR0UgKGRpZmYpKQ0KICAJICAgIHsNCi0tLSAxMjIsMTI4IC0tLS0N CiAgCSAgZWxzZSBpZiAoYWRkZW5kIDwgMCkNCiAgCSAgICBjYWxsX2FkZHIg PSBjYWxsX2FkZHIgKyBhZGRlbmQ7DQogIA0KISAJICBkaWZmID0gKCgoY2Fs bF9hZGRyIDw8IDEpIC0gKHJlbG9jX2VudHJ5LT5hZGRyZXNzIDw8IDEpKSAt IDEpOw0KICANCiAgCSAgaWYgKCFJU19TSlVNUF9SQU5HRSAoZGlmZikpDQog IAkgICAgew0KKioqKioqKioqKioqKioqIG1heHFfcmVsb2NfdHlwZV9sb29r dXAgKGJmZCAqIGFiZmQgQVRUUkkNCioqKiA0MzYsNDQ4ICoqKioNCiAgICBy ZXR1cm4gTlVMTDsNCiAgfQ0KICANCiAgI2RlZmluZSBjb2ZmX2JmZF9yZWxv Y190eXBlX2xvb2t1cCBtYXhxX3JlbG9jX3R5cGVfbG9va3VwDQogIA0KICAv KiBQZXJmb3JtIGFueSBuZWNlc3NhcnkgbWFnaWMgdG8gdGhlIGFkZGVuZCBp biBhIHJlbG9jIGVudHJ5LiAgKi8NCiAgI2RlZmluZSBDQUxDX0FEREVORChh YmZkLCBzeW1ib2wsIGV4dF9yZWxvYywgY2FjaGVfcHRyKSBcDQogICBjYWNo ZV9wdHItPmFkZGVuZCA9ICBleHRfcmVsb2Mucl9vZmZzZXQ7DQogIA0KLSAj aW5jbHVkZSAiY29mZmNvZGUuaCINCiAgDQogICNpZm5kZWYgVEFSR0VUX1VO REVSU0NPUkUNCiAgI2RlZmluZSBUQVJHRVRfVU5ERVJTQ09SRSAxDQotLS0g NDM3LDQ0OSAtLS0tDQogICAgcmV0dXJuIE5VTEw7DQogIH0NCiAgDQorIA0K ICAjZGVmaW5lIGNvZmZfYmZkX3JlbG9jX3R5cGVfbG9va3VwIG1heHFfcmVs b2NfdHlwZV9sb29rdXANCiAgDQogIC8qIFBlcmZvcm0gYW55IG5lY2Vzc2Fy eSBtYWdpYyB0byB0aGUgYWRkZW5kIGluIGEgcmVsb2MgZW50cnkuICAqLw0K ICAjZGVmaW5lIENBTENfQURERU5EKGFiZmQsIHN5bWJvbCwgZXh0X3JlbG9j LCBjYWNoZV9wdHIpIFwNCiAgIGNhY2hlX3B0ci0+YWRkZW5kID0gIGV4dF9y ZWxvYy5yX29mZnNldDsNCiAgDQogIA0KICAjaWZuZGVmIFRBUkdFVF9VTkRF UlNDT1JFDQogICNkZWZpbmUgVEFSR0VUX1VOREVSU0NPUkUgMQ0KKioqKioq KioqKioqKioqIG1heHFfcmVsb2NfdHlwZV9sb29rdXAgKGJmZCAqIGFiZmQg QVRUUkkNCioqKiA0NTIsNDU4ICoqKioNCiAgI2RlZmluZSBFWFRSQV9TX0ZM QUdTIDANCiAgI2VuZGlmDQogIA0KICAvKiBGb3J3YXJkIGRlY2xhcmF0aW9u IGZvciB1c2UgaW5pdGlhbGlzaW5nIGFsdGVybmF0aXZlX3RhcmdldCBmaWVs ZC4gICovDQogIENSRUFURV9MSVRUTEVfQ09GRl9UQVJHRVRfVkVDIChtYXhx Y29mZl92ZWMsICJjb2ZmLW1heHEiLCAwLCBFWFRSQV9TX0ZMQUdTLA0KISAJ CQkgICAgICAgVEFSR0VUX1VOREVSU0NPUkUsIE5VTEwsIENPRkZfU1dBUF9U QUJMRSk7DQogIA0KLS0tIDQ1Myw1MDcgLS0tLQ0KICAjZGVmaW5lIEVYVFJB X1NfRkxBR1MgMA0KICAjZW5kaWYNCiAgDQorIA0KKyANCisgI2luY2x1ZGUg ImNvZmZjb2RlLmgiDQorIA0KKyANCisgLyogVGhpcyBpcyBjb3BpZWQgZnJv bSBiZmRfY29mZl9zdGRfc3dhcF90YWJsZSBzbyB0aGF0IHdlIGNhbiBjaGFu Z2UNCisgICAgdGhlIGRlZmF1bHQgc2VjdGlvbiBhbGlnbm1lbnQgcG93ZXIu ICAqLw0KKyBzdGF0aWMgY29uc3QgYmZkX2NvZmZfYmFja2VuZF9kYXRhIGJm ZF9jb2ZmX21heHFfc3dhcF90YWJsZSA9DQorIHsNCisgICBjb2ZmX3N3YXBf YXV4X2luLCBjb2ZmX3N3YXBfc3ltX2luLCBjb2ZmX3N3YXBfbGluZW5vX2lu LA0KKyAgIGNvZmZfc3dhcF9hdXhfb3V0LCBjb2ZmX3N3YXBfc3ltX291dCwN CisgICBjb2ZmX3N3YXBfbGluZW5vX291dCwgY29mZl9zd2FwX3JlbG9jX291 dCwNCisgICBjb2ZmX3N3YXBfZmlsZWhkcl9vdXQsIGNvZmZfc3dhcF9hb3V0 aGRyX291dCwNCisgICBjb2ZmX3N3YXBfc2NuaGRyX291dCwNCisgICBGSUxI U1osIEFPVVRTWiwgU0NOSFNaLCBTWU1FU1osIEFVWEVTWiwgUkVMU1osIExJ TkVTWiwgRklMTk1MRU4sDQorICNpZmRlZiBDT0ZGX0xPTkdfRklMRU5BTUVT DQorICAgVFJVRSwNCisgI2Vsc2UNCisgICBGQUxTRSwNCisgI2VuZGlmDQor ICNpZmRlZiBDT0ZGX0xPTkdfU0VDVElPTl9OQU1FUw0KKyAgIFRSVUUsDQor ICNlbHNlDQorICAgRkFMU0UsDQorICNlbmRpZg0KKyAgIDAsDQorICNpZmRl ZiBDT0ZGX0ZPUkNFX1NZTUJPTFNfSU5fU1RSSU5HUw0KKyAgIFRSVUUsDQor ICNlbHNlDQorICAgRkFMU0UsDQorICNlbmRpZg0KKyAjaWZkZWYgQ09GRl9E RUJVR19TVFJJTkdfV0lERV9QUkVGSVgNCisgICA0LA0KKyAjZWxzZQ0KKyAg IDIsDQorICNlbmRpZg0KKyAgIGNvZmZfc3dhcF9maWxlaGRyX2luLCBjb2Zm X3N3YXBfYW91dGhkcl9pbiwgY29mZl9zd2FwX3Njbmhkcl9pbiwNCisgICBj b2ZmX3N3YXBfcmVsb2NfaW4sIGNvZmZfYmFkX2Zvcm1hdF9ob29rLCBjb2Zm X3NldF9hcmNoX21hY2hfaG9vaywNCisgICBjb2ZmX21rb2JqZWN0X2hvb2ss IHN0eXBfdG9fc2VjX2ZsYWdzLCBjb2ZmX3NldF9hbGlnbm1lbnRfaG9vaywN CisgICBjb2ZmX3NsdXJwX3N5bWJvbF90YWJsZSwgc3ltbmFtZV9pbl9kZWJ1 Z19ob29rLCBjb2ZmX3BvaW50ZXJpemVfYXV4X2hvb2ssDQorICAgY29mZl9w cmludF9hdXgsIGNvZmZfcmVsb2MxNl9leHRyYV9jYXNlcywgY29mZl9yZWxv YzE2X2VzdGltYXRlLA0KKyAgIGNvZmZfY2xhc3NpZnlfc3ltYm9sLCBjb2Zm X2NvbXB1dGVfc2VjdGlvbl9maWxlX3Bvc2l0aW9ucywNCisgICBjb2ZmX3N0 YXJ0X2ZpbmFsX2xpbmssIGNvZmZfcmVsb2NhdGVfc2VjdGlvbiwgY29mZl9y dHlwZV90b19ob3d0bywNCisgICBjb2ZmX2FkanVzdF9zeW1uZHgsIGNvZmZf bGlua19hZGRfb25lX3N5bWJvbCwNCisgICBjb2ZmX2xpbmtfb3V0cHV0X2hh c19iZWd1biwgY29mZl9maW5hbF9saW5rX3Bvc3RzY3JpcHQNCisgfTsNCisg DQorIA0KICAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciB1c2UgaW5pdGlh bGlzaW5nIGFsdGVybmF0aXZlX3RhcmdldCBmaWVsZC4gICovDQogIENSRUFU RV9MSVRUTEVfQ09GRl9UQVJHRVRfVkVDIChtYXhxY29mZl92ZWMsICJjb2Zm LW1heHEiLCAwLCBFWFRSQV9TX0ZMQUdTLA0KISAJCQkgICAgICAgVEFSR0VU X1VOREVSU0NPUkUsIE5VTEwsICZiZmRfY29mZl9tYXhxX3N3YXBfdGFibGUp Ow0KICANCkluZGV4OiBiZmQvY29mZmNvZGUuaA0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9iZmQvY29mZmNvZGUu aCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTE0DQpkaWZmIC1jIC0zIC1w IC1yMS4xMTQgY29mZmNvZGUuaA0KKioqIGJmZC9jb2ZmY29kZS5oCTggTm92 IDIwMDQgMTM6MTc6MzIgLTAwMDAJMS4xMTQNCi0tLSBiZmQvY29mZmNvZGUu aAkyNyBEZWMgMjAwNCAwODozODo0MCAtMDAwMA0KKioqKioqKioqKioqKioq IGNvZmZfc2V0X2FyY2hfbWFjaF9ob29rIChhYmZkLCBmaWxlaGRyKQ0KKioq IDE5ODcsMTk5NiAqKioqDQogICAgICAgIGJyZWFrOw0KICAjZW5kaWYNCiAg I2lmZGVmIE1BWFEyME1BR0lDDQohICAgICBjYXNlIE1BWFEyME1BR0lDOg0K ICAgICAgICBhcmNoID0gYmZkX2FyY2hfbWF4cTsNCiEgICAgICAgbWFjaGlu ZSA9IDA7DQohICAgICAgIGJyZWFrOw0KICAjZW5kaWYNCiAgI2lmZGVmIE1D ODhNQUdJQw0KICAgICAgY2FzZSBNQzg4TUFHSUM6DQotLS0gMTk4NywyMDAz IC0tLS0NCiAgICAgICAgYnJlYWs7DQogICNlbmRpZg0KICAjaWZkZWYgTUFY UTIwTUFHSUMNCiEgCSBjYXNlIE1BWFEyME1BR0lDOg0KICAgICAgICBhcmNo ID0gYmZkX2FyY2hfbWF4cTsNCiEgICAgICAgc3dpdGNoIChpbnRlcm5hbF9m LT5mX2ZsYWdzICYgRl9NQUNITUFTSykNCiEgICAgICAgIHsNCiEgICAgICAg ICBjYXNlIEZfTUFYUTEwOg0KISAgICAgICAgICAgIG1hY2hpbmUgPSBiZmRf bWFjaF9tYXhxMTA7DQohICAgICAgICAgICAgYnJlYWs7DQohICAgICAgICAg Y2FzZSBGX01BWFEyMDoNCiEgICAgICAgICAgICBtYWNoaW5lID0gYmZkX21h Y2hfbWF4cTIwOw0KISAgICAgICAgICAgIGJyZWFrOw0KISAgICAgICAgIGRl ZmF1bHQ6CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAg ICAgICAgICAgcmV0dXJuIEZBTFNFOwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCSAgICAgICAgICB9CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQlicmVhazsNCiAgI2VuZGlmDQogICNpZmRlZiBN Qzg4TUFHSUMNCiAgICAgIGNhc2UgTUM4OE1BR0lDOg0KKioqKioqKioqKioq KioqIGNvZmZfc2V0X2ZsYWdzIChhYmZkLCBtYWdpY3AsIGZsYWdzcCkNCioq KiAyOTI2LDI5MzUgKioqKg0KICAjZW5kaWYNCiAgDQogICNpZmRlZiBNQVhR MjBNQUdJQw0KISAgICAgY2FzZSBiZmRfYXJjaF9tYXhxOg0KISAgICAgICAg ICptYWdpY3AgPSBNQVhRMjBNQUdJQzsNCiEgICAgICAgcmV0dXJuIFRSVUU7 DQohICAgICAgIGJyZWFrOw0KICAjZW5kaWYNCiAgDQogICAgICBkZWZhdWx0 OgkJCS8qIFVua25vd24gYXJjaGl0ZWN0dXJlLiAgKi8NCi0tLSAyOTMzLDI5 NTMgLS0tLQ0KICAjZW5kaWYNCiAgDQogICNpZmRlZiBNQVhRMjBNQUdJQw0K ISAJICAgIGNhc2UgYmZkX2FyY2hfbWF4cToNCiEgCSAgICAgKm1hZ2ljcCA9 IE1BWFEyME1BR0lDOw0KISAJICAgICAgc3dpdGNoKGJmZF9nZXRfbWFjaCAo YWJmZCkpDQohIAkJICAgICAgew0KISAJCSAgICAgICBjYXNlIGJmZF9tYWNo X21heHExMDoNCiEgCQkgIAkJICAgICpmbGFnc3AgPSBGX01BWFExMDsNCiEg CQkgICAgICAgICAgYnJlYWs7DQohICAgICAgICAgICAgICBjYXNlIGJmZF9t YWNoX21heHEyMDoNCiEgICAgICAgICAgICAgCSAqZmxhZ3NwPUZfTUFYUTIw Ow0KISAgICAgICAgICAgICAgICAgYnJlYWs7DQohICAgICAgICAgICAgICBk ZWZhdWx0Og0KISAJCQkJCXJldHVybiBGQUxTRTsNCiEgCQkJCSB9DQohIAkJ CSByZXR1cm4gVFJVRTsNCiEgCQkJYnJlYWs7DQogICNlbmRpZg0KICANCiAg ICAgIGRlZmF1bHQ6CQkJLyogVW5rbm93biBhcmNoaXRlY3R1cmUuICAqLw0K SW5kZXg6IGJmZC9jcHUtbWF4cS5jDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2JmZC9jcHUtbWF4cS5jLHYNCnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xDQpkaWZmIC1jIC0zIC1wIC1yMS4xIGNw dS1tYXhxLmMNCioqKiBiZmQvY3B1LW1heHEuYwk4IE5vdiAyMDA0IDEzOjE3 OjM2IC0wMDAwCTEuMQ0KLS0tIGJmZC9jcHUtbWF4cS5jCTI3IERlYyAyMDA0 IDA4OjM4OjQwIC0wMDAwDQoqKioqKioqKioqKioqKioNCioqKiAyNCwyOSAq KioqDQotLS0gMjQsNDcgLS0tLQ0KICAjaW5jbHVkZSAic3lzZGVwLmgiDQog ICNpbmNsdWRlICJsaWJiZmQuaCINCiAgDQorIA0KKyAvKiBUaGlzIHJvdXRp bmUgaXMgcHJvdmlkZWQgdHdvIGFyY2hfaW5mb3MgYW5kIHJldHVybnMgd2hl dGhlcg0KKyAgICB0aGV5J2QgYmUgY29tcGF0aWJsZSAqLw0KKyANCisgc3Rh dGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSAqDQorIGNvbXBhdGlibGUg KGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSAqYSwgY29uc3QgYmZkX2FyY2hf aW5mb190eXBlICpiKQ0KKyB7DQorICAgaWYgKGEtPmFyY2ggIT0gYi0+YXJj aCB8fCBhLT5tYWNoICE9IGItPm1hY2gpDQorICAgICByZXR1cm4gTlVMTDsN CisgICByZXR1cm4gYTsNCisgfQ0KKyANCisgc3RhdGljIGNvbnN0IGJmZF9h cmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQ0KKyB7DQorICAg eyAxNiwgMTYsIDgsIGJmZF9hcmNoX21heHEsIGJmZF9tYWNoX21heHExMCwg Im1heHEiLCAibWF4cTEwIiwgMCwgVFJVRSwNCisgICAgIGJmZF9kZWZhdWx0 X2NvbXBhdGlibGUsIGJmZF9kZWZhdWx0X3NjYW4sIE5VTEwgfQ0KKyB9Ow0K KyANCiAgLyogTUFYUSBBcmNodGVjdHVyZSBpbmZvLiAgKi8NCiAgY29uc3Qg YmZkX2FyY2hfaW5mb190eXBlIGJmZF9tYXhxX2FyY2ggPQ0KICB7DQoqKioq KioqKioqKioqKiogY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGJmZF9tYXhx X2FyY2ggPQ0KKioqIDMxLDQyICoqKioNCiAgICAxNiwJCQkJLyogMTYgYml0 cyBpbiBhbiBhZGRyZXNzICovDQogICAgOCwJCQkJLyogMTYgYml0cyBpbiBh IGJ5dGUgKi8NCiAgICBiZmRfYXJjaF9tYXhxLAkJLyogZW51bSBiZmRfYXJj aHRlY3R1cmUgYXJjaCAqLw0KISAgIDAsCQkJCS8qIG9ubHkgMSBtYWNoaW5l ICovDQogICAgIm1heHEiLAkJCS8qIGFyY2hfbmFtZSAqLw0KISAgICJtYXhx IiwJCQkvKiBwcmludGFibGUgbmFtZSAqLw0KICAgIDAsCQkJCS8qIHNlY3Rp b24gYWxpZ24gcG93ZXIgKi8NCiAgICBUUlVFLAkJCQkvKiB0aGVfZGVmYXVs dDogaWYgdGhpcyBpcyB0aGUgbWFjaGluZSAqLw0KICAgIGJmZF9kZWZhdWx0 X2NvbXBhdGlibGUsCS8qIGJmZF9hcmNoX2luZm8gKi8NCiAgICBiZmRfZGVm YXVsdF9zY2FuLA0KISAgIE5VTEwNCiAgfTsNCi0tLSA0OSw2MCAtLS0tDQog ICAgMTYsCQkJCS8qIDE2IGJpdHMgaW4gYW4gYWRkcmVzcyAqLw0KICAgIDgs CQkJCS8qIDE2IGJpdHMgaW4gYSBieXRlICovDQogICAgYmZkX2FyY2hfbWF4 cSwJCS8qIGVudW0gYmZkX2FyY2h0ZWN0dXJlIGFyY2ggKi8NCiEgICBiZmRf bWFjaF9tYXhxMjAsCQkJCS8qIG9ubHkgMSBtYWNoaW5lICovDQogICAgIm1h eHEiLAkJCS8qIGFyY2hfbmFtZSAqLw0KISAgICJtYXhxMjAiLAkJCS8qIHBy aW50YWJsZSBuYW1lICovDQogICAgMCwJCQkJLyogc2VjdGlvbiBhbGlnbiBw b3dlciAqLw0KICAgIFRSVUUsCQkJCS8qIHRoZV9kZWZhdWx0OiBpZiB0aGlz IGlzIHRoZSBtYWNoaW5lICovDQogICAgYmZkX2RlZmF1bHRfY29tcGF0aWJs ZSwJLyogYmZkX2FyY2hfaW5mbyAqLw0KICAgIGJmZF9kZWZhdWx0X3NjYW4s DQohICAmYXJjaF9pbmZvX3N0cnVjdFswXQ0KICB9Ow0KSW5kZXg6IGdhcy9j b25maWcvdGMtbWF4cS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dhcy9jb25maWcvdGMtbWF4cS5jLHYNCnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xDQpkaWZmIC1jIC0zIC1wIC1yMS4xIHRj LW1heHEuYw0KKioqIGdhcy9jb25maWcvdGMtbWF4cS5jCTggTm92IDIwMDQg MTM6MTc6MjIgLTAwMDAJMS4xDQotLS0gZ2FzL2NvbmZpZy90Yy1tYXhxLmMJ MjcgRGVjIDIwMDQgMDg6Mzg6NDEgLTAwMDANCioqKioqKioqKioqKioqKg0K KioqIDQsMTEgKioqKg0KICANCiAgICAgQ29udHJpYnV0ZWQgYnkgSENMIFRl Y2hub2xvZ2llcyBQdnQuIEx0ZC4NCiAgDQohICAgIEF1dGhvcjogVmluZWV0 IFNoYXJtYSh2aW5lZXRzQG5vaWRhLmhjbHRlY2guY29tKSBJbmRlcnByZWV0 DQohICAgIFMuKGluZGVycHJlZXRiQG5vaWRhLmhjbHRlY2guY29tKQ0KICAN CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0FTLg0KICANCi0tLSA0LDEx IC0tLS0NCiAgDQogICAgIENvbnRyaWJ1dGVkIGJ5IEhDTCBUZWNobm9sb2dp ZXMgUHZ0LiBMdGQuDQogIA0KISAgICBBdXRob3I6IFZpbmVldCBTaGFybWEo dmluZWV0c0Bub2lkYS5oY2x0ZWNoLmNvbSkNCiEgCSAgIEluZGVycHJlZXQg Uy4oaW5kZXJwcmVldGJAbm9pZGEuaGNsdGVjaC5jb20pDQogIA0KICAgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHQVMuDQogIA0KKioqKioqKioqKioqKioq IHVuc2lnbmVkIGludCBtYXhfdmVyc2lvbiA9IDIwOw0KKioqIDc0LDc5ICoq KioNCi0tLSA3NCw4MyAtLS0tDQogIA0KICBjb25zdCBjaGFyICpkZWZhdWx0 X2FyY2ggPSBERUZBVUxUX0FSQ0g7DQogIA0KKyAvKiBGdW5jdGlvbiBEZWNs YXJhdGlvbnMuICAqLw0KKyBzdGF0aWMgdm9pZCB3cml0ZV9wZnggKGNoYXIg Kik7DQorIA0KKyANCiAgLyogVHlwZSBvZiB0aGUgb3BlcmFuZDogUmVnaXN0 ZXIsSW1tZWRpYXRlLE1lbW9yeSBhY2Nlc3MsZmxhZyBvciBiaXQuICAqLw0K ICANCiAgdW5pb24gX21heHEyMF9vcA0KKioqKioqKioqKioqKioqIG1heHEy MF9tYWNoICh2b2lkKQ0KKioqIDIzMywyMzggKioqKg0KLS0tIDIzNywyNTUg LS0tLQ0KICAgIHJldHVybiAxOw0KICB9DQogIA0KKyB2b2lkDQorIG1heHFf ZW5kKCkNCisgew0KKyAgaWYobWF4X3ZlcnNpb249PTEwKQ0KKyAgICB7DQor ICAgICAgIGJmZF9zZXRfYXJjaF9tYWNoIChzdGRvdXRwdXQsIGJmZF9hcmNo X21heHEsYmZkX21hY2hfbWF4cTEwKTsNCisgICAgfQ0KKyAgZWxzZQ0KKyAg ICB7DQorICAgICBiZmRfc2V0X2FyY2hfbWFjaCAoc3Rkb3V0cHV0LCBiZmRf YXJjaF9tYXhxLGJmZF9tYWNoX21heHEyMCk7DQorICAgIH0NCisgDQorIH0N CiAgYXJlbGVudCAqDQogIHRjX2dlbl9yZWxvYyAoYXNlY3Rpb24gKnNlY3Rp b24gQVRUUklCVVRFX1VOVVNFRCwgZml4UyAqZml4cCkNCiAgew0KKioqKioq KioqKioqKioqIHRjX2dlbl9yZWxvYyAoYXNlY3Rpb24gKnNlY3Rpb24gQVRU UklCVVQNCioqKiAzMDcsMzEyICoqKioNCi0tLSAzMjQsMzMzIC0tLS0NCiAg aW50DQogIG1kX2VzdGltYXRlX3NpemVfYmVmb3JlX3JlbGF4IChmcmFnUyAq ZnJhZ1AsIHNlZ1Qgc2VnbWVudCkNCiAgew0KKyAgICAgdW5zaWduZWQgbG9u ZyBpbnN0cj0wOw0KKyAgICAgdW5zaWduZWQgbG9uZyBjYWxsX2FkZHI9MDsN CisgICAgIGxvbmcgZGlmZj0wOw0KKyAgDQogICAgLyogQ2hlY2sgd2hldGhl ciB0aGUgc3ltYm9sIGhhcyBiZWVuIHJlc29sdmVkIG9yIG5vdC4NCiAgICAg ICBPdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHRvIGdlbmVyYXRlIGEgZml4dXAu ICAqLw0KICAgIGlmICgoU19HRVRfU0VHTUVOVCAoZnJhZ1AtPmZyX3N5bWJv bCkgIT0gc2VnbWVudCkNCioqKioqKioqKioqKioqKiBtZF9lc3RpbWF0ZV9z aXplX2JlZm9yZV9yZWxheCAoZnJhZ1MgKmZyDQoqKiogMzU1LDM2MyAqKioq DQogIA0KICAgIGlmIChmcmFnUC0+ZnJfc3VidHlwZSA9PSBOT19QUkVGSVgg fHwgZnJhZ1AtPmZyX3N1YnR5cGUgPT0gTE9OR19QUkVGSVgpDQogICAgICB7 DQotICAgICAgIHVuc2lnbmVkIGxvbmcgaW5zdHI7DQotICAgICAgIHVuc2ln bmVkIGxvbmcgY2FsbF9hZGRyOw0KLSAgICAgICBsb25nIGRpZmY7DQogICAg ICAgIGZyYWdTICpmOw0KICAgICAgICBkaWZmID0gZGlmZiBeIGRpZmY7Ow0K ICAgICAgICBjYWxsX2FkZHIgPSBjYWxsX2FkZHIgXiBjYWxsX2FkZHI7DQot LS0gMzc2LDM4MSAtLS0tDQoqKioqKioqKioqKioqKiogbWRfZXN0aW1hdGVf c2l6ZV9iZWZvcmVfcmVsYXggKGZyYWdTICpmcg0KKioqIDM2NywzNzUgKioq Kg0KICAgICAgICAvKiBzZWdtZW50X2luZm9fdHlwZSAqc2VnaW5mbyA9IHNl Z19pbmZvIChzZWdtZW50KTsgICovDQogICAgICAgIGluc3RyID0gZnJhZ1At PmZyX2FkZHJlc3MgKyBmcmFnUC0+ZnJfZml4IC0gMjsNCiAgDQohICAgICAg IC8qIFRoaXMgaXMgdGhlIG9mZnNldCBpZiBpdCBpcyBhIFBDIHJlbGF0aXZl IGp1bXAuICAqLw0KISAgICAgICBjYWxsX2FkZHIgPSBTX0dFVF9WQUxVRSAo ZnJhZ1AtPmZyX3N5bWJvbCkgKyBmcmFnUC0+ZnJfb2Zmc2V0Ow0KISAgICAg ICBkaWZmID0gKGNhbGxfYWRkciAtIGluc3RyKTsNCiAgDQogICAgICAgIGlm IChkaWZmID49ICgtMTI4ICogMikgJiYgZGlmZiA8PSAoMiAqIDEyNykpDQog IAl7DQotLS0gMzg1LDM5NCAtLS0tDQogICAgICAgIC8qIHNlZ21lbnRfaW5m b190eXBlICpzZWdpbmZvID0gc2VnX2luZm8gKHNlZ21lbnQpOyAgKi8NCiAg ICAgICAgaW5zdHIgPSBmcmFnUC0+ZnJfYWRkcmVzcyArIGZyYWdQLT5mcl9m aXggLSAyOw0KICANCiEgICAgICAgLyogVGhpcyBpcyB0aGUgb2Zmc2V0IGlm IGl0IGlzIGEgUEMgcmVsYXRpdmUganVtcC4gQXMgdGhlIA0KISAJIFBDIHBv aW50cyB0byB0aGUgTmV4dCBpbnN0cnVjdGlvbiBzbyB0aGUgZGlmZmVyZW5j ZSBkZWNyZW1lbnRlZCBieSAxLiAqLyAgICAgIA0KISAgICAgICBjYWxsX2Fk ZHIgPSBTX0dFVF9WQUxVRSAoZnJhZ1AtPmZyX3N5bWJvbCkgKyBmcmFnUC0+ ZnJfb2Zmc2V0IDsNCiEgICAgICAgZGlmZiA9IChjYWxsX2FkZHIgLSBpbnN0 ciktMSA7DQogIA0KICAgICAgICBpZiAoZGlmZiA+PSAoLTEyOCAqIDIpICYm IGRpZmYgPD0gKDIgKiAxMjcpKQ0KICAJew0KKioqKioqKioqKioqKioqIG1k X2NvbnZlcnRfZnJhZyAob2JqZWN0X2hlYWRlcnMgKiBoZWFkZXINCioqKiA1 MDMsNTA5ICoqKioNCiAgICAgIChmcmFnUC0+ZnJfYWRkcmVzcyAvIE1BWFFf T0NURVRTX1BFUl9CWVRFKSArDQogICAgICAoKGZyYWdQLT5mcl9maXggLSAy KSAvIE1BWFFfT0NURVRTX1BFUl9CWVRFKTsNCiAgDQohICAgZGlzcGxhY2Vt ZW50X2Zyb21fb3Bjb2RlX3N0YXJ0ID0gKHRhcmdldF9hZGRyZXNzIC0gb3Bj b2RlX2FkZHJlc3MpOw0KICANCiAgICBpZiAoKGRpc3BsYWNlbWVudF9mcm9t X29wY29kZV9zdGFydCA+PSAtMTI4DQogICAgICAgICAmJiBkaXNwbGFjZW1l bnRfZnJvbV9vcGNvZGVfc3RhcnQgPD0gMTI3KQ0KLS0tIDUyMiw1MzAgLS0t LQ0KICAgICAgKGZyYWdQLT5mcl9hZGRyZXNzIC8gTUFYUV9PQ1RFVFNfUEVS X0JZVEUpICsNCiAgICAgICgoZnJhZ1AtPmZyX2ZpeCAtIDIpIC8gTUFYUV9P Q1RFVFNfUEVSX0JZVEUpOw0KICANCiEgICAvKiBUaGlzIGlzIHRvIHByb2R1 Y2UgcmVsYXRpdmUganVtcHMgYXMgUEMgcG9pbnRzIHRvIHRoZSANCiEgICAg ICBuZXh0IElQIEFkZHJlc3MuICovDQohICAgZGlzcGxhY2VtZW50X2Zyb21f b3Bjb2RlX3N0YXJ0ID0gKCh0YXJnZXRfYWRkcmVzcyAtIG9wY29kZV9hZGRy ZXNzKSAtIDEpOw0KICANCiAgICBpZiAoKGRpc3BsYWNlbWVudF9mcm9tX29w Y29kZV9zdGFydCA+PSAtMTI4DQogICAgICAgICAmJiBkaXNwbGFjZW1lbnRf ZnJvbV9vcGNvZGVfc3RhcnQgPD0gMTI3KQ0KKioqKioqKioqKioqKioqIG1h eHFfbnVtYmVyX3RvX2NoYXJzIChjaGFyICpidWYsIHZhbHVlVCANCioqKiA1 ODUsNTkwICoqKioNCi0tLSA2MDYsNjEyIC0tLS0NCiAgdm9pZA0KICBtZF9h cHBseV9maXgzIChmaXhTICpmaXhQLCB2YWx1ZVQgKnZhbFQsIHNlZ1Qgc2Vn IEFUVFJJQlVURV9VTlVTRUQpDQogIHsNCisgICBjaGFyIHBmeF92PTA7DQog ICAgY2hhciAqcCA9IGZpeFAtPmZ4X2ZyYWctPmZyX2xpdGVyYWwgKyBmaXhQ LT5meF93aGVyZTsNCiAgICBjaGFyICpmcmFnX3RvX2ZpeF9hdCA9DQogICAg ICBmaXhQLT5meF9mcmFnLT5mcl9saXRlcmFsICsgZml4UC0+ZnhfZnJhZy0+ ZnJfZml4IC0gMjsNCioqKioqKioqKioqKioqKiBtZF9hcHBseV9maXgzIChm aXhTICpmaXhQLCB2YWx1ZVQgKnZhbFQsDQoqKiogNjA5LDYxNiAqKioqDQog IAkgIGlmICgoZml4UC0+ZnhfZnJhZy0+ZnJfc3VidHlwZSA9PSBBQlNPTFVU RV9BRERSX0ZPUl9EQVRBKQ0KICAJICAgICAgfHwgKGZpeFAtPmZ4X2ZyYWct PmZyX3N1YnR5cGUgPT0gTE9OR19QUkVGSVgpKQ0KICAJICAgIHsNCiEgCSAg ICAgICooZnJhZ190b19maXhfYXQgKyAxKSA9ICoocCArIDEpOw0KISAJICAg ICAgbWF4cV9udW1iZXJfdG9fY2hhcnMgKHAgKyAxLCBQRlgwLCAxKTsNCiAg CSAgICB9DQogIA0KICAjaWZkZWYgQkZEX0FTU0VNQkxFUg0KLS0tIDYzMSw2 NDIgLS0tLQ0KICAJICBpZiAoKGZpeFAtPmZ4X2ZyYWctPmZyX3N1YnR5cGUg PT0gQUJTT0xVVEVfQUREUl9GT1JfREFUQSkNCiAgCSAgICAgIHx8IChmaXhQ LT5meF9mcmFnLT5mcl9zdWJ0eXBlID09IExPTkdfUFJFRklYKSkNCiAgCSAg ICB7DQohICAgICAgICAgICAgICAgcGZ4X3Y9KihmcmFnX3RvX2ZpeF9hdCsx KTsNCiEgICAgICAgICAgICAgICBpZihwZnhfdj09MCkNCiEgICAgICAgICAg ICAgICAgICAgcGZ4X3Y9UEZYMDsNCiEgICAgICAgICAgICAgICAqKGZyYWdf dG9fZml4X2F0ICsgMSkgPSAqKHAgKyAxKTsNCiEgICAgICAgICAgICAgICBt YXhxX251bWJlcl90b19jaGFycyAocCArIDEsIHBmeF92LCAxKTsNCiEgDQog IAkgICAgfQ0KICANCiAgI2lmZGVmIEJGRF9BU1NFTUJMRVINCioqKioqKioq KioqKioqKiBtYXhxMjBfaW1tZWRpYXRlIChjaGFyICppbW1fc3RhcnQpDQoq KiogMTE3OCwxMTg0ICoqKioNCiAgICBpbnQgdmFsID0gMCwgdmFsX3BmeCA9 IDA7DQogICAgY2hhciBzaWduX3ZhbCA9IDA7DQogICAgaW50IGsgPSAwLCBq Ow0KISAgIGludCB0ZW1wWzRdID0geyAwIH07DQogIA0KICAgIGltbV9zdGFy dCsrOw0KICANCi0tLSAxMjA0LDEyMTAgLS0tLQ0KICAgIGludCB2YWwgPSAw LCB2YWxfcGZ4ID0gMDsNCiAgICBjaGFyIHNpZ25fdmFsID0gMDsNCiAgICBp bnQgayA9IDAsIGo7DQohICAgaW50IHRlbXBbMTBdID0geyAwIH07DQogIA0K ICAgIGltbV9zdGFydCsrOw0KICANCioqKioqKioqKioqKioqKiBvdXRwdXRf ZGlzcCAoZnJhZ1MgKmluc25fc3RhcnRfZnJhZywgb2ZmDQoqKiogMjc1Nywy NzYzICoqKioNCiAgCSAgICAoKCgoZXhwcmVzc2lvblMgKikgc3ltYm9sX2dl dF92YWx1ZV9leHByZXNzaW9uIChzeW0pKS0+DQogIAkgICAgICBYX2FkZF9u dW1iZXIpIC0gaW5zbl9zdGFydF9vZmYpOw0KICANCiEgCSAgZGlmZiA9IGRp ZmYgLyBNQVhRX09DVEVUU19QRVJfQllURTsNCiAgDQogIAkgIGlmIChkaWZm ID49IC0xMjggJiYgZGlmZiA8PSAxMjcpDQogIAkgICAgew0KLS0tIDI3ODMs Mjc5MCAtLS0tDQogIAkgICAgKCgoKGV4cHJlc3Npb25TICopIHN5bWJvbF9n ZXRfdmFsdWVfZXhwcmVzc2lvbiAoc3ltKSktPg0KICAJICAgICAgWF9hZGRf bnVtYmVyKSAtIGluc25fc3RhcnRfb2ZmKTsNCiAgDQohIAkgLyogQXMgdGhl IFBDIHBvaW50cyB0byB0aGUgbmV4dCBpbnN0cnVjdGlvbiwgd2UgZGVjcmVt ZW50IGl0IGJ5IDEuICovDQohIAkgIGRpZmYgPSAoZGlmZiAvIE1BWFFfT0NU RVRTX1BFUl9CWVRFKSAtIDE7DQogIA0KICAJICBpZiAoZGlmZiA+PSAtMTI4 ICYmIGRpZmYgPD0gMTI3KQ0KICAJICAgIHsNCioqKioqKioqKioqKioqKiBv dXRwdXRfZGlzcCAoZnJhZ1MgKmluc25fc3RhcnRfZnJhZywgb2ZmDQoqKiog Mjc4NSwyNzkwICoqKioNCi0tLSAyODEyLDI4MTkgLS0tLQ0KICAgICAgICBv ZmYgPSAwOw0KICAgICAgfQ0KICANCisgICB3cml0ZV9wZngocCsyKTsNCisg DQogICAgLyogVmluZWV0IDogVGhpcyBoYXMgYmVlbiBhZGRlZCBmb3IgbWRf ZXN0aW1hdGVfc2l6ZV9iZWZvcmVfcmVsYXggdG8NCiAgICAgICBlc3RpbWF0 ZSB0aGUgY29ycmVjdCBzaXplLiAgKi8NCiAgICBpZiAoc3VidHlwZSAhPSBT SE9SVF9QUkVGSVgpDQoqKioqKioqKioqKioqKiogb3V0cHV0X2RhdGEgKGZy YWdTICppbnNuX3N0YXJ0X2ZyYWcsIG9mZg0KKioqIDI4MDIsMjgxMCAqKioq DQogICAgcmVsYXhfc3Vic3RhdGVUIHN1YnR5cGU7DQogICAgc3ltYm9sUyAq c3ltOw0KICAgIG9mZnNldFQgb2ZmOw0KLSAgIGludCBkaWZmOw0KICANCi0g ICBkaWZmID0gMDsNCiAgICBvZmYgPSAwOw0KICAgIGluc25fc3RhcnRfZnJh ZyA9IGZyYWdfbm93Ow0KICAgIGluc25fc3RhcnRfb2ZmID0gZnJhZ19ub3df Zml4ICgpOw0KLS0tIDI4MzEsMjgzNyAtLS0tDQoqKioqKioqKioqKioqKiog b3V0cHV0X2RhdGEgKGZyYWdTICppbnNuX3N0YXJ0X2ZyYWcsIG9mZg0KKioq IDI4MjgsMjgzNiAqKioqDQotLS0gMjg1NSwyODc5IC0tLS0NCiAgICAgICAg IG5lZWQgdG8gY29udmVydCBpdCBmcm9tIGV4cHJlc3Npb24gdG8gc3ltYm9s LiAgKi8NCiAgICAgIG9mZiA9IDA7DQogIA0KKyAgIHdyaXRlX3BmeChwKzIp Ow0KKyANCiAgICBmcmFnX3ZhciAocnNfbWFjaGluZV9kZXBlbmRlbnQsIDIs IGkucmVsb2NbdGhpc19vcGVyYW5kXSwgc3VidHlwZSwgc3ltLCBvZmYsICBw KTsNCiAgfQ0KICANCisgLyogV3JpdGUgdGhlIENvcnJlY3QgVmFsdWUgb2Yg UEZYICovDQorIHZvaWQgd3JpdGVfcGZ4KHB0cikNCisgY2hhciogcHRyOw0K KyB7DQorICAgIGNoYXIqIHA9cHRyOw0KKyANCisgICAvKiBDaGVjayB3aGV0 aGVyIHRoZSBwcmVmaXggaW5zdHJ1Y3Rpb24gaGFzIHRvIGJlIHdyaXR0ZW4g Ki8NCisgICBpZiAoc3RyY21wIChQRlhfSU5TTiwgIiIpKQ0KKyAgICAgew0K KyAgICAgICAqcCsrID0gUEZYX0lOU05bMV07DQorICAgICAgICpwID0gUEZY X0lOU05bMF07ICAgICAgICAgDQorICAgICB9DQorIH0NCisgDQogIHN0YXRp YyB2b2lkDQogIG91dHB1dF9pbnNuICh2b2lkKQ0KICB7DQoqKioqKioqKioq KioqKiogbWRfYmVnaW4gKHZvaWQpDQoqKiogMzExNiwzMTIxICoqKioNCi0t LSAzMTU5LDMxNjYgLS0tLQ0KICANCiAgICBmb3IgKHAgPSBvcGVyYW5kX3Nw ZWNpYWxfY2hhcnM7ICpwICE9ICdcMCc7IHArKykNCiAgICAgIG9wZXJhbmRf Y2hhcnNbKHVuc2lnbmVkIGNoYXIpICpwXSA9ICh1bnNpZ25lZCBjaGFyKSAq cDsNCisgDQorICAgbWF4cV9lbmQoKTsNCiAgfQ0KICANCiAgLyogbWRfYXNz ZW1ibGUgLSBQYXJzZSBJbnN0ciAtIFNlcHJhdGUgbWVubW9uaWNzIGFuZCBv cGVyYW5kcyAtIGxvb2t1cCB0aGUNCkluZGV4OiBnYXMvdGVzdHN1aXRlL2dh cy9tYXhxMTAvY2FsbC5kDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dhcy90ZXN0c3VpdGUvZ2FzL21heHExMC9j YWxsLmQsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjINCmRpZmYgLWMgLTMg LXAgLXIxLjIgY2FsbC5kDQoqKiogZ2FzL3Rlc3RzdWl0ZS9nYXMvbWF4cTEw L2NhbGwuZAkxOCBOb3YgMjAwNCAxNjoyMDoxMSAtMDAwMAkxLjINCi0tLSBn YXMvdGVzdHN1aXRlL2dhcy9tYXhxMTAvY2FsbC5kCTI3IERlYyAyMDA0IDA4 OjM4OjQyIC0wMDAwDQoqKioqKioqKioqKioqKioNCioqKiA1LDExICoqKioN CiAgDQ0KICBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0Og0NCiAgMCsw MDAgPGZvbz46DQ0KISAgICAwOgkwMyAzZCBbIAldKkNBTEwgICMwM2gNDQog ICAgIDI6CTA0IDBiIFsgCV0qTU9WRSAgUEZYXFswXF0sICMwNGgNDQogICAg IDQ6CTI4IDNkIFsgCV0qQ0FMTCAgIzI4aA0NCiAgMCs2IDxTbWFsbENhbGw+ Og0NCi0tLSA1LDExIC0tLS0NCiAgDQ0KICBEaXNhc3NlbWJseSBvZiBzZWN0 aW9uIC50ZXh0Og0NCiAgMCswMDAgPGZvbz46DQ0KISAgICAwOgkwMiAzZCBb IAldKkNBTEwgICMwMmgNDQogICAgIDI6CTA0IDBiIFsgCV0qTU9WRSAgUEZY XFswXF0sICMwNGgNDQogICAgIDQ6CTI4IDNkIFsgCV0qQ0FMTCAgIzI4aA0N CiAgMCs2IDxTbWFsbENhbGw+Og0NCioqKioqKioqKioqKioqKiBEaXNhc3Nl bWJseSBvZiBzZWN0aW9uIC50ZXh0Og0NCioqKiAyMSwzMSAqKioqDQogICAg MTg6CThkIGNjIFsgCV0qUkVUSSBTDQ0KICAgIDFhOgkxMCA3ZCBbIAldKk1P VkUgIExDXFsxXF0sICMxMGgNDQogIDArMWMgPExvb3BUb3A+Og0NCiEgICAx YzoJMDAgM2QgWyAJXSpDQUxMICAjMDBoDQ0KISAgIDFlOglmZiA1ZCBbIAld KkRKTlogIExDXFsxXF0sICNmZmgNDQogICAgMjA6CTEwIDdkIFsgCV0qTU9W RSAgTENcWzFcXSwgIzEwaA0NCiAgMCsyMiA8TG9vcFRvcDE+Og0NCiEgICAy MjoJMDAgM2QgWyAJXSpDQUxMICAjMDBoDQ0KICAJLi4uDQ0KICAgNDI0Ogkw MCAwYiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDBoDQ0KICAgNDI2OgkxYyA1 ZCBbIAldKkRKTlogIExDXFsxXF0sICMxY2gNDQotLS0gMjEsMzEgLS0tLQ0K ICAgIDE4Ogk4ZCBjYyBbIAldKlJFVEkgUw0NCiAgICAxYToJMTAgN2QgWyAJ XSpNT1ZFICBMQ1xbMVxdLCAjMTBoDQ0KICAwKzFjIDxMb29wVG9wPjoNDQoh ICAgMWM6CWZmIDNkIFsgCV0qQ0FMTCAgI2ZmaA0NCiEgICAxZToJZmUgNWQg WyAJXSpESk5aICBMQ1xbMVxdLCAjZmVoDQ0KICAgIDIwOgkxMCA3ZCBbIAld Kk1PVkUgIExDXFsxXF0sICMxMGgNDQogIDArMjIgPExvb3BUb3AxPjoNDQoh ICAgMjI6CWZmIDNkIFsgCV0qQ0FMTCAgI2ZmaA0NCiAgCS4uLg0NCiAgIDQy NDoJMDAgMGIgWyAJXSpNT1ZFICBQRlhcWzBcXSwgIzAwaA0NCiAgIDQyNjoJ MWMgNWQgWyAJXSpESk5aICBMQ1xbMVxdLCAjMWNoDQ0KSW5kZXg6IGdhcy90 ZXN0c3VpdGUvZ2FzL21heHExMC9qdW1wLmQNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2FzL3Rlc3RzdWl0ZS9n YXMvbWF4cTEwL2p1bXAuZCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQ0K ZGlmZiAtYyAtMyAtcCAtcjEuMSBqdW1wLmQNCioqKiBnYXMvdGVzdHN1aXRl L2dhcy9tYXhxMTAvanVtcC5kCTggTm92IDIwMDQgMTM6MTc6NDIgLTAwMDAJ MS4xDQotLS0gZ2FzL3Rlc3RzdWl0ZS9nYXMvbWF4cTEwL2p1bXAuZAkyNyBE ZWMgMjAwNCAwODozODo0MiAtMDAwMA0KKioqKioqKioqKioqKioqDQoqKiog NSw0OSAqKioqDQogIA0KICBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0 Og0KICAwKzAwMCA8TGFibGVTdGFydD46DQohICAgIDA6CTAwIDBjIFsgCV0q SlVNUCAgIzAwaA0KISAgICAyOglmZiAyYyBbIAldKkpVTVAgQyAsICNmZmgN CiAgICAgNDoJMDkgYWMgWyAJXSpKVU1QIEMgLCBBXFswXF0NCiAgICAgNjoJ MTkgYWMgWyAJXSpKVU1QIEMgLCBBXFsxXF0NCiEgICAgODoJZmMgNmMgWyAJ XSpKVU1QIE5DICwgI2ZjaA0KICAgICBhOgkwOSBlYyBbIAldKkpVTVAgTkMg LCBBXFswXF0NCiAgICAgYzoJMTkgZWMgWyAJXSpKVU1QIE5DICwgQVxbMVxd DQohICAgIGU6CWY5IDRjIFsgCV0qSlVNUCBTICwgI2Y5aA0KICAgIDEwOgkw OSBjYyBbIAldKkpVTVAgUyAsIEFcWzBcXQ0KICAgIDEyOgkxOSBjYyBbIAld KkpVTVAgUyAsIEFcWzFcXQ0KISAgIDE0OglmNiAxYyBbIAldKkpVTVAgWiAs ICNmNmgNCiAgICAxNjoJMDkgOWMgWyAJXSpKVU1QIFogLCBBXFswXF0NCiAg ICAxODoJMTkgOWMgWyAJXSpKVU1QIFogLCBBXFsxXF0NCiEgICAxYToJZjMg NWMgWyAJXSpKVU1QIE5aICwgI2YzaA0KICAgIDFjOgkwOSBkYyBbIAldKkpV TVAgTlogLCBBXFswXF0NCiAgICAxZToJMTkgZGMgWyAJXSpKVU1QIE5aICwg QVxbMVxdDQohICAgMjA6CWYwIDNjIFsgCV0qSlVNUCBFICwgI2YwaA0KISAg IDIyOgllZiA3YyBbIAldKkpVTVAgTkUgLCAjZWZoDQohICAgMjQ6CTAxIDdj IFsgCV0qSlVNUCBORSAsICMwMWgNCiAgDQogIDArMDI2IDxMYWJsZTE+Og0K ISAgIDI2OgkwMCAwYyBbIAldKkpVTVAgICMwMGgNCiEgICAyODoJZmYgMmMg WyAJXSpKVU1QIEMgLCAjZmZoDQogICAgMmE6CTA5IGFjIFsgCV0qSlVNUCBD ICwgQVxbMFxdDQogICAgMmM6CTE5IGFjIFsgCV0qSlVNUCBDICwgQVxbMVxd DQohICAgMmU6CWZjIDZjIFsgCV0qSlVNUCBOQyAsICNmY2gNCiAgICAzMDoJ MDkgZWMgWyAJXSpKVU1QIE5DICwgQVxbMFxdDQogICAgMzI6CTE5IGVjIFsg CV0qSlVNUCBOQyAsIEFcWzFcXQ0KISAgIDM0OglmOSA0YyBbIAldKkpVTVAg UyAsICNmOWgNCiAgICAzNjoJMDkgY2MgWyAJXSpKVU1QIFMgLCBBXFswXF0N CiAgICAzODoJMTkgY2MgWyAJXSpKVU1QIFMgLCBBXFsxXF0NCiEgICAzYToJ ZjYgMWMgWyAJXSpKVU1QIFogLCAjZjZoDQogICAgM2M6CTA5IDljIFsgCV0q SlVNUCBaICwgQVxbMFxdDQogICAgM2U6CTE5IDljIFsgCV0qSlVNUCBaICwg QVxbMVxdDQohICAgNDA6CWYzIDVjIFsgCV0qSlVNUCBOWiAsICNmM2gNCiAg ICA0MjoJMDkgZGMgWyAJXSpKVU1QIE5aICwgQVxbMFxdDQogICAgNDQ6CTE5 IGRjIFsgCV0qSlVNUCBOWiAsIEFcWzFcXQ0KISAgIDQ2OglmMCAzYyBbIAld KkpVTVAgRSAsICNmMGgNCiEgICA0ODoJZWYgN2MgWyAJXSpKVU1QIE5FICwg I2VmaA0KICAgIDRhOgkwNCAwYiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDRo DQogICAgNGM6CWM2IDBjIFsgCV0qSlVNUCAgI2M2aA0KICAgIDRlOgkwNCAw YiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDRoDQotLS0gNSw0OSAtLS0tDQog IA0KICBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0Og0KICAwKzAwMCA8 TGFibGVTdGFydD46DQohICAgIDA6CWZmIDBjIFsgCV0qSlVNUCAgI2ZmaA0K ISAgICAyOglmZSAyYyBbIAldKkpVTVAgQyAsICNmZWgNCiAgICAgNDoJMDkg YWMgWyAJXSpKVU1QIEMgLCBBXFswXF0NCiAgICAgNjoJMTkgYWMgWyAJXSpK VU1QIEMgLCBBXFsxXF0NCiEgICAgODoJZmIgNmMgWyAJXSpKVU1QIE5DICwg I2ZiaA0KICAgICBhOgkwOSBlYyBbIAldKkpVTVAgTkMgLCBBXFswXF0NCiAg ICAgYzoJMTkgZWMgWyAJXSpKVU1QIE5DICwgQVxbMVxdDQohICAgIGU6CWY4 IDRjIFsgCV0qSlVNUCBTICwgI2Y4aA0KICAgIDEwOgkwOSBjYyBbIAldKkpV TVAgUyAsIEFcWzBcXQ0KICAgIDEyOgkxOSBjYyBbIAldKkpVTVAgUyAsIEFc WzFcXQ0KISAgIDE0OglmNSAxYyBbIAldKkpVTVAgWiAsICNmNWgNCiAgICAx NjoJMDkgOWMgWyAJXSpKVU1QIFogLCBBXFswXF0NCiAgICAxODoJMTkgOWMg WyAJXSpKVU1QIFogLCBBXFsxXF0NCiEgICAxYToJZjIgNWMgWyAJXSpKVU1Q IE5aICwgI2YyaA0KICAgIDFjOgkwOSBkYyBbIAldKkpVTVAgTlogLCBBXFsw XF0NCiAgICAxZToJMTkgZGMgWyAJXSpKVU1QIE5aICwgQVxbMVxdDQohICAg MjA6CWVmIDNjIFsgCV0qSlVNUCBFICwgI2VmaA0KISAgIDIyOgllZSA3YyBb IAldKkpVTVAgTkUgLCAjZWVoDQohICAgMjQ6CTAwIDdjIFsgCV0qSlVNUCBO RSAsICMwMGgNCiAgDQogIDArMDI2IDxMYWJsZTE+Og0KISAgIDI2OglmZiAw YyBbIAldKkpVTVAgICNmZmgNCiEgICAyODoJZmUgMmMgWyAJXSpKVU1QIEMg LCAjZmVoDQogICAgMmE6CTA5IGFjIFsgCV0qSlVNUCBDICwgQVxbMFxdDQog ICAgMmM6CTE5IGFjIFsgCV0qSlVNUCBDICwgQVxbMVxdDQohICAgMmU6CWZi IDZjIFsgCV0qSlVNUCBOQyAsICNmYmgNCiAgICAzMDoJMDkgZWMgWyAJXSpK VU1QIE5DICwgQVxbMFxdDQogICAgMzI6CTE5IGVjIFsgCV0qSlVNUCBOQyAs IEFcWzFcXQ0KISAgIDM0OglmOCA0YyBbIAldKkpVTVAgUyAsICNmOGgNCiAg ICAzNjoJMDkgY2MgWyAJXSpKVU1QIFMgLCBBXFswXF0NCiAgICAzODoJMTkg Y2MgWyAJXSpKVU1QIFMgLCBBXFsxXF0NCiEgICAzYToJZjUgMWMgWyAJXSpK VU1QIFogLCAjZjVoDQogICAgM2M6CTA5IDljIFsgCV0qSlVNUCBaICwgQVxb MFxdDQogICAgM2U6CTE5IDljIFsgCV0qSlVNUCBaICwgQVxbMVxdDQohICAg NDA6CWYyIDVjIFsgCV0qSlVNUCBOWiAsICNmMmgNCiAgICA0MjoJMDkgZGMg WyAJXSpKVU1QIE5aICwgQVxbMFxdDQogICAgNDQ6CTE5IGRjIFsgCV0qSlVN UCBOWiAsIEFcWzFcXQ0KISAgIDQ2OgllZiAzYyBbIAldKkpVTVAgRSAsICNl ZmgNCiEgICA0ODoJZWUgN2MgWyAJXSpKVU1QIE5FICwgI2VlaA0KICAgIDRh OgkwNCAwYiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDRoDQogICAgNGM6CWM2 IDBjIFsgCV0qSlVNUCAgI2M2aA0KICAgIDRlOgkwNCAwYiBbIAldKk1PVkUg IFBGWFxbMFxdLCAjMDRoDQpJbmRleDogZ2FzL3Rlc3RzdWl0ZS9nYXMvbWF4 cTIwL2NhbGwuZA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy9nYXMvdGVzdHN1aXRlL2dhcy9tYXhxMjAvY2FsbC5k LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQpkaWZmIC1jIC0zIC1wIC1y MS4yIGNhbGwuZA0KKioqIGdhcy90ZXN0c3VpdGUvZ2FzL21heHEyMC9jYWxs LmQJMTggTm92IDIwMDQgMTY6MjA6MTEgLTAwMDAJMS4yDQotLS0gZ2FzL3Rl c3RzdWl0ZS9nYXMvbWF4cTIwL2NhbGwuZAkyNyBEZWMgMjAwNCAwODozODo0 MiAtMDAwMA0KKioqKioqKioqKioqKioqDQoqKiogNSwxMSAqKioqDQogIA0K ICBEaXNhc3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0Og0KICAwKzAwMCA8Zm9v PjoNCiEgICAgMDoJMDMgM2QgWyAJXSpDQUxMICAjMDNoDQogICAgIDI6CTA0 IDBiIFsgCV0qTU9WRSAgUEZYXFswXF0sICMwNGgNCiAgICAgNDoJMjggM2Qg WyAJXSpDQUxMICAjMjhoDQogIA0KLS0tIDUsMTEgLS0tLQ0KICANCiAgRGlz YXNzZW1ibHkgb2Ygc2VjdGlvbiAudGV4dDoNCiAgMCswMDAgPGZvbz46DQoh ICAgIDA6CTAyIDNkIFsgCV0qQ0FMTCAgIzAyaA0KICAgICAyOgkwNCAwYiBb IAldKk1PVkUgIFBGWFxbMFxdLCAjMDRoDQogICAgIDQ6CTI4IDNkIFsgCV0q Q0FMTCAgIzI4aA0KICANCioqKioqKioqKioqKioqKiBEaXNhc3NlbWJseSBv ZiBzZWN0aW9uIC50ZXh0Og0KKioqIDIzLDM0ICoqKioNCiAgICAxYToJMTAg N2QgWyAJXSpNT1ZFICBMQ1xbMVxdLCAjMTBoDQogIA0KICAwKzAxYyA8TG9v cFRvcD46DQohICAgMWM6CTAwIDNkIFsgCV0qQ0FMTCAgIzAwaA0KISAgIDFl OglmZiA1ZCBbIAldKkRKTlogIExDXFsxXF0sICNmZmgNCiAgICAyMDoJMTAg N2QgWyAJXSpNT1ZFICBMQ1xbMVxdLCAjMTBoDQogIA0KICAwKzAyMiA8TG9v cFRvcDE+Og0KISAgIDIyOgkwMCAzZCBbIAldKkNBTEwgICMwMGgNCiAgCS4u Lg0KICAgNDI0OgkwMCAwYiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDBoDQog ICA0MjY6CTFjIDVkIFsgCV0qREpOWiAgTENcWzFcXSwgIzFjaA0KLS0tIDIz LDM0IC0tLS0NCiAgICAxYToJMTAgN2QgWyAJXSpNT1ZFICBMQ1xbMVxdLCAj MTBoDQogIA0KICAwKzAxYyA8TG9vcFRvcD46DQohICAgMWM6CWZmIDNkIFsg CV0qQ0FMTCAgI2ZmaA0KISAgIDFlOglmZSA1ZCBbIAldKkRKTlogIExDXFsx XF0sICNmZWgNCiAgICAyMDoJMTAgN2QgWyAJXSpNT1ZFICBMQ1xbMVxdLCAj MTBoDQogIA0KICAwKzAyMiA8TG9vcFRvcDE+Og0KISAgIDIyOglmZiAzZCBb IAldKkNBTEwgICNmZmgNCiAgCS4uLg0KICAgNDI0OgkwMCAwYiBbIAldKk1P VkUgIFBGWFxbMFxdLCAjMDBoDQogICA0MjY6CTFjIDVkIFsgCV0qREpOWiAg TENcWzFcXSwgIzFjaA0KSW5kZXg6IGdhcy90ZXN0c3VpdGUvZ2FzL21heHEy MC9qdW1wLmQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvZ2FzL3Rlc3RzdWl0ZS9nYXMvbWF4cTIwL2p1bXAuZCx2 DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQ0KZGlmZiAtYyAtMyAtcCAtcjEu MSBqdW1wLmQNCioqKiBnYXMvdGVzdHN1aXRlL2dhcy9tYXhxMjAvanVtcC5k CTggTm92IDIwMDQgMTM6MTc6NDMgLTAwMDAJMS4xDQotLS0gZ2FzL3Rlc3Rz dWl0ZS9nYXMvbWF4cTIwL2p1bXAuZAkyNyBEZWMgMjAwNCAwODozODo0MiAt MDAwMA0KKioqKioqKioqKioqKioqDQoqKiogNSw0OSAqKioqDQogIA0KICBE aXNhc3NlbWJseSBvZiBzZWN0aW9uIC50ZXh0Og0KICAwKzAwMCA8TGFibGVT dGFydD46DQohICAgIDA6CTAwIDBjIFsgCV0qSlVNUCAgIzAwaA0KISAgICAy OglmZiAyYyBbIAldKkpVTVAgQyAsICNmZmgNCiAgICAgNDoJMDkgYWMgWyAJ XSpKVU1QIEMgLCBBXFswXF0NCiAgICAgNjoJMTkgYWMgWyAJXSpKVU1QIEMg LCBBXFsxXF0NCiEgICAgODoJZmMgNmMgWyAJXSpKVU1QIE5DICwgI2ZjaA0K ICAgICBhOgkwOSBlYyBbIAldKkpVTVAgTkMgLCBBXFswXF0NCiAgICAgYzoJ MTkgZWMgWyAJXSpKVU1QIE5DICwgQVxbMVxdDQohICAgIGU6CWY5IDRjIFsg CV0qSlVNUCBTICwgI2Y5aA0KICAgIDEwOgkwOSBjYyBbIAldKkpVTVAgUyAs IEFcWzBcXQ0KICAgIDEyOgkxOSBjYyBbIAldKkpVTVAgUyAsIEFcWzFcXQ0K ISAgIDE0OglmNiAxYyBbIAldKkpVTVAgWiAsICNmNmgNCiAgICAxNjoJMDkg OWMgWyAJXSpKVU1QIFogLCBBXFswXF0NCiAgICAxODoJMTkgOWMgWyAJXSpK VU1QIFogLCBBXFsxXF0NCiEgICAxYToJZjMgNWMgWyAJXSpKVU1QIE5aICwg I2YzaA0KICAgIDFjOgkwOSBkYyBbIAldKkpVTVAgTlogLCBBXFswXF0NCiAg ICAxZToJMTkgZGMgWyAJXSpKVU1QIE5aICwgQVxbMVxdDQohICAgMjA6CWYw IDNjIFsgCV0qSlVNUCBFICwgI2YwaA0KISAgIDIyOgllZiA3YyBbIAldKkpV TVAgTkUgLCAjZWZoDQohICAgMjQ6CTAxIDdjIFsgCV0qSlVNUCBORSAsICMw MWgNCiAgDQogIDArMDI2IDxMYWJsZTE+Og0KISAgIDI2OgkwMCAwYyBbIAld KkpVTVAgICMwMGgNCiEgICAyODoJZmYgMmMgWyAJXSpKVU1QIEMgLCAjZmZo DQogICAgMmE6CTA5IGFjIFsgCV0qSlVNUCBDICwgQVxbMFxdDQogICAgMmM6 CTE5IGFjIFsgCV0qSlVNUCBDICwgQVxbMVxdDQohICAgMmU6CWZjIDZjIFsg CV0qSlVNUCBOQyAsICNmY2gNCiAgICAzMDoJMDkgZWMgWyAJXSpKVU1QIE5D ICwgQVxbMFxdDQogICAgMzI6CTE5IGVjIFsgCV0qSlVNUCBOQyAsIEFcWzFc XQ0KISAgIDM0OglmOSA0YyBbIAldKkpVTVAgUyAsICNmOWgNCiAgICAzNjoJ MDkgY2MgWyAJXSpKVU1QIFMgLCBBXFswXF0NCiAgICAzODoJMTkgY2MgWyAJ XSpKVU1QIFMgLCBBXFsxXF0NCiEgICAzYToJZjYgMWMgWyAJXSpKVU1QIFog LCAjZjZoDQogICAgM2M6CTA5IDljIFsgCV0qSlVNUCBaICwgQVxbMFxdDQog ICAgM2U6CTE5IDljIFsgCV0qSlVNUCBaICwgQVxbMVxdDQohICAgNDA6CWYz IDVjIFsgCV0qSlVNUCBOWiAsICNmM2gNCiAgICA0MjoJMDkgZGMgWyAJXSpK VU1QIE5aICwgQVxbMFxdDQogICAgNDQ6CTE5IGRjIFsgCV0qSlVNUCBOWiAs IEFcWzFcXQ0KISAgIDQ2OglmMCAzYyBbIAldKkpVTVAgRSAsICNmMGgNCiEg ICA0ODoJZWYgN2MgWyAJXSpKVU1QIE5FICwgI2VmaA0KICAgIDRhOgkwNCAw YiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDRoDQogICAgNGM6CWM2IDBjIFsg CV0qSlVNUCAgI2M2aA0KICAgIDRlOgkwNCAwYiBbIAldKk1PVkUgIFBGWFxb MFxdLCAjMDRoDQotLS0gNSw0OSAtLS0tDQogIA0KICBEaXNhc3NlbWJseSBv ZiBzZWN0aW9uIC50ZXh0Og0KICAwKzAwMCA8TGFibGVTdGFydD46DQohICAg IDA6CWZmIDBjIFsgCV0qSlVNUCAgI2ZmaA0KISAgICAyOglmZSAyYyBbIAld KkpVTVAgQyAsICNmZWgNCiAgICAgNDoJMDkgYWMgWyAJXSpKVU1QIEMgLCBB XFswXF0NCiAgICAgNjoJMTkgYWMgWyAJXSpKVU1QIEMgLCBBXFsxXF0NCiEg ICAgODoJZmIgNmMgWyAJXSpKVU1QIE5DICwgI2ZiaA0KICAgICBhOgkwOSBl YyBbIAldKkpVTVAgTkMgLCBBXFswXF0NCiAgICAgYzoJMTkgZWMgWyAJXSpK VU1QIE5DICwgQVxbMVxdDQohICAgIGU6CWY4IDRjIFsgCV0qSlVNUCBTICwg I2Y4aA0KICAgIDEwOgkwOSBjYyBbIAldKkpVTVAgUyAsIEFcWzBcXQ0KICAg IDEyOgkxOSBjYyBbIAldKkpVTVAgUyAsIEFcWzFcXQ0KISAgIDE0OglmNSAx YyBbIAldKkpVTVAgWiAsICNmNWgNCiAgICAxNjoJMDkgOWMgWyAJXSpKVU1Q IFogLCBBXFswXF0NCiAgICAxODoJMTkgOWMgWyAJXSpKVU1QIFogLCBBXFsx XF0NCiEgICAxYToJZjIgNWMgWyAJXSpKVU1QIE5aICwgI2YyaA0KICAgIDFj OgkwOSBkYyBbIAldKkpVTVAgTlogLCBBXFswXF0NCiAgICAxZToJMTkgZGMg WyAJXSpKVU1QIE5aICwgQVxbMVxdDQohICAgMjA6CWVmIDNjIFsgCV0qSlVN UCBFICwgI2VmaA0KISAgIDIyOgllZSA3YyBbIAldKkpVTVAgTkUgLCAjZWVo DQohICAgMjQ6CTAwIDdjIFsgCV0qSlVNUCBORSAsICMwMGgNCiAgDQogIDAr MDI2IDxMYWJsZTE+Og0KISAgIDI2OglmZiAwYyBbIAldKkpVTVAgICNmZmgN CiEgICAyODoJZmUgMmMgWyAJXSpKVU1QIEMgLCAjZmVoDQogICAgMmE6CTA5 IGFjIFsgCV0qSlVNUCBDICwgQVxbMFxdDQogICAgMmM6CTE5IGFjIFsgCV0q SlVNUCBDICwgQVxbMVxdDQohICAgMmU6CWZiIDZjIFsgCV0qSlVNUCBOQyAs ICNmYmgNCiAgICAzMDoJMDkgZWMgWyAJXSpKVU1QIE5DICwgQVxbMFxdDQog ICAgMzI6CTE5IGVjIFsgCV0qSlVNUCBOQyAsIEFcWzFcXQ0KISAgIDM0Oglm OCA0YyBbIAldKkpVTVAgUyAsICNmOGgNCiAgICAzNjoJMDkgY2MgWyAJXSpK VU1QIFMgLCBBXFswXF0NCiAgICAzODoJMTkgY2MgWyAJXSpKVU1QIFMgLCBB XFsxXF0NCiEgICAzYToJZjUgMWMgWyAJXSpKVU1QIFogLCAjZjVoDQogICAg M2M6CTA5IDljIFsgCV0qSlVNUCBaICwgQVxbMFxdDQogICAgM2U6CTE5IDlj IFsgCV0qSlVNUCBaICwgQVxbMVxdDQohICAgNDA6CWYyIDVjIFsgCV0qSlVN UCBOWiAsICNmMmgNCiAgICA0MjoJMDkgZGMgWyAJXSpKVU1QIE5aICwgQVxb MFxdDQogICAgNDQ6CTE5IGRjIFsgCV0qSlVNUCBOWiAsIEFcWzFcXQ0KISAg IDQ2OgllZiAzYyBbIAldKkpVTVAgRSAsICNlZmgNCiEgICA0ODoJZWUgN2Mg WyAJXSpKVU1QIE5FICwgI2VlaA0KICAgIDRhOgkwNCAwYiBbIAldKk1PVkUg IFBGWFxbMFxdLCAjMDRoDQogICAgNGM6CWM2IDBjIFsgCV0qSlVNUCAgI2M2 aA0KICAgIDRlOgkwNCAwYiBbIAldKk1PVkUgIFBGWFxbMFxdLCAjMDRoDQpJ bmRleDogaW5jbHVkZS9jb2ZmL21heHEuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9pbmNsdWRlL2NvZmYvbWF4 cS5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xDQpkaWZmIC1jIC0zIC1w IC1yMS4xIG1heHEuaA0KKioqIGluY2x1ZGUvY29mZi9tYXhxLmgJOCBOb3Yg MjAwNCAxMzoxNzozOSAtMDAwMAkxLjENCi0tLSBpbmNsdWRlL2NvZmYvbWF4 cS5oCTI3IERlYyAyMDA0IDA4OjM4OjQzIC0wMDAwDQoqKioqKioqKioqKioq KioNCioqKiAyNSwzOCAqKioqDQogIA0KICAvKiBCaXRzIGZvciBmX2ZsYWdz OiBGX1JFTEZMRyByZWxvY2F0aW9uIGluZm8gc3RyaXBwZWQgZnJvbSBmaWxl IEZfRVhFQyBmaWxlDQogICAgIGlzIGV4ZWN1dGFibGUgKG5vIHVucmVzb2x2 ZWQgZXh0ZXJuYWwgcmVmZXJlbmNlcykgRl9MTk5PIGxpbmUgbnVtYmVycw0K ISAgICBzdHJpcHBlZCBmcm9tIGZpbGUgRl9MU1lNUyBsb2NhbCBzeW1ib2xz IHN0cmlwcGVkIGZyb20gZmlsZSBGX0FSMzJXUiBmaWxlDQohICAgIGhhcyBi eXRlIG9yZGVyaW5nIG9mIGFuIEFSMzJXUiBtYWNoaW5lIChlLmcuIHZheCku ICAqLw0KICANCiAgI2RlZmluZSBGX1JFTEZMRyAgICAgICAgKDB4MDAwMSkN CiAgI2RlZmluZSBGX0VYRUMgICAgICAgICAgKDB4MDAwMikNCiAgI2RlZmlu ZSBGX0xOTk8gICAgICAgICAgKDB4MDAwNCkNCiAgI2RlZmluZSBGX0xTWU1T ICAgICAgICAgKDB4MDAwOCkNCiAgDQogIC8qIE1hZ2ljIG51bWJlcnMgZm9y IG1heHEuICAqLw0KICAjZGVmaW5lIE1BWFEyME1BR0lDICAgICAgMHhhMA0K ICAjZGVmaW5lIE1BWFEyMEJBRE1BRyh4KSAoKCh4KS5mX21hZ2ljICE9IE1B WFEyME1BR0lDKSkNCi0tLSAyNSw0MyAtLS0tDQogIA0KICAvKiBCaXRzIGZv ciBmX2ZsYWdzOiBGX1JFTEZMRyByZWxvY2F0aW9uIGluZm8gc3RyaXBwZWQg ZnJvbSBmaWxlIEZfRVhFQyBmaWxlDQogICAgIGlzIGV4ZWN1dGFibGUgKG5v IHVucmVzb2x2ZWQgZXh0ZXJuYWwgcmVmZXJlbmNlcykgRl9MTk5PIGxpbmUg bnVtYmVycw0KISAgICBzdHJpcHBlZCBmcm9tIGZpbGUgRl9MU1lNUyBsb2Nh bCBzeW1ib2xzIHN0cmlwcGVkIGZyb20gZmlsZS4gICovDQogIA0KICAjZGVm aW5lIEZfUkVMRkxHICAgICAgICAoMHgwMDAxKQ0KICAjZGVmaW5lIEZfRVhF QyAgICAgICAgICAoMHgwMDAyKQ0KICAjZGVmaW5lIEZfTE5OTyAgICAgICAg ICAoMHgwMDA0KQ0KICAjZGVmaW5lIEZfTFNZTVMgICAgICAgICAoMHgwMDA4 KQ0KICANCisgLyogVmFyaWFudCBTcGVjaWZpYyBGbGFncyBmb3IgTUFYUTEw IGFuZCBNQVhRMjAuICAqLw0KKyAjZGVmaW5lIEZfTUFYUTEwCSgweDAwMzAp DQorICNkZWZpbmUgRl9NQVhRMjAJKDB4MDA0MCkNCisgDQorICNkZWZpbmUg Rl9NQUNITUFTSwkoMHgwMEYwKQ0KKyANCiAgLyogTWFnaWMgbnVtYmVycyBm b3IgbWF4cS4gICovDQogICNkZWZpbmUgTUFYUTIwTUFHSUMgICAgICAweGEw DQogICNkZWZpbmUgTUFYUTIwQkFETUFHKHgpICgoKHgpLmZfbWFnaWMgIT0g TUFYUTIwTUFHSUMpKQ0KSW5kZXg6IGxkL3NjcmlwdHRlbXBsL21heHFjb2Zm LnNjDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2xkL3NjcmlwdHRlbXBsL21heHFjb2ZmLnNjLHYNCnJldHJpZXZp bmcgcmV2aXNpb24gMS4xDQpkaWZmIC1jIC0zIC1wIC1yMS4xIG1heHFjb2Zm LnNjDQoqKiogbGQvc2NyaXB0dGVtcGwvbWF4cWNvZmYuc2MJOCBOb3YgMjAw NCAxMzoxNzoyNCAtMDAwMAkxLjENCi0tLSBsZC9zY3JpcHR0ZW1wbC9tYXhx Y29mZi5zYwkyNyBEZWMgMjAwNCAwODozODo0NCAtMDAwMA0KKioqKioqKioq KioqKioqIGNhdCA8PEVPRg0KKioqIDMsMzYgKioqKg0KICBPVVRQVVRfRk9S TUFUKCIke09VVFBVVF9GT1JNQVR9IikNCiAgJHtMSUJfU0VBUkNIX0RJUlN9 DQogIEVOVFJZKCR7RU5UUll9KQ0KLSBNRU1PUlkgDQotICAgew0KLSAgIHJv bSAocngpICA6IE9SSUdJTiA9IDAsIExFTkdUSCA9IDB4N0ZGRQ0KLSAgIHJh bSAoIXJ4KSA6IG9yZyA9IDB4MEEwMDAsIGwgPSAweDVGRkYNCi0gICB9DQog IA0KICBTRUNUSU9OUw0KICB7DQohIAkudGV4dCAgJHtSRUxPQ0FUSU5HKyAw eDAwMDB9OiANCiEgCXsNCiEgCQkqKC50ZXh0KSANCiEgCX0gPnJvbQ0KISAN CiEgCS5kYXRhICR7UkVMT0NBVElOR306IA0KICAJeyANCiAgCQkqKC5kYXRh KSAgDQogIAkJKigucm9kYXRhKQ0KISAJCSooLmJzcykNCiEgCQkqKENPTU1P TikNCiEgCQkke1JFTE9DQVRJTkcrIGVkYXRhICA9ICAufTsNCiEgCX0+cmFt DQogIA0KISAvKgkuYnNzICR7UkVMT0NBVElORysgU0laRU9GKC5kYXRhKSAr IDB4MDAwMH0gIDoNCiEgCXsgDQohIAkJKiguYnNzKSAgDQohIAkJKihDT01N T04pDQogIAl9DQohICovDQogIAkuc3RhYiAgMCAke1JFTE9DQVRJTkcrKE5P TE9BRCl9IDoNCiAgCXsNCiAgCQlbIC5zdGFiIF0NCi0tLSAzLDI5IC0tLS0N CiAgT1VUUFVUX0ZPUk1BVCgiJHtPVVRQVVRfRk9STUFUfSIpDQogICR7TElC X1NFQVJDSF9ESVJTfQ0KICBFTlRSWSgke0VOVFJZfSkNCiAgDQogIFNFQ1RJ T05TDQogIHsNCiEgCS5kYXRhICR7UkVMT0NBVElORysweDAwMDB9OiANCiAg CXsgDQogIAkJKiguZGF0YSkgIA0KICAJCSooLnJvZGF0YSkNCiEgCX0gDQog IA0KISAgICAgICAgIC5ic3MgJHtSRUxPQ0FUSU5HK1NJWkVPRiguZGF0YSl9 Og0KISAgICAgICAgIHsNCiEgICAgICAgICAgICAgICAgICooLmJzcykNCiEg ICAgICAgICAgICAgICAgICooQ09NTU9OKQ0KISAgICAgICAgICAgICAgICAg JHtSRUxPQ0FUSU5HKyBlZGF0YSAgPSAgLn07DQohICAgICAgICAgfT0weDAw MDAwMDAwDQohIA0KISAJLnRleHQgICR7UkVMT0NBVElORytTSVpFT0YoLmJz cykrU0laRU9GKC5kYXRhKX06IA0KISAJew0KISAJCSooLnRleHQpIA0KICAJ fQ0KISANCiAgCS5zdGFiICAwICR7UkVMT0NBVElORysoTk9MT0FEKX0gOg0K ICAJew0KICAJCVsgLnN0YWIgXQ0KSW5kZXg6IG9wY29kZXMvbWF4cS1kaXMu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy9vcGNvZGVzL21heHEtZGlzLmMsdg0KcmV0cmlldmluZyByZXZpc2lv biAxLjINCmRpZmYgLWMgLTMgLXAgLXIxLjIgbWF4cS1kaXMuYw0KKioqIG9w Y29kZXMvbWF4cS1kaXMuYwkxOSBOb3YgMjAwNCAxMjozNDoxMyAtMDAwMAkx LjINCi0tLSBvcGNvZGVzL21heHEtZGlzLmMJMjcgRGVjIDIwMDQgMDg6Mzg6 NDYgLTAwMDANCioqKioqKioqKioqKioqKiB0eXBlZGVmIHN0cnVjdCBfZ3Jv dXBfaW5mbyBncm91cF9pbmZvOw0KKioqIDk5LDEwNSAqKioqDQogICNkZWZp bmUgU0lNX0FMVV9ERUNPREVfSUdFX0JJVF9QT1MgICAgMHgxDQogIA0KICAv KiBOdW1iZXIgT2YgT3AtY29kZSBHcm91cHMuICAqLw0KISB1bnNpZ25lZCBj aGFyIGNvbnN0IFNJTV9BTFVfREVDT0RFX09QQ09ERV9HUk9VUFMgPSAxMTsN CiAgDQogIC8qIE9wLWNvZGUgR3JvdXBzLiAgKi8NCiAgdW5zaWduZWQgY2hh ciBjb25zdCBTSU1fQUxVX0RFQ09ERV9MT0dJQ0FMX1hDSEdfT1BfR1JPVVAg PSAxOw0KLS0tIDk5LDEwNSAtLS0tDQogICNkZWZpbmUgU0lNX0FMVV9ERUNP REVfSUdFX0JJVF9QT1MgICAgMHgxDQogIA0KICAvKiBOdW1iZXIgT2YgT3At Y29kZSBHcm91cHMuICAqLw0KISB1bnNpZ25lZCBjaGFyIGNvbnN0IFNJTV9B TFVfREVDT0RFX09QQ09ERV9HUk9VUFMgPSAxMzsNCiAgDQogIC8qIE9wLWNv ZGUgR3JvdXBzLiAgKi8NCiAgdW5zaWduZWQgY2hhciBjb25zdCBTSU1fQUxV X0RFQ09ERV9MT0dJQ0FMX1hDSEdfT1BfR1JPVVAgPSAxOw0KKioqKioqKioq KioqKioqIHN0YXRpYyB1bnNpZ25lZCBjaGFyDQoqKiogMzU0LDM5NSAqKioq DQogIGdldF9ncm91cCAoY29uc3QgdW5zaWduZWQgaW50IGluc24pDQogIHsN CiAgICBpZiAoY2hlY2tfbW92ZSAoKGluc24gPj4gOCksIChpbnNuICYgX0RF Q09ERV9MT1dCWVRFKSkpDQohICAgICByZXR1cm4gODsNCiAgDQogICAgaWYg KChpbnNuICYgX0RFQ09ERV9MT1dOSUJfSElHSEJZVEUpID09IDB4MEEwMCkN CiAgICAgIHsNCiAgICAgICAgLyogJiYgY29uZGl0aW9uIHdpdGggc2VjIHBh cnQgYWRkZWQgb24gMjYgTWF5IGZvciByZXNvbHZpbmcgMiAmIDMgZ3JwDQoh IAkgY29uZmxpY3QuICAqLw0KICAgICAgICBpZiAoKChpbnNuICYgX0RFQ09E RV9MT1dOSUJfTE9XQllURSkgPT0gMHgwMDBBKQ0KICAJICAmJiAoKGluc24g JiBfREVDT0RFX0dFVF9GX0hJR0hCWVRFKSA9PSAweDgwMDApKQ0KICAJew0K ICAJICBpZiAoKGluc24gJiBfREVDT0RFX0hJR0hOSUJfSElHSEJZVEUpID09 IDB4ODAwMCkNCiEgCSAgICByZXR1cm4gMjsNCiAgCSAgZWxzZQ0KISAJICAg IHJldHVybiAzOw0KICAJfQ0KICANCiEgICAgICAgcmV0dXJuIDE7DQogICAg ICB9DQogICAgZWxzZSBpZiAoKGluc24gJiBfREVDT0RFX0xPV05JQl9ISUdI QllURSkgPT0gMHgwQzAwKQ0KICAgICAgew0KISAgICAgICBpZiAoKChpbnNu ICYgX0RFQ09ERV9MT1dCWVRFKSA9PSAweDAwMEQpICYmIEpVTVBfQ0hFQ0sg KGluc24pDQohIAkgICYmICgoaW5zbiAmIF9ERUNPREVfR0VUX0ZfSElHSEJZ VEUpID09IDB4ODAwMCkpDQohIAlyZXR1cm4gNjsNCiEgICAgICAgZWxzZSBp ZiAoKGluc24gJiBfREVDT0RFX0xPV0JZVEUpID09IDB4MDA4RCkNCiEgCXJl dHVybiA3Ow0KISANCiEgICAgICAgcmV0dXJuIDU7DQogICAgICB9DQogICAg ZWxzZSBpZiAoKChpbnNuICYgX0RFQ09ERV9MT1dOSUJfSElHSEJZVEUpID09 IDB4MEQwMCkNCiAgCSAgICYmICgoKGluc24gJiBfREVDT0RFXzRUTzZfSElH SEJZVEUpID09IDB4MzAwMCkNCiAgCSAgICAgICB8fCAoKGluc24gJiBfREVD T0RFXzRUTzZfSElHSEJZVEUpID09IDB4NDAwMCkNCiAgCSAgICAgICB8fCAo KGluc24gJiBfREVDT0RFXzRUTzZfSElHSEJZVEUpID09IDB4NTAwMCkNCiAg CSAgICAgICB8fCAoKGluc24gJiBfREVDT0RFXzRUTzZfSElHSEJZVEUpID09 IDB4MDAwMCkpKQ0KISAgICAgcmV0dXJuIDEwOw0KICANCiAgICBlbHNlIGlm ICgoaW5zbiAmIF9ERUNPREVfTE9XQllURSkgPT0gMHgwMDBEKQ0KISAgICAg cmV0dXJuIDExOw0KICANCiAgICBlbHNlIGlmICgoaW5zbiAmIF9ERUNPREVf TE9XQllURSkgPT0gMHgwMDhEKQ0KICAgICAgcmV0dXJuIDEyOw0KLS0tIDM1 NCwzOTcgLS0tLQ0KICBnZXRfZ3JvdXAgKGNvbnN0IHVuc2lnbmVkIGludCBp bnNuKQ0KICB7DQogICAgaWYgKGNoZWNrX21vdmUgKChpbnNuID4+IDgpLCAo aW5zbiAmIF9ERUNPREVfTE9XQllURSkpKQ0KISAgICAgcmV0dXJuIFNJTV9B TFVfREVDT0RFX1NFVF9TUkNfQklUX0dST1VQOw0KICANCiAgICBpZiAoKGlu c24gJiBfREVDT0RFX0xPV05JQl9ISUdIQllURSkgPT0gMHgwQTAwKQ0KICAg ICAgew0KICAgICAgICAvKiAmJiBjb25kaXRpb24gd2l0aCBzZWMgcGFydCBh ZGRlZCBvbiAyNiBNYXkgZm9yIHJlc29sdmluZyAyICYgMyBncnANCiEgICAg ICAgICAgY29uZmxpY3QuICAqLw0KICAgICAgICBpZiAoKChpbnNuICYgX0RF Q09ERV9MT1dOSUJfTE9XQllURSkgPT0gMHgwMDBBKQ0KICAJICAmJiAoKGlu c24gJiBfREVDT0RFX0dFVF9GX0hJR0hCWVRFKSA9PSAweDgwMDApKQ0KICAJ ew0KICAJICBpZiAoKGluc24gJiBfREVDT0RFX0hJR0hOSUJfSElHSEJZVEUp ID09IDB4ODAwMCkNCiEgCSAgICByZXR1cm4gU0lNX0FMVV9ERUNPREVfQU5E X09SX0FERF9TVUJfT1BfR1JPVVA7DQogIAkgIGVsc2UNCiEgCSAgICByZXR1 cm4gU0lNX0FMVV9ERUNPREVfQklUX09QX0dST1VQOw0KICAJfQ0KICANCiEg ICAgICAgcmV0dXJuIFNJTV9BTFVfREVDT0RFX0xPR0lDQUxfWENIR19PUF9H Uk9VUDsNCiAgICAgIH0NCiAgICBlbHNlIGlmICgoaW5zbiAmIF9ERUNPREVf TE9XTklCX0hJR0hCWVRFKSA9PSAweDBDMDApDQogICAgICB7DQohICAgICAg IGlmICgoKGluc24gJiBfREVDT0RFX0xPV0JZVEUpID09IDB4MDAwRCApICYm IEpVTVBfQ0hFQ0sgKGluc24pIA0KISAJCSYmICgoaW5zbiAmIF9ERUNPREVf R0VUX0ZfSElHSEJZVEUpID09IDB4ODAwMCkpICANCiEgCXJldHVybiBTSU1f QUxVX0RFQ09ERV9SRVRfT1BfR1JPVVA7CQ0KISANCiEgICAgICAgZWxzZSBp ZiAoKGluc24gJiBfREVDT0RFX0xPV0JZVEUpID09IDB4MDA4RCAmJg0KISAJ CShKVU1QX0NIRUNLKGluc24pKSAmJiAoKGluc24mMHg4MDAwKT09MHg4MDAw KSkNCiEgCXJldHVybiBTSU1fQUxVX0RFQ09ERV9NT1ZFX1NSQ19EU1RfR1JP VVA7IA0KISAgICAgIA0KISAgICAgICByZXR1cm4gU0lNX0FMVV9ERUNPREVf SlVNUF9PUF9HUk9VUDsNCiAgICAgIH0NCiAgICBlbHNlIGlmICgoKGluc24g JiBfREVDT0RFX0xPV05JQl9ISUdIQllURSkgPT0gMHgwRDAwKQ0KICAJICAg JiYgKCgoaW5zbiAmIF9ERUNPREVfNFRPNl9ISUdIQllURSkgPT0gMHgzMDAw KQ0KICAJICAgICAgIHx8ICgoaW5zbiAmIF9ERUNPREVfNFRPNl9ISUdIQllU RSkgPT0gMHg0MDAwKQ0KICAJICAgICAgIHx8ICgoaW5zbiAmIF9ERUNPREVf NFRPNl9ISUdIQllURSkgPT0gMHg1MDAwKQ0KICAJICAgICAgIHx8ICgoaW5z biAmIF9ERUNPREVfNFRPNl9ISUdIQllURSkgPT0gMHgwMDAwKSkpDQohICAg ICByZXR1cm4gU0lNX0FMVV9ERUNPREVfUE9QX09QX0dST1VQOw0KICANCiAg ICBlbHNlIGlmICgoaW5zbiAmIF9ERUNPREVfTE9XQllURSkgPT0gMHgwMDBE KQ0KISAgICAgcmV0dXJuIFNJTV9BTFVfREVDT0RFX0NNUF9TUkNfT1BfR1JP VVA7DQogIA0KICAgIGVsc2UgaWYgKChpbnNuICYgX0RFQ09ERV9MT1dCWVRF KSA9PSAweDAwOEQpDQogICAgICByZXR1cm4gMTI7DQoqKioqKioqKioqKioq KiogZ2V0X2dyb3VwIChjb25zdCB1bnNpZ25lZCBpbnQgaW5zbikNCioqKiAz OTgsNDEwICoqKioNCiAgICAgIHJldHVybiAxMzsNCiAgDQogICAgZWxzZSBp ZiAoKGluc24gJiBfREVDT0RFX0xPV05JQl9ISUdIQllURSkgPT0gMHgwNzAw KQ0KISAgICAgcmV0dXJuIDk7DQogIA0KICAgIGVsc2UgaWYgKCgoaW5zbiAm IF9ERUNPREVfTE9XTklCX0xPV0JZVEUpID09IDB4MDAwNykNCiAgCSAgICYm ICgoaW5zbiAmIF9ERUNPREVfR0VUX0ZfSElHSEJZVEUpID09IDB4ODAwMCkp DQohICAgICByZXR1cm4gNDsNCiAgDQohICAgcmV0dXJuIDg7DQogIH0NCiAg DQogIHN0YXRpYyB2b2lkDQotLS0gNDAwLDQxMiAtLS0tDQogICAgICByZXR1 cm4gMTM7DQogIA0KICAgIGVsc2UgaWYgKChpbnNuICYgX0RFQ09ERV9MT1dO SUJfSElHSEJZVEUpID09IDB4MDcwMCkNCiEgICAgIHJldHVybiBTSU1fQUxV X0RFQ09ERV9ESk5aX0NBTExfUFVTSF9PUF9HUk9VUDsNCiAgDQogICAgZWxz ZSBpZiAoKChpbnNuICYgX0RFQ09ERV9MT1dOSUJfTE9XQllURSkgPT0gMHgw MDA3KQ0KICAJICAgJiYgKChpbnNuICYgX0RFQ09ERV9HRVRfRl9ISUdIQllU RSkgPT0gMHg4MDAwKSkNCiEgICAgIHJldHVybiBTSU1fQUxVX0RFQ09ERV9T RVRfREVTVF9CSVRfR1JPVVA7DQogIA0KISAgIHJldHVybiBTSU1fQUxVX0RF Q09ERV9TRVRfU1JDX0JJVF9HUk9VUDsNCiAgfQ0KICANCiAgc3RhdGljIHZv aWQNCioqKioqKioqKioqKioqKiBwcmludF9pbnNuIChiZmRfdm1hIG1lbWFk ZHIsIHN0cnVjdCBkaXNhDQoqKiogNjUyLDY1OSAqKioqDQogIAkJCQkgICAg ICBncnAuYml0X25vKTsNCiAgCQl9DQogIAkgICAgICBlbHNlDQohIAkJaW5m by0+ZnByaW50Zl9mdW5jIChpbmZvLT5zdHJlYW0sICIgJXMiLA0KISAJCQkJ ICAgIGdldF9yZWdfbmFtZSAoZ3JwLmRzdCwgKHR5cGUxKSAwKSk7DQogIAkg ICAgfQ0KICANCiAgCSAgLyogU1JDIGlzIEFCU0VOVCBpbiB0aGUgZ3JwLiAg Ki8NCi0tLSA2NTQsNjYwIC0tLS0NCiAgCQkJCSAgICAgIGdycC5iaXRfbm8p Ow0KICAJCX0NCiAgCSAgICAgIGVsc2UNCiEgCQlpbmZvLT5mcHJpbnRmX2Z1 bmMgKGluZm8tPnN0cmVhbSwgIiAlcyIsIGdldF9yZWdfbmFtZSAoZ3JwLmRz dCwgKHR5cGUxKSAwKSk7DQogIAkgICAgfQ0KICANCiAgCSAgLyogU1JDIGlz IEFCU0VOVCBpbiB0aGUgZ3JwLiAgKi8NCioqKioqKioqKioqKioqKiBwcmlu dF9pbnNuIChiZmRfdm1hIG1lbWFkZHIsIHN0cnVjdCBkaXNhDQoqKiogNjgz LDY4OSAqKioqDQogIAkJCQkJZ3JwLmJpdF9ubyk7DQogIAkJICBpZiAoZm9y bWF0ID09IDApDQogIAkJICAgIGluZm8tPmZwcmludGZfZnVuYyAoaW5mby0+ c3RyZWFtLCAiICMlMDJ4aC4lZCIsDQohIAkJCQkJZ3JwLnNyYywgZ3JwLmJp dF9ubyk7DQogIAkJfQ0KICAJICAgICAgZWxzZQ0KICAJCXsNCi0tLSA2ODQs NjkwIC0tLS0NCiAgCQkJCQlncnAuYml0X25vKTsNCiAgCQkgIGlmIChmb3Jt YXQgPT0gMCkNCiAgCQkgICAgaW5mby0+ZnByaW50Zl9mdW5jIChpbmZvLT5z dHJlYW0sICIgIyUwMnhoLiVkIiwNCiEgCQkJCQkoZ3JwLnNyYywgU1JDKSwg Z3JwLmJpdF9ubyk7DQogIAkJfQ0KICAJICAgICAgZWxzZQ0KICAJCXsNCioq KioqKioqKioqKioqKiBwcmludF9pbnNuIChiZmRfdm1hIG1lbWFkZHIsIHN0 cnVjdCBkaXNhDQoqKiogNjkzLDcwMyAqKioqDQogIAkJICAgIGZvcm1hdCA9 IGdycC5mYml0Ow0KICAJCSAgaWYgKGZvcm1hdCA9PSAxKQ0KICAJCSAgICBp bmZvLT5mcHJpbnRmX2Z1bmMgKGluZm8tPnN0cmVhbSwgIiAlcyIsDQohIAkJ CQkJZ2V0X3JlZ19uYW1lIChncnAuc3JjLA0KISAJCQkJCQkgICAgICAodHlw ZTEpIDEgLypTUkMqLykpOw0KICAJCSAgaWYgKGZvcm1hdCA9PSAwKQ0KICAJ CSAgICBpbmZvLT5mcHJpbnRmX2Z1bmMgKGluZm8tPnN0cmVhbSwgIiAjJTAy eGgiLA0KISAJCQkJCShncnAuc3JjKSk7DQogIAkJfQ0KICAJICAgIH0NCiAg DQotLS0gNjk0LDcwNCAtLS0tDQogIAkJICAgIGZvcm1hdCA9IGdycC5mYml0 Ow0KICAJCSAgaWYgKGZvcm1hdCA9PSAxKQ0KICAJCSAgICBpbmZvLT5mcHJp bnRmX2Z1bmMgKGluZm8tPnN0cmVhbSwgIiAlcyIsDQohIAkJCQkJICAgZ2V0 X3JlZ19uYW1lIChncnAuc3JjLA0KISAJCQkJCQkJICh0eXBlMSkgMSAvKlNS QyovKSk7DQogIAkJICBpZiAoZm9ybWF0ID09IDApDQogIAkJICAgIGluZm8t PmZwcmludGZfZnVuYyAoaW5mby0+c3RyZWFtLCAiICMlMDJ4aCIsDQohIAkJ CQkJICAgKGdycC5zcmMpKTsNCiAgCQl9DQogIAkgICAgfQ0KICANCioqKioq KioqKioqKioqKiBwcmludF9pbnNuIChiZmRfdm1hIG1lbWFkZHIsIHN0cnVj dCBkaXNhDQoqKiogNzA2LDcxMiAqKioqDQogICAgICB9DQogIA0KICAgIGlu Zm8tPmZwcmludGZfZnVuYyAoaW5mby0+c3RyZWFtLCAiVW5hYmxlIHRvIERl Y29kZSA6ICAlMDJ4ICUwMngiLA0KISAJCSAgICAgIGluc25bMF0sIGluc25b MV0pOw0KICAgIHJldHVybiAyOwkJCQ0KICB9DQogIA0KLS0tIDcwNyw3MTMg LS0tLQ0KICAgICAgfQ0KICANCiAgICBpbmZvLT5mcHJpbnRmX2Z1bmMgKGlu Zm8tPnN0cmVhbSwgIlVuYWJsZSB0byBEZWNvZGUgOiAgJTAyeCAlMDJ4IiwN CiEgCQkJIGluc25bMF0sIGluc25bMV0pOw0KICAgIHJldHVybiAyOwkJCQ0K ICB9DQogIA0KKioqKioqKioqKioqKioqIHByaW50X2luc25fbWF4cV9saXR0 bGUgKGJmZF92bWEgbWVtYWRkciwNCioqKiA3MTUsNzE3ICoqKioNCi0tLSA3 MTYsNzE5IC0tLS0NCiAgew0KICAgIHJldHVybiBwcmludF9pbnNuIChtZW1h ZGRyLCBpbmZvLCBCRkRfRU5ESUFOX0xJVFRMRSk7DQogIH0NCisgDQpJbmRl eDogYXJjaHVyZXMuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9iZmQvYXJjaHVyZXMuYyx2DQpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMTAwDQpkaWZmIC1jIC0zIC1wIC1yMS4xMDAgYXJjaHVy ZXMuYw0KKioqIGFyY2h1cmVzLmMJOSBEZWMgMjAwNCAwNjowODo0NSAtMDAw MAkxLjEwMA0KLS0tIGFyY2h1cmVzLmMJMjggRGVjIDIwMDQgMTI6MzU6MDIg LTAwMDANCioqKioqKioqKioqKioqKiBERVNDUklQVElPTg0KKioqIDM1Niwz NjEgKioqKg0KLS0tIDM1NiwzNjMgLS0tLQ0KICAuICBiZmRfYXJjaF94dGVu c2EsICAgIHsqIFRlbnNpbGljYSdzIFh0ZW5zYSBjb3Jlcy4gICp9DQogIC4j ZGVmaW5lIGJmZF9tYWNoX3h0ZW5zYQkxDQogIC4gICBiZmRfYXJjaF9tYXhx LCAgICAgeyogRGFsbGFzIE1BWFEgMTAvMjAgKn0NCisgLiNkZWZpbmUgYmZk X21hY2hfbWF4cTEwIDEwDQorIC4jZGVmaW5lIGJmZF9tYWNoX21heHEyMCAy MA0KICAuICBiZmRfYXJjaF9sYXN0DQogIC4gIH07DQogICovDQo= ------_=_NextPart_001_01C4ECE6.B84C8FB8--