From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F2CBC3F2CD for ; Fri, 28 Feb 2020 17:28:36 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 817F724699 for ; Fri, 28 Feb 2020 17:28:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="T5UB7VUp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 817F724699 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7jRC-0006MO-Fw for qemu-devel@archiver.kernel.org; Fri, 28 Feb 2020 12:28:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58838) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7imw-0006or-UJ for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:47:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7imm-00007M-HM for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:58 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:13250) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j7imk-0005Uz-Kt for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:46:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1582908406; x=1614444406; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2JjCUdZgnuBXOkGwMV2cpHxEVEc/DLJqu4XeUh4WfIU=; b=T5UB7VUpBKohciFo4vnIGQ1w2znpmDuZ4xTKUpPqmCIFglT6d1zB5Wej x18uWVKm/jPFVEW0AKl2/2xFEOCfk8h/7KIasl366UWzuXua5pPXj50oo fpPFWbfx7MWRkmxZmzkHxYcMSFp5mnUEXCmELBltSNrimpDbnnDOhaWyD w=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-01.qualcomm.com with ESMTP; 28 Feb 2020 08:44:34 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg02-sd.qualcomm.com with ESMTP; 28 Feb 2020 08:44:33 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 3D876F0B; Fri, 28 Feb 2020 10:44:33 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 57/67] Hexagon HVX import semantics Date: Fri, 28 Feb 2020 10:43:53 -0600 Message-Id: <1582908244-304-58-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> References: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.38 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsZXh0LmlkZWYgICAgICAgICAgIFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgZXh0ZW5zaW9u cwogICAgaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgICAgICAgIEhWWCBpbnN0cnVjdGlvbiBkZWZp bml0aW9ucwoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMu Y29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmICAgIHwgICAyNSAr CiB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYgICB8ICAgIDEgKwogdGFyZ2V0 L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgfCAyNzgwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI4MDYgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmCiBjcmVh dGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYKCmRp ZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZiBiL3RhcmdldC9o ZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjI2ZGI3NzQKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRl ZC9hbGxleHQuaWRlZgpAQCAtMCwwICsxLDI1IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5 LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisg KiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8q CisgKiBUb3AgbGV2ZWwgZmlsZSBmb3IgYWxsIGluc3RydWN0aW9uIHNldCBleHRlbnNpb25zCisg Ki8KKyNkZWZpbmUgRVhUTkFNRSBtbXZlYworI2RlZmluZSBFWFRTVFIgIm1tdmVjIgorI2luY2x1 ZGUgIm1tdmVjL2V4dC5pZGVmIgorI3VuZGVmIEVYVE5BTUUKKyN1bmRlZiBFWFRTVFIKZGlmZiAt LWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZiBiL3RhcmdldC9oZXhh Z29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZgppbmRleCBkMmYxM2EyLi4wM2YzZjFiIDEwMDY0NAot LS0gYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYKKysrIGIvdGFyZ2V0L2hl eGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmCkBAIC04OSwzICs4OSw0IEBACiAjaW5jbHVkZSAi c2hpZnQuaWRlZiIKICNpbmNsdWRlICJzeXN0ZW0uaWRlZiIKICNpbmNsdWRlICJzdWJpbnNucy5p ZGVmIgorI2luY2x1ZGUgImFsbGV4dC5pZGVmIgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tbXZlYy9l eHQuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmM2ZTlmCi0tLSAv ZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYKQEAg LTAsMCArMSwyNzgwIEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0g SW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiAgICAgSE9ZQTogTVVMVEkgTUVESUEgSU5TVFJVQ0lUT05TCisgKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBFWFRJTlNOCisjZGVmaW5lIEVYVElOU04g UTZJTlNOCisjZGVmaW5lIF9fU0VMRl9ERUZfRVhUSU5TTiAxCisjZW5kaWYKKworI2lmbmRlZiBO T19NTVZFQworCisjZGVmaW5lIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpIFwKK3sgXAor ICAgIGZISURFKGludCBpOykgXAorICAgIGZWRk9SRUFDSChXSURUSCwgaSkge1wKKyAgICAgICAg Q09ERSA7XAorICAgIH0gXAorfQorCisKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fQU5ZX1NM T1QoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5U QVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJD RSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKworCisjZGVm aW5lIElURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVND UixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKFdJRFRILFRBRyxTWU5UQVgyLERFU0NS LENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRyMjX2FsdCwgU1lOVEFYLCBTWU5UQVgy KQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcs U1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQV9EVixBX05PVEVfQU5ZMl9SRVNPVVJDRSksICBcCitE RVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKworI2RlZmluZSBJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVND UixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZ TlRBWDIsREVTQ1IsQ09ERSkgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5U QVgsIFNZTlRBWDIpCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1QoV0lEVEgs VEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMsQV9OT1RFX1NISUZUX1JFU09VUkNFKSwgIFwK K0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworCisKKyNkZWZpbmUgSVRF UkFUT1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RF KSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkks QV9DVklfVlMsQV9DVklfVlZfTEFURSxBX05PVEVfU0hJRlRfUkVTT1VSQ0UpLCAgXAorREVTQ1Is IERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04y X1NISUZUX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJB VE9SX0lOU05fU0hJRlRfU0xPVChXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZf Q1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJ VEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVChXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwK K0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9WUCxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09E RShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKFdJ RFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX1BFUk1V VEVfU0xPVChXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkco VjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVSQVRPUl9JTlNO X1BFUk1VVEVfU0xPVF9ERVAoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNO KFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9FWFRFTlNJT04s QV9DVkksQV9DVklfVlAsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UpLAorCisKKyNkZWZpbmUgSVRF UkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RFUChXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVT Q1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfREVQKFdJRFRILFRBRyxTWU5U QVgyLERFU0NSLENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRyMjX2FsdCwgU1lOVEFY LCBTWU5UQVgyKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9W RUMoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5U QVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMsQV9OT1RFX1BFUk1VVEVf UkVTT1VSQ0UsQV9OT1RFX1NISUZUX1JFU09VUkNFKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9D T0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9E T1VCTEVfVkVDX0RFUChXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZf IyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX05PVEVfREVQUkVDQVRFRCxBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUF9WUyxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSxBX05PVEVfU0hJRlRfUkVTT1VS Q0UpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5l IElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgs U1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVf VkVDKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8j I1RBRyMjX2FsdCwgU1lOVEFYLCBTWU5UQVgyKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZ X1NMT1QoV0lEVEgsVEFHLCBTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywg U1lOVEFYLCBcCitBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZYLEFfTk9URV9NUFlf UkVTT1VSQ0UpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisj ZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURShXSURUSCxUQUcsIFNZTlRBWCxERVND UixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIFwKK0FUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVlgsQV9OT1RFX01QWV9SRVNPVVJDRSxBX0NWSV9MQVRFKSwgIFwKK0RF U0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9J TlNOMl9NUFlfU0xPVChXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRF UkFUT1JfSU5TTl9NUFlfU0xPVChXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZf Q1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJ VEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9MQVRFKFdJRFRILFRBRywgU1lOVEFYLFNZTlRBWDIsREVT Q1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9MQVRFKFdJRFRILFRBRywgU1lOVEFY MixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwg U1lOVEFYMikKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9VQkxFX1ZFQyhX SURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwg QVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EVixBX05PVEVfTVBZRFZfUkVTT1VS Q0UpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5l IElURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWCxTWU5U QVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9VQkxFX1ZFQyhXSURU SCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNUQUcjI19h bHQsIFNZTlRBWCwgU1lOVEFYMikKKworCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDMihXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAor RVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJ X1ZYX0RWLEFfQ1ZJX1ZYX1ZTUkMwX0lTX0RTVCxBX05PVEVfTVBZRFZfUkVTT1VSQ0UpLCBERVND UiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpIFwKK0RFRl9DVklfTUFQUElORyhWNl8j I1RBRyMjX2FsdCwgU1lOVEFYLCBTWU5UQVgyKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fU0xP VDJfRE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZf IyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EVixBX0NW SV9FQVJMWSxBX1JFU1RSSUNUX1NMT1QyT05MWSxBX05PVEVfTVBZRFZfUkVTT1VSQ0UpLCBERVND UiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgVkVDX0RFRl9NQVBQ SU5HMihUQUcsIFNZTlRBWDFfbWFwcGVkLCBTWU5UQVgxLCBTWU5UQVgyX21hcHBlZCwgU1lOVEFY MikgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHLCBTWU5UQVgxX21hcHBlZCwgU1lOVEFYMSkg XAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgyX21hcHBlZCwgU1lOVEFY MV9tYXBwZWQpCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1ZISVNUTElLRShXSURUSCxUQUcs U1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV80U0xPVCxBX0NWSV9SRVFVSVJFU19UTVBMT0FEKSwgIFwK K0RFU0NSLCBmSElERShtbXZlY3Rvcl90IGlucHV0OykgaW5wdXQgPSBmVE1QVkRBVEEoKTsgRE9f Rk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKworCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorKgorKiBNTVZFQ1RPUiBNRU1PUlkgT1BFUkFUSU9OUyAtIE5PIE5B UEFMSSBWMQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNk ZWZpbmUgSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZ TlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9F WFRFTlNJT04sQV9DVkksQV9DVklfVlhfRFYsQV9OT1RFX01QWURWX1JFU09VUkNFLEFfTk9URV9O T05BUEFMSVYxKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKwor I2RlZmluZSBJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFH LFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9V QkxFX1ZFQ19OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpIFwKK0RFRl9DVklfTUFQ UElORyhWNl8jI1RBRyMjX2FsdCwgU1lOVEFYLCBTWU5UQVgyKQorCisKKworI2RlZmluZSBJVEVS QVRPUl9JTlNOX1NISUZUX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwK K0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9WUyxBX05PVEVfU0hJRlRfUkVTT1VSQ0UsQV9OT1RFX05PTkFQQUxJVjEpLCAgXAorREVTQ1Is IERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04y X1NISUZUX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAor SVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09E RSkgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIpCisK KworI2RlZmluZSBJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxE RVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSxBX05PVEVfTk9OQVBBTElWMSks ICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRF UkFUT1JfSU5TTjJfQU5ZX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1Is Q09ERSkgXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERF U0NSLENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRyMjX2FsdCwgU1lOVEFYLCBTWU5U QVgyKQorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9OT1YxKFdJRFRILFRBRywg U1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgXAorQVRUUklC UyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWCxBX05PVEVfTVBZX1JFU09VUkNFLEFfTk9URV9O T05BUEFMSVYxKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKwor I2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgs REVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9OT05BUEFM SVYxKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmlu ZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RUX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxTWU5U QVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UKFdJRFRILFRBRyxT WU5UQVgyLERFU0NSLENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRyMjX2FsdCwgU1lO VEFYLCBTWU5UQVgyKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RFUFRf Tk9WMShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZ TlRBWCwgQVRUUklCUyhBX05PVEVfREVQUkVDQVRFRCxBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9W UCxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSxBX05PVEVfTk9OQVBBTElWMSksCisKKworI2RlZmlu ZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfREVQVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgs U1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ERVBfTk9W MShXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNU QUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1V VEVfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitF WFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklf VlBfVlMsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX1NISUZUX1JFU09VUkNFLEFfTk9U RV9OT05BUEFMSVYxKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkK KworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDX0RFUFRfTk9W MShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRB WCwgQVRUUklCUyhBX05PVEVfREVQUkVDQVRFRCxBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUF9W UyxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSxBX05PVEVfU0hJRlRfUkVTT1VSQ0UsQV9OT1RFX05P TkFQQUxJVjEpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisj ZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgs VEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fUEVSTVVURV9T TE9UX0RPVUJMRV9WRUNfTk9WMShXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZf Q1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBO QVJST1dJTkdfU0hJRlRfTk9WMShJVEVSU0laRSxUQUcsRFNUTSxEU1RUWVBFLFNSQ1RZUEUsU1lO T1BUUyxTQVRGVU5DLFJOREZVTkMsU0hBTVRNQVNLKSBcCitJVEVSQVRPUl9JTlNOX1NISUZUX1NM T1RfTk9WMShJVEVSU0laRSxUQUcsIFwKKyJWZDMyLiIgI0RTVFRZUEUgIj12YXNyKFZ1MzIuIiAj U1JDVFlQRSAiLFZ2MzIuIiAjU1JDVFlQRSAiLFJ0OCkiICNTWU5PUFRTLCBcCisiVmVjdG9yIHNo aWZ0IHJpZ2h0IGFuZCBzaHVmZmxlIiwgXAorCWZISURFKGZSVDhOT1RFKCkpXAorICAgIGZISURF KGludCApc2hhbXQgPSBSdFYgJiBTSEFNVE1BU0s7IFwKKyAgICBEU1RNKDAsVmRWLlNSQ1RZUEVb aV0sU0FURlVOQyhSTkRGVU5DKFZ2Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkpOyBcCisg ICAgRFNUTSgxLFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5ERlVOQyhWdVYuU1JDVFlQRVtpXSxz aGFtdCkgPj4gc2hhbXQpKSkKKworI2RlZmluZSBNTVZFQ19BVkdTX05PVjEoVFlQRSxUWVBFMixE RVNDUiwgV0lEVEgsIERFU1QsU1JDKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX05PVjEoV0lE VEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICAiVmQzMj12YXZnIlRZUEUyIihW dTMyLFZ2MzIpIiwgICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIu IiNTUkMiKSIsICAgICAgICAgICJWZWN0b3IgQXZlcmFnZSAiREVTQ1IsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBmVkFWR1MoICAgICAgIFdJRFRI LCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX05P VjEoV0lEVEgsdmF2ZyMjVFlQRSMjcm5kLCAgICAgICAgICAgICAgICAgICAiVmQzMj12YXZnIlRZ UEUyIihWdTMyLFZ2MzIpOnJuZCIsICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNTUkMi LFZ2MzIuIiNTUkMiKTpybmQiLCAgICAgICJWZWN0b3IgQXZlcmFnZSAlIFJvdW5kIkRFU0NSLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBmVkFWR1NSTkQoICAg IFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9T TE9UX05PVjEoV0lEVEgsdm5hdmcjI1RZUEUsICAgICAgICAgICAgICAgICAgICAgICAiVmQzMj12 bmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAgICAgICAgIlZkMzIuIiNERVNUIj12bmF2ZyhWdTMy LiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgICJWZWN0b3IgTmVnYXRpdmUgQXZlcmFnZSAi REVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBmVk5BVkdT KCAgICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpCisKKyAgI2RlZmluZSBNTVZF Q19BVkdVX05PVjEoVFlQRSxUWVBFMixERVNDUiwgV0lEVEgsIERFU1QsU1JDKVwKK0lURVJBVE9S X0lOU04yX0FOWV9TTE9UX05PVjEoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAg ICAgICAiVmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAiVmQzMi4iI0RFU1Qi PXZhdmcoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgICAgICJWZWN0b3IgQXZlcmFnZSAi REVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSA9 IGZWQVZHVSggICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9J TlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAg ICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgIlZkMzIuIiNERVNUIj12 YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBS b3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBm VkFWR1VSTkQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVNT1JZIE9QRVJBVElP TlMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgTU1W RUNfRUFDSF9FQShUQUcsREVTQ1IsQVRUUklCLE5ULFNZTlRBWEEsU1lOVEFYQixCRUgpIFwKK0VY VElOU04oVjZfIyNUQUcjI19waSwgICAgICBTWU5UQVhBICIoUngzMisrI3MzKSIgTlQgU1lOVEFY QixBVFRSSUIsREVTQ1IseyBmRUFfUkVHKFJ4Vik7IEJFSDsgZlBNX0koUnhWLFZFQ19TQ0FMRShz aVYpKTsgfSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX2FpLCAgICAgIFNZTlRBWEEgIihSdDMyKyNz NCkiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsgZkVBX1JJKFJ0VixWRUNfU0NBTEUoc2lWKSk7 IEJFSDt9KSBcCitFWFRJTlNOKFY2XyMjVEFHIyNfcHB1LCAgICAgIFNZTlRBWEEgIihSeDMyKytN dTIpIiBOVCBTWU5UQVhCLEFUVFJJQixERVNDUix7IGZFQV9SRUcoUnhWKTsgQkVIOyBmUE1fTShS eFYsTXVWKTsgfSkgXAorCisKKyNkZWZpbmUgTU1WRUNfQ09ORF9FQUNIX0VBX1RSVUUoVEFHLERF U0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpIFwKK0VYVElOU04oVjZf IyNUQUcjI19wcmVkX3BpLCAgICAgICJpZiAoIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngz MisrI3MzKSIgTlQgU1lOVEFYQiwgQVRUUklCLERFU0NSLCB7IGlmIChmTFNCT0xEKFNZTlRBWFAj I1YpKSB7IGZFQV9SRUcoUnhWKTsgQkVIOyBmUE1fSShSeFYsc2lWKmZWRUNTSVpFKCkpOyB9IGVs c2Uge0NBTkNFTDt9fSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX3ByZWRfYWksICAgICAgImlmICgi ICNTWU5UQVhQICI0KSAiIFNZTlRBWEEgIihSdDMyKyNzNCkiIE5UIFNZTlRBWEIsIEFUVFJJQixE RVNDUiwgIHsgaWYgKGZMU0JPTEQoU1lOVEFYUCMjVikpIHsgZkVBX1JJKFJ0VixzaVYqZlZFQ1NJ WkUoKSk7IEJFSDt9IGVsc2Uge0NBTkNFTDt9fSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX3ByZWRf cHB1LCAgICAgImlmICgiICNTWU5UQVhQICI0KSAiIFNZTlRBWEEgIihSeDMyKytNdTIpIiBOVCBT WU5UQVhCLEFUVFJJQixERVNDUiwgIHsgaWYgKGZMU0JPTEQoU1lOVEFYUCMjVikpIHsgZkVBX1JF RyhSeFYpOyBCRUg7IGZQTV9NKFJ4VixNdVYpOyB9IGVsc2Uge0NBTkNFTDt9fSkgXAorCisjZGVm aW5lIE1NVkVDX0NPTkRfRUFDSF9FQV9GQUxTRShUQUcsREVTQ1IsQVRUUklCLE5ULFNZTlRBWEEs U1lOVEFYQixTWU5UQVhQLEJFSCkgXAorRVhUSU5TTihWNl8jI1RBRyMjX25wcmVkX3BpLCAgICAg ImlmICghIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngzMisrI3MzKSIgTlQgU1lOVEFYQixB VFRSSUIsREVTQ1IseyBpZiAoZkxTQk9MRE5PVChTWU5UQVhQIyNWKSkgeyBmRUFfUkVHKFJ4Vik7 IEJFSDsgZlBNX0koUnhWLHNpVipmVkVDU0laRSgpKTsgfSBlbHNlIHtDQU5DRUw7fX0pIFwKK0VY VElOU04oVjZfIyNUQUcjI19ucHJlZF9haSwgICAgICJpZiAoISIgI1NZTlRBWFAgIjQpICIgU1lO VEFYQSAiKFJ0MzIrI3M0KSIgTlQgU1lOVEFYQixBVFRSSUIsREVTQ1IsIHsgaWYgKGZMU0JPTERO T1QoU1lOVEFYUCMjVikpIHsgZkVBX1JJKFJ0VixzaVYqZlZFQ1NJWkUoKSk7IEJFSDt9IGVsc2Ug e0NBTkNFTDt9fSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX25wcmVkX3BwdSwgICAgImlmICghIiAj U1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngzMisrTXUyKSIgTlQgU1lOVEFYQixBVFRSSUIsREVT Q1IseyBpZiAoZkxTQk9MRE5PVChTWU5UQVhQIyNWKSkgeyBmRUFfUkVHKFJ4Vik7IEJFSDsgZlBN X00oUnhWLE11Vik7IH0gZWxzZSB7Q0FOQ0VMO319KQorCisjZGVmaW5lIE1NVkVDX0NPTkRfRUFD SF9FQShUQUcsREVTQ1IsQVRUUklCLE5ULFNZTlRBWEEsU1lOVEFYQixTWU5UQVhQLEJFSCkgXAor TU1WRUNfQ09ORF9FQUNIX0VBX1RSVUUoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRB WEIsU1lOVEFYUCxCRUgpIFwKK01NVkVDX0NPTkRfRUFDSF9FQV9GQUxTRShUQUcsREVTQ1IsQVRU UklCLE5ULFNZTlRBWEEsU1lOVEFYQixTWU5UQVhQLEJFSCkKKworCisjZGVmaW5lIFZFQ19TQ0FM RShYKSBYKmZWRUNTSVpFKCkKKworCisjZGVmaW5lIE1NVkVDX0xEKFRBRyxERVNDUixBVFRSSUIs TlQpIE1NVkVDX0VBQ0hfRUEoVEFHLERFU0NSLEFUVFJJQixOVCwiVmQzMj12bWVtIiwiIixmTE9B RE1NVihFQSxWZFYpKQorI2RlZmluZSBNTVZFQ19MREMoVEFHLERFU0NSLEFUVFJJQixOVCkgTU1W RUNfRUFDSF9FQShUQUcjI19jdXIsREVTQ1IsQVRUUklCLE5ULCJWZDMyLmN1cj12bWVtIiwiIixm TE9BRE1NVihFQSxWZFYpKQorI2RlZmluZSBNTVZFQ19MRFQoVEFHLERFU0NSLEFUVFJJQixOVCkg TU1WRUNfRUFDSF9FQShUQUcjI190bXAsREVTQ1IsQVRUUklCLE5ULCJWZDMyLnRtcD12bWVtIiwi IixmTE9BRE1NVihFQSxWZFYpKQorI2RlZmluZSBNTVZFQ19MRFUoVEFHLERFU0NSLEFUVFJJQixO VCkgTU1WRUNfRUFDSF9FQShUQUcsREVTQ1IsQVRUUklCLE5ULCJWZDMyPXZtZW11IiwiIixmTE9B RE1NVlUoRUEsVmRWKSkKKworCisjZGVmaW5lIE1NVkVDX1NUUShUQUcsREVTQ1IsQVRUUklCLE5U KSBcCitNTVZFQ19FQUNIX0VBKFRBRyMjX3FwcmVkLERFU0NSLEFUVFJJQixOVCwiaWYgKFF2NCkg dm1lbSIsIj1WczMyIixmU1RPUkVNTVZRKEVBLFZzVixRdlYpKSBcCitNTVZFQ19FQUNIX0VBKFRB RyMjX25xcHJlZCxERVNDUixBVFRSSUIsTlQsImlmICghUXY0KSB2bWVtIiwiPVZzMzIiLGZTVE9S RU1NVk5RKEVBLFZzVixRdlYpKQorCitERUZfQ1ZJX01BUFBJTkcoVjZfc3R1cDAsICAiaWYgKFB2 NCkgdm1lbXUoUnQzMik9VnMzMiIsICAiaWYgKFB2NCkgdm1lbXUoUnQzMisjMCk9VnMzMiIpCitE RUZfQ1ZJX01BUFBJTkcoVjZfc3R1bnAwLCAiaWYgKCFQdjQpIHZtZW11KFJ0MzIpPVZzMzIiLCAg ImlmICghUHY0KSB2bWVtdShSdDMyKyMwKT1WczMyIikKKworCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIE1BUFBJ TkcgRk9SIFZNRU1zCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEFUVFJfVk1FTSBBX0VYVEVOU0lPTixB X0NWSSxBX0NWSV9WTSxBX05PVEVfVk1FTSxBX05PVEVfQU5ZX1JFU09VUkNFLEFfVk1FTQorI2Rl ZmluZSBBVFRSX1ZNRU1VIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNLEFfTk9URV9WTUVNLEFf Tk9URV9QRVJNVVRFX1JFU09VUkNFLEFfQ1ZJX1ZQLEFfVk1FTVUKKworCitNTVZFQ19MRCh2TDMy YiwgICJBbGlnbmVkIFZlY3RvciBMb2FkIiwgICAgICAgIEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9B RCxBX0NWSV9WQSksKQorTU1WRUNfTERDKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQgQ3Vy IiwJQVRUUklCUyhBVFRSX1ZNRU0sQV9MT0FELEFfQ1ZJX05FVyxBX0NWSV9WQSksKQorTU1WRUNf TERUKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQgVG1wIiwJQVRUUklCUyhBVFRSX1ZNRU0s QV9MT0FELEFfQ1ZJX1RNUCksKQorCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmIsIkNvbmRpdGlv bmFsIEFsaWduZWQgVmVjdG9yIExvYWQiLEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NWSV9W QSksLCJWZDMyPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9F QSh2TDMyYl9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIixBVFRSSUJT KEFUVFJfVk1FTSxBX0xPQUQsQV9DVklfVkEsQV9DVklfTkVXKSwsIlZkMzIuY3VyPXZtZW0iLCxQ dixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl90bXAsIkNvbmRp dGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgVG1wIixBVFRSSUJTKEFUVFJfVk1FTSxBX0xPQUQs QV9DVklfVE1QKSwsIlZkMzIudG1wPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKKworTU1W RUNfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9WTUVN LEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCwidm1lbSIsIj1WczMyIixm U1RPUkVNTVYoRUEsVnNWKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBWZWN0 b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFks QV9DVklfVkEpLCwidm1lbSIsIj1WczMyIixQdixmU1RPUkVNTVYoRUEsVnNWKSkKKworCitNTVZF Q19TVFEodlMzMmIsICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLCAgICAgIEFUVFJJQlMoQVRUUl9W TUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCkKKworTU1WRUNfTERV KHZMMzJVYiwgIlVuYWxpZ25lZCBWZWN0b3IgTG9hZCIsICAgICBBVFRSSUJTKEFUVFJfVk1FTVUs QV9MT0FELEFfUkVTVFJJQ1RfTk9TTE9UMSksKQorCitNTVZFQ19FQUNIX0VBKHZTMzJVYiwiVW5h bGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRSX1ZNRU1VLEFfU1RPUkUsQV9SRVNUUklD VF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLGZTVE9SRU1NVlUoRUEsVnNWKSkKKworTU1WRUNf Q09ORF9FQUNIX0VBKHZTMzJVYiwiVW5hbGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRS X1ZNRU1VLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLFB2LGZT VE9SRU1NVlUoRUEsVnNWKSkKKworTU1WRUNfRUFDSF9FQSh2UzMyYl9uZXcsIkFsaWduZWQgVmVj dG9yIFN0b3JlIE5ldyIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9ORVcsQV9SRVNU UklDVF9TSU5HTEVfTUVNX0ZJUlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkp LCwidm1lbSIsIj1PczgubmV3IixmU1RPUkVNTVYoRUEsZk5FV1ZSRUcoT3NOKSkpCisKKy8vIFY2 NSBzdG9yZSByZWxhc2UsIHplcm8gYnl0ZSBzdG9yZQorTU1WRUNfRUFDSF9FQSh2UzMyYl9zcmxz LCJBbGlnbmVkIFZlY3RvciBTY2F0dGVyIFJlbGVhc2UiLEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RP UkUsQV9DVklfU0NBVFRFUl9SRUxFQVNFLEFfQ1ZJX05FVyxBX1JFU1RSSUNUX1NMT1QwT05MWSks LCJ2bWVtIiwiOnNjYXR0ZXJfcmVsZWFzZSIsZlNUT1JFUkVMRUFTRShFQSwwKSkKKworCisKK01N VkVDX0NPTkRfRUFDSF9FQSh2UzMyYl9uZXcsIkFsaWduZWQgVmVjdG9yIFN0b3JlIE5ldyIsQVRU UklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9ORVcsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJ UlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCwidm1lbSIsIj1PczgubmV3 IixQdixmU1RPUkVNTVYoRUEsZk5FV1ZSRUcoT3NOKSkpCisKKworLy8gTG9hZHMKK0RFRl9DVklf TUFQUElORyhWNl9sZDAsICAgIlZkMzI9dm1lbShSdDMyKSIsICAiVmQzMj12bWVtKFJ0MzIrIzAp IikKK0RFRl9DVklfTUFQUElORyhWNl9sZHUwLCAgIlZkMzI9dm1lbXUoUnQzMikiLCAiVmQzMj12 bWVtdShSdDMyKyMwKSIpCisKK0RFRl9DVklfTUFQUElORyhWNl9sZHAwLCAgICJpZiAoUHY0KSBW ZDMyPXZtZW0oUnQzMikiLCAgImlmIChQdjQpIFZkMzI9dm1lbShSdDMyKyMwKSIpCitERUZfQ1ZJ X01BUFBJTkcoVjZfbGRucDAsICAiaWYgKCFQdjQpIFZkMzI9dm1lbShSdDMyKSIsICAiaWYgKCFQ djQpIFZkMzI9dm1lbShSdDMyKyMwKSIpCitERUZfQ1ZJX01BUFBJTkcoVjZfbGRjcDAsICAiaWYg KFB2NCkgVmQzMi5jdXI9dm1lbShSdDMyKSIsICJpZiAoUHY0KSBWZDMyLmN1cj12bWVtKFJ0MzIr IzApIikKK0RFRl9DVklfTUFQUElORyhWNl9sZHRwMCwgICJpZiAoUHY0KSBWZDMyLnRtcD12bWVt KFJ0MzIpIiwgImlmIChQdjQpIFZkMzIudG1wPXZtZW0oUnQzMisjMCkiKQorREVGX0NWSV9NQVBQ SU5HKFY2X2xkY25wMCwgICJpZiAoIVB2NCkgVmQzMi5jdXI9dm1lbShSdDMyKSIsICJpZiAoIVB2 NCkgVmQzMi5jdXI9dm1lbShSdDMyKyMwKSIpCitERUZfQ1ZJX01BUFBJTkcoVjZfbGR0bnAwLCAg ImlmICghUHY0KSBWZDMyLnRtcD12bWVtKFJ0MzIpIiwgImlmICghUHY0KSBWZDMyLnRtcD12bWVt KFJ0MzIrIzApIikKKworCisKKworLy8gU3RvcmVzCitERUZfQ1ZJX01BUFBJTkcoVjZfc3QwLCAg ICAidm1lbShSdDMyKT1WczMyIiwgICAgICJ2bWVtKFJ0MzIrIzApPVZzMzIiKQorREVGX0NWSV9N QVBQSU5HKFY2X3N0bjAsICAgInZtZW0oUnQzMik9T3M4Lm5ldyIsICAidm1lbShSdDMyKyMwKT1P czgubmV3IikKK0RFRl9DVklfTUFQUElORyhWNl9zdHEwLCAgICJpZiAoUXY0KSB2bWVtKFJ0MzIp PVZzMzIiLCAgICAgImlmIChRdjQpIHZtZW0oUnQzMisjMCk9VnMzMiIpCitERUZfQ1ZJX01BUFBJ TkcoVjZfc3RucTAsICAiaWYgKCFRdjQpIHZtZW0oUnQzMik9VnMzMiIsICAgICAiaWYgKCFRdjQp IHZtZW0oUnQzMisjMCk9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3RwMCwgICAiaWYgKFB2 NCkgdm1lbShSdDMyKT1WczMyIiwgICAgICJpZiAoUHY0KSB2bWVtKFJ0MzIrIzApPVZzMzIiKQor REVGX0NWSV9NQVBQSU5HKFY2X3N0bnAwLCAgImlmICghUHY0KSB2bWVtKFJ0MzIpPVZzMzIiLCAg ICAgImlmICghUHY0KSB2bWVtKFJ0MzIrIzApPVZzMzIiKQorCisKK0RFRl9DVklfTUFQUElORyhW Nl9zdHUwLCAgICJ2bWVtdShSdDMyKT1WczMyIiwgICJ2bWVtdShSdDMyKyMwKT1WczMyIikKKwor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVN T1JZIE9QRVJBVElPTlMgLSBOT04gVEVNUE9SQUwKKyoKKyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKyNkZWZpbmUgQVRUUl9WTUVNX05UIEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJX1ZNLEFfTk9URV9WTUVNLEFfTlRfVk1FTSxBX05PVEVfTlRfVk1FTSxBX05PVEVfQU5ZX1JF U09VUkNFLEFfVk1FTQorCitNTVZFQ19FQUNIX0VBKHZTMzJiX250LCJBbGlnbmVkIFZlY3RvciBT dG9yZSAtIE5vbiB0ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX1JFU1RS SUNUX1NMT1QwT05MWSxBX0NWSV9WQSksIjpudCIsInZtZW0iLCI9VnMzMiIsZlNUT1JFTU1WKEVB LFZzVikpCitNTVZFQ19DT05EX0VBQ0hfRUEodlMzMmJfbnQsIkFsaWduZWQgVmVjdG9yIFN0b3Jl IC0gTm9uIHRlbXBvcmFsIixBVFRSSUJTKEFUVFJfVk1FTV9OVCxBX1NUT1JFLEFfUkVTVFJJQ1Rf U0xPVDBPTkxZLEFfQ1ZJX1ZBKSwiOm50Iiwidm1lbSIsIj1WczMyIixQdixmU1RPUkVNTVYoRUEs VnNWKSkKKworTU1WRUNfRUFDSF9FQSh2UzMyYl9udF9uZXcsIkFsaWduZWQgVmVjdG9yIFN0b3Jl IE5ldyAtIE5vbiB0ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX0NWSV9O RVcsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9T TE9UME9OTFkpLCI6bnQiLCJ2bWVtIiwiPU9zOC5uZXciLGZTVE9SRU1NVihFQSxmTkVXVlJFRyhP c04pKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2UzMyYl9udF9uZXcsIkFsaWduZWQgVmVjdG9yIFN0 b3JlIE5ldyAtIE5vbiB0ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX0NW SV9ORVcsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklD VF9TTE9UME9OTFkpLCI6bnQiLCJ2bWVtIiwiPU9zOC5uZXciLFB2LGZTVE9SRU1NVihFQSxmTkVX VlJFRyhPc04pKSkKKworCitNTVZFQ19TVFEodlMzMmJfbnQsICAiQWxpZ25lZCBWZWN0b3IgU3Rv cmUgLSBOb24gdGVtcG9yYWwiLCAgICAgIEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9S RVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCI6bnQiKQorCitNTVZFQ19MRCh2TDMyYl9udCwg ICJBbGlnbmVkIFZlY3RvciBMb2FkIC0gTm9uIHRlbXBvcmFsIiwgICAgICAgQVRUUklCUyhBVFRS X1ZNRU1fTlQsQV9MT0FELEFfQ1ZJX1ZBKSwiOm50IikKK01NVkVDX0xEQyh2TDMyYl9udCwgICJB bGlnbmVkIFZlY3RvciBMb2FkIEN1ciAtIE5vbiB0ZW1wb3JhbCIsCUFUVFJJQlMoQVRUUl9WTUVN X05ULEFfTE9BRCxBX0NWSV9ORVcsQV9DVklfVkEpLCI6bnQiKQorTU1WRUNfTERUKHZMMzJiX250 LCAgIkFsaWduZWQgVmVjdG9yIExvYWQgVG1wIC0gTm9uIHRlbXBvcmFsIiwJQVRUUklCUyhBVFRS X1ZNRU1fTlQsQV9MT0FELEFfQ1ZJX1RNUCksIjpudCIpCisKK01NVkVDX0NPTkRfRUFDSF9FQSh2 TDMyYl9udCwiQ29uZGl0aW9uYWwgQWxpZ25lZCBWZWN0b3IgTG9hZCIsQVRUUklCUyhBVFRSX1ZN RU1fTlQsQV9DVklfVkEpLCwiVmQzMj12bWVtIiwiOm50IixQdixmTE9BRE1NVihFQSxWZFYpOykK K01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl9udF9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVj dG9yIExvYWQgQ3VyIixBVFRSSUJTKEFUVFJfVk1FTV9OVCxBX0NWSV9WQSxBX0NWSV9ORVcpLCwi VmQzMi5jdXI9dm1lbSIsIjpudCIsUHYsZkxPQURNTVYoRUEsVmRWKTspCitNTVZFQ19DT05EX0VB Q0hfRUEodkwzMmJfbnRfdG1wLCJDb25kaXRpb25hbCBBbGlnbmVkIFZlY3RvciBMb2FkIFRtcCIs QVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9DVklfVE1QKSwsIlZkMzIudG1wPXZtZW0iLCI6bnQiLFB2 LGZMT0FETU1WKEVBLFZkVik7KQorCisKKy8vIExvYWRzCitERUZfQ1ZJX01BUFBJTkcoVjZfbGRu dDAsICAgIlZkMzI9dm1lbShSdDMyKTpudCIsICAiVmQzMj12bWVtKFJ0MzIrIzApOm50IikKK0RF Rl9DVklfTUFQUElORyhWNl9sZHBudDAsICAgImlmIChQdjQpIFZkMzI9dm1lbShSdDMyKTpudCIs ICAiaWYgKFB2NCkgVmQzMj12bWVtKFJ0MzIrIzApOm50IikKK0RFRl9DVklfTUFQUElORyhWNl9s ZG5wbnQwLCAgICJpZiAoIVB2NCkgVmQzMj12bWVtKFJ0MzIpOm50IiwgICJpZiAoIVB2NCkgVmQz Mj12bWVtKFJ0MzIrIzApOm50IikKK0RFRl9DVklfTUFQUElORyhWNl9sZGNwbnQwLCAgImlmIChQ djQpIFZkMzIuY3VyPXZtZW0oUnQzMik6bnQiLCAiaWYgKFB2NCkgVmQzMi5jdXI9dm1lbShSdDMy KyMwKTpudCIpCitERUZfQ1ZJX01BUFBJTkcoVjZfbGR0cG50MCwgICJpZiAoUHY0KSBWZDMyLnRt cD12bWVtKFJ0MzIpOm50IiwgImlmIChQdjQpIFZkMzIudG1wPXZtZW0oUnQzMisjMCk6bnQiKQor REVGX0NWSV9NQVBQSU5HKFY2X2xkY25wbnQwLCAgImlmICghUHY0KSBWZDMyLmN1cj12bWVtKFJ0 MzIpOm50IiwgImlmICghUHY0KSBWZDMyLmN1cj12bWVtKFJ0MzIrIzApOm50IikKK0RFRl9DVklf TUFQUElORyhWNl9sZHRucG50MCwgICJpZiAoIVB2NCkgVmQzMi50bXA9dm1lbShSdDMyKTpudCIs ICJpZiAoIVB2NCkgVmQzMi50bXA9dm1lbShSdDMyKyMwKTpudCIpCisKKworLy8gU3RvcmVzCitE RUZfQ1ZJX01BUFBJTkcoVjZfc3RudDAsICAgICJ2bWVtKFJ0MzIpOm50PVZzMzIiLCAgICAgInZt ZW0oUnQzMisjMCk6bnQ9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3RubnQwLCAgICJ2bWVt KFJ0MzIpOm50PU9zOC5uZXciLCAgInZtZW0oUnQzMisjMCk6bnQ9T3M4Lm5ldyIpCitERUZfQ1ZJ X01BUFBJTkcoVjZfc3RxbnQwLCAgICJpZiAoUXY0KSB2bWVtKFJ0MzIpOm50PVZzMzIiLCAgICAg ImlmIChRdjQpIHZtZW0oUnQzMisjMCk6bnQ9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3Ru cW50MCwgICJpZiAoIVF2NCkgdm1lbShSdDMyKTpudD1WczMyIiwgICAgICJpZiAoIVF2NCkgdm1l bShSdDMyKyMwKTpudD1WczMyIikKK0RFRl9DVklfTUFQUElORyhWNl9zdHBudDAsICAgImlmIChQ djQpIHZtZW0oUnQzMik6bnQ9VnMzMiIsICAgICAiaWYgKFB2NCkgdm1lbShSdDMyKyMwKTpudD1W czMyIikKK0RFRl9DVklfTUFQUElORyhWNl9zdG5wbnQwLCAgImlmICghUHY0KSB2bWVtKFJ0MzIp Om50PVZzMzIiLCAgICAgImlmICghUHY0KSB2bWVtKFJ0MzIrIzApOm50PVZzMzIiKQorCisKKwor I3VuZGVmIFZFQ19TQ0FMRQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqIFZlY3RvciBBbGlnbm1lbnQKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgVkFMSUdOQihTSElG VCkgIFwKKyAgICBmSElERShpbnQgaTspIFwKKyAgICBmb3IoaSA9IDA7IGkgPCBmVkJZVEVTKCk7 IGkrKykge1wKKyAgICAgICAgVmRWLnViW2ldID0gKGkrU0hJRlQ+PWZWQllURVMoKSkgPyBWdVYu dWJbaStTSElGVC1mVkJZVEVTKCldIDogVnZWLnViW2krU0hJRlRdO1wKKwl9CisKK0VYVElOU04o VjZfdmFsaWduYiwgICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsUnQ4KSIsICBBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9SVDgp LCJBbGlnbiBUd28gdmVjdG9ycyBieSBSdDggYXMgY29udHJvbCIsCit7CisJdW5zaWduZWQgc2hp ZnQgPSBSdFYgJiAoZlZCWVRFUygpLTEpOworCVZBTElHTkIoc2hpZnQpCit9KQorRVhUSU5TTihW Nl92bGFsaWduYiwgIlZkMzI9dmxhbGlnbihWdTMyLFZ2MzIsUnQ4KSIsIEFUVFJJQlMoQV9FWFRF TlNJT04sQV9DVkksQV9DVklfVlAsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX1JUOCks IkFsaWduIFR3byB2ZWN0b3JzIGJ5IFJ0OCBhcyBjb250cm9sIiwKK3sKKwl1bnNpZ25lZCBzaGlm dCA9IGZWQllURVMoKSAtIChSdFYgJiAoZlZCWVRFUygpLTEpKTsKKwlWQUxJR05CKHNoaWZ0KQor fSkKK0VYVElOU04oVjZfdmFsaWduYmksICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsI3UzKSIsIAlB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNF KSwiQWxpZ24gVHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wiLAoreworCVZBTElHTkIodWlW KQorfSkKK0VYVElOU04oVjZfdmxhbGlnbmJpLCJWZDMyPXZsYWxpZ24oVnUzMixWdjMyLCN1Myki LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09V UkNFKSwiQWxpZ24gVHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wiLAoreworCXVuc2lnbmVk IHNoaWZ0ID0gZlZCWVRFUygpIC0gdWlWOworCVZBTElHTkIoc2hpZnQpCit9KQorCitFWFRJTlNO KFY2X3Zyb3IsICJWZDMyPXZyb3IoVnUzMixSdDMyKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9D VkksQV9DVklfVlAsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UpLAorIkFsaWduIFR3byB2ZWN0b3Jz IGJ5IFJ0MzIgYXMgY29udHJvbCIsCit7CisJZkhJREUoaW50IGs7KQorCWZvciAoaz0wO2s8ZlZC WVRFUygpO2srKykgeworCQlWZFYudWJba10gPSBWdVYudWJbKGsrUnRWKSYoZlZCWVRFUygpLTEp XTsKKwl9CisJfSkKKworCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIFVucGFjayBlbGVtZW50cyB3aXRo IHplcm8vc2lnbiBleHRlbmQgYW5kIGNyb3NzIGxhbmUgcGVybXV0ZQorKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVS QVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZ1bnBhY2t1YiwgICJWZGQzMj12 dW5wYWNrdWIoVnUzMikiLCAiVmRkMzIudWg9dnVucGFjayhWdTMyLnViKSIsICJVbnBhY2sgYnl0 ZSB3aXRoIHplcm8tZXh0ZW5kIiwgICAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdWgs IGkpICA9IGZaRThfMTYoIFZ1Vi51YltpXSkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1Rf RE9VQkxFX1ZFQyg4LHZ1bnBhY2tiLCAgICJWZGQzMj12dW5wYWNrYihWdTMyKSIsICAiVmRkMzIu aD12dW5wYWNrKFZ1MzIuYikiLCAgICJVbnBhY2sgYnl0ZXMgd2l0aCBzaWduLWV4dGVuZCIsICAg IGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgaCwgIGkpICA9IGZTRThfMTYoIFZ1Vi5iW2ld ICkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2dW5wYWNrdWgs ICJWZGQzMj12dW5wYWNrdWgoVnUzMikiLCAiVmRkMzIudXc9dnVucGFjayhWdTMyLnVoKSIsICJV bnBhY2sgaGFsdmVzIHdpdGggemVyby1leHRlbmQiLCAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1Mo VmRkViwgdXcsIGkpICA9IGZaRTE2XzMyKFZ1Vi51aFtpXSkpCitJVEVSQVRPUl9JTlNOMl9QRVJN VVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2dW5wYWNraCwgICJWZGQzMj12dW5wYWNraChWdTMyKSIs ICAiVmRkMzIudz12dW5wYWNrKFZ1MzIuaCkiLCAgICJVbnBhY2sgaGFsdmVzIHdpdGggc2lnbi1l eHRlbmQiLCAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdywgIGkpICA9IGZTRTE2XzMy KFZ1Vi5oW2ldICkpCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgs IHZ1bnBhY2tvYiwgIlZ4eDMyfD12dW5wYWNrb2IoVnUzMikiLCAiVnh4MzIuaHw9dnVucGFja28o VnUzMi5iKSIsICJVbnBhY2sgYnl0ZSB0byBvZGQgYnl0ZXMgIiwgICAgICAgZlZBUlJBWV9FTEVN RU5UX0FDQ0VTUyhWeHhWLCB1aCwgaSkgfD0gZlpFOF8xNiggVnVWLnViW2ldKTw8OCkKK0lURVJB VE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZ1bnBhY2tvaCwgIlZ4eDMyfD12 dW5wYWNrb2goVnUzMikiLCAiVnh4MzIud3w9dnVucGFja28oVnUzMi5oKSIsICJVbnBhY2sgaGFs dmVzIHRvIG9kZCBoYWx2ZXMiLCAgICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWeHhWLCB1dywg aSkgfD0gZlpFMTZfMzIoVnVWLnVoW2ldKTw8MTYpCisKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIFBhY2sgZWxlbWVu dHMgYW5kIGNyb3NzIGxhbmUgcGVybXV0ZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgSVRFUkFUT1JfSU5TTjJfUEVS TVVURV9TTE9UKDE2LCB2cGFja2ViLCAgIlZkMzI9dnBhY2tlYihWdTMyLFZ2MzIpIiwgIlZkMzIu Yj12cGFja2UoVnUzMi5oLFZ2MzIuaCkiLAorICJQYWNrICBieXRlcyIsCisgICAgVmRWLnViW2ld ICAgICAgICAgICAgICAgPSBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKTsKKyAgICBWZFYudWJbaStm VkVMRU0oMTYpXSAgICA9IGZHRVRVQllURSgwLCBWdVYudWhbaV0pKQorCisgSVRFUkFUT1JfSU5T TjJfUEVSTVVURV9TTE9UKDMyLCB2cGFja2VoLCAgIlZkMzI9dnBhY2tlaChWdTMyLFZ2MzIpIiwg IlZkMzIuaD12cGFja2UoVnUzMi53LFZ2MzIudykiLAorICJQYWNrICBoYWxmd29yZHMiLAorICAg IFZkVi51aFtpXSAgICAgICAgICAgICAgID0gZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSk7CisgICAg VmRWLnVoW2krZlZFTEVNKDMyKV0gICAgPSBmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkKKworICBJ VEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMTYsIHZwYWNrb2IsICAiVmQzMj12cGFja29iKFZ1 MzIsVnYzMikiLCAiVmQzMi5iPXZwYWNrbyhWdTMyLmgsVnYzMi5oKSIsCisgIlBhY2sgIGJ5dGVz IiwKKyAgICBWZFYudWJbaV0gICAgICAgICAgICAgICA9IGZHRVRVQllURSgxLCBWdlYudWhbaV0p OworICAgIFZkVi51YltpK2ZWRUxFTSgxNildICAgID0gZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSkp CisKKyBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZwYWNrb2gsICAiVmQzMj12cGFj a29oKFZ1MzIsVnYzMikiLCAiVmQzMi5oPXZwYWNrbyhWdTMyLncsVnYzMi53KSIsCisgIlBhY2sg IGhhbGZ3b3JkcyIsCisgICAgVmRWLnVoW2ldICAgICAgICAgICAgICAgPSBmR0VUVUhBTEYoMSwg VnZWLnV3W2ldKTsKKyAgICBWZFYudWhbaStmVkVMRU0oMzIpXSAgICA9IGZHRVRVSEFMRigxLCBW dVYudXdbaV0pKQorCisKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2cGFja2h1 Yl9zYXQsICAiVmQzMj12cGFja2h1YihWdTMyLFZ2MzIpOnNhdCIsICJWZDMyLnViPXZwYWNrKFZ1 MzIuaCxWdjMyLmgpOnNhdCIsCisgIlBhY2sgdWJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAg VmRWLnViW2ldICAgICAgICAgICAgICAgPSBmVlNBVFVCKFZ2Vi5oW2ldKTsKKyAgICBWZFYudWJb aStmVkVMRU0oMTYpXSAgICA9IGZWU0FUVUIoVnVWLmhbaV0pKQorCisKK0lURVJBVE9SX0lOU04y X1BFUk1VVEVfU0xPVCgxNiwgdnBhY2toYl9zYXQsICAiVmQzMj12cGFja2hiKFZ1MzIsVnYzMik6 c2F0IiwgIlZkMzIuYj12cGFjayhWdTMyLmgsVnYzMi5oKTpzYXQiLAorICJQYWNrIGJ5dGVzIHdp dGggc2F0dXJhdGlvbiIsCisgICAgVmRWLmJbaV0gICAgICAgICAgICAgICA9IGZWU0FUQihWdlYu aFtpXSk7CisgICAgVmRWLmJbaStmVkVMRU0oMTYpXSAgICA9IGZWU0FUQihWdVYuaFtpXSkpCisK KworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2cGFja3d1aF9zYXQsICAiVmQzMj12 cGFja3d1aChWdTMyLFZ2MzIpOnNhdCIsICJWZDMyLnVoPXZwYWNrKFZ1MzIudyxWdjMyLncpOnNh dCIsCisgIlBhY2sgdWJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLnVoW2ldICAgICAg ICAgICAgICAgPSBmVlNBVFVIKFZ2Vi53W2ldKTsKKyAgICBWZFYudWhbaStmVkVMRU0oMzIpXSAg ICA9IGZWU0FUVUgoVnVWLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIs IHZwYWNrd2hfc2F0LCAgIlZkMzI9dnBhY2t3aChWdTMyLFZ2MzIpOnNhdCIsICJWZDMyLmg9dnBh Y2soVnUzMi53LFZ2MzIudyk6c2F0IiwKKyAiUGFjayBieXRlcyB3aXRoIHNhdHVyYXRpb24iLAor ICAgIFZkVi5oW2ldICAgICAgICAgICAgICAgPSBmVlNBVEgoVnZWLndbaV0pOworICAgIFZkVi5o W2krZlZFTEVNKDMyKV0gICAgPSBmVlNBVEgoVnVWLndbaV0pKQorCisKKworCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KiBaZXJvL1NpZ24gRXh0ZW5kIHdpdGggaW4tbGFuZSBwZXJtdXRlCisqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoMTYsdnpiLCJWZGQzMj12enh0YihWdTMyKSIs IlZkZDMyLnVoPXZ6eHQoVnUzMi51YikiLAorIlZlY3RvciBaZXJvIEV4dGVuZCBCeXRlcyIsCisg ICAgVmRkVi52WzBdLnVoW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSk7Cisg ICAgVmRkVi52WzFdLnVoW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisK K0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoMTYsdnNiLCJWZGQzMj12c3h0YihW dTMyKSIsIlZkZDMyLmg9dnN4dChWdTMyLmIpIiwKKyJWZWN0b3IgU2lnbiBFeHRlbmQgQnl0ZXMi LAorICAgIFZkZFYudlswXS5oW2ldID0gZlNFOF8xNihmR0VUQllURSgwLCBWdVYuaFtpXSkpOwor ICAgIFZkZFYudlsxXS5oW2ldID0gZlNFOF8xNihmR0VUQllURSgxLCBWdVYuaFtpXSkpKQorCitJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKDMyLHZ6aCwiVmRkMzI9dnp4dGgoVnUz MikiLCJWZGQzMi51dz12enh0KFZ1MzIudWgpIiwKKyJWZWN0b3IgWmVybyBFeHRlbmQgaGFsZndv cmRzIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3 W2ldKSk7CisgICAgVmRkVi52WzFdLnV3W2ldID0gZlpFMTZfMzIoZkdFVFVIQUxGKDEsIFZ1Vi51 d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKDMyLHZzaCwiVmRk MzI9dnN4dGgoVnUzMikiLCJWZGQzMi53PXZzeHQoVnUzMi5oKSIsCisiVmVjdG9yIFNpZ24gRXh0 ZW5kIGhhbGZ3b3JkcyIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmU0UxNl8zMihmR0VUSEFMRigw LCBWdVYud1tpXSkpOworICAgIFZkZFYudlsxXS53W2ldID0gZlNFMTZfMzIoZkdFVEhBTEYoMSwg VnVWLndbaV0pKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKgorKgorKiAgICAgICAgICAgICAg IE1NVkVDVE9SIFJFRFVDVElPTgorKgorKgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAyLVdBWSBSRURVQ1RJT04g LSBVTlNJR05FRCBCWVRFIEJZIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDE2LHZkbXB5YnVzLCJW ZDMyPXZkbXB5YnVzKFZ1MzIsUnQzMikiLCJWZDMyLmg9dmRtcHkoVnUzMi51YixSdDMyLmIpIiwK KyJWZWN0b3IgRHVhbCBNdWx0aXBseS1BY2N1bXVsYXRlcyB1bnNpZ25lZCBieXRlcyBieSBieXRl cyIsCisgICAgVmRWLmhbaV0gICA9IGZNUFk4VVMoIGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBm R0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAgIFZkVi5oW2ldICArPSBmTVBZOFVTKCBmR0VU VUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1QoMTYsdmRtcHlidXNfYWNjLCJWeDMyKz12ZG1weWJ1cyhWdTMyLFJ0 MzIpIiwiVngzMi5oKz12ZG1weShWdTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRp cGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUi LAorICAgIFZ4Vi5oW2ldICs9IGZNUFk4VVMoIGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VU QllURSgoMippKSAlIDQsIFJ0VikpOworICAgIFZ4Vi5oW2ldICs9IGZNUFk4VVMoIGZHRVRVQllU RSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2ZG1weWJ1c19kdiwiVmRkMzI9dmRtcHli dXMoVnV1MzIsUnQzMikiLCJWZGQzMi5oPXZkbXB5KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3Rv ciBEdWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5k IGFjY3VtdWxhdGUgU2xpZGluZyBXaW5kb3cgUmVkdWN0aW9uIiwKKyAgICBWZGRWLnZbMF0uaFtp XSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkp ICUgNCwgUnRWKSk7CisgICAgVmRkVi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwg VnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVmRkVi52 WzFdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllU RSgoMippKSAlIDQsIFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVC WVRFKDAsIFZ1dVYudlsxXS51aFtpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2ZG1weWJ1c19kdl9hY2MsIlZ4eDMy Kz12ZG1weWJ1cyhWdXUzMixSdDMyKSIsIlZ4eDMyLmgrPXZkbXB5KFZ1dTMyLnViLFJ0MzIuYiki LAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBi eXRlcywgYW5kIGFjY3VtdWxhdGUgU2xpZGluZyBXaW5kb3cgUmVkdWN0aW9uIiwKKyAgICBWeHhW LnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRC WVRFKCgyKmkpICUgNCwgUnRWKSk7CisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VU VUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisg ICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ld KSxmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4 VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYp KSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KiAgMi1XQVkgUkVEVUNUSU9OIC0gSEFMRiBCWSBCWVRFCisqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZkbXB5 aGIsIlZkMzI9dmRtcHloYihWdTMyLFJ0MzIpIiwiVmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmIp IiwKKyJEdWFsLVZlY3RvciAyLUVsZW1lbnQgSGFsZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xp ZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisgICAgVmRWLndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYo MCwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRWLndbaV0gKz0g Zk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkp CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZkbXB5aGJfYWNjLCJWeDMyKz12ZG1weWhi KFZ1MzIsUnQzMikiLCJWeDMyLncrPXZkbXB5KFZ1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3Rv ciAyLUVsZW1lbnQgSGFsZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3Zl cmxhcCIsCisgICAgVnhWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZH RVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVnhWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhB TEYoMSwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aGJfZHYsIlZkZDMyPXZkbXB5aGIo VnV1MzIsUnQzMikiLCJWZGQzMi53PXZkbXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbC1WZWN0 b3IgMi1FbGVtZW50IEhhbGYgeCBCeXRlIFJlZHVjdGlvbiB3aXRoIFNsaWRpbmcgV2luZG93IE92 ZXJsYXAiLAorICAgIFZkZFYudlswXS53W2ldICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYu dlswXS53W2ldKSxmR0VUQllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZkZFYudlswXS53W2ld ICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzEp JTQsIFJ0VikpOworCisgICAgVmRkVi52WzFdLndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMSwg VnV1Vi52WzBdLndbaV0pLGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFd LndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLGZHRVRCWVRFKCgy KmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2ZG1weWhiX2R2X2FjYywiVnh4MzIrPXZkbXB5aGIoVnV1MzIsUnQzMikiLCJWeHgzMi53Kz12 ZG1weShWdXUzMi5oLFJ0MzIuYikiLAorIkR1YWwtVmVjdG9yIDItRWxlbWVudCBIYWxmIHggQnl0 ZSBSZWR1Y3Rpb24gd2l0aCBTbGlkaW5nIFdpbmRvdyBPdmVybGFwIiwKKyAgICBWeHhWLnZbMF0u d1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdXVWLnZbMF0ud1tpXSksZkdFVEJZVEUoKDIq aSswKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigx LCBWdXVWLnZbMF0ud1tpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKworICAgIFZ4eFYu dlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUQllU RSgoMippKzApJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRI QUxGKDAsIFZ1dVYudlsxXS53W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKKwor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgMi1X QVkgUkVEVUNUSU9OIC0gSEFMRiBCWSBIQUxGCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2ZG1weWh2c2F0LCJWZDMyPXZkbXB5aChWdTMyLFZ2MzIpOnNhdCIsIlZkMzIudz12ZG1weShW dTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBseSwgYWNjdW11bGF0 ZSBwYWlycywgc2F0IHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBh Y2N1bSAgICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRIQUxGKDAsIFZ2Vi53 W2ldKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxmR0VU SEFMRigxLCBWdlYud1tpXSkpOworICAgIFZkVi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWh2c2F0X2FjYywiVngzMis9 dmRtcHloKFZ1MzIsVnYzMik6c2F0IiwiVngzMi53Kz12ZG1weShWdTMyLmgsVnYzMi5oKTpzYXQi LAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBseSwgYWNjdW11bGF0ZSBwYWlycywgc2F0IHRvIHdv cmQiLAorICAgIGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNT KGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgYWNjdW0g ICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxmR0VUSEFMRigxLCBWdlYud1tpXSkp OworICAgIFZ4Vi53W2ldID0gZlZTQVRXKFZ4Vi53W2ldK2FjY3VtKSkKKworCisvKiBWRE1QWUgg Ki8KKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhzYXQsIlZk MzI9dmRtcHloKFZ1MzIsUnQzMik6c2F0IiwiVmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmgpOnNh dCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0 ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBm TVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgYWNj dW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksZkdFVEhBTEYoMSwgUnRWKSk7 CisgICAgVmRWLndbaV0gPSBmVlNBVFcoYWNjdW0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xP VF9ET1VCTEVfVkVDKDMyLHZkbXB5aHNhdF9hY2MsIlZ4MzIrPXZkbXB5aChWdTMyLFJ0MzIpOnNh dCIsIlZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0MzIuaCk6c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQg bXVsdGlwbHksIGFjY3VtdWxhdGUgcGFpcnMsIHNhdHVyYXRlIHRvIHdvcmQiLAorICAgIGZISURF KHNpemU4c190KSBhY2N1bSA9IFZ4Vi53W2ldOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdF VEhBTEYoMCwgVnVWLndbaV0pLGZHRVRIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1Q WTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRIQUxGKDEsIFJ0VikpOworICAgIFZ4Vi53 W2ldID0gZlZTQVRXKGFjY3VtKSkKKworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQygzMix2ZG1weWhpc2F0LCJWZDMyPXZkbXB5aChWdXUzMixSdDMyKTpzYXQiLCJWZDMy Lnc9dmRtcHkoVnV1MzIuaCxSdDMyLmgpOnNhdCIsCisiRHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3 b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdheSBSZWR1Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBz YXR1cmF0aW9uIiwKKyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBm TVBZMTZTUyhmR0VUSEFMRigxLFZ1dVYudlswXS53W2ldKSxmR0VUSEFMRigwLFJ0VikpOworICAg IGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSksZkdFVEhBTEYo MSxSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04y X01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloaXNhdF9hY2MsIlZ4MzIrPXZkbXB5aChWdXUz MixSdDMyKTpzYXQiLCJWeDMyLncrPXZkbXB5KFZ1dTMyLmgsUnQzMi5oKTpzYXQiLAorIkR1YWwg VmVjdG9yIFNpZ25lZCBIYWxmd29yZCBieSBTaWduZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9u IHRvIEhhbGZ3b3JkIHdpdGggYWNjdW11bGF0aW9uIGFuZCBzYXR1cmF0aW9uIiwKKyAgICBmSElE RShzaXplOHNfdCkgYWNjdW0gPSBWeFYud1tpXTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNTKGZH RVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLGZHRVRIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICAr PSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKSxmR0VUSEFMRigxLFJ0VikpOwor ICAgIFZ4Vi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworCisKKworCisKKworLyogVkRNUFlIU1Ug Ki8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3VzYXQsIlZk MzI9dmRtcHloc3UoVnUzMixSdDMyKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIudWgp OnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1 cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAg PSBmTVBZMTZTVShmR0VUSEFMRigwLCBWdVYud1tpXSksZkdFVFVIQUxGKDAsIFJ0VikpOworICAg IGFjY3VtICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRVSEFMRigxLCBS dFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3VzYXRfYWNjLCJWeDMyKz12ZG1weWhzdShWdTMy LFJ0MzIpOnNhdCIsIlZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0MzIudWgpOnNhdCIsCisiVmVjdG9y IGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwK KyAgICBmSElERShzaXplOHNfdCkgYWNjdW09VnhWLndbaV07CisgICAgYWNjdW0gICArPSBmTVBZ MTZTVShmR0VUSEFMRigwLCBWdVYud1tpXSksZkdFVFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3Vt ICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsK KyAgICBWeFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHN1aXNhdCwiVmQzMj12ZG1weWhzdShWdXUzMixSdDMy LCMxKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnV1MzIuaCxSdDMyLnVoLCMxKTpzYXQiLAorIkR1YWwg VmVjdG9yIFNpZ25lZCBIYWxmd29yZCBieSBTaWduZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9u IHRvIEhhbGZ3b3JkIHdpdGggc2F0dXJhdGlvbiIsCisgICAgZkhJREUoc2l6ZThzX3QgYWNjdW07 KQorICAgIGFjY3VtICAgID0gZk1QWTE2U1UoZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksZkdF VFVIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTVShmR0VUSEFMRigwLFZ1dVYu dlsxXS53W2ldKSxmR0VUVUhBTEYoMSxSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1 bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3Vpc2F0 X2FjYywiVngzMis9dmRtcHloc3UoVnV1MzIsUnQzMiwjMSk6c2F0IiwiVngzMi53Kz12ZG1weShW dXUzMi5oLFJ0MzIudWgsIzEpOnNhdCIsCisiRHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5 IFNpZ25lZCBIYWxmd29yZCAyLVdheSBSZWR1Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBhY2N1bXVs YXRpb24gYW5kIHNhdHVyYXRpb24iLAorICAgIGZISURFKHNpemU4c190KSBhY2N1bT1WeFYud1tp XTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNVKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxm R0VUVUhBTEYoMCxSdFYpKTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsIFZ1 dVYudlsxXS53W2ldKSxmR0VUVUhBTEYoMSxSdFYpKTsKKyAgICBWeFYud1tpXSA9IGZWU0FUVyhh Y2N1bSkpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyogIDMtV0FZIFJFRFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgIEJZVEUKKyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2dG1weWIsICJWZGQzMj12dG1weWIoVnV1MzIsUnQzMiki LCAiVmRkMzIuaD12dG1weShWdXUzMi5iLFJ0MzIuYikiLAorIkR1YWwgVmVjdG9yIDN4MSBSZWR1 Y3Rpb24iLAorICAgIFZkZFYudlswXS5oW2ldICA9IGZNUFk4U1MoZkdFVEJZVEUoMCxWdXVWLnZb MF0uaFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVmRkVi52WzBdLmhbaV0g Kz0gZk1QWThTUyhmR0VUQllURSgxLFZ1dVYudlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0 LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtpXSArPSBmR0VUQllURSgwLFZ1dVYudlsxXS5oW2ld KTsKKworICAgIFZkZFYudlsxXS5oW2ldICA9IGZNUFk4U1MoZkdFVEJZVEUoMSxWdXVWLnZbMF0u aFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gKz0g Zk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlsxXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBS dFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSArPSBmR0VUQllURSgxLFZ1dVYudlsxXS5oW2ldKSkK KworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZ0bXB5Yl9hY2MsICJW eHgzMis9dnRtcHliKFZ1dTMyLFJ0MzIpIiwgIlZ4eDMyLmgrPXZ0bXB5KFZ1dTMyLmIsUnQzMi5i KSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0g Zk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBS dFYpKTsKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDEsVnV1Vi52WzBd LmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlswXS5oW2ldICs9 IGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pOworCisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1Q WThTUyhmR0VUQllURSgxLFZ1dVYudlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYp KTsKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhb aV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZH RVRCWVRFKDEsVnV1Vi52WzFdLmhbaV0pKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygxNix2dG1weWJ1cywgIlZkZDMyPXZ0bXB5YnVzKFZ1dTMyLFJ0MzIpIiwgIlZk ZDMyLmg9dnRtcHkoVnV1MzIudWIsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlv biIsCisgICAgVmRkVi52WzBdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdXVWLnZbMF0u dWhbaV0pLCBmR0VUQllURSgoMippICApJTQsIFJ0VikpOworICAgIFZkZFYudlswXS5oW2ldICs9 IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0 LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtpXSArPSBmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhb aV0pOworCisgICAgVmRkVi52WzFdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZb MF0udWhbaV0pLCBmR0VUQllURSgoMippICApJTQsIFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsx KSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSArPSBmR0VUVUJZVEUoMSxWdXVWLnZbMV0u dWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZ0bXB5YnVz X2FjYywgIlZ4eDMyKz12dG1weWJ1cyhWdXUzMixSdDMyKSIsICJWeHgzMi5oKz12dG1weShWdXUz Mi51YixSdDMyLmIpIiwKKyJEdWFsIFZlY3RvciAzeDEgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZb MF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRF KCgyKmkgICklNCwgUnRWKSk7CisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZ VEUoMSxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4 eFYudlswXS5oW2ldICs9IGZHRVRVQllURSgwLFZ1dVYudlsxXS51aFtpXSk7CisKKyAgICBWeHhW LnZbMV0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1dVYudlswXS51aFtpXSksIGZHRVRC WVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VU VUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAg IFZ4eFYudlsxXS5oW2ldICs9IGZHRVRVQllURSgxLFZ1dVYudlsxXS51aFtpXSkpCisKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2dG1weWhiLCAiVmRkMzI9dnRtcHlo YihWdXUzMixSdDMyKSIsICJWZGQzMi53PXZ0bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBW ZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmTVBZMTZTUyhmR0VU SEFMRigwLFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0Vikp KTsKKyAgICBWZGRWLnZbMF0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndb aV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpOworICAgIFZkZFYudlswXS53 W2ldKz0gZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSk7CisKKyAgICBWZGRWLnZbMV0ud1tpXSA9 IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgy KmkrMCklNCwgUnRWKSkpOworICAgIFZkZFYudlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYo MCxWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7Cisg ICAgVmRkVi52WzFdLndbaV0rPSBmR0VUSEFMRigxLFZ1dVYudlsxXS53W2ldKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2dG1weWhiX2FjYywgIlZ4eDMyKz12dG1w eWhiKFZ1dTMyLFJ0MzIpIiwgIlZ4eDMyLncrPXZ0bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVh bCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVnh4Vi52WzBdLndbaV0rPSBmTVBZMTZTUyhm R0VUSEFMRigwLFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0 VikpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBd LndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpOworICAgIFZ4eFYudlsw XS53W2ldKz0gZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSk7CisKKyAgICBWeHhWLnZbMV0ud1tp XSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRF KCgyKmkrMCklNCwgUnRWKSkpOworICAgIFZ4eFYudlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhB TEYoMCxWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7 CisgICAgVnh4Vi52WzFdLndbaV0rPSBmR0VUSEFMRigxLFZ1dVYudlsxXS53W2ldKSkKKworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDQtV0FZIFJF RFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgVU5TSUdORUQgQllURQorKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVCgzMix2cm1weXViLCJWZDMyPXZybXB5dWIoVnUzMixSdDMyKSIsIlZkMzIudXc9dnJtcHko VnUzMi51YixSdDMyLnViKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdp dGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVmRWLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVC WVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDAsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZN UFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDEsUnRWKSk7CisgICAgVmRW LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsUnRW KSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdF VFVCWVRFKDMsUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5dWJfYWNj LCJWeDMyKz12cm1weXViKFZ1MzIsUnQzMikiLCJWeDMyLnV3Kz12cm1weShWdTMyLnViLFJ0MzIu dWIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29l ZmZpY2llbnRzIEFjY3VtdWxhdGUiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllU RSgwLFZ1Vi51d1tpXSksIGZHRVRVQllURSgwLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZ OFVVKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRVQllURSgxLFJ0VikpOworICAgIFZ4Vi51 d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRVQllURSgyLFJ0Vikp OworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRV QllURSgzLFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5dWJ2LCJW ZDMyPXZybXB5dWIoVnUzMixWdjMyKSIsIlZkMzIudXc9dnJtcHkoVnUzMi51YixWdjMyLnViKSIs CisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNp ZW50cyIsCisgICAgVmRWLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwg ZkdFVFVCWVRFKDAsVnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVC WVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDEsVnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ld ICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsVnZWLnV3W2ld KSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdF VFVCWVRFKDMsVnZWLnV3W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdnJtcHl1YnZfYWNjLCJWeDMyKz12cm1weXViKFZ1MzIsVnYzMikiLCJWeDMyLnV3Kz12 cm1weShWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1 Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIEFjY3VtdWxhdGUiLAorICAgIFZ4Vi51d1tpXSAr PSBmTVBZOFVVKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRVQllURSgwLFZ2Vi51d1tpXSkp OworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRV QllURSgxLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgy LFZ1Vi51d1tpXSksIGZHRVRVQllURSgyLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBm TVBZOFVVKGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRVQllURSgzLFZ2Vi51d1tpXSkpKQor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weWJ2LCJWZDMyPXZybXB5YihWdTMyLFZ2 MzIpIiwiVmQzMi53PXZybXB5KFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNj dW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWZFYud1tpXSAg PSBmTVBZOFNTKGZHRVRCWVRFKDAsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMCwgVnZWLndbaV0pKTsK KyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDEsIFZ1Vi53W2ldKSwgZkdFVEJZVEUo MSwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDIsIFZ1Vi53 W2ldKSwgZkdFVEJZVEUoMiwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZH RVRCWVRFKDMsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMywgVnZWLndbaV0pKSkKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZybXB5YnZfYWNjLCJWeDMyKz12cm1weWIo VnUzMixWdjMyKSIsIlZ4MzIudys9dnJtcHkoVnUzMi5iLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0 aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZ4 Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMCwgVnVWLndbaV0pLCBmR0VUQllURSgwLCBWdlYu d1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLndbaV0pLCBm R0VUQllURSgxLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUo MiwgVnVWLndbaV0pLCBmR0VUQllURSgyLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZN UFk4U1MoZkdFVEJZVEUoMywgVnVWLndbaV0pLCBmR0VUQllURSgzLCBWdlYud1tpXSkpKQorCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHl1YmksIlZkZDMyPXZy bXB5dWIoVnV1MzIsUnQzMiwjdTEpIiwiVmRkMzIudXc9dnJtcHkoVnV1MzIudWIsUnQzMi51Yiwj dTEpIiwKKyJEdWFsIFZlY3RvciBVbnNpZ25lZCBCeXRlIEJ5IFNpZ25lZCBCeXRlIDQtd2F5IFJl ZHVjdGlvbiB0byBXb3JkIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gID0gZk1QWThVVShmR0VUVUJZ VEUoMCwgVnV1Vi52W3VpViA/IDE6MF0udXdbaV0pLGZHRVRVQllURSgoMC11aVYpICYgMHgzLFJ0 VikpOworICAgIFZkZFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZb MCAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgxLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRk Vi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsIFZ1dVYudlswICAgICAgICBdLnV3 W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMF0udXdbaV0g Kz0gZk1QWThVVShmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllU RSgoMy11aVYpICYgMHgzLFJ0VikpOworCisgICAgVmRkVi52WzFdLnV3W2ldICA9IGZNUFk4VVUo ZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAm IDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwg VnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMy11aVYpICYgMHgzLFJ0VikpOwor ICAgIFZkZFYudlsxXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLCBWdXVWLnZbdWlWID8g MTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFd LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxm R0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xP VF9ET1VCTEVfVkVDKDMyLHZybXB5dWJpX2FjYywiVnh4MzIrPXZybXB5dWIoVnV1MzIsUnQzMiwj dTEpIiwiVnh4MzIudXcrPXZybXB5KFZ1dTMyLnViLFJ0MzIudWIsI3UxKSIsCisiRHVhbCBWZWN0 b3IgVW5zaWduZWQgQnl0ZSBCeSBTaWduZWQgQnl0ZSA0LXdheSBSZWR1Y3Rpb24gd2l0aCBhY2N1 bXVsYXRlIGFuZCBzYXR1cmF0aW9uIHRvIFdvcmQiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBm TVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgw LXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVC WVRFKDEsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxS dFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMiwgVnV1Vi52 WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4 eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51 d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisKKyAgICBWeHhWLnZbMV0udXdb aV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRV QllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmTVBZOFVV KGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikg JiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIs IFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VUVUJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsK KyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAg ICAgIF0udXdbaV0pLGZHRVRVQllURSgoMS11aVYpICYgMHgzLFJ0VikpKQorCisKKworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVD VElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weWJ1 cywiVmQzMj12cm1weWJ1cyhWdTMyLFJ0MzIpIiwiVmQzMi53PXZybXB5KFZ1MzIudWIsUnQzMi5i KSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZm aWNpZW50cyIsCisgICAgVmRWLndbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdVYudXdbaV0p LCBmR0VUQllURSgwLFJ0VikpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEs VnVWLnV3W2ldKSwgZkdFVEJZVEUoMSxSdFYpKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFVTKGZH RVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDIsUnRWKSk7CisgICAgVmRWLndbaV0gKz0g Zk1QWThVUyhmR0VUVUJZVEUoMyxWdVYudXdbaV0pLCBmR0VUQllURSgzLFJ0VikpKQorCisKK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5YnVzX2FjYywiVngzMis9dnJtcHlidXMoVnUz MixSdDMyKSIsIlZ4MzIudys9dnJtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgTXVsdGlw bHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYu d1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDAsUnRWKSk7 CisgICAgVnhWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdVYudXdbaV0pLCBmR0VUQllU RSgxLFJ0VikpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ld KSwgZkdFVEJZVEUoMixSdFYpKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgz LFZ1Vi51d1tpXSksIGZHRVRCWVRFKDMsUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygzMix2cm1weWJ1c2ksIlZkZDMyPXZybXB5YnVzKFZ1dTMyLFJ0MzIsI3Ux KSIsIlZkZDMyLnc9dnJtcHkoVnV1MzIudWIsUnQzMi5iLCN1MSkiLAorIkR1YWwgVmVjdG9yIFVu c2lnbmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13YXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAg IFZkZFYudlswXS53W2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVYgPyAxOjBd LnV3W2ldKSxmR0VUQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllU RSgoMS11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdF VFVCWVRFKDIsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgz LFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYu dlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworCisgICAg VmRkVi52WzFdLndbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0u dXdbaV0pLGZHRVRCWVRFKCgyLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0g Kz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRF KCgzLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VU VUJZVEUoMiwgVnV1Vi52W3VpViA/IDE6MF0udXdbaV0pLGZHRVRCWVRFKCgwLXVpVikgJiAweDMs UnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMywgVnV1Vi52 WzAgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgxLXVpVikgJiAweDMsUnRWKSkpCisKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1weWJ1c2lfYWNjLCJWeHgzMis9 dnJtcHlidXMoVnV1MzIsUnQzMiwjdTEpIiwiVnh4MzIudys9dnJtcHkoVnV1MzIudWIsUnQzMi5i LCN1MSkiLAorIkR1YWwgVmVjdG9yIFVuc2lnbmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13YXkg UmVkdWN0aW9uIHdpdGggYWNjdW11bGF0ZSBhbmQgc2F0dXJhdGlvbiB0byBXb3JkIiwKKyAgICBW eHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbdWlWID8gMTowXS51 d1tpXSksZkdFVEJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSAr PSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUo KDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRV QllURSgyLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDItdWlWKSAmIDB4MyxS dFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLCBWdXVWLnZb MCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDMtdWlWKSAmIDB4MyxSdFYpKTsKKworICAgIFZ4 eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgICBdLnV3 W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9 IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgo My11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVC WVRFKDIsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VUQllURSgoMC11aVYpICYgMHgzLFJ0 VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlsw ICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMS11aVYpICYgMHgzLFJ0VikpKQorCisKKworCitJ VEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weWJ1c3YsIlZkMzI9dnJtcHlidXMoVnUzMixW djMyKSIsIlZkMzIudz12cm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1B Y2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZkVi53W2ld ICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMCxWdlYud1tpXSkp OworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVEJZ VEUoMSxWdlYud1tpXSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVW LnV3W2ldKSwgZkdFVEJZVEUoMixWdlYud1tpXSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMo ZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMyxWdlYud1tpXSkpKQorCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHlidXN2X2FjYywiVngzMis9dnJt cHlidXMoVnUzMixWdjMyKSIsIlZ4MzIudys9dnJtcHkoVnUzMi51YixWdjMyLmIpIiwKKyJWZWN0 b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwK KyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRF KDAsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1Vi51 d1tpXSksIGZHRVRCWVRFKDEsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZH RVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDIsVnZWLndbaV0pKTsKKyAgICBWeFYud1tp XSArPSBmTVBZOFVTKGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDMsVnZWLndbaV0p KSkKKworCisKKworCisKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyogIDItV0FZIFJFRFVDVElPTiAtIFNBRAorKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMzIsdmRzYWR1aCwiVmRkMzI9dmRzYWR1aChWdXUzMixSdDMyKSIsIlZkZDMy LnV3PXZkc2FkKFZ1dTMyLnVoLFJ0MzIudWgpIiwKKyJEdWFsIFZlY3RvciBIYWxmd29yZCBieSBC eXRlIDQtV2F5IFJlZHVjdGlvbiB0byBXb3JkIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gID0gZkFC UyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLnV3W2ldKSAtIGZHRVRVSEFMRigwLFJ0VikpOworICAg IFZkZFYudlswXS51d1tpXSArPSBmQUJTKGZHRVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0g ZkdFVFVIQUxGKDEsUnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICA9IGZBQlMoZkdFVFVIQUxG KDEsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBWZGRWLnZbMV0u dXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzFdLnV3W2ldKSAtIGZHRVRVSEFMRigx LFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkc2FkdWhf YWNjLCJWeHgzMis9dmRzYWR1aChWdXUzMixSdDMyKSIsIlZ4eDMyLnV3Kz12ZHNhZChWdXUzMi51 aCxSdDMyLnVoKSIsCisiRHVhbCBWZWN0b3IgSGFsZndvcmQgYnkgQnl0ZSA0LVdheSBSZWR1Y3Rp b24gdG8gV29yZCIsCisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1 dVYudlswXS51d1tpXSkgLSBmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0g Kz0gZkFCUyhmR0VUVUhBTEYoMSwgVnV1Vi52WzBdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0Vikp OworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmQUJTKGZHRVRVSEFMRigxLCBWdXVWLnZbMF0udXdb aV0pIC0gZkdFVFVIQUxGKDAsUnRWKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZkdF VFVIQUxGKDAsIFZ1dVYudlsxXS51d1tpXSkgLSBmR0VUVUhBTEYoMSxSdFYpKSkKKworCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICA0LVdBWSBS RURVQ1RJT04gLSBTQUQKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cnNhZHVi aSwiVmRkMzI9dnJzYWR1YihWdXUzMixSdDMyLCN1MSkiLCJWZGQzMi51dz12cnNhZChWdXUzMi51 YixSdDMyLnViLCN1MSkiLAorIkR1YWwgVmVjdG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVk dWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYudlswXS51d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdF VFVCWVRFKDAsIFZ1dVYudlt1aVY/MTowXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAt dWlWKSYzLFJ0VikpKTsKKyAgICBWZGRWLnZbMF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRV QllURSgxLCBWdXVWLnZbMCAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVp VikmMyxSdFYpKSk7CisgICAgVmRkVi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZ VEUoMiwgVnV1Vi52WzAgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYp JjMsUnRWKSkpOworICAgIFZkZFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRF KDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYz LFJ0VikpKTsKKworICAgIFZkZFYudlsxXS51d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRF KDAsIFZ1dVYudlsxICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYz LFJ0VikpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgx LCBWdXVWLnZbMSAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxS dFYpKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwg VnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRW KSkpOworICAgIFZkZFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1 dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0Vikp KSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cnNhZHViaV9hY2Ms IlZ4eDMyKz12cnNhZHViKFZ1dTMyLFJ0MzIsI3UxKSIsIlZ4eDMyLnV3Kz12cnNhZChWdXUzMi51 YixSdDMyLnViLCN1MSkiLAorIkR1YWwgVmVjdG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVk dWN0aW9uIHRvIFdvcmQiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdF VFVCWVRFKDAsIFZ1dVYudlt1aVY/MTowXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAt dWlWKSYzLFJ0VikpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRV QllURSgxLCBWdXVWLnZbMCAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVp VikmMyxSdFYpKSk7CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZ VEUoMiwgVnV1Vi52WzAgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYp JjMsUnRWKSkpOworICAgIFZ4eFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRF KDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYz LFJ0VikpKTsKKworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRF KDAsIFZ1dVYudlsxICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYz LFJ0VikpKTsKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgx LCBWdXVWLnZbMSAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxS dFYpKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwg VnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRW KSkpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1 dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0Vikp KSkKKworCisKKworCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNUT1IgU0hJRlRJ TkcKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKy8vIE1hY3JvIHRvIHNoaWZ0IGFyaXRobWV0aWNhbGx5IGxlZnQv cmlnaHQgYW5kIGJ5IGVpdGhlciBSVCBvciBWdgorCisjZGVmaW5lIFZfU0hJRlQoVFlQRSwgREVT QywgU0laRSwgTE9HU0laRSwgQ0FTVFRZUEUpICAgXAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xP VChTSVpFLHZhc3IjI1RZUEUsICAgIlZkMzI9dmFzciIgI1RZUEUgIihWdTMyLFJ0MzIpIiwiVmQz Mi4iI1RZUEUiPXZhc3IoVnUzMi4iI1RZUEUiLFJ0MzIpIiwgICAgICAgICAiVmVjdG9yIGFyaXRo bWV0aWMgc2hpZnQgcmlnaHQgIiBERVNDLCAgICBWZFYuVFlQRVtpXSAgICAgPSAoVnVWLlRZUEVb aV0gICAgPj4gKFJ0ViAmIChTSVpFLTEpKSkpIFwKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1Qo U0laRSx2YXNsIyNUWVBFLCAgICJWZDMyPXZhc2wiICNUWVBFICIoVnUzMixSdDMyKSIsIlZkMzIu IiNUWVBFIj12YXNsKFZ1MzIuIiNUWVBFIixSdDMyKSIsICAgICAgICAgIlZlY3RvciBhcml0aG1l dGljIHNoaWZ0IGxlZnQgICIgREVTQywgICAgVmRWLlRZUEVbaV0gICAgID0gKFZ1Vi5UWVBFW2ld ICAgIDw8IChSdFYgJiAoU0laRS0xKSkpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJ WkUsdmxzciMjVFlQRSwgICAiVmQzMj12bHNyIiAjVFlQRSAiKFZ1MzIsUnQzMikiLCJWZDMyLnUi I1RZUEUiPXZsc3IoVnUzMi51IiNUWVBFIixSdDMyKSIsICAgICAgICJWZWN0b3IgbG9naWNhbCBz aGlmdCByaWdodCAiICAgIERFU0MsICAgIFZkVi51IyNUWVBFW2ldICA9IChWdVYudSMjVFlQRVtp XSA+PiAoUnRWICYgKFNJWkUtMSkpKSkgXAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpF LHZhc3IjI1RZUEUjI3YsIlZkMzI9dmFzciIgI1RZUEUgIihWdTMyLFZ2MzIpIiwiVmQzMi4iI1RZ UEUiPXZhc3IoVnUzMi4iI1RZUEUiLFZ2MzIuIiNUWVBFIikiLCAiVmVjdG9yIGFyaXRobWV0aWMg c2hpZnQgcmlnaHQgIiBERVNDLCAgICBWZFYuVFlQRVtpXSAgICAgPSBmQklESVJfQVNISUZUUihW dVYuVFlQRVtpXSwgZlNYVE4oKExPR1NJWkUrMSksU0laRSxWdlYuVFlQRVtpXSksQ0FTVFRZUEUp KSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmFzbCMjVFlQRSMjdiwiVmQzMj12 YXNsIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJWZDMyLiIjVFlQRSI9dmFzbChWdTMyLiIjVFlQRSIs VnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCBsZWZ0ICAiIERFU0MsICAg IFZkVi5UWVBFW2ldICAgICA9IGZCSURJUl9BU0hJRlRMKFZ1Vi5UWVBFW2ldLCAgZlNYVE4oKExP R1NJWkUrMSksU0laRSxWdlYuVFlQRVtpXSksQ0FTVFRZUEUpKSBcCitJVEVSQVRPUl9JTlNOMl9T SElGVF9TTE9UKFNJWkUsdmxzciMjVFlQRSMjdiwiVmQzMj12bHNyIiAjVFlQRSAiKFZ1MzIsVnYz MikiLCJWZDMyLiIjVFlQRSI9dmxzcihWdTMyLiIjVFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0 b3IgbG9naWNhbCBzaGlmdCByaWdodCAiICAgIERFU0MsICAgIFZkVi51IyNUWVBFW2ldICA9IGZC SURJUl9MU0hJRlRSKFZ1Vi51IyNUWVBFW2ldLCBmU1hUTigoTE9HU0laRSsxKSxTSVpFLFZ2Vi5U WVBFW2ldKSxDQVNUVFlQRSkpIFwKKworVl9TSElGVCh3LCAid29yZCIsICAgMzIsNSw0XzQpCitW X1NISUZUKGgsICJoYWxmd29yZCIsIDE2LDQsMl8yKQorCitJVEVSQVRPUl9JTlNOX1NISUZUX1NM T1QoOCx2bHNyYiwiVmQzMi51Yj12bHNyKFZ1MzIudWIsUnQzMikiLCJ2ZWMgbG9nIHNoaWZ0IHJp Z2h0IGJ5dGVzIiwgVmRWLmJbaV0gPSBWdVYudWJbaV0gPj4gKFJ0ViAmIDB4NykpCisKK0lURVJB VE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdHIsIlZkMzI9dnJvdHIoVnUzMixWdjMyKSIsIlZk MzIudXc9dnJvdHIoVnUzMi51dyxWdjMyLnV3KSIsIlZlY3RvciB3b3JkIHJvdGF0ZSByaWdodCIs IFZkVi51d1tpXSA9ICgoVnVWLnV3W2ldID4+IChWdlYudXdbaV0gJiAweDFmKSkgfCAoVnVWLnV3 W2ldIDw8ICgzMiAtIChWdlYudXdbaV0gJiAweDFmKSkpKSkKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog TU1WRUNUT1IgU0hJRlQgQU5EIFBFUk1VVEUKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5T TjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMzIsdmFzcl9pbnRvLCJWeHgzMj12YXNyaW50byhW dTMyLFZ2MzIpIiwiVnh4MzIudz12YXNyaW50byhWdTMyLncsVnYzMi53KSIsIkFTUiB2ZWN0b3Ig MSBlbGVtZW50cyBhbmQgb3ZlcmxheSBkcm9wcGluZyBiaXRzIHRvIE1TQiBvZiB2ZWN0b3IgMiBl bGVtZW50cyIsCisgICAgZkhJREUoaW50NjRfdCApIHNoaWZ0ID0gKGZTRTMyXzY0KFZ1Vi53W2ld KSA8PCAzMik7CisgICAgZkhJREUoaW50NjRfdCApIG1hc2sgID0gKCgoZlNFMzJfNjQoVnh4Vi52 WzBdLndbaV0pKSA8PCAzMikgfCBmWkUzMl82NChWeHhWLnZbMF0ud1tpXSkpOworICAgIGZISURF KGludDY0X3QpIGxvbWFzayA9ICgoKGZTRTMyXzY0KDEpKSA8PCAzMikgLSAxKTsKKyAgICBmSElE RShpbnQgKSBjb3VudCA9IC0oMHg0MCAmIFZ2Vi53W2ldKSArIChWdlYud1tpXSAmIDB4M2YpOwor ICAgIGZISURFKGludDY0X3QgKSByZXN1bHQgPSAoY291bnQgPT0gLTB4NDApID8gMCA6ICgoKGNv dW50IDwgMCkgPyAoKHNoaWZ0IDw8IC0oY291bnQpKSB8IChtYXNrICYgKGxvbWFzayA8PCAtKGNv dW50KSkpKSA6ICgoc2hpZnQgPj4gY291bnQpIHwgKG1hc2sgJiAobG9tYXNrID4+IGNvdW50KSkp KSk7CisgICAgVnh4Vi52WzFdLndbaV0gPSAoKHJlc3VsdCA+PiAzMikgJiAweGZmZmZmZmZmKTsK KyAgICBWeHhWLnZbMF0ud1tpXSA9IChyZXN1bHQgJiAweGZmZmZmZmZmKSkKKworI2RlZmluZSBO RVdfTkFSUk9XSU5HX1NISUZUIDEKKworI2lmIE5FV19OQVJST1dJTkdfU0hJRlQKKyNkZWZpbmUg TkFSUk9XSU5HX1NISUZUKElURVJTSVpFLFRBRyxEU1RNLERTVFRZUEUsU1JDVFlQRSxTWU5PUFRT LFNBVEZVTkMsUk5ERlVOQyxTSEFNVE1BU0spIFwKK0lURVJBVE9SX0lOU05fU0hJRlRfU0xPVChJ VEVSU0laRSxUQUcsIFwKKyJWZDMyLiIgI0RTVFRZUEUgIj12YXNyKFZ1MzIuIiAjU1JDVFlQRSAi LFZ2MzIuIiAjU1JDVFlQRSAiLFJ0OCkiICNTWU5PUFRTLCBcCisiVmVjdG9yIHNoaWZ0IHJpZ2h0 IGFuZCBzaHVmZmxlIiwgXAorCWZISURFKGZSVDhOT1RFKCkpXAorICAgIGZISURFKGludCApc2hh bXQgPSBSdFYgJiBTSEFNVE1BU0s7IFwKKyAgICBEU1RNKDAsVmRWLlNSQ1RZUEVbaV0sU0FURlVO QyhSTkRGVU5DKFZ2Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkpOyBcCisgICAgRFNUTSgx LFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5ERlVOQyhWdVYuU1JDVFlQRVtpXSxzaGFtdCkgPj4g c2hhbXQpKSkKKworCisKKworCisvKiBXT1JEIFRPIEhBTEYqLworCitOQVJST1dJTkdfU0hJRlQo MzIsdmFzcndoLGZTRVRIQUxGLGgsdywsZkVDSE8sZlZOT1JPVU5ELDB4RikKK05BUlJPV0lOR19T SElGVCgzMix2YXNyd2hzYXQsZlNFVEhBTEYsaCx3LDpzYXQsZlZTQVRILGZWTk9ST1VORCwweEYp CitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcndocm5kc2F0LGZTRVRIQUxGLGgsdyw6cm5kOnNhdCxm VlNBVEgsZlZST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcnd1aHJuZHNhdCxmU0VU SEFMRix1aCx3LDpybmQ6c2F0LGZWU0FUVUgsZlZST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQo MzIsdmFzcnd1aHNhdCxmU0VUSEFMRix1aCx3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQsMHhGKQor TkFSUk9XSU5HX1NISUZUKDMyLHZhc3J1d3Vocm5kc2F0LGZTRVRIQUxGLHVoLHV3LDpybmQ6c2F0 LGZWU0FUVUgsZlZST1VORCwweEYpCisKK05BUlJPV0lOR19TSElGVF9OT1YxKDMyLHZhc3J1d3Vo c2F0LGZTRVRIQUxGLHVoLHV3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQsMHhGKQorTkFSUk9XSU5H X1NISUZUKDE2LHZhc3JodWJzYXQsZlNFVEJZVEUsdWIsaCw6c2F0LGZWU0FUVUIsZlZOT1JPVU5E LDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNyaHVicm5kc2F0LGZTRVRCWVRFLHViLGgsOnJu ZDpzYXQsZlZTQVRVQixmVlJPVU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNyaGJzYXQs ZlNFVEJZVEUsYixoLDpzYXQsZlZTQVRCLGZWTk9ST1VORCwweDcpCitOQVJST1dJTkdfU0hJRlQo MTYsdmFzcmhicm5kc2F0LGZTRVRCWVRFLGIsaCw6cm5kOnNhdCxmVlNBVEIsZlZST1VORCwweDcp CisKK05BUlJPV0lOR19TSElGVF9OT1YxKDE2LHZhc3J1aHVic2F0LGZTRVRCWVRFLHViLHVoLDpz YXQsZlZTQVRVQixmVk5PUk9VTkQsMHg3KQorTkFSUk9XSU5HX1NISUZUX05PVjEoMTYsdmFzcnVo dWJybmRzYXQsZlNFVEJZVEUsdWIsdWgsOnJuZDpzYXQsZlZTQVRVQixmVlJPVU5ELDB4NykKKwor I2Vsc2UKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoLCJWZDMyPXZhc3J3aChW dTMyLFZ2MzIsUnQ4KSIsIlZkMzIuaD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KSIsCisiVmVjdG9y IGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAor CWZISURFKGZSVDhOT1RFKCkpXAorICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIChWdlYud1tpXSA+ PiAoUnRWICYgMHhGKSkpOworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIChWdVYud1tpXSA+PiAo UnRWICYgMHhGKSkpKQorCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoc2F0 LCJWZDMyPXZhc3J3aChWdTMyLFZ2MzIsUnQ4KTpzYXQiLCJWZDMyLmg9dmFzcihWdTMyLncsVnYz Mi53LFJ0OCk6c2F0IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1 ZmZsZSBldmVuIGhhbGZ3b3JkcyIsCisJZkhJREUoZlJUOE5PVEUoKSlcCisgICAgZlNFVEhBTEYo MCxWZFYud1tpXSwgZlZTQVRIKFZ2Vi53W2ldID4+IChSdFYgJiAweEYpKSk7CisgICAgZlNFVEhB TEYoMSxWZFYud1tpXSwgZlZTQVRIKFZ1Vi53W2ldID4+IChSdFYgJiAweEYpKSkpCisKK0lURVJB VE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndocm5kc2F0LCJWZDMyPXZhc3J3aChWdTMyLFZ2 MzIsUnQ4KTpybmQ6c2F0IiwiVmQzMi5oPXZhc3IoVnUzMi53LFZ2MzIudyxSdDgpOnJuZDpzYXQi LAorIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IHJpZ2h0IHdvcmRzLCBzaHVmZmxlIGV2ZW4gaGFs ZndvcmRzIiwKKwlmSElERShmUlQ4Tk9URSgpKVwKKyAgICBmSElERShpbnQgKSBzaGFtdCA9IFJ0 ViAmIDB4RjsKKyAgICBmU0VUSEFMRigwLFZkVi53W2ldLCBmVlNBVEgoICAoVnZWLndbaV0gKyBm QklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VUSEFM RigxLFZkVi53W2ldLCBmVlNBVEgoICAoVnVWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFt dC0xKSw0XzgpICkgPj4gc2hhbXQpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2 YXNyd3Vocm5kc2F0LCJWZDMyPXZhc3J3dWgoVnUzMixWdjMyLFJ0OCk6cm5kOnNhdCIsIlZkMzIu dWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6cm5kOnNhdCIsCisiVmVjdG9yIGFyaXRobWV0aWMg c2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAorCWZISURFKGZSVDhO T1RFKCkpXAorICAgIGZISURFKGludCApIHNoYW10ID0gUnRWICYgMHhGOworICAgIGZTRVRIQUxG KDAsVmRWLndbaV0sIGZWU0FUVUgoICAoVnZWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFt dC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VUSEFMRigxLFZkVi53W2ldLCBmVlNBVFVI KCAgKFZ1Vi53W2ldICsgZkJJRElSX0FTSElGVEwoMSwoc2hhbXQtMSksNF84KSApID4+IHNoYW10 KSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcnd1aHNhdCwiVmQzMj12YXNy d3VoKFZ1MzIsVnYzMixSdDgpOnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6 c2F0IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVu IGhhbGZ3b3JkcyIsCisJZkhJREUoZlJUOE5PVEUoKSlcCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3 W2ldLCBmVlNBVFVIKFZ2Vi53W2ldID4+IChSdFYgJiAweEYpKSk7CisgICAgZlNFVEhBTEYoMSwg VmRWLnV3W2ldLCBmVlNBVFVIKFZ1Vi53W2ldID4+IChSdFYgJiAweEYpKSkpCisKK0lURVJBVE9S X0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcnV3dWhybmRzYXQsIlZkMzI9dmFzcnV3dWgoVnUzMixW djMyLFJ0OCk6cm5kOnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLnV3LFZ2MzIudXcsUnQ4KTpybmQ6 c2F0IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVu IGhhbGZ3b3JkcyIsCisJZkhJREUoZlJUOE5PVEUoKSlcCisgICAgZkhJREUoaW50ICkgc2hhbXQg PSBSdFYgJiAweEY7CisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgZlZTQVRVSCggIChWdlYudXdb aV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBm U0VUSEFMRigxLFZkVi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi51d1tpXSArIGZCSURJUl9BU0hJRlRM KDEsKHNoYW10LTEpLDRfOCkgKSA+PiBzaGFtdCkpKQorI2VuZGlmCisKKworCitJVEVSQVRPUl9J TlNOMl9TSElGVF9TTE9UKDMyLHZyb3VuZHdoLCJWZDMyPXZyb3VuZHdoKFZ1MzIsVnYzMik6c2F0 IiwiVmQzMi5oPXZyb3VuZChWdTMyLncsVnYzMi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3Jk cyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYo MCwgVmRWLnV3W2ldLCBmVlNBVEgoKFZ2Vi53W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYp KTsKKyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZWU0FUSCgoVnVWLndbaV0gKyBmQ09OU1RM TCgweDgwMDApKSA+PiAxNikpKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZyb3Vu ZHd1aCwiVmQzMj12cm91bmR3dWgoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnVoPXZyb3VuZChWdTMy LncsVnYzMi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUg cmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVI KChWdlYud1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSk7CisgICAgZlNFVEhBTEYoMSwg VmRWLnV3W2ldLCBmVlNBVFVIKChWdVYud1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSkp CisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdW5kdXd1aCwiVmQzMj12cm91bmR1 d3VoKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi51aD12cm91bmQoVnUzMi51dyxWdjMyLnV3KTpzYXQi LAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3 b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChWdlYudXdbaV0gKyBm Q09OU1RMTCgweDgwMDApKSA+PiAxNikpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZlZT QVRVSCgoVnVWLnV3W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKSkKKworCisKKworCisv KiBIQUxGIFRPIEJZVEUqLworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZyb3VuZGhi LCJWZDMyPXZyb3VuZGhiKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi5iPXZyb3VuZChWdTMyLmgsVnYz Mi5oKTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0 YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmVlNBVEIoKFZ2Vi5o W2ldICsgMHg4MCkgPj4gOCkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtpXSwgZlZTQVRCKChW dVYuaFtpXSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2 cm91bmRodWIsIlZkMzI9dnJvdW5kaHViKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi51Yj12cm91bmQo VnUzMi5oLFZ2MzIuaCk6c2F0IiwKKyJWZWN0b3Igcm91bmQgd29yZHMgdG8gaGFsdmVzLCBzaHVm ZmxlIHJlc3VsdGFudCBoYWxmd29yZHMiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51aFtpXSwgZlZT QVRVQigoVnZWLmhbaV0gKyAweDgwKSA+PiA4KSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ld LCBmVlNBVFVCKChWdVYuaFtpXSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJ RlRfU0xPVCgxNix2cm91bmR1aHViLCJWZDMyPXZyb3VuZHVodWIoVnUzMixWdjMyKTpzYXQiLCJW ZDMyLnViPXZyb3VuZChWdTMyLnVoLFZ2MzIudWgpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRz IHRvIGhhbHZlcywgc2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUQllURSgw LCBWZFYudWhbaV0sIGZWU0FUVUIoKFZ2Vi51aFtpXSArIDB4ODApID4+IDgpKTsKKyAgICBmU0VU QllURSgxLCBWZFYudWhbaV0sIGZWU0FUVUIoKFZ1Vi51aFtpXSArIDB4ODApID4+IDgpKSkKKwor CitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZhc2x3X2FjYywiVngzMis9dmFzbHcoVnUz MixSdDMyKSIsIlZ4MzIudys9dmFzbChWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQg d29yZCIsCisgICAgVnhWLndbaV0gICs9ICAoVnVWLndbaV0gPDwgKFJ0ViAmICgzMi0xKSkpKQor CitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZhc3J3X2FjYywiVngzMis9dmFzcncoVnUz MixSdDMyKSIsIlZ4MzIudys9dmFzcihWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQg d29yZCIsCisgICAgVnhWLndbaV0gICs9ICAoVnVWLndbaV0gPj4gKFJ0ViAmICgzMi0xKSkpKQor CitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzbGhfYWNjLCJWeDMyKz12YXNs aChWdTMyLFJ0MzIpIiwiVngzMi5oKz12YXNsKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9yIHNoaWZ0 IGFkZCBoYWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPDwgKFJ0ViAmICgx Ni0xKSkpKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzcmhfYWNjLCJW eDMyKz12YXNyaChWdTMyLFJ0MzIpIiwiVngzMi5oKz12YXNyKFZ1MzIuaCxSdDMyKSIsCisiVmVj dG9yIHNoaWZ0IGFkZCBoYWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPj4g KFJ0ViAmICgxNi0xKSkpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgRUxF TUVOVC1XSVNFIEFSSVRITUVUSUMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyogTUFDUk9TIEdPIElOIE1BQ1JPUy5ERUYgTk9UIEhFUkUhISEKKyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCisKKyNkZWZpbmUgTU1WRUNfQUJTRElGRihUWVBFLFRZUEUyLERFU0NSLCBX SURUSCwgREVTVCxTUkMpXAorSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoV0lEVEgsIHZhYnNkaWZm IyNUWVBFLCAgICAgICAgICAgICAgICAgICAiVmQzMj12YWJzZGlmZiJUWVBFMiIoVnUzMixWdjMy KSIgLCJWZDMyLiIjREVTVCI9dmFic2RpZmYoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiAsICAg ICAiVmVjdG9yIEFic29sdXRlIG9mIERpZmZlcmVuY2UgIkRFU0NSLCAgIFZkVi5ERVNUW2ldID0g KFZ1Vi5TUkNbaV0gPiBWdlYuU1JDW2ldKSA/IChWdVYuU1JDW2ldIC0gVnZWLlNSQ1tpXSkgOiAo VnZWLlNSQ1tpXSAtIFZ1Vi5TUkNbaV0pKQorCisjZGVmaW5lIE1NVkVDX0FERFVfU0FUKFRZUEUs VFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChX SURUSCwgdmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIi KFZ1MzIsVnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMy LiIjU1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgICAgICAg ICAgVmRWLkRFU1RbaV0gPSBmVlVBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ld KSlcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2YWRkIyNUWVBF IyNzYXRfZHYsICAgICJWZGQzMj12YWRkIlRZUEUyIihWdXUzMixWdnYzMik6c2F0IiwgICJWZGQz Mi4iI0RFU1QiPXZhZGQoVnV1MzIuIiNTUkMiLFZ2djMyLiIjU1JDIik6c2F0IiwgIkRvdWJsZSBW ZWN0b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICBWZGRWLnZbMF0uREVTVFtpXSA9IGZWVUFE RFNBVChXSURUSCwgVnV1Vi52WzBdLlNSQ1tpXSxWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFd LkRFU1RbaV0gPSBmVlVBRERTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sVnZ2Vi52WzFdLlNS Q1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdCwg ICAgICAgICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpOnNhdCIsICAgICAi VmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnNhdCIsICAgICJWZWN0 b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5ERVNUW2ldID0gZlZVU1VC U0FUKFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5Z X1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwgdnN1YiMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dnN1 YiJUWVBFMiIoVnV1MzIsVnZ2MzIpOnNhdCIsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMyLiIj U1JDIixWdnYzMi4iI1NSQyIpOnNhdCIsICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJE RVNDUiwgICAgVmRkVi52WzBdLkRFU1RbaV0gPSBmVlVTVUJTQVQoV0lEVEgsIFZ1dVYudlswXS5T UkNbaV0sVnZ2Vi52WzBdLlNSQ1tpXSk7IFZkZFYudlsxXS5ERVNUW2ldID0gZlZVU1VCU0FUKFdJ RFRILCBWdXVWLnZbMV0uU1JDW2ldLFZ2dlYudlsxXS5TUkNbaV0pKVwKKworI2RlZmluZSBNTVZF Q19BRERTX1NBVChUWVBFLFRZUEUyLERFU0NSLCBXSURUSCxERVNULFNSQylcCitJVEVSQVRPUl9J TlNOMl9BTllfU0xPVChXSURUSCwgdmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJW ZDMyPXZhZGQiVFlQRTIiKFZ1MzIsVnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChW dTMyLiIjU1JDIixWdjMyLiIjU1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAi REVTQ1IsICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVlNBRERTQVQoV0lEVEgsICBWdVYuU1JD W2ldLCAgVnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhX SURUSCwgdmFkZCMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dmFkZCJUWVBFMiIoVnV1MzIsVnZ2 MzIpOnNhdCIsICAiVmRkMzIuIiNERVNUIj12YWRkKFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIp OnNhdCIsICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwgICAgVmRkVi52WzBd LkRFU1RbaV0gPSBmVlNBRERTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0sIFZ2dlYudlswXS5T UkNbaV0pOyBWZGRWLnZbMV0uREVTVFtpXSA9IGZWU0FERFNBVChXSURUSCwgVnV1Vi52WzFdLlNS Q1tpXSwgVnZ2Vi52WzFdLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgs IHZzdWIjI1RZUEUjI3NhdCwgICAgICAgICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMy LFZ2MzIpOnNhdCIsICAgICAiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NS QyIpOnNhdCIsICAgICJWZWN0b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZk Vi5ERVNUW2ldID0gZlZTU1VCU0FUKFdJRFRILCAgVnVWLlNSQ1tpXSwgIFZ2Vi5TUkNbaV0pKVwK K0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsIHZzdWIjI1RZUEUjI3Nh dF9kdiwgICAgIlZkZDMyPXZzdWIiVFlQRTIiKFZ1dTMyLFZ2djMyKTpzYXQiLCAgIlZkZDMyLiIj REVTVCI9dnN1YihWdXUzMi4iI1NSQyIsVnZ2MzIuIiNTUkMiKTpzYXQiLCAiRG91YmxlIFZlY3Rv ciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgIFZkZFYudlswXS5ERVNUW2ldID0gZlZTU1VCU0FU KFdJRFRILCBWdXVWLnZbMF0uU1JDW2ldLCBWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRF U1RbaV0gPSBmVlNTVUJTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sIFZ2dlYudlsxXS5TUkNb aV0pKVwKKworI2RlZmluZSBNTVZFQ19BVkdVKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNU LFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2YXZnIyNUWVBFLCAgICAgICAg ICAgICAgICAgICAgICAgICJWZDMyPXZhdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAgICAgICJW ZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgIlZlY3Rv ciBBdmVyYWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZk Vi5ERVNUW2ldID0gZlZBVkdVKCAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwK K0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAg ICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgIlZkMzIuIiNE RVNUIj12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAiVmVjdG9yIEF2ZXJh Z2UgJSBSb3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1Rb aV0gPSBmVkFWR1VSTkQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKyNk ZWZpbmUgTU1WRUNfQVZHUyhUWVBFLFRZUEUyLERFU0NSLCBXSURUSCwgREVTVCxTUkMpXAorSVRF UkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAg ICAgICAiVmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAgIlZkMzIuIiNERVNU Ij12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgICJWZWN0b3IgQXZlcmFn ZSAiREVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtp XSAgPSBmVkFWR1MoICAgICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lU RVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAg ICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgICJWZDMyLiIjREVT VCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJh Z2UgJSBSb3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1Rb aV0gID0gZlZBVkdTUk5EKCAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2bmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAg ICAgICAgICJWZDMyPXZuYXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAiVmQzMi4iI0RF U1QiPXZuYXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgIlZlY3RvciBOZWdh dGl2ZSBBdmVyYWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNU W2ldICA9IGZWTkFWR1MoICAgICAgV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKwor CisKKworCisKKworI2RlZmluZSBNTVZFQ19BRERXUkFQKFRZUEUsVFlQRTIsIERFU0NSLCBXSURU SCAsIERFU1QsU1JDKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUWVBF LCAgICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1MzIsVnYzMikiICwgICAgICJW ZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAiVmVjdG9yIEFk ZCAiREVTQ1IsICAgICAgICAgIFZkVi5ERVNUW2ldID0gIFZ1Vi5TUkNbaV0gKyAgVnZWLlNSQ1tp XSlcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCwgdnN1YiMjVFlQRSwgICAgICAgICAg ICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpIiAsICAgICAiVmQzMi4iI0RFU1Qi PXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgIlZlY3RvciBTdWIgIkRFU0NSLCAg ICAgICAgICBWZFYuREVTVFtpXSA9ICBWdVYuU1JDW2ldIC0gIFZ2Vi5TUkNbaV0pXAorSVRFUkFU T1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwgdmFkZCMjVFlQRSMjX2R2LCAgIlZk ZDMyPXZhZGQiVFlQRTIiKFZ1dTMyLFZ2djMyKSIgLCAgIlZkZDMyLiIjREVTVCI9dmFkZChWdXUz Mi4iI1NSQyIsVnZ2MzIuIiNTUkMiKSIsICJEb3VibGUgVmVjdG9yIEFkZCAiREVTQ1IsICAgVmRk Vi52WzBdLkRFU1RbaV0gPSBWdXVWLnZbMF0uU1JDW2ldICsgVnZ2Vi52WzBdLlNSQ1tpXTsgVmRk Vi52WzFdLkRFU1RbaV0gPSBWdXVWLnZbMV0uU1JDW2ldICsgVnZ2Vi52WzFdLlNSQ1tpXSlcCitJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2c3ViIyNUWVBFIyNfZHYs ICAiVmRkMzI9dnN1YiJUWVBFMiIoVnV1MzIsVnZ2MzIpIiAsICAiVmRkMzIuIiNERVNUIj12c3Vi KFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpIiwgIkRvdWJsZSBWZWN0b3IgU3ViICJERVNDUiwg ICBWZGRWLnZbMF0uREVTVFtpXSA9IFZ1dVYudlswXS5TUkNbaV0gLSBWdnZWLnZbMF0uU1JDW2ld OyBWZGRWLnZbMV0uREVTVFtpXSA9IFZ1dVYudlsxXS5TUkNbaV0gLSBWdnZWLnZbMV0uU1JDW2ld KSBcCisKKworCisKKworLyogV3JhcHBpbmcgQWRkcyAqLworTU1WRUNfQUREV1JBUChiLCAgICAi YiIsICAgICJCeXRlIiwgICAgICAgICA4LCAgIGIsIGIpOworTU1WRUNfQUREV1JBUChoLCAgICAi aCIsICAgICJIYWxmd29yZCIsICAgICAxNiwgIGgsIGgpOworTU1WRUNfQUREV1JBUCh3LCAgICAi dyIsICAgICJXb3JkIiwgICAgICAgICAzMiwgICB3LCAgICB3KTsKKworLyogU2F0dXJhdGluZyBB ZGRzICovCitNTVZFQ19BRERVX1NBVCh1YiwgInViIiwgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAg ICAgOCwgICB1YiwgICAgdWIpOworTU1WRUNfQUREVV9TQVQodWgsICJ1aCIsICAgICJVbnNpZ25l ZCBIYWxmd29yZCIsICAgIDE2LCAgdWgsICAgIHVoKTsKK01NVkVDX0FERFVfU0FUKHV3LCAidXci LCAgICAiVW5zaWduZWQgd29yZCIsICAgIDMyLCAgdXcsICAgIHV3KTsKK01NVkVDX0FERFNfU0FU KGIsICAiYiIsICAgICAiYnl0ZSIsICAgICAgICAgICAgIDgsICBiLCAgICAgYik7CitNTVZFQ19B RERTX1NBVChoLCAgImgiLCAgICAgIkhhbGZ3b3JkIiwgICAgICAgICAgICAgMTYsICBoLCAgICAg aCk7CitNTVZFQ19BRERTX1NBVCh3LCAgInciLCAgICAgIldvcmQiLCAgICAgICAgICAgICAgICAg MzIsICB3LCAgICAgdyk7CisKKworLyogQXZlcmFnaW5nIEluc3RydWN0aW9ucyAqLworTU1WRUNf QVZHVSh1YiwidWIiLCAgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgOCwgICB1YiwgICB1Yik7CitN TVZFQ19BVkdVKHVoLCJ1aCIsICAgICAiVW5zaWduZWQgSGFsZndvcmQiLCAxNiwgIHVoLCAgIHVo KTsKK01NVkVDX0FWR1VfTk9WMSh1dywidXciLCAgICAgIlVuc2lnbmVkIFdvcmQiLCAgICAgMzIs ICB1dywgICB1dyk7CitNTVZFQ19BVkdTX05PVjEoYiwgICAiYiIsICAgICJCeXRlIiwgICAgICAg ICAgICAgICA4LCAgIGIsICAgYik7CitNTVZFQ19BVkdTKGgsICAgImgiLCAgICAiSGFsZndvcmQi LCAgICAgICAgICAxNiwgICBoLCAgIGgpOworTU1WRUNfQVZHUyh3LCAgICJ3IiwgICAgIldvcmQi LCAgICAgICAgICAgICAgMzIsICAgdywgICB3KTsKKworCisvKiBBYnNvbHV0ZSBEaWZmZXJlbmNl ICovCitNTVZFQ19BQlNESUZGKHViLCJ1YiIsICAiVW5zaWduZWQgQnl0ZSIsICAgICAgICA4LCAg IHViLCAgICB1Yik7CitNTVZFQ19BQlNESUZGKHVoLCJ1aCIsICAiVW5zaWduZWQgSGFsZndvcmQi LCAgICAxNiwgIHVoLCAgICB1aCk7CitNTVZFQ19BQlNESUZGKGgsImgiLCAgICAgICAgIkhhbGZ3 b3JkIiwgICAgICAgICAgICAgMTYsICB1aCwgICAgaCk7CitNTVZFQ19BQlNESUZGKHcsInciLCAg ICAgICAgIldvcmQiLCAgICAgICAgICAgICAgICAgMzIsICB1dywgICAgdyk7CisKK0lURVJBVE9S X0lOU04yX0FOWV9TTE9UKDgsdm5hdmd1YiwgIlZkMzI9dm5hdmd1YihWdTMyLFZ2MzIpIiwgIlZk MzIuYj12bmF2ZyhWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgTmVnYXRpdmUgQXZlcmFnZSBV bnNpZ25lZCBCeXRlIiwgVmRWLmJbaV0gICA9IGZWTkFWR1UoOCwgVnVWLnViW2ldLCBWdlYudWJb aV0pKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZhZGRjYXJyeXNhdCwiVmQzMi53PXZh ZGQoVnUzMi53LFZ2MzIudyxRczQpOmNhcnJ5OnNhdCIsImFkZCB3L2NhcnJ5IGFuZCBzYXR1cmF0 ZSIsCitWZFYud1tpXSA9IGZWU0FUVyhWdVYud1tpXStWdlYud1tpXStmR0VUUUJJVChRc1YsaSo0 KSkpCisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoMzIsdmFkZGNhcnJ5LCJWZDMyLnc9dmFkZChW dTMyLncsVnYzMi53LFF4NCk6Y2FycnkiLCJhZGQgdy9jYXJyeSIsCitWZFYud1tpXSA9IFZ1Vi53 W2ldK1Z2Vi53W2ldK2ZHRVRRQklUKFF4VixpKjQpOworZlNFVFFCSVRTKFF4Viw0LDB4Riw0Kmks LWZDQVJSWV9GUk9NX0FERDMyKFZ1Vi53W2ldLFZ2Vi53W2ldLGZHRVRRQklUKFF4VixpKjQpKSkp CisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoMzIsdnN1YmNhcnJ5LCJWZDMyLnc9dnN1YihWdTMy LncsVnYzMi53LFF4NCk6Y2FycnkiLCJhZGQgdy9jYXJyeSIsCitWZFYud1tpXSA9IFZ1Vi53W2ld K35WdlYud1tpXStmR0VUUUJJVChReFYsaSo0KTsKK2ZTRVRRQklUUyhReFYsNCwweEYsNCppLC1m Q0FSUllfRlJPTV9BREQzMihWdVYud1tpXSx+VnZWLndbaV0sZkdFVFFCSVQoUXhWLGkqNCkpKSkK KworSVRFUkFUT1JfSU5TTl9BTllfU0xPVCgzMix2YWRkY2FycnlvLCJWZDMyLncsUWU0PXZhZGQo VnUzMi53LFZ2MzIudyk6Y2FycnkiLCJhZGQgdy9jYXJyeSBvdXQtb25seSIsCitWZFYud1tpXSA9 IFZ1Vi53W2ldK1Z2Vi53W2ldOworZlNFVFFCSVRTKFFlViw0LDB4Riw0KmksLWZDQVJSWV9GUk9N X0FERDMyKFZ1Vi53W2ldLFZ2Vi53W2ldLDApKSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVCgz Mix2c3ViY2FycnlvLCJWZDMyLncsUWU0PXZzdWIoVnUzMi53LFZ2MzIudyk6Y2FycnkiLCJzdWJ0 cmFjdCB3L2NhcnJ5IG91dC1vbmx5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rflZ2Vi53W2ldKzE7 CitmU0VUUUJJVFMoUWVWLDQsMHhGLDQqaSwtZkNBUlJZX0ZST01fQUREMzIoVnVWLndbaV0sflZ2 Vi53W2ldLDEpKSkKKworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZzYXRkdywiVmQzMi53 PXZzYXRkdyhWdTMyLncsVnYzMi53KSIsIlNhdHVyYXRlIGZyb20gNjQtYml0cyAoaGlnaGVyIDMy LWJpdHMgY29tZSBmcm9tIGZpcnN0IHZlY3RvcikgdG8gMzItYml0cyIsVmRWLndbaV0gPSBmVlNB VERXKFZ1Vi53W2ldLFZ2Vi53W2ldKSkKKworCisjZGVmaW5lIE1NVkVDX0FERFNBVF9NSVgoVEFH RU5ELFNBVEYsV0lEVEgsREVTVCxTUkMxLFNSQzIpXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVChX SURUSCwgdmFkZCMjVEFHRU5ELCJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDMSIsVnYzMi4i I1NSQzIiKTpzYXQiLCAgICAiVmVjdG9yIEFkZCBtaXhlZCIsIFZkVi5ERVNUW2ldID0gIFNBVEYo VnVWLlNSQzFbaV0gKyAgVnZWLlNSQzJbaV0pKVwKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoV0lE VEgsIHZzdWIjI1RBR0VORCwiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQzEiLFZ2MzIuIiNT UkMyIik6c2F0IiwgICAgIlZlY3RvciBTdWIgbWl4ZWQiLCBWZFYuREVTVFtpXSA9ICBTQVRGKFZ1 Vi5TUkMxW2ldIC0gIFZ2Vi5TUkMyW2ldKSlcCisKK01NVkVDX0FERFNBVF9NSVgodWJ1YmJfc2F0 LGZWU0FUVUIsOCx1Yix1YixiKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAg IFdJREVOSU5HCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZhZGR1YmgsIlZkZDMyPXZhZGR1YihWdTMy LFZ2MzIpIiwiVmRkMzIuaD12YWRkKFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBhZGRpdGlv biB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlswXS5oW2ldID0gZlpF OF8xNihmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSkgKyBmWkU4XzE2KGZHRVRVQllURSgwLCBWdlYu dWhbaV0pKTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1Vi51 aFtpXSkpICsgZlpFOF8xNihmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdnN1YnViaCwiVmRkMzI9dnN1YnViKFZ1MzIsVnYz MikiLCJWZGQzMi5oPXZzdWIoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIHN1YnRyYWN0aW9u IHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVmRkVi52WzBdLmhbaV0gPSBmWkU4 XzE2KGZHRVRVQllURSgwLCBWdVYudWhbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ2Vi51 aFtpXSkpOworICAgIFZkZFYudlsxXS5oW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnVWLnVo W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgxLCBWdlYudWhbaV0pKSkKKworCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmFkZGh3LCJWZGQzMj12YWRkaChWdTMyLFZ2 MzIpIiwiVmRkMzIudz12YWRkKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0 aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZHRVRIQUxG KDAsIFZ1Vi53W2ldKSArIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKTsKKyAgICBWZGRWLnZbMV0ud1tp XSA9IGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSArIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2c3ViaHcsIlZkZDMyPXZzdWJoKFZ1 MzIsVnYzMikiLCJWZGQzMi53PXZzdWIoVnUzMi5oLFZ2MzIuaCkiLAorIlZlY3RvciBzdWJ0cmFj dGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlswXS53W2ldID0g ZkdFVEhBTEYoMCwgVnVWLndbaV0pIC0gZkdFVEhBTEYoMCwgVnZWLndbaV0pOworICAgIFZkZFYu dlsxXS53W2ldID0gZkdFVEhBTEYoMSwgVnVWLndbaV0pIC0gZkdFVEhBTEYoMSwgVnZWLndbaV0p KQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmFkZHVodywiVmRk MzI9dmFkZHVoKFZ1MzIsVnYzMikiLCJWZGQzMi53PXZhZGQoVnUzMi51aCxWdjMyLnVoKSIsCisi VmVjdG9yIGFkZGl0aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVmRkVi52 WzBdLndbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkgKyBmWkUxNl8zMihm R0VUVUhBTEYoMCwgVnZWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmWkUxNl8zMihm R0VUVUhBTEYoMSwgVnVWLnV3W2ldKSkgKyBmWkUxNl8zMihmR0VUVUhBTEYoMSwgVnZWLnV3W2ld KSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnN1YnVodywiVmRk MzI9dnN1YnVoKFZ1MzIsVnYzMikiLCJWZGQzMi53PXZzdWIoVnUzMi51aCxWdjMyLnVoKSIsCisi VmVjdG9yIHN1YnRyYWN0aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVmRk Vi52WzBdLndbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkgLSBmWkUxNl8z MihmR0VUVUhBTEYoMCwgVnZWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmWkUxNl8z MihmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSkgLSBmWkUxNl8zMihmR0VUVUhBTEYoMSwgVnZWLnV3 W2ldKSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZhZGRo d19hY2MsIlZ4eDMyKz12YWRkaChWdTMyLFZ2MzIpIiwiVnh4MzIudys9dmFkZChWdTMyLmgsVnYz Mi5oKSIsCisiVmVjdG9yIGFkZGl0aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisg ICAgVnh4Vi52WzBdLndbaV0gKz0gZkdFVEhBTEYoMCwgVnVWLndbaV0pICsgZkdFVEhBTEYoMCwg VnZWLndbaV0pOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSAr IGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygzMix2YWRkdWh3X2FjYywiVnh4MzIrPXZhZGR1aChWdTMyLFZ2MzIpIiwiVnh4MzIudys9 dmFkZChWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0aCB3aWRlbiBpbnRv IHR3byB2ZWN0b3JzIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmR0VUVUhBTEYoMCwgVnVWLndb aV0pICsgZkdFVFVIQUxGKDAsIFZ2Vi53W2ldKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBmR0VU VUhBTEYoMSwgVnVWLndbaV0pICsgZkdFVFVIQUxGKDEsIFZ2Vi53W2ldKSkKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2YWRkdWJoX2FjYywiVnh4MzIrPXZhZGR1YihW dTMyLFZ2MzIpIiwiVnh4MzIuaCs9dmFkZChWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgYWRk aXRpb24gd2l0aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWeHhWLnZbMF0uaFtpXSAr PSBmR0VUVUJZVEUoMCwgVnVWLmhbaV0pICsgZkdFVFVCWVRFKDAsIFZ2Vi5oW2ldKTsKKyAgICBW eHhWLnZbMV0uaFtpXSArPSBmR0VUVUJZVEUoMSwgVnVWLmhbaV0pICsgZkdFVFVCWVRFKDEsIFZ2 Vi5oW2ldKSkKKworCitERUZfQ1ZJX01BUFBJTkcoVjZfdmQwLCAgIlZkMzI9IzAiLCAgIlZkMzI9 dnhvcihWMzEsVjMxKSIpCitERUZfQ1ZJX01BUFBJTkcoVjZfdmRkMCwgICJWZGQzMj0jMCIsICAi VmRkMzIudz12c3ViKFYzMTozMC53LFYzMTozMC53KSIpCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyogICBDb25kaXRpb25hbAorKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworI2RlZmluZSBDT05EQUREU1VCKFdJRFRILFRBR0VORCxMSFNZTixSSFNZTixERVNDUixM SEJFSCxSSEJFSCkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmFkZCMjVEFHRU5E IyNxLCJpZiAoUXY0LiIjVEFHRU5EIikgIkxIU1lOIis9IlJIU1lOLCJpZiAoUXY0KSAiTEhTWU4i Kz0iUkhTWU4sREVTQ1IsTEhCRUg9ZkNPTkRNQVNLIyNXSURUSChRdlYsaSxMSEJFSCtSSEJFSCxM SEJFSCkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZzdWIjI1RBR0VORCMjcSwi aWYgKFF2NC4iI1RBR0VORCIpICJMSFNZTiItPSJSSFNZTiwiaWYgKFF2NCkgIkxIU1lOIi09IlJI U1lOLERFU0NSLExIQkVIPWZDT05ETUFTSyMjV0lEVEgoUXZWLGksTEhCRUgtUkhCRUgsTEhCRUgp KSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2YWRkIyNUQUdFTkQjI25xLCJpZiAo IVF2NC4iI1RBR0VORCIpICJMSFNZTiIrPSJSSFNZTiwiaWYgKCFRdjQpICJMSFNZTiIrPSJSSFNZ TixERVNDUixMSEJFSD1mQ09ORE1BU0sjI1dJRFRIKFF2VixpLExIQkVILExIQkVIK1JIQkVIKSkg XAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdnN1YiMjVEFHRU5EIyNucSwiaWYgKCFR djQuIiNUQUdFTkQiKSAiTEhTWU4iLT0iUkhTWU4sImlmICghUXY0KSAiTEhTWU4iLT0iUkhTWU4s REVTQ1IsTEhCRUg9ZkNPTkRNQVNLIyNXSURUSChRdlYsaSxMSEJFSCxMSEJFSC1SSEJFSCkpIFwK KworQ09OREFERFNVQig4LGIsIlZ4MzIuYiIsIlZ1MzIuYiIsIkNvbmRpdGlvbmFsIGFkZC9zdWIg Qnl0ZSIsVnhWLnViW2ldLFZ1Vi51YltpXSkKK0NPTkRBRERTVUIoMTYsaCwiVngzMi5oIiwiVnUz Mi5oIiwiQ29uZGl0aW9uYWwgYWRkL3N1YiBIYWxmIixWeFYuaFtpXSxWdVYuaFtpXSkKK0NPTkRB RERTVUIoMzIsdywiVngzMi53IiwiVnUzMi53IiwiQ29uZGl0aW9uYWwgYWRkL3N1YiBXb3JkIixW eFYud1tpXSxWdVYud1tpXSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgQUJTT0xVVEUgVkFMVUVTCisqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFY2NQorSVRFUkFUT1JfSU5T TjJfQU5ZX1NMT1RfTk9WMSg4LHZhYnNiLCAgICAgICAgIlZkMzI9dmFic2IoVnUzMikiLCAgICAg IlZkMzIuYj12YWJzKFZ1MzIuYikiLCAgICAgIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiBieXRl cyIsICAgIFZkVi5iW2ldICA9ICBmQUJTKFZ1Vi5iW2ldKSkKK0lURVJBVE9SX0lOU04yX0FOWV9T TE9UX05PVjEoOCx2YWJzYl9zYXQsICAgICJWZDMyPXZhYnNiKFZ1MzIpOnNhdCIsICJWZDMyLmI9 dmFicyhWdTMyLmIpOnNhdCIsICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2YgYnl0ZXMiLCAgICBW ZFYuYltpXSAgPSAgZlZTQVRCKGZBQlMoZlNFOF8xNihWdVYuYltpXSkpKSkKKworCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVCgxNix2YWJzaCwgICAgICAgICJWZDMyPXZhYnNoKFZ1MzIpIiwgICAg ICJWZDMyLmg9dmFicyhWdTMyLmgpIiwgICAgICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2YgaGFs ZndvcmRzIiwgICAgVmRWLmhbaV0gID0gIGZBQlMoVnVWLmhbaV0pKQorSVRFUkFUT1JfSU5TTjJf QU5ZX1NMT1QoMTYsdmFic2hfc2F0LCAgICAiVmQzMj12YWJzaChWdTMyKTpzYXQiLCAiVmQzMi5o PXZhYnMoVnUzMi5oKTpzYXQiLCAiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIGhhbGZ3b3JkcyIs ICAgIFZkVi5oW2ldICA9ICBmVlNBVEgoZkFCUyhmU0UxNl8zMihWdVYuaFtpXSkpKSkKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UKDMyLHZhYnN3LCAgICAgICAgIlZkMzI9dmFic3coVnUzMikiLCAg ICAgIlZkMzIudz12YWJzKFZ1MzIudykiLCAgICAgIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3 b3JkcyIsICAgICAgICBWZFYud1tpXSAgPSAgZkFCUyhWdVYud1tpXSkpCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVCgzMix2YWJzd19zYXQsICAgICJWZDMyPXZhYnN3KFZ1MzIpOnNhdCIsICJWZDMy Lnc9dmFicyhWdTMyLncpOnNhdCIsICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLCAg ICAgICAgVmRWLndbaV0gID0gIGZWU0FUVyhmQUJTKGZTRTMyXzY0KFZ1Vi53W2ldKSkpKQorCisK K0RFRl9DVklfTUFQUElORyhWNl92YWJzdWJfYWx0LCAgIlZkMzIudWI9dmFicyhWdTMyLmIpIiwg ICJWZDMyLmI9dmFicyhWdTMyLmIpIikKK0RFRl9DVklfTUFQUElORyhWNl92YWJzdWhfYWx0LCAg IlZkMzIudWg9dmFicyhWdTMyLmgpIiwgICJWZDMyLmg9dmFicyhWdTMyLmgpIikKK0RFRl9DVklf TUFQUElORyhWNl92YWJzdXdfYWx0LCAgIlZkMzIudXc9dmFicyhWdTMyLncpIiwgICJWZDMyLnc9 dmFicyhWdTMyLncpIikKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBNTVZFQ1RPUiBN VUxUSVBMSUNBVElPTlMKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiBCeXRlIGJ5IEJ5dGUg Ki8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ2LCJWZGQzMj12 bXB5YihWdTMyLFZ2MzIpIiwiVmRkMzIuaD12bXB5KFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3Ig YWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZkZFYudlswXS5oW2ldID0gIGZNUFk4U1Mo ZkdFVEJZVEUoMCwgVnVWLmhbaV0pLCBmR0VUQllURSgwLCBWdlYuaFtpXSkpOworICAgIFZkZFYu dlsxXS5oW2ldID0gIGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLmhbaV0pLCBmR0VUQllURSgxLCBW dlYuaFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHli dl9hY2MsIlZ4eDMyKz12bXB5YihWdTMyLFZ2MzIpIiwiVnh4MzIuaCs9dm1weShWdTMyLmIsVnYz Mi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0u aFtpXSArPSAgZk1QWThTUyhmR0VUQllURSgwLCBWdVYuaFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5o W2ldKSk7CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gIGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLmhb aV0pLCBmR0VUQllURSgxLCBWdlYuaFtpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMTYsdm1weXVidiwiVmRkMzI9dm1weXViKFZ1MzIsVnYzMikiLCJWZGQzMi51 aD12bXB5KFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3Jk cyIsCisgICAgVmRkVi52WzBdLnVoW2ldID0gIGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1Vi51aFtp XSksIGZHRVRVQllURSgwLCBWdlYudWhbaV0pICk7CisgICAgVmRkVi52WzFdLnVoW2ldID0gIGZN UFk4VVUoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRVQllURSgxLCBWdlYudWhbaV0pICkp CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weXVidl9hY2MsIlZ4 eDMyKz12bXB5dWIoVnUzMixWdjMyKSIsIlZ4eDMyLnVoKz12bXB5KFZ1MzIudWIsVnYzMi51Yiki LAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4Vi52WzBdLnVoW2ld ICs9ICBmTVBZOFVVKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoMCwgVnZWLnVo W2ldKSApOworICAgIFZ4eFYudlsxXS51aFtpXSArPSAgZk1QWThVVShmR0VUVUJZVEUoMSwgVnVW LnVoW2ldKSwgZkdFVFVCWVRFKDEsIFZ2Vi51aFtpXSkgKSkKKworCisKKworCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1c3YsIlZkZDMyPXZtcHlidXMoVnUz MixWdjMyKSIsIlZkZDMyLmg9dm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZlY3RvciBhYnNvbHV0 ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVmRkVi52WzBdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZ VEUoMCwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoMCwgVnZWLmhbaV0pKTsKKyAgICBWZGRWLnZbMV0u aFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgxLCBWdlYu aFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlidXN2 X2FjYywiVnh4MzIrPXZtcHlidXMoVnUzMixWdjMyKSIsIlZ4eDMyLmgrPXZtcHkoVnUzMi51YixW djMyLmIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlsw XS5oW2ldICArPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgwLCBW dlYuaFtpXSkpOworICAgIFZ4eFYudlsxXS5oW2ldICArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBW dVYudWhbaV0pLCBmR0VUQllURSgxLCBWdlYuaFtpXSkpKQorCisKKworCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcGFidXN2LCJWZGQzMj12bXBhYnVzKFZ1dTMyLFZ2 djMyKSIsIlZkZDMyLmg9dm1wYShWdXUzMi51YixWdnYzMi5iKSIsCisiVmVydGljYWwgQnl0ZSBN dWx0aXBseSIsCisgICAgVmRkVi52WzBdLmhbaV0gPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVW LnZbMF0udWhbaV0pLCBmR0VUQllURSgwLCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4VVMoZkdF VFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDAsIFZ2dlYudlsxXS51aFtpXSkp OworICAgIFZkZFYudlsxXS5oW2ldID0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVo W2ldKSwgZkdFVEJZVEUoMSwgVnZ2Vi52WzBdLnVoW2ldKSkgKyBmTVBZOFVTKGZHRVRVQllURSgx LCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgxLCBWdnZWLnZbMV0udWhbaV0pKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXBhYnV1diwiVmRkMzI9dm1wYWJ1 dShWdXUzMixWdnYzMikiLCJWZGQzMi5oPXZtcGEoVnV1MzIudWIsVnZ2MzIudWIpIiwKKyJWZXJ0 aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZNUFk4VVUoZkdFVFVC WVRFKDAsIFZ1dVYudlswXS51aFtpXSksIGZHRVRVQllURSgwLCBWdnZWLnZbMF0udWhbaV0pKSAr IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgwLCBWdnZW LnZbMV0udWhbaV0pKTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZNUFk4VVUoZkdFVFVCWVRFKDEs IFZ1dVYudlswXS51aFtpXSksIGZHRVRVQllURSgxLCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4 VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgxLCBWdnZWLnZbMV0u dWhbaV0pKSkKKworCisKKworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2bXB5aHYsIlZkZDMyPXZtcHloKFZ1MzIsVnYzMikiLCJWZGQzMi53PXZtcHkoVnUzMi5o LFZ2MzIuaCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorICAgIFZk ZFYudlswXS53W2ldID0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUSEFMRigw LCBWdlYud1tpXSkpOworICAgIFZkZFYudlsxXS53W2ldID0gZk1QWTE2U1MoZkdFVEhBTEYoMSwg VnVWLndbaV0pLCBmR0VUSEFMRigxLCBWdlYud1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlodl9hY2MsIlZ4eDMyKz12bXB5aChWdTMyLFZ2MzIpIiwi Vnh4MzIudys9dm1weShWdTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29y ZCBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwg VnVWLndbaV0pLCBmR0VUSEFMRigwLCBWdlYud1tpXSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9 IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSkK KworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5dWh2LCJWZGQzMj12 bXB5dWgoVnUzMixWdjMyKSIsIlZkZDMyLnV3PXZtcHkoVnUzMi51aCxWdjMyLnVoKSIsCisiVmVj dG9yIGJ5IFZlY3RvciBVbnNpZ25lZCBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRkVi52WzBd LnV3W2ldID0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksIGZHRVRVSEFMRigwLCBW dlYudXdbaV0pKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gPSBmTVBZMTZVVShmR0VUVUhBTEYoMSwg VnVWLnV3W2ldKSwgZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHl1aHZfYWNjLCJWeHgzMis9dm1weXVoKFZ1MzIsVnYz MikiLCJWeHgzMi51dys9dm1weShWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9y IFVuc2lnbmVkIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZk1Q WTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsK KyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSks IGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworCisKKy8qIFZlY3RvciBieSBWZWN0b3IgKi8K K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWh2c3JzLCJWZDMyPXZt cHloKFZ1MzIsVnYzMik6PDwxOnJuZDpzYXQiLCJWZDMyLmg9dm1weShWdTMyLmgsVnYzMi5oKTo8 PDE6cm5kOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggcm91bmQsIHNoaWZ0 LCBhbmQgc2F0MTYiLAorICAgIFZkVi5oW2ldID0gZlZTQVRIKGZHRVRIQUxGKDEsZlZTQVQoZlJP VU5EKChmTVBZMTZTUyhWdVYuaFtpXSxWdlYuaFtpXSAgICApPDwxKSkpKSkpCisKKworCisKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHVzLCAiVmRkMzI9dm1w eWh1cyhWdTMyLFZ2MzIpIiwiVmRkMzIudz12bXB5KFZ1MzIuaCxWdjMyLnVoKSIsCisiVmVjdG9y IGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmTVBZ MTZTVShmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsKKyAg ICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNVKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdFVFVI QUxGKDEsIFZ2Vi51d1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdm1weWh1c19hY2MsICJWeHgzMis9dm1weWh1cyhWdTMyLFZ2MzIpIiwiVnh4MzIudys9 dm1weShWdTMyLmgsVnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlw bHkiLAorICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsIFZ1Vi53W2ld KSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkx NlNVKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpKQorCisK KworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlpaCwiVmQzMj12 bXB5aWgoVnUzMixWdjMyKSIsIlZkMzIuaD12bXB5aShWdTMyLmgsVnYzMi5oKSIsCisiVmVjdG9y IGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRWLmhbaV0gPSBmTVBZMTZTUyhW dVYuaFtpXSwgVnZWLmhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDE2LHZtcHlpaF9hY2MsIlZ4MzIrPXZtcHlpaChWdTMyLFZ2MzIpIiwiVngzMi5oKz12bXB5aShW dTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisg ICAgVnhWLmhbaV0gKz0gZk1QWTE2U1MoVnVWLmhbaV0sIFZ2Vi5oW2ldKSkKKworCisKKy8qIDMy eDMyIGhpZ2ggaGFsZiAvIGZyYWMgKi8KKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDKDMyLHZtcHlld3VoLCJWZDMyPXZtcHlld3VoKFZ1MzIsVnYzMikiLCJWZDMyLnc9dm1w eWUoVnUzMi53LFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5 IiwKK1ZkVi53W2ldID0gZk1QWTMyMTZTVShWdVYud1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi53W2ld KSkgPj4gMTYpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weW93 aCwiVmQzMj12bXB5b3doKFZ1MzIsVnYzMik6PDwxOnNhdCIsIlZkMzIudz12bXB5byhWdTMyLncs VnYzMi5oKTo8PDE6c2F0IiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwK K1ZkVi53W2ldID0gZlZTQVRXKCgoKGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2 Vi53W2ldKSkgPj4gMTQpICsgMCkgPj4gMSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9E T1VCTEVfVkVDKDMyLHZtcHlvd2hfcm5kLCJWZDMyPXZtcHlvd2goVnUzMixWdjMyKTo8PDE6cm5k OnNhdCIsIlZkMzIudz12bXB5byhWdTMyLncsVnYzMi5oKTo8PDE6cm5kOnNhdCIsCisiVmVjdG9y IGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCitWZFYud1tpXSA9IGZWU0FUVygoKChmTVBZ MzIxNlNTKFZ1Vi53W2ldLCBmR0VUSEFMRigxLCBWdlYud1tpXSkpID4+IDE0KSArIDEpID4+IDEp KSkKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlld3VoXzY0LCJW ZGQzMj12bXB5ZShWdTMyLncsVnYzMi51aCkiLAorIldvcmQgdGltZXMgSGFsZndvcmQgTXVsdGlw bHksIDY0LWJpdCByZXN1bHQiLAorCWZISURFKHNpemU4c190IHByb2Q7KQorCXByb2QgPSBmTVBZ MzJTVShWdVYud1tpXSxmR0VUVUhBTEYoMCxWdlYud1tpXSkpOworCVZkZFYudlsxXS53W2ldID0g cHJvZCA+PiAxNjsKKwlWZGRWLnZbMF0ud1tpXSA9IHByb2QgPDwgMTYpCisKK0lURVJBVE9SX0lO U05fTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5b3doXzY0X2FjYywiVnh4MzIrPXZtcHlvKFZ1 MzIudyxWdjMyLmgpIiwKKyJXb3JkIHRpbWVzIEhhbGZ3b3JkIE11bHRpcGx5LCA2NC1iaXQgcmVz dWx0IiwKKwlmSElERShzaXplOHNfdCBwcm9kOykKKwlwcm9kID0gZk1QWTMyU1MoVnVWLndbaV0s ZkdFVEhBTEYoMSxWdlYud1tpXSkpICArIGZTRTMyXzY0KFZ4eFYudlsxXS53W2ldKTsKKwlWeHhW LnZbMV0ud1tpXSA9IHByb2QgPj4gMTY7CisJZlNFVEhBTEYoMCwgVnh4Vi52WzBdLndbaV0sIFZ4 eFYudlswXS53W2ldID4+IDE2KTsKKwlmU0VUSEFMRigxLCBWeHhWLnZbMF0ud1tpXSwgcHJvZCAm IDB4MDAwMGZmZmYpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZt cHlvd2hfc2FjYywiVngzMis9dm1weW93aChWdTMyLFZ2MzIpOjw8MTpzYXQ6c2hpZnQiLCJWeDMy LncrPXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpzYXQ6c2hpZnQiLAorIlZlY3RvciBieSBWZWN0 b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVBRCgpIFZ4Vi53W2ldID0gZlZTQVRXKCgoKChW eFYud1tpXSArIGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkpID4+ IDE0KSArIDApID4+IDEpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2bXB5b3doX3JuZF9zYWNjLCJWeDMyKz12bXB5b3doKFZ1MzIsVnYzMik6PDwxOnJuZDpzYXQ6 c2hpZnQiLCJWeDMyLncrPXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpybmQ6c2F0OnNoaWZ0IiwK KyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKK0lWMURFQUQoKSBWeFYud1tp XSA9IGZWU0FUVygoKCgoVnhWLndbaV0gKyBmTVBZMzIxNlNTKFZ1Vi53W2ldLCBmR0VUSEFMRigx LCBWdlYud1tpXSkpKSA+PiAxNCkgKyAxKSA+PiAxKSkpCisKKy8qIEZvciAzMngzMiBpbnRlZ2Vy IC8gbG93IGhhbGYgKi8KKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVCgzMix2bXB5aWVvaCwiVmQz Mi53PXZtcHlpZW8oVnUzMi5oLFZ2MzIuaCkiLCJPZGQvRXZlbiBtdWx0aXBseSBmb3IgMzJ4MzIg bG93IGhhbGYiLAorCVZkVi53W2ldID0gKGZHRVRIQUxGKDAsVnVWLndbaV0pKmZHRVRIQUxGKDEs VnZWLndbaV0pKSA8PCAxNikKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2bXB5aWV3dWgsIlZkMzI9dm1weWlld3VoKFZ1MzIsVnYzMikiLCJWZDMyLnc9dm1weWllKFZ1 MzIudyxWdjMyLnVoKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBXb3JkIGJ5IEhhbGZ3b3JkIE11bHRp cGx5IiwKK0lWMURFQUQoKSAgICBWZFYud1tpXSA9IGZNUFkzMjE2U1UoVnVWLndbaV0sIGZHRVRV SEFMRigwLCBWdlYud1tpXSkpICkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2bXB5aW93aCwiVmQzMj12bXB5aW93aChWdTMyLFZ2MzIpIiwiVmQzMi53PXZtcHlpbyhW dTMyLncsVnYzMi5oKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBXb3JkIGJ5IEhhbGZ3b3JkIE11bHRp cGx5IiwKK0lWMURFQUQoKSAgICBWZFYud1tpXSA9IGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRI QUxGKDEsIFZ2Vi53W2ldKSkgKQorCisvKiBBZGQgYmFjayB0aGVzZS4uLiAqLworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpZXdoX2FjYywiVngzMis9dm1weWll d2goVnUzMixWdjMyKSIsIlZ4MzIudys9dm1weWllKFZ1MzIudyxWdjMyLmgpIiwKKyJWZWN0b3Ig YnkgVmVjdG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorVnhWLndbaV0gPSBWeFYud1tp XSArIGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSkgKQorCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpZXd1aF9hY2MsIlZ4MzIrPXZt cHlpZXd1aChWdTMyLFZ2MzIpIiwiVngzMi53Kz12bXB5aWUoVnUzMi53LFZ2MzIudWgpIiwKKyJW ZWN0b3IgYnkgVmVjdG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorVnhWLndbaV0gPSBW eFYud1tpXSArIGZNUFkzMjE2U1UoVnVWLndbaV0sIGZHRVRVSEFMRigwLCBWdlYud1tpXSkpICkK KworCisKKworCisKKworLyogVmVjdG9yIGJ5IFNjYWxhciAqLworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5dWIsIlZkZDMyPXZtcHl1YihWdTMyLFJ0MzIpIiwiVmRk MzIudWg9dm1weShWdTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Yg d29yZHMiLAorICAgIFZkZFYudlswXS51aFtpXSAgPSBmTVBZOFVVKGZHRVRVQllURSgwLCBWdVYu dWhbaV0pLCBmR0VUVUJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0udWhbaV0g ID0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKCgyKmkrMSklNCwg UnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weXViX2Fj YywiVnh4MzIrPXZtcHl1YihWdTMyLFJ0MzIpIiwiVnh4MzIudWgrPXZtcHkoVnUzMi51YixSdDMy LnViKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0u dWhbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKCgyKmkr MCklNCwgUnRWKSk7CisgICAgVnh4Vi52WzFdLnVoW2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEs IFZ1Vi51aFtpXSksIGZHRVRVQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1cywiVmRkMzI9dm1weWJ1cyhWdTMyLFJ0 MzIpIiwiVmRkMzIuaD12bXB5KFZ1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZh bHVlIG9mIHdvcmRzIiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgw LCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZkZFYudlsxXS5o W2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgyKmkrMSkl NCwgUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1 c19hY2MsIlZ4eDMyKz12bXB5YnVzKFZ1MzIsUnQzMikiLCJWeHgzMi5oKz12bXB5KFZ1MzIudWIs UnQzMi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZb MF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMipp KzApJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEs IFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXBhYnVzLCJWZGQzMj12bXBhYnVzKFZ1dTMyLFJ0 MzIpIiwiVmRkMzIuaD12bXBhKFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlcnRpY2FsIEJ5dGUgTXVs dGlwbHkiLAorICAgIFZkZFYudlswXS5oW2ldID0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52 WzBdLnVoW2ldKSwgZkdFVEJZVEUoMCwgUnRWKSkgKyBmTVBZMTZTUyhmR0VUVUJZVEUoMCwgVnV1 Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoMSwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gPSBm TVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgyLCBSdFYpKSAr IGZNUFkxNlNTKGZHRVRVQllURSgxLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgzLCBSdFYp KSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXBhYnVzX2FjYywi Vnh4MzIrPXZtcGFidXMoVnV1MzIsUnQzMikiLCJWeHgzMi5oKz12bXBhKFZ1dTMyLnViLFJ0MzIu YikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS5oW2ldICs9IGZN UFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKDAsIFJ0VikpICsg Zk1QWTE2U1MoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDEsIFJ0Vikp OworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlswXS51 aFtpXSksIGZHRVRCWVRFKDIsIFJ0VikpICsgZk1QWTE2U1MoZkdFVFVCWVRFKDEsIFZ1dVYudlsx XS51aFtpXSksIGZHRVRCWVRFKDMsIFJ0VikpKQorCisvLyBWNjUKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQ19OT1YxKDE2LHZtcGFidXUsIlZkZDMyPXZtcGFidXUoVnV1MzIs UnQzMikiLCJWZGQzMi5oPXZtcGEoVnV1MzIudWIsUnQzMi51YikiLAorIlZlcnRpY2FsIEJ5dGUg TXVsdGlwbHkiLAorICAgIFZkZFYudlswXS51aFtpXSA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1 dVYudlswXS51aFtpXSksIGZHRVRVQllURSgwLCBSdFYpKSArIGZNUFk4VVUoZkdFVFVCWVRFKDAs IFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgxLCBSdFYpKTsKKyAgICBWZGRWLnZbMV0udWhb aV0gPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMiwg UnRWKSkgKyBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUo MywgUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMSgxNix2 bXBhYnV1X2FjYywiVnh4MzIrPXZtcGFidXUoVnV1MzIsUnQzMikiLCJWeHgzMi5oKz12bXBhKFZ1 dTMyLnViLFJ0MzIudWIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWeHhWLnZb MF0udWhbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVFVC WVRFKDAsIFJ0VikpICsgZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzFdLnVoW2ldKSwgZkdF VFVCWVRFKDEsIFJ0VikpOworICAgIFZ4eFYudlsxXS51aFtpXSArPSBmTVBZOFVVKGZHRVRVQllU RSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMiwgUnRWKSkgKyBmTVBZOFVVKGZHRVRV QllURSgxLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMywgUnRWKSkpCisKKworCisKKy8q IEhhbGYgYnkgQnl0ZSAqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2 bXBhaGIsIlZkZDMyPXZtcGFoYihWdXUzMixSdDMyKSIsIlZkZDMyLnc9dm1wYShWdXUzMi5oLFJ0 MzIuYikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS53W2ldID0g Zk1QWTE2U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDAs IFJ0VikpKSArIGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihm R0VUQllURSgxLCBSdFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFM RigxLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2 U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDMsIFJ0Vikp KSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXBhaGJfYWNjLCJW eHgzMis9dm1wYWhiKFZ1dTMyLFJ0MzIpIiwiVnh4MzIudys9dm1wYShWdXUzMi5oLFJ0MzIuYiki LAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFkx NlNTKGZHRVRIQUxGKDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgwLCBSdFYp KSkgKyBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZ VEUoMSwgUnRWKSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEs IFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgyLCBSdFYpKSkgKyBmTVBZMTZTUyhm R0VUSEFMRigxLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMywgUnRWKSkpKQor CisvKiBIYWxmIGJ5IEJ5dGUgKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MzIsdm1wYXVoYiwiVmRkMzI9dm1wYXVoYihWdXUzMixSdDMyKSIsIlZkZDMyLnc9dm1wYShWdXUz Mi51aCxSdDMyLmIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0u d1tpXSA9IGZNUFkxNlVTKGZHRVRVSEFMRigwLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdF VEJZVEUoMCwgUnRWKSkpICsgZk1QWTE2VVMoZkdFVFVIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSwg ZlNFOF8xNihmR0VUQllURSgxLCBSdFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZV UyhmR0VUVUhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0Vikp KSArIGZNUFkxNlVTKGZHRVRVSEFMRigxLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZ VEUoMywgUnRWKSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZt cGF1aGJfYWNjLCJWeHgzMis9dm1wYXVoYihWdXUzMixSdDMyKSIsIlZ4eDMyLncrPXZtcGEoVnV1 MzIudWgsUnQzMi5iKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBd LndbaV0gKz0gZk1QWTE2VVMoZkdFVFVIQUxGKDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihm R0VUQllURSgwLCBSdFYpKSkgKyBmTVBZMTZVUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzFdLndbaV0p LCBmU0U4XzE2KGZHRVRCWVRFKDEsIFJ0VikpKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBmTVBZ MTZVUyhmR0VUVUhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0 VikpKSArIGZNUFkxNlVTKGZHRVRVSEFMRigxLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdF VEJZVEUoMywgUnRWKSkpKQorCisKKworCisKKworCisvKiBIYWxmIGJ5IEhhbGYgKi8KK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWgsIlZkZDMyPXZtcHloKFZ1MzIs UnQzMikiLCJWZGQzMi53PXZtcHkoVnUzMi5oLFJ0MzIuaCkiLAorIlZlY3RvciBhYnNvbHV0ZSB2 YWx1ZSBvZiB3b3JkcyIsCisgICAgVmRkVi52WzBdLndbaV0gPSAgZk1QWTE2U1MoZkdFVEhBTEYo MCwgVnVWLndbaV0pLCBmR0VUSEFMRigwLCBSdFYpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9ICBm TVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFJ0VikpKQorCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDX05PVjEoMzIsdm1weWhfYWNjLCJWeHgzMis9 dm1weWgoVnUzMixSdDMyKSIsIlZ4eDMyLncrPXZtcHkoVnUzMi5oLFJ0MzIuaCkiLAorIlZlY3Rv ciBldmVuIGhhbGZ3b3JkcyB3aXRoIHNjYWxhciBsb3dlciBoYWxmd29yZCBtdWx0aXBseSB3aXRo IHNoaWZ0IGFuZCBzYXQzMiIsCisgICAgVnh4Vi52WzBdLndbaV0gPSAgZkNBU1Q4cyhWeHhWLnZb MF0ud1tpXSkgKyBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRIQUxGKDAsIFJ0 VikpOworICAgIFZ4eFYudlsxXS53W2ldID0gIGZDQVNUOHMoVnh4Vi52WzFdLndbaV0pICsgZk1Q WTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUSEFMRigxLCBSdFYpKSkKKworCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHloc2F0X2FjYywiVnh4MzIrPXZt cHloKFZ1MzIsUnQzMik6c2F0IiwiVnh4MzIudys9dm1weShWdTMyLmgsUnQzMi5oKTpzYXQiLAor IlZlY3RvciBldmVuIGhhbGZ3b3JkcyB3aXRoIHNjYWxhciBsb3dlciBoYWxmd29yZCBtdWx0aXBs eSB3aXRoIHNoaWZ0IGFuZCBzYXQzMiIsCisgICAgVnh4Vi52WzBdLndbaV0gPSAgZlZTQVRXKGZD QVNUOHMoVnh4Vi52WzBdLndbaV0pICsgZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBm R0VUSEFMRigwLCBSdFYpKSk7CisgICAgVnh4Vi52WzFdLndbaV0gPSAgZlZTQVRXKGZDQVNUOHMo Vnh4Vi52WzFdLndbaV0pICsgZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUSEFM RigxLCBSdFYpKSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMy LHZtcHloc3MsIlZkMzI9dm1weWgoVnUzMixSdDMyKTo8PDE6c2F0IiwiVmQzMi5oPXZtcHkoVnUz Mi5oLFJ0MzIuaCk6PDwxOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIGJ5IGhhbGZ3b3JkIG11bHRp cGx5LCBzaGlmdCBieSAxLCBhbmQgdGFrZSB1cHBlciAxNiBtc2IiLAorICAgICAgICAgIGZTRVRI QUxGKDAsVmRWLndbaV0sZlZTQVRIKGZHRVRIQUxGKDEsZlZTQVQoKGZNUFkxNlNTKGZHRVRIQUxG KDAsVnVWLndbaV0pLGZHRVRIQUxGKDAsUnRWKSk8PDEpKSkpKTsKKyAgICAgICAgICBmU0VUSEFM RigxLFZkVi53W2ldLGZWU0FUSChmR0VUSEFMRigxLGZWU0FUKChmTVBZMTZTUyhmR0VUSEFMRigx LFZ1Vi53W2ldKSxmR0VUSEFMRigxLFJ0VikpPDwxKSkpKSk7CispCisKK0lURVJBVE9SX0lOU04y X01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWhzcnMsIlZkMzI9dm1weWgoVnUzMixSdDMyKTo8 PDE6cm5kOnNhdCIsIlZkMzIuaD12bXB5KFZ1MzIuaCxSdDMyLmgpOjw8MTpybmQ6c2F0IiwKKyJW ZWN0b3IgaGFsZndvcmQgd2l0aCBzY2FsYXIgaGFsZndvcmQgbXVsdGlwbHkgd2l0aCByb3VuZCwg c2hpZnQsIGFuZCBzYXQxNiIsCisgICAgICAgZlNFVEhBTEYoMCxWZFYud1tpXSxmVlNBVEgoZkdF VEhBTEYoMSxmVlNBVChmUk9VTkQoKGZNUFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRI QUxGKDAsUnRWKSk8PDEpKSkpKSk7CisgICAgICAgZlNFVEhBTEYoMSxWZFYud1tpXSxmVlNBVEgo ZkdFVEhBTEYoMSxmVlNBVChmUk9VTkQoKGZNUFkxNlNTKGZHRVRIQUxGKDEsVnVWLndbaV0pLGZH RVRIQUxGKDEsUnRWKSk8PDEpKSkpKSk7CispCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2bXB5dWgsIlZkZDMyPXZtcHl1aChWdTMyLFJ0MzIpIiwiVmRkMzIudXc9 dm1weShWdTMyLnVoLFJ0MzIudWgpIiwKKyJWZWN0b3IgZXZlbiBoYWxmd29yZCB1bnNpZ25lZCBt dWx0aXBseSBieSBzY2FsYXIiLAorICAgIFZkZFYudlswXS51d1tpXSA9IGZNUFkxNlVVKGZHRVRV SEFMRigwLCBWdVYudXdbaV0pLGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZkZFYudlsxXS51d1tp XSA9IGZNUFkxNlVVKGZHRVRVSEFMRigxLCBWdVYudXdbaV0pLGZHRVRVSEFMRigxLFJ0VikpKQor CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weXVoX2FjYywiVnh4 MzIrPXZtcHl1aChWdTMyLFJ0MzIpIiwiVnh4MzIudXcrPXZtcHkoVnUzMi51aCxSdDMyLnVoKSIs CisiVmVjdG9yIGV2ZW4gaGFsZndvcmQgdW5zaWduZWQgbXVsdGlwbHkgYnkgc2NhbGFyIiwKKyAg ICBWeHhWLnZbMF0udXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksZkdF VFVIQUxGKDAsUnRWKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZNUFkxNlVVKGZHRVRVSEFM RigxLCBWdVYudXdbaV0pLGZHRVRVSEFMRigxLFJ0VikpKQorCisKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIEhBTEYgQlkgQllURQorKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVCgxNix2bXB5aWhiLCJWZDMyPXZtcHlpaGIoVnUzMixSdDMyKSIsIlZkMzIuaD12bXB5 aShWdTMyLmgsUnQzMi5iKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBs b3dlciByZXN1bHQiLAorVmRWLmhbaV0gID0gZk1QWTE2U1MoVnVWLmhbaV0sIGZHRVRCWVRFKGkg JSA0LCBSdFYpICkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDE2LHZtcHlpaGJfYWNjLCJW eDMyKz12bXB5aWhiKFZ1MzIsUnQzMikiLCJWeDMyLmgrPXZtcHlpKFZ1MzIuaCxSdDMyLmIpIiwK KyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitWeFYu aFtpXSArPSBmTVBZMTZTUyhWdVYuaFtpXSwgZkdFVEJZVEUoaSAlIDQsIFJ0VikgKSkKKworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIFdPUkQgQlkg QllURQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2bXB5aXdiLCJWZDMyPXZtcHlpd2IoVnUzMixSdDMyKSIs IlZkMzIudz12bXB5aShWdTMyLncsUnQzMi5iKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0 aXBseSwga2VlcCBsb3dlciByZXN1bHQiLAorVmRWLndbaV0gID0gZk1QWTMyU1MoVnVWLndbaV0s IGZHRVRCWVRFKGkgJSA0LCBSdFYpICkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZt cHlpd2JfYWNjLCJWeDMyKz12bXB5aXdiKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZtcHlpKFZ1MzIu dyxSdDMyLmIpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJl c3VsdCIsCitWeFYud1tpXSArPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEJZVEUoaSAlIDQsIFJ0 VikgKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdm1weWl3dWIsIlZkMzI9dm1weWl3 dWIoVnUzMixSdDMyKSIsIlZkMzIudz12bXB5aShWdTMyLncsUnQzMi51YikiLAorIlZlY3RvciB3 b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1ZkVi53W2ldICA9IGZN UFkzMlNTKFZ1Vi53W2ldLCBmR0VUVUJZVEUoaSAlIDQsIFJ0VikgKSkKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1QoMzIsdm1weWl3dWJfYWNjLCJWeDMyKz12bXB5aXd1YihWdTMyLFJ0MzIpIiwi VngzMi53Kz12bXB5aShWdTMyLncsUnQzMi51YikiLAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUgbXVs dGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi53W2ldICs9IGZNUFkzMlNTKFZ1Vi53W2ld LCBmR0VUVUJZVEUoaSAlIDQsIFJ0VikgKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyogIFdPUkQgQlkgSEFMRgorKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDKDMyLHZtcHlpd2gsIlZkMzI9dm1weWl3aChWdTMyLFJ0MzIpIiwiVmQzMi53PXZtcHlp KFZ1MzIudyxSdDMyLmgpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxv d2VyIHJlc3VsdCIsCitWZFYud1tpXSAgPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEhBTEYoaSAl IDIsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlp d2hfYWNjLCJWeDMyKz12bXB5aXdoKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZtcHlpKFZ1MzIudyxS dDMyLmgpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3Vs dCIsCitWeFYud1tpXSArPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEhBTEYoaSAlIDIsIFJ0Vikp KQorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqIE1NVkVDVE9SIExPR0lDQUwgT1BFUkFUSU9OUworICogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor SVRFUkFUT1JfSU5TTl9BTllfU0xPVCgxNix2YW5kLCJWZDMyPXZhbmQoVnUzMixWdjMyKSIsICJW ZWN0b3IgTG9naWNhbCBBbmQiLCBWZFYudWhbaV0gPSBWdVYudWhbaV0gJiBWdlYuaFtpXSkKK0lU RVJBVE9SX0lOU05fQU5ZX1NMT1QoMTYsdm9yLCAiVmQzMj12b3IoVnUzMixWdjMyKSIsICAiVmVj dG9yIExvZ2ljYWwgT3IiLCBWZFYudWhbaV0gPSBWdVYudWhbaV0gfCBWdlYuaFtpXSkKK0lURVJB VE9SX0lOU05fQU5ZX1NMT1QoMTYsdnhvciwiVmQzMj12eG9yKFZ1MzIsVnYzMikiLCAiVmVjdG9y IExvZ2ljYWwgWE9SIiwgICAgVmRWLnVoW2ldID0gVnVWLnVoW2ldIF4gVnZWLmhbaV0pCitJVEVS QVRPUl9JTlNOX0FOWV9TTE9UKDE2LHZub3QsIlZkMzI9dm5vdChWdTMyKSIsICAgICAiVmVjdG9y IExvZ2ljYWwgTk9UIiwgVmRWLnVoW2ldID0gflZ1Vi51aFtpXSkKKworCisKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9MQVRFKDgsIHZhbmRxcnQsCisiVmQzMi51Yj12YW5kKFF1NC51YixS dDMyLnViKSIsICJWZDMyPXZhbmQoUXU0LFJ0MzIpIiwgIkluc2VydCBQcmVkaWNhdGUgaW50byBW ZWN0b3IiLAorICAgIFZkVi51YltpXSA9IGZHRVRRQklUKFF1VixpKSA/IGZHRVRVQllURShpICUg NCwgUnRWKSA6IDApCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZHFydF9h Y2MsCisiVngzMi51Ynw9dmFuZChRdTQudWIsUnQzMi51YikiLCAiVngzMnw9dmFuZChRdTQsUnQz MikiLCAgIkluc2VydCBQcmVkaWNhdGUgaW50byBWZWN0b3IiLAorICAgIFZ4Vi51YltpXSB8PSAo ZkdFVFFCSVQoUXVWLGkpKSA/IGZHRVRVQllURShpICUgNCwgUnRWKSA6IDApCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZG5xcnQsCisiVmQzMi51Yj12YW5kKCFRdTQudWIs UnQzMi51YikiLCAiVmQzMj12YW5kKCFRdTQsUnQzMikiLCAiSW5zZXJ0IFByZWRpY2F0ZSBpbnRv IFZlY3RvciIsCisgICAgVmRWLnViW2ldID0gIWZHRVRRQklUKFF1VixpKSA/IGZHRVRVQllURShp ICUgNCwgUnRWKSA6IDApCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZG5x cnRfYWNjLAorIlZ4MzIudWJ8PXZhbmQoIVF1NC51YixSdDMyLnViKSIsICJWeDMyfD12YW5kKCFR dTQsUnQzMikiLCAgIkluc2VydCBQcmVkaWNhdGUgaW50byBWZWN0b3IiLAorICAgIFZ4Vi51Yltp XSB8PSAhKGZHRVRRQklUKFF1VixpKSkgPyBmR0VUVUJZVEUoaSAlIDQsIFJ0VikgOiAwKQorCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZHZydCwKKyJRZDQudWI9dmFuZChW dTMyLnViLFJ0MzIudWIpIiwgIlFkND12YW5kKFZ1MzIsUnQzMikiLCAiSW5zZXJ0IGludG8gUHJl ZGljYXRlIiwKKyAgICBmU0VUUUJJVChRZFYsaSwoKFZ1Vi51YltpXSAmIGZHRVRVQllURShpICUg NCwgUnRWKSkgIT0gMCkgPyAxIDogMCkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUo OCwgdmFuZHZydF9hY2MsCisiUXg0LnVifD12YW5kKFZ1MzIudWIsUnQzMi51YikiLCAiUXg0fD12 YW5kKFZ1MzIsUnQzMikiLCAiSW5zZXJ0IGludG8gUHJlZGljYXRlICIsCisgICAgZlNFVFFCSVQo UXhWLGksZkdFVFFCSVQoUXhWLGkpfCgoKFZ1Vi51YltpXSAmIGZHRVRVQllURShpICUgNCwgUnRW KSkgIT0gMCkgPyAxIDogMCkpKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgsdmFuZHZxdiwi VmQzMj12YW5kKFF2NCxWdTMyKSIsIk1hc2sgb2ZmIGJ5dGVzIiwKK1ZkVi5iW2ldID0gZkdFVFFC SVQoUXZWLGkpID8gVnVWLmJbaV0gOiAwKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVCg4LHZhbmR2 bnF2LCJWZDMyPXZhbmQoIVF2NCxWdTMyKSIsIk1hc2sgb2ZmIGJ5dGVzIiwKK1ZkVi5iW2ldID0g IWZHRVRRQklUKFF2VixpKSA/IFZ1Vi5iW2ldIDogMCkKKworCisgLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29tcGFyZSBWZWN0b3Igd2l0 aCBWZWN0b3IKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisjZGVmaW5lIFZDTVAoREVTVCwgQVNSQywgQVNSQ09QLCBDTVAsIE4sIFNSQywgTUFT SywgV0lEVEgpICAgICAgICBcCit7IFwKKyAgICAgICBmb3IoZkhJREUoaW50KSBpID0gMDsgaSA8 IGZWQllURVMoKTsgaSArPSBXSURUSCkgeyBcCisJCWZTRVRRQklUUyhERVNULFdJRFRILE1BU0ss aSxBU1JDIEFTUkNPUCAoKFZ1Vi5TUkNbaS9XSURUSF0gQ01QIFZ2Vi5TUkNbaS9XSURUSF0pID8g TUFTSyA6IDApKTsgXAorICAgIH0gXAorICAgICAgIH0KKworI2RlZmluZSBNTVZFQ19DTVBFUU1B UChULFQyLFQzKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfTUFQX2VxIyNULCAgICAgICJRZDQ9dmNt cC5lcShWdTMyLiIgVDIgIixWdjMyLiIgVDIgIikiLCAiUWQ0PXZjbXAuZXEoVnUzMi4iIFQzICIs VnYzMi4iIFQzICIpIikgXAorREVGX0NWSV9NQVBQSU5HKFY2X01BUF9lcSMjVCMjX2FuZCwiUXg0 Jj12Y21wLmVxKFZ1MzIuIiBUMiAiLFZ2MzIuIiBUMiAiKSIsICJReDQmPXZjbXAuZXEoVnUzMi4i IFQzICIsVnYzMi4iIFQzICIpIikgXAorREVGX0NWSV9NQVBQSU5HKFY2X01BUF9lcSMjVCMjX2lv ciwiUXg0fD12Y21wLmVxKFZ1MzIuIiBUMiAiLFZ2MzIuIiBUMiAiKSIsICJReDR8PXZjbXAuZXEo VnUzMi4iIFQzICIsVnYzMi4iIFQzICIpIikgXAorREVGX0NWSV9NQVBQSU5HKFY2X01BUF9lcSMj VCMjX3hvciwiUXg0Xj12Y21wLmVxKFZ1MzIuIiBUMiAiLFZ2MzIuIiBUMiAiKSIsICJReDRePXZj bXAuZXEoVnUzMi4iIFQzICIsVnYzMi4iIFQzICIpIikKKworI2RlZmluZSBNTVZFQ19DTVBHVChU WVBFLFRZUEUyLFRZUEUzLERFU0NSLE4sTUFTSyxXSURUSCxTUkMpIFwKK0VYVElOU04oVjZfdmd0 IyNUWVBFLCAgICAgICAiUWQ0PXZjbXAuZ3QoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUyICIp IiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJD RSksIERFU0NSIiBncmVhdGVyIHRoYW4iLCBcCisJVkNNUChRZFYsICwgLCA+LCBOLCBTUkMsIE1B U0ssIFdJRFRIKSkgXAorRVhUSU5TTihWNl92Z3QjI1RZUEUjI19hbmQsICJReDQmPXZjbXAuZ3Qo VnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WQSxBX05PVEVfQU5ZX1JFU09VUkNFKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiB3aXRo IHByZWRpY2F0ZS1hbmQiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxp KSwgJiwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmd0IyNUWVBFIyNf b3IsICAiUXg0fD12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSksIERFU0NS IiBncmVhdGVyIHRoYW4gd2l0aCBwcmVkaWNhdGUtb3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklU UyhReFYsV0lEVEgsTUFTSyxpKSwgfCwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElO U04oVjZfdmd0IyNUWVBFIyNfeG9yLCAiUXg0Xj12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIu IiBUWVBFMiAiKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FO WV9SRVNPVVJDRSksIERFU0NSIiBncmVhdGVyIHRoYW4gd2l0aCBwcmVkaWNhdGUteG9yIiwgXAor CVZDTVAoUXhWLCBmR0VUUUJJVFMoUXhWLFdJRFRILE1BU0ssaSksIF4sID4sIE4sIFNSQywgTUFT SywgV0lEVEgpKQorCisjZGVmaW5lIE1NVkVDX0NNUChUWVBFLFRZUEUyLFRZUEUzLERFU0NSLE4s TUFTSywgV0lEVEgsIFNSQylcCitNTVZFQ19DTVBHVChUWVBFLFRZUEUyLFRZUEUzLERFU0NSLE4s TUFTSyxXSURUSCxTUkMpIFwKK0VYVElOU04oVjZfdmVxIyNUWVBFLCAgICAgICAiUWQ0PXZjbXAu ZXEoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUyICIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04s QV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSksIERFU0NSIiBlcXVhbCB0byIsIFwK KwlWQ01QKFFkViwgLCAsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAorRVhUSU5TTihWNl92 ZXEjI1RZUEUjI19hbmQsICJReDQmPXZjbXAuZXEoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUy ICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxBX05PVEVfQU5ZX1JFU09V UkNFKSwgREVTQ1IiIGVxdWFsdG8gd2l0aCBwcmVkaWNhdGUtYW5kIiwgXAorCVZDTVAoUXhWLCBm R0VUUUJJVFMoUXhWLFdJRFRILE1BU0ssaSksICYsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkg XAorRVhUSU5TTihWNl92ZXEjI1RZUEUjI19vciwgICJReDR8PXZjbXAuZXEoVnUzMi4iIFRZUEUy ICIsVnYzMi4iIFRZUEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxB X05PVEVfQU5ZX1JFU09VUkNFKSwgREVTQ1IiIGVxdWFsdG8gd2l0aCBwcmVkaWNhdGUtb3IiLCBc CisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwgfCwgPT0sIE4sIFNSQywg TUFTSywgV0lEVEgpKSBcCitFWFRJTlNOKFY2X3ZlcSMjVFlQRSMjX3hvciwgIlF4NF49dmNtcC5l cShWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIikiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJX1ZBLEFfTk9URV9BTllfUkVTT1VSQ0UpLCBERVNDUiIgZXF1YWx0byB3aXRoIHBy ZWRpY2F0ZS14b3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwg XiwgPT0sIE4sIFNSQywgTUFTSywgV0lEVEgpKQorCisKK01NVkVDX0NNUCh3LCJ3IiwiIiwiVmVj dG9yIFdvcmQgQ29tcGFyZSAiLCBmVkVMRU0oMzIpLCAweEYsIDQsIHcpCitNTVZFQ19DTVAoaCwi aCIsIiIsIlZlY3RvciBIYWxmIENvbXBhcmUgIiwgZlZFTEVNKDE2KSwgMHgzLCAyLCBoKQorTU1W RUNfQ01QKGIsImIiLCIiLCJWZWN0b3IgSGFsZiBDb21wYXJlICIsIGZWRUxFTSg4KSwgIDB4MSwg MSwgYikKK01NVkVDX0NNUEdUKHV3LCJ1dyIsIiIsIlZlY3RvciBVbnNpZ25lZCBIYWxmIENvbXBh cmUgIiwgZlZFTEVNKDMyKSwgMHhGLCA0LHV3KQorTU1WRUNfQ01QR1QodWgsInVoIiwiIiwiVmVj dG9yIFVuc2lnbmVkIEhhbGYgQ29tcGFyZSAiLCBmVkVMRU0oMTYpLCAweDMsIDIsdWgpCitNTVZF Q19DTVBHVCh1YiwidWIiLCIiLCJWZWN0b3IgVW5zaWduZWQgQnl0ZSBDb21wYXJlICIsIGZWRUxF TSg4KSwgIDB4MSwgMSx1YikKKworTU1WRUNfQ01QRVFNQVAodXcsInV3IiwidyIpCitNTVZFQ19D TVBFUU1BUCh1aCwidWgiLCJoIikKK01NVkVDX0NNUEVRTUFQKHViLCJ1YiIsImIiKQorCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBQ cmVkaWNhdGUgT3BlcmF0aW9ucworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCitFWFRJTlNOKFY2X3ByZWRfc2NhbGFyMiwgIlFkND12c2V0cShS dDMyKSIsICAgICAgICAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCxBX05PVEVf UEVSTVVURV9SRVNPVVJDRSksICAgIlNldCBWZWN0b3IgUHJlZGljYXRlICIsCit7CisgICAgZkhJ REUoaW50IGk7KQorICAgIGZvcihpID0gMDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VUUUJJVChR ZFYsaSwoaSA8IChSdFYgJiAoZlZCWVRFUygpLTEpKSkgPyAxIDogMCk7Cit9KQorCitFWFRJTlNO KFY2X3ByZWRfc2NhbGFyMnYyLCAiUWQ0PXZzZXRxMihSdDMyKSIsICAgICAgICAgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSksICAgIlNl dCBWZWN0b3IgUHJlZGljYXRlICIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZvcihpID0g MDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VUUUJJVChRZFYsaSwoaSA8PSAoKFJ0Vi0xKSAmIChm VkJZVEVTKCktMSkpKSA/IDEgOiAwKTsKK30pCisKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9E T1VCTEVfVkVDKDgsIHNodWZmZXF3LCAiUWQ0Lmg9dnNodWZmZShRczQudyxRdDQudykiLCJTaHJp bmsgUHJlZGljYXRlIiwgZlNFVFFCSVQoUWRWLGksIChpICYgMikgPyBmR0VUUUJJVChRc1YsaS0y KSA6IGZHRVRRQklUKFF0VixpKSApICk7CitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9W RUMoOCwgc2h1ZmZlcWgsICJRZDQuYj12c2h1ZmZlKFFzNC5oLFF0NC5oKSIsIlNocmluayBQcmVk aWNhdGUiLCBmU0VUUUJJVChRZFYsaSwgKGkgJiAxKSA/IGZHRVRRQklUKFFzVixpLTEpIDogZkdF VFFCSVQoUXRWLGkpICkgKTsKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBw cmVkX29yLCAiUWQ0PW9yKFFzNCxRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBPciIsIGZTRVRRQklU KFFkVixpLGZHRVRRQklUKFFzVixpKSB8fCBmR0VUUUJJVChRdFYsaSkgKSApOworSVRFUkFUT1Jf SU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfYW5kLCAiUWQ0PWFuZChRczQsUXQ0KSIs IlZlY3RvciBQcmVkaWNhdGUgQW5kIiwgZlNFVFFCSVQoUWRWLGksZkdFVFFCSVQoUXNWLGkpICYm IGZHRVRRQklUKFF0VixpKSApICk7CitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMo OCwgcHJlZF94b3IsICJRZDQ9eG9yKFFzNCxRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBYb3IiLCBm U0VUUUJJVChRZFYsaSxmR0VUUUJJVChRc1YsaSkgXiBmR0VUUUJJVChRdFYsaSkgKSApOworSVRF UkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfb3JfbiwgIlFkND1vcihRczQs IVF0NCkiLCJWZWN0b3IgUHJlZGljYXRlIE9yIHdpdGggbm90IiwgZlNFVFFCSVQoUWRWLGksZkdF VFFCSVQoUXNWLGkpIHx8ICFmR0VUUUJJVChRdFYsaSkgKSApOworSVRFUkFUT1JfSU5TTl9BTllf U0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfYW5kX24sICJRZDQ9YW5kKFFzNCwhUXQ0KSIsIlZlY3Rv ciBQcmVkaWNhdGUgQW5kICB3aXRoIG5vdCIsIGZTRVRRQklUKFFkVixpLGZHRVRRQklUKFFzVixp KSAmJiAhZkdFVFFCSVQoUXRWLGkpICkgKTsKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoOCwgcHJl ZF9ub3QsICJRZDQ9bm90KFFzNCkiLCJWZWN0b3IgUHJlZGljYXRlIE5vdCIsIGZTRVRRQklUKFFk VixpLCFmR0VUUUJJVChRc1YsaSkgKSApOworCisKKworRVhUSU5TTihWNl92Y21vdiwgICJpZiAo UHM0KSBWZDMyPVZ1MzIiLCAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxBX05P VEVfQU5ZX1JFU09VUkNFKSwgICAiQ29uZGl0aW9uYWwgTW92IiwKK3sKK2lmIChmTFNCT0xEKFBz VikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRWLnViW2ldID0g VnVWLnViW2ldOworCX0KKwl9IGVsc2Uge0NBTkNFTDt9Cit9KQorCitFWFRJTlNOKFY2X3ZuY21v diwgICJpZiAoIVBzNCkgVmQzMj1WdTMyIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSksICAgIkNvbmRpdGlvbmFsIE1vdiIsCit7CitpZiAo ZkxTQk9MRE5PVChQc1YpKQl7CisJZkhJREUoaW50IGk7KQorCWZWRk9SRUFDSCg4LCBpKSB7CisJ CVZkVi51YltpXSA9IFZ1Vi51YltpXTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkKKworRVhU SU5TTihWNl92Y2NvbWJpbmUsICAiaWYgKFBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIs CUFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkFfRFYsQV9OT1RFX0FOWTJfUkVTT1VS Q0UpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChmTFNCT0xEKFBzVikpCXsKKwlm SElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRkVi52WzBdLnViW2ldID0gVnZW LnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07CisJfQorCX0gZWxzZSB7Q0FO Q0VMO30KK30pCisKK0VYVElOU04oVjZfdm5jY29tYmluZSwgICJpZiAoIVBzNCkgVmRkMzI9dmNv bWJpbmUoVnUzMixWdjMyKSIsCUFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkFfRFYs QV9OT1RFX0FOWTJfUkVTT1VSQ0UpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChm TFNCT0xETk9UKFBzVikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJ VmRkVi52WzBdLnViW2ldID0gVnZWLnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJb aV07CisJfQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKKworCitJVEVSQVRPUl9JTlNOX0FOWV9T TE9UKDgsdm11eCwiVmQzMj12bXV4KFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU2VsZWN0IEVs ZW1lbnQgOC1iaXQiLAorICAgIFZkVi51YltpXSA9IGZHRVRRQklUKFF0VixpKSA/IFZ1Vi51Yltp XSA6IFZ2Vi51YltpXSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsdnN3 YXAsIlZkZDMyPXZzd2FwKFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU3dhcCBFbGVtZW50IDgt Yml0IiwKKyAgICBWZGRWLnZbMF0udWJbaV0gPSAgZkdFVFFCSVQoUXRWLGkpID8gVnVWLnViW2ld IDogVnZWLnViW2ldOworCVZkZFYudlsxXS51YltpXSA9ICFmR0VUUUJJVChRdFYsaSkgPyBWdVYu dWJbaV0gOiBWdlYudWJbaV0pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIE1NVkVD VE9SIFNPUlRJTkcKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgTU1WRUNfU09S VChUWVBFLFRZUEUyLERFU0NSLEVMRU1FTlRTSVpFLFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllf U0xPVChFTEVNRU5UU0laRSx2bWF4IyNUWVBFLCAiVmQzMj12bWF4IiBUWVBFMiAiKFZ1MzIsVnYz MikiLCAiVmQzMi4iI1NSQyI9dm1heChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAiVmVjdG9y ICIgREVTQ1IgIiBtYXgiLCBWZFYuU1JDW2ldID0gKFZ1Vi5TUkNbaV0gPiBWdlYuU1JDW2ldKSA/ IFZ1Vi5TUkNbaV0gOiAgVnZWLlNSQ1tpXSkgIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKEVM RU1FTlRTSVpFLHZtaW4jI1RZUEUsICJWZDMyPXZtaW4iIFRZUEUyICIoVnUzMixWdjMyKSIsICJW ZDMyLiIjU1JDIj12bWluKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICJWZWN0b3IgIiBERVND UiAiIG1pbiIsIFZkVi5TUkNbaV0gPSAoVnVWLlNSQ1tpXSA8IFZ2Vi5TUkNbaV0pID8gVnVWLlNS Q1tpXSA6ICBWdlYuU1JDW2ldKQorCitNTVZFQ19TT1JUKGIsImIiLCAic2lnbmVkIGJ5dGUiLCAg ICA4LCAgYik7CitNTVZFQ19TT1JUKHViLCJ1YiIsICJ1bnNpZ25lZCBieXRlIiwgICAgOCwgIHVi KTsKK01NVkVDX1NPUlQodWgsInVoIiwgInVuc2lnbmVkIGhhbGZ3b3JkIiwxNiwgdWgpOworTU1W RUNfU09SVChoLCAgICJoIiwgICAgImhhbGZ3b3JkIiwgICAgICAgICAxNiwgaCk7CitNTVZFQ19T T1JUKHcsICAgInciLCAgICAid29yZCIsICAgICAgICAgICAgIDMyLCB3KTsKKworCisKKworCisK KworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisqIFNIVUZGTEVTCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9BTllf U0xPVCgxNix2c2F0aHViLCJWZDMyPXZzYXRodWIoVnUzMixWdjMyKSIsIlZkMzIudWI9dnNhdChW dTMyLmgsVnYzMi5oKSIsCisiU2F0dXJhdGUgYW5kIHBhY2sgMzIgaGFsZndvcmRzIHRvIDMyIHVu c2lnbmVkIGJ5dGVzLCBhbmQgaW50ZXJsZWF2ZSB0aGVtIiwKKyAgICBmU0VUQllURSgwLCBWZFYu dWhbaV0sIGZWU0FUVUIoVnZWLmhbaV0pKTsKKyAgICBmU0VUQllURSgxLCBWZFYudWhbaV0sIGZW U0FUVUIoVnVWLmhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIsdnNhdHdoLCJW ZDMyPXZzYXR3aChWdTMyLFZ2MzIpIiwiVmQzMi5oPXZzYXQoVnUzMi53LFZ2MzIudykiLAorIlNh dHVyYXRlIGFuZCBwYWNrIDE2IHdvcmRzIHRvIDE2IGhhbGZ3b3JkcywgYW5kIGludGVybGVhdmUg dGhlbSIsCisgICAgZlNFVEhBTEYoMCwgVmRWLndbaV0sIGZWU0FUSChWdlYud1tpXSkpOworICAg IGZTRVRIQUxGKDEsIFZkVi53W2ldLCBmVlNBVEgoVnVWLndbaV0pKSkKKworSVRFUkFUT1JfSU5T TjJfQU5ZX1NMT1QoMzIsdnNhdHV3dWgsIlZkMzI9dnNhdHV3dWgoVnUzMixWdjMyKSIsIlZkMzIu dWg9dnNhdChWdTMyLnV3LFZ2MzIudXcpIiwKKyJTYXR1cmF0ZSBhbmQgcGFjayAxNiB3b3JkcyB0 byAxNiBoYWxmd29yZHMsIGFuZCBpbnRlcmxlYXZlIHRoZW0iLAorICAgIGZTRVRIQUxGKDAsIFZk Vi53W2ldLCBmVlNBVFVIKFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi53W2ldLCBm VlNBVFVIKFZ1Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgxNix2c2h1ZmZl YiwiVmQzMj12c2h1ZmZlYihWdTMyLFZ2MzIpIiwiVmQzMi5iPXZzaHVmZmUoVnUzMi5iLFZ2MzIu YikiLAorIlNodWZmbGUgaGFsZiB3b3JkcyB3aXRoIGluIGEgbGFuZSIsCisgICAgZlNFVEJZVEUo MCwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgZlNFVEJZVEUoMSwg VmRWLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FO WV9TTE9UKDE2LHZzaHVmZm9iLCJWZDMyPXZzaHVmZm9iKFZ1MzIsVnYzMikiLCJWZDMyLmI9dnNo dWZmbyhWdTMyLmIsVnYzMi5iKSIsCisiU2h1ZmZsZSBoYWxmIHdvcmRzIHdpdGggaW4gYSBsYW5l IiwKKyAgICBmU0VUQllURSgwLCBWZFYudWhbaV0sIGZHRVRVQllURSgxLCBWdlYudWhbaV0pKTsK KyAgICBmU0VUQllURSgxLCBWZFYudWhbaV0sIGZHRVRVQllURSgxLCBWdVYudWhbaV0pKSkKKwor SVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIsdnNodWZlaCwiVmQzMj12c2h1ZmZlaChWdTMyLFZ2 MzIpIiwiVmQzMi5oPXZzaHVmZmUoVnUzMi5oLFZ2MzIuaCkiLAorIlNodWZmbGUgaGFsZiB3b3Jk cyB3aXRoIGluIGEgbGFuZSIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmR0VUVUhBTEYo MCwgVnZWLnV3W2ldKSk7CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBmR0VUVUhBTEYoMCwg VnVWLnV3W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDMyLHZzaHVmb2gsIlZkMzI9 dnNodWZmb2goVnUzMixWdjMyKSIsIlZkMzIuaD12c2h1ZmZvKFZ1MzIuaCxWdjMyLmgpIiwKKyJT aHVmZmxlIGhhbGYgd29yZHMgd2l0aCBpbiBhIGxhbmUiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51 d1tpXSwgZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tp XSwgZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpKQorCisKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyogRG91YmxlIFZlY3RvciBTaHVmZmxlcworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9DVklf TUFQUElORyhWNl92dHJhbjJ4Ml9tYXAsICJ2dHJhbnMyeDIoVnkzMixWeDMyLFJ0MzIpIiwidnNo dWZmKFZ5MzIsVngzMixSdDMyKSIpCisKKworRVhUSU5TTihWNl92c2h1ZmYsICJ2c2h1ZmYoVnkz MixWeDMyLFJ0MzIpIiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMsQV9D VklfRUFSTFksQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX1NISUZUX1JFU09VUkNFKSwK KyIyeDItPjJ4MiB0cmFuc3Bvc2UsIGZvciBtdWx0aXBsZSBkYXRhIHNpemVzLCBpbnBsYWNlIiwK K3sKKwlmSElERShpbnQgb2Zmc2V0OykKKwlmb3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZCWVRFUygp OyBvZmZzZXQ8PD0xKSB7CisJCWlmICggUnRWICYgb2Zmc2V0KSB7CisJCQkgICAgZkhJREUoaW50 IGs7KSBcCisJCQkJZlZGT1JFQUNIKDgsIGspIHtcCisJCQkJaWYgKCEoIGsgJiBvZmZzZXQpKSB7 CisJCQkJCWZTV0FQQihWeVYudWJba10sIFZ4Vi51YltrK29mZnNldF0pOworCQkJCX0KKwkJCX0K KwkJfQorCX0KKwl9KQorCitFWFRJTlNOKFY2X3ZzaHVmZnZkZCwgIlZkZDMyPXZzaHVmZihWdTMy LFZ2MzIsUnQ4KSIsCitBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTLEFfTk9U RV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9TSElGVF9SRVNPVVJDRSxBX05PVEVfUlQ4KSwKKyIy eDItPjJ4MiB0cmFuc3Bvc2UgZm9yIG11bHRpcGxlIGRhdGEgc2l6ZXMiLAoreworCWZISURFKGlu dCBvZmZzZXQ7KQorCVZkZFYudlswXSA9IFZ2VjsKKwlWZGRWLnZbMV0gPSBWdVY7CisJZm9yIChv ZmZzZXQ9MTsgb2Zmc2V0PGZWQllURVMoKTsgb2Zmc2V0PDw9MSkgeworCQlpZiAoIFJ0ViAmIG9m ZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAor CQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVmRkVi52WzFdLnViW2tdLCBW ZGRWLnZbMF0udWJbaytvZmZzZXRdKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJfSkKKworRVhU SU5TTihWNl92ZGVhbCwgInZkZWFsKFZ5MzIsVngzMixSdDMyKSIsCitBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTLEFfQ1ZJX0VBUkxZLEFfTk9URV9QRVJNVVRFX1JFU09VUkNF LEFfTk9URV9TSElGVF9SRVNPVVJDRSksCisiIHZlY3RvciAtIHZlY3RvciBkZWFsIC0gb3IgZGVp bnRlcmxlYXZlLCBmb3IgbXVsdGlwbGUgZGF0YSBzaXplcywgaW5wbGFjZSIsCit7CisJZkhJREUo aW50IG9mZnNldDspCisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+MDsgb2Zmc2V0 Pj49MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykgXAor CQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJCQlm U1dBUEIoVnlWLnViW2tdLCBWeFYudWJbaytvZmZzZXRdKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9 CisJfSkKKworRVhUSU5TTihWNl92ZGVhbHZkZCwgIlZkZDMyPXZkZWFsKFZ1MzIsVnYzMixSdDgp IiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMsQV9OT1RFX1BFUk1VVEVf UkVTT1VSQ0UsQV9OT1RFX1NISUZUX1JFU09VUkNFLEFfTk9URV9SVDgpLAorIiB2ZWN0b3IgLSB2 ZWN0b3IgZGVhbCAtIG9yIGRlaW50ZXJsZWF2ZSwgZm9yIG11bHRpcGxlIGRhdGEgc2l6ZXMiLAor eworCWZISURFKGludCBvZmZzZXQ7KQorCVZkZFYudlswXSA9IFZ2VjsKKwlWZGRWLnZbMV0gPSBW dVY7CisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+MDsgb2Zmc2V0Pj49MSkgewor CQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykgXAorCQkJCWZWRk9S RUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVmRk Vi52WzFdLnViW2tdLCBWZGRWLnZbMF0udWJbaytvZmZzZXRdKTsKKwkJCQl9CisJCQl9CisJCX0K Kwl9CisJfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworSVRFUkFUT1JfSU5TTjJfQU5Z X1NMT1RfRE9VQkxFX1ZFQygzMix2c2h1Zm9laCwiVmRkMzI9dnNodWZmb2VoKFZ1MzIsVnYzMiki LCJWZGQzMi5oPXZzaHVmZm9lKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgU2h1ZmZsZSBoYWxm IHdvcmRzIiwKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMF0udXdbaV0sIGZHRVRVSEFMRigwLCBW dlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMF0udXdbaV0sIGZHRVRVSEFMRigw LCBWdVYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMV0udXdbaV0sIGZHRVRVSEFM RigxLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMV0udXdbaV0sIGZHRVRV SEFMRigxLCBWdVYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZF QygxNix2c2h1Zm9lYiwiVmRkMzI9dnNodWZmb2ViKFZ1MzIsVnYzMikiLCJWZGQzMi5iPXZzaHVm Zm9lKFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3IgU2h1ZmZsZSBieXRlcyIsCisgICAgZlNFVEJZ VEUoMCwgVmRkVi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgZlNF VEJZVEUoMSwgVmRkVi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSk7CisgICAg ZlNFVEJZVEUoMCwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSk7Cisg ICAgZlNFVEJZVEUoMSwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkp CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKiBEZWFsCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVf U0xPVCgzMiwgdmRlYWxoLCAiVmQzMj12ZGVhbGgoVnUzMikiLCAiVmQzMi5oPXZkZWFsKFZ1MzIu aCkiLAorIkRlYWwgSGFsZndvcmRzIiwKKyAgICBWZFYudWhbaSAgXSA9IGZHRVRVSEFMRigwLCBW dVYudXdbaV0pOworICAgIFZkVi51aFtpK2ZWRUxFTSgzMildID0gZkdFVFVIQUxGKDEsIFZ1Vi51 d1tpXSkpCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgxNiwgdmRlYWxiLCAiVmQzMj12 ZGVhbGIoVnUzMikiLCAiVmQzMi5iPXZkZWFsKFZ1MzIuYikiLAorIkRlYWwgSGFsZndvcmRzIiwK KyAgICBWZFYudWJbaSAgIF0gPSBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKTsKKyAgICBWZFYudWJb aStmVkVMRU0oMTYpXSA9IGZHRVRVQllURSgxLCBWdVYudWhbaV0pKQorCitJVEVSQVRPUl9JTlNO Ml9QRVJNVVRFX1NMT1QoMzIsIHZkZWFsYjR3LCAgIlZkMzI9dmRlYWxiNHcoVnUzMixWdjMyKSIs ICJWZDMyLmI9dmRlYWxlKFZ1MzIuYixWdjMyLmIpIiwKKyJEZWFsIFR3byBWZWN0b3JzIEJ5dGVz IiwKKyAgICBWZFYudWJbMCtpIF0gPSBmR0VUVUJZVEUoMCwgVnZWLnV3W2ldKTsKKyAgICBWZFYu dWJbZlZFTEVNKDMyKStpIF0gPSBmR0VUVUJZVEUoMiwgVnZWLnV3W2ldKTsKKyAgICBWZFYudWJb MipmVkVMRU0oMzIpK2ldID0gZkdFVFVCWVRFKDAsIFZ1Vi51d1tpXSk7CisgICAgVmRWLnViWzMq ZlZFTEVNKDMyKStpXSA9IGZHRVRVQllURSgyLCBWdVYudXdbaV0pKQorCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIHNo dWZmbGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2c2h1ZmZo LCAiVmQzMj12c2h1ZmZoKFZ1MzIpIiwgIlZkMzIuaD12c2h1ZmYoVnUzMi5oKSIsCisiRGVhbCBI YWxmd29yZHMiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgVnVWLnVoW2ldKTsKKyAgICBm U0VUSEFMRigxLCBWZFYudXdbaV0sIFZ1Vi51aFtpK2ZWRUxFTSgzMildKSkKKworSVRFUkFUT1Jf SU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2c2h1ZmZiLCAiVmQzMj12c2h1ZmZiKFZ1MzIpIiwgIlZk MzIuYj12c2h1ZmYoVnUzMi5iKSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAgIGZTRVRCWVRFKDAs IFZkVi51aFtpXSwgVnVWLnViW2ldKTsKKyAgICBmU0VUQllURSgxLCBWZFYudWhbaV0sIFZ1Vi51 YltpK2ZWRUxFTSgxNildKSkKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogSU5TRVJUIEFORCBFWFRSQUNUCisq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CitFWFRJTlNOKFY2X2V4dHJhY3R3LCAiUmQzMj12ZXh0cmFjdChWdTMyLFJzMzIpIiwKK0FUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NWSV9F WFRSQUNULEFfTk9URV9OT1BBQ0tFVCxBX01FTUxJS0UsQV9SRVNUUklDVF9TTE9UME9OTFkpLAor IkV4dHJhY3QgYW4gZWxlbWVudCBmcm9tIGEgdmVjdG9yIHRvIHNjYWxhciIsCitmSElERSh3YXJu KCJSZE49JWQgVnVOPSVkIFJzTj0lZCBSc1Y9MHglMDh4IHdpZHg9JWQiLFJkTixWdU4sUnNOLFJz ViwoKFJzViAmIChmVkJZVEVTKCktMSkpID4+IDIpKTspCitSZFYgPSBWdVYudXdbIChSc1YgJiAo ZlZCWVRFUygpLTEpKSA+PiAyXTsKK2ZISURFKHdhcm4oIlJkVj0weCUwOHgiLFJkVik7KSkKKwor REVGX0NWSV9NQVBQSU5HKFY2X2V4dHJhY3R3X2FsdCwiUmQzMi53PXZleHRyYWN0KFZ1MzIsUnMz MikiLCJSZDMyPXZleHRyYWN0KFZ1MzIsUnMzMikiKQorCitFWFRJTlNOKFY2X3ZpbnNlcnR3ciwg IlZ4MzIudz12aW5zZXJ0KFJ0MzIpIiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklf VlgsQV9DVklfTEFURSxBX05PVEVfTVBZX1JFU09VUkNFKSwKKyJJbnNlcnQgV29yZCBTY2FsYXIg aW50byBWZWN0b3IiLAorVnhWLnV3WzBdID0gUnRWOykKKworCisKKworSVRFUkFUT1JfSU5TTl9N UFlfU0xPVF9MQVRFKDMyLGx2c3BsYXR3LCAiVmQzMj12c3BsYXQoUnQzMikiLCAiUmVwbGljYXRl cyBzY2FsYXIgYWNjcm9zcyB3b3JkcyBpbiB2ZWN0b3IiLCBWZFYudXdbaV0gPSBSdFYpCisKK0lU RVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURSgxNixsdnNwbGF0aCwgIlZkMzIuaD12c3BsYXQoUnQz MikiLCAiUmVwbGljYXRlcyBzY2FsYXIgYWNjcm9zcyBoYWx2ZXMgaW4gdmVjdG9yIiwgVmRWLnVo W2ldID0gUnRWKQorCitJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0xBVEUoOCxsdnNwbGF0YiwgIlZk MzIuYj12c3BsYXQoUnQzMikiLCAiUmVwbGljYXRlcyBzY2FsYXIgYWNjcm9zcyBieXRlcyBpbiB2 ZWN0b3IiLCBWZFYudWJbaV0gPSBSdFYpCisKKworREVGX0NWSV9NQVBQSU5HKFY2X3Zhc3NpZ25w LCJWZGQzMj1WdXUzMiIsIlZkZDMyPXZjb21iaW5lKFZ1dS5IMzIsVnV1LkwzMikiKQorCitJVEVS QVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZhc3NpZ24sIlZkMzI9VnUzMiIsIkNvcHkgYSB2ZWN0b3Ii LFZkVi53W2ldPVZ1Vi53W2ldKQorCisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZF Qyg4LHZjb21iaW5lLCJWZGQzMj12Y29tYmluZShWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgYXNzaWdu LCBBbnkgdHdvIHRvIFZlY3RvciBQYWlyIiwKKyAgICBWZGRWLnZbMF0udWJbaV0gPSBWdlYudWJb aV07CisgICAgVmRkVi52WzFdLnViW2ldID0gVnVWLnViW2ldKQorCisKKworLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKiBHRU5FUkFMIFBFUk1VVEUgTkVUV09SS1MKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitFWFRJTlNO KFY2X3ZkZWx0YSwgIlZkMzI9dmRlbHRhKFZ1MzIsVnYzMikiLCAgICBBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFKSwKKyJSZXZlcnNlIEJl bmVzIEJ1dHRlcmZseSBuZXR3b3JrICIsCit7CisgICAgZkhJREUoaW50IG9mZnNldDspCisgICAg ZkhJREUoaW50IGs7KQorICAgIGZvciAob2Zmc2V0PWZWQllURVMoKTsgKG9mZnNldD4+PTEpPjA7 ICkgeworICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsgaysrKSB7CisgICAgICAgICAg ICBWZFYudWJba10gPSAoVnZWLnViW2tdJm9mZnNldCkgPyBWdVYudWJba15vZmZzZXRdIDogVnVW LnViW2tdOworICAgICAgICB9CisgICAgICAgIGZvciAoayA9IDA7IGs8ZlZCWVRFUygpOyBrKysp IHsKKyAgICAgICAgICAgIFZ1Vi51YltrXSA9IFZkVi51YltrXTsKKyAgICAgICAgfQorICAgIH0K K30pCisKKworRVhUSU5TTihWNl92cmRlbHRhLCAiVmQzMj12cmRlbHRhKFZ1MzIsVnYzMikiLCAg QVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCxBX05PVEVfUEVSTVVURV9SRVNPVVJD RSksCisiRm9yd2FyZCBCZW5lcyBCdXR0ZXJmbHkgbmV0d29yayAiLAoreworCWZISURFKGludCBv ZmZzZXQ7KQorICAgIGZISURFKGludCBrOykKKyAgICBmb3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZC WVRFUygpOyBvZmZzZXQ8PD0xKXsKKyAgICAgICAgZm9yIChrID0gMDsgazxmVkJZVEVTKCk7IGsr KykgeworICAgICAgICAgICAgVmRWLnViW2tdID0gKFZ2Vi51YltrXSZvZmZzZXQpID8gVnVWLnVi W2teb2Zmc2V0XSA6IFZ1Vi51YltrXTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGsgPSAwOyBr PGZWQllURVMoKTsgaysrKSB7CisgICAgICAgICAgICBWdVYudWJba10gPSBWZFYudWJba107Cisg ICAgICAgIH0KKyAgICB9Cit9KQorCisKKworCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1Qo MzIsdmNsMHcsIlZkMzI9dmNsMHcoVnUzMikiLCJWZDMyLnV3PXZjbDAoVnUzMi51dykiLCAgICAg ICAgICJDb3VudCBMZWFkaW5nIFplcm9zIGluIFdvcmQiLCAgICAgVmRWLnV3W2ldPWZDTDFfNCh+ VnVWLnV3W2ldKSkKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMTYsdmNsMGgsIlZkMzI9dmNs MGgoVnUzMikiLCJWZDMyLnVoPXZjbDAoVnUzMi51aCkiLCAgICAgICAgICJDb3VudCBMZWFkaW5n IFplcm9zIGluIFdvcmQiLCAgICBWZFYudWhbaV09ZkNMMV8yKH5WdVYudWhbaV0pKQorCitJVEVS QVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZub3JtYW10dywiVmQzMj12bm9ybWFtdHcoVnUzMiki LCJWZDMyLnc9dm5vcm1hbXQoVnUzMi53KSIsIk5vcm0gQW1vdW50IFdvcmQiLAorVmRWLndbaV09 Zk1BWChmQ0wxXzQoflZ1Vi53W2ldKSxmQ0wxXzQoVnVWLndbaV0pKS0xOyBmSElERShJVjFERUFE KCk7KSkKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMTYsdm5vcm1hbXRoLCJWZDMyPXZub3Jt YW10aChWdTMyKSIsIlZkMzIuaD12bm9ybWFtdChWdTMyLmgpIiwiTm9ybSBBbW91bnQgSGFsZndv cmQiLAorVmRWLmhbaV09Zk1BWChmQ0wxXzIoflZ1Vi5oW2ldKSxmQ0wxXzIoVnVWLmhbaV0pKS0x OyBmSElERShJVjFERUFEKCk7KSkKKworSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUo MzIsdmFkZGNsYncsIlZkMzIudz12YWRkKHZjbGIoVnUzMi53KSxWdjMyLncpIiwKKyJDb3VudCBs ZWFkaW5nIGJpdHMgYW5kIGFkZCIsCitWZFYud1tpXSA9IGZNQVgoZkNMMV80KH5WdVYud1tpXSks ZkNMMV80KFZ1Vi53W2ldKSkgKyBWdlYud1tpXSkKKworSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9U X1ZWX0xBVEUoMTYsdmFkZGNsYmgsIlZkMzIuaD12YWRkKHZjbGIoVnUzMi5oKSxWdjMyLmgpIiwK KyJDb3VudCBsZWFkaW5nIGJpdHMgYW5kIGFkZCIsCitWZFYuaFtpXSA9IGZNQVgoZkNMMV8yKH5W dVYuaFtpXSksZkNMMV8yKFZ1Vi5oW2ldKSkgKyBWdlYuaFtpXSkKKworCitJVEVSQVRPUl9JTlNO Ml9TSElGVF9TTE9UKDE2LHZwb3Bjb3VudGgsIlZkMzI9dnBvcGNvdW50aChWdTMyKSIsIlZkMzIu aD12cG9wY291bnQoVnUzMi5oKSIsICAgIkNvdW50IExlYWRpbmcgWmVyb3MgaW4gV29yZCIsICBW ZFYudWhbaV09ZkNPVU5UT05FU18yKFZ1Vi51aFtpXSkpCisKKworI2RlZmluZSBmSElTVChJTlBV VFZFQykgXAorCWZVQVJDSF9OT1RFX1BVTVBfNFgoKTsgXAorCWZISURFKGludCBsYW5lOykgXAor CWZISURFKG1tdmVjdG9yX3QgdG1wOykgXAorCWZWRk9SRUFDSCgxMjgsIGxhbmUpIHsgXAorCQlm b3IgKGZISURFKGludCApaT0wOyBpPDEyOC84OyArK2kpIHsgXAorCQkJdW5zaWduZWQgY2hhciB2 YWx1ZSA9IElOUFVUVkVDLnViWygxMjgvOCkqbGFuZStpXTsgXAorCQkJdW5zaWduZWQgY2hhciBy ZWdubyA9IHZhbHVlPj4zOyBcCisJCQl1bnNpZ25lZCBjaGFyIGVsZW1lbnQgPSB2YWx1ZSAmIDc7 IFwKKwkJCVJFQURfRVhUX1ZSRUcocmVnbm8sdG1wLDApOyBcCisJCQl0bXAudWhbKDEyOC8xNikq bGFuZSsoZWxlbWVudCldKys7IFwKKwkJCVdSSVRFX0VYVF9WUkVHKHJlZ25vLHRtcCxFWFRfTkVX KTsgXAorCQl9IFwKKwl9CisKKyNkZWZpbmUgZkhJU1RRKElOUFVUVkVDLFFWQUwpIFwKKwlmVUFS Q0hfTk9URV9QVU1QXzRYKCk7IFwKKwlmSElERShpbnQgbGFuZTspIFwKKwlmSElERShtbXZlY3Rv cl90IHRtcDspIFwKKwlmVkZPUkVBQ0goMTI4LCBsYW5lKSB7IFwKKwkJZm9yIChmSElERShpbnQg KWk9MDsgaTwxMjgvODsgKytpKSB7IFwKKwkJCXVuc2lnbmVkIGNoYXIgdmFsdWUgPSBJTlBVVFZF Qy51YlsoMTI4LzgpKmxhbmUraV07IFwKKwkJCXVuc2lnbmVkIGNoYXIgcmVnbm8gPSB2YWx1ZT4+ MzsgXAorCQkJdW5zaWduZWQgY2hhciBlbGVtZW50ID0gdmFsdWUgJiA3OyBcCisJCQlSRUFEX0VY VF9WUkVHKHJlZ25vLHRtcCwwKTsgXAorCQkJaWYgKGZHRVRRQklUKFFWQUwsMTI4LzgqbGFuZStp KSkgdG1wLnVoWygxMjgvMTYpKmxhbmUrKGVsZW1lbnQpXSsrOyBcCisJCQlXUklURV9FWFRfVlJF RyhyZWdubyx0bXAsRVhUX05FVyk7IFwKKwkJfSBcCisJfQorCisKKworRVhUSU5TTihWNl92aGlz dCwgInZoaXN0IixBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJXzRTTE9ULEFfQ1ZJX1JF UVVJUkVTX1RNUExPQUQpLCAidmhpc3QgaW5zdHJ1Y3Rpb24iLHsgZkhJREUobW12ZWN0b3JfdCBp bnB1dFZlYzspIGlucHV0VmVjPWZUTVBWREFUQSgpOyBmSElTVChpbnB1dFZlYyk7IH0pCitFWFRJ TlNOKFY2X3ZoaXN0cSwgInZoaXN0KFF2NCkiLEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfNFNMT1QsQV9DVklfUkVRVUlSRVNfVE1QTE9BRCksICJ2aGlzdCBpbnN0cnVjdGlvbiIseyBm SElERShtbXZlY3Rvcl90IGlucHV0VmVjOykgaW5wdXRWZWM9ZlRNUFZEQVRBKCk7IGZISVNUUShp bnB1dFZlYyxRdlYpOyB9KQorCisjdW5kZWYgZkhJU1QKKyN1bmRlZiBmSElTVFEKKworCisvKiAq KioqIFdFSUdIVEVEIEhJU1RPR1JBTSAqKioqICovCisKKworI2lmIDEKKyNkZWZpbmUgV0hJU1Qo RUwsTUFTSyxCU0hJRlQsQ09ORCxTQVRGKSBcCisJZkhJREUodW5zaWduZWQgaW50KSBidWNrZXQg PSBmR0VUVUJZVEUoMCxpbnB1dC5oW2ldKTsgXAorCWZISURFKHVuc2lnbmVkIGludCkgd2VpZ2h0 ID0gZkdFVFVCWVRFKDEsaW5wdXQuaFtpXSk7IFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIHZpbmRl eCA9IChidWNrZXQgPj4gMykgJiAweDFGOyBcCisJZkhJREUodW5zaWduZWQgaW50KSBlbGluZGV4 ID0gKChpPj5CU0hJRlQpICYgKH5NQVNLKSkgfCAoKGJ1Y2tldD4+QlNISUZUKSAmIE1BU0spOyBc CisJZkhJREUobW12ZWN0b3JfdCB0bXA7KSBcCisJUkVBRF9FWFRfVlJFRyh2aW5kZXgsdG1wLDAp OyBcCisJQ09ORCB0bXAuRUxbZWxpbmRleF0gPSBTQVRGKHRtcC5FTFtlbGluZGV4XSArIHdlaWdo dCk7IFwKKwlXUklURV9FWFRfVlJFRyh2aW5kZXgsdG1wLEVYVF9ORVcpOyBcCisJZlVBUkNIX05P VEVfUFVNUF8yWCgpOworCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3QyNTYsInZ3 aGlzdDI1NiIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRlcnMiLCBX SElTVCh1aCw3LDAsLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3QyNTZxLCJ2 d2hpc3QyNTYoUXY0KSIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRl cnMiLCBXSElTVCh1aCw3LDAsaWYgKGZHRVRRQklUKFF2ViwyKmkpKSwpKQorSVRFUkFUT1JfSU5T Tl9WSElTVExJS0UoMTYsdndoaXN0MjU2X3NhdCwidndoaXN0MjU2OnNhdCIsInZlY3RvciB3ZWln aHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRlcnMiLCBXSElTVCh1aCw3LDAsLGZWU0FUVUgp KQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndoaXN0MjU2cV9zYXQsInZ3aGlzdDI1NihR djQpOnNhdCIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRlcnMiLCBX SElTVCh1aCw3LDAsaWYgKGZHRVRRQklUKFF2ViwyKmkpKSxmVlNBVFVIKSkKK0lURVJBVE9SX0lO U05fVkhJU1RMSUtFKDE2LHZ3aGlzdDEyOCwidndoaXN0MTI4IiwidmVjdG9yIHdlaWdodGVkIGhp c3RvZ3JhbSB3b3JkIGNvdW50ZXJzIiwgV0hJU1QodXcsMywxLCwpKQorSVRFUkFUT1JfSU5TTl9W SElTVExJS0UoMTYsdndoaXN0MTI4cSwidndoaXN0MTI4KFF2NCkiLCJ2ZWN0b3Igd2VpZ2h0ZWQg aGlzdG9ncmFtIHdvcmQgY291bnRlcnMiLCBXSElTVCh1dywzLDEsaWYgKGZHRVRRQklUKFF2Viwy KmkpKSwpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndoaXN0MTI4bSwidndoaXN0MTI4 KCN1MSkiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdvcmQgY291bnRlcnMiLCBXSElTVCh1 dywzLDEsaWYgKChidWNrZXQgJiAxKSA9PSB1aVYpLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElL RSgxNix2d2hpc3QxMjhxbSwidndoaXN0MTI4KFF2NCwjdTEpIiwidmVjdG9yIHdlaWdodGVkIGhp c3RvZ3JhbSB3b3JkIGNvdW50ZXJzIiwgV0hJU1QodXcsMywxLGlmICgoKGJ1Y2tldCAmIDEpID09 IHVpVikgJiYgZkdFVFFCSVQoUXZWLDIqaSkpLCkpCisKKworI2VuZGlmCisKKworCisvKiAqKioq KiogICBsb29rdXAgdGFibGUgaW5zdHJ1Y3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAq KioqKioqKioqKiAgKi8KKworLyogVXNlIGxvdyBiaXRzIGZyb20gaWR4IHRvIGNob29zZSBuZXh0 LWJpZ2dlciBlbGVtZW50cyBmcm9tIHZlY3RvciwgdGhlbiB1c2UgTFNCIGZyb20gaWR4IHRvIGNo b29zZSBvZGQgb3IgZXZlbiBlbGVtZW50ICovCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9U KDgsdmx1dHZ2YiwiVmQzMi5iPXZsdXQzMihWdTMyLmIsVnYzMi5iLFJ0OCkiLCJ2ZWN0b3ItdmVj dG9yIHRhYmxlIGxvb2t1cCIsCitmSElERShmUlQ4Tk9URSgpKQorZkhJREUodW5zaWduZWQgaW50 IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFs ID0gUnRWICYgMHg3Oworb2RkaGFsZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgx OworaWR4ID0gVnVWLnViW2ldOworVmRWLmJbaV0gPSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZh bCA8PCA1KSkgPyBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDAp CisKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZsdXR2dmJfb3Jh Y2MsIlZ4MzIuYnw9dmx1dDMyKFZ1MzIuYixWdjMyLmIsUnQ4KSIsInZlY3Rvci12ZWN0b3IgdGFi bGUgbG9va3VwIiwKK2ZISURFKGZSVDhOT1RFKCkpCitmSElERSh1bnNpZ25lZCBpbnQgaWR4Oykg ZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBSdFYg JiAweDc7CitvZGRoYWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7CitpZHgg PSBWdVYudWJbaV07CitWeFYuYltpXSB8PSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1 KSkgPyBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKK0lU RVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYsdmx1dHZ3aCwiVmRkMzIuaD12 bHV0MTYoVnUzMi5iLFZ2MzIuaCxSdDgpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAor ZkhJREUoZlJUOE5PVEUoKSkKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0 Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IFJ0ViAmIDB4RjsKK29kZGhh bGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IGZHRVRVQllURSgw LFZ1Vi51aFtpXSk7CitWZGRWLnZbMF0uaFtpXSA9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFs IDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsK K2lkeCA9IGZHRVRVQllURSgxLFZ1Vi51aFtpXSk7CitWZGRWLnZbMV0uaFtpXSA9ICgoaWR4ICYg MHhGMCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUg ZlZFTEVNKDMyKV0pIDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZF QygxNix2bHV0dndoX29yYWNjLCJWeHgzMi5ofD12bHV0MTYoVnUzMi5iLFZ2MzIuaCxSdDgpIiwi dmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJREUoZlJUOE5PVEUoKSkKK2ZISURFKHVu c2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjsp CittYXRjaHZhbCA9IGZHRVRVQllURSgwLFJ0VikgJiAweEY7CitvZGRoYWxmID0gKFJ0ViA+PiAo ZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7CitpZHggPSBmR0VUVUJZVEUoMCxWdVYudWhbaV0pOwor Vnh4Vi52WzBdLmhbaV0gfD0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdF VEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVC WVRFKDEsVnVWLnVoW2ldKTsKK1Z4eFYudlsxXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1h dGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0p IDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoOCx2bHV0dnZiaSwiVmQzMi5iPXZs dXQzMihWdTMyLmIsVnYzMi5iLCN1MykiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitm SElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9k ZGhhbGY7KQorbWF0Y2h2YWwgPSB1aVYgJiAweDc7CitvZGRoYWxmID0gKHVpViA+PiAoZlZFQ0xP R1NJWkUoKS02KSkgJiAweDE7CitpZHggPSBWdVYudWJbaV07CitWZFYuYltpXSA9ICgoaWR4ICYg MHhFMCkgPT0gKG1hdGNodmFsIDw8IDUpKSA/IGZHRVRCWVRFKG9kZGhhbGYsVnZWLmhbaWR4ICUg ZlZFTEVNKDE2KV0pIDogMCkKKworCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVf VkVDKDgsdmx1dHZ2Yl9vcmFjY2ksIlZ4MzIuYnw9dmx1dDMyKFZ1MzIuYixWdjMyLmIsI3UzKSIs InZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBm SElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAm IDB4NzsKK29kZGhhbGYgPSAodWlWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9 IFZ1Vi51YltpXTsKK1Z4Vi5iW2ldIHw9ICgoaWR4ICYgMHhFMCkgPT0gKG1hdGNodmFsIDw8IDUp KSA/IGZHRVRCWVRFKG9kZGhhbGYsVnZWLmhbaWR4ICUgZlZFTEVNKDE2KV0pIDogMCkKKworSVRF UkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2bHV0dndoaSwiVmRkMzIuaD12 bHV0MTYoVnUzMi5iLFZ2MzIuaCwjdTMpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAor ZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBv ZGRoYWxmOykKK21hdGNodmFsID0gdWlWICYgMHhGOworb2RkaGFsZiA9ICh1aVYgPj4gKGZWRUNM T0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1ZkZFYu dlswXS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYo b2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEs VnVWLnVoW2ldKTsKK1ZkZFYudlsxXS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwg PDwgNCkpID8gZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQor CitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZsdXR2d2hfb3JhY2Np LCJWeHgzMi5ofD12bHV0MTYoVnUzMi5iLFZ2MzIuaCwjdTMpIiwidmVjdG9yLXZlY3RvciB0YWJs ZSBsb29rdXAiLAorZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDsp IGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFsID0gdWlWICYgMHhGOworb2RkaGFsZiA9ICh1 aVYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVo W2ldKTsKK1Z4eFYudlswXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8IDQp KSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsKK2lkeCA9 IGZHRVRVQllURSgxLFZ1Vi51aFtpXSk7CitWeHhWLnZbMV0uaFtpXSB8PSAoKGlkeCAmIDB4RjAp ID09IChtYXRjaHZhbCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxF TSgzMildKSA6IDApCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UKDgsdmx1dHZ2Yl9ubSwi VmQzMi5iPXZsdXQzMihWdTMyLmIsVnYzMi5iLFJ0OCk6bm9tYXRjaCIsInZlY3Rvci12ZWN0b3Ig dGFibGUgbG9va3VwIiwKK2ZISURFKGZSVDhOT1RFKCkpCitmSElERSh1bnNpZ25lZCBpbnQgaWR4 OykgZkhJREUoaW50IG9kZGhhbGY7KSBmSElERShpbnQgbWF0Y2h2YWw7KQorICAgIG1hdGNodmFs ID0gUnRWICYgMHg3OworICAgIG9kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgpLTYpKSAm IDB4MTsKKyAgICBpZHggPSBWdVYudWJbaV07CisgICAgaWR4ID0gKGlkeCYweDFGKSB8IChtYXRj aHZhbDw8NSk7CisgICAgVmRWLmJbaV0gPSBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZW RUxFTSgxNildKSkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2 bHV0dndoX25tLCJWZGQzMi5oPXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCk6bm9tYXRjaCIsInZl Y3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKGZSVDhOT1RFKCkpCitmSElERSh1bnNp Z25lZCBpbnQgaWR4OykgZkhJREUoaW50IG9kZGhhbGY7KSBmSElERShpbnQgbWF0Y2h2YWw7KQor ICAgIG1hdGNodmFsID0gUnRWICYgMHhGOworICAgIG9kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9H U0laRSgpLTYpKSAmIDB4MTsKKyAgICBpZHggPSBmR0VUVUJZVEUoMCxWdVYudWhbaV0pOworICAg IGlkeCA9IChpZHgmMHgwRikgfCAobWF0Y2h2YWw8PDQpOworICAgIFZkZFYudlswXS5oW2ldID0g ZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSk7CisgICAgaWR4ID0gZkdF VFVCWVRFKDEsVnVWLnVoW2ldKTsKKyAgICBpZHggPSAoaWR4JjB4MEYpIHwgKG1hdGNodmFsPDw0 KTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZF TEVNKDMyKV0pKQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitOT04gTElORUFSIC0g VjY1CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOX1NMT1QyX0RPVUJM RV9WRUMoMTYsdm1wYWhoc2F0LCJWeDMyLmg9dm1wYShWeDMyLmgsVnUzMi5oLFJ0dDMyLmgpOnNh dCIsInBpZWNld2lzZSBsaW5lYXIgYXBwcm94aW1hdGlvbiIsCisgICAgVnhWLmhbaV09IGZWU0FU SCggKCAoIGZNUFkxNlNTKFZ4Vi5oW2ldLFZ1Vi5oW2ldKTw8MSkgKyAoZkdFVEhBTEYoKCAoVnVW LmhbaV0+PjE0KSYweDMpLCBSdHRWICk8PDE1KSk+PjE2KSkKKworCitJVEVSQVRPUl9JTlNOX1NM T1QyX0RPVUJMRV9WRUMoMTYsdm1wYXVodWhzYXQsIlZ4MzIuaD12bXBhKFZ4MzIuaCxWdTMyLnVo LFJ0dDMyLnVoKTpzYXQiLCJwaWVjZXdpc2UgbGluZWFyIGFwcHJveGltYXRpb24iLAorICAgIFZ4 Vi5oW2ldPSBmVlNBVEgoICggIGZNUFkxNlNVKFZ4Vi5oW2ldLFZ1Vi51aFtpXSkgKyAoZkdFVFVI QUxGKCgoVnVWLnVoW2ldPj4xNCkmMHgzKSwgUnR0ViApPDwxNSkpPj4xNikpCisKK0lURVJBVE9S X0lOU05fU0xPVDJfRE9VQkxFX1ZFQygxNix2bXBzdWh1aHNhdCwiVngzMi5oPXZtcHMoVngzMi5o LFZ1MzIudWgsUnR0MzIudWgpOnNhdCIsInBpZWNld2lzZSBsaW5lYXIgYXBwcm94aW1hdGlvbiIs CisgICAgVnhWLmhbaV09IGZWU0FUSCggKCAgZk1QWTE2U1UoVnhWLmhbaV0sVnVWLnVoW2ldKSAt IChmR0VUVUhBTEYoKChWdVYudWhbaV0+PjE0KSYweDMpLCBSdHRWICk8PDE1KSk+PjE2KSkKKwor CitJVEVSQVRPUl9JTlNOX1NMT1QyX0RPVUJMRV9WRUMoMTYsdmx1dDQsIlZkMzIuaD12bHV0NChW dTMyLnVoLFJ0dDMyLmgpIiwiNCBlbnRyeSBsb29rdXAgdGFibGUiLAorICAgIFZkVi5oW2ldPSBm R0VUSEFMRiggICgoVnVWLmhbaV0+PjE0KSYweDMpLCBSdHRWICkpCisKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCitWNjUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lO U05fTVBZX1NMT1RfTk9WMSgzMix2bXB5dWhlLCJWZDMyLnV3PXZtcHllKFZ1MzIudWgsUnQzMi51 aCkiLAorIlZlY3RvciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRpcGx5IGJ5IHNjYWxhciIs CisgICAgVmRWLnV3W2ldID0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksZkdFVFVI QUxGKDAsUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9OT1YxKDMyLHZtcHl1aGVf YWNjLCJWeDMyLnV3Kz12bXB5ZShWdTMyLnVoLFJ0MzIudWgpIiwKKyJWZWN0b3IgZXZlbiBoYWxm d29yZCB1bnNpZ25lZCBtdWx0aXBseSBieSBzY2FsYXIiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZ MTZVVShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYpKSkKKworCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorIFZlY3JvciBISS9MT1cgYWNjZXNzb3JzCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworREVGX0NWSV9NQVBQSU5HKFY2X2hpLCAiVmQzMj1oaShWc3MzMiki LCJWZDMyPVZzcy5IMzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X2xvLCAiVmQzMj1sbyhWc3MzMiki LCJWZDMyPVZzcy5MMzIiKQorCisKKworCitFWFRJTlNOKFY2X3ZnYXRoZXJtdywgICJ2dG1wLnc9 dmdhdGhlcihSdDMyLE11MixWdjMyLncpLnciLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NT LEFfTUVNU0laRV80QixBX01FTUxJS0UsQV9DVklfR0FUSEVSX0FERFJfNEIsQV9OT1RFX0FOWV9S RVNPVVJDRSksICJHYXRoZXIgV29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShp bnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11Viwg ZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAg ZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAg ICAgIEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfV09SRChF QSwgVnZWLnV3W2ldLCBpLE11Vik7CisgICAgfQorICAgIGZHQVRIRVJfRklOSVNIKCkKK30pCitF WFRJTlNOKFY2X3ZnYXRoZXJtaCwgICJ2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgpLmgi LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9W TSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8yQixBX01FTUxJS0UsQV9D VklfR0FUSEVSX0FERFJfMkIsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJHYXRoZXIgaGFsZndvcmRz IiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQor ICAgIGZISURFKGZHQVRIRVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZW TEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3Np emUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IFJ0VitWdlYudWhbaV07 CisgICAgICAgIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEKEVBLCBWdlYudWhbaV0sIGksTXVW KTsKKyAgICB9CisgICAgZkdBVEhFUl9GSU5JU0goKQorfSkKKworCisKK0VYVElOU04oVjZfdmdh dGhlcm1odywgICJ2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9HQVRIRVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklf VE1QX0RTVCxBX0VBX1BBR0VDUk9TUyxBX01FTVNJWkVfMkIsQV9NRU1MSUtFLEFfQ1ZJX0dBVEhF Ul9BRERSXzRCLEFfTk9URV9BTllfUkVTT1VSQ0UpLCAiR2F0aGVyIGhhbGZ3b3JkcyIsCit7Cisg ICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBqOykKKwlmSElERShpbnQgZWxlbWVudF9z aXplID0gMjspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXpl KTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgZm9yKGogPSAw OyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07Cisg ICAgICAgICAgICBmVkxPR19WVENNX0dBVEhFUl9IQUxGV09SRF9EVihFQSwgVnZ2Vi52W2pdLnV3 W2ldLCAoMippK2opLGksaixNdVYpOworICAgICAgICB9CisgICAgfQorICAgICBmR0FUSEVSX0ZJ TklTSCgpCit9KQorCisKK0VYVElOU04oVjZfdmdhdGhlcm13cSwgICJpZiAoUXM0KSB2dG1wLnc9 dmdhdGhlcihSdDMyLE11MixWdjMyLncpLnciLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NT LEFfTUVNU0laRV80QixBX01FTUxJS0UsQV9DVklfR0FUSEVSX0FERFJfNEIsQV9OT1RFX0FOWV9S RVNPVVJDRSksICJHYXRoZXIgV29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShp bnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11Viwg ZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAg ZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAg ICAgIEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfV09SRFEo RUEsIFZ2Vi51d1tpXSwgaSxRc1YsTXVWKTsKKyAgICB9CisgICAgZkdBVEhFUl9GSU5JU0goKQor fSkKK0VYVElOU04oVjZfdmdhdGhlcm1ocSwgICJpZiAoUXM0KSB2dG1wLmg9dmdhdGhlcihSdDMy LE11MixWdjMyLmgpLmgiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixB X0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8y QixBX01FTUxJS0UsQV9DVklfR0FUSEVSX0FERFJfMkIsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJH YXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1l bnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZHQVRIRVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRf c2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04o UnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9 IFJ0VitWdlYudWhbaV07CisgICAgICAgIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEUShFQSwg VnZWLnVoW2ldLCBpLFFzVixNdVYpOworICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQor CisKKworRVhUSU5TTihWNl92Z2F0aGVybWh3cSwgICJpZiAoUXM0KSB2dG1wLmg9dmdhdGhlcihS dDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9HQVRI RVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX0VBX1BBR0VDUk9TUyxBX01F TVNJWkVfMkIsQV9NRU1MSUtFLEFfQ1ZJX0dBVEhFUl9BRERSXzRCLEFfTk9URV9BTllfUkVTT1VS Q0UpLCAiR2F0aGVyIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURF KGludCBqOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdBVEhF Ul9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JF QUNIKDMyLCBpKSB7CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAg ICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0dBVEhF Ul9IQUxGV09SRFFfRFYoRUEsIFZ2dlYudltqXS51d1tpXSwgKDIqaStqKSxpLGosUXNWLE11Vik7 CisgICAgICAgfQorICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKKworRVhUSU5T TihWNl92c2NhdHRlcm13ICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIudykudz1WdzMyIiwgQVRU UklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFf RUFfUEFHRUNST1NTLEFfTUVNU0laRV80QixBX0NWSV9HQVRIRVJfQUREUl80QixBX01FTUxJS0Us QV9OT1RFX0FOWV9SRVNPVVJDRSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShpbnQg aTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDQ7KQorICAgIGZISURFKGZTQ0FUVEVSX0lO SVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVu dF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0go MzIsIGkpIHsKKyAgICAgICAgRUEgPSBSdFYrVnZWLnV3W2ldOworICAgICAgICBmVkxPR19WVENN X1dPUkQoRUEsIFZ2Vi51d1tpXSwgVndWLGksTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklO SVNIKDApCit9KQorCisKKworRVhUSU5TTihWNl92c2NhdHRlcm1oICwgInZzY2F0dGVyKFJ0MzIs TXUyLFZ2MzIuaCkuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FU VEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8yQixBX0NWSV9H QVRIRVJfQUREUl8yQixBX01FTUxJS0UsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJTY2F0dGVyIGhh bGZXb3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUg PSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTsp CisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2 Vi51aFtpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9IQUxGV09SRChFQSxWdlYudWhbaV0sVndWLGks TXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCisKK0VYVElOU04oVjZf dnNjYXR0ZXJtd19hZGQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53Kz1WdzMyIiwgQVRU UklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFf RUFfUEFHRUNST1NTLEFfTUVNU0laRV80QixBX0NWSV9HQVRIRVJfQUREUl80QixBX01FTUxJS0Us QV9DVklfU0NBVFRFUl9XT1JEX0FDQyxBX05PVEVfQU5ZX1JFU09VUkNFKSwgIlNjYXR0ZXIgV29y ZHMtQWRkIiwKK3sKKyAgICBmSElERShpbnQgaTspCisgICAgZkhJREUoaW50IEFMSUdOTUVOVD00 OykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZlNDQVRURVJfSU5J VCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50 X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgz MiwgaSkgeworICAgICAgICBFQSA9IChSdFYrZlZBTElHTihWdlYudXdbaV0sQUxJR05NRU5UKSk7 CisgICAgICAgIGZWTE9HX1ZUQ01fV09SRF9JTkNSRU1FTlQoRUEsVnZWLnV3W2ldLFZ3VixpLEFM SUdOTUVOVCxNdVYpOworICAgIH0KKyAgICBmSElERShmTE9HX1NDQVRURVJfT1AoNCk7KQorICAg IGZTQ0FUVEVSX0ZJTklTSCgxKQorfSkKKworRVhUSU5TTihWNl92c2NhdHRlcm1oX2FkZCwgICJ2 c2NhdHRlcihSdDMyLE11MixWdjMyLmgpLmgrPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9FQV9QQUdFQ1JPU1MsQV9NRU1T SVpFXzJCLEFfQ1ZJX0dBVEhFUl9BRERSXzJCLEFfQ1ZJX1NDQVRURVJfQUNDLEFfTUVNTElLRSxB X05PVEVfQU5ZX1JFU09VUkNFKSwgIlNjYXR0ZXIgaGFsZndvcmQtQWRkIiwKK3sKKyAgICBmSElE RShpbnQgaTspCisgICAgZkhJREUoaW50IEFMSUdOTUVOVD0yOykKKwlmSElERShpbnQgZWxlbWVu dF9zaXplID0gMjspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRf c2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04o UnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9 IChSdFYrZlZBTElHTihWdlYudWhbaV0sQUxJR05NRU5UKSk7CisgICAgICAgIGZWTE9HX1ZUQ01f SEFMRldPUkRfSU5DUkVNRU5UKEVBLFZ2Vi51aFtpXSxWd1YsaSxBTElHTk1FTlQsTXVWKTsKKyAg ICB9CisgICAgZkhJREUoZkxPR19TQ0FUVEVSX09QKDIpOykKKyAgICBmU0NBVFRFUl9GSU5JU0go MSkKK30pCisKKworRVhUSU5TTihWNl92c2NhdHRlcm13cSwgICJpZiAoUXM0KSB2c2NhdHRlcihS dDMyLE11MixWdjMyLncpLnc9VnczMiIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklf U0NBVFRFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0VBX1BBR0VDUk9TUyxBX01FTVNJWkVfNEIsQV9D VklfR0FUSEVSX0FERFJfNEIsQV9NRU1MSUtFLEFfTk9URV9BTllfUkVTT1VSQ0UpLCAiU2NhdHRl ciBXb3JkcyBjb25kaXRpb25hbCIsCit7CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBl bGVtZW50X3NpemUgPSA0OykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxl bWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZB TElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAg IEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9XT1JEUShFQSxWdlYudXdb aV0sIFZ3VixpLFFzVixNdVYpOworICAgIH0KKyAgICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisK K0VYVElOU04oVjZfdnNjYXR0ZXJtaHEsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYz Mi5oKS5oPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9D VklfVkEsQV9DVklfVk0sQV9FQV9QQUdFQ1JPU1MsQV9NRU1TSVpFXzJCLEFfQ1ZJX0dBVEhFUl9B RERSXzJCLEFfTUVNTElLRSxBX05PVEVfQU5ZX1JFU09VUkNFKSwgIlNjYXR0ZXIgSGFsZldvcmRz IGNvbmRpdGlvbmFsIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRf c2l6ZSA9IDI7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3Np emUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0 ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMTYsIGkpIHsKKyAgICAgICAgRUEgPSBS dFYrVnZWLnVoW2ldOworICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JEUShFQSxWdlYudWhbaV0s VndWLGksUXNWLE11Vik7CisgICAgfQorICAgIGZTQ0FUVEVSX0ZJTklTSCgwKQorfSkKKworCisK KworRVhUSU5TTihWNl92c2NhdHRlcm1odyAsICJ2c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5o PVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkFf RFYsQV9DVklfVk0sQV9FQV9QQUdFQ1JPU1MsQV9NRU1TSVpFXzJCLEFfQ1ZJX0dBVEhFUl9BRERS XzRCLEFfTUVNTElLRSxBX05PVEVfQU5ZMl9SRVNPVVJDRSksICJTY2F0dGVyIFdvcmRzIiwKK3sK KyAgICBmSElERShpbnQgaTspCisgICAgZkhJREUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50 X3NpemUgPSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9z aXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihS dFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZvcihq ID0gMDsgaiA8IDI7IGorKykgeworICAgICAgICAgICAgRUEgPSBSdFYrVnZ2Vi52W2pdLnV3W2ld OworICAgICAgICAgICAgZlZMT0dfVlRDTV9IQUxGV09SRF9EVihFQSxWdnZWLnZbal0udXdbaV0s VndWLCgyKmkraiksaSxqLE11Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgZlNDQVRURVJfRklO SVNIKDApCit9KQorCisKKworRVhUSU5TTihWNl92c2NhdHRlcm1od3EsICAiaWYgKFFzNCkgdnNj YXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBX0RWLEFfQ1ZJX1ZNLEFfRUFfUEFHRUNST1NTLEFfTUVN U0laRV8yQixBX0NWSV9HQVRIRVJfQUREUl80QixBX01FTUxJS0UsQV9OT1RFX0FOWTJfUkVTT1VS Q0UpLCAiU2NhdHRlciBoYWxmd29yZHMgY29uZGl0aW9uYWwiLAoreworICAgIGZISURFKGludCBp OykKKyAgICBmSElERShpbnQgajspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAg IGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxB U1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXpl KTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisr KSB7CisgICAgICAgICAgICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBm VkxPR19WVENNX0hBTEZXT1JEUV9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiksUXNW LGksaixNdVYpOworICAgICAgICB9CisgICAgfQorICAgIGZTQ0FUVEVSX0ZJTklTSCgwKQorfSkK KworRVhUSU5TTihWNl92c2NhdHRlcm1od19hZGQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIu dykuaCs9VnczMiIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfU0NBVFRFUixBX0NW SV9WQV9EVixBX0NWSV9WTSxBX0VBX1BBR0VDUk9TUyxBX01FTVNJWkVfMkIsQV9DVklfR0FUSEVS X0FERFJfNEIsQV9DVklfU0NBVFRFUl9BQ0MsQV9NRU1MSUtFLEFfTk9URV9BTlkyX1JFU09VUkNF KSwgIlNjYXR0ZXIgaGFsZndvcmRzLWFkZCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZI SURFKGludCBqOykKKyAgICBmSElERShpbnQgQUxJR05NRU5UPTI7KQorCWZISURFKGludCBlbGVt ZW50X3NpemUgPSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVu dF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElH TihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZv cihqID0gMDsgaiA8IDI7IGorKykgeworICAgICAgICAgICAgIEVBID0gIFJ0ViArIGZWQUxJR04o VnZ2Vi52W2pdLnV3W2ldLEFMSUdOTUVOVCk7OworICAgICAgICAgICAgIGZWTE9HX1ZUQ01fSEFM RldPUkRfSU5DUkVNRU5UX0RWKEVBLFZ2dlYudltqXS51d1tpXSxWd1YsKDIqaStqKSxpLGosQUxJ R05NRU5ULE11Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgZkhJREUoZkxPR19TQ0FUVEVSX09Q KDIpOykKKyAgICBmU0NBVFRFUl9GSU5JU0goMSkKK30pCitERUZfQ1ZJX01BUFBJTkcoVjZfdnNj YXR0ZXJtd19hbHQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KT1WdzMyLnciLCAgInZzY2F0 dGVyKFJ0MzIsTXUyLFZ2MzIudykudz1WdzMyIikKK0RFRl9DVklfTUFQUElORyhWNl92c2NhdHRl cm13aF9hbHQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudyk9VnczMi5oIiwgICJ2c2NhdHRl cihSdDMyLE11MixWdnYzMi53KS5oPVZ3MzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVy bWhfYWx0LCAgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCk9VnczMi5oIiwgICJ2c2NhdHRlcihS dDMyLE11MixWdjMyLmgpLmg9VnczMiIpCisKK0RFRl9DVklfTUFQUElORyhWNl92c2NhdHRlcm13 X2FkZF9hbHQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KSs9VnczMi53IiwgICJ2c2NhdHRl cihSdDMyLE11MixWdjMyLncpLncrPVZ3MzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVy bXdoX2FkZF9hbHQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykrPVZ3MzIuaCIsICAidnNj YXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaCs9VnczMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfdnNj YXR0ZXJtaF9hZGRfYWx0LCAgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCkrPVZ3MzIuaCIsICAi dnNjYXR0ZXIoUnQzMixNdTIsVnYzMi5oKS5oKz1WdzMyIikKKworREVGX0NWSV9NQVBQSU5HKFY2 X3ZzY2F0dGVybXdxX2FsdCwgICJpZiAoUXM0KSB2c2NhdHRlcihSdDMyLE11MixWdjMyLncpPVZ3 MzIudyIsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53PVZ3MzIiKQorREVG X0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVybXdocV9hbHQsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQz MixNdTIsVnZ2MzIudyk9VnczMi5oIiwgICJpZiAoUXM0KSB2c2NhdHRlcihSdDMyLE11MixWdnYz Mi53KS5oPVZ3MzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVybWhxX2FsdCwgICJpZiAo UXM0KSB2c2NhdHRlcihSdDMyLE11MixWdjMyLmgpPVZ3MzIuaCIsICAiaWYgKFFzNCkgdnNjYXR0 ZXIoUnQzMixNdTIsVnYzMi5oKS5oPVZ3MzIiKQorCitFWFRJTlNOKFY2X3ZwcmVmaXhxYiwiVmQz Mi5iPXByZWZpeHN1bShRdjQpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZT LEFfQ1ZJX0VBUkxZLEFfTk9URV9TSElGVF9SRVNPVVJDRSksICAicGFyYWxsZWwgcHJlZml4IHN1 bSBvZiBRIGludG8gYnl0ZSIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKHNpemUx dV90IGFjYyA9IDA7KQorICAgIGZWRk9SRUFDSCg4LCBpKSB7CisgICAgICAgIGFjYyArPSBmR0VU UUJJVChRdlYsaSk7CisgICAgICAgIFZkVi51YltpXSA9IGFjYzsKKyAgICB9CisgICAgfSApCitF WFRJTlNOKFY2X3ZwcmVmaXhxaCwiVmQzMi5oPXByZWZpeHN1bShRdjQpIiwgICBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTLEFfQ1ZJX0VBUkxZLEFfTk9URV9TSElGVF9SRVNPVVJD RSksICAicGFyYWxsZWwgcHJlZml4IHN1bSBvZiBRIGludG8gaGFsZndvcmRzIiwKK3sKKyAgICBm SElERShpbnQgaTspCisgICAgZkhJREUoc2l6ZTJ1X3QgYWNjID0gMDspCisgICAgZlZGT1JFQUNI KDE2LCBpKSB7CisgICAgICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSoyKzApOworICAgICAgICBh Y2MgKz0gZkdFVFFCSVQoUXZWLGkqMisxKTsKKyAgICAgICAgVmRWLnVoW2ldID0gYWNjOworICAg IH0KKyAgICB9ICkKK0VYVElOU04oVjZfdnByZWZpeHF3LCJWZDMyLnc9cHJlZml4c3VtKFF2NCki LCAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMsQV9DVklfRUFSTFksQV9OT1RF X1NISUZUX1JFU09VUkNFKSwgICJwYXJhbGxlbCBwcmVmaXggc3VtIG9mIFEgaW50byB3b3JkcyIs Cit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKHNpemU0dV90IGFjYyA9IDA7KQorICAg IGZWRk9SRUFDSCgzMiwgaSkgeworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqNCswKTsK KyAgICAgICAgYWNjICs9IGZHRVRRQklUKFF2VixpKjQrMSk7CisgICAgICAgIGFjYyArPSBmR0VU UUJJVChRdlYsaSo0KzIpOworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqNCszKTsKKyAg ICAgICAgVmRWLnV3W2ldID0gYWNjOworICAgIH0KKyAgICB9ICkKKworCisKKworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgREVCVUcgVmVjdG9yL1JlZ2lzdGVyIFByaW50aW5nCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCisjZGVmaW5lIFBSSU5UX1ZVKFRZUEUsIFRZUEUyLCBDT1VOVClc CisgICAgaW50IGk7ICBcCisgICAgc2l6ZTR1X3QgdmVjX2xlbiA9IGZWQllURVMoKTtcCisgICAg ZnByaW50ZihzdGRvdXQsIlYlMmQ6ICIsVnVOKTsgIFwKKyAgICBmb3IgKGk9MDtpPHZlY19sZW4+ PkNPVU5UO2krKykgeyAgICAgICAgIFwKKyAgICAgICAgZnByaW50ZihzdGRvdXQsVFlQRTIgIiAi LCBWdVYuVFlQRVtpXSk7IFwKKyAgICB9OyAgXAorICAgIGZwcmludGYoc3Rkb3V0LCJcXG4iKTsg IFwKKwlmZmx1c2goc3Rkb3V0KTtcCisKK0VYVElOU04oVjZfcHYzMiwgICAgInB2MzIoVnUzMiki LCAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9WREJHLEFfRkFLRUlOU04pLCJQcmludCBh IFZlY3RvciIsICB7ICAgUFJJTlRfVlUodXcsICIlMDh4IiwgMik7ICAgIH0pCitFWFRJTlNOKFY2 X3B2MzJkLCAgICJwdjMyZChWdTMyKSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRC RyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHcsICAiJTEwZCIs IDIpOyAgICB9KQorRVhUSU5TTihWNl9wdjMyZHUsICAicHYzMmR1KFZ1MzIpIiwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX1ZEQkcsQV9GQUtFSU5TTiksIlByaW50IGEgVmVjdG9yIiwgIHsg ICBQUklOVF9WVSh1dywgIiUxMHUiLCAyKTsgICAgfSkKK0VYVElOU04oVjZfcHY2NGQsICAgInB2 NjRkKFZ1MzIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9WREJHLEFfRkFLRUlOU04p LCJQcmludCBhIFZlY3RvciIsICB7ICAgUFJJTlRfVlUodWQsICIlbGxpIiwgNCk7ICAgIH0pCitF WFRJTlNOKFY2X3B2MTYsICAgICJwdjE2KFZ1MzIpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHVo LCAiJTA0eCIsIDEpOyAgIH0pCitFWFRJTlNOKFY2X3B2MTZkLCAgICJwdjE2ZChWdTMyKSIsICBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0 b3IiLCAgeyAgIFBSSU5UX1ZVKGgsICAiJTVkIiwgIDEpOyAgIH0pCitFWFRJTlNOKFY2X3B2OGQs ICAgICJwdjhkKFZ1MzIpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZB S0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHViLCAiJTN1IiwgIDApOyAg IH0pCitFWFRJTlNOKFY2X3B2OCwgICAgICJwdjgoVnUzMikiLCAgICBBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5U X1ZVKHViLCAiJTAyeCIsIDApOyAgIH0pCitFWFRJTlNOKFY2X3ByZWcsICAgICJwcmVnKFJ1MzIp IiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQg YSBzY2FsYXIiLCAgeyAgIHByaW50ZigiUiUwMmQ9MHglMDh4XFxuIiwgUnVOLCBSdVYpO30pCitF WFRJTlNOKFY2X3ByZWdkLCAgICJwcmVnZChSdTMyKSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBzY2FsYXIiLCAgeyAgIHByaW50ZigiUiUw MmQ9JTEwZFxcbiIsIFJ1TiwgUnVWKTsgfSkKK0VYVElOU04oVjZfcHJlZ2YsICAgInByZWdmKFJ1 MzIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9WREJHLEFfRkFLRUlOU04pLCJQcmlu dCBhIHNjYWxhciIsICB7ICAgcHJpbnRmKCJSJTAyZD0lZlxcbiIsIFJ1TiwgKGZsb2F0KVJ1Vik7 IH0pCisKK0VYVElOU04oVjZfcHosICAgCSJweihadTIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04s QV9DVkksQV9WREJHLEFfRkFLRUlOU04pLCJQcmludCBhIHNjYWxhciIsICB7CisJZnByaW50Zihz dGRvdXQsIlolZDpcXG4iLCBadU4pOworCWZvcihpbnQgbT0wLCBsPTA7IGwgPCBmVkJZVEVTKCkv NC84OyBsKyspCisJeworCQlmcHJpbnRmKHN0ZG91dCwiXFx0Iik7CisJCWZvcihpbnQgayA9IDA7 IGsgPCA4OyBrKyssbSsrKQorCQkJZnByaW50ZihzdGRvdXQsIiV4ICIsIFp1Vi53W21dKTsKKwkJ ZnByaW50ZihzdGRvdXQsIlxcbiIpOworCX0KKwlmcHJpbnRmKHN0ZG91dCwiXFxuIik7CisJZmZs dXNoKHN0ZG91dCk7Cit9KQorCisKKworCitFWFRJTlNOKFY2X3BwcmVkLCAgICJwcHJlZChRczQp IiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQg UHJlZGljYXRlcyIsCisgICAgaW50IGo7CisgICAgZnByaW50ZihzdGRvdXQsIlElZDogWyIsUXNO KTsKKyAgICBmb3IgKGogPSAwOyBqIDwgZlZCWVRFUygpLTE7IGorKyl7CisgICAgICAgIGZwcmlu dGYoc3Rkb3V0LCIlMXgsIiwgZkdFVFFCSVQoUXNWLGopKTsKKyAgICB9CisgICAgZnByaW50Zihz dGRvdXQsIiUxeCIsIGZHRVRRQklUKFFzVixqKSk7CisgICAgZnByaW50ZihzdGRvdXQsIl1cXG4i KTsKKwlmZmx1c2goc3Rkb3V0KTsKKykKKworCisKKworI3VuZGVmIEFUVFJfVk1FTQorI3VuZGVm IEFUVFJfVk1FTVUKKyN1bmRlZiBBVFRSX1ZNRU1fTlQKKworI2VuZGlmIC8qIE5PX01NVkVDICov CisKKyNpZmRlZiBfX1NFTEZfREVGX0VYVElOU04KKyN1bmRlZiBFWFRJTlNOCisjdW5kZWYgX19T RUxGX0RFRl9FWFRJTlNOCisjZW5kaWYKLS0gCjIuNy40Cgo=