From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4BCCA30A.7050208@domain.hid> Date: Mon, 19 Apr 2010 20:38:02 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <4BCC619E.2@domain.hid> <4BCC6CEE.70907@domain.hid> <4BCC6E3C.3090301@domain.hid> <4BCC7092.1030809@domain.hid> <4BCC71AF.4030903@domain.hid> <4BCC77BD.9040900@domain.hid> <4BCC78D5.3010405@domain.hid> <4BCC7D88.4070403@domain.hid> <1271693411.16659.128.camel@domain.hid> <4BCC814C.6050003@domain.hid> <4BCC8484.1020108@domain.hid> <4BCC9107.1080605@domain.hid> <4BCC9247.10709@domain.hid> <4BCC9628.7030809@domain.hid> <4BCC9ADA.2020909@domain.hid> <4BCC9D8D.10906@domain.hid> <4BCC9E81.8000209@domain.hid> <4BCC9F49.1010302@domain.hid> In-Reply-To: <4BCC9F49.1010302@domain.hid> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig8D3F06680E6F12A16F81B5FF" Sender: jan.kiszka@domain.hid Subject: Re: [Xenomai-core] [RFC] fix XENO_OPT_DEBUG bugs. List-Id: Xenomai life and development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gilles Chanteperdrix Cc: xenomai-core This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig8D3F06680E6F12A16F81B5FF Content-Type: multipart/mixed; boundary="------------040600040401010203010208" This is a multi-part message in MIME format. --------------040600040401010203010208 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Gilles Chanteperdrix wrote: > Jan Kiszka wrote: >> My compiler still complains about undefined 'y0' in the enabled case. >> >> I'll try to dig into a different direction now: Automatic generation >> during build. This is what the kernel does as well when the preprocess= or >> gives up. Would even save the DECLARE and should make everyone happy. >=20 > No, please nothing like that. Because ... ? BTW, I'll extend the prepare stage. Defining the proper dependencies for build-time generation gets too hairy. >=20 > This one works for me: > #include > #include >=20 > #define __name2(a, b) a ## b > #define name2(a, b) __name2(a, b) >=20 > #define DECLARE_ASSERT_SYMBOL(sym) = \ > static const int XENO_OPT_DEBUG_##sym =3D 0; \ > static const int CONFIG_XENO_OPT_DEBUG_##sym##0 =3D 0 >=20 > #define XENO_DEBUG(sym) \ > (name2(CONFIG_XENO_OPT_DEBUG_##sym,0) > XENO_OPT_DEBUG_##sym) >=20 > #define XENO_ASSERT(subsystem,cond,action) do { \ > if (unlikely(XENO_DEBUG(subsystem) && !(cond))) { \ > xnarch_trace_panic_freeze(); \ > xnlogerr("assertion failed at %s:%d (%s)\n", __FILE__, __LINE__= , (#cond)); \ > xnarch_trace_panic_dump(); \ > action; \ > } \ > } while(0) >=20 > DECLARE_ASSERT_SYMBOL(NUCLEUS); >=20 > int main(void) > { > if (XENO_DEBUG(NUCLEUS)) > printf("Hello\n"); > } >=20 > Please try and send me the result of pre-processing if > it does not work for you. >=20 Find it attached. Jan --------------040600040401010203010208 Content-Type: text/plain; name="output.i" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="output.i" IyAxICJ0ZXN0LWRlYnVnMS5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQtbGlu ZT4iCiMgMSAidGVzdC1kZWJ1ZzEuYyIKCgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MSAzIDQKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvdXNyL2luY2x1 ZGUvZmVhdHVyZXMuaCIgMSAzIDQKIyAzMzAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz IDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMyA0CiMgMzQ4ICIvdXNyL2lu Y2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXpl LmgiIDEgMyA0CiMgMzQ5ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0CiMgMzMx ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzIDQKIyAzNTQgIi91c3IvaW5jbHVkZS9m ZWF0dXJlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMyA0CgoK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyA1ICIvdXNyL2lu Y2x1ZGUvZ251L3N0dWJzLmgiIDIgMyA0CgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1 YnMtNjQuaCIgMSAzIDQKIyAxMCAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAyIDMgNAoj IDM1NSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0CiMgMjYgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgoKCiMgMSAiL3Vzci9saWI2NC9nY2MveDg2XzY0LXN1 c2UtbGludXgvNC4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjE0ICIvdXNyL2xpYjY0 L2djYy94ODZfNjQtc3VzZS1saW51eC80LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVk ZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDMyNiAiL3Vzci9saWI2NC9nY2MveDg2 XzY0LXN1c2UtbGludXgvNC4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGludCB3 Y2hhcl90OwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKIyA5NiAiL3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBx dW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAg IGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAgfSBsZGl2X3Q7CgoKCiMgMTQw ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0 X21iX2N1cl9tYXggKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIDsKCgoK CmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBpbnQgYXRvaSAoX19j b25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIDsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCl9fZXh0 ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9fY29uc3QgY2hhciAqX19u cHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoK ZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs CiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsK CiMgMTgyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAoKCmV4dGVybiBsb25nIGludCBz dHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgpleHRlcm4g dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f bnB0ciwKICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQg c3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgIGNoYXIg KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7Cgpf X2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgY2hhciAqKl9fcmVz dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgpfX2V4 dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy LCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1 bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKSA7CgojIDMxMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK ZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSkgOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKIyAxICIv dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMgNAoj IDI4ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv Yml0cy93b3Jkc2l6ZS5oIiAxIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o IiAyIDMgNAoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBpbnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdV9sb25nOwoKCnR5cGVkZWYgc2lnbmVk IGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVk ZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg aW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYg dW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cgp0eXBlZGVmIHNpZ25lZCBsb25nIGludCBfX2lu dDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX191aW50NjRfdDsKCgoKCgoKCnR5 cGVkZWYgbG9uZyBpbnQgX19xdWFkX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX191 X3F1YWRfdDsKIyAxMzEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMgNAojIDEgIi91 c3IvaW5jbHVkZS9iaXRzL3R5cGVzaXplcy5oIiAxIDMgNAojIDEzMiAiL3Vzci9pbmNsdWRl L2JpdHMvdHlwZXMuaCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZGV2 X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50 IF9fZ2lkX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19pbm9fdDsKdHlwZWRlZiB1 bnNpZ25lZCBsb25nIGludCBfX2lubzY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9k ZV90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25n IGludCBfX29mZl90Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmNjRfdDsKdHlwZWRlZiBpbnQg X19waWRfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBpbnQgX192YWxbMl07IH0gX19mc2lkX3Q7CnR5 cGVkZWYgbG9uZyBpbnQgX19jbG9ja190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f cmxpbV90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbTY0X3Q7CnR5cGVkZWYg dW5zaWduZWQgaW50IF9faWRfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNv bmRzX3Q7Cgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Js a190Owp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoK CnR5cGVkZWYgdm9pZCAqIF9fdGltZXJfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6 ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIGxvbmcgaW50 IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNibGtjbnRf dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgaW50IF9fZnNmaWxjbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IGludCBfX2ZzZmlsY250NjRfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19zc2l6ZV90OwoKCgp0 eXBlZGVmIF9fb2ZmNjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90 Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9faW50cHRy X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CiMgMzIgIi91c3IvaW5j bHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5 cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRl ZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9f dV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRl ZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKIyA2MiAiL3Vz ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoK dHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoK Cgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90 OwoKCgoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKIyAxMDAgIi91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMyA0CnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90 IGlkX3Q7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKCnR5cGVkZWYgX19k YWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCgoKdHlwZWRl ZiBfX2tleV90IGtleV90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDc1ICIvdXNyL2luY2x1ZGUvdGlt ZS5oIiAzIDQKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKCgoKIyA5MyAiL3Vzci9pbmNs dWRlL3RpbWUuaCIgMyA0CnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDEwNSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMg MTM0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgMTQ3ICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvbGliNjQvZ2NjL3g4Nl82NC1zdXNlLWxp bnV4LzQuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0OCAiL3Vzci9pbmNsdWRlL3N5 cy90eXBlcy5oIiAyIDMgNAoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0 eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50 IHVpbnQ7CiMgMTk1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGlu dCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYg aW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVk ZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5 cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7 CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k ZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJp YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9p bnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18p KSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo X193b3JkX18pKSk7CiMgMjE3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEg Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzIDQKIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlh bi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzIDQKIyAzOCAi L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMgNAojIDYxICIvdXNyL2luY2x1ZGUvZW5kaWFu LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDEgMyA0CiMgMjgg Ii91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2Fw LmgiIDIgMyA0CiMgNjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzIDQKIyAyMTggIi91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMv c2VsZWN0LmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMgNAojIDMyICIvdXNyL2luY2x1 ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0 LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzIDQKdHlwZWRl ZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2ln bmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcg aW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0 LmgiIDIgMyA0CgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91 c3IvaW5jbHVkZS90aW1lLmgiIDEgMyA0CiMgMTIxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz IDQKc3RydWN0IHRpbWVzcGVjCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAgbG9uZyBp bnQgdHZfbnNlYzsKICB9OwojIDQ1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMg NAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMyA0CiMgNjkgIi91c3IvaW5j bHVkZS9iaXRzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1ldmFsCiAgewogICAgX190aW1lX3Qg dHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgNDcgIi91c3IvaW5j bHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0CgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vj b25kc190OwoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwojIDY3ICIvdXNyL2lu Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCgoKCiAgICBf X2ZkX21hc2sgX19mZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsK CgogIH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwojIDk5ICIv dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKCiMgMTA5ICIvdXNyL2luY2x1ZGUvc3lz L3NlbGVjdC5oIiAzIDQKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAq X19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVm ZHMsCiAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgIHN0cnVjdCB0 aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CiMgMTIxICIvdXNyL2luY2x1ZGUvc3lz L3NlbGVjdC5oIiAzIDQKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQg Kl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0 ZWZkcywKICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICBjb25z dCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICBjb25zdCBf X3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzayk7CgoKCiMgMjIxICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jv cy5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAzIDQKX19l eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgaW50IGdudV9kZXZfbWFqb3IgKHVuc2lnbmVk IGxvbmcgbG9uZyBpbnQgX19kZXYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGludCBnbnVfZGV2X21pbm9yICh1 bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50 IGdudV9kZXZfbWFrZWRldiAodW5zaWduZWQgaW50IF9fbWFqb3IsCiAgICAgICAgICAgIHVu c2lnbmVkIGludCBfX21pbm9yKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp OwojIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAojIDIzNSAiL3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwoK Cgp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNmaWxj bnRfdCBmc2ZpbGNudF90OwojIDI3MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzIDQKIyAyMyAiL3Vz ci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9i aXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0 eXBlcy5oIiAyIDMgNAojIDUwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIg MyA0CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwoKCnR5cGVkZWYgdW5p b24KewogIGNoYXIgX19zaXplWzU2XTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRf YXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfaW50ZXJuYWxfbGlzdAp7CiAg c3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9saXN0ICpfX3ByZXY7CiAgc3RydWN0IF9fcHRo cmVhZF9pbnRlcm5hbF9saXN0ICpfX25leHQ7Cn0gX19wdGhyZWFkX2xpc3RfdDsKIyA3NiAi L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAp0eXBlZGVmIHVuaW9uCnsK ICBzdHJ1Y3QgX19wdGhyZWFkX211dGV4X3MKICB7CiAgICBpbnQgX19sb2NrOwogICAgdW5z aWduZWQgaW50IF9fY291bnQ7CiAgICBpbnQgX19vd25lcjsKCiAgICB1bnNpZ25lZCBpbnQg X19udXNlcnM7CgoKCiAgICBpbnQgX19raW5kOwoKICAgIGludCBfX3NwaW5zOwogICAgX19w dGhyZWFkX2xpc3RfdCBfX2xpc3Q7CiMgMTAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFk dHlwZXMuaCIgMyA0CiAgfSBfX2RhdGE7CiAgY2hhciBfX3NpemVbNDBdOwogIGxvbmcgaW50 IF9fYWxpZ247Cn0gcHRocmVhZF9tdXRleF90OwoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBf X3NpemVbNF07CiAgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKCnR5 cGVkZWYgdW5pb24KewogIHN0cnVjdAogIHsKICAgIGludCBfX2xvY2s7CiAgICB1bnNpZ25l ZCBpbnQgX19mdXRleDsKICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIGlu dCBfX3RvdGFsX3NlcTsKICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIGlu dCBfX3dha2V1cF9zZXE7CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBp bnQgX193b2tlbl9zZXE7CiAgICB2b2lkICpfX211dGV4OwogICAgdW5zaWduZWQgaW50IF9f bndhaXRlcnM7CiAgICB1bnNpZ25lZCBpbnQgX19icm9hZGNhc3Rfc2VxOwogIH0gX19kYXRh OwogIGNoYXIgX19zaXplWzQ4XTsKICBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19h bGlnbjsKfSBwdGhyZWFkX2NvbmRfdDsKCnR5cGVkZWYgdW5pb24KewogIGNoYXIgX19zaXpl WzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgoKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNl X3Q7CgoKCgoKdHlwZWRlZiB1bmlvbgp7CgogIHN0cnVjdAogIHsKICAgIGludCBfX2xvY2s7 CiAgICB1bnNpZ25lZCBpbnQgX19ucl9yZWFkZXJzOwogICAgdW5zaWduZWQgaW50IF9fcmVh ZGVyc193YWtldXA7CiAgICB1bnNpZ25lZCBpbnQgX193cml0ZXJfd2FrZXVwOwogICAgdW5z aWduZWQgaW50IF9fbnJfcmVhZGVyc19xdWV1ZWQ7CiAgICB1bnNpZ25lZCBpbnQgX19ucl93 cml0ZXJzX3F1ZXVlZDsKICAgIGludCBfX3dyaXRlcjsKICAgIGludCBfX3NoYXJlZDsKICAg IHVuc2lnbmVkIGxvbmcgaW50IF9fcGFkMTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fcGFk MjsKCgogICAgdW5zaWduZWQgaW50IF9fZmxhZ3M7CiAgfSBfX2RhdGE7CiMgMTg3ICIvdXNy L2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0CiAgY2hhciBfX3NpemVbNTZdOwog IGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9yd2xvY2tfdDsKCnR5cGVkZWYgdW5pb24K ewogIGNoYXIgX19zaXplWzhdOwogIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9yd2xv Y2thdHRyX3Q7CgoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190 OwoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbMzJdOwogIGxvbmcgaW50IF9f YWxpZ247Cn0gcHRocmVhZF9iYXJyaWVyX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9f c2l6ZVs0XTsKICBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7CiMgMjcx ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCiMgMzIxICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20g KHVuc2lnbmVkIGludCBfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoK CgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIg Kl9fc3RhdGVidWYsCiAgIHNpemVfdCBfX3N0YXRlbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCmV4dGVy biBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1ZikgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgoK c3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3Qg KnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQg cmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07 CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3Qg X19idWYsCiAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0 IHJhbmRvbV9kYXRhICpfX2J1ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgpleHRlcm4gaW50IGluaXRz dGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVi dWYsCiAgIHNpemVfdCBfX3N0YXRlbGVuLAogICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVz dHJpY3QgX19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9y IChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgIHN0cnVjdCByYW5kb21f ZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKCmV4dGVy biBpbnQgcmFuZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRl cm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSk7CgoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3Nl ZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKCgoKZXh0ZXJuIGRvdWJs ZSBkcmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJu IGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0 IGludCBfX3hzdWJpWzNdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJh bmQ0OCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBsb25n IGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAq c2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10p IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQg c2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwog ICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2lu aXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQg ZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAog ICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRl cm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAg ICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBk b3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50 IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK ICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz XSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAog ICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp KTsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0 cmljdCBfX2J1ZmZlciwKICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9y dCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3Ry aWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19z ZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7 CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNd LAogICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK CmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwK ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7CgoKCgoKCgoKCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkg OwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bWFsbG9jX18pKSA7CgoKCgoKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19w dHIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKCmV4dGVybiB2b2lk IGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoK CmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMgNAojIDI1ICIv dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMgNAojIDEgIi91c3IvbGliNjQvZ2NjL3g4Nl82NC1z dXNlLWxpbnV4LzQuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI2ICIvdXNyL2luY2x1 ZGUvYWxsb2NhLmgiIDIgMyA0CgoKCgoKCgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3Qg X19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKIyA0OTggIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNp emVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRl X18gKChfX21hbGxvY19fKSkgOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9p ZCAqKl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIDsKCgoKCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4 dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoK CgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZv aWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4g dm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCiMgNTQzICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDMgNAoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19u YW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19j b25zdCBjaGFyICpfX25hbWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgpleHRlcm4gaW50IHB1 dGVudiAoY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHNldGVu diAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9f cmVwbGFjZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25z dCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKCgpl eHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsKIyA1ODMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpta3Rl bXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNTk0ICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDMgNApleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNjE0ICIvdXNyL2luY2x1ZGUv c3RkbGliLmgiIDMgNApleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIDsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKCgoKZXh0 ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5kKSA7CgojIDY2MiAiL3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f cmVzb2x2ZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIDsKCgoKCgoKdHlwZWRl ZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAq KTsKIyA2ODAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKCmV4dGVybiB2b2lkICpi c2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAg ICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2Nv bXBhcikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDUpKSkgOwoK CgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6 ZV90IF9fc2l6ZSwKICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDQpKSk7CiMgNjk5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMgNApleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKZXh0ZXJuIGxvbmcgaW50IGxh YnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKCgoKCgoKCgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAo aW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CmV4dGVybiBsZGl2X3QgbGRp diAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwoKIyA3 MzUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICplY3Z0IChkb3Vi bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAg ICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwoKCgoKZXh0ZXJuIGNo YXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj dCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7 CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg Y2hhciAqX19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAo bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJp Y3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkg OwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp dCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3Np Z24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJs ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSA7 CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwg Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwg NSkpKTsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs IGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQs IDUpKSk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBf X25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmlj dCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDMsIDQsIDUpKSk7CmV4dGVybiBpbnQgcWZjdnRfciAobG9uZyBkb3VibGUg X192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg c2l6ZV90IF9fbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsKCgoKCgoKCmV4dGVybiBpbnQg bWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKSA7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJp Y3QgX19wd2MsCiAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9f bikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgOwoKCmV4dGVybiBpbnQgd2N0b21i IChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0 IF9fcHdjcywKICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJz IChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0 IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsKCgoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25z ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpIDsKIyA4NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVy biBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19vZmxhZykgOwojIDg3NSAiL3Vzci9pbmNsdWRl L3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZn W10sIGludCBfX25lbGVtKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyA4OTEgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMyA0CgojIDQgInRlc3QtZGVidWcxLmMiIDIKIyAxICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMSAzIDQKIyAzMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKIyAx ICIvdXNyL2xpYjY0L2djYy94ODZfNjQtc3VzZS1saW51eC80LjMvaW5jbHVkZS9zdGRkZWYu aCIgMSAzIDQKIyAzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgNDUgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKc3RydWN0IF9JT19GSUxFOwoKCgp0eXBlZGVmIHN0cnVj dCBfSU9fRklMRSBGSUxFOwoKCgoKCiMgNjUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK dHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwojIDc1ICIvdXNyL2luY2x1ZGUvc3Rk aW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMyA0CiMgMzIgIi91c3Iv aW5jbHVkZS9saWJpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEg MyA0CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMyA0CiMgMSAiL3Vzci9saWI2 NC9nY2MveDg2XzY0LXN1c2UtbGludXgvNC4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMg MTYgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNs dWRlL3djaGFyLmgiIDEgMyA0CiMgNzggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKdHlw ZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewoKICAgIHVuc2lnbmVk IGludCBfX3djaDsKCgoKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21i c3RhdGVfdDsKIyAyMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMgNAoKdHlwZWRl ZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBf R19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0 YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA1MyAiL3Vzci9pbmNsdWRlL19HX2Nv bmZpZy5oIiAzIDQKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t b2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9f ICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2 X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkp OwojIDMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzIDQKIyA1MyAiL3Vzci9pbmNsdWRl L2xpYmlvLmgiIDMgNAojIDEgIi91c3IvbGliNjQvZ2NjL3g4Nl82NC1zdXNlLWxpbnV4LzQu My9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvdXNyL2xpYjY0L2djYy94ODZfNjQt c3VzZS1saW51eC80LjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGlu X3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAy IDMgNAojIDE3MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNApzdHJ1Y3QgX0lPX2p1bXBf dDsgc3RydWN0IF9JT19GSUxFOwojIDE4MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp0 eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3Ry dWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAg aW50IF9wb3M7CiMgMjAzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMyA0Cn07CgoKZW51bSBf X2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWws CiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNzEgIi91c3Iv aW5jbHVkZS9saWJpby5oIiAzIDQKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwoK CgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIq IF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lPX3dy aXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsK ICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpf SU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21h cmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2Zp bGVubzsKCgoKICBpbnQgX2ZsYWdzMjsKCiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1 bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNl dDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMTkg Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKICBfX29mZjY0X3QgX29mZnNldDsKIyAzMjgg Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19w YWQyOwogIHZvaWQgKl9fcGFkMzsKICB2b2lkICpfX3BhZDQ7CiAgc2l6ZV90IF9fcGFkNTsK CiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gNCAq IHNpemVvZiAodm9pZCAqKSAtIHNpemVvZiAoc2l6ZV90KV07Cgp9OwoKCnR5cGVkZWYgc3Ry dWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJu IHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9J T19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3Bs dXMgX0lPXzJfMV9zdGRlcnJfOwojIDM2NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp0 eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpf X2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9f d3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgIHNp emVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nv b2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19j bG9zZV9mbiAodm9pZCAqX19jb29raWUpOwojIDQxNiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi IDMgNApleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBf X3VmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAq LCBpbnQpOwojIDQ1OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNApleHRlcm4gaW50IF9J T19nZXRjIChfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2Ms IF9JT19GSUxFICpfX2ZwKTsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnAp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gaW50IF9JT19mZXJyb3Ig KF9JT19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVy biBpbnQgX0lPX3BlZWtjX2xvY2tlZCAoX0lPX0ZJTEUgKl9fZnApOwoKCgoKCmV4dGVybiB2 b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUg KF9JT19GSUxFICopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwojIDQ4OCAiL3Vz ci9pbmNsdWRlL2xpYmlvLmgiIDMgNApleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklM RSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICBfX2dudWNfdmFf bGlzdCwgaW50ICpfX3Jlc3RyaWN0KTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19G SUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgX19nbnVjX3Zh X2xpc3QpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9f c3NpemVfdCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICos IHNpemVfdCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBf X29mZjY0X3QsIGludCwgaW50KTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lP X0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3Vw X2FyZWEgKF9JT19GSUxFICopIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwojIDc2 ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyA4OSAiL3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDMgNAoKCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsKCgoKCiMgMTQxICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgi IDEgMyA0CiMgMTQyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKZXh0ZXJuIHN0 cnVjdCBfSU9fRklMRSAqc3RkaW47CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZG91dDsK ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3RkZXJyOwoKCgoKCgoKCgpleHRlcm4gaW50IHJl bW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKTsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2Nv bnN0IGNoYXIgKl9fbmV3KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoK CgoKCgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE4OCAiL3Vzci9pbmNs dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIDsKCgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3Ig KGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgOwojIDIwNiAiL3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBj aGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIDsKCgoKCgoKCgpl eHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoKZXh0ZXJuIGludCBmZmx1 c2ggKEZJTEUgKl9fc3RyZWFtKTsKCiMgMjMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0 CmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CiMgMjQ1ICIv dXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCmV4dGVybiBGSUxFICpmb3BlbiAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX21vZGVzKSA7CgoKCgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg OwojIDI3NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKIyAyODUgIi91c3IvaW5jbHVk ZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3Qg Y2hhciAqX19tb2RlcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgOwojIDMwNiAi L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUg Kl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgIGludCBf X21vZGVzLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoK CgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNo YXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgIHNpemVfdCBfX3NpemUpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUg Kl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKCgpleHRl cm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgIF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCgoKCmV4dGVybiBpbnQgcHJp bnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7CgpleHRlcm4g aW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSk7CgoKCgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0 IF9fYXJnKTsKCgoKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZyk7CgpleHRlcm4gaW50IHZzcHJp bnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpOwoKCgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBf X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVy biBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVu LAogICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3Zh X2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgojIDQwMCAiL3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpf X3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwgLi4uKSA7CgoKCgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX3MsCiAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y bWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwojIDQ0MyAiL3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDMgNAoKIyA1MDYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0 YyAoRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCk7Cgoj IDUzMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGdldGNfdW5sb2Nr ZWQgKEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lk KTsKIyA1NDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZ2V0Y191 bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGMg KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBG SUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKTsKCiMg NTc0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnB1dGNfdW5sb2Nr ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKCmV4dGVybiBpbnQgcHV0Y191 bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IHB1dGNoYXJf dW5sb2NrZWQgKGludCBfX2MpOwoKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3Ry ZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKTsKCgoK CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19u LCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsKCgoKCgoKZXh0ZXJuIGNoYXIg KmdldHMgKGNoYXIgKl9fcykgOwoKIyA2NTUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK CgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgpleHRlcm4gaW50IHB1dHMgKF9fY29u c3QgY2hhciAqX19zKTsKCgoKCgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUg Kl9fc3RyZWFtKTsKCgoKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmlj dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZv aWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgc2l6ZV90IF9f biwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsKCiMgNzA4ICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMyA0CmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3Qg X19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgIHNp emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgoKCgpleHRlcm4g aW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5j ZSk7CgoKCgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpl eHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKTsKCiMgNzQ0ICIvdXNyL2luY2x1 ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19v ZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKTsKCgoKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAo RklMRSAqX19zdHJlYW0pIDsKIyA3NjMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoK CgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9z X3QgKl9fcmVzdHJpY3QgX19wb3MpOwoKCgoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpf X3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKTsKIyA3ODYgIi91c3IvaW5jbHVkZS9z dGRpby5oIiAzIDQKCiMgNzk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKZXh0ZXJu IHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKTsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVh bSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgOwoKCgoKZXh0ZXJuIHZvaWQgY2xl YXJlcnJfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKTsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tl ZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIDsKCgoK CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKTsKCgoKCgoKIyAx ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMgNAojIDI3ICIvdXNyL2lu Y2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAzIDQKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0 ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwojIDgyNSAiL3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19z dHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIDsKCgoKCmV4dGVybiBpbnQg ZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSkgOwojIDg0NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gRklM RSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9k ZXMpIDsKCgoKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4 dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOwojIDg4NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gdm9pZCBm bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18pKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJ TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKIyA5MTQgIi91 c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCiMgNSAidGVzdC1kZWJ1ZzEuYyIgMgojIDI1ICJ0 ZXN0LWRlYnVnMS5jIgpzdGF0aWMgY29uc3QgaW50IFhFTk9fT1BUX0RFQlVHX05VQ0xFVVMg PSAwOyBzdGF0aWMgY29uc3QgaW50IENPTkZJR19YRU5PX09QVF9ERUJVR19OVUNMRVVTMCA9 IDA7CgppbnQgbWFpbih2b2lkKQp7CiAgICAgICAgaWYgKCh5MCA+IFhFTk9fT1BUX0RFQlVH X05VQ0xFVVMpKQogICAgICAgICAgICAgICAgcHJpbnRmKCJIZWxsb1xuIik7Cn0K --------------040600040401010203010208-- --------------enig8D3F06680E6F12A16F81B5FF Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iEYEARECAAYFAkvMow8ACgkQitSsb3rl5xQHowCgwGMKUdlbYs9EmPHIRJy48jhb pJkAoIfZRqQn7fGsgIM2+sYnM4bFrAkx =Zw55 -----END PGP SIGNATURE----- --------------enig8D3F06680E6F12A16F81B5FF--