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=-12.6 required=3.0 tests=BAYES_00,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 75F6BC433E1 for ; Tue, 18 Aug 2020 16:06:11 +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 D880B207D3 for ; Tue, 18 Aug 2020 16:06:10 +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="WKDJGdqf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D880B207D3 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]:60646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k847m-0007sG-4E for qemu-devel@archiver.kernel.org; Tue, 18 Aug 2020 12:06:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60958) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k83ta-0007Lf-9e for qemu-devel@nongnu.org; Tue, 18 Aug 2020 11:51:30 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:12928) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k83tU-0005rJ-39 for qemu-devel@nongnu.org; Tue, 18 Aug 2020 11:51:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1597765884; x=1629301884; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=emErAQSm+Qvr7+4t5orBpfMJ7HAfX4aYQ6wPH0YTA+Q=; b=WKDJGdqfsOppigg9T1eQ+uwLV/0/19QlmOO9DqI3muDksD8N/VF8US+S gFJ1lga8J+fn1EuU+KQHTfa49ns2jXa1xLG4WwfIDTgJvYpz4yjUn4yto us7PJjMZaUheJ2u8t/VSLIiAX1ESKIjOhvJSl5h4zNI0Cp258beUeqeJI U=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 18 Aug 2020 08:50:58 -0700 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg04-sd.qualcomm.com with ESMTP; 18 Aug 2020 08:50:57 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 59BF37BD; Tue, 18 Aug 2020 10:50:57 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 18/34] Hexagon (target/hexagon/imported) arch import - instruction semantics Date: Tue, 18 Aug 2020 10:50:31 -0500 Message-Id: <1597765847-16637-19-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1597765847-16637-1-git-send-email-tsimpson@quicinc.com> References: <1597765847-16637-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/18 11:50:57 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: ale@rev.ng, riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsaWRlZnMuZGVmICAgICAgICAgIFRvcCBsZXZlbCBpbnN0cnVjdGlvbiBkZWZpbml0aW9u IGZpbGUKICAgIGltcG9ydGVkLyouaWRlZiAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiBkZWZp bml0aW9uIGZpbGVzClRoZXNlIGZpbGVzIGFyZSBpbnB1dCB0byB0aGUgZmlyc3QgcGhhc2Ugb2Yg dGhlIGdlbmVyYXRvciAoZ2VuX3NlbWFudGljcy5jKQp0byBjcmVhdGUgYSBweXRob24gaW5jbHVk ZSBmaWxlIHdpdGggdGhlIGluc3RydWN0aW9uIHNlbWFudGljcyBhbmQKYXR0cmlidXRlcy4gIFRo ZSBweXRob24gaW5jbHVkZSBmaWxlIGlzIGZlZCB0byB0aGUgc2Vjb25kIHBoYXNlIHRvIGdlbmVy YXRlCnZhcmlvdXMgaGVhZGVyIGZpbGVzLgoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24g PHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlk ZWZzLmRlZiAgfCAgIDMwICsKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsdS5pZGVmICAgICAg fCAxMjU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvYnJhbmNoLmlkZWYgICB8ICAzMjggKysrKysrKysrCiB0YXJnZXQvaGV4YWdvbi9p bXBvcnRlZC9jb21wYXJlLmlkZWYgIHwgIDYyMSArKysrKysrKysrKysrKysrCiB0YXJnZXQvaGV4 YWdvbi9pbXBvcnRlZC9mbG9hdC5pZGVmICAgIHwgIDMxMyArKysrKysrKwogdGFyZ2V0L2hleGFn b24vaW1wb3J0ZWQvbGRzdC5pZGVmICAgICB8ICAyODYgKysrKysrKysKIHRhcmdldC9oZXhhZ29u L2ltcG9ydGVkL21weS5pZGVmICAgICAgfCAxMjEyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3NoaWZ0LmlkZWYgICAgfCAxMDY3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N1Ymluc25z LmlkZWYgfCAgMTUyICsrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N5c3RlbS5pZGVmICAg fCAgIDY5ICsrCiAxMCBmaWxlcyBjaGFuZ2VkLCA1MzM3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbHUuaWRlZgogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2JyYW5jaC5pZGVmCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvY29tcGFyZS5pZGVmCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvZmxvYXQuaWRlZgogY3JlYXRlIG1vZGUgMTAw NjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2xkc3QuaWRlZgogY3JlYXRlIG1vZGUgMTAwNjQ0 IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21weS5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFy Z2V0L2hleGFnb24vaW1wb3J0ZWQvc2hpZnQuaWRlZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdl dC9oZXhhZ29uL2ltcG9ydGVkL3N1Ymluc25zLmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJn ZXQvaGV4YWdvbi9pbXBvcnRlZC9zeXN0ZW0uaWRlZgoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhh Z29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlk ZWZzLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzM5YzEwCi0tLSAv ZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmCkBAIC0w LDAgKzEsMzAgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5v dmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAqIFRvcCBsZXZlbCBpbnN0 cnVjdGlvbiBkZWZpbml0aW9uIGZpbGUKKyAqLworCisjaW5jbHVkZSAiYnJhbmNoLmlkZWYiCisj aW5jbHVkZSAibGRzdC5pZGVmIgorI2luY2x1ZGUgImNvbXBhcmUuaWRlZiIKKyNpbmNsdWRlICJt cHkuaWRlZiIKKyNpbmNsdWRlICJhbHUuaWRlZiIKKyNpbmNsdWRlICJmbG9hdC5pZGVmIgorI2lu Y2x1ZGUgInNoaWZ0LmlkZWYiCisjaW5jbHVkZSAic3lzdGVtLmlkZWYiCisjaW5jbHVkZSAic3Vi aW5zbnMuaWRlZiIKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsdS5pZGVm IGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWx1LmlkZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uOGMwODA0ZQotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29u L2ltcG9ydGVkL2FsdS5pZGVmCkBAIC0wLDAgKzEsMTI1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQo YykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq LworCisvKgorICogQUxVIEluc3RydWN0aW9ucworICovCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBBZGQvU3ViIGluc3RydWN0aW9ucwkJ ICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworUTZJTlNOKEEyX2FkZCwiUmQzMj1hZGQoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkFk ZCAzMi1iaXQgcmVnaXN0ZXJzIiwKK3sgUmRWPVJzVitSdFY7fSkKKworUTZJTlNOKEEyX3N1Yiwi UmQzMj1zdWIoUnQzMixSczMyKSIsQVRUUklCUygpLAorIlN1YnRyYWN0IDMyLWJpdCByZWdpc3Rl cnMiLAoreyBSZFY9UnRWLVJzVjt9KQorCisjZGVmaW5lIENPTkRfQUxVKFRBRyxPUEVSLERFU0NS LFNFTUFOVElDUylcCitRNklOU04oVEFHIyN0LCJpZiAoUHU0KSAiT1BFUixBVFRSSUJTKEFfQVJD SFYyKSxERVNDUix7aWYoZkxTQk9MRChQdVYpKXtTRU1BTlRJQ1M7fSBlbHNlIHtDQU5DRUw7fX0p XAorUTZJTlNOKFRBRyMjZiwiaWYgKCFQdTQpICJPUEVSLEFUVFJJQlMoQV9BUkNIVjIpLERFU0NS LHtpZihmTFNCT0xETk9UKFB1Vikpe1NFTUFOVElDUzt9IGVsc2Uge0NBTkNFTDt9fSlcCitRNklO U04oVEFHIyN0bmV3LCJpZiAoUHU0Lm5ldykgIiBPUEVSLEFUVFJJQlMoQV9BUkNIVjIpLERFU0NS LHtpZihmTFNCTkVXKFB1Tikpe1NFTUFOVElDUzt9IGVsc2Uge0NBTkNFTDt9fSlcCitRNklOU04o VEFHIyNmbmV3LCJpZiAoIVB1NC5uZXcpICJPUEVSLEFUVFJJQlMoQV9BUkNIVjIpLERFU0NSLHtp ZihmTFNCTkVXTk9UKFB1Tikpe1NFTUFOVElDUzt9IGVsc2Uge0NBTkNFTDt9fSkKKworQ09ORF9B TFUoQTJfcGFkZCwiUmQzMj1hZGQoUnMzMixSdDMyKSIsIkNvbmRpdGlvbmFsbHkgQWRkIDMyLWJp dCByZWdpc3RlcnMiLFJkVj1Sc1YrUnRWKQorQ09ORF9BTFUoQTJfcHN1YiwiUmQzMj1zdWIoUnQz MixSczMyKSIsIkNvbmRpdGlvbmFsbHkgU3VidHJhY3QgMzItYml0IHJlZ2lzdGVycyIsUmRWPVJ0 Vi1Sc1YpCitDT05EX0FMVShBMl9wYWRkaSwiUmQzMj1hZGQoUnMzMiwjczgpIiwiQ29uZGl0aW9u YWxseSBBZGQgUmVnaXN0ZXIgYW5kIGltbWVkaWF0ZSIsZklNTUVYVChzaVYpOyBSZFY9UnNWK3Np VikKK0NPTkRfQUxVKEEyX3B4b3IsIlJkMzI9eG9yKFJzMzIsUnQzMikiLCJDb25kaXRpb25hbGx5 IFhPUiByZWdpc3RlcnMiLFJkVj1Sc1ZeUnRWKTsKK0NPTkRfQUxVKEEyX3BhbmQsIlJkMzI9YW5k KFJzMzIsUnQzMikiLCJDb25kaXRpb25hbGx5IEFORCByZWdpc3RlcnMiLFJkVj1Sc1YmUnRWKTsK K0NPTkRfQUxVKEEyX3BvciwiUmQzMj1vcihSczMyLFJ0MzIpIiwiQ29uZGl0aW9uYWxseSBPUiBy ZWdpc3RlcnMiLFJkVj1Sc1Z8UnRWKTsKKworQ09ORF9BTFUoQTRfcHN4dGIsIlJkMzI9c3h0YihS czMyKSIsIkNvbmRpdGlvbmFsbHkgc2lnbi1leHRlbmQgYnl0ZSIsIFJkVj1mU1hUTig4LDMyLFJz VikpOworQ09ORF9BTFUoQTRfcHp4dGIsIlJkMzI9enh0YihSczMyKSIsIkNvbmRpdGlvbmFsbHkg emVyby1leHRlbmQgYnl0ZSIsIFJkVj1mWlhUTig4LDMyLFJzVikpOworQ09ORF9BTFUoQTRfcHN4 dGgsIlJkMzI9c3h0aChSczMyKSIsIkNvbmRpdGlvbmFsbHkgc2lnbi1leHRlbmQgaGFsZndvcmQi LCBSZFY9ZlNYVE4oMTYsMzIsUnNWKSk7CitDT05EX0FMVShBNF9wenh0aCwiUmQzMj16eHRoKFJz MzIpIiwiQ29uZGl0aW9uYWxseSB6ZXJvLWV4dGVuZCBoYWxmd29yZCIsIFJkVj1mWlhUTigxNiwz MixSc1YpKTsKK0NPTkRfQUxVKEE0X3Bhc2xoLCJSZDMyPWFzbGgoUnMzMikiLCJDb25kaXRpb25h bGx5IHplcm8tZXh0ZW5kIGhhbGZ3b3JkIiwgUmRWPVJzVjw8MTYpOworQ09ORF9BTFUoQTRfcGFz cmgsIlJkMzI9YXNyaChSczMyKSIsIkNvbmRpdGlvbmFsbHkgemVyby1leHRlbmQgaGFsZndvcmQi LCBSZFY9UnNWPj4xNik7CisKKworUTZJTlNOKEEyX2FkZHNhdCwiUmQzMj1hZGQoUnMzMixSdDMy KTpzYXQiLEFUVFJJQlMoKSwKKyJBZGQgMzItYml0IHJlZ2lzdGVycyB3aXRoIHNhdHVyYXRpb24i LAoreyBSZFY9ZlNBVChmU0UzMl82NChSc1YpK2ZTRTMyXzY0KFJ0VikpOyB9KQorCitRNklOU04o QTJfc3Vic2F0LCJSZDMyPXN1YihSdDMyLFJzMzIpOnNhdCIsQVRUUklCUygpLAorIlN1YnRyYWN0 IDMyLWJpdCByZWdpc3RlcnMgd2l0aCBzYXR1cmF0aW9uIiwKK3sgUmRWPWZTQVQoZlNFMzJfNjQo UnRWKSAtIGZTRTMyXzY0KFJzVikpOyB9KQorCisKK1E2SU5TTihBMl9hZGRpLCJSZDMyPWFkZChS czMyLCNzMTYpIixBVFRSSUJTKCksCisiQWRkIGEgc2lnbmVkIGltbWVkaWF0ZSB0byBhIHJlZ2lz dGVyIiwKK3sgZklNTUVYVChzaVYpOyBSZFY9UnNWK3NpVjt9KQorCisKK1E2SU5TTihDNF9hZGRp cGMsIlJkMzI9YWRkKHBjLCN1NikiLEFUVFJJQlMoKSwKKyJBZGQgaW1tZWRpYXRlIHRvIFBDIiwK K3sgUmRWPWZSRUFEX1BDKCkrZklNTUVYVCh1aVYpO30pCisKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNpbmdsZS1wcmVjaXNpb24gSEwg Zm9ybXMJCSAgKi8KKy8qIFRoZXNlIGluc25zIGFuZCB0aGUgU1AgbXB5IGFyZSB0aGUgb25lcyAg ICAqLworLyogdGhhdCBjYW4gZG8gLkhMIHN0dWZmCQkgICAgICAqLworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFNURF9ITF9JTlNOKFRB RyxPUEVSLEFPUEVSLEFUUixTRU0pXAorUTZJTlNOKEEyXyMjVEFHIyNfbGwsIE9QRVIiKFJ0Lkwz MixScy5MMzIpIkFPUEVSLCAgICBBVFIsIiIse1NFTShmR0VUSEFMRigwLFJ0ViksZkdFVEhBTEYo MCxSc1YpKTt9KVwKK1E2SU5TTihBMl8jI1RBRyMjX2xoLCBPUEVSIihSdC5MMzIsUnMuSDMyKSJB T1BFUiwgICAgQVRSLCIiLHtTRU0oZkdFVEhBTEYoMCxSdFYpLGZHRVRIQUxGKDEsUnNWKSk7fSlc CitRNklOU04oQTJfIyNUQUcjI19obCwgT1BFUiIoUnQuSDMyLFJzLkwzMikiQU9QRVIsICAgIEFU UiwiIix7U0VNKGZHRVRIQUxGKDEsUnRWKSxmR0VUSEFMRigwLFJzVikpO30pXAorUTZJTlNOKEEy XyMjVEFHIyNfaGgsIE9QRVIiKFJ0LkgzMixScy5IMzIpIkFPUEVSLCAgICBBVFIsIiIse1NFTShm R0VUSEFMRigxLFJ0ViksZkdFVEhBTEYoMSxSc1YpKTt9KQorCisjZGVmaW5lIFNVQlNURF9ITF9J TlNOKFRBRyxPUEVSLEFPUEVSLEFUUixTRU0pXAorUTZJTlNOKEEyXyMjVEFHIyNfbGwsIE9QRVIi KFJ0LkwzMixScy5MMzIpIkFPUEVSLCAgICBBVFIsIiIse1NFTShmR0VUSEFMRigwLFJ0ViksZkdF VEhBTEYoMCxSc1YpKTt9KVwKK1E2SU5TTihBMl8jI1RBRyMjX2hsLCBPUEVSIihSdC5MMzIsUnMu SDMyKSJBT1BFUiwgICAgQVRSLCIiLHtTRU0oZkdFVEhBTEYoMCxSdFYpLGZHRVRIQUxGKDEsUnNW KSk7fSkKKworCisjdW5kZWYgSExTRU0KKyNkZWZpbmUgSExTRU0oQSxCKSBSZFY9ZlNYVE4oMTYs MzIsKEErQikpCitTVUJTVERfSExfSU5TTihhZGRoX2wxNiwiUmQzMj1hZGQiLCIiLEFUVFJJQlMo KSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEsQikgUmRWPWZTQVRIKEEr QikKK1NVQlNURF9ITF9JTlNOKGFkZGhfbDE2X3NhdCwiUmQzMj1hZGQiLCI6c2F0IixBVFRSSUJT KCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBITFNFTShBLEIpIFJkVj1mU1hUTigx NiwzMiwoQS1CKSkKK1NVQlNURF9ITF9JTlNOKHN1YmhfbDE2LCJSZDMyPXN1YiIsIiIsQVRUUklC UygpLEhMU0VNKQorCisjdW5kZWYgSExTRU0KKyNkZWZpbmUgSExTRU0oQSxCKSBSZFY9ZlNBVEgo QS1CKQorU1VCU1REX0hMX0lOU04oc3ViaF9sMTZfc2F0LCJSZDMyPXN1YiIsIjpzYXQiLEFUVFJJ QlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEsQikgUmRWPShBK0Ip PDwxNgorU1REX0hMX0lOU04oYWRkaF9oMTYsIlJkMzI9YWRkIiwiOjw8MTYiLEFUVFJJQlMoKSxI TFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEsQikgUmRWPShmU0FUSChBK0Ip KTw8MTYKK1NURF9ITF9JTlNOKGFkZGhfaDE2X3NhdCwiUmQzMj1hZGQiLCI6c2F0Ojw8MTYiLEFU VFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEsQikgUmRWPShB LUIpPDwxNgorU1REX0hMX0lOU04oc3ViaF9oMTYsIlJkMzI9c3ViIiwiOjw8MTYiLEFUVFJJQlMo KSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEsQikgUmRWPShmU0FUSChB LUIpKTw8MTYKK1NURF9ITF9JTlNOKHN1YmhfaDE2X3NhdCwiUmQzMj1zdWIiLCI6c2F0Ojw8MTYi LEFUVFJJQlMoKSxITFNFTSkKKworCisKKworUTZJTlNOKEEyX2FzbGgsIlJkMzI9YXNsaChSczMy KSIsQVRUUklCUygpLAorIkFyaXRobWV0aWMgU2hpZnQgTGVmdCBieSBIYWxmd29yZCIseyBSZFY9 UnNWPDwxNjsgfSkKKworUTZJTlNOKEEyX2FzcmgsIlJkMzI9YXNyaChSczMyKSIsQVRUUklCUygp LAorIkFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSGFsZndvcmQiLHsgUmRWPVJzVj4+MTY7IH0p CisKKworLyogNjQtYml0IHZlcnNpb25zICovCisKK1E2SU5TTihBMl9hZGRwLCJSZGQzMj1hZGQo UnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQWRkIiwKK3sgUmRkVj1Sc3NWK1J0dFY7fSkKKwor UTZJTlNOKEEyX2FkZHBzYXQsIlJkZDMyPWFkZChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKEFf QVJDSFYzKSwKKyJBZGQiLAoreyBmQUREU0FUNjQoUmRkVixSc3NWLFJ0dFYpO30pCisKK1E2SU5T TihBMl9hZGRzcGwsIlJkZDMyPWFkZChSc3MzMixSdHQzMik6cmF3OmxvIixBVFRSSUJTKEFfQVJD SFYzKSwKKyJBZGQiLAoreyBSZGRWPVJ0dFYrZlNYVE4oMzIsNjQsZkdFVFdPUkQoMCxSc3NWKSk7 fSkKKworUTZJTlNOKEEyX2FkZHNwaCwiUmRkMzI9YWRkKFJzczMyLFJ0dDMyKTpyYXc6aGkiLEFU VFJJQlMoQV9BUkNIVjMpLAorIkFkZCIsCit7IFJkZFY9UnR0VitmU1hUTigzMiw2NCxmR0VUV09S RCgxLFJzc1YpKTt9KQorCitRNklOU04oQTJfc3VicCwiUmRkMzI9c3ViKFJ0dDMyLFJzczMyKSIs QVRUUklCUygpLAorIlN1YiIsCit7IFJkZFY9UnR0Vi1Sc3NWO30pCisKKy8qIE5FRyBhbmQgQUJT ICovCisKK1E2SU5TTihBMl9uZWdzYXQsIlJkMzI9bmVnKFJzMzIpOnNhdCIsQVRUUklCUygpLAor IkFyaXRobWV0aWMgbmVnYXRlIHJlZ2lzdGVyIiwgeyBSZFYgPSBmU0FUKC1mQ0FTVDhzKFJzVikp OyB9KQorCitRNklOU04oQTJfYWJzLCJSZDMyPWFicyhSczMyKSIsQVRUUklCUygpLAorIkFic29s dXRlIFZhbHVlIHJlZ2lzdGVyIiwgeyBSZFYgPSBmQUJTKFJzVik7IH0pCisKK1E2SU5TTihBMl9h YnNzYXQsIlJkMzI9YWJzKFJzMzIpOnNhdCIsQVRUUklCUygpLAorIkFyaXRobWV0aWMgbmVnYXRl IHJlZ2lzdGVyIiwgeyBSZFYgPSBmU0FUKGZBQlMoZkNBU1Q0XzhzKFJzVikpKTsgfSkKKworUTZJ TlNOKEEyX3Zjb25qLCJSZGQzMj12Y29uaihSc3MzMik6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwK KyJWZWN0b3IgQ29tcGxleCBjb25qdWdhdGUgb2YgUnNzIiwKK3sgIGZTRVRIQUxGKDEsUmRkVixm U0FUTigxNiwtZkdFVEhBTEYoMSxSc3NWKSkpOworICAgZlNFVEhBTEYoMCxSZGRWLGZHRVRIQUxG KDAsUnNzVikpOworICAgZlNFVEhBTEYoMyxSZGRWLGZTQVROKDE2LC1mR0VUSEFMRigzLFJzc1Yp KSk7CisgICBmU0VUSEFMRigyLFJkZFYsZkdFVEhBTEYoMixSc3NWKSk7Cit9KQorCisKKy8qIDY0 LWJpdCB2ZXJzaW9ucyAqLworCitRNklOU04oQTJfbmVncCwiUmRkMzI9bmVnKFJzczMyKSIsQVRU UklCUygpLAorIkFyaXRobWV0aWMgbmVnYXRlIHJlZ2lzdGVyIiwgeyBSZGRWID0gLVJzc1Y7IH0p CisKK1E2SU5TTihBMl9hYnNwLCJSZGQzMj1hYnMoUnNzMzIpIixBVFRSSUJTKCksCisiQWJzb2x1 dGUgVmFsdWUgcmVnaXN0ZXIiLCB7IFJkZFYgPSBmQUJTKFJzc1YpOyB9KQorCisKKy8qIE1JTiBh bmQgTUFYICBSICovCisKK1E2SU5TTihBMl9tYXgsIlJkMzI9bWF4KFJzMzIsUnQzMikiLEFUVFJJ QlMoKSwKKyJNYXhpbXVtIG9mIHR3byByZWdpc3RlcnMiLAoreyBSZFYgPSBmTUFYKFJzVixSdFYp OyB9KQorCitRNklOU04oQTJfbWF4dSwiUmQzMj1tYXh1KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwK KyJNYXhpbXVtIG9mIHR3byByZWdpc3RlcnMgKHVuc2lnbmVkKSIsCit7IFJkViA9IGZNQVgoZkNB U1Q0dShSc1YpLGZDQVNUNHUoUnRWKSk7IH0pCisKK1E2SU5TTihBMl9taW4sIlJkMzI9bWluKFJ0 MzIsUnMzMikiLEFUVFJJQlMoKSwKKyJNaW5pbXVtIG9mIHR3byByZWdpc3RlcnMiLAoreyBSZFYg PSBmTUlOKFJ0VixSc1YpOyB9KQorCitRNklOU04oQTJfbWludSwiUmQzMj1taW51KFJ0MzIsUnMz MikiLEFUVFJJQlMoKSwKKyJNaW5pbXVtIG9mIHR3byByZWdpc3RlcnMgKHVuc2lnbmVkKSIsCit7 IFJkViA9IGZNSU4oZkNBU1Q0dShSdFYpLGZDQVNUNHUoUnNWKSk7IH0pCisKKy8qIE1JTiBhbmQg TUFYIFBhaXJzICovCisjaWYgMQorUTZJTlNOKEEyX21heHAsIlJkZDMyPW1heChSc3MzMixSdHQz MikiLEFUVFJJQlMoQV9BUkNIVjMpLAorIk1heGltdW0gb2YgdHdvIHJlZ2lzdGVyIHBhaXJzIiwK K3sgUmRkViA9IGZNQVgoUnNzVixSdHRWKTsgfSkKKworUTZJTlNOKEEyX21heHVwLCJSZGQzMj1t YXh1KFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0FSQ0hWMyksCisiTWF4aW11bSBvZiB0d28gcmVn aXN0ZXIgcGFpcnMgKHVuc2lnbmVkKSIsCit7IFJkZFYgPSBmTUFYKGZDQVNUOHUoUnNzViksZkNB U1Q4dShSdHRWKSk7IH0pCisKK1E2SU5TTihBMl9taW5wLCJSZGQzMj1taW4oUnR0MzIsUnNzMzIp IixBVFRSSUJTKEFfQVJDSFYzKSwKKyJNaW5pbXVtIG9mIHR3byByZWdpc3RlciBwYWlycyIsCit7 IFJkZFYgPSBmTUlOKFJ0dFYsUnNzVik7IH0pCisKK1E2SU5TTihBMl9taW51cCwiUmRkMzI9bWlu dShSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjMpLAorIk1pbmltdW0gb2YgdHdvIHJlZ2lz dGVyIHBhaXJzICh1bnNpZ25lZCkiLAoreyBSZGRWID0gZk1JTihmQ0FTVDh1KFJ0dFYpLGZDQVNU OHUoUnNzVikpOyB9KQorI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworLyogUmVnaXN0ZXIgYW5kIEltbWVkaWF0ZSBUcmFuc2ZlcnMJICAg Ki8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitR NklOU04oQTJfbm9wLCJub3AiLEFUVFJJQlMoQV9JVF9OT1ApLAorIk5vcCAoMzItYml0IGVuY29k aW5nKSIsCisgZkhJREUoIHsgfSAgKSkKKworCitRNklOU04oQTRfZXh0LCJpbW1leHQoI3UyNjo2 KSIsQVRUUklCUyhBX0lUX0VYVEVOREVSKSwKKyJUaGlzIGluc3RydWN0aW9uIGNhcnJpZXMgdGhl IDI2IG1vc3Qtc2lnbmlmaWNhbnQgaW1tZWRpYXRlIGJpdHMgZm9yIHRoZSBuZXh0IGluc3RydWN0 aW9uIiwKK3sgZkhJREUoKTsgfSkKKworCitRNklOU04oQTJfdGZyLCJSZDMyPVJzMzIiLEFUVFJJ QlMoKSwKKyJ0ZnIgcmVnaXN0ZXIiLHsgUmRWPVJzVjt9KQorCitRNklOU04oQTJfdGZyc2ksIlJk MzI9I3MxNiIsQVRUUklCUygpLAorInRyYW5zZmVyIHNpZ25lZCBpbW1lZGlhdGUgdG8gcmVnaXN0 ZXIiLHsgZklNTUVYVChzaVYpOyBSZFY9c2lWO30pCisKK1E2SU5TTihBMl9zeHRiLCJSZDMyPXN4 dGIoUnMzMikiLEFUVFJJQlMoKSwKKyJTaWduIGV4dGVuZCBieXRlIiwge1JkViA9IGZTWFROKDgs MzIsUnNWKTt9KQorCitRNklOU04oQTJfenh0aCwiUmQzMj16eHRoKFJzMzIpIixBVFRSSUJTKCks CisiWmVybyBleHRlbmQgaGFsZiIsIHtSZFYgPSBmWlhUTigxNiwzMixSc1YpO30pCisKK1E2SU5T TihBMl9zeHRoLCJSZDMyPXN4dGgoUnMzMikiLEFUVFJJQlMoKSwKKyJTaWduIGV4dGVuZCBoYWxm Iiwge1JkViA9IGZTWFROKDE2LDMyLFJzVik7fSkKKworUTZJTlNOKEEyX2NvbWJpbmV3LCJSZGQz Mj1jb21iaW5lKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21iaW5lIHR3byB3b3JkcyBpbnRv IGEgcmVnaXN0ZXIgcGFpciIsCit7IGZTRVRXT1JEKDAsUmRkVixSdFYpOworICBmU0VUV09SRCgx LFJkZFYsUnNWKTsKK30pCisKK1E2SU5TTihBNF9jb21iaW5lcmksIlJkZDMyPWNvbWJpbmUoUnMz MiwjczgpIixBVFRSSUJTKCksCisiQ29tYmluZSBhIHdvcmQgYW5kIGFuIGltbWVkaWF0ZSBpbnRv IGEgcmVnaXN0ZXIgcGFpciIsCit7IGZJTU1FWFQoc2lWKTsgZlNFVFdPUkQoMCxSZGRWLHNpVik7 CisgIGZTRVRXT1JEKDEsUmRkVixSc1YpOworfSkKKworUTZJTlNOKEE0X2NvbWJpbmVpciwiUmRk MzI9Y29tYmluZSgjczgsUnMzMikiLEFUVFJJQlMoKSwKKyJDb21iaW5lIGEgd29yZCBhbmQgYW4g aW1tZWRpYXRlIGludG8gYSByZWdpc3RlciBwYWlyIiwKK3sgZklNTUVYVChzaVYpOyBmU0VUV09S RCgwLFJkZFYsUnNWKTsKKyAgZlNFVFdPUkQoMSxSZGRWLHNpVik7Cit9KQorCisKKworUTZJTlNO KEEyX2NvbWJpbmVpaSwiUmRkMzI9Y29tYmluZSgjczgsI1M4KSIsQVRUUklCUyhBX0FSQ0hWMiks CisiU2V0IHR3byBzbWFsbCBpbW1lZGlhdGVzIiwKK3sgZklNTUVYVChzaVYpOyBmU0VUV09SRCgw LFJkZFYsU2lWKTsgZlNFVFdPUkQoMSxSZGRWLHNpVik7IH0pCisKK1E2SU5TTihBNF9jb21iaW5l aWksIlJkZDMyPWNvbWJpbmUoI3M4LCNVNikiLEFUVFJJQlMoKSwiU2V0IHR3byBzbWFsbCBpbW1l ZGlhdGVzIiwKK3sgZklNTUVYVChVaVYpOyBmU0VUV09SRCgwLFJkZFYsVWlWKTsgZlNFVFdPUkQo MSxSZGRWLHNpVik7IH0pCisKKworUTZJTlNOKEEyX2NvbWJpbmVfaGgsIlJkMzI9Y29tYmluZShS dC5IMzIsUnMuSDMyKSIsQVRUUklCUygpLAorIkNvbWJpbmUgdHdvIGhhbGZzIGludG8gYSByZWdp c3RlciIsIHtSZFYgPSAoZkdFVFVIQUxGKDEsUnRWKTw8MTYpIHwgZkdFVFVIQUxGKDEsUnNWKTt9 KQorCitRNklOU04oQTJfY29tYmluZV9obCwiUmQzMj1jb21iaW5lKFJ0LkgzMixScy5MMzIpIixB VFRSSUJTKCksCisiQ29tYmluZSB0d28gaGFsZnMgaW50byBhIHJlZ2lzdGVyIiwge1JkViA9IChm R0VUVUhBTEYoMSxSdFYpPDwxNikgfCBmR0VUVUhBTEYoMCxSc1YpO30pCisKK1E2SU5TTihBMl9j b21iaW5lX2xoLCJSZDMyPWNvbWJpbmUoUnQuTDMyLFJzLkgzMikiLEFUVFJJQlMoKSwKKyJDb21i aW5lIHR3byBoYWxmcyBpbnRvIGEgcmVnaXN0ZXIiLCB7UmRWID0gKGZHRVRVSEFMRigwLFJ0Vik8 PDE2KSB8IGZHRVRVSEFMRigxLFJzVik7fSkKKworUTZJTlNOKEEyX2NvbWJpbmVfbGwsIlJkMzI9 Y29tYmluZShSdC5MMzIsUnMuTDMyKSIsQVRUUklCUygpLAorIkNvbWJpbmUgdHdvIGhhbGZzIGlu dG8gYSByZWdpc3RlciIsIHtSZFYgPSAoZkdFVFVIQUxGKDAsUnRWKTw8MTYpIHwgZkdFVFVIQUxG KDAsUnNWKTt9KQorCitRNklOU04oQTJfdGZyaWwsIlJ4LkwzMj0jdTE2IixBVFRSSUJTKCksCisi U2V0IGxvdyAxNi1iaXRzLCBsZWF2ZSB1cHBlciAxNiB1bmNoYW5nZWQiLHsgZlNFVEhBTEYoMCxS eFYsdWlWKTt9KQorCitRNklOU04oQTJfdGZyaWgsIlJ4LkgzMj0jdTE2IixBVFRSSUJTKCksCisi U2V0IGhpZ2ggMTYtYml0cywgbGVhdmUgbG93IDE2IHVuY2hhbmdlZCIseyBmU0VUSEFMRigxLFJ4 Vix1aVYpO30pCisKK1E2SU5TTihBMl90ZnJjcnIsIlJkMzI9Q3MzMiIsQVRUUklCUygpLAorInRy YW5zZmVyIGNvbnRyb2wgcmVnaXN0ZXIgdG8gZ2VuZXJhbCByZWdpc3RlciIseyBSZFY9Q3NWO30p CisKK1E2SU5TTihBMl90ZnJyY3IsIkNkMzI9UnMzMiIsQVRUUklCUygpLAorInRyYW5zZmVyIGdl bmVyYWwgcmVnaXN0ZXIgdG8gY29udHJvbCByZWdpc3RlciIseyBDZFY9UnNWO30pCisKK1E2SU5T TihBNF90ZnJjcHAsIlJkZDMyPUNzczMyIixBVFRSSUJTKCksCisidHJhbnNmZXIgY29udHJvbCBy ZWdpc3RlciB0byBnZW5lcmFsIHJlZ2lzdGVyIix7IFJkZFY9Q3NzVjt9KQorCitRNklOU04oQTRf dGZycGNwLCJDZGQzMj1Sc3MzMiIsQVRUUklCUygpLAorInRyYW5zZmVyIGdlbmVyYWwgcmVnaXN0 ZXIgdG8gY29udHJvbCByZWdpc3RlciIseyBDZGRWPVJzc1Y7fSkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIExvZ2ljYWxzCQkJCSAgICov CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJ TlNOKEEyX2FuZCwiUmQzMj1hbmQoUnMzMixSdDMyKSIsQVRUUklCUygpLAorImxvZ2ljYWwgQU5E Iix7IFJkVj1Sc1YmUnRWO30pCisKK1E2SU5TTihBMl9vciwiUmQzMj1vcihSczMyLFJ0MzIpIixB VFRSSUJTKCksCisibG9naWNhbCBPUiIseyBSZFY9UnNWfFJ0Vjt9KQorCitRNklOU04oQTJfeG9y LCJSZDMyPXhvcihSczMyLFJ0MzIpIixBVFRSSUJTKCksCisibG9naWNhbCBYT1IiLHsgUmRWPVJz Vl5SdFY7fSkKKworUTZJTlNOKE0yX3hvcl94YWNjLCJSeDMyXj14b3IoUnMzMixSdDMyKSIsQVRU UklCUyhBX0FSQ0hWMiksCisibG9naWNhbCBYT1Igd2l0aCBYT1IgYWNjdW11bGF0aW9uIix7IFJ4 Vl49UnNWXlJ0Vjt9KQorCitRNklOU04oTTRfeG9yX3hhY2MsIlJ4eDMyXj14b3IoUnNzMzIsUnR0 MzIpIiwsCisibG9naWNhbCBYT1Igd2l0aCBYT1IgYWNjdW11bGF0aW9uIix7IFJ4eFZePVJzc1Ze UnR0Vjt9KQorCisKKworUTZJTlNOKEE0X2FuZG4sIlJkMzI9YW5kKFJ0MzIsflJzMzIpIiwsCisi QW5kLU5vdCIsIHsgUmRWID0gKFJ0ViAmIH5Sc1YpOyB9KQorCitRNklOU04oQTRfb3JuLCJSZDMy PW9yKFJ0MzIsflJzMzIpIiwsCisiT3ItTm90IiwgeyBSZFYgPSAoUnRWIHwgflJzVik7IH0pCisK KworUTZJTlNOKEE0X2FuZG5wLCJSZGQzMj1hbmQoUnR0MzIsflJzczMyKSIsLAorIkFuZC1Ob3Qi LCB7IFJkZFYgPSAoUnR0ViAmIH5Sc3NWKTsgfSkKKworUTZJTlNOKEE0X29ybnAsIlJkZDMyPW9y KFJ0dDMyLH5Sc3MzMikiLCwKKyJPci1Ob3QiLCB7IFJkZFYgPSAoUnR0ViB8IH5Sc3NWKTsgfSkK KworCisKKworLyoqKioqKioqKioqKioqKioqKioqLworLyogQ29tcG91bmQgYWRkLWFkZCAqLwor LyoqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oUzRfYWRkYWRkaSwiUmQzMj1hZGQoUnMz MixhZGQoUnUzMiwjczYpKSIsQVRUUklCUygpLAorCSIzLWlucHV0IGFkZCIsCisJeyBSZFYgPSBS c1YgKyBSdVYgKyBmSU1NRVhUKHNpVik7IH0pCisKKworUTZJTlNOKFM0X3N1YmFkZGksIlJkMzI9 YWRkKFJzMzIsc3ViKCNzNixSdTMyKSkiLEFUVFJJQlMoKSwKKwkiMy1pbnB1dCBzdWIiLAorCXsg UmRWID0gUnNWIC0gUnVWICsgZklNTUVYVChzaVYpOyB9KQorCisKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBDb21wb3VuZCBsb2dpY2FsLWxvZ2ljYWwgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oTTRfYW5kX2FuZCwiUngzMiY9YW5kKFJz MzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wb3VuZCBBbmQtQW5kIiwgeyBSeFYgJj0gKFJzViAm IFJ0Vik7IH0pCisKK1E2SU5TTihNNF9hbmRfYW5kbiwiUngzMiY9YW5kKFJzMzIsflJ0MzIpIixB VFRSSUJTKCksCisiQ29tcG91bmQgQW5kLUFuZG4iLCB7IFJ4ViAmPSAoUnNWICYgflJ0Vik7IH0p CisKK1E2SU5TTihNNF9hbmRfb3IsIlJ4MzImPW9yKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJD b21wb3VuZCBBbmQtT3IiLCB7IFJ4ViAmPSAoUnNWIHwgUnRWKTsgfSkKKworUTZJTlNOKE00X2Fu ZF94b3IsIlJ4MzImPXhvcihSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcG91bmQgQW5kLXhv ciIsIHsgUnhWICY9IChSc1YgXiBSdFYpOyB9KQorCisKKworUTZJTlNOKE00X29yX2FuZCwiUngz Mnw9YW5kKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wb3VuZCBPci1BbmQiLCB7IFJ4ViB8 PSAoUnNWICYgUnRWKTsgfSkKKworUTZJTlNOKE00X29yX2FuZG4sIlJ4MzJ8PWFuZChSczMyLH5S dDMyKSIsQVRUUklCUygpLAorIkNvbXBvdW5kIE9yLUFuZE4iLCB7IFJ4ViB8PSAoUnNWICYgflJ0 Vik7IH0pCisKK1E2SU5TTihNNF9vcl9vciwiUngzMnw9b3IoUnMzMixSdDMyKSIsQVRUUklCUygp LAorIkNvbXBvdW5kIE9yLU9yIiwgeyBSeFYgfD0gKFJzViB8IFJ0Vik7IH0pCisKK1E2SU5TTihN NF9vcl94b3IsIlJ4MzJ8PXhvcihSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcG91bmQgT3It eG9yIiwgeyBSeFYgfD0gKFJzViBeIFJ0Vik7IH0pCisKKworUTZJTlNOKFM0X29yX2FuZGl4LCJS eDMyPW9yKFJ1MzIsYW5kKFJ4MzIsI3MxMCkpIixBVFRSSUJTKCksCisiQ29tcG91bmQgT3ItQW5k IiwgeyBSeFYgPSBSdVYgfCAoUnhWICYgZklNTUVYVChzaVYpKTsgfSkKKworUTZJTlNOKFM0X29y X2FuZGksIlJ4MzJ8PWFuZChSczMyLCNzMTApIixBVFRSSUJTKCksCisiQ29tcG91bmQgT3ItQW5k IiwgeyBSeFYgPSBSeFYgfCAoUnNWICYgZklNTUVYVChzaVYpKTsgfSkKKworUTZJTlNOKFM0X29y X29yaSwiUngzMnw9b3IoUnMzMiwjczEwKSIsQVRUUklCUygpLAorIkNvbXBvdW5kIE9yLUFuZCIs IHsgUnhWID0gUnhWIHwgKFJzViB8IGZJTU1FWFQoc2lWKSk7IH0pCisKKworCisKK1E2SU5TTihN NF94b3JfYW5kLCJSeDMyXj1hbmQoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBvdW5kIFhv ci1BbmQiLCB7IFJ4ViBePSAoUnNWICYgUnRWKTsgfSkKKworUTZJTlNOKE00X3hvcl9vciwiUngz Ml49b3IoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBvdW5kIFhvci1PciIsIHsgUnhWIF49 IChSc1YgfCBSdFYpOyB9KQorCitRNklOU04oTTRfeG9yX2FuZG4sIlJ4MzJePWFuZChSczMyLH5S dDMyKSIsQVRUUklCUygpLAorIkNvbXBvdW5kIFhvci1BbmQiLCB7IFJ4ViBePSAoUnNWICYgflJ0 Vik7IH0pCisKKworCisKKworCitRNklOU04oQTJfc3VicmksIlJkMzI9c3ViKCNzMTAsUnMzMiki LEFUVFJJQlMoQV9BUkNIVjIpLAorIlN1YnRyYWN0IHJlZ2lzdGVyIGZyb20gaW1tZWRpYXRlIix7 IGZJTU1FWFQoc2lWKTsgUmRWPXNpVi1Sc1Y7fSkKKworUTZJTlNOKEEyX2FuZGlyLCJSZDMyPWFu ZChSczMyLCNzMTApIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJsb2dpY2FsIEFORCB3aXRoIGltbWVk aWF0ZSIseyBmSU1NRVhUKHNpVik7IFJkVj1Sc1Ymc2lWO30pCisKK1E2SU5TTihBMl9vcmlyLCJS ZDMyPW9yKFJzMzIsI3MxMCkiLEFUVFJJQlMoQV9BUkNIVjIpLAorImxvZ2ljYWwgT1Igd2l0aCBp bW1lZGlhdGUiLHsgZklNTUVYVChzaVYpOyBSZFY9UnNWfHNpVjt9KQorCisKKworCitRNklOU04o QTJfYW5kcCwiUmRkMzI9YW5kKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorImxvZ2ljYWwgQU5E IHBhaXIiLHsgUmRkVj1Sc3NWJlJ0dFY7fSkKKworUTZJTlNOKEEyX29ycCwiUmRkMzI9b3IoUnNz MzIsUnR0MzIpIixBVFRSSUJTKCksCisibG9naWNhbCBPUiBwYWlyIix7IFJkZFY9UnNzVnxSdHRW O30pCisKK1E2SU5TTihBMl94b3JwLCJSZGQzMj14b3IoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCks CisibG9naWNhbCBlWGNsdXNpdmUgT1IgcGFpciIseyBSZGRWPVJzc1ZeUnR0Vjt9KQorCitRNklO U04oQTJfbm90cCwiUmRkMzI9bm90KFJzczMyKSIsQVRUUklCUygpLAorImxvZ2ljYWwgTk9UIHBh aXIiLHsgUmRkVj1+UnNzVjt9KQorCitRNklOU04oQTJfc3h0dywiUmRkMzI9c3h0dyhSczMyKSIs QVRUUklCUygpLAorIlNpZ24gZXh0ZW5kIDMyLWJpdCB3b3JkIHRvIDY0LWJpdCBwYWlyIiwKK3sg UmRkViA9IGZDQVNUNF84cyhSc1YpOyB9KQorCitRNklOU04oQTJfc2F0LCJSZDMyPXNhdChSc3Mz MikiLEFUVFJJQlMoKSwKKyJTYXR1cmF0ZSB0byAzMi1iaXQgU2lnbmVkIiwKK3sgUmRWID0gZlNB VChSc3NWKTsgfSkKKworUTZJTlNOKEEyX3JvdW5kc2F0LCJSZDMyPXJvdW5kKFJzczMyKTpzYXQi LEFUVFJJQlMoKSwKKyJSb3VuZCAmIFNhdHVyYXRlIHRvIDMyLWJpdCBTaWduZWQiLAoreyBmSElE RShzaXplOHNfdCB0bXA7KSBmQUREU0FUNjQodG1wLFJzc1YsMHgwODAwMDAwMDBVTEwpOyBSZFYg PSBmR0VUV09SRCgxLHRtcCk7IH0pCisKK1E2SU5TTihBMl9zYXRoLCJSZDMyPXNhdGgoUnMzMiki LEFUVFJJQlMoKSwKKyJTYXR1cmF0ZSB0byAxNi1iaXQgU2lnbmVkIiwKK3sgUmRWID0gZlNBVEgo UnNWKTsgfSkKKworUTZJTlNOKEEyX3NhdHVoLCJSZDMyPXNhdHVoKFJzMzIpIixBVFRSSUJTKCks CisiU2F0dXJhdGUgdG8gMTYtYml0IFVuc2lnbmVkIiwKK3sgUmRWID0gZlNBVFVIKFJzVik7IH0p CisKK1E2SU5TTihBMl9zYXR1YiwiUmQzMj1zYXR1YihSczMyKSIsQVRUUklCUygpLAorIlNhdHVy YXRlIHRvIDgtYml0IFVuc2lnbmVkIiwKK3sgUmRWID0gZlNBVFVCKFJzVik7IH0pCisKK1E2SU5T TihBMl9zYXRiLCJSZDMyPXNhdGIoUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlNhdHVyYXRl IHRvIDgtYml0IFNpZ25lZCIsCit7IFJkViA9IGZTQVRCKFJzVik7IH0pCisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVmVjdG9yIEFkZAkJCQkg Ki8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitR NklOU04oQTJfdmFkZHViLCJSZGQzMj12YWRkdWIoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisi QWRkIHZlY3RvciBvZiBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkg PCA4OyBpKyspIHsKKwkJZlNFVEJZVEUoaSxSZGRWLChmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZ VEUoaSxSdHRWKSkpOworCX0KK30pCisKK1E2SU5TTihBMl92YWRkdWJzLCJSZGQzMj12YWRkdWIo UnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2YgYnl0ZXMiLAorewor CWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGks UmRkVixmU0FUVU4oOCxmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZVEUoaSxSdHRWKSkpOworCX0K K30pCisKK1E2SU5TTihBMl92YWRkaCwiUmRkMzI9dmFkZGgoUnNzMzIsUnR0MzIpIixBVFRSSUJT KCksCisiQWRkIHZlY3RvciBvZiBoYWxmIGludGVnZXJzIiwKK3sKKwlmSElERShpbnQgaTspCisJ Zm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLGZHRVRIQUxGKGksUnNzVikr ZkdFVEhBTEYoaSxSdHRWKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhZGRocywiUmRkMzI9dmFk ZGgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2YgaGFsZiBpbnRl Z2VycyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7 aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsZlNBVE4oMTYsZkdFVEhBTEYoaSxSc3NWKStmR0VU SEFMRihpLFJ0dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhZGR1aHMsIlJkZDMyPXZhZGR1 aChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIHZlY3RvciBvZiB1bnNpZ25lZCBo YWxmIGludGVnZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAo aT0wO2k8NDtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FUVU4oMTYsZkdFVFVIQUxGKGks UnNzVikrZkdFVFVIQUxGKGksUnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTVfdmFkZGh1YnMs IlJkMzI9dmFkZGh1YihSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIHZlY3RvciBv ZiBoYWxmIGludGVnZXJzIHdpdGggc2F0dXJhdGlvbiBhbmQgcGFjayB0byB1bnNpZ25lZCBieXRl cyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkgIAkJZlNFVEJZ VEUoaSxSZFYsZlNBVFVCKGZHRVRIQUxGKGksUnNzVikrZkdFVEhBTEYoaSxSdHRWKSkpOworCX0K K30pCisKK1E2SU5TTihBMl92YWRkdywiUmRkMzI9dmFkZHcoUnNzMzIsUnR0MzIpIixBVFRSSUJT KCksCisiQWRkIHZlY3RvciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0w O2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRkVixmR0VUV09SRChpLFJzc1YpK2ZHRVRXT1JE KGksUnR0VikpOworCX0KK30pCisKK1E2SU5TTihBMl92YWRkd3MsIlJkZDMyPXZhZGR3KFJzczMy LFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9yIG9mIHdvcmRzIHdpdGggc2F0dXJh dGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRX T1JEKGksUmRkVixmU0FUTigzMixmR0VUV09SRChpLFJzc1YpK2ZHRVRXT1JEKGksUnR0VikpKTsK Kwl9Cit9KQorCisKKworUTZJTlNOKFM0X3Z4YWRkc3VidywiUmRkMzI9dnhhZGRzdWJ3KFJzczMy LFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3IgYWRkLXN1YiB3b3JkcyB3aXRo IHNhdHVyYXRpb24iLAoreworCWZTRVRXT1JEKDAsUmRkVixmU0FUKGZHRVRXT1JEKDAsUnNzVikr ZkdFVFdPUkQoMSxSdHRWKSkpOworCWZTRVRXT1JEKDEsUmRkVixmU0FUKGZHRVRXT1JEKDEsUnNz ViktZkdFVFdPUkQoMCxSdHRWKSkpOworfSkKK1E2SU5TTihTNF92eHN1YmFkZHcsIlJkZDMyPXZ4 c3ViYWRkdyhSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQ3Jvc3MgdmVjdG9yIHN1Yi1h ZGQgd29yZHMgd2l0aCBzYXR1cmF0aW9uIiwKK3sKKwlmU0VUV09SRCgwLFJkZFYsZlNBVChmR0VU V09SRCgwLFJzc1YpLWZHRVRXT1JEKDEsUnR0VikpKTsKKwlmU0VUV09SRCgxLFJkZFYsZlNBVChm R0VUV09SRCgxLFJzc1YpK2ZHRVRXT1JEKDAsUnR0VikpKTsKK30pCisKKworCitRNklOU04oUzRf dnhhZGRzdWJoLCJSZGQzMj12eGFkZHN1YmgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAor IkNyb3NzIHZlY3RvciBhZGQtc3ViIGhhbGZ3b3JkcyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZT RVRIQUxGKDAsUmRkVixmU0FUSChmR0VUSEFMRigwLFJzc1YpK2ZHRVRIQUxGKDEsUnR0VikpKTsK KwlmU0VUSEFMRigxLFJkZFYsZlNBVEgoZkdFVEhBTEYoMSxSc3NWKS1mR0VUSEFMRigwLFJ0dFYp KSk7CisKKwlmU0VUSEFMRigyLFJkZFYsZlNBVEgoZkdFVEhBTEYoMixSc3NWKStmR0VUSEFMRigz LFJ0dFYpKSk7CisJZlNFVEhBTEYoMyxSZGRWLGZTQVRIKGZHRVRIQUxGKDMsUnNzViktZkdFVEhB TEYoMixSdHRWKSkpOworCit9KQorUTZJTlNOKFM0X3Z4c3ViYWRkaCwiUmRkMzI9dnhzdWJhZGRo KFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3Igc3ViLWFkZCBoYWxm d29yZHMgd2l0aCBzYXR1cmF0aW9uIiwKK3sKKwlmU0VUSEFMRigwLFJkZFYsZlNBVEgoZkdFVEhB TEYoMCxSc3NWKS1mR0VUSEFMRigxLFJ0dFYpKSk7CisJZlNFVEhBTEYoMSxSZGRWLGZTQVRIKGZH RVRIQUxGKDEsUnNzVikrZkdFVEhBTEYoMCxSdHRWKSkpOworCisJZlNFVEhBTEYoMixSZGRWLGZT QVRIKGZHRVRIQUxGKDIsUnNzViktZkdFVEhBTEYoMyxSdHRWKSkpOworCWZTRVRIQUxGKDMsUmRk VixmU0FUSChmR0VUSEFMRigzLFJzc1YpK2ZHRVRIQUxGKDIsUnR0VikpKTsKK30pCisKKworCisK K1E2SU5TTihTNF92eGFkZHN1YmhyLCJSZGQzMj12eGFkZHN1YmgoUnNzMzIsUnR0MzIpOnJuZDo+ PjE6c2F0IixBVFRSSUJTKCksCisiQ3Jvc3MgdmVjdG9yIGFkZC1zdWIgaGFsZndvcmRzIHdpdGgg c2hpZnQsIHJvdW5kLCBhbmQgc2F0dXJhdGlvbiIsCit7CisJZlNFVEhBTEYoMCxSZGRWLGZTQVRI KChmR0VUSEFMRigwLFJzc1YpK2ZHRVRIQUxGKDEsUnR0VikrMSk+PjEpKTsKKwlmU0VUSEFMRigx LFJkZFYsZlNBVEgoKGZHRVRIQUxGKDEsUnNzViktZkdFVEhBTEYoMCxSdHRWKSsxKT4+MSkpOwor CisJZlNFVEhBTEYoMixSZGRWLGZTQVRIKChmR0VUSEFMRigyLFJzc1YpK2ZHRVRIQUxGKDMsUnR0 VikrMSk+PjEpKTsKKwlmU0VUSEFMRigzLFJkZFYsZlNBVEgoKGZHRVRIQUxGKDMsUnNzViktZkdF VEhBTEYoMixSdHRWKSsxKT4+MSkpOworCit9KQorUTZJTlNOKFM0X3Z4c3ViYWRkaHIsIlJkZDMy PXZ4c3ViYWRkaChSc3MzMixSdHQzMik6cm5kOj4+MTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2 ZWN0b3Igc3ViLWFkZCBoYWxmd29yZHMgd2l0aCBzaGlmdCwgcm91bmQsIGFuZCBzYXR1cmF0aW9u IiwKK3sKKwlmU0VUSEFMRigwLFJkZFYsZlNBVEgoKGZHRVRIQUxGKDAsUnNzViktZkdFVEhBTEYo MSxSdHRWKSsxKT4+MSkpOworCWZTRVRIQUxGKDEsUmRkVixmU0FUSCgoZkdFVEhBTEYoMSxSc3NW KStmR0VUSEFMRigwLFJ0dFYpKzEpPj4xKSk7CisKKwlmU0VUSEFMRigyLFJkZFYsZlNBVEgoKGZH RVRIQUxGKDIsUnNzViktZkdFVEhBTEYoMyxSdHRWKSsxKT4+MSkpOworCWZTRVRIQUxGKDMsUmRk VixmU0FUSCgoZkdFVEhBTEYoMyxSc3NWKStmR0VUSEFMRigyLFJ0dFYpKzEpPj4xKSk7Cit9KQor CisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLyogMS8yIFZlY3RvciBvcGVyYXRpb25zCQkgICAgICAqLworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworUTZJTlNOKEEyX3N2YXZnaCwiUmQz Mj12YXZnaChSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJBdmcgdmVjdG9yIG9mIGhh bGYgaW50ZWdlcnMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJ ICBmU0VUSEFMRihpLFJkViwoKGZHRVRIQUxGKGksUnNWKStmR0VUSEFMRihpLFJ0VikpPj4xKSk7 CisJfQorfSkKKworUTZJTlNOKEEyX3N2YXZnaHMsIlJkMzI9dmF2Z2goUnMzMixSdDMyKTpybmQi LEFUVFJJQlMoQV9BUkNIVjIpLAorIkF2ZyB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHJv dW5kaW5nIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCSAgZlNF VEhBTEYoaSxSZFYsKChmR0VUSEFMRihpLFJzVikrZkdFVEhBTEYoaSxSdFYpKzEpPj4xKSk7CisJ fQorfSkKKworCisKK1E2SU5TTihBMl9zdm5hdmdoLCJSZDMyPXZuYXZnaChSdDMyLFJzMzIpIixB VFRSSUJTKEFfQVJDSFYyKSwKKyJBdmcgdmVjdG9yIG9mIGhhbGYgaW50ZWdlcnMiLAoreworCWZI SURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkViwoKGZH RVRIQUxGKGksUnRWKS1mR0VUSEFMRihpLFJzVikpPj4xKSk7CisJfQorfSkKKworCitRNklOU04o QTJfc3ZhZGRoLCJSZDMyPXZhZGRoKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9y IG9mIGhhbGYgaW50ZWdlcnMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsr KSB7CisJICBmU0VUSEFMRihpLFJkVixmR0VUSEFMRihpLFJzVikrZkdFVEhBTEYoaSxSdFYpKTsK Kwl9Cit9KQorCitRNklOU04oQTJfc3ZhZGRocywiUmQzMj12YWRkaChSczMyLFJ0MzIpOnNhdCIs QVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHNhdHVyYXRpb24i LAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihp LFJkVixmU0FUTigxNixmR0VUSEFMRihpLFJzVikrZkdFVEhBTEYoaSxSdFYpKSk7CisJfQorfSkK KworUTZJTlNOKEEyX3N2YWRkdWhzLCJSZDMyPXZhZGR1aChSczMyLFJ0MzIpOnNhdCIsQVRUUklC UygpLAorIkFkZCB2ZWN0b3Igb2YgdW5zaWduZWQgaGFsZiBpbnRlZ2VycyB3aXRoIHNhdHVyYXRp b24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFM RihpLFJkVixmU0FUVU4oMTYsZkdFVFVIQUxGKGksUnNWKStmR0VUVUhBTEYoaSxSdFYpKSk7CisJ fQorfSkKKworCitRNklOU04oQTJfc3ZzdWJoLCJSZDMyPXZzdWJoKFJ0MzIsUnMzMikiLEFUVFJJ QlMoKSwKKyJTdWIgdmVjdG9yIG9mIGhhbGYgaW50ZWdlcnMiLAoreworCWZISURFKGludCBpOykK Kwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkVixmR0VUSEFMRihpLFJ0Vikt ZkdFVEhBTEYoaSxSc1YpKTsKKwl9Cit9KQorCitRNklOU04oQTJfc3ZzdWJocywiUmQzMj12c3Vi aChSdDMyLFJzMzIpOnNhdCIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2Vy cyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsr KSB7CisJICBmU0VUSEFMRihpLFJkVixmU0FUTigxNixmR0VUSEFMRihpLFJ0ViktZkdFVEhBTEYo aSxSc1YpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3N2c3VidWhzLCJSZDMyPXZzdWJ1aChSdDMy LFJzMzIpOnNhdCIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2YgdW5zaWduZWQgaGFsZiBpbnRl Z2VycyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7 aSsrKSB7CisJICBmU0VUSEFMRihpLFJkVixmU0FUVU4oMTYsZkdFVFVIQUxGKGksUnRWKS1mR0VU VUhBTEYoaSxSc1YpKSk7CisJfQorfSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgUmVkdWNlIEFkZAkJCSAgKi8KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04o QTJfdnJhZGR1YiwiUmRkMzI9dnJhZGR1YihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJTdW06 IHR3byB2ZWN0b3JzIG9mIHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTspCisJUmRk ViA9IDA7CisJZm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUV09SRCgwLFJkZFYsKGZHRVRXT1JE KDAsUmRkVikgKyAoZkdFVFVCWVRFKGksUnNzVikrZkdFVFVCWVRFKGksUnR0VikpKSk7CisJfQor CWZvciAoaT00O2k8ODtpKyspIHsKKwkJZlNFVFdPUkQoMSxSZGRWLChmR0VUV09SRCgxLFJkZFYp ICsgKGZHRVRVQllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSkpOworCX0KK30pCisKK1E2 SU5TTihBMl92cmFkZHViX2FjYywiUnh4MzIrPXZyYWRkdWIoUnNzMzIsUnR0MzIpIixBVFRSSUJT KCksCisiU3VtOiB0d28gdmVjdG9ycyBvZiB1bnNpZ25lZCBieXRlcyIsCit7CisJZkhJREUoaW50 IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVFdPUkQoMCxSeHhWLChmR0VU V09SRCgwLFJ4eFYpICsgKGZHRVRVQllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSkpOwor CX0KKwlmb3IgKGkgPSA0OyBpIDwgODsgaSsrKSB7CisJCWZTRVRXT1JEKDEsUnh4ViwoZkdFVFdP UkQoMSxSeHhWKSArIChmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZVEUoaSxSdHRWKSkpKTsKKwl9 Cit9KQorCisKKworUTZJTlNOKE0yX3ZyYWRkaCwiUmQzMj12cmFkZGgoUnNzMzIsUnR0MzIpIixB VFRSSUJTKEFfQVJDSFYzKSwKKyJTdW06IHR3byB2ZWN0b3JzIG9mIGhhbHZlcyIsCit7CisJZkhJ REUoaW50IGk7KQorCVJkViA9IDA7CisJZm9yIChpPTA7aTw0O2krKykgeworCQlSZFYgKz0gKGZH RVRIQUxGKGksUnNzVikrZkdFVEhBTEYoaSxSdHRWKSk7CisJfQorfSkKKworUTZJTlNOKE0yX3Zy YWRkdWgsIlJkMzI9dnJhZGR1aChSc3MzMixSdHQzMikiLEFUVFJJQlMoQV9BUkNIVjMpLAorIlN1 bTogdHdvIHZlY3RvcnMgb2YgdW5zaWduZWQgaGFsdmVzIiwKK3sKKwlmSElERShpbnQgaTspCisJ UmRWID0gMDsKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCVJkViArPSAoZkdFVFVIQUxGKGksUnNz VikrZkdFVFVIQUxGKGksUnR0VikpOworCX0KK30pCisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworLyogVmVjdG9yIFN1YgkJCQkgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oQTJfdnN1 YnViLCJSZGQzMj12c3VidWIoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBv ZiBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsK KwkJZlNFVEJZVEUoaSxSZGRWLChmR0VUVUJZVEUoaSxSdHRWKS1mR0VUVUJZVEUoaSxSc3NWKSkp OworCX0KK30pCisKK1E2SU5TTihBMl92c3VidWJzLCJSZGQzMj12c3VidWIoUnR0MzIsUnNzMzIp OnNhdCIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2YgYnl0ZXMiLAoreworCWZISURFKGludCBp OykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkVixmU0FUVU4o OCxmR0VUVUJZVEUoaSxSdHRWKS1mR0VUVUJZVEUoaSxSc3NWKSkpOworCX0KK30pCisKK1E2SU5T TihBMl92c3ViaCwiUmRkMzI9dnN1YmgoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisiU3ViIHZl Y3RvciBvZiBoYWxmIGludGVnZXJzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0 O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLGZHRVRIQUxGKGksUnR0ViktZkdFVEhBTEYoaSxS c3NWKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZzdWJocywiUmRkMzI9dnN1YmgoUnR0MzIsUnNz MzIpOnNhdCIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHNh dHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBm U0VUSEFMRihpLFJkZFYsZlNBVE4oMTYsZkdFVEhBTEYoaSxSdHRWKS1mR0VUSEFMRihpLFJzc1Yp KSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZzdWJ1aHMsIlJkZDMyPXZzdWJ1aChSdHQzMixSc3Mz Mik6c2F0IixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBvZiB1bnNpZ25lZCBoYWxmIGludGVnZXJz IHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKysp IHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FUVU4oMTYsZkdFVFVIQUxGKGksUnR0ViktZkdFVFVI QUxGKGksUnNzVikpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdnN1YncsIlJkZDMyPXZzdWJ3KFJ0 dDMyLFJzczMyKSIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURF KGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJkZFYsZkdFVFdP UkQoaSxSdHRWKS1mR0VUV09SRChpLFJzc1YpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdnN1Yndz LCJSZGQzMj12c3VidyhSdHQzMixSc3MzMik6c2F0IixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBv ZiB3b3JkcyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtp PDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJkZFYsZlNBVE4oMzIsZkdFVFdPUkQoaSxSdHRWKS1m R0VUV09SRChpLFJzc1YpKSk7CisJfQorfSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgQWJzCQkJCSAqLworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihBMl92 YWJzaCwiUmRkMzI9dmFic2goUnNzMzIpIixBVFRSSUJTKCksCisiTmVnYXRlIHZlY3RvciBvZiBo YWxmIGludGVnZXJzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgewor CSAgZlNFVEhBTEYoaSxSZGRWLGZBQlMoZkdFVEhBTEYoaSxSc3NWKSkpOworCX0KK30pCisKK1E2 SU5TTihBMl92YWJzaHNhdCwiUmRkMzI9dmFic2goUnNzMzIpOnNhdCIsQVRUUklCUygpLAorIk5l Z2F0ZSB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAo aT0wO2k8NDtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FUSChmQUJTKGZHRVRIQUxGKGks UnNzVikpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhYnN3LCJSZGQzMj12YWJzdyhSc3MzMiki LEFUVFJJQlMoKSwKKyJBYnNvbHV0ZSBWYWx1ZSB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURF KGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJkZFYsZkFCUyhm R0VUV09SRChpLFJzc1YpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhYnN3c2F0LCJSZGQzMj12 YWJzdyhSc3MzMik6c2F0IixBVFRSSUJTKCksCisiQWJzb2x1dGUgVmFsdWUgdmVjdG9yIG9mIHdv cmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCSAgZlNFVFdP UkQoaSxSZGRWLGZTQVQoZkFCUyhmR0VUV09SRChpLFJzc1YpKSkpOworCX0KK30pCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVmVjdG9yIFNB RAkJCQkgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisKK1E2SU5TTihNMl92YWJzZGlmZncsIlJkZDMyPXZhYnNkaWZmdyhSdHQzMixSc3MzMiki LEFUVFJJQlMoQV9BUkNIVjIpLAorIkFic29sdXRlIERpZmZlcmVuY2VzOiB2ZWN0b3Igb2Ygd29y ZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09S RChpLFJkZFYsZkFCUyhmR0VUV09SRChpLFJ0dFYpIC0gZkdFVFdPUkQoaSxSc3NWKSkpOworCX0K K30pCisKK1E2SU5TTihNMl92YWJzZGlmZmgsIlJkZDMyPXZhYnNkaWZmaChSdHQzMixSc3MzMiki LEFUVFJJQlMoQV9BUkNIVjIpLAorIkFic29sdXRlIERpZmZlcmVuY2VzOiB2ZWN0b3Igb2YgaGFs ZndvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNF VEhBTEYoaSxSZGRWLGZBQlMoZkdFVEhBTEYoaSxSdHRWKSAtIGZHRVRIQUxGKGksUnNzVikpKTsK Kwl9Cit9KQorCitRNklOU04oTTZfdmFic2RpZmZiLCJSZGQzMj12YWJzZGlmZmIoUnR0MzIsUnNz MzIpIixBVFRSSUJTKCksCisiQWJzb2x1dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiBoYWxmd29y ZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDg7aSsrKSB7CisJICBmU0VUQllU RShpLFJkZFYsZkFCUyhmR0VUQllURShpLFJ0dFYpIC0gZkdFVEJZVEUoaSxSc3NWKSkpOworCX0K K30pCisKK1E2SU5TTihNNl92YWJzZGlmZnViLCJSZGQzMj12YWJzZGlmZnViKFJ0dDMyLFJzczMy KSIsQVRUUklCUygpLAorIkFic29sdXRlIERpZmZlcmVuY2VzOiB2ZWN0b3Igb2YgaGFsZndvcmRz IiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw4O2krKykgeworCSAgZlNFVEJZVEUo aSxSZGRWLGZBQlMoZkdFVFVCWVRFKGksUnR0VikgLSBmR0VUVUJZVEUoaSxSc3NWKSkpOworCX0K K30pCisKKworCitRNklOU04oQTJfdnJzYWR1YiwiUmRkMzI9dnJzYWR1YihSc3MzMixSdHQzMiki LEFUVFJJQlMoKSwKKyJTdW0gb2YgQWJzb2x1dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiB1bnNp Z25lZCBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCVJkZFYgPSAwOworCWZvciAoaSA9IDA7 IGkgPCA0OyBpKyspIHsKKwkJZlNFVFdPUkQoMCxSZGRWLChmR0VUV09SRCgwLFJkZFYpICsgZkFC UygoZkdFVFVCWVRFKGksUnNzVikgLSBmR0VUVUJZVEUoaSxSdHRWKSkpKSk7CisJfQorCWZvciAo aSA9IDQ7IGkgPCA4OyBpKyspIHsKKwkJZlNFVFdPUkQoMSxSZGRWLChmR0VUV09SRCgxLFJkZFYp ICsgZkFCUygoZkdFVFVCWVRFKGksUnNzVikgLSBmR0VUVUJZVEUoaSxSdHRWKSkpKSk7CisJfQor fSkKKworUTZJTlNOKEEyX3Zyc2FkdWJfYWNjLCJSeHgzMis9dnJzYWR1YihSc3MzMixSdHQzMiki LEFUVFJJQlMoKSwKKyJTdW0gb2YgQWJzb2x1dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiB1bnNp Z25lZCBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKysp IHsKKwkJZlNFVFdPUkQoMCxSeHhWLChmR0VUV09SRCgwLFJ4eFYpICsgZkFCUygoZkdFVFVCWVRF KGksUnNzVikgLSBmR0VUVUJZVEUoaSxSdHRWKSkpKSk7CisJfQorCWZvciAoaSA9IDQ7IGkgPCA4 OyBpKyspIHsKKwkJZlNFVFdPUkQoMSxSeHhWLChmR0VUV09SRCgxLFJ4eFYpICsgZkFCUygoZkdF VFVCWVRFKGksUnNzVikgLSBmR0VUVUJZVEUoaSxSdHRWKSkpKSk7CisJfQorfSkKKworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFZlY3RvciBB dmVyYWdlCQkJICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK1E2SU5TTihBMl92YXZndWIsIlJkZDMyPXZhdmd1YihSc3MzMixSdHQzMiki LEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3RvciBvZiB1bnNpZ25lZCBieXRlcyIsCit7CisJZkhJ REUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJZlNFVEJZVEUoaSxSZGRW LCgoZkdFVFVCWVRFKGksUnNzVikgKyBmR0VUVUJZVEUoaSxSdHRWKSk+PjEpKTsKKwl9Cit9KQor CitRNklOU04oQTJfdmF2Z3VoLCJSZGQzMj12YXZndWgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCks CisiQXZlcmFnZSB2ZWN0b3Igb2YgdW5zaWduZWQgaGFsZndvcmRzIiwKK3sKKwlmSElERShpbnQg aTspCisJZm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUSEFMRihpLFJkZFYsKGZHRVRVSEFMRihp LFJzc1YpK2ZHRVRVSEFMRihpLFJ0dFYpKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zhdmdo LCJSZGQzMj12YXZnaChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3RvciBv ZiBoYWxmd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJ CWZTRVRIQUxGKGksUmRkViwoZkdFVEhBTEYoaSxSc3NWKStmR0VUSEFMRihpLFJ0dFYpKT4+MSk7 CisJfQorfSkKKworUTZJTlNOKEEyX3ZuYXZnaCwiUmRkMzI9dm5hdmdoKFJ0dDMyLFJzczMyKSIs QVRUUklCUygpLAorIk5lZ2F0aXZlIEF2ZXJhZ2UgdmVjdG9yIG9mIGhhbGZ3b3JkcyIsCit7CisJ ZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxSZGRWLChm R0VUSEFMRihpLFJ0dFYpLWZHRVRIQUxGKGksUnNzVikpPj4xKTsKKwl9Cit9KQorCitRNklOU04o QTJfdmF2Z3csIlJkZDMyPXZhdmd3KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkF2ZXJhZ2Ug dmVjdG9yIG9mIHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykg eworCQlmU0VUV09SRChpLFJkZFYsKGZTWFROKDMyLDMzLGZHRVRXT1JEKGksUnNzVikpK2ZTWFRO KDMyLDMzLGZHRVRXT1JEKGksUnR0VikpKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZuYXZn dywiUmRkMzI9dm5hdmd3KFJ0dDMyLFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiQXZlcmFn ZSB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsr KSB7CisJCWZTRVRXT1JEKGksUmRkViwoZlNYVE4oMzIsMzMsZkdFVFdPUkQoaSxSdHRWKSktZlNY VE4oMzIsMzMsZkdFVFdPUkQoaSxSc3NWKSkpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmF2 Z3dyLCJSZGQzMj12YXZndyhSc3MzMixSdHQzMik6cm5kIixBVFRSSUJTKCksCisiQXZlcmFnZSB2 ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7 CisJCWZTRVRXT1JEKGksUmRkViwoZlNYVE4oMzIsMzMsZkdFVFdPUkQoaSxSc3NWKSkrZlNYVE4o MzIsMzMsZkdFVFdPUkQoaSxSdHRWKSkrMSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92bmF2 Z3dyLCJSZGQzMj12bmF2Z3coUnR0MzIsUnNzMzIpOnJuZDpzYXQiLEFUVFJJQlMoQV9BUkNIVjIp LAorIkF2ZXJhZ2UgdmVjdG9yIG9mIHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChp PTA7aTwyO2krKykgeworCQlmU0VUV09SRChpLFJkZFYsZlNBVCgoZlNYVE4oMzIsMzMsZkdFVFdP UkQoaSxSdHRWKSktZlNYVE4oMzIsMzMsZkdFVFdPUkQoaSxSc3NWKSkrMSk+PjEpKTsKKwl9Cit9 KQorCitRNklOU04oQTJfdmF2Z3djciwiUmRkMzI9dmF2Z3coUnNzMzIsUnR0MzIpOmNybmQiLEFU VFJJQlMoQV9BUkNIVjIpLAorIkF2ZXJhZ2UgdmVjdG9yIG9mIHdvcmRzIHdpdGggY29udmVyZ2Vu dCByb3VuZGluZyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkJ ZlNFVFdPUkQoaSxSZGRWLChmQ1JORChmU1hUTigzMiwzMyxmR0VUV09SRChpLFJzc1YpKStmU1hU TigzMiwzMyxmR0VUV09SRChpLFJ0dFYpKSk+PjEpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdm5h dmd3Y3IsIlJkZDMyPXZuYXZndyhSdHQzMixSc3MzMik6Y3JuZDpzYXQiLEFUVFJJQlMoQV9BUkNI VjIpLAorIkF2ZXJhZ2UgbmVnYXRpdmUgdmVjdG9yIG9mIHdvcmRzIHdpdGggY29udmVyZ2VudCBy b3VuZGluZyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkJZlNF VFdPUkQoaSxSZGRWLGZTQVQoZkNSTkQoZlNYVE4oMzIsMzMsZkdFVFdPUkQoaSxSdHRWKSktZlNY VE4oMzIsMzMsZkdFVFdPUkQoaSxSc3NWKSkpPj4xKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zh dmdoY3IsIlJkZDMyPXZhdmdoKFJzczMyLFJ0dDMyKTpjcm5kIixBVFRSSUJTKEFfQVJDSFYyKSwK KyJBdmVyYWdlIHZlY3RvciBvZiBoYWxmd29yZHMgd2l0aCBjb252IHJvdW5kaW5nIiwKK3sKKwlm SElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUSEFMRihpLFJkZFYsZkNS TkQoZkdFVEhBTEYoaSxSc3NWKStmR0VUSEFMRihpLFJ0dFYpKT4+MSk7CisJfQorfSkKKworUTZJ TlNOKEEyX3ZuYXZnaGNyLCJSZGQzMj12bmF2Z2goUnR0MzIsUnNzMzIpOmNybmQ6c2F0IixBVFRS SUJTKEFfQVJDSFYyKSwKKyJBdmVyYWdlIG5lZ2F0aXZlIHZlY3RvciBvZiBoYWxmd29yZHMgd2l0 aCBjb252IHJvdW5kaW5nIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykg eworCQlmU0VUSEFMRihpLFJkZFYsZlNBVEgoZkNSTkQoZkdFVEhBTEYoaSxSdHRWKS1mR0VUSEFM RihpLFJzc1YpKT4+MSkpOworCX0KK30pCisKKworUTZJTlNOKEEyX3Zhdmd1dywiUmRkMzI9dmF2 Z3V3KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkF2ZXJhZ2UgdmVjdG9yIG9mIHVuc2lnbmVk IHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCQlmU0VU V09SRChpLFJkZFYsKGZaWFROKDMyLDMzLGZHRVRVV09SRChpLFJzc1YpKStmWlhUTigzMiwzMyxm R0VUVVdPUkQoaSxSdHRWKSkpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmF2Z3V3ciwiUmRk MzI9dmF2Z3V3KFJzczMyLFJ0dDMyKTpybmQiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3RvciBv ZiB1bnNpZ25lZCB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKysp IHsKKwkJZlNFVFdPUkQoaSxSZGRWLChmWlhUTigzMiwzMyxmR0VUVVdPUkQoaSxSc3NWKSkrZlpY VE4oMzIsMzMsZkdFVFVXT1JEKGksUnR0VikpKzEpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJf dmF2Z3ViciwiUmRkMzI9dmF2Z3ViKFJzczMyLFJ0dDMyKTpybmQiLEFUVFJJQlMoKSwKKyJBdmVy YWdlIHZlY3RvciBvZiB1bnNpZ25lZCBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAo aSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJZlNFVEJZVEUoaSxSZGRWLCgoZkdFVFVCWVRFKGksUnNz VikrZkdFVFVCWVRFKGksUnR0VikrMSk+PjEpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmF2Z3Vo ciwiUmRkMzI9dmF2Z3VoKFJzczMyLFJ0dDMyKTpybmQiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZl Y3RvciBvZiB1bnNpZ25lZCBoYWxmd29yZHMgd2l0aCByb3VuZGluZyIsCit7CisJZkhJREUoaW50 IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxSZGRWLChmR0VUVUhBTEYo aSxSc3NWKStmR0VUVUhBTEYoaSxSdHRWKSsxKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zh dmdociwiUmRkMzI9dmF2Z2goUnNzMzIsUnR0MzIpOnJuZCIsQVRUUklCUygpLAorIkF2ZXJhZ2Ug dmVjdG9yIG9mIGhhbGZ3b3JkcyB3aXRoIHJvdW5kaW5nIiwKK3sKKwlmSElERShpbnQgaTspCisJ Zm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUSEFMRihpLFJkZFYsKGZHRVRIQUxGKGksUnNzVikr ZkdFVEhBTEYoaSxSdHRWKSsxKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZuYXZnaHIsIlJk ZDMyPXZuYXZnaChSdHQzMixSc3MzMik6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksCisiTmVn YXRpdmUgQXZlcmFnZSB2ZWN0b3Igb2YgaGFsZndvcmRzIHdpdGggcm91bmRpbmciLAoreworCWZI SURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCWZTRVRIQUxGKGksUmRkVixmU0FU SCgoZkdFVEhBTEYoaSxSdHRWKS1mR0VUSEFMRihpLFJzc1YpKzEpPj4xKSk7CisJfQorfSkKKwor CisvKiBSb3VuZGluZyBJbnN0cnVjdGlvbiAqLworCitRNklOU04oQTRfcm91bmRfcmksIlJkMzI9 cm91bmQoUnMzMiwjdTUpIixBVFRSSUJTKCksIlJvdW5kIiwge1JkViA9IGZSTkROKFJzVix1aVYp Pj51aVY7IH0pCitRNklOU04oQTRfcm91bmRfcnIsIlJkMzI9cm91bmQoUnMzMixSdDMyKSIsQVRU UklCUygpLCJSb3VuZCIsIHtSZFYgPSBmUk5ETihSc1YsZlpYVE4oNSwzMixSdFYpKT4+ZlpYVE4o NSwzMixSdFYpOyB9KQorUTZJTlNOKEE0X3JvdW5kX3JpX3NhdCwiUmQzMj1yb3VuZChSczMyLCN1 NSk6c2F0IixBVFRSSUJTKCksIlJvdW5kIiwge1JkViA9IChmU0FUKGZSTkROKFJzVix1aVYpKSk+ PnVpVjsgfSkKK1E2SU5TTihBNF9yb3VuZF9ycl9zYXQsIlJkMzI9cm91bmQoUnMzMixSdDMyKTpz YXQiLEFUVFJJQlMoKSwiUm91bmQiLCB7UmRWID0gKGZTQVQoZlJORE4oUnNWLGZaWFROKDUsMzIs UnRWKSkpKT4+ZlpYVE4oNSwzMixSdFYpOyB9KQorCisKK1E2SU5TTihBNF9jcm91bmRfcmksIlJk MzI9Y3JvdW5kKFJzMzIsI3U1KSIsQVRUUklCUygpLCJDb252ZXJnZW50IFJvdW5kIiwge1JkViA9 IGZDUk5ETihSc1YsdWlWKTsgfSkKK1E2SU5TTihBNF9jcm91bmRfcnIsIlJkMzI9Y3JvdW5kKFJz MzIsUnQzMikiLEFUVFJJQlMoKSwiQ29udmVyZ2VudCBSb3VuZCIsIHtSZFYgPSBmQ1JORE4oUnNW LGZaWFROKDUsMzIsUnRWKSk7IH0pCisKKworI2RlZmluZSBDUk9VTkQoRFNULFNSQyxTSElGVCkg XAorCWZISURFKHNpemUxNnNfdCBybmRiaXRfMTI4OylcCisJZkhJREUoc2l6ZTE2c190IHRtcDEy ODspXAorCWZISURFKHNpemUxNnNfdCBzcmNfMTI4OylcCisJaWYgKFNISUZUID09IDApIHsgXAor CQlEU1QgPSBTUkM7XAorCX0gZWxzZSBpZiAoKFNSQyAmIChzaXplOHNfdCkoKDFMTCA8PCAoU0hJ RlQgLSAxKSkgLSAxTEwpKSA9PSAwKSB7IFwKKwkJc3JjXzEyOCA9IGZDQVNUOFNfMTZTKFNSQyk7 XAorCQlybmRiaXRfMTI4ID0gZkNBU1Q4U18xNlMoMUxMKTtcCisJCXJuZGJpdF8xMjggPSBmU0hJ RlRMMTI4KHJuZGJpdF8xMjgsIFNISUZUKTtcCisJCXJuZGJpdF8xMjggPSBmQU5EMTI4KHJuZGJp dF8xMjgsIHNyY18xMjgpO1wKKwkJcm5kYml0XzEyOCA9IGZTSElGVFIxMjgocm5kYml0XzEyOCwg MSk7XAorCQl0bXAxMjggPSBmQUREMTI4KHNyY18xMjgsIHJuZGJpdF8xMjgpO1wKKwkJdG1wMTI4 ID0gZlNISUZUUjEyOCh0bXAxMjgsIFNISUZUKTtcCisJCURTVCA9ICBmQ0FTVDE2U184Uyh0bXAx MjgpO1wKKwl9IGVsc2Uge1wKKwkJc2l6ZTE2c190IHJuZGJpdF8xMjggPSAgZkNBU1Q4U18xNlMo KDFMTCA8PCAoU0hJRlQgLSAxKSkpOyBcCisJCXNpemUxNnNfdCBzcmNfMTI4ID0gIGZDQVNUOFNf MTZTKFNSQyk7IFwKKwkJc2l6ZTE2c190IHRtcDEyOCA9IGZBREQxMjgoc3JjXzEyOCwgcm5kYml0 XzEyOCk7XAorCQl0bXAxMjggPSBmU0hJRlRSMTI4KHRtcDEyOCwgU0hJRlQpO1wKKwkJRFNUID0g IGZDQVNUMTZTXzhTKHRtcDEyOCk7XAorCX0KKworUTZJTlNOKEE3X2Nyb3VuZGRfcmksIlJkZDMy PWNyb3VuZChSc3MzMiwjdTYpIixBVFRSSUJTKCksIkNvbnZlcmdlbnQgUm91bmQiLAoreworQ1JP VU5EKFJkZFYsUnNzVix1aVYpOworfSkKKworUTZJTlNOKEE3X2Nyb3VuZGRfcnIsIlJkZDMyPWNy b3VuZChSc3MzMixSdDMyKSIsQVRUUklCUygpLCJDb252ZXJnZW50IFJvdW5kIiwKK3sKK0NST1VO RChSZGRWLFJzc1YsZlpYVE4oNiwzMixSdFYpKTsKK30pCisKKworCisKKworCisKKworCitRNklO U04oQTdfY2xpcCwiUmQzMj1jbGlwKFJzMzIsI3U1KSIsQVRUUklCUygpLCJDbGlwIHRvICAjczUi LCAJeyAgIGZDTElQKFJkVixSc1YsdWlWKTt9KQorUTZJTlNOKEE3X3ZjbGlwLCJSZGQzMj12Y2xp cChSc3MzMiwjdTUpIixBVFRSSUJTKCksIkNsaXAgdG8gICNzNSIsCit7CitmSElERShzaXplNHNf dCB0bXA7KQorZkNMSVAodG1wLCBmR0VUV09SRCgwLCBSc3NWKSwgdWlWKTsKK2ZTRVRXT1JEKDAs IFJkZFYsIHRtcCk7CitmQ0xJUCh0bXAsZkdFVFdPUkQoMSwgUnNzViksIHVpVik7CitmU0VUV09S RCgxLCBSZGRWLCB0bXApOworfQorKQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKiBWNDogQ3Jvc3MgVmVjdG9yIE1pbi9NYXgJCSAgICov CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisj ZGVmaW5lIFZSTUlOT1JNQVgoVEFHLFNUUixPUCxTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5F TCxTSElGVCkgXAorUTZJTlNOKEE0X3ZyIyNUQUcjI1NIT1JUVFlQRSwiUnh4MzI9dnIiI1RBRyNT SE9SVFRZUEUiKFJzczMyLFJ1MzIpIixBVFRSSUJTKCksIFwKKyJDaG9vc2UgIiBTVFIgIiBlbGVt ZW50cyBvZiBhIHZlY3RvciIsIFwKK3sgXAorCWZISURFKGludCBpOyBzaXplOHNfdCBUQUc7IHNp emU0c190IGFkZHI7KSBcCisJVEFHID0gZkdFVCMjR0VUVFlQRSgwLFJ4eFYpOyBcCisJYWRkciA9 IGZHRVRXT1JEKDEsUnh4Vik7IFwKKwlmb3IgKGkgPSAwOyBpIDwgTkVMOyBpKyspIHsgXAorCQlp ZiAoVEFHIE9QIGZHRVQjI0dFVFRZUEUoaSxSc3NWKSkgeyBcCisJCQlUQUcgPSBmR0VUIyNHRVRU WVBFKGksUnNzVik7IFwKKwkJCWFkZHIgPSBSdVYgfCBpPDxTSElGVDsgXAorCQl9IFwKKwl9IFwK KwlmU0VUV09SRCgwLFJ4eFYsVEFHKTsgXAorCWZTRVRXT1JEKDEsUnh4VixhZGRyKTsgXAorfSkK KworI2RlZmluZSBSTUlOTUFYKFNIT1JUVFlQRSxTRVRUWVBFLEdFVFRZUEUsTkVMLFNISUZUKSBc CitWUk1JTk9STUFYKG1pbiwibWluaW11bSIsPixTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5F TCxTSElGVCkgXAorVlJNSU5PUk1BWChtYXgsIm1heGltdW0iLDwsU0hPUlRUWVBFLFNFVFRZUEUs R0VUVFlQRSxORUwsU0hJRlQpCisKKworUk1JTk1BWChoLEhBTEYsSEFMRiw0LDEpCitSTUlOTUFY KHVoLEhBTEYsVUhBTEYsNCwxKQorUk1JTk1BWCh3LFdPUkQsV09SRCwyLDIpCitSTUlOTUFYKHV3 LFdPUkQsVVdPUkQsMiwyKQorCisjdW5kZWYgUk1JTk1BWAorI3VuZGVmIFZSTUlOT1JNQVgKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0 b3IgTWluL01heAkJCSAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisjZGVmaW5lIFZNSU5PUk1BWChUQUcsU1RSLEZVTkMsU0hPUlRUWVBF LFNFVFRZUEUsR0VUVFlQRSxORUwpIFwKK1E2SU5TTihBMl92IyNUQUcjI1NIT1JUVFlQRSwiUmRk MzI9diIjVEFHI1NIT1JUVFlQRSIoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksIFwKKyJDaG9vc2Ug IiBTVFIgIiBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyIsIFwKK3sgXAorCWZISURFKGludCBpOykg XAorCWZvciAoaSA9IDA7IGkgPCBORUw7IGkrKykgeyBcCisJCWZTRVQjI1NFVFRZUEUoaSxSZGRW LEZVTkMoZkdFVCMjR0VUVFlQRShpLFJ0dFYpLGZHRVQjI0dFVFRZUEUoaSxSc3NWKSkpOyBcCisJ fSBcCit9KQorCisjZGVmaW5lIFZNSU5PUk1BWDMoVEFHLFNUUixGVU5DLFNIT1JUVFlQRSxTRVRU WVBFLEdFVFRZUEUsTkVMKSBcCitRNklOU04oQTZfdiMjVEFHIyNTSE9SVFRZUEUjIzMsIlJ4eDMy PXYiI1RBRyNTSE9SVFRZUEUiMyhSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwgXAorIkNob29zZSAi IFNUUiAiIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzIiwgXAoreyBcCisJZkhJREUoaW50IGk7KSBc CisJZm9yIChpID0gMDsgaSA8IE5FTDsgaSsrKSB7IFwKKwkJZlNFVCMjU0VUVFlQRShpLFJ4eFYs RlVOQyhmR0VUIyNHRVRUWVBFKGksUnh4ViksRlVOQyhmR0VUIyNHRVRUWVBFKGksUnR0ViksZkdF VCMjR0VUVFlQRShpLFJzc1YpKSkpOyBcCisJfSBcCit9KQorCisjZGVmaW5lIE1JTk1BWChTSE9S VFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkgXAorVk1JTk9STUFYKG1pbiwibWluaW11bSIsZk1J TixTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkgXAorVk1JTk9STUFYKG1heCwibWF4aW11 bSIsZk1BWCxTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkKKworTUlOTUFYKGIsQllURSxC WVRFLDgpCitNSU5NQVgodWIsQllURSxVQllURSw4KQorTUlOTUFYKGgsSEFMRixIQUxGLDQpCitN SU5NQVgodWgsSEFMRixVSEFMRiw0KQorTUlOTUFYKHcsV09SRCxXT1JELDIpCitNSU5NQVgodXcs V09SRCxVV09SRCwyKQorCisjdW5kZWYgTUlOTUFYCisjdW5kZWYgVk1JTk9STUFYCisjdW5kZWYg Vk1JTk9STUFYMworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworLyogVmVjdG9yIE1pbi9NYXgJCQkgICAgICovCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitRNklOU04oQTRfbW9kd3JhcHUsIlJk MzI9bW9kd3JhcChSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiV3JhcCB0byBhbiB1bnNpZ25lZCBt b2R1bG8gYnVmZmVyIiwKK3sKKwlpZiAoUnNWIDwgMCkgeworCSAgICBSZFYgPSBSc1YgKyBmQ0FT VDR1KFJ0Vik7CisJfSBlbHNlIGlmIChmQ0FTVDR1KFJzVikgPj0gZkNBU1Q0dShSdFYpKSB7CisJ ICAgIFJkViA9IFJzViAtIGZDQVNUNHUoUnRWKTsKKwl9IGVsc2UgeworIAkgCQkgUmRWID0gUnNW OworICAgIH0KK30pCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2JyYW5j aC5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYnJhbmNoLmlkZWYKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAwZmVjOQotLS0gL2Rldi9udWxsCisrKyBiL3Rhcmdl dC9oZXhhZ29uL2ltcG9ydGVkL2JyYW5jaC5pZGVmCkBAIC0wLDAgKzEsMzI4IEBACisvKgorICog IENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qIEp1bXAgaW5zdHJ1Y3Rpb25zCQkJICovCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEFfSkRJUiBBX0pVTVAKKyNk ZWZpbmUgQV9DSk5FV0RJUiBBX0pVTVAKKyNkZWZpbmUgQV9DSk9MRERJUiBBX0pVTVAKKyNkZWZp bmUgQV9ORVdWQUxVRUogQV9KVU1QLEFfRE9UTkVXVkFMVUUsQV9NRU1MSUtFX1BBQ0tFVF9SVUxF UworI2RlZmluZSBBX0pJTkRJUiBBX0pVTVAsQV9JTkRJUkVDVAorI2RlZmluZSBBX0pJTkRJUk5F VyBBX0pVTVAsQV9JTkRJUkVDVAorI2RlZmluZSBBX0pJTkRJUk9MRCBBX0pVTVAsQV9JTkRJUkVD VAorCitRNklOU04oSjJfanVtcCwianVtcCAjcjIyOjIiLEFUVFJJQlMoQV9KRElSKSwgImRpcmVj dCB1bmNvbmRpdGlvbmFsIGp1bXAiLAore2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJS QU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9KQorCitRNklOU04oSjJfanVtcHIs Imp1bXByIFJzMzIiLEFUVFJJQlMoQV9KSU5ESVIpLCAiaW5kaXJlY3QgdW5jb25kaXRpb25hbCBq dW1wIiwKK3tmSlVNUFIoUnNOLFJzVixDT0ZfVFlQRV9KVU1QUik7fSkKKworI2RlZmluZSBPTERD T05EX0pVTVAoVEFHLE9QRVIsT1BFUjIsQVRUUklCLERFU0NSLFNFTUFOVElDUykgXAorUTZJTlNO KFRBRyMjdCwiaWYgKFB1NCkgIk9QRVIiOm50ICJPUEVSMixBVFRSSUIsREVTQ1Ise2ZCUkFOQ0hf U1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEQoUHVWKSwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKTsg aWYgKGZMU0JPTEQoUHVWKSkgeyBTRU1BTlRJQ1M7IH19KSBcCitRNklOU04oVEFHIyNmLCJpZiAo IVB1NCkgIk9QRVIiOm50ICJPUEVSMixBVFRSSUIsREVTQ1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NU QUxMKGZMU0JPTEROT1QoUHVWKSwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKTsgaWYgKGZMU0JP TEROT1QoUHVWKSkgeyBTRU1BTlRJQ1M7IH19KSBcCitRNklOU04oVEFHIyN0cHQsImlmIChQdTQp ICJPUEVSIjp0ICJPUEVSMixBVFRSSUIsREVTQ1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZM U0JPTEQoUHVWKSwsU1BFQ1VMQVRFX1RBS0VOLDEyLDApOyBpZiAoZkxTQk9MRChQdVYpKSB7IFNF TUFOVElDUzsgfX0pIFwKK1E2SU5TTihUQUcjI2ZwdCwiaWYgKCFQdTQpICJPUEVSIjp0ICJPUEVS MixBVFRSSUIsREVTQ1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEROT1QoUHVWKSws U1BFQ1VMQVRFX1RBS0VOLDEyLDApOyBpZiAoZkxTQk9MRE5PVChQdVYpKSB7IFNFTUFOVElDUzsg fX0pCisKK09MRENPTkRfSlVNUChKMl9qdW1wLCJqdW1wIiwiI3IxNToyIixBVFRSSUJTKEFfQ0pP TERESVIpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCIsCitmSU1NRVhUKHJpVik7ZlBDQUxJR04o cmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTspCisKK09MRENPTkRf SlVNUChKMl9qdW1wciwianVtcHIiLCJSczMyIixBVFRSSUJTKEFfSklORElST0xEKSwiaW5kaXJl Y3QgY29uZGl0aW9uYWwganVtcCIsCitmSlVNUFIoUnNOLFJzVixDT0ZfVFlQRV9KVU1QUik7KQor CisjZGVmaW5lIE5FV0NPTkRfSlVNUChUQUcsT1BFUixPUEVSMixBVFRSSUIsREVTQ1IsU0VNQU5U SUNTKVwKK1E2SU5TTihUQUcjI3RuZXcsImlmIChQdTQubmV3KSAiT1BFUiI6bnQgIk9QRVIyLEFU VFJJQixERVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVyhQdU4pLCwgU1BFQ1VM QVRFX05PVF9UQUtFTiAsIDEyLDApfSB7aWYoZkxTQk5FVyhQdU4pKXtTRU1BTlRJQ1M7fX0pXAor UTZJTlNOKFRBRyMjZm5ldywiaWYgKCFQdTQubmV3KSAiT1BFUiI6bnQgIk9QRVIyLEFUVFJJQixE RVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FV05PVChQdU4pLCwgU1BFQ1VMQVRF X05PVF9UQUtFTiAsIDEyLDApfSB7aWYoZkxTQk5FV05PVChQdU4pKXtTRU1BTlRJQ1M7fX0pXAor UTZJTlNOKFRBRyMjdG5ld3B0LCJpZiAoUHU0Lm5ldykgIk9QRVIiOnQgIk9QRVIyLEFUVFJJQixE RVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVyhQdU4pLCwgU1BFQ1VMQVRFX1RB S0VOICwgMTIsMCl9IHtpZihmTFNCTkVXKFB1Tikpe1NFTUFOVElDUzt9fSlcCitRNklOU04oVEFH IyNmbmV3cHQsImlmICghUHU0Lm5ldykgIk9QRVIiOnQgIk9QRVIyLEFUVFJJQixERVNDUix7ZkJS QU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FV05PVChQdU4pLCwgU1BFQ1VMQVRFX1RBS0VOICwg MTIsMCl9IHtpZihmTFNCTkVXTk9UKFB1Tikpe1NFTUFOVElDUzt9fSkKKworTkVXQ09ORF9KVU1Q KEoyX2p1bXAsImp1bXAiLCIjcjE1OjIiLEFUVFJJQlMoQV9DSk5FV0RJUixBX0FSQ0hWMiksImRp cmVjdCBjb25kaXRpb25hbCBqdW1wIiwKK2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJS QU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QTkVXKTspCisKK05FV0NPTkRfSlVNUChK Ml9qdW1wciwianVtcHIiLCJSczMyIixBVFRSSUJTKEFfSklORElSTkVXLEFfQVJDSFYzKSwiaW5k aXJlY3QgY29uZGl0aW9uYWwganVtcCIsCitmSlVNUFIoUnNOLFJzVixDT0ZfVFlQRV9KVU1QUik7 KQorCisKKworUTZJTlNOKEo0X2hpbnRqdW1wciwiaGludGpyKFJzMzIpIixBVFRSSUJTKEFfSklO RElSKSwiaGludCBpbmRpcmVjdCBjb25kaXRpb25hbCBqdW1wIiwKK3tmSElOVEpSKFJzVik7fSkK KworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyog Q29tcG91bmQgQ29tcGFyZS1KdW1wcwkJICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworUTZJTlNOKEoyX2p1bXByeiwiaWYgKFJzMzIhPSMwKSBq dW1wOm50ICNyMTM6MiIsQVRUUklCUyhBX0NKTkVXRElSLEFfQVJDSFYzKSwiZGlyZWN0IGNvbmRp dGlvbmFsIGp1bXAgaWYgcmVnaXN0ZXIgdHJ1ZSIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwo KFJzViE9MCksICwgU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKSBpZiAoUnNWICE9IDApIHsgZkJS QU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSkKKworUTZJTlNOKEoyX2p1bXBy bnosImlmIChSczMyPT0jMCkganVtcDpudCAjcjEzOjIiLEFUVFJJQlMoQV9DSk5FV0RJUixBX0FS Q0hWMyksImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJlZ2lzdGVyIGZhbHNlIiwKK3tmQlJB TkNIX1NQRUNVTEFURV9TVEFMTCgoUnNWPT0wKSwgLCBTUEVDVUxBVEVfTk9UX1RBS0VOLDEyLDAp IGlmIChSc1YgPT0gMCkge2ZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0p CisKK1E2SU5TTihKMl9qdW1wcnpwdCwiaWYgKFJzMzIhPSMwKSBqdW1wOnQgI3IxMzoyIixBVFRS SUJTKEFfQ0pORVdESVIsQV9BUkNIVjMpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdp c3RlciB0cnVlIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFMTCgoUnNWIT0wKSwgLCBTUEVDVUxB VEVfVEFLRU4sMTIsMCkgaWYgKFJzViAhPSAwKSB7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09G X1RZUEVfSlVNUCk7fX0pCisKK1E2SU5TTihKMl9qdW1wcm56cHQsImlmIChSczMyPT0jMCkganVt cDp0ICNyMTM6MiIsQVRUUklCUyhBX0NKTkVXRElSLEFfQVJDSFYzKSwiZGlyZWN0IGNvbmRpdGlv bmFsIGp1bXAgaWYgcmVnaXN0ZXIgZmFsc2UiLAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChS c1Y9PTApLCAsIFNQRUNVTEFURV9UQUtFTiwxMiwwKSBpZiAoUnNWID09IDApIHtmQlJBTkNIKGZS RUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KQorCitRNklOU04oSjJfanVtcHJndGV6LCJp ZiAoUnMzMj49IzApIGp1bXA6bnQgI3IxMzoyIixBVFRSSUJTKEFfQ0pORVdESVIsQV9BUkNIVjMp LCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciBncmVhdGVyIG9yIGVxdWFsIHRv IHplcm8iLAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChSc1Y+PTApLCAsIFNQRUNVTEFURV9O T1RfVEFLRU4sMTIsMCkgaWYgKFJzVj49MCkgeyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9U WVBFX0pVTVApO319KQorCitRNklOU04oSjJfanVtcHJndGV6cHQsImlmIChSczMyPj0jMCkganVt cDp0ICNyMTM6MiIsQVRUUklCUyhBX0NKTkVXRElSLEFfQVJDSFYzKSwiZGlyZWN0IGNvbmRpdGlv bmFsIGp1bXAgaWYgcmVnaXN0ZXIgZ3JlYXRlciBvciBlcXVhbCB0byB6ZXJvIiwKK3tmQlJBTkNI X1NQRUNVTEFURV9TVEFMTCgoUnNWPj0wKSwgLCBTUEVDVUxBVEVfVEFLRU4sMTIsMCkgaWYgKFJz Vj49MCkgeyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KQorCitRNklO U04oSjJfanVtcHJsdGV6LCJpZiAoUnMzMjw9IzApIGp1bXA6bnQgI3IxMzoyIixBVFRSSUJTKEFf Q0pORVdESVIsQV9BUkNIVjMpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciBs ZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybyIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoKFJz Vjw9MCksICwgU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKSBpZiAoUnNWPD0wKSB7IGZCUkFOQ0go ZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0pCisKK1E2SU5TTihKMl9qdW1wcmx0ZXpw dCwiaWYgKFJzMzI8PSMwKSBqdW1wOnQgI3IxMzoyIixBVFRSSUJTKEFfQ0pORVdESVIsQV9BUkNI VjMpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciBsZXNzIHRoYW4gb3IgZXF1 YWwgdG8gemVybyIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoKFJzVjw9MCksICwgU1BFQ1VM QVRFX1RBS0VOLDEyLDApIGlmIChSc1Y8PTApIHsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0Zf VFlQRV9KVU1QKTt9fSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisvKiBWNCBDb21wb3VuZCBDb21wYXJlLUp1bXBzCQkgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyogVjQgY29tcG91 bmQgY29tcGFyZSBqdW1wcyAoQ0opICovCisjZGVmaW5lIFNURF9DTVBKVU1QKFRBRyxUU1QsVFNU U0VNKVwKK1E2SU5TTihKNF8jI1RBRyMjX3RwMF9qdW1wX250LCAicDA9IlRTVCI7IGlmIChwMC5u ZXcpIGp1bXA6bnQgI3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9ORVdDTVBKVU1QKSwiY29t cG91bmQgY29tcGFyZS1qdW1wIiwge2ZQQVJUMShmV1JJVEVfUDAoZjhCSVRTT0YoVFNUU0VNKSkp ICBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVXMCwsU1BFQ1VMQVRFX05PVF9UQUtFTiwx MywwKSAgaWYgKGZMU0JORVcwKSB7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNI KGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KVwKK1E2SU5TTihKNF8jI1RBRyMjX2Zw MF9qdW1wX250LCAicDA9IlRTVCI7IGlmICghcDAubmV3KSBqdW1wOm50ICNyOToyIiwgQVRUUklC UyhBX0NKTkVXRElSLEFfTkVXQ01QSlVNUCksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIse2ZQQVJU MShmV1JJVEVfUDAoZjhCSVRTT0YoVFNUU0VNKSkpICBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChm TFNCTkVXME5PVCwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMywwKSBpZiAoZkxTQk5FVzBOT1QpIHtm SU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZ UEVfSlVNUCk7fX0pXAorUTZJTlNOKEo0XyMjVEFHIyNfdHAwX2p1bXBfdCwgICJwMD0iVFNUIjsg aWYgKHAwLm5ldykganVtcDp0ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfTkVXQ01QSlVN UCksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIsICB7ZlBBUlQxKGZXUklURV9QMChmOEJJVFNPRihU U1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcwLCxTUEVDVUxBVEVfVEFL RU4sMTMsMCkgICAgICBpZiAoZkxTQk5FVzApIHtmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7 IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0pXAorUTZJTlNOKEo0XyMj VEFHIyNfZnAwX2p1bXBfdCwgICJwMD0iVFNUIjsgaWYgKCFwMC5uZXcpIGp1bXA6dCAjcjk6MiIs IEFUVFJJQlMoQV9DSk5FV0RJUixBX05FV0NNUEpVTVApLCJjb21wb3VuZCBjb21wYXJlLWp1bXAi LCB7ZlBBUlQxKGZXUklURV9QMChmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRF X1NUQUxMKGZMU0JORVcwTk9ULCxTUEVDVUxBVEVfVEFLRU4sMTMsMCkgICAgIGlmIChmTFNCTkVX ME5PVCkge2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3Jp VixDT0ZfVFlQRV9KVU1QKTt9fSlcCitRNklOU04oSjRfIyNUQUcjI190cDFfanVtcF9udCwgInAx PSJUU1QiOyBpZiAocDEubmV3KSBqdW1wOm50ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFf TkVXQ01QSlVNUCksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIsIHtmUEFSVDEoZldSSVRFX1AxKGY4 QklUU09GKFRTVFNFTSkpKSAgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVzEsLFNQRUNV TEFURV9OT1RfVEFLRU4sMTMsMCkgIGlmIChmTFNCTkVXMSkge2ZJTU1FWFQocmlWKTsgZlBDQUxJ R04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSlcCitRNklO U04oSjRfIyNUQUcjI19mcDFfanVtcF9udCwgInAxPSJUU1QiOyBpZiAoIXAxLm5ldykganVtcDpu dCAjcjk6MiIsIEFUVFJJQlMoQV9DSk5FV0RJUixBX05FV0NNUEpVTVApLCJjb21wb3VuZCBjb21w YXJlLWp1bXAiLHtmUEFSVDEoZldSSVRFX1AxKGY4QklUU09GKFRTVFNFTSkpKSAgZkJSQU5DSF9T UEVDVUxBVEVfU1RBTEwoZkxTQk5FVzFOT1QsLFNQRUNVTEFURV9OT1RfVEFLRU4sMTMsMCkgaWYg KGZMU0JORVcxTk9UKSB7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFE X1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KVwKK1E2SU5TTihKNF8jI1RBRyMjX3RwMV9qdW1w X3QsICAicDE9IlRTVCI7IGlmIChwMS5uZXcpIGp1bXA6dCAjcjk6MiIsIEFUVFJJQlMoQV9DSk5F V0RJUixBX05FV0NNUEpVTVApLCJjb21wb3VuZCBjb21wYXJlLWp1bXAiLCAge2ZQQVJUMShmV1JJ VEVfUDEoZjhCSVRTT0YoVFNUU0VNKSkpICBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVX MSwsU1BFQ1VMQVRFX1RBS0VOLDEzLDApICAgICAgaWYgKGZMU0JORVcxKSB7ZklNTUVYVChyaVYp OyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319 KVwKK1E2SU5TTihKNF8jI1RBRyMjX2ZwMV9qdW1wX3QsICAicDE9IlRTVCI7IGlmICghcDEubmV3 KSBqdW1wOnQgI3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9ORVdDTVBKVU1QKSwiY29tcG91 bmQgY29tcGFyZS1qdW1wIiwge2ZQQVJUMShmV1JJVEVfUDEoZjhCSVRTT0YoVFNUU0VNKSkpICBm QlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVXMU5PVCwsU1BFQ1VMQVRFX1RBS0VOLDEzLDAp ICAgICBpZiAoZkxTQk5FVzFOT1QpIHtmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZCUkFO Q0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0pCisKKworU1REX0NNUEpVTVAoY21w ZXFpLCJjbXAuZXEoUnMxNiwjVTUpIiwoUnNWPT1VaVYpKQorU1REX0NNUEpVTVAoY21wZ3RpLCJj bXAuZ3QoUnMxNiwjVTUpIiwoUnNWPlVpVikpCitTVERfQ01QSlVNUChjbXBndHVpLCJjbXAuZ3R1 KFJzMTYsI1U1KSIsKGZDQVNUNHUoUnNWKT5VaVYpKQorCitTVERfQ01QSlVNUChjbXBlcW4xLCJj bXAuZXEoUnMxNiwjLTEpIiwoUnNWPT0tMSkpCitTVERfQ01QSlVNUChjbXBndG4xLCJjbXAuZ3Qo UnMxNiwjLTEpIiwoUnNWPi0xKSkKK1NURF9DTVBKVU1QKHRzdGJpdDAsInRzdGJpdChSczE2LCMw KSIsKFJzViAmIDEpKQorCitTVERfQ01QSlVNUChjbXBlcSwiY21wLmVxKFJzMTYsUnQxNikiLChS c1Y9PVJ0VikpCitTVERfQ01QSlVNUChjbXBndCwiY21wLmd0KFJzMTYsUnQxNikiLChSc1Y+UnRW KSkKK1NURF9DTVBKVU1QKGNtcGd0dSwiY21wLmd0dShSczE2LFJ0MTYpIiwoZkNBU1Q0dShSc1Yp PlJ0VikpCisKKworCisvKiBWNCBqdW1wIGFuZCB0cmFuc2ZlciAoQ0opICovCitRNklOU04oSjRf anVtcHNldGksIlJkMTY9I1U2IDsganVtcCAjcjk6MiIsQVRUUklCUyhBX0pESVIpLCAiZGlyZWN0 IHVuY29uZGl0aW9uYWwganVtcCBhbmQgc2V0IHJlZ2lzdGVyIHRvIGltbWVkaWF0ZSIsCit7ZklN TUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBSZFY9VWlWOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlW LENPRl9UWVBFX0pVTVApO30pCisKK1E2SU5TTihKNF9qdW1wc2V0ciwiUmQxNj1SczE2IDsganVt cCAjcjk6MiIsQVRUUklCUyhBX0pESVIpLCAiZGlyZWN0IHVuY29uZGl0aW9uYWwganVtcCBhbmQg dHJhbnNmZXIgcmVnaXN0ZXIiLAore2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgUmRWPVJz VjsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9KQorCisKKy8qIFY0IG5l dy12YWx1ZSBqdW1wcyAoTkNKKSAqLworI2RlZmluZSBTVERfQ01QSlVNUE5FV1JTKFRBRyxUU1Qs VFNUU0VNKVwKK1E2SU5TTihKNF8jI1RBRyMjX2p1bXBudl90LCAiaWYgKCJUU1QiKSBqdW1wOnQg I3I5OjIiLCBBVFRSSUJTKEFfTkVXVkFMVUVKKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIix7ZkJS QU5DSF9TUEVDVUxBVEVfU1RBTEwoVFNUU0VNLCxTUEVDVUxBVEVfVEFLRU4sMTMsMCk7aWYgKFRT VFNFTSkge2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3Jp VixDT0ZfVFlQRV9KVU1QKTt9fSlcCitRNklOU04oSjRfIyNUQUcjI19qdW1wbnZfbnQsImlmICgi VFNUIikganVtcDpudCAjcjk6MiIsQVRUUklCUyhBX05FV1ZBTFVFSiksImNvbXBvdW5kIGNvbXBh cmUtanVtcCIse2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKFRTVFNFTSwsU1BFQ1VMQVRFX05PVF9U QUtFTiwxMywwKTsgaWYgKFRTVFNFTSkge2ZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJS QU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSkKKworCisKKworU1REX0NNUEpV TVBORVdSUyhjbXBlcWlfdCwiY21wLmVxKE5zOC5uZXcsI1U1KSIsKGZORVdSRUcoTnNOKT09KFVp VikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBlcWlfZiwiIWNtcC5lcShOczgubmV3LCNVNSkiLChm TkVXUkVHKE5zTikhPShVaVYpKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZ3RpX3QsImNtcC5ndChO czgubmV3LCNVNSkiLChmTkVXUkVHKE5zTik+KFVpVikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBn dGlfZiwiIWNtcC5ndChOczgubmV3LCNVNSkiLCEoZk5FV1JFRyhOc04pPihVaVYpKSkKK1NURF9D TVBKVU1QTkVXUlMoY21wZ3R1aV90LCJjbXAuZ3R1KE5zOC5uZXcsI1U1KSIsKGZDQVNUNHUoZk5F V1JFRyhOc04pKT4oVWlWKSkpCitTVERfQ01QSlVNUE5FV1JTKGNtcGd0dWlfZiwiIWNtcC5ndHUo TnM4Lm5ldywjVTUpIiwhKGZDQVNUNHUoZk5FV1JFRyhOc04pKT4oVWlWKSkpCisKKworU1REX0NN UEpVTVBORVdSUyhjbXBlcW4xX3QsImNtcC5lcShOczgubmV3LCMtMSkiLChmTkVXUkVHKE5zTik9 PSgtMSkpKQorU1REX0NNUEpVTVBORVdSUyhjbXBlcW4xX2YsIiFjbXAuZXEoTnM4Lm5ldywjLTEp IiwoZk5FV1JFRyhOc04pIT0oLTEpKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZ3RuMV90LCJjbXAu Z3QoTnM4Lm5ldywjLTEpIiwoZk5FV1JFRyhOc04pPigtMSkpKQorU1REX0NNUEpVTVBORVdSUyhj bXBndG4xX2YsIiFjbXAuZ3QoTnM4Lm5ldywjLTEpIiwhKGZORVdSRUcoTnNOKT4oLTEpKSkKK1NU RF9DTVBKVU1QTkVXUlModHN0Yml0MF90LCJ0c3RiaXQoTnM4Lm5ldywjMCkiLCgoZk5FV1JFRyhO c04pKSAmIDEpKQorU1REX0NNUEpVTVBORVdSUyh0c3RiaXQwX2YsIiF0c3RiaXQoTnM4Lm5ldywj MCkiLCEoKGZORVdSRUcoTnNOKSkgJiAxKSkKKworCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxX3Qs ICJjbXAuZXEoTnM4Lm5ldyxSdDMyKSIsIChmTkVXUkVHKE5zTik9PVJ0VikpCitTVERfQ01QSlVN UE5FV1JTKGNtcGd0X3QsICJjbXAuZ3QoTnM4Lm5ldyxSdDMyKSIsIChmTkVXUkVHKE5zTik+UnRW KSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZ3R1X3QsImNtcC5ndHUoTnM4Lm5ldyxSdDMyKSIsKGZD QVNUNHUoZk5FV1JFRyhOc04pKT5mQ0FTVDR1KFJ0VikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBs dF90LCAiY21wLmd0KFJ0MzIsTnM4Lm5ldykiLCAoUnRWPmZORVdSRUcoTnNOKSkpCitTVERfQ01Q SlVNUE5FV1JTKGNtcGx0dV90LCJjbXAuZ3R1KFJ0MzIsTnM4Lm5ldykiLChmQ0FTVDR1KFJ0Vik+ ZkNBU1Q0dShmTkVXUkVHKE5zTikpKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZXFfZiwgIiFjbXAu ZXEoTnM4Lm5ldyxSdDMyKSIsIChmTkVXUkVHKE5zTikhPVJ0VikpCitTVERfQ01QSlVNUE5FV1JT KGNtcGd0X2YsICIhY21wLmd0KE5zOC5uZXcsUnQzMikiLCAhKGZORVdSRUcoTnNOKT5SdFYpKQor U1REX0NNUEpVTVBORVdSUyhjbXBndHVfZiwiIWNtcC5ndHUoTnM4Lm5ldyxSdDMyKSIsIShmQ0FT VDR1KGZORVdSRUcoTnNOKSk+ZkNBU1Q0dShSdFYpKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wbHRf ZiwgIiFjbXAuZ3QoUnQzMixOczgubmV3KSIsICEoUnRWPmZORVdSRUcoTnNOKSkpCitTVERfQ01Q SlVNUE5FV1JTKGNtcGx0dV9mLCIhY21wLmd0dShSdDMyLE5zOC5uZXcpIiwhKGZDQVNUNHUoUnRW KT5mQ0FTVDR1KGZORVdSRUcoTnNOKSkpKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBTdWJyb3V0aW5lIENhbGwgaW5zdHJ1Y3Rp b25zCSAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisjZGVmaW5lIENESVJfU1REICAgQV9DQUxMCisjZGVmaW5lIENJTkRJUl9TVEQgQV9D QUxMLEFfSU5ESVJFQ1QKKworUTZJTlNOKEoyX2NhbGwsImNhbGwgI3IyMjoyIixBVFRSSUJTKENE SVJfU1REKSwgImRpcmVjdCB1bmNvbmRpdGlvbmFsIGNhbGwiLAore2ZJTU1FWFQocmlWKTsgZlBD QUxJR04ocmlWKTsgZkNBTEwoZlJFQURfUEMoKStyaVYpOyB9KQorCitRNklOU04oSjJfY2FsbHQs ImlmIChQdTQpIGNhbGwgI3IxNToyIixBVFRSSUJTKENESVJfU1REKSwiZGlyZWN0IGNvbmRpdGlv bmFsIGNhbGwgaWYgdHJ1ZSIsCit7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNI X1NQRUNVTEFURV9TVEFMTChmTFNCT0xEKFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7 IGlmIChmTFNCT0xEKFB1VikpIHsgZkNBTEwoZlJFQURfUEMoKStyaVYpOyB9fSkKKworUTZJTlNO KEoyX2NhbGxmLCJpZiAoIVB1NCkgY2FsbCAjcjE1OjIiLEFUVFJJQlMoQ0RJUl9TVEQpLCJkaXJl Y3QgY29uZGl0aW9uYWwgY2FsbCBpZiBmYWxzZSIsCit7ZklNTUVYVChyaVYpOyBmUENBTElHTihy aVYpOyBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCT0xETk9UKFB1ViksLFNQRUNVTEFURV9O T1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTEROT1QoUHVWKSkgeyBmQ0FMTChmUkVBRF9QQygpK3Jp Vik7IH19KQorCitRNklOU04oSjJfY2FsbHIsImNhbGxyIFJzMzIiLEFUVFJJQlMoQ0lORElSX1NU RCksICJpbmRpcmVjdCB1bmNvbmRpdGlvbmFsIGNhbGwiLAoreyBmQ0FMTFIoUnNWKTsgfSkKKwor UTZJTlNOKEoyX2NhbGxydCwiaWYgKFB1NCkgY2FsbHIgUnMzMiIsQVRUUklCUyhDSU5ESVJfU1RE KSwiaW5kaXJlY3QgY29uZGl0aW9uYWwgY2FsbCBpZiB0cnVlIiwKK3tmQlJBTkNIX1NQRUNVTEFU RV9TVEFMTChmTFNCT0xEKFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JP TEQoUHVWKSkgeyBmQ0FMTFIoUnNWKTsgfX0pCisKK1E2SU5TTihKMl9jYWxscmYsImlmICghUHU0 KSBjYWxsciBSczMyIixBVFRSSUJTKENJTkRJUl9TVEQpLCJpbmRpcmVjdCBjb25kaXRpb25hbCBj YWxsIGlmIGZhbHNlIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCT0xETk9UKFB1Viks LFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTEROT1QoUHVWKSkgeyBmQ0FMTFIo UnNWKTsgfX0pCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisvKiBIVyBMb29wIGluc3RydWN0aW9ucwkJICAgICAgKi8KKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihKMl9sb29wMHIs Imxvb3AwKCNyNzoyLFJzMzIpIixBVFRSSUJTKCksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwKK3sg ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNhLGxj Ki8gZlJFQURfUEMoKStyaVYsIFJzVik7CisgIGZTRVRfTFBDRkcoMCk7Cit9KQorCitRNklOU04o SjJfbG9vcDFyLCJsb29wMSgjcjc6MixSczMyKSIsQVRUUklCUygpLCJJbml0aWFsaXplIEhXIGxv b3AgMSIsCit7IGZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsKKyAgZldSSVRFX0xPT1BfUkVH UzEoLypzYSxsYyovIGZSRUFEX1BDKCkrcmlWLCBSc1YpOworfSkKKworUTZJTlNOKEoyX2xvb3Aw aSwibG9vcDAoI3I3OjIsI1UxMCkiLEFUVFJJQlMoKSwiSW5pdGlhbGl6ZSBIVyBsb29wIDAiLAor eyBmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7CisgIGZXUklURV9MT09QX1JFR1MwKC8qc2Es bGMqLyBmUkVBRF9QQygpK3JpViwgVWlWKTsKKyAgZlNFVF9MUENGRygwKTsKK30pCisKK1E2SU5T TihKMl9sb29wMWksImxvb3AxKCNyNzoyLCNVMTApIixBVFRSSUJTKCksIkluaXRpYWxpemUgSFcg bG9vcCAxIiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9S RUdTMSgvKnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7Cit9KQorCisKK1E2SU5TTihKMl9w bG9vcDFzciwicDM9c3AxbG9vcDAoI3I3OjIsUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLCJJbml0 aWFsaXplIEhXIGxvb3AgMCIsCit7IGZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsKKyAgZldS SVRFX0xPT1BfUkVHUzAoLypzYSxsYyovIGZSRUFEX1BDKCkrcmlWLCBSc1YpOworICBmU0VUX0xQ Q0ZHKDEpOworICBmV1JJVEVfUDMoMCk7Cit9KQorUTZJTlNOKEoyX3Bsb29wMXNpLCJwMz1zcDFs b29wMCgjcjc6MiwjVTEwKSIsQVRUUklCUyhBX0FSQ0hWMiksIkluaXRpYWxpemUgSFcgbG9vcCAw IiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgv KnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7CisgIGZTRVRfTFBDRkcoMSk7CisgIGZXUklU RV9QMygwKTsKK30pCisKK1E2SU5TTihKMl9wbG9vcDJzciwicDM9c3AybG9vcDAoI3I3OjIsUnMz MikiLEFUVFJJQlMoQV9BUkNIVjIpLCJJbml0aWFsaXplIEhXIGxvb3AgMCIsCit7IGZJTU1FWFQo cmlWKTsgZlBDQUxJR04ocmlWKTsKKyAgZldSSVRFX0xPT1BfUkVHUzAoLypzYSxsYyovIGZSRUFE X1BDKCkrcmlWLCBSc1YpOworICBmU0VUX0xQQ0ZHKDIpOworICBmV1JJVEVfUDMoMCk7Cit9KQor UTZJTlNOKEoyX3Bsb29wMnNpLCJwMz1zcDJsb29wMCgjcjc6MiwjVTEwKSIsQVRUUklCUyhBX0FS Q0hWMiksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihy aVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7 CisgIGZTRVRfTFBDRkcoMik7CisgIGZXUklURV9QMygwKTsKK30pCisKK1E2SU5TTihKMl9wbG9v cDNzciwicDM9c3AzbG9vcDAoI3I3OjIsUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLCJJbml0aWFs aXplIEhXIGxvb3AgMCIsCit7IGZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsKKyAgZldSSVRF X0xPT1BfUkVHUzAoLypzYSxsYyovIGZSRUFEX1BDKCkrcmlWLCBSc1YpOworICBmU0VUX0xQQ0ZH KDMpOworICBmV1JJVEVfUDMoMCk7Cit9KQorUTZJTlNOKEoyX3Bsb29wM3NpLCJwMz1zcDNsb29w MCgjcjc6MiwjVTEwKSIsQVRUUklCUyhBX0FSQ0hWMiksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwK K3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNh LGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7CisgIGZTRVRfTFBDRkcoMyk7CisgIGZXUklURV9Q MygwKTsKK30pCisKKworCitRNklOU04oSjJfZW5kbG9vcDAxLCJlbmRsb29wMDEiLEFUVFJJQlMo QV9IV0xPT1AwX0VORCxBX0hXTE9PUDFfRU5EKSwiTG9vcGVuZCBmb3IgaW5uZXIgYW5kIG91dGVy IGxvb3AiLAoreworCisgIC8qIFYyOiBXaXRoIHByZWRpY2F0ZSBjb250cm9sICovCisgIGlmIChm R0VUX0xQQ0ZHKSB7CisgICAgZkhJREUoIGlmIChmR0VUX0xQQ0ZHID49IDIpIHsgLyogTm90aGlu ZyAqLyB9IGVsc2UgKQorICAgIGlmIChmR0VUX0xQQ0ZHPT0xKSB7CisgICAgICAgZldSSVRFX1Az KDB4ZmYpOworICAgIH0KKyAgICBmU0VUX0xQQ0ZHKGZHRVRfTFBDRkctMSk7CisgIH0KKworICAv KiBjaGVjayBpZiBpdGVyYXRlICovCisgIGlmIChmUkVBRF9MQzA+MSkgeworICAgIGZCUkFOQ0go ZlJFQURfU0EwLENPRl9UWVBFX0xPT1BFTkQwKTsKKyAgICAvKiBkZWNyZW1lbnQgbG9vcCBjb3Vu dCAqLworICAgIGZXUklURV9MQzAoZlJFQURfTEMwLTEpOworICB9IGVsc2UgeworICAgIC8qIGNo ZWNrIGlmIGl0ZXJhdGUgKi8KKyAgICBpZiAoZlJFQURfTEMxPjEpIHsKKyAgICAgIGZCUkFOQ0go ZlJFQURfU0ExLENPRl9UWVBFX0xPT1BFTkQxKTsKKyAgICAgIC8qIGRlY3JlbWVudCBsb29wIGNv dW50ICovCisgICAgICBmV1JJVEVfTEMxKGZSRUFEX0xDMS0xKTsKKyAgICB9CisgIH0KKworfSkK KworUTZJTlNOKEoyX2VuZGxvb3AwLCJlbmRsb29wMCIsQVRUUklCUyhBX0hXTE9PUDBfRU5EKSwi TG9vcGVuZCBmb3IgaW5uZXIgbG9vcCIsCit7CisKKyAgLyogVjI6IFdpdGggcHJlZGljYXRlIGNv bnRyb2wgKi8KKyAgaWYgKGZHRVRfTFBDRkcpIHsKKyAgICBmSElERSggaWYgKGZHRVRfTFBDRkcg Pj0gMikgeyAvKiBOb3RoaW5nICovIH0gZWxzZSApCisgICAgaWYgKGZHRVRfTFBDRkc9PTEpIHsK KyAgICAgICBmV1JJVEVfUDMoMHhmZik7CisgICAgfQorICAgIGZTRVRfTFBDRkcoZkdFVF9MUENG Ry0xKTsKKyAgfQorCisgIC8qIGNoZWNrIGlmIGl0ZXJhdGUgKi8KKyAgaWYgKGZSRUFEX0xDMD4x KSB7CisgICAgZkJSQU5DSChmUkVBRF9TQTAsQ09GX1RZUEVfTE9PUEVORDApOworICAgIC8qIGRl Y3JlbWVudCBsb29wIGNvdW50ICovCisgICAgZldSSVRFX0xDMChmUkVBRF9MQzAtMSk7CisgIH0K K30pCisKK1E2SU5TTihKMl9lbmRsb29wMSwiZW5kbG9vcDEiLEFUVFJJQlMoQV9IV0xPT1AxX0VO RCksIkxvb3BlbmQgZm9yIG91dGVyIGxvb3AiLAoreworICAvKiBjaGVjayBpZiBpdGVyYXRlICov CisgIGlmIChmUkVBRF9MQzE+MSkgeworICAgIGZCUkFOQ0goZlJFQURfU0ExLENPRl9UWVBFX0xP T1BFTkQxKTsKKyAgICAvKiBkZWNyZW1lbnQgbG9vcCBjb3VudCAqLworICAgIGZXUklURV9MQzEo ZlJFQURfTEMxLTEpOworICB9Cit9KQorCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2lt cG9ydGVkL2NvbXBhcmUuaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2NvbXBhcmUuaWRl ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjk3ZWQ4Ci0tLSAvZGV2L251 bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvY29tcGFyZS5pZGVmCkBAIC0wLDAgKzEs NjIxIEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlv biBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBDb21wYXJlIEluc3RydWN0aW9u cworICovCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworLyogU2NhbGFyIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zCSAgICAgICAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKEMyX2NtcGVx LCJQZDQ9Y21wLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBFcXVhbCIs Cit7UGRWPWY4QklUU09GKFJzVj09UnRWKTt9KQorCitRNklOU04oQzJfY21wZ3QsIlBkND1jbXAu Z3QoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIHNpZ25lZCBHcmVhdGVyIFRo YW4iLAore1BkVj1mOEJJVFNPRihSc1Y+UnRWKTt9KQorCitRNklOU04oQzJfY21wZ3R1LCJQZDQ9 Y21wLmd0dShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3IgR3JlYXRlciBUaGFu IFVuc2lnbmVkIiwKK3tQZFY9ZjhCSVRTT0YoZkNBU1Q0dShSc1YpPmZDQVNUNHUoUnRWKSk7fSkK KworUTZJTlNOKEMyX2NtcGVxcCwiUGQ0PWNtcC5lcShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwK KyJDb21wYXJlIGZvciBFcXVhbCIsCit7UGRWPWY4QklUU09GKFJzc1Y9PVJ0dFYpO30pCisKK1E2 SU5TTihDMl9jbXBndHAsIlBkND1jbXAuZ3QoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29t cGFyZSBmb3Igc2lnbmVkIEdyZWF0ZXIgVGhhbiIsCit7UGRWPWY4QklUU09GKFJzc1Y+UnR0Vik7 fSkKKworUTZJTlNOKEMyX2NtcGd0dXAsIlBkND1jbXAuZ3R1KFJzczMyLFJ0dDMyKSIsQVRUUklC UygpLAorIkNvbXBhcmUgZm9yIEdyZWF0ZXIgVGhhbiBVbnNpZ25lZCIsCit7UGRWPWY4QklUU09G KGZDQVNUOHUoUnNzVik+ZkNBU1Q4dShSdHRWKSk7fSkKKworCisKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIENvbXBhcmUgYW5kIHB1dCByZXN1 bHQgaW4gR1BSCSAgICAgKi8KKy8qICB0eXBpY2FsbHkgZm9yIGZ1bmN0aW9uIEkvTwkgICAgICAg Ki8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2 SU5TTihBNF9yY21wZXFpLCJSZDMyPWNtcC5lcShSczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21w YXJlIGZvciBFcXVhbCIsCit7ZklNTUVYVChzaVYpOyBSZFY9KFJzVj09c2lWKTsgfSkKKworUTZJ TlNOKEE0X3JjbXBuZXFpLCJSZDMyPSFjbXAuZXEoUnMzMiwjczgpIixBVFRSSUJTKCksCisiQ29t cGFyZSBmb3IgRXF1YWwiLAore2ZJTU1FWFQoc2lWKTsgUmRWPShSc1YhPXNpVik7IH0pCisKKwor UTZJTlNOKEE0X3JjbXBlcSwiUmQzMj1jbXAuZXEoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNv bXBhcmUgZm9yIEVxdWFsIiwKK3tSZFY9KFJzVj09UnRWKTsgfSkKKworUTZJTlNOKEE0X3JjbXBu ZXEsIlJkMzI9IWNtcC5lcShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3IgRXF1 YWwiLAore1JkVj0oUnNWIT1SdFYpOyB9KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNjYWxhciBjb21wYXJlIGluc3RydWN0aW9ucwkg ICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKKworUTZJTlNOKEMyX2JpdHNzZXQsIlBkND1iaXRzc2V0KFJzMzIsUnQzMikiLEFUVFJJQlMo QV9BUkNIVjIpLAorIkNvbXBhcmUgZm9yIHNlbGVjdGVkIGJpdHMgc2V0IiwKK3tQZFY9ZjhCSVRT T0YoKFJzViZSdFYpPT1SdFYpO30pCisKK1E2SU5TTihDMl9iaXRzY2xyLCJQZDQ9Yml0c2NscihS czMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb21wYXJlIGZvciBzZWxlY3RlZCBiaXRz IGNsZWFyIiwKK3tQZFY9ZjhCSVRTT0YoKFJzViZSdFYpPT0wKTt9KQorCisKK1E2SU5TTihDNF9u Yml0c3NldCwiUGQ0PSFiaXRzc2V0KFJzMzIsUnQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNv bXBhcmUgZm9yIHNlbGVjdGVkIGJpdHMgc2V0IiwKK3tQZFY9ZjhCSVRTT0YoKFJzViZSdFYpIT1S dFYpO30pCisKK1E2SU5TTihDNF9uYml0c2NsciwiUGQ0PSFiaXRzY2xyKFJzMzIsUnQzMikiLEFU VFJJQlMoQV9BUkNIVjIpLAorIkNvbXBhcmUgZm9yIHNlbGVjdGVkIGJpdHMgY2xlYXIiLAore1Bk Vj1mOEJJVFNPRigoUnNWJlJ0VikhPTApO30pCisKKworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworLyogU2NhbGFyIGNvbXBhcmUgaW5zdHJ1Y3Rpb25z IFcvIGltbWVkaWF0ZSAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK1E2SU5TTihDMl9jbXBlcWksIlBkND1jbXAuZXEoUnMzMiwjczEwKSIsQVRU UklCUygpLAorIkNvbXBhcmUgZm9yIEVxdWFsIiwKK3tmSU1NRVhUKHNpVik7IFBkVj1mOEJJVFNP RihSc1Y9PXNpVik7fSkKKworUTZJTlNOKEMyX2NtcGd0aSwiUGQ0PWNtcC5ndChSczMyLCNzMTAp IixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3Igc2lnbmVkIEdyZWF0ZXIgVGhhbiIsCit7ZklNTUVY VChzaVYpOyBQZFY9ZjhCSVRTT0YoUnNWPnNpVik7fSkKKworUTZJTlNOKEMyX2NtcGd0dWksIlBk ND1jbXAuZ3R1KFJzMzIsI3U5KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIEdyZWF0ZXIgVGhh biBVbnNpZ25lZCIsCit7ZklNTUVYVCh1aVYpOyBQZFY9ZjhCSVRTT0YoZkNBU1Q0dShSc1YpPmZD QVNUNHUodWlWKSk7fSkKKworUTZJTlNOKEMyX2JpdHNjbHJpLCJQZDQ9Yml0c2NscihSczMyLCN1 NikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvbXBhcmUgZm9yIHNlbGVjdGVkIGJpdHMgY2xlYXIi LAore1BkVj1mOEJJVFNPRigoUnNWJnVpVik9PTApO30pCisKK1E2SU5TTihDNF9uYml0c2Nscmks IlBkND0hYml0c2NscihSczMyLCN1NikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvbXBhcmUgZm9y IHNlbGVjdGVkIGJpdHMgY2xlYXIiLAore1BkVj1mOEJJVFNPRigoUnNWJnVpVikhPTApO30pCisK KworCisKK1E2SU5TTihDNF9jbXBuZXFpLCJQZDQ9IWNtcC5lcShSczMyLCNzMTApIixBVFRSSUJT KCksICJDb21wYXJlIGZvciBOb3QgRXF1YWwiLCB7ZklNTUVYVChzaVYpOyBQZFY9ZjhCSVRTT0Yo UnNWIT1zaVYpO30pCitRNklOU04oQzRfY21wbHRlaSwiUGQ0PSFjbXAuZ3QoUnMzMiwjczEwKSIs QVRUUklCUygpLCAiQ29tcGFyZSBmb3IgTGVzcyBUaGFuIG9yIEVxdWFsIiwge2ZJTU1FWFQoc2lW KTsgUGRWPWY4QklUU09GKFJzVjw9c2lWKTt9KQorUTZJTlNOKEM0X2NtcGx0ZXVpLCJQZDQ9IWNt cC5ndHUoUnMzMiwjdTkpIixBVFRSSUJTKCksICJDb21wYXJlIGZvciBMZXNzIFRoYW4gb3IgRXF1 YWwgVW5zaWduZWQiLCB7ZklNTUVYVCh1aVYpOyBQZFY9ZjhCSVRTT0YoZkNBU1Q0dShSc1YpPD1m Q0FTVDR1KHVpVikpO30pCisKK1E2SU5TTihDNF9jbXBuZXEsIlBkND0hY21wLmVxKFJzMzIsUnQz MikiLEFUVFJJQlMoKSwgIkFuZC1Db21wYXJlIGZvciBFcXVhbCIsIHtQZFY9ZjhCSVRTT0YoUnNW IT1SdFYpO30pCitRNklOU04oQzRfY21wbHRlLCJQZDQ9IWNtcC5ndChSczMyLFJ0MzIpIixBVFRS SUJTKCksICJBbmQtQ29tcGFyZSBmb3Igc2lnbmVkIEdyZWF0ZXIgVGhhbiIsIHtQZFY9ZjhCSVRT T0YoUnNWPD1SdFYpO30pCitRNklOU04oQzRfY21wbHRldSwiUGQ0PSFjbXAuZ3R1KFJzMzIsUnQz MikiLEFUVFJJQlMoKSwgIkFuZC1Db21wYXJlIGZvciBHcmVhdGVyIFRoYW4gVW5zaWduZWQiLCB7 UGRWPWY4QklUU09GKGZDQVNUNHUoUnNWKTw9ZkNBU1Q0dShSdFYpKTt9KQorCisKKworCisKKy8q IFByZWRpY2F0ZSBMb2dpY2FsIE9wZXJhdGlvbnMgKi8KKworUTZJTlNOKEMyX2FuZCwiUGQ0PWFu ZChQdDQsUHM0KSIsQVRUUklCUyhBX0NSU0xPVDIzKSwKKyJQcmVkaWNhdGUgQU5EIiwKK3tQZFY9 UHNWICYgUHRWO30pCisKK1E2SU5TTihDMl9vciwiUGQ0PW9yKFB0NCxQczQpIixBVFRSSUJTKEFf Q1JTTE9UMjMpLAorIlByZWRpY2F0ZSBPUiIsCit7UGRWPVBzViB8IFB0Vjt9KQorCitRNklOU04o QzJfeG9yLCJQZDQ9eG9yKFBzNCxQdDQpIixBVFRSSUJTKEFfQ1JTTE9UMjMpLAorIlByZWRpY2F0 ZSBYT1IiLAore1BkVj1Qc1YgXiBQdFY7fSkKKworUTZJTlNOKEMyX2FuZG4sIlBkND1hbmQoUHQ0 LCFQczQpIixBVFRSSUJTKEFfQ1JTTE9UMjMpLAorIlByZWRpY2F0ZSBBTkQgTk9UIiwKK3tQZFY9 UHRWICYgKH5Qc1YpO30pCisKK1E2SU5TTihDMl9ub3QsIlBkND1ub3QoUHM0KSIsQVRUUklCUyhB X0NSU0xPVDIzKSwKKyJMb2dpY2FsIE5PVCBQcmVkaWNhdGUiLAore1BkVj1+UHNWO30pCisKK1E2 SU5TTihDMl9vcm4sIlBkND1vcihQdDQsIVBzNCkiLEFUVFJJQlMoQV9BUkNIVjIsQV9DUlNMT1Qy MyksCisiUHJlZGljYXRlIE9SIE5PVCIsCit7UGRWPVB0ViB8ICh+UHNWKTt9KQorCisKKworCisK K1E2SU5TTihDNF9hbmRfYW5kLCJQZDQ9YW5kKFBzNCxhbmQoUHQ0LFB1NCkpIixBVFRSSUJTKEFf Q1JTTE9UMjMpLAorIkNvbXBvdW5kIEFuZC1BbmQiLCB7IFBkViA9IFBzViAmIFB0ViAmIFB1Vjsg fSkKKworUTZJTlNOKEM0X2FuZF9vciwiUGQ0PWFuZChQczQsb3IoUHQ0LFB1NCkpIixBVFRSSUJT KEFfQ1JTTE9UMjMpLAorIkNvbXBvdW5kIEFuZC1PciIsIHsgUGRWID0gUHNWICYgIChQdFYgfCBQ dVYpOyB9KQorCitRNklOU04oQzRfb3JfYW5kLCJQZDQ9b3IoUHM0LGFuZChQdDQsUHU0KSkiLEFU VFJJQlMoQV9DUlNMT1QyMyksCisiQ29tcG91bmQgT3ItQW5kIiwgeyBQZFYgPSBQc1YgfCAoUHRW ICYgUHVWKTsgfSkKKworUTZJTlNOKEM0X29yX29yLCJQZDQ9b3IoUHM0LG9yKFB0NCxQdTQpKSIs QVRUUklCUyhBX0NSU0xPVDIzKSwKKyJDb21wb3VuZCBPci1PciIsIHsgUGRWID0gUHNWIHwgUHRW IHwgUHVWOyB9KQorCisKKworUTZJTlNOKEM0X2FuZF9hbmRuLCJQZDQ9YW5kKFBzNCxhbmQoUHQ0 LCFQdTQpKSIsQVRUUklCUyhBX0NSU0xPVDIzKSwKKyJDb21wb3VuZCBBbmQtQW5kIiwgeyBQZFYg PSBQc1YgJiBQdFYgJiAoflB1Vik7IH0pCisKK1E2SU5TTihDNF9hbmRfb3JuLCJQZDQ9YW5kKFBz NCxvcihQdDQsIVB1NCkpIixBVFRSSUJTKEFfQ1JTTE9UMjMpLAorIkNvbXBvdW5kIEFuZC1PciIs IHsgUGRWID0gUHNWICYgIChQdFYgfCAoflB1VikpOyB9KQorCitRNklOU04oQzRfb3JfYW5kbiwi UGQ0PW9yKFBzNCxhbmQoUHQ0LCFQdTQpKSIsQVRUUklCUyhBX0NSU0xPVDIzKSwKKyJDb21wb3Vu ZCBPci1BbmQiLCB7IFBkViA9IFBzViB8IChQdFYgJiAoflB1VikpOyB9KQorCitRNklOU04oQzRf b3Jfb3JuLCJQZDQ9b3IoUHM0LG9yKFB0NCwhUHU0KSkiLEFUVFJJQlMoQV9DUlNMT1QyMyksCisi Q29tcG91bmQgT3ItT3IiLCB7IFBkViA9IFBzViB8IFB0ViB8ICh+UHVWKTsgfSkKKworCitRNklO U04oQzJfYW55OCwiUGQ0PWFueTgoUHM0KSIsQVRUUklCUyhBX0NSU0xPVDIzKSwKKyJMb2dpY2Fs IEFOWSBvZiBsb3cgOCBwcmVkaWNhdGUgYml0cyIsCit7IFBzViA/IChQZFY9MHhmZikgOiAoUGRW PTB4MDApOyB9KQorCitRNklOU04oQzJfYWxsOCwiUGQ0PWFsbDgoUHM0KSIsQVRUUklCUyhBX0NS U0xPVDIzKSwKKyJMb2dpY2FsIEFMTCBvZiBsb3cgOCBwcmVkaWNhdGUgYml0cyIsCit7IChQc1Y9 PTB4ZmYpID8gKFBkVj0weGZmKSA6IChQZFY9MHgwMCk7IH0pCisKK1E2SU5TTihDMl92aXRwYWNr LCJSZDMyPXZpdHBhY2soUHM0LFB0NCkiLEFUVFJJQlMoKSwKKyJQYWNrIHRoZSBvZGQgYW5kIGV2 ZW4gYml0cyBvZiB0d28gcHJlZGljYXRlIHJlZ2lzdGVycyIsCit7IFJkViA9IChQc1YmMHg1NSkg fCAoUHRWJjB4QUEpOyB9KQorCisvKiBNdXggaW5zdHJ1Y3Rpb25zICovCisKK1E2SU5TTihDMl9t dXgsIlJkMzI9bXV4KFB1NCxSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiU2NhbGFyIE1VWCIsCit7 IChmTFNCT0xEKFB1VikpID8gKFJkVj1Sc1YpOihSZFY9UnRWKTsgfSkKKworCitRNklOU04oQzJf Y21vdmVuZXdpdCwiaWYgKFB1NC5uZXcpIFJkMzI9I3MxMiIsQVRUUklCUyhBX0FSQ0hWMiksCisi U2NhbGFyIGNvbmRpdGlvbmFsIG1vdmUiLAoreyBmSU1NRVhUKHNpVik7IGlmIChmTFNCTkVXKFB1 TikpIFJkVj1zaVY7IGVsc2UgQ0FOQ0VMO30pCisKK1E2SU5TTihDMl9jbW92ZW5ld2lmLCJpZiAo IVB1NC5uZXcpIFJkMzI9I3MxMiIsQVRUUklCUyhBX0FSQ0hWMiksCisiU2NhbGFyIGNvbmRpdGlv bmFsIG1vdmUiLAoreyBmSU1NRVhUKHNpVik7IGlmIChmTFNCTkVXTk9UKFB1TikpIFJkVj1zaVY7 IGVsc2UgQ0FOQ0VMO30pCisKK1E2SU5TTihDMl9jbW92ZWl0LCJpZiAoUHU0KSBSZDMyPSNzMTIi LEFUVFJJQlMoQV9BUkNIVjIpLAorIlNjYWxhciBjb25kaXRpb25hbCBtb3ZlIiwKK3sgZklNTUVY VChzaVYpOyBpZiAoZkxTQk9MRChQdVYpKSBSZFY9c2lWOyBlbHNlIENBTkNFTDt9KQorCitRNklO U04oQzJfY21vdmVpZiwiaWYgKCFQdTQpIFJkMzI9I3MxMiIsQVRUUklCUyhBX0FSQ0hWMiksCisi U2NhbGFyIGNvbmRpdGlvbmFsIG1vdmUiLAoreyBmSU1NRVhUKHNpVik7IGlmIChmTFNCT0xETk9U KFB1VikpIFJkVj1zaVY7IGVsc2UgQ0FOQ0VMO30pCisKKworCitRNklOU04oQzJfY2NvbWJpbmV3 bmV3dCwiaWYgKFB1NC5uZXcpIFJkZDMyPWNvbWJpbmUoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FS Q0hWMiksCisiQ29uZGl0aW9uYWxseSBjb21iaW5lIHR3byB3b3JkcyBpbnRvIGEgcmVnaXN0ZXIg cGFpciIsCit7IGlmIChmTFNCTkVXKFB1TikpIHsKKyAgICBmU0VUV09SRCgwLFJkZFYsUnRWKTsK KyAgICBmU0VUV09SRCgxLFJkZFYsUnNWKTsKKyAgfSBlbHNlIHtDQU5DRUw7fQorfSkKKworUTZJ TlNOKEMyX2Njb21iaW5ld25ld2YsImlmICghUHU0Lm5ldykgUmRkMzI9Y29tYmluZShSczMyLFJ0 MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb25kaXRpb25hbGx5IGNvbWJpbmUgdHdvIHdvcmRz IGludG8gYSByZWdpc3RlciBwYWlyIiwKK3sgaWYgKGZMU0JORVdOT1QoUHVOKSkgeworICAgIGZT RVRXT1JEKDAsUmRkVixSdFYpOworICAgIGZTRVRXT1JEKDEsUmRkVixSc1YpOworICB9IGVsc2Ug e0NBTkNFTDt9Cit9KQorCitRNklOU04oQzJfY2NvbWJpbmV3dCwiaWYgKFB1NCkgUmRkMzI9Y29t YmluZShSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb25kaXRpb25hbGx5IGNvbWJp bmUgdHdvIHdvcmRzIGludG8gYSByZWdpc3RlciBwYWlyIiwKK3sgaWYgKGZMU0JPTEQoUHVWKSkg eworICAgIGZTRVRXT1JEKDAsUmRkVixSdFYpOworICAgIGZTRVRXT1JEKDEsUmRkVixSc1YpOwor ICB9IGVsc2Uge0NBTkNFTDt9Cit9KQorCitRNklOU04oQzJfY2NvbWJpbmV3ZiwiaWYgKCFQdTQp IFJkZDMyPWNvbWJpbmUoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiQ29uZGl0aW9u YWxseSBjb21iaW5lIHR3byB3b3JkcyBpbnRvIGEgcmVnaXN0ZXIgcGFpciIsCit7IGlmIChmTFNC T0xETk9UKFB1VikpIHsKKyAgICBmU0VUV09SRCgwLFJkZFYsUnRWKTsKKyAgICBmU0VUV09SRCgx LFJkZFYsUnNWKTsKKyAgfSBlbHNlIHtDQU5DRUw7fQorfSkKKworCisKK1E2SU5TTihDMl9tdXhp aSwiUmQzMj1tdXgoUHU0LCNzOCwjUzgpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJTY2FsYXIgTVVY IGltbWVkaWF0ZXMiLAoreyBmSU1NRVhUKHNpVik7IChmTFNCT0xEKFB1VikpID8gKFJkVj1zaVYp OihSZFY9U2lWKTsgfSkKKworCisKK1E2SU5TTihDMl9tdXhpciwiUmQzMj1tdXgoUHU0LFJzMzIs I3M4KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiU2NhbGFyIE1VWCByZWdpc3RlciBpbW1lZGlhdGUi LAoreyBmSU1NRVhUKHNpVik7IChmTFNCT0xEKFB1VikpID8gKFJkVj1Sc1YpOihSZFY9c2lWKTsg fSkKKworCitRNklOU04oQzJfbXV4cmksIlJkMzI9bXV4KFB1NCwjczgsUnMzMikiLEFUVFJJQlMo QV9BUkNIVjIpLAorIlNjYWxhciBNVVggcmVnaXN0ZXIgaW1tZWRpYXRlIiwKK3sgZklNTUVYVChz aVYpOyAoZkxTQk9MRChQdVYpKSA/IChSZFY9c2lWKTooUmRWPVJzVik7IH0pCisKKworCitRNklO U04oQzJfdm11eCwiUmRkMzI9dm11eChQdTQsUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiVmVj dG9yIE1VWCIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsK KwkJZlNFVEJZVEUoaSxSZGRWLChmR0VUQklUKGksUHVWKT8oZkdFVEJZVEUoaSxSc3NWKSk6KGZH RVRCWVRFKGksUnR0VikpKSk7CisJfQorfSkKKworUTZJTlNOKEMyX21hc2ssIlJkZDMyPW1hc2so UHQ0KSIsQVRUUklCUygpLAorIlZlY3RvciBNYXNrIEdlbmVyYXRpb24iLAoreworCWZISURFKGlu dCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkViwoZkdF VEJJVChpLFB0Vik/KDB4ZmYpOigweDAwKSkpOworCX0KK30pCisKKy8qIFZDTVAgKi8KKworUTZJ TlNOKEEyX3ZjbXBiZXEsIlBkND12Y21wYi5lcShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJD b21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZv ciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJZlNFVEJJVChpLFBkViwoZkdFVEJZVEUoaSxSc3NW KSA9PSBmR0VUQllURShpLFJ0dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZXFpLCJQ ZDQ9dmNtcGIuZXEoUnNzMzIsI3U4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2Yg dHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkr KykgeworCQlmU0VUQklUKGksUGRWLChmR0VUVUJZVEUoaSxSc3NWKSA9PSB1aVYpKTsKKwl9Cit9 KQorCitRNklOU04oQTRfdmNtcGJlcV9hbnksIlBkND1hbnk4KHZjbXBiLmVxKFJzczMyLFJ0dDMy KSkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJ ZkhJREUoaW50IGk7KQorCVBkViA9IDA7CisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlp ZiAoZkdFVEJZVEUoaSxSc3NWKSA9PSBmR0VUQllURShpLFJ0dFYpKSBQZFYgPSAweGZmOworCX0K K30pCisKK1E2SU5TTihBNl92Y21wYmVxX25vdGFueSwiUGQ0PSFhbnk4KHZjbXBiLmVxKFJzczMy LFJ0dDMyKSkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIs Cit7CisJZkhJREUoaW50IGk7KQorCVBkViA9IDA7CisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykg eworCQlpZiAoZkdFVEJZVEUoaSxSc3NWKSA9PSBmR0VUQllURShpLFJ0dFYpKSBQZFYgPSAweGZm OworCX0KKwlQZFYgPSB+UGRWOworfSkKKworUTZJTlNOKEEyX3ZjbXBiZ3R1LCJQZDQ9dmNtcGIu Z3R1KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZl Y3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewor CQlmU0VUQklUKGksUGRWLChmR0VUVUJZVEUoaSxSc3NWKSA+IGZHRVRVQllURShpLFJ0dFYpKSk7 CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZ3R1aSwiUGQ0PXZjbXBiLmd0dShSc3MzMiwjdTcp IixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZI SURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCSVQoaSxQZFYs KGZHRVRVQllURShpLFJzc1YpID4gdWlWKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZ3Qs IlBkND12Y21wYi5ndChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRz IG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4 OyBpKyspIHsKKwkJZlNFVEJJVChpLFBkViwoZkdFVEJZVEUoaSxSc3NWKSA+IGZHRVRCWVRFKGks UnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTRfdmNtcGJndGksIlBkND12Y21wYi5ndChSc3Mz MiwjczgpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAor eworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCSVQo aSxQZFYsKGZHRVRCWVRFKGksUnNzVikgPiBzaVYpKTsKKwl9Cit9KQorCisKKworUTZJTlNOKEE0 X2NtcGJlcSwiUGQ0PWNtcGIuZXEoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgYnl0 ZXMgIiwKK3sKKwlQZFY9ZjhCSVRTT0YoZkdFVEJZVEUoMCxSc1YpID09IGZHRVRCWVRFKDAsUnRW KSk7Cit9KQorCitRNklOU04oQTRfY21wYmVxaSwiUGQ0PWNtcGIuZXEoUnMzMiwjdTgpIixBVFRS SUJTKCksCisiQ29tcGFyZSBieXRlcyAiLAoreworCVBkVj1mOEJJVFNPRihmR0VUVUJZVEUoMCxS c1YpID09IHVpVik7Cit9KQorCitRNklOU04oQTRfY21wYmd0dSwiUGQ0PWNtcGIuZ3R1KFJzMzIs UnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGJ5dGVzICIsCit7CisJUGRWPWY4QklUU09GKGZH RVRVQllURSgwLFJzVikgPiBmR0VUVUJZVEUoMCxSdFYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBi Z3R1aSwiUGQ0PWNtcGIuZ3R1KFJzMzIsI3U3KSIsQVRUUklCUygpLAorIkNvbXBhcmUgYnl0ZXMg IiwKK3sKKwlmSU1NRVhUKHVpVik7CisJUGRWPWY4QklUU09GKGZHRVRVQllURSgwLFJzVikgPiBm Q0FTVDR1KHVpVikpOworfSkKKworUTZJTlNOKEE0X2NtcGJndCwiUGQ0PWNtcGIuZ3QoUnMzMixS dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgYnl0ZXMgIiwKK3sKKwlQZFY9ZjhCSVRTT0YoZkdF VEJZVEUoMCxSc1YpID4gZkdFVEJZVEUoMCxSdFYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBiZ3Rp LCJQZDQ9Y21wYi5ndChSczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGJ5dGVzICIsCit7 CisJUGRWPWY4QklUU09GKGZHRVRCWVRFKDAsUnNWKSA+IHNpVik7Cit9KQorCitRNklOU04oQTJf dmNtcGhlcSwiUGQ0PXZjbXBoLmVxKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUg ZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0g MDsgaSA8IDQ7IGkrKykgeworCQlmU0VUQklUKGkqMixQZFYsICAoZkdFVEhBTEYoaSxSc3NWKSA9 PSBmR0VUSEFMRihpLFJ0dFYpKSk7CisJCWZTRVRCSVQoaSoyKzEsUGRWLChmR0VUSEFMRihpLFJz c1YpID09IGZHRVRIQUxGKGksUnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmNtcGhndCwi UGQ0PXZjbXBoLmd0KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMg b2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgeworCQlmU0VUQklUKGkqMiwgIFBkViwgIChmR0VUSEFMRihpLFJzc1YpID4gZkdFVEhB TEYoaSxSdHRWKSkpOworCQlmU0VUQklUKGkqMisxLFBkViwgIChmR0VUSEFMRihpLFJzc1YpID4g ZkdFVEhBTEYoaSxSdHRWKSkpOworCX0KK30pCisKK1E2SU5TTihBMl92Y21waGd0dSwiUGQ0PXZj bXBoLmd0dShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3 byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKysp IHsKKwkJZlNFVEJJVChpKjIsICBQZFYsICAoZkdFVFVIQUxGKGksUnNzVikgPiBmR0VUVUhBTEYo aSxSdHRWKSkpOworCQlmU0VUQklUKGkqMisxLFBkViwgIChmR0VUVUhBTEYoaSxSc3NWKSA+IGZH RVRVSEFMRihpLFJ0dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBoZXFpLCJQZDQ9dmNt cGguZXEoUnNzMzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZl Y3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewor CQlmU0VUQklUKGkqMixQZFYsICAoZkdFVEhBTEYoaSxSc3NWKSA9PSBzaVYpKTsKKwkJZlNFVEJJ VChpKjIrMSxQZFYsKGZHRVRIQUxGKGksUnNzVikgPT0gc2lWKSk7CisJfQorfSkKKworUTZJTlNO KEE0X3ZjbXBoZ3RpLCJQZDQ9dmNtcGguZ3QoUnNzMzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBh cmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChp ID0gMDsgaSA8IDQ7IGkrKykgeworCQlmU0VUQklUKGkqMiwgIFBkViwgIChmR0VUSEFMRihpLFJz c1YpID4gc2lWKSk7CisJCWZTRVRCSVQoaSoyKzEsUGRWLCAgKGZHRVRIQUxGKGksUnNzVikgPiBz aVYpKTsKKwl9Cit9KQorCisKK1E2SU5TTihBNF92Y21waGd0dWksIlBkND12Y21waC5ndHUoUnNz MzIsI3U3KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwK K3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlmU0VUQklU KGkqMiwgIFBkViwgIChmR0VUVUhBTEYoaSxSc3NWKSA+IHVpVikpOworCQlmU0VUQklUKGkqMisx LFBkViwgIChmR0VUVUhBTEYoaSxSc3NWKSA+IHVpVikpOworCX0KK30pCisKK1E2SU5TTihBNF9j bXBoZXEsIlBkND1jbXBoLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGhhbGZ3 b3JkcyAiLAoreworCVBkVj1mOEJJVFNPRihmR0VUSEFMRigwLFJzVikgPT0gZkdFVEhBTEYoMCxS dFYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBoZ3QsIlBkND1jbXBoLmd0KFJzMzIsUnQzMikiLEFU VFJJQlMoKSwKKyJDb21wYXJlIGhhbGZ3b3JkcyAiLAoreworCVBkVj1mOEJJVFNPRihmR0VUSEFM RigwLFJzVikgPiBmR0VUSEFMRigwLFJ0VikpOworfSkKKworUTZJTlNOKEE0X2NtcGhndHUsIlBk ND1jbXBoLmd0dShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBoYWxmd29yZHMgIiwK K3sKKwlQZFY9ZjhCSVRTT0YoZkdFVFVIQUxGKDAsUnNWKSA+IGZHRVRVSEFMRigwLFJ0VikpOwor fSkKKworUTZJTlNOKEE0X2NtcGhlcWksIlBkND1jbXBoLmVxKFJzMzIsI3M4KSIsQVRUUklCUygp LAorIkNvbXBhcmUgaGFsZndvcmRzICIsCit7CisJZklNTUVYVChzaVYpOworCVBkVj1mOEJJVFNP RihmR0VUSEFMRigwLFJzVikgPT0gc2lWKTsKK30pCisKK1E2SU5TTihBNF9jbXBoZ3RpLCJQZDQ9 Y21waC5ndChSczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGhhbGZ3b3JkcyAiLAorewor CWZJTU1FWFQoc2lWKTsKKwlQZFY9ZjhCSVRTT0YoZkdFVEhBTEYoMCxSc1YpID4gc2lWKTsKK30p CisKK1E2SU5TTihBNF9jbXBoZ3R1aSwiUGQ0PWNtcGguZ3R1KFJzMzIsI3U3KSIsQVRUUklCUygp LAorIkNvbXBhcmUgaGFsZndvcmRzICIsCit7CisJZklNTUVYVCh1aVYpOworCVBkVj1mOEJJVFNP RihmR0VUVUhBTEYoMCxSc1YpID4gZkNBU1Q0dSh1aVYpKTsKK30pCisKK1E2SU5TTihBMl92Y21w d2VxLCJQZDQ9dmNtcHcuZXEoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVt ZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZTRVRCSVRTKDMsMCxQZFYsKGZHRVRXT1JEKDAs UnNzVik9PWZHRVRXT1JEKDAsUnR0VikpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChmR0VUV09SRCgx LFJzc1YpPT1mR0VUV09SRCgxLFJ0dFYpKSk7Cit9KQorCitRNklOU04oQTJfdmNtcHdndCwiUGQ0 PXZjbXB3Lmd0KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2Yg dHdvIHZlY3RvcnMgIiwKK3sKKwlmU0VUQklUUygzLDAsUGRWLChmR0VUV09SRCgwLFJzc1YpPmZH RVRXT1JEKDAsUnR0VikpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChmR0VUV09SRCgxLFJzc1YpPmZH RVRXT1JEKDEsUnR0VikpKTsKK30pCisKK1E2SU5TTihBMl92Y21wd2d0dSwiUGQ0PXZjbXB3Lmd0 dShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0 b3JzICIsCit7CisJZlNFVEJJVFMoMywwLFBkViwoZkdFVFVXT1JEKDAsUnNzVik+ZkdFVFVXT1JE KDAsUnR0VikpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChmR0VUVVdPUkQoMSxSc3NWKT5mR0VUVVdP UkQoMSxSdHRWKSkpOworfSkKKworUTZJTlNOKEE0X3ZjbXB3ZXFpLCJQZDQ9dmNtcHcuZXEoUnNz MzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwK K3sKKwlmU0VUQklUUygzLDAsUGRWLChmR0VUV09SRCgwLFJzc1YpPT1zaVYpKTsKKwlmU0VUQklU Uyg3LDQsUGRWLChmR0VUV09SRCgxLFJzc1YpPT1zaVYpKTsKK30pCisKK1E2SU5TTihBNF92Y21w d2d0aSwiUGQ0PXZjbXB3Lmd0KFJzczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1l bnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZlNFVEJJVFMoMywwLFBkViwoZkdFVFdPUkQoMCxS c3NWKT5zaVYpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChmR0VUV09SRCgxLFJzc1YpPnNpVikpOwor fSkKKworUTZJTlNOKEE0X3ZjbXB3Z3R1aSwiUGQ0PXZjbXB3Lmd0dShSc3MzMiwjdTcpIixBVFRS SUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZTRVRCSVRT KDMsMCxQZFYsKGZHRVRVV09SRCgwLFJzc1YpPmZDQVNUNHUodWlWKSkpOworCWZTRVRCSVRTKDcs NCxQZFYsKGZHRVRVV09SRCgxLFJzc1YpPmZDQVNUNHUodWlWKSkpOworfSkKKworUTZJTlNOKEE0 X2JvdW5kc2NoZWNrX2hpLCJQZDQ9Ym91bmRzY2hlY2soUnNzMzIsUnR0MzIpOnJhdzpoaSIsQVRU UklCUygpLAorIkRldGVjdCBpZiBhIHJlZ2lzdGVyIGlzIHdpdGhpbiBib3VuZHMiLAoreworCWZI SURFKHNpemU0dV90IHNyYzspCisJc3JjID0gZkdFVFVXT1JEKDEsUnNzVik7CisJUGRWID0gZjhC SVRTT0YoKGZDQVNUNHUoc3JjKSA+PSBmR0VUVVdPUkQoMCxSdHRWKSkgJiYgKGZDQVNUNHUoc3Jj KSA8IGZHRVRVV09SRCgxLFJ0dFYpKSk7Cit9KQorCitRNklOU04oQTRfYm91bmRzY2hlY2tfbG8s IlBkND1ib3VuZHNjaGVjayhSc3MzMixSdHQzMik6cmF3OmxvIixBVFRSSUJTKCksCisiRGV0ZWN0 IGlmIGEgcmVnaXN0ZXIgaXMgd2l0aGluIGJvdW5kcyIsCit7CisJZkhJREUoc2l6ZTR1X3Qgc3Jj OykKKwlzcmMgPSBmR0VUVVdPUkQoMCxSc3NWKTsKKwlQZFYgPSBmOEJJVFNPRigoZkNBU1Q0dShz cmMpID49IGZHRVRVV09SRCgwLFJ0dFYpKSAmJiAoZkNBU1Q0dShzcmMpIDwgZkdFVFVXT1JEKDEs UnR0VikpKTsKK30pCisKK1E2SU5TTihBNF90bGJtYXRjaCwiUGQ0PXRsYm1hdGNoKFJzczMyLFJ0 MzIpIixBVFRSSUJTKCksCisiRGV0ZWN0IGlmIGEgVkEvQVNJRCBtYXRjaGVzIGEgVExCIGVudHJ5 IiwKK3sKKwlmSElERShzaXplNHVfdCBUTEJISTsgc2l6ZTR1X3QgVExCTE87IHNpemU0dV90IE1B U0s7IHNpemU0dV90IFNJWkU7KQorCU1BU0sgPSAweDA3ZmZmZmZmOworCVRMQkxPID0gZkdFVFVX T1JEKDAsUnNzVik7CisJVExCSEkgPSBmR0VUVVdPUkQoMSxSc3NWKTsKKwlTSVpFID0gZk1JTig2 LGZDTDFfNCh+ZkJSRVZfNChUTEJMTykpKTsKKwlNQVNLICY9ICgweGZmZmZmZmZmIDw8IDIqU0la RSk7CisJUGRWID0gZjhCSVRTT0YoZkdFVEJJVCgzMSxUTEJISSkgJiYgKChUTEJISSAmIE1BU0sp ID09IChSdFYgJiBNQVNLKSkpOworfSkKKworUTZJTlNOKEMyX3RmcnByLCJSZDMyPVBzNCIsQVRU UklCUygpLAorIlRyYW5zZmVyIHByZWRpY2F0ZSB0byBnZW5lcmFsIHJlZ2lzdGVyIiwgeyBSZFYg PSBmWlhUTig4LDMyLFBzVik7IH0pCisKK1E2SU5TTihDMl90ZnJycCwiUGQ0PVJzMzIiLEFUVFJJ QlMoKSwKKyJUcmFuc2ZlciBnZW5lcmFsIHJlZ2lzdGVyIHRvIFByZWRpY2F0ZSIsIHsgUGRWID0g ZkdFVFVCWVRFKDAsUnNWKTsgfSkKKworUTZJTlNOKEM0X2Zhc3Rjb3JuZXI5LCJQZDQ9ZmFzdGNv cm5lcjkoUHM0LFB0NCkiLEFUVFJJQlMoQV9DUlNMT1QyMyksCisiRGV0ZXJtaW5lIHdoZXRoZXIg dGhlIHByZWRpY2F0ZSBzb3VyY2VzIGRlZmluZSBhIGNvcm5lciIsCit7CisJZkhJREUoc2l6ZTR1 X3QgdG1wID0gMDsgc2l6ZTR1X3QgaTspCisJZlNFVEhBTEYoMCx0bXAsKFBzVjw8OCl8UHRWKTsK KwlmU0VUSEFMRigxLHRtcCwoUHNWPDw4KXxQdFYpOworCWZvciAoaSA9IDE7IGkgPCA5OyBpKysp IHsKKwkJdG1wICY9IHRtcCA+PiAxOworCX0KKwlQZFYgPSBmOEJJVFNPRih0bXAgIT0gMCk7Cit9 KQorCitRNklOU04oQzRfZmFzdGNvcm5lcjlfbm90LCJQZDQ9IWZhc3Rjb3JuZXI5KFBzNCxQdDQp IixBVFRSSUJTKEFfQ1JTTE9UMjMpLAorIkRldGVybWluZSB3aGV0aGVyIHRoZSBwcmVkaWNhdGUg c291cmNlcyBkZWZpbmUgYSBjb3JuZXIiLAoreworCWZISURFKHNpemU0dV90IHRtcCA9IDA7IHNp emU0dV90IGk7KQorCWZTRVRIQUxGKDAsdG1wLChQc1Y8PDgpfFB0Vik7CisJZlNFVEhBTEYoMSx0 bXAsKFBzVjw8OCl8UHRWKTsKKwlmb3IgKGkgPSAxOyBpIDwgOTsgaSsrKSB7CisJCXRtcCAmPSB0 bXAgPj4gMTsKKwl9CisJUGRWID0gZjhCSVRTT0YodG1wID09IDApOworfSkKKworCmRpZmYgLS1n aXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9mbG9hdC5pZGVmIGIvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvZmxvYXQuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l NDkzY2U2Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvZmxvYXQu aWRlZgpAQCAtMCwwICsxLDMxMyBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIwIFF1 YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor ICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKgorICogRmxv YXRpbmctUG9pbnQgSW5zdHJ1Y3Rpb25zCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBTY2FsYXIgRlAJCQkgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworUTZJTlNOKEYyX3NmYWRkLCJSZDMyPXNmYWRkKFJzMzIsUnQz MikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBBZGQiLAoreyBSZFY9ZlVORkxPQVQoZkZM T0FUKFJzVikrZkZMT0FUKFJ0VikpO30pCisKK1E2SU5TTihGMl9zZnN1YiwiUmQzMj1zZnN1YihS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgU3VidHJhY3QiLAoreyBSZFY9 ZlVORkxPQVQoZkZMT0FUKFJzViktZkZMT0FUKFJ0VikpO30pCisKK1E2SU5TTihGMl9zZm1weSwi UmQzMj1zZm1weShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgTXVsdGlw bHkiLAoreyBSZFY9ZlVORkxPQVQoZlNGTVBZKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSk7fSkK KworUTZJTlNOKEYyX3NmZm1hLCJSeDMyKz1zZm1weShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisi RmxvYXRpbmctUG9pbnQgRnVzZWQgTXVsdGlwbHkgQWRkIiwKK3sgUnhWPWZVTkZMT0FUKGZGTUFG KGZGTE9BVChSc1YpLGZGTE9BVChSdFYpLGZGTE9BVChSeFYpKSk7fSkKKworUTZJTlNOKEYyX3Nm Zm1hX3NjLCJSeDMyKz1zZm1weShSczMyLFJ0MzIsUHU0KTpzY2FsZSIsQVRUUklCUygpLAorIkZs b2F0aW5nLVBvaW50IEZ1c2VkIE11bHRpcGx5IEFkZCB3LyBBZGRpdGlvbmFsIFNjYWxpbmcgKDIq KlB1KSIsCit7CisJZkhJREUoc2l6ZTRzX3QgdG1wOykKKwlmQ0hFQ0tTRk5BTjMoUnhWLFJ4VixS c1YsUnRWKTsKKwl0bXA9ZlVORkxPQVQoZkZNQUZYKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpLGZG TE9BVChSeFYpLFB1VikpOworCWlmICghKChmRkxPQVQoUnhWKSA9PSAwLjApICYmIGZJU1pFUk9Q Uk9EKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSkpIFJ4ViA9IHRtcDsKK30pCisKK1E2SU5TTihG Ml9zZmZtcywiUngzMi09c2ZtcHkoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBv aW50IEZ1c2VkIE11bHRpcGx5IEFkZCIsCit7IFJ4Vj1mVU5GTE9BVChmRk1BRigtZkZMT0FUKFJz ViksZkZMT0FUKFJ0ViksZkZMT0FUKFJ4VikpKTsgfSkKKworUTZJTlNOKEYyX3NmZm1hX2xpYiwi UngzMis9c2ZtcHkoUnMzMixSdDMyKTpsaWIiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBG dXNlZCBNdWx0aXBseSBBZGQgZm9yIExpYnJhcnkgUm91dGluZXMiLAoreyBmRlBTRVRST1VORF9O RUFSRVNUKCk7IGZISURFKGludCBpbmZpbnA7IGludCBpbmZtaW51c2luZjsgc2l6ZTRzX3QgdG1w OykKKwlpbmZtaW51c2luZiA9ICgoaXNpbmYoZkZMT0FUKFJ4VikpKSAmJgorCQkoZklTSU5GUFJP RChmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpICYmCisJCShmR0VUQklUKDMxLFJzViBeIFJ4ViBe IFJ0VikgIT0gMCkpOworCWluZmlucCA9IChpc2luZihmRkxPQVQoUnhWKSkpIHx8IChpc2luZihm RkxPQVQoUnRWKSkpIHx8IChpc2luZihmRkxPQVQoUnNWKSkpOworCWZDSEVDS1NGTkFOMyhSeFYs UnhWLFJzVixSdFYpOworCXRtcD1mVU5GTE9BVChmRk1BRihmRkxPQVQoUnNWKSxmRkxPQVQoUnRW KSxmRkxPQVQoUnhWKSkpOworCWlmICghKChmRkxPQVQoUnhWKSA9PSAwLjApICYmIGZJU1pFUk9Q Uk9EKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSkpIFJ4ViA9IHRtcDsKKwlmRlBDQU5DRUxGTEFH UygpOworCWlmIChpc2luZihmRkxPQVQoUnhWKSkgJiYgIWluZmlucCkgUnhWID0gUnhWIC0gMTsK KwlpZiAoaW5mbWludXNpbmYpIFJ4ViA9IDA7Cit9KQorCitRNklOU04oRjJfc2ZmbXNfbGliLCJS eDMyLT1zZm1weShSczMyLFJ0MzIpOmxpYiIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IEZ1 c2VkIE11bHRpcGx5IEFkZCBmb3IgTGlicmFyeSBSb3V0aW5lcyIsCit7IGZGUFNFVFJPVU5EX05F QVJFU1QoKTsgZkhJREUoaW50IGluZmlucDsgaW50IGluZm1pbnVzaW5mOyBzaXplNHNfdCB0bXA7 KQorCWluZm1pbnVzaW5mID0gKChpc2luZihmRkxPQVQoUnhWKSkpICYmCisJCShmSVNJTkZQUk9E KGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSkgJiYKKwkJKGZHRVRCSVQoMzEsUnNWIF4gUnhWIF4g UnRWKSA9PSAwKSk7CisJaW5maW5wID0gKGlzaW5mKGZGTE9BVChSeFYpKSkgfHwgKGlzaW5mKGZG TE9BVChSdFYpKSkgfHwgKGlzaW5mKGZGTE9BVChSc1YpKSk7CisJZkNIRUNLU0ZOQU4zKFJ4VixS eFYsUnNWLFJ0Vik7CisJdG1wPWZVTkZMT0FUKGZGTUFGKC1mRkxPQVQoUnNWKSxmRkxPQVQoUnRW KSxmRkxPQVQoUnhWKSkpOworCWlmICghKChmRkxPQVQoUnhWKSA9PSAwLjApICYmIGZJU1pFUk9Q Uk9EKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSkpIFJ4ViA9IHRtcDsKKwlmRlBDQU5DRUxGTEFH UygpOworCWlmIChpc2luZihmRkxPQVQoUnhWKSkgJiYgIWluZmlucCkgUnhWID0gUnhWIC0gMTsK KwlpZiAoaW5mbWludXNpbmYpIFJ4ViA9IDA7Cit9KQorCisKK1E2SU5TTihGMl9zZmNtcGVxLCJQ ZDQ9c2ZjbXAuZXEoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nIFBvaW50IENvbXBh cmUgZm9yIEVxdWFsIiwKK3tQZFY9ZjhCSVRTT0YoZkZMT0FUKFJzVik9PWZGTE9BVChSdFYpKTt9 KQorCitRNklOU04oRjJfc2ZjbXBndCwiUGQ0PXNmY21wLmd0KFJzMzIsUnQzMikiLEFUVFJJQlMo KSwKKyJGbG9hdGluZy1Qb2ludCBDb21wYXJlIGZvciBHcmVhdGVyIFRoYW4iLAore1BkVj1mOEJJ VFNPRihmRkxPQVQoUnNWKT5mRkxPQVQoUnRWKSk7fSkKKworLyogY21wZ2UgaXMgbm90IHRoZSBz YW1lIGFzICFjbXBndChzd2Fwb3BzKSBpbiBJRUVFICovCisKK1E2SU5TTihGMl9zZmNtcGdlLCJQ ZDQ9c2ZjbXAuZ2UoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IENvbXBh cmUgZm9yIEdyZWF0ZXIgVGhhbiAvIEVxdWFsIFRvIiwKK3tQZFY9ZjhCSVRTT0YoZkZMT0FUKFJz Vik+PWZGTE9BVChSdFYpKTt9KQorCisvKiBFdmVyeW9uZSBzZWVtcyB0byBoYXZlIHRoaXMuLi4g Ki8KKworUTZJTlNOKEYyX3NmY21wdW8sIlBkND1zZmNtcC51byhSczMyLFJ0MzIpIixBVFRSSUJT KCksCisiRmxvYXRpbmctUG9pbnQgQ29tcGFyZSBmb3IgVW5vcmRlcmVkIiwKK3tQZFY9ZjhCSVRT T0YoaXN1bm9yZGVyZWQoZkZMT0FUKFJzViksZkZMT0FUKFJ0VikpKTt9KQorCisKK1E2SU5TTihG Ml9zZm1heCwiUmQzMj1zZm1heChSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiTWF4aW11bSBvZiBG bG9hdGluZy1Qb2ludCB2YWx1ZXMiLAoreyBSZFYgPSBmVU5GTE9BVChmU0ZfTUFYKGZGTE9BVChS c1YpLGZGTE9BVChSdFYpKSk7IH0pCisKK1E2SU5TTihGMl9zZm1pbiwiUmQzMj1zZm1pbihSczMy LFJ0MzIpIixBVFRSSUJTKCksCisiTWluaW11bSBvZiBGbG9hdGluZy1Qb2ludCB2YWx1ZXMiLAor eyBSZFYgPSBmVU5GTE9BVChmU0ZfTUlOKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpKSk7IH0pCisK KworUTZJTlNOKEYyX3NmY2xhc3MsIlBkND1zZmNsYXNzKFJzMzIsI3U1KSIsQVRUUklCUygpLAor IkNsYXNzaWZ5IEZsb2F0aW5nLVBvaW50IFZhbHVlIiwKK3sKKwlmSElERShpbnQgY2xhc3M7KQor CVBkViA9IDA7CisJY2xhc3MgPSBmcGNsYXNzaWZ5KGZGTE9BVChSc1YpKTsKKwkvKiBJcyB0aGUg dmFsdWUgemVybz8gKi8KKwlpZiAoZkdFVEJJVCgwLHVpVikgJiYgKGNsYXNzID09IEZQX1pFUk8p KSBQZFYgPSAweGZmOworCWlmIChmR0VUQklUKDEsdWlWKSAmJiAoY2xhc3MgPT0gRlBfTk9STUFM KSkgUGRWID0gMHhmZjsKKwlpZiAoZkdFVEJJVCgyLHVpVikgJiYgKGNsYXNzID09IEZQX1NVQk5P Uk1BTCkpIFBkViA9IDB4ZmY7CisJaWYgKGZHRVRCSVQoMyx1aVYpICYmIChjbGFzcyA9PSBGUF9J TkZJTklURSkpIFBkViA9IDB4ZmY7CisJaWYgKGZHRVRCSVQoNCx1aVYpICYmIChjbGFzcyA9PSBG UF9OQU4pKSBQZFYgPSAweGZmOworCWZGUENBTkNFTEZMQUdTKCk7Cit9KQorCisvKiBSYW5nZTog Ky8tICgxLjAgLi4gMSsoNjMvNjQpKSAqIDIqKigtNiAuLiArOSkgKi8KKy8qIE1vcmUgaW1tZWRp YXRlIGJpdHMgc2hvdWxkIHByb2JhYmx5IGJlIHVzZWQgZm9yIG1vcmUgcHJlY2lzaW9uPyAqLwor CitRNklOU04oRjJfc2ZpbW1fcCwiUmQzMj1zZm1ha2UoI3UxMCk6cG9zIixBVFRSSUJTKCksCisi TWFrZSBGbG9hdGluZyBQb2ludCBWYWx1ZSIsCit7CisJUmRWID0gKDEyNyAtIDYpIDw8IDIzOwor CVJkViArPSB1aVYgPDwgMTc7Cit9KQorCitRNklOU04oRjJfc2ZpbW1fbiwiUmQzMj1zZm1ha2Uo I3UxMCk6bmVnIixBVFRSSUJTKCksCisiTWFrZSBGbG9hdGluZyBQb2ludCBWYWx1ZSIsCit7CisJ UmRWID0gKDEyNyAtIDYpIDw8IDIzOworCVJkViArPSAodWlWIDw8IDE3KTsKKwlSZFYgfD0gKDEg PDwgMzEpOworfSkKKworCitRNklOU04oRjJfc2ZmaXh1cG4sIlJkMzI9c2ZmaXh1cG4oUnMzMixS dDMyKSIsQVRUUklCUygpLAorIkZpeCBVcCBOdW1lcmF0b3IiLAoreworCWZISURFKGludCBhZGp1 c3Q7KQorCWZTRl9SRUNJUF9DT01NT04oUnNWLFJ0VixSZFYsYWRqdXN0KTsKKwlSZFYgPSBSc1Y7 Cit9KQorCitRNklOU04oRjJfc2ZmaXh1cGQsIlJkMzI9c2ZmaXh1cGQoUnMzMixSdDMyKSIsQVRU UklCUygpLAorIkZpeCBVcCBEZW5vbWluYXRvciIsCit7CisJZkhJREUoaW50IGFkanVzdDspCisJ ZlNGX1JFQ0lQX0NPTU1PTihSc1YsUnRWLFJkVixhZGp1c3QpOworCVJkViA9IFJ0VjsKK30pCisK K1E2SU5TTihGMl9zZmZpeHVwciwiUmQzMj1zZmZpeHVwcihSczMyKSIsQVRUUklCUygpLAorIkZp eCBVcCBSYWRpY2FuZCIsCit7CisJZkhJREUoaW50IGFkanVzdDspCisJZlNGX0lOVlNRUlRfQ09N TU9OKFJzVixSZFYsYWRqdXN0KTsKKwlSZFYgPSBSc1Y7Cit9KQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNjYWxhciBEUAkJCSAqLworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCitRNklOU04oRjJfZGZhZGQsIlJkZDMyPWRmYWRk KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IEFkZCIsCit7IFJkZFY9 ZlVORE9VQkxFKGZET1VCTEUoUnNzVikrZkRPVUJMRShSdHRWKSk7fSkKKworUTZJTlNOKEYyX2Rm c3ViLCJSZGQzMj1kZnN1YihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2lu dCBTdWJ0cmFjdCIsCit7IFJkZFY9ZlVORE9VQkxFKGZET1VCTEUoUnNzViktZkRPVUJMRShSdHRW KSk7fSkKKworUTZJTlNOKEYyX2RmbWF4LCJSZGQzMj1kZm1heChSc3MzMixSdHQzMikiLEFUVFJJ QlMoKSwKKyJNYXhpbXVtIG9mIEZsb2F0aW5nLVBvaW50IHZhbHVlcyIsCit7IFJkZFYgPSBmVU5E T1VCTEUoZkRGX01BWChmRE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0VikpKTsgfSkKKworUTZJTlNO KEYyX2RmbWluLCJSZGQzMj1kZm1pbihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJNaW5pbXVt IG9mIEZsb2F0aW5nLVBvaW50IHZhbHVlcyIsCit7IFJkZFYgPSBmVU5ET1VCTEUoZkRGX01JTihm RE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0VikpKTsgfSkKKworUTZJTlNOKEYyX2RmbXB5Zml4LCJS ZGQzMj1kZm1weWZpeChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJGaXggVXAgTXVsdGlwbGlj YW5kIGZvciBNdWx0aXBsaWNhdGlvbiIsCit7CisJaWYgKGZERl9JU0RFTk9STShSc3NWKSAmJiBm REZfSVNCSUcoUnR0VikgJiYgZkRGX0lTTk9STUFMKFJ0dFYpKSBSZGRWID0gZlVORE9VQkxFKGZE T1VCTEUoUnNzVikgKiAweDEuMHA1Mik7CisJZWxzZSBpZiAoZkRGX0lTREVOT1JNKFJ0dFYpICYm IGZERl9JU0JJRyhSc3NWKSAmJiBmREZfSVNOT1JNQUwoUnNzVikpIFJkZFYgPSBmVU5ET1VCTEUo ZkRPVUJMRShSc3NWKSAqIDB4MS4wcC01Mik7CisJZWxzZSBSZGRWID0gUnNzVjsKK30pCisKK1E2 SU5TTihGMl9kZm1weWxsLCJSZGQzMj1kZm1weWxsKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAor Ik11bHRpcGx5IGxvdypsb3cgYW5kIHNoaWZ0IG9mZiBsb3cgMzIgYml0cyBpbnRvIHN0aWNreSAo aW4gTVNCKSIsCit7CisJZkhJREUoc2l6ZTh1X3QgcHJvZDspCisJcHJvZCA9IGZNUFkzMlVVKGZH RVRVV09SRCgwLFJzc1YpLGZHRVRVV09SRCgwLFJ0dFYpKTsKKwlSZGRWID0gKHByb2QgPj4gMzIp IDw8IDE7CisJaWYgKGZHRVRVV09SRCgwLHByb2QpICE9IDApIGZTRVRCSVQoMCxSZGRWLDEpOwor fSkKKworUTZJTlNOKEYyX2RmbXB5bGgsIlJ4eDMyKz1kZm1weWxoKFJzczMyLFJ0dDMyKSIsQVRU UklCUygpLAorIk11bHRpcGx5IGxvdypoaWdoIGFuZCBhY2N1bXVsYXRlIiwKK3sKKwlSeHhWICs9 IChmR0VUVVdPUkQoMCxSc3NWKSAqICgweDAwMTAwMDAwIHwgZlpYVE4oMjAsNjQsZkdFVFVXT1JE KDEsUnR0VikpKSkgPDwgMTsKK30pCisKK1E2SU5TTihGMl9kZm1weWhoLCJSeHgzMis9ZGZtcHlo aChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJNdWx0aXBseSBoaWdoKmhpZ2ggYW5kIGFjY3Vt dWxhdGUgd2l0aCBMKkggdmFsdWUiLAoreworCVJ4eFYgPSBmVU5ET1VCTEUoZkRGX01QWV9ISChm RE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0ViksUnh4VikpOworfSkKKworCisKK1E2SU5TTihGMl9k ZmNtcGVxLCJQZDQ9ZGZjbXAuZXEoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmcg UG9pbnQgQ29tcGFyZSBmb3IgRXF1YWwiLAore1BkVj1mOEJJVFNPRihmRE9VQkxFKFJzc1YpPT1m RE9VQkxFKFJ0dFYpKTt9KQorCitRNklOU04oRjJfZGZjbXBndCwiUGQ0PWRmY21wLmd0KFJzczMy LFJ0dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IENvbXBhcmUgZm9yIEdyZWF0ZXIg VGhhbiIsCit7UGRWPWY4QklUU09GKGZET1VCTEUoUnNzVik+ZkRPVUJMRShSdHRWKSk7fSkKKwor CisvKiBjbXBnZSBpcyBub3QgdGhlIHNhbWUgYXMgIWNtcGd0KHN3YXBvcHMpIGluIElFRUUgKi8K KworUTZJTlNOKEYyX2RmY21wZ2UsIlBkND1kZmNtcC5nZShSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyJGbG9hdGluZy1Qb2ludCBDb21wYXJlIGZvciBHcmVhdGVyIFRoYW4gLyBFcXVhbCBUbyIs Cit7UGRWPWY4QklUU09GKGZET1VCTEUoUnNzVik+PWZET1VCTEUoUnR0VikpO30pCisKKy8qIEV2 ZXJ5b25lIHNlZW1zIHRvIGhhdmUgdGhpcy4uLiAqLworCitRNklOU04oRjJfZGZjbXB1bywiUGQ0 PWRmY21wLnVvKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IENvbXBh cmUgZm9yIFVub3JkZXJlZCIsCit7UGRWPWY4QklUU09GKGlzdW5vcmRlcmVkKGZET1VCTEUoUnNz ViksZkRPVUJMRShSdHRWKSkpO30pCisKKworUTZJTlNOKEYyX2RmY2xhc3MsIlBkND1kZmNsYXNz KFJzczMyLCN1NSkiLEFUVFJJQlMoKSwKKyJDbGFzc2lmeSBGbG9hdGluZy1Qb2ludCBWYWx1ZSIs Cit7CisJZkhJREUoaW50IGNsYXNzOykKKwlQZFYgPSAwOworCWNsYXNzID0gZnBjbGFzc2lmeShm RE9VQkxFKFJzc1YpKTsKKwkvKiBJcyB0aGUgdmFsdWUgemVybz8gKi8KKwlpZiAoZkdFVEJJVCgw LHVpVikgJiYgKGNsYXNzID09IEZQX1pFUk8pKSBQZFYgPSAweGZmOworCWlmIChmR0VUQklUKDEs dWlWKSAmJiAoY2xhc3MgPT0gRlBfTk9STUFMKSkgUGRWID0gMHhmZjsKKwlpZiAoZkdFVEJJVCgy LHVpVikgJiYgKGNsYXNzID09IEZQX1NVQk5PUk1BTCkpIFBkViA9IDB4ZmY7CisJaWYgKGZHRVRC SVQoMyx1aVYpICYmIChjbGFzcyA9PSBGUF9JTkZJTklURSkpIFBkViA9IDB4ZmY7CisJaWYgKGZH RVRCSVQoNCx1aVYpICYmIChjbGFzcyA9PSBGUF9OQU4pKSBQZFYgPSAweGZmOworCWZGUENBTkNF TEZMQUdTKCk7Cit9KQorCisKKy8qIFJhbmdlOiArLy0gKDEuMCAuLiAxKyg2My82NCkpICogMioq KC02IC4uICs5KSAqLworLyogTW9yZSBpbW1lZGlhdGUgYml0cyBzaG91bGQgcHJvYmFibHkgYmUg dXNlZCBmb3IgbW9yZSBwcmVjaXNpb24/ICovCisKK1E2SU5TTihGMl9kZmltbV9wLCJSZGQzMj1k Zm1ha2UoI3UxMCk6cG9zIixBVFRSSUJTKCksCisiTWFrZSBGbG9hdGluZyBQb2ludCBWYWx1ZSIs Cit7CisJUmRkViA9ICgxMDIzVUxMIC0gNikgPDwgNTI7CisJUmRkViArPSAoZkhJREUoKHNpemU4 dV90KSl1aVYpIDw8IDQ2OworfSkKKworUTZJTlNOKEYyX2RmaW1tX24sIlJkZDMyPWRmbWFrZSgj dTEwKTpuZWciLEFUVFJJQlMoKSwKKyJNYWtlIEZsb2F0aW5nIFBvaW50IFZhbHVlIiwKK3sKKwlS ZGRWID0gKDEwMjNVTEwgLSA2KSA8PCA1MjsKKwlSZGRWICs9IChmSElERSgoc2l6ZTh1X3QpKXVp VikgPDwgNDY7CisJUmRkViB8PSAoKDFVTEwpIDw8IDYzKTsKK30pCisKKworLyogQ09OVkVSU0lP TiAqLworCisjZGVmaW5lIENPTlZFUlQoVEFHLERFU1QsREVTVFYsU1JDLFNSQ1YsT1VUQ0FTVCxP VVRUWVBFLElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKKyAgICBRNklO U04oRjJfY29udl8jI1RBRyMjTU9ERVRBRywjREVTVCI9Y29udmVydF8iI1RBRyIoIiNTUkMiKSIj TU9ERVNZTixBVFRSSUJTKCksIFwKKyAgICAiRmxvYXRpbmcgcG9pbnQgZm9ybWF0IGNvbnZlcnNp b24iLCBcCisgICAgeyBNT0RFQkVIIERFU1RWID0gT1VUQ0FTVChjb252XyMjSU5UWVBFIyNfdG9f IyNPVVRUWVBFKElOQ0FTVChTUkNWKSkpOyB9KQorCitDT05WRVJUKHNmMmRmLFJkZDMyLFJkZFYs UnMzMixSc1YsZlVORE9VQkxFLGRmLGZGTE9BVCxzZiwsLCkKK0NPTlZFUlQoZGYyc2YsUmQzMixS ZFYsUnNzMzIsUnNzVixmVU5GTE9BVCxzZixmRE9VQkxFLGRmLCwsKQorCisjZGVmaW5lIEFMTElO VERTVChUQUdTVEFSVCxTUkMsU1JDVixJTkNBU1QsSU5UWVBFLE1PREVUQUcsTU9ERVNZTixNT0RF QkVIKSBcCitDT05WRVJUKFRBR1NUQVJUIyN1dyxSZDMyLFJkVixTUkMsU1JDVixmQ0FTVDR1LDR1 LElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0NPTlZFUlQoVEFHU1RB UlQjI3csUmQzMixSZFYsU1JDLFNSQ1YsZkNBU1Q0cyw0cyxJTkNBU1QsSU5UWVBFLE1PREVUQUcs TU9ERVNZTixNT0RFQkVIKSBcCitDT05WRVJUKFRBR1NUQVJUIyN1ZCxSZGQzMixSZGRWLFNSQyxT UkNWLGZDQVNUOHUsOHUsSU5DQVNULElOVFlQRSxNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkgXAor Q09OVkVSVChUQUdTVEFSVCMjZCxSZGQzMixSZGRWLFNSQyxTUkNWLGZDQVNUOHMsOHMsSU5DQVNU LElOVFlQRSxNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkKKworI2RlZmluZSBBTExGUERTVChUQUdT VEFSVCxTUkMsU1JDVixJTkNBU1QsSU5UWVBFLE1PREVUQUcsTU9ERVNZTixNT0RFQkVIKSBcCitD T05WRVJUKFRBR1NUQVJUIyNzZixSZDMyLFJkVixTUkMsU1JDVixmVU5GTE9BVCxzZixJTkNBU1Qs SU5UWVBFLE1PREVUQUcsTU9ERVNZTixNT0RFQkVIKSBcCitDT05WRVJUKFRBR1NUQVJUIyNkZixS ZGQzMixSZGRWLFNSQyxTUkNWLGZVTkRPVUJMRSxkZixJTkNBU1QsSU5UWVBFLE1PREVUQUcsTU9E RVNZTixNT0RFQkVIKQorCisjZGVmaW5lIEFMTElOVFNSQyhHRU4sTU9ERVRBRyxNT0RFU1lOLE1P REVCRUgpIFwKK0dFTih1dyMjMixSczMyLFJzVixmQ0FTVDR1LDR1LE1PREVUQUcsTU9ERVNZTixN T0RFQkVIKSBcCitHRU4odyMjMixSczMyLFJzVixmQ0FTVDRzLDRzLE1PREVUQUcsTU9ERVNZTixN T0RFQkVIKSBcCitHRU4odWQjIzIsUnNzMzIsUnNzVixmQ0FTVDh1LDh1LE1PREVUQUcsTU9ERVNZ TixNT0RFQkVIKSBcCitHRU4oZCMjMixSc3MzMixSc3NWLGZDQVNUOHMsOHMsTU9ERVRBRyxNT0RF U1lOLE1PREVCRUgpCisKKyNkZWZpbmUgQUxMRlBTUkMoR0VOLE1PREVUQUcsTU9ERVNZTixNT0RF QkVIKSBcCitHRU4oc2YjIzIsUnMzMixSc1YsZkZMT0FULHNmLE1PREVUQUcsTU9ERVNZTixNT0RF QkVIKSBcCitHRU4oZGYjIzIsUnNzMzIsUnNzVixmRE9VQkxFLGRmLE1PREVUQUcsTU9ERVNZTixN T0RFQkVIKQorCitBTExJTlRTUkMoQUxMRlBEU1QsLCwpCitBTExGUFNSQyhBTExJTlREU1QsLCwp CitBTExGUFNSQyhBTExJTlREU1QsX2Nob3AsOmNob3AsZkZQU0VUUk9VTkRfQ0hPUCgpOykKKwpk aWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbGRzdC5pZGVmIGIvdGFyZ2V0L2hl eGFnb24vaW1wb3J0ZWQvbGRzdC5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjhlY2M0MDgKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9s ZHN0LmlkZWYKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAy MCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor ICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAq IExvYWQgYW5kIFN0b3JlIGluc3RydWN0aW9uIGRlZmluaXRpb25zCisgKi8KKworLyogVGhlIHNl dCBvZiBhZGRyZXNzaW5nIG1vZGVzIHN0YW5kYXJkIHRvIGFsbCBMb2FkIGluc3RydWN0aW9ucyAq LworI2RlZmluZSBTVERfTERfQU1PREVTKFRBRyxPUEVSLERFU0NSLEFUVFJJQixTSEZULFNFTUFO VElDUyxTQ0FMRSlcCitRNklOU04oTDJfIyNUQUcjI19pbywgIE9QRVIiKFJzMzIrI3MxMToiU0hG VCIpIiwgICAgICAgICAgQVRUUklCLERFU0NSLHtmSU1NRVhUKHNpVik7IGZFQV9SSShSc1Ysc2lW KTsgU0VNQU5USUNTOyB9KVwKK1E2SU5TTihMNF8jI1RBRyMjX3VyLCAgT1BFUiIoUnQzMjw8I3Uy KyNVNikiLCAgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVChVaVYpOyBmRUFf SVJzKFVpVixSdFYsdWlWKTsgU0VNQU5USUNTO30pXAorUTZJTlNOKEw0XyMjVEFHIyNfYXAsICBP UEVSIihSZTMyPSNVNikiLCAgICAgICAgICAgICAgICAgIEFUVFJJQixERVNDUix7Zk1VU1RfSU1N RVhUKFVpVik7IGZFQV9JTU0oVWlWKTsgU0VNQU5USUNTOyBSZVY9VWlWOyB9KVwKK1E2SU5TTihM Ml8jI1RBRyMjX3ByLCAgT1BFUiIoUngzMisrTXUyKSIsICAgICAgICAgICAgICAgICBBVFRSSUIs REVTQ1Ise2ZFQV9SRUcoUnhWKTsgZlBNX00oUnhWLE11Vik7IFNFTUFOVElDUzt9KVwKK1E2SU5T TihMMl8jI1RBRyMjX3BpLCAgT1BFUiIoUngzMisrI3M0OiJTSEZUIikiLCAgICAgICAgICBBVFRS SUIsREVTQ1Ise2ZFQV9SRUcoUnhWKTsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9KVwKKwor LyogVGhlIHNldCBvZiAzMi1iaXQgbG9hZCBpbnN0cnVjdGlvbnMgKi8KK1NURF9MRF9BTU9ERVMo bG9hZHJ1YiwiUmQzMj1tZW11YiIsIkxvYWQgVW5zaWduZWQgQnl0ZSIsQVRUUklCUyhBX0xPQUQp LCIwIixmTE9BRCgxLDEsdSxFQSxSZFYpLDApCitTVERfTERfQU1PREVTKGxvYWRyYiwgIlJkMzI9 bWVtYiIsICJMb2FkIHNpZ25lZCBCeXRlIixBVFRSSUJTKEFfTE9BRCksIjAiLGZMT0FEKDEsMSxz LEVBLFJkViksMCkKK1NURF9MRF9BTU9ERVMobG9hZHJ1aCwiUmQzMj1tZW11aCIsIkxvYWQgdW5z aWduZWQgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfTE9BRCksIjEiLGZMT0FEKDEsMix1LEVBLFJk ViksMSkKK1NURF9MRF9BTU9ERVMobG9hZHJoLCAiUmQzMj1tZW1oIiwgIkxvYWQgc2lnbmVkIEhh bGYgaW50ZWdlciIsQVRUUklCUyhBX0xPQUQpLCIxIixmTE9BRCgxLDIscyxFQSxSZFYpLDEpCitT VERfTERfQU1PREVTKGxvYWRyaSwgIlJkMzI9bWVtdyIsICJMb2FkIFdvcmQiLEFUVFJJQlMoQV9M T0FEKSwiMiIsZkxPQUQoMSw0LHUsRUEsUmRWKSwyKQorU1REX0xEX0FNT0RFUyhsb2FkcmQsICJS ZGQzMj1tZW1kIiwiTG9hZCBEb3VibGUgaW50ZWdlciIsQVRUUklCUyhBX0xPQUQpLCIzIixmTE9B RCgxLDgsdSxFQSxSZGRWKSwzKQorCisvKiBUaGUgc2V0IG9mIGFkZHJlc3NpbmcgbW9kZXMgc3Rh bmRhcmQgdG8gYWxsIFN0b3JlIGluc3RydWN0aW9ucyAqLworI2RlZmluZSBTVERfU1RfQU1PREVT KFRBRyxERVNULE9QRVIsREVTQ1IsQVRUUklCLFNIRlQsU0VNQU5USUNTLFNDQUxFKVwKK1E2SU5T TihTMl8jI1RBRyMjX2lvLCAgT1BFUiIoUnMzMisjczExOiJTSEZUIik9IkRFU1QsICAgICBBVFRS SUIsREVTQ1Ise2ZJTU1FWFQoc2lWKTsgZkVBX1JJKFJzVixzaVYpOyBTRU1BTlRJQ1M7IH0pXAor UTZJTlNOKFMyXyMjVEFHIyNfcGksICBPUEVSIihSeDMyKysjczQ6IlNIRlQiKT0iREVTVCwgICAg IEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTOyB9 KVwKK1E2SU5TTihTNF8jI1RBRyMjX2FwLCAgT1BFUiIoUmUzMj0jVTYpPSJERVNULCAgICAgICAg ICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVChVaVYpOyBmRUFfSU1NKFVpVik7IFNFTUFO VElDUzsgUmVWPVVpVjsgfSlcCitRNklOU04oUzJfIyNUQUcjI19wciwgIE9QRVIiKFJ4MzIrK011 Mik9IkRFU1QsICAgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9NKFJ4 VixNdVYpOyBTRU1BTlRJQ1M7IH0pXAorUTZJTlNOKFM0XyMjVEFHIyNfdXIsICBPUEVSIihSdTMy PDwjdTIrI1U2KT0iREVTVCwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVChV aVYpOyBmRUFfSVJzKFVpVixSdVYsdWlWKTsgU0VNQU5USUNTO30pXAorCisKKy8qIFRoZSBzZXQg b2YgMzItYml0IHN0b3JlIGluc3RydWN0aW9ucyAqLworU1REX1NUX0FNT0RFUyhzdG9yZXJiLCAi UnQzMiIsICJtZW1iIiwiU3RvcmUgQnl0ZSIsQVRUUklCUyhBX1NUT1JFKSwiMCIsZlNUT1JFKDEs MSxFQSxmR0VUQllURSgwLFJ0VikpLDApCitTVERfU1RfQU1PREVTKHN0b3JlcmgsICJSdDMyIiwg Im1lbWgiLCJTdG9yZSBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9TVE9SRSksIjEiLGZTVE9SRSgx LDIsRUEsZkdFVEhBTEYoMCxSdFYpKSwxKQorU1REX1NUX0FNT0RFUyhzdG9yZXJmLCAiUnQuSDMy IiwgIm1lbWgiLCJTdG9yZSBVcHBlciBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9TVE9SRSksIjEi LGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMSxSdFYpKSwxKQorU1REX1NUX0FNT0RFUyhzdG9yZXJp LCAiUnQzMiIsICJtZW13IiwiU3RvcmUgV29yZCIsQVRUUklCUyhBX1NUT1JFKSwiMiIsZlNUT1JF KDEsNCxFQSxSdFYpLDIpCitTVERfU1RfQU1PREVTKHN0b3JlcmQsICJSdHQzMiIsIm1lbWQiLCJT dG9yZSBEb3VibGUgaW50ZWdlciIsQVRUUklCUyhBX1NUT1JFKSwiMyIsZlNUT1JFKDEsOCxFQSxS dHRWKSwzKQorU1REX1NUX0FNT0RFUyhzdG9yZXJpbmV3LCAiTnQ4Lm5ldyIsICJtZW13IiwiU3Rv cmUgV29yZCIsQVRUUklCUyhBX1NUT1JFKSwiMiIsZlNUT1JFKDEsNCxFQSxmTkVXUkVHX1NUKE50 TikpLDIpCitTVERfU1RfQU1PREVTKHN0b3JlcmJuZXcsICJOdDgubmV3IiwgIm1lbWIiLCJTdG9y ZSBCeXRlIixBVFRSSUJTKEFfU1RPUkUpLCIwIixmU1RPUkUoMSwxLEVBLGZHRVRCWVRFKDAsZk5F V1JFR19TVChOdE4pKSksMCkKK1NURF9TVF9BTU9ERVMoc3RvcmVyaG5ldywgIk50OC5uZXciLCAi bWVtaCIsIlN0b3JlIEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX1NUT1JFKSwiMSIsZlNUT1JFKDEs MixFQSxmR0VUSEFMRigwLGZORVdSRUdfU1QoTnROKSkpLDEpCisKKworUTZJTlNOKFMyX2FsbG9j ZnJhbWUsImFsbG9jZnJhbWUoUngzMiwjdTExOjMpOnJhdyIsIEFUVFJJQlMoQV9TVE9SRSxBX1JF U1RSSUNUX1NMT1QwT05MWSksICJBbGxvY2F0ZSBzdGFjayBmcmFtZSIsCit7IGZFQV9SSShSeFYs LTgpOyBmU1RPUkUoMSw4LEVBLGZGUkFNRV9TQ1JBTUJMRSgoZkNBU1Q4Xzh1KGZSRUFEX0xSKCkp IDw8IDMyKSB8IGZDQVNUNF80dShmUkVBRF9GUCgpKSkpOyBmV1JJVEVfRlAoRUEpOyBmRlJBTUVD SEVDSyhFQS11aVYsRUEpOyBSeFYgPSBFQS11aVY7IH0pCisKKyNkZWZpbmUgQV9SRVRVUk4gQV9S RVNUUklDVF9TTE9UME9OTFkKKworUTZJTlNOKEwyX2RlYWxsb2NmcmFtZSwiUmRkMzI9ZGVhbGxv Y2ZyYW1lKFJzMzIpOnJhdyIsIEFUVFJJQlMoQV9MT0FEKSwgIkRlYWxsb2NhdGUgc3RhY2sgZnJh bWUiLAoreyBmSElERShzaXplOHVfdCB0bXA7KSBmRUFfUkVHKFJzVik7CisJZkxPQUQoMSw4LHUs RUEsdG1wKTsKKwlSZGRWID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsKKwlmV1JJVEVfU1AoRUEr OCk7IH0pCisKK1E2SU5TTihMNF9yZXR1cm4sIlJkZDMyPWRlYWxsb2NfcmV0dXJuKFJzMzIpOnJh dyIsIEFUVFJJQlMoQV9KSU5ESVIsQV9MT0FELEFfUkVUVVJOKSwgIkRlYWxsb2NhdGUgc3RhY2sg ZnJhbWUgYW5kIHJldHVybiIsCit7IGZISURFKHNpemU4dV90IHRtcDspIGZFQV9SRUcoUnNWKTsK KwlmTE9BRCgxLDgsdSxFQSx0bXApOworCVJkZFYgPSBmRlJBTUVfVU5TQ1JBTUJMRSh0bXApOwor CWZXUklURV9TUChFQSs4KTsKKyAgICBmSlVNUFIoUkVHX0xSLGZHRVRXT1JEKDEsUmRkViksQ09G X1RZUEVfSlVNUFIpO30pCisKKyNkZWZpbmUgQ09ORFNFTShTUkNSRUcsU1RBTExCSVRTMCxTVEFM TEJJVFMxLFBSRURGVU5DLFBSRURBUkcsU1RBTExTUEVDLFBSRURDT05EKSBcCit7IFwKKwlmSElE RShzaXplOHVfdCB0bXA7KSBcCisJZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoUFJFREZVTkMjI1BS RURDT05EKFBSRURBUkcpLCxTVEFMTFNQRUMsU1RBTExCSVRTMCxTVEFMTEJJVFMxKTsgXAorCWZF QV9SRUcoU1JDUkVHKTsgXAorCWlmIChQUkVERlVOQyMjUFJFRENPTkQoUFJFREFSRykpIHsgXAor CQlmTE9BRCgxLDgsdSxFQSx0bXApOyBcCisJCVJkZFYgPSBmRlJBTUVfVU5TQ1JBTUJMRSh0bXAp OyBcCisJCWZXUklURV9TUChFQSs4KTsgXAorCQlmSlVNUFIoUkVHX0xSLGZHRVRXT1JEKDEsUmRk ViksQ09GX1RZUEVfSlVNUFIpOyBcCisJfSBlbHNlIHsgXAorCQlMT0FEX0NBTkNFTChFQSk7IFwK Kwl9IFwKK30KKworI2RlZmluZSBDT05EX1JFVFVSTl9URihURyxURzIsRE9UTkVXLFNUQUxMQklU UzAsU1RBTExCSVRTMSxTVEFMTFNQRUMsQVRUUklCUyxQUkVERlVOQyxQUkVEQVJHLFRfTlQpIFwK KwlRNklOU04oVEcjI190IyNURzIsImlmIChQdjQiRE9UTkVXIikgUmRkMzI9ZGVhbGxvY19yZXR1 cm4oUnMzMikiVF9OVCI6cmF3IixBVFRSSUJTLCJkZWFsbG9jYXRlIHN0YWNrIGZyYW1lIGFuZCBy ZXR1cm4iLCBcCisJCUNPTkRTRU0oUnNWLFNUQUxMQklUUzAsU1RBTExCSVRTMSxQUkVERlVOQyxQ UkVEQVJHLFNUQUxMU1BFQywpKSBcCisJUTZJTlNOKFRHIyNfZiMjVEcyLCJpZiAoIVB2NCJET1RO RVciKSBSZGQzMj1kZWFsbG9jX3JldHVybihSczMyKSJUX05UIjpyYXciLEFUVFJJQlMsImRlYWxs b2NhdGUgc3RhY2sgZnJhbWUgYW5kIHJldHVybiIsIFwKKwkJQ09ORFNFTShSc1YsU1RBTExCSVRT MCxTVEFMTEJJVFMxLFBSRURGVU5DIyNOT1QsUFJFREFSRyxTVEFMTFNQRUMsKSkKKworI2RlZmlu ZSBDT05EX1JFVFVSTl9ORVcoVEcsU1RBTExCSVRTMCxTVEFMTEJJVFMxLEFUVFJJQlMpIFwKKwlD T05EX1JFVFVSTl9URihURyxuZXdfcHQsIi5uZXciLDEyLDAsU1BFQ1VMQVRFX1RBS0VOLEFUVFJJ QlMsZkxTQk5FVyxQdk4sIjp0IikgXAorCUNPTkRfUkVUVVJOX1RGKFRHLG5ld19wbnQsIi5uZXci LDEyLDAsU1BFQ1VMQVRFX05PVF9UQUtFTixBVFRSSUJTLGZMU0JORVcsUHZOLCI6bnQiKSBcCisK KyNkZWZpbmUgUkVUVVJOX0FUVFJJQlMgQV9MT0FELEFfUkVUVVJOCisKK0NPTkRfUkVUVVJOX1RG KEw0X3JldHVybiwsLDcsMCxTUEVDVUxBVEVfTk9UX1RBS0VOLEFUVFJJQlMoUkVUVVJOX0FUVFJJ QlMsQV9KSU5ESVJPTEQpLGZMU0JPTEQsUHZWLCkKK0NPTkRfUkVUVVJOX05FVyhMNF9yZXR1cm4s MTIsMCxBVFRSSUJTKFJFVFVSTl9BVFRSSUJTLEFfSklORElSTkVXKSkKKworCisKKworUTZJTlNO KEwyX2xvYWR3X2xvY2tlZCwiUmQzMj1tZW13X2xvY2tlZChSczMyKSIsIEFUVFJJQlMoQV9MT0FE LEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwgIkxvYWQgd29yZCB3aXRoIGxvY2siLAoreyBmRUFfUkVH KFJzVik7IGZMT0FEX0xPQ0tFRCgxLDQsdSxFQSxSZFYpIH0pOworCisKK1E2SU5TTihTMl9zdG9y ZXdfbG9ja2VkLCJtZW13X2xvY2tlZChSczMyLFBkNCk9UnQzMiIsIEFUVFJJQlMoQV9TVE9SRSxB X1JFU1RSSUNUX1NMT1QwT05MWSksICJTdG9yZSB3b3JkIHdpdGggbG9jayIsCit7IGZFQV9SRUco UnNWKTsgZlNUT1JFX0xPQ0tFRCgxLDQsRUEsUnRWLFBkVikgfSk7CisKKworUTZJTlNOKEw0X2xv YWRkX2xvY2tlZCwiUmRkMzI9bWVtZF9sb2NrZWQoUnMzMikiLCBBVFRSSUJTKEFfTE9BRCxBX1JF U1RSSUNUX1NMT1QwT05MWSksICJMb2FkIGRvdWJsZSB3aXRoIGxvY2siLAoreyBmRUFfUkVHKFJz Vik7IGZMT0FEX0xPQ0tFRCgxLDgsdSxFQSxSZGRWKSB9KTsKKworUTZJTlNOKFM0X3N0b3JlZF9s b2NrZWQsIm1lbWRfbG9ja2VkKFJzMzIsUGQ0KT1SdHQzMiIsIEFUVFJJQlMoQV9TVE9SRSxBX1JF U1RSSUNUX1NMT1QwT05MWSksICJTdG9yZSB3b3JkIHdpdGggbG9jayIsCit7IGZFQV9SRUcoUnNW KTsgZlNUT1JFX0xPQ0tFRCgxLDgsRUEsUnR0VixQZFYpIH0pOworCisKKworCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVkIExEU1Qg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2Rl ZmluZSBTVERfUExEX0FNT0RFUyhUQUcsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTSEZUTlVNLFNF TUFOVElDUylcCitRNklOU04oTDRfIyNUQUcjI19yciwgIE9QRVIiKFJzMzIrUnQzMjw8I3UyKSIs ICAgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdFYsdWlWKTsgU0VNQU5USUNT O30pXAorUTZJTlNOKEwyX3AjI1RBRyMjdF9pbywgImlmIChQdDQpICJPUEVSIihSczMyKyN1Njoi U0hGVCIpIiwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVBX1JJKFJz Vix1aVYpOyBpZihmTFNCT0xEKFB0Vikpe1NFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVB KTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyN0X3BpLCAiaWYgKFB0NCkgIk9QRVIiKFJ4MzIrKyNz NDoiU0hGVCIpIiwgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBpZihmTFNC T0xEKFB0VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7TE9BRF9DQU5DRUwo RUEpO319KVwKK1E2SU5TTihMMl9wIyNUQUcjI2ZfaW8sICJpZiAoIVB0NCkgIk9QRVIiKFJzMzIr I3U2OiJTSEZUIikiLCAgICAgICAgICAgQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9S SShSc1YsdWlWKTsgaWYoZkxTQk9MRE5PVChQdFYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURf Q0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmX3BpLCAiaWYgKCFQdDQpICJPUEVS IihSeDMyKysjczQ6IlNIRlQiKSIsICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYp OyBpZihmTFNCT0xETk9UKFB0VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7 TE9BRF9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihMMl9wIyNUQUcjI3RuZXdfaW8sImlmIChQdDQu bmV3KSAiT1BFUiIoUnMzMisjdTY6IlNIRlQiKSIsQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7 IGZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JORVcoUHROKSkgIHsgU0VNQU5USUNTOyB9IGVsc2Ug e0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmbmV3X2lvLCJpZiAoIVB0 NC5uZXcpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpIixBVFRSSUIsREVTQ1Ise2ZJTU1FWFQodWlW KTsgZkVBX1JJKFJzVix1aVYpOyBpZiAoZkxTQk5FV05PVChQdE4pKSB7IFNFTUFOVElDUzsgfSBl bHNlIHtMT0FEX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjdF9yciwgImlmIChQ djQpICJPUEVSIihSczMyK1J0MzI8PCN1MikiLCAgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVB X1JScyhSc1YsUnRWLHVpVik7IGlmKGZMU0JPTEQoUHZWKSl7IFNFTUFOVElDUzt9IGVsc2Uge0xP QURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmX3JyLCAiaWYgKCFQdjQpICJP UEVSIihSczMyK1J0MzI8PCN1MikiLCAgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUlJzKFJz VixSdFYsdWlWKTsgaWYoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURf Q0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyN0bmV3X3JyLCJpZiAoUHY0Lm5ldykg Ik9QRVIiKFJzMzIrUnQzMjw8I3UyKSIsQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdFYsdWlW KTsgaWYgKGZMU0JORVcoUHZOKSkgIHsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVB KTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmbmV3X3JyLCJpZiAoIVB2NC5uZXcpICJPUEVSIihS czMyK1J0MzI8PCN1MikiLEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnRWLHVpVik7IGlmIChm TFNCTkVXTk9UKFB2TikpIHsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlc CitRNklOU04oTDJfcCMjVEFHIyN0bmV3X3BpLCAiaWYgKFB0NC5uZXcpICJPUEVSIihSeDMyKysj czQ6IlNIRlQiKSIsICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9SRUcoUnhWKTsgaWYoZkxT Qk5FVyhQdE4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VM KEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmbmV3X3BpLCAiaWYgKCFQdDQubmV3KSAiT1BF UiIoUngzMisrI3M0OiJTSEZUIikiLCAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9SRUcoUnhW KTsgaWYoZkxTQk5FV05PVChQdE4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9IGVsc2Ug e0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyN0X2FicywgImlmIChQdDQp ICJPUEVSIigjdTYpIiwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVCh1aVYp OyBmRUFfSU1NKHVpVik7IGlmKGZMU0JPTEQoUHRWKSl7IFNFTUFOVElDUzt9IGVsc2Uge0xPQURf Q0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmX2FicywgImlmICghUHQ0KSAiT1BF UiIoI3U2KSIsICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVCh1aVYpOyBmRUFf SU1NKHVpVik7IGlmKGZMU0JPTEROT1QoUHRWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NB TkNFTChFQSk7fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjdG5ld19hYnMsImlmIChQdDQubmV3KSAi T1BFUiIoI3U2KSIsQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQodWlWKTsgZkVBX0lNTSh1aVYp O2lmIChmTFNCTkVXKFB0TikpICB7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7 fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjZm5ld19hYnMsImlmICghUHQ0Lm5ldykgIk9QRVIiKCN1 NikiLEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKHVpVik7IGZFQV9JTU0odWlWKTtpZiAoZkxT Qk5FV05PVChQdE4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7fX0pCisK KworCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBwcmVkaWNhdGVkIGxvYWQgaW5zdHJ1Y3Rpb25zICov CitTVERfUExEX0FNT0RFUyhsb2FkcnViLCJSZDMyPW1lbXViIiwiTG9hZCBVbnNpZ25lZCBCeXRl IixBVFRSSUJTKEFfQVJDSFYyLEFfTE9BRCksIjAiLDAsZkxPQUQoMSwxLHUsRUEsUmRWKSkKK1NU RF9QTERfQU1PREVTKGxvYWRyYiwgIlJkMzI9bWVtYiIsICJMb2FkIHNpZ25lZCBCeXRlIixBVFRS SUJTKEFfQVJDSFYyLEFfTE9BRCksIjAiLDAsZkxPQUQoMSwxLHMsRUEsUmRWKSkKK1NURF9QTERf QU1PREVTKGxvYWRydWgsIlJkMzI9bWVtdWgiLCJMb2FkIHVuc2lnbmVkIEhhbGYgaW50ZWdlciIs QVRUUklCUyhBX0FSQ0hWMixBX0xPQUQpLCIxIiwxLGZMT0FEKDEsMix1LEVBLFJkVikpCitTVERf UExEX0FNT0RFUyhsb2FkcmgsICJSZDMyPW1lbWgiLCAiTG9hZCBzaWduZWQgSGFsZiBpbnRlZ2Vy IixBVFRSSUJTKEFfQVJDSFYyLEFfTE9BRCksIjEiLDEsZkxPQUQoMSwyLHMsRUEsUmRWKSkKK1NU RF9QTERfQU1PREVTKGxvYWRyaSwgIlJkMzI9bWVtdyIsICJMb2FkIFdvcmQiLEFUVFJJQlMoQV9B UkNIVjIsQV9MT0FEKSwiMiIsMixmTE9BRCgxLDQsdSxFQSxSZFYpKQorU1REX1BMRF9BTU9ERVMo bG9hZHJkLCAiUmRkMzI9bWVtZCIsIkxvYWQgRG91YmxlIGludGVnZXIiLEFUVFJJQlMoQV9BUkNI VjIsQV9MT0FEKSwiMyIsMyxmTE9BRCgxLDgsdSxFQSxSZGRWKSkKKworLyogVGhlIHNldCBvZiBh ZGRyZXNzaW5nIG1vZGVzIHN0YW5kYXJkIHRvIGFsbCBwcmVkaWNhdGVkIHN0b3JlIGluc3RydWN0 aW9ucyAqLworI2RlZmluZSBTVERfUFNUX0FNT0RFUyhUQUcsREVTVCxPUEVSLERFU0NSLEFUVFJJ QixTSEZULFNIRlROVU0sU0VNQU5USUNTKVwKK1E2SU5TTihTNF8jI1RBRyMjX3JyLCAgT1BFUiIo UnMzMitSdTMyPDwjdTIpPSJERVNULCAgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JScyhS c1YsUnVWLHVpVik7IFNFTUFOVElDUzt9KVwKK1E2SU5TTihTMl9wIyNUQUcjI3RfaW8sICJpZiAo UHY0KSAiT1BFUiIoUnMzMisjdTY6IlNIRlQiKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZklN TUVYVCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGlmIChmTFNCT0xEKFB2VikpeyBTRU1BTlRJQ1M7 IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzJfcCMjVEFHIyN0X3BpLCAi aWYgKFB2NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NS LHtmRUFfUkVHKFJ4Vik7IGlmIChmTFNCT0xEKFB2VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5U SUNTO30gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzJfcCMjVEFHIyNmX2lv LCAiaWYgKCFQdjQpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERF U0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JPTEROT1QoUHZWKSl7 IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihTMl9wIyNU QUcjI2ZfcGksICJpZiAoIVB2NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAg QVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGlmIChmTFNCT0xETk9UKFB2VikpeyBmUE1fSShS eFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04o UzRfcCMjVEFHIyN0X3JyLCAiaWYgKFB2NCkgIk9QRVIiKFJzMzIrUnUzMjw8I3UyKT0iREVTVCwg ICAgIEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnVWLHVpVik7IGlmIChmTFNCT0xEKFB2Vikp eyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMj VEFHIyNmX3JyLCAiaWYgKCFQdjQpICJPUEVSIihSczMyK1J1MzI8PCN1Mik9IkRFU1QsICAgICBB VFRSSUIsREVTQ1Ise2ZFQV9SUnMoUnNWLFJ1Vix1aVYpOyBpZiAoZkxTQk9MRE5PVChQdlYpKXsg U0VNQU5USUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFM0X3AjI1RB RyMjdG5ld19pbywiaWYgKFB2NC5uZXcpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULEFU VFJJQixERVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGlmICggZkxTQk5FVyhQ dk4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihT NF9wIyNUQUcjI2ZuZXdfaW8sImlmICghUHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIik9 IkRFU1QsQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgaWYgKGZM U0JORVdOT1QoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlc CitRNklOU04oUzRfcCMjVEFHIyN0bmV3X3JyLCJpZiAoUHY0Lm5ldykgIk9QRVIiKFJzMzIrUnUz Mjw8I3UyKT0iREVTVCxBVFRSSUIsREVTQ1Ise2ZFQV9SUnMoUnNWLFJ1Vix1aVYpOyBpZiAoIGZM U0JORVcoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitR NklOU04oUzRfcCMjVEFHIyNmbmV3X3JyLCJpZiAoIVB2NC5uZXcpICJPUEVSIihSczMyK1J1MzI8 PCN1Mik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdVYsdWlWKTsgaWYgKGZMU0JO RVdOT1QoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitR NklOU04oUzJfcCMjVEFHIyN0bmV3X3BpLCAiaWYgKFB2NC5uZXcpICJPUEVSIihSeDMyKysjczQ6 IlNIRlQiKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBpZiAoZkxTQk5F VyhQdk4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9IGVsc2Uge1NUT1JFX0NBTkNFTChF QSk7fX0pXAorUTZJTlNOKFMyX3AjI1RBRyMjZm5ld19waSwgImlmICghUHY0Lm5ldykgIk9QRVIi KFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7 IGlmIChmTFNCTkVXTk9UKFB2TikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7 U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMjVEFHIyN0X2FicywgImlmIChQdjQp ICJPUEVSIigjdTYpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQodWlWKTsg ZkVBX0lNTSh1aVYpOyBpZiAoZkxTQk9MRChQdlYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge1NUT1JF X0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFM0X3AjI1RBRyMjZl9hYnMsICJpZiAoIVB2NCkgIk9Q RVIiKCN1Nik9IkRFU1QsICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVCh1aVYpO2ZFQV9J TU0odWlWKTsgaWYgKGZMU0JPTEROT1QoUHZWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9D QU5DRUwoRUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI3RuZXdfYWJzLCJpZiAoUHY0Lm5ldykg Ik9QRVIiKCN1Nik9IkRFU1QsQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQodWlWKTtmRUFfSU1N KHVpVik7IGlmICggZkxTQk5FVyhQdk4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5D RUwoRUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI2ZuZXdfYWJzLCJpZiAoIVB2NC5uZXcpICJP UEVSIigjdTYpPSJERVNULEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKHVpVik7ZkVBX0lNTSh1 aVYpOyBpZiAoZkxTQk5FV05PVChQdk4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5D RUwoRUEpO319KQorCisKKworCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBwcmVkaWNhdGVkIHN0b3Jl IGluc3RydWN0aW9ucyAqLworU1REX1BTVF9BTU9ERVMoc3RvcmVyYiwiUnQzMiIsIm1lbWIiLCJT dG9yZSBCeXRlIixBVFRSSUJTKEFfQVJDSFYyLEFfU1RPUkUpLCIwIiwwLGZTVE9SRSgxLDEsRUEs ZkdFVEJZVEUoMCxSdFYpKSkKK1NURF9QU1RfQU1PREVTKHN0b3JlcmgsIlJ0MzIiLCJtZW1oIiwi U3RvcmUgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYyLEFfU1RPUkUpLCIxIiwxLGZTVE9S RSgxLDIsRUEsZkdFVEhBTEYoMCxSdFYpKSkKK1NURF9QU1RfQU1PREVTKHN0b3JlcmYsIlJ0Lkgz MiIsIm1lbWgiLCJTdG9yZSBVcHBlciBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9BUkNIVjIsQV9T VE9SRSksIjEiLDEsZlNUT1JFKDEsMixFQSxmR0VUSEFMRigxLFJ0VikpKQorU1REX1BTVF9BTU9E RVMoc3RvcmVyaSwiUnQzMiIsIm1lbXciLCJTdG9yZSBXb3JkIixBVFRSSUJTKEFfQVJDSFYyLEFf U1RPUkUpLCIyIiwyLGZTVE9SRSgxLDQsRUEsUnRWKSkKK1NURF9QU1RfQU1PREVTKHN0b3JlcmQs IlJ0dDMyIiwibWVtZCIsIlN0b3JlIERvdWJsZSBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYyLEFf U1RPUkUpLCIzIiwzLGZTVE9SRSgxLDgsRUEsUnR0VikpCitTVERfUFNUX0FNT0RFUyhzdG9yZXJp bmV3LCJOdDgubmV3IiwibWVtdyIsIlN0b3JlIFdvcmQiLEFUVFJJQlMoQV9BUkNIVjIsQV9TVE9S RSksIjIiLDIsZlNUT1JFKDEsNCxFQSxmTkVXUkVHX1NUKE50TikpKQorU1REX1BTVF9BTU9ERVMo c3RvcmVyYm5ldywiTnQ4Lm5ldyIsIm1lbWIiLCJTdG9yZSBCeXRlIixBVFRSSUJTKEFfQVJDSFYy LEFfU1RPUkUpLCIwIiwwLGZTVE9SRSgxLDEsRUEsZkdFVEJZVEUoMCxmTkVXUkVHX1NUKE50Tikp KSkKK1NURF9QU1RfQU1PREVTKHN0b3JlcmhuZXcsIk50OC5uZXciLCJtZW1oIiwiU3RvcmUgSGFs ZiBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYyLEFfU1RPUkUpLCIxIiwxLGZTVE9SRSgxLDIsRUEs ZkdFVEhBTEYoMCxmTkVXUkVHX1NUKE50TikpKSkKKworCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqLworLyogICAgICAgICAgICAgICAgICAgICAgIE1lbS1PcHMgKExvYWQtb3AtU3RvcmUpICAg ICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUaGUgc2V0IG9m IDMyLWJpdCBub24tcHJlZGljYXRlZCBtZW0tb3BzICovCisjZGVmaW5lIFNURF9NRU1PUF9BTU9E RVMoVEFHLE9QRVIsREVTQ1IsU0VNQU5USUNTKVwKK1E2SU5TTihMNF8jI1RBRyMjd19pbywgICJt ZW13KFJzMzIrI3U2OjIpIk9QRVIsICAgICBBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSxE RVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGZISURFKHNpemU0c190IHRtcDsp IGZMT0FEKDEsNCxzLEVBLHRtcCk7IFNFTUFOVElDUzsgIGZTVE9SRSgxLDQsRUEsdG1wKTsgfSlc CitRNklOU04oTDRfIyNUQUcjI2JfaW8sICAibWVtYihSczMyKyN1NjowKSJPUEVSLCAgICAgQVRU UklCUyhBX1JFU1RSSUNUX1NMT1QwT05MWSksREVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVBX1JJKFJz Vix1aVYpOyBmSElERShzaXplNHNfdCB0bXA7KSBmTE9BRCgxLDEscyxFQSx0bXApOyBTRU1BTlRJ Q1M7ICBmU1RPUkUoMSwxLEVBLHRtcCk7IH0pXAorUTZJTlNOKEw0XyMjVEFHIyNoX2lvLCAgIm1l bWgoUnMzMisjdTY6MSkiT1BFUiwgICAgIEFUVFJJQlMoQV9SRVNUUklDVF9TTE9UME9OTFkpLERF U0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgZkhJREUoc2l6ZTRzX3QgdG1wOykg ZkxPQUQoMSwyLHMsRUEsdG1wKTsgU0VNQU5USUNTOyAgZlNUT1JFKDEsMixFQSx0bXApOyB9KQor CisKKworU1REX01FTU9QX0FNT0RFUyhhZGRfbWVtb3AsICIrPVJ0MzIiLCAiQWRkIFJlZ2lzdGVy IHRvIE1lbW9yeSBXb3JkIiwgdG1wICs9IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMoc3ViX21lbW9w LCAiLT1SdDMyIiwgIlN1YiBSZWdpc3RlciBmcm9tIE1lbW9yeSBXb3JkIiwgdG1wIC09IFJ0VikK K1NURF9NRU1PUF9BTU9ERVMoYW5kX21lbW9wLCAiJj1SdDMyIiwgIkxvZ2ljYWwgQU5EIFJlZ2lz dGVyIHRvIE1lbW9yeSBXb3JkIiwgdG1wICY9IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMob3JfbWVt b3AsICJ8PVJ0MzIiLCAiTG9naWNhbCBPUiBSZWdpc3RlciB0byBNZW1vcnkgV29yZCIsIHRtcCB8 PSBSdFYpCisKKworU1REX01FTU9QX0FNT0RFUyhpYWRkX21lbW9wLCAiKz0jVTUiLCAiQWRkIElt bWVkaWF0ZSB0byBNZW1vcnkgV29yZCIsIHRtcCArPSBVaVYpCitTVERfTUVNT1BfQU1PREVTKGlz dWJfbWVtb3AsICItPSNVNSIsICJTdWIgSW1tZWRpYXRlIHRvIE1lbW9yeSBXb3JkIiwgdG1wIC09 IFVpVikKK1NURF9NRU1PUF9BTU9ERVMoaWFuZF9tZW1vcCwgIj1jbHJiaXQoI1U1KSIsICJDbGVh ciBhIGJpdCBpbiBtZW1vcnkiLCB0bXAgJj0gKH4oMTw8VWlWKSkpCitTVERfTUVNT1BfQU1PREVT KGlvcl9tZW1vcCwgICI9c2V0Yml0KCNVNSkiLCAiU2V0IGEgYml0IGluIG1lbW9yeSIsIHRtcCB8 PSAoMTw8VWlWKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAg ICAgIFY0IHN0b3JlIGltbWVkaWF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBQcmVkaWNhdGVkIFN0b3JlIGltbWVkaWF0ZXMgKi8KKyNk ZWZpbmUgVjRfUFNUSV9BTU9ERVMoVEFHLERFU1QsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTRU1B TlRJQ1MpXAorUTZJTlNOKFM0XyMjVEFHIyN0X2lvLCJpZiAoUHY0KSAiT1BFUiIoUnMzMisjdTY6 IlNIRlQiKT0iREVTVCxBVFRSSUIsREVTQ1Ise2ZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JPTEQo UHZWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihT NF8jI1RBRyMjZl9pbywiaWYgKCFQdjQpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULEFU VFJJQixERVNDUix7ZkVBX1JJKFJzVix1aVYpOyBpZiAoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5U SUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFM0XyMjVEFHIyN0bmV3 X2lvLCJpZiAoUHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIik9IkRFU1QsQVRUUklCLERF U0NSLHtmRUFfUkkoUnNWLHVpVik7IGlmIChmTFNCTkVXKFB2TikpeyBTRU1BTlRJQ1M7IH0gZWxz ZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfIyNUQUcjI2ZuZXdfaW8sImlmICgh UHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFf UkkoUnNWLHVpVik7IGlmIChmTFNCTkVXTk9UKFB2TikpeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RP UkVfQ0FOQ0VMKEVBKTt9fSkKKworLyogVGhlIHNldCBvZiAzMi1iaXQgc3RvcmUgaW1tZWRpYXRl IGluc3RydWN0aW9ucyAqLworVjRfUFNUSV9BTU9ERVMoc3RvcmVpcmIsIiNTNiIsIm1lbWIiLCJT dG9yZSBJbW1lZGlhdGUgQnl0ZSIsQVRUUklCUyhBX0FSQ0hWMixBX1NUT1JFKSwiMCIsZklNTUVY VChTaVYpOyBmU1RPUkUoMSwxLEVBLFNpVikpCitWNF9QU1RJX0FNT0RFUyhzdG9yZWlyaCwiI1M2 IiwibWVtaCIsIlN0b3JlIEltbWVkaWF0ZSBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9BUkNIVjIs QV9TVE9SRSksIjEiLGZJTU1FWFQoU2lWKTsgZlNUT1JFKDEsMixFQSxTaVYpKQorVjRfUFNUSV9B TU9ERVMoc3RvcmVpcmksIiNTNiIsIm1lbXciLCJTdG9yZSBJbW1lZGlhdGUgV29yZCIsQVRUUklC UyhBX0FSQ0hWMixBX1NUT1JFKSwiMiIsZklNTUVYVChTaVYpOyBmU1RPUkUoMSw0LEVBLFNpVikp CisKKworLyogTm9uLXByZWRpY2F0ZWQgc3RvcmUgaW1tZWRpYXRlcyAqLworI2RlZmluZSBWNF9T VElfQU1PREVTKFRBRyxERVNULE9QRVIsREVTQ1IsQVRUUklCLFNIRlQsU0VNQU5USUNTKVwKK1E2 SU5TTihTNF8jI1RBRyMjX2lvLCAgT1BFUiIoUnMzMisjdTY6IlNIRlQiKT0iREVTVCwgIEFUVFJJ QixERVNDUix7ZkVBX1JJKFJzVix1aVYpOyBTRU1BTlRJQ1M7IH0pCisKKy8qIFRoZSBzZXQgb2Yg MzItYml0IHN0b3JlIGltbWVkaWF0ZSBpbnN0cnVjdGlvbnMgKi8KK1Y0X1NUSV9BTU9ERVMoc3Rv cmVpcmIsIiNTOCIsIm1lbWIiLCJTdG9yZSBJbW1lZGlhdGUgQnl0ZSIsQVRUUklCUyhBX0FSQ0hW MixBX1NUT1JFKSwiMCIsZklNTUVYVChTaVYpOyBmU1RPUkUoMSwxLEVBLFNpVikpCitWNF9TVElf QU1PREVTKHN0b3JlaXJoLCIjUzgiLCJtZW1oIiwiU3RvcmUgSW1tZWRpYXRlIEhhbGYgaW50ZWdl ciIsQVRUUklCUyhBX0FSQ0hWMixBX1NUT1JFKSwiMSIsZklNTUVYVChTaVYpOyBmU1RPUkUoMSwy LEVBLFNpVikpCitWNF9TVElfQU1PREVTKHN0b3JlaXJpLCIjUzgiLCJtZW13IiwiU3RvcmUgSW1t ZWRpYXRlIFdvcmQiLEFUVFJJQlMoQV9BUkNIVjIsQV9TVE9SRSksIjIiLGZJTU1FWFQoU2lWKTsg ZlNUT1JFKDEsNCxFQSxTaVYpKQorCisKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov CisvKiAgICAgICAgICAgICAgICAgIFYyIEdQLXJlbGF0aXZlIExEL1NUICAgICAgICAgICAgICAg ICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgU1REX0dQTERf QU1PREVTKFRBRyxPUEVSLERFU0NSLEFUVFJJQixTSEZULFNFTUFOVElDUylcCitRNklOU04oTDJf IyNUQUcjI2dwLCBPUEVSIihncCsjdTE2OiJTSEZUIikiLCAgIEFUVFJJQixERVNDUix7ZklNTUVY VCh1aVYpOyBmRUFfR1BJKHVpVik7IFNFTUFOVElDUzsgfSkKKworLyogVGhlIHNldCBvZiAzMi1i aXQgbG9hZCBpbnN0cnVjdGlvbnMgKi8KK1NURF9HUExEX0FNT0RFUyhsb2FkcnViLCJSZDMyPW1l bXViIiwiTG9hZCBVbnNpZ25lZCBCeXRlIixBVFRSSUJTKEFfTE9BRCxBX0FSQ0hWMiksIjAiLGZM T0FEKDEsMSx1LEVBLFJkVikpCitTVERfR1BMRF9BTU9ERVMobG9hZHJiLCAiUmQzMj1tZW1iIiwg IkxvYWQgc2lnbmVkIEJ5dGUiLEFUVFJJQlMoQV9MT0FELEFfQVJDSFYyKSwiMCIsZkxPQUQoMSwx LHMsRUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhsb2FkcnVoLCJSZDMyPW1lbXVoIiwiTG9hZCB1 bnNpZ25lZCBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9MT0FELEFfQVJDSFYyKSwiMSIsZkxPQUQo MSwyLHUsRUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhsb2FkcmgsICJSZDMyPW1lbWgiLCAiTG9h ZCBzaWduZWQgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfTE9BRCxBX0FSQ0hWMiksIjEiLGZMT0FE KDEsMixzLEVBLFJkVikpCitTVERfR1BMRF9BTU9ERVMobG9hZHJpLCAiUmQzMj1tZW13IiwgIkxv YWQgV29yZCIsQVRUUklCUyhBX0xPQUQsQV9BUkNIVjIpLCIyIixmTE9BRCgxLDQsdSxFQSxSZFYp KQorU1REX0dQTERfQU1PREVTKGxvYWRyZCwgIlJkZDMyPW1lbWQiLCJMb2FkIERvdWJsZSBpbnRl Z2VyIixBVFRSSUJTKEFfTE9BRCxBX0FSQ0hWMiksIjMiLGZMT0FEKDEsOCx1LEVBLFJkZFYpKQor CisKKyNkZWZpbmUgU1REX0dQU1RfQU1PREVTKFRBRyxERVNULE9QRVIsREVTQ1IsQVRUUklCLFNI RlQsU0VNQU5USUNTKVwKK1E2SU5TTihTMl8jI1RBRyMjZ3AsIE9QRVIiKGdwKyN1MTY6IlNIRlQi KT0iREVTVCwgQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9HUEkodWlWKTsgU0VNQU5U SUNTOyB9KQorCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBzdG9yZSBpbnN0cnVjdGlvbnMgKi8KK1NU RF9HUFNUX0FNT0RFUyhzdG9yZXJiLCAiUnQzMiIsICJtZW1iIiwiU3RvcmUgQnl0ZSIsQVRUUklC UyhBX1NUT1JFLEFfQVJDSFYyKSwiMCIsZlNUT1JFKDEsMSxFQSxmR0VUQllURSgwLFJ0VikpKQor U1REX0dQU1RfQU1PREVTKHN0b3JlcmgsICJSdDMyIiwgIm1lbWgiLCJTdG9yZSBIYWxmIGludGVn ZXIiLEFUVFJJQlMoQV9TVE9SRSxBX0FSQ0hWMiksIjEiLGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYo MCxSdFYpKSkKK1NURF9HUFNUX0FNT0RFUyhzdG9yZXJmLCAiUnQuSDMyIiwgIm1lbWgiLCJTdG9y ZSBVcHBlciBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9TVE9SRSxBX0FSQ0hWMiksIjEiLGZTVE9S RSgxLDIsRUEsZkdFVEhBTEYoMSxSdFYpKSkKK1NURF9HUFNUX0FNT0RFUyhzdG9yZXJpLCAiUnQz MiIsICJtZW13IiwiU3RvcmUgV29yZCIsQVRUUklCUyhBX1NUT1JFLEFfQVJDSFYyKSwiMiIsZlNU T1JFKDEsNCxFQSxSdFYpKQorU1REX0dQU1RfQU1PREVTKHN0b3JlcmQsICJSdHQzMiIsIm1lbWQi LCJTdG9yZSBEb3VibGUgaW50ZWdlciIsQVRUUklCUyhBX1NUT1JFLEFfQVJDSFYyKSwiMyIsZlNU T1JFKDEsOCxFQSxSdHRWKSkKK1NURF9HUFNUX0FNT0RFUyhzdG9yZXJpbmV3LCAiTnQ4Lm5ldyIs ICJtZW13IiwiU3RvcmUgV29yZCIsQVRUUklCUyhBX1NUT1JFLEFfQVJDSFYyKSwiMiIsZlNUT1JF KDEsNCxFQSxmTkVXUkVHX1NUKE50TikpKQorU1REX0dQU1RfQU1PREVTKHN0b3JlcmJuZXcsICJO dDgubmV3IiwgIm1lbWIiLCJTdG9yZSBCeXRlIixBVFRSSUJTKEFfU1RPUkUsQV9BUkNIVjIpLCIw IixmU1RPUkUoMSwxLEVBLGZHRVRCWVRFKDAsZk5FV1JFR19TVChOdE4pKSkpCitTVERfR1BTVF9B TU9ERVMoc3RvcmVyaG5ldywgIk50OC5uZXciLCAibWVtaCIsIlN0b3JlIEhhbGYgaW50ZWdlciIs QVRUUklCUyhBX1NUT1JFLEFfQVJDSFYyKSwiMSIsZlNUT1JFKDEsMixFQSxmR0VUSEFMRigwLGZO RVdSRUdfU1QoTnROKSkpKQpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbXB5 LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tcHkuaWRlZgpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4wY2M2MmFhCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hl eGFnb24vaW1wb3J0ZWQvbXB5LmlkZWYKQEAgLTAsMCArMSwxMjEyIEBACisvKgorICogIENvcHly aWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICog IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorICovCisKKy8qCisgKiBNdWx0aXBseSBJbnN0cnVjdGlvbnMKKyAqLworCisKKyNkZWZpbmUg U1REX1NQX01PREVTKFRBRyxPUEVSLEFUUixEU1QsQUNDU0VNLFNFTSxPU0VNLFNBVFNFTSxSTkRT RU0pXAorUTZJTlNOKE0yXyMjVEFHIyNfaGhfczAsIE9QRVIiKFJzLkgzMixSdC5IMzIpIk9TRU0s ICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAgICAgZkdF VEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKTt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2ho X3MxLCBPUEVSIihScy5IMzIsUnQuSDMyKTo8PDEiT1NFTSwgICAgQVRSLCIiLHtEU1Q9U0FUU0VN KFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0 VikpKSkpO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfaGxfczAsIE9QRVIiKFJzLkgzMixSdC5MMzIp Ik9TRU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAg ICAgZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpKTt9KVwKK1E2SU5TTihNMl8jI1RB RyMjX2hsX3MxLCBPUEVSIihScy5IMzIsUnQuTDMyKTo8PDEiT1NFTSwgICAgQVRSLCIiLHtEU1Q9 U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFM RigwLFJ0VikpKSkpO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfbGhfczAsIE9QRVIiKFJzLkwzMixS dC5IMzIpIk9TRU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0o ICAgICAgICAgZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKTt9KVwKK1E2SU5TTihN Ml8jI1RBRyMjX2xoX3MxLCBPUEVSIihScy5MMzIsUnQuSDMyKTo8PDEiT1NFTSwgICAgQVRSLCIi LHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRIQUxGKDAsUnNWKSxm R0VUSEFMRigxLFJ0VikpKSkpO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfbGxfczAsIE9QRVIiKFJz LkwzMixSdC5MMzIpIk9TRU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NF TSBTRU0oICAgICAgICAgZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpKTt9KVwKK1E2 SU5TTihNMl8jI1RBRyMjX2xsX3MxLCBPUEVSIihScy5MMzIsUnQuTDMyKTo8PDEiT1NFTSwgICAg QVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRIQUxGKDAs UnNWKSxmR0VUSEFMRigwLFJ0VikpKSkpO30pCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIG11bHRpcGx5IDE2eDE2LT4zMiBzaWdu ZWQgaW5zdHJ1Y3Rpb25zICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1NURF9TUF9NT0RFUyhtcHlfYWNjLCAgICAi UngzMis9bXB5IiwgLFJ4VixSeFYrICAgICxmTVBZMTZTUywgICAgICAgICAgLGZQQVNTLGZQQVNT KQorU1REX1NQX01PREVTKG1weV9uYWMsICAgICJSeDMyLT1tcHkiLCAsUnhWLFJ4Vi0gICAgLGZN UFkxNlNTLCAgICAgICAgICAsZlBBU1MsZlBBU1MpCitTVERfU1BfTU9ERVMobXB5X2FjY19zYXQs IlJ4MzIrPW1weSIsICxSeFYsUnhWKyAgICAsZk1QWTE2U1MsIjpzYXQiICAgICxmU0FULCBmUEFT UykKK1NURF9TUF9NT0RFUyhtcHlfbmFjX3NhdCwiUngzMi09bXB5IiwgLFJ4VixSeFYtICAgICxm TVBZMTZTUywiOnNhdCIgICAgLGZTQVQsIGZQQVNTKQorU1REX1NQX01PREVTKG1weSwgICAgICAg ICJSZDMyPW1weSIsICAsUmRWLCAgICAgICAgLGZNUFkxNlNTLCAgICAgICAgICAsZlBBU1MsZlBB U1MpCitTVERfU1BfTU9ERVMobXB5X3NhdCwgICAgIlJkMzI9bXB5IiwgICxSZFYsICAgICAgICAs Zk1QWTE2U1MsIjpzYXQiICAgICxmU0FULCBmUEFTUykKK1NURF9TUF9NT0RFUyhtcHlfcm5kLCAg ICAiUmQzMj1tcHkiLCAgLFJkViwgICAgICAgICxmTVBZMTZTUywiOnJuZCIgICAgLGZQQVNTLGZS T1VORCkKK1NURF9TUF9NT0RFUyhtcHlfc2F0X3JuZCwiUmQzMj1tcHkiLCAgLFJkViwgICAgICAg ICxmTVBZMTZTUywiOnJuZDpzYXQiLGZTQVQsIGZST1VORCkKK1NURF9TUF9NT0RFUyhtcHlkX2Fj YywgICAiUnh4MzIrPW1weSIsLFJ4eFYsUnh4VisgICxmTVBZMTZTUywgICAgICAgICAgLGZQQVNT LGZQQVNTKQorU1REX1NQX01PREVTKG1weWRfbmFjLCAgICJSeHgzMi09bXB5IiwsUnh4VixSeHhW LSAgLGZNUFkxNlNTLCAgICAgICAgICAsZlBBU1MsZlBBU1MpCitTVERfU1BfTU9ERVMobXB5ZCwg ICAgICAgIlJkZDMyPW1weSIsICxSZGRWLCAgICAgICAsZk1QWTE2U1MsICAgICAgICAgICxmUEFT UyxmUEFTUykKK1NURF9TUF9NT0RFUyhtcHlkX3JuZCwgICAiUmRkMzI9bXB5IiwgLFJkZFYsICAg ICAgICxmTVBZMTZTUywiOnJuZCIgICAgLGZQQVNTLGZST1VORCkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBtdWx0aXBseSAx NngxNi0+MzIgdW5zaWduZWQgaW5zdHJ1Y3Rpb25zICAgICAgICAgICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIFNURF9V U1BfTU9ERVMoVEFHLE9QRVIsQVRSLERTVCxBQ0NTRU0sU0VNLE9TRU0sU0FUU0VNLFJORFNFTSlc CitRNklOU04oTTJfIyNUQUcjI19oaF9zMCwgT1BFUiIoUnMuSDMyLFJ0LkgzMikiT1NFTSwgICAg ICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIFNFTSggICAgICAgICBmR0VUVUhB TEYoMSxSc1YpLGZHRVRVSEFMRigxLFJ0VikpKSk7fSlcCitRNklOU04oTTJfIyNUQUcjI19oaF9z MSwgT1BFUiIoUnMuSDMyLFJ0LkgzMik6PDwxIk9TRU0sICAgIEFUUiwiIix7RFNUPVNBVFNFTShS TkRTRU0oQUNDU0VNIGZTQ0FMRSgxLFNFTShmR0VUVUhBTEYoMSxSc1YpLGZHRVRVSEFMRigxLFJ0 VikpKSkpO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfaGxfczAsIE9QRVIiKFJzLkgzMixSdC5MMzIp Ik9TRU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAg ICAgZkdFVFVIQUxGKDEsUnNWKSxmR0VUVUhBTEYoMCxSdFYpKSkpO30pXAorUTZJTlNOKE0yXyMj VEFHIyNfaGxfczEsIE9QRVIiKFJzLkgzMixSdC5MMzIpOjw8MSJPU0VNLCAgICBBVFIsIiIse0RT VD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBmU0NBTEUoMSxTRU0oZkdFVFVIQUxGKDEsUnNWKSxmR0VU VUhBTEYoMCxSdFYpKSkpKTt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2xoX3MwLCBPUEVSIihScy5M MzIsUnQuSDMyKSJPU0VNLCAgICAgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0g U0VNKCAgICAgICAgIGZHRVRVSEFMRigwLFJzViksZkdFVFVIQUxGKDEsUnRWKSkpKTt9KVwKK1E2 SU5TTihNMl8jI1RBRyMjX2xoX3MxLCBPUEVSIihScy5MMzIsUnQuSDMyKTo8PDEiT1NFTSwgICAg QVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRVSEFMRigw LFJzViksZkdFVFVIQUxGKDEsUnRWKSkpKSk7fSlcCitRNklOU04oTTJfIyNUQUcjI19sbF9zMCwg T1BFUiIoUnMuTDMyLFJ0LkwzMikiT1NFTSwgICAgICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRT RU0oQUNDU0VNIFNFTSggICAgICAgICBmR0VUVUhBTEYoMCxSc1YpLGZHRVRVSEFMRigwLFJ0Vikp KSk7fSlcCitRNklOU04oTTJfIyNUQUcjI19sbF9zMSwgT1BFUiIoUnMuTDMyLFJ0LkwzMik6PDwx Ik9TRU0sICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIGZTQ0FMRSgxLFNFTShm R0VUVUhBTEYoMCxSc1YpLGZHRVRVSEFMRigwLFJ0VikpKSkpO30pCisKK1NURF9VU1BfTU9ERVMo bXB5dV9hY2MsICAgICJSeDMyKz1tcHl1IiwgLFJ4VixSeFYrICAsZk1QWTE2VVUsICAgICAgICAg ICxmUEFTUyxmUEFTUykKK1NURF9VU1BfTU9ERVMobXB5dV9uYWMsICAgICJSeDMyLT1tcHl1Iiwg LFJ4VixSeFYtICAsZk1QWTE2VVUsICAgICAgICAgICxmUEFTUyxmUEFTUykKK1NURF9VU1BfTU9E RVMobXB5dSwgICAgICAgICJSZDMyPW1weXUiLCAgQVRUUklCUygpICxSZFYsICAsZk1QWTE2VVUs ICxmUEFTUyxmUEFTUykKK1NURF9VU1BfTU9ERVMobXB5dWRfYWNjLCAgICJSeHgzMis9bXB5dSIs LFJ4eFYsUnh4VissZk1QWTE2VVUsICAgICAgICAgICxmUEFTUyxmUEFTUykKK1NURF9VU1BfTU9E RVMobXB5dWRfbmFjLCAgICJSeHgzMi09bXB5dSIsLFJ4eFYsUnh4Vi0sZk1QWTE2VVUsICAgICAg ICAgICxmUEFTUyxmUEFTUykKK1NURF9VU1BfTU9ERVMobXB5dWQsICAgICAgICJSZGQzMj1tcHl1 IiwgQVRUUklCUygpICxSZGRWLCAsZk1QWTE2VVUsICxmUEFTUyxmUEFTUykKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBtcHkgMTZ4I3M4LT4z MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oTTJfbXB5c2lwLCJSZDMyPSttcHlp KFJzMzIsI3U4KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiMzItYml0IE11bHRpcGx5IGJ5IHVuc2ln bmVkIGltbWVkaWF0ZSIsCit7IGZJTU1FWFQodWlWKTsgUmRWPVJzVip1aVY7IH0pCisKK1E2SU5T TihNMl9tcHlzaW4sIlJkMzI9LW1weWkoUnMzMiwjdTgpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyIz Mi1iaXQgTXVsdGlwbHkgYnkgdW5zaWduZWQgaW1tZWRpYXRlLCBuZWdhdGUgcmVzdWx0IiwKK3sg UmRWPVJzViotdWlWOyB9KQorCitRNklOU04oTTJfbWFjc2lwLCJSeDMyKz1tcHlpKFJzMzIsI3U4 KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiMzItYml0IE11bHRpcGx5LUFkZCBieSB1bnNpZ25lZCBp bW1lZGlhdGUiLAoreyBmSU1NRVhUKHVpVik7IFJ4Vj1SeFYgKyAoUnNWKnVpVik7fSkKKworUTZJ TlNOKE0yX21hY3NpbiwiUngzMi09bXB5aShSczMyLCN1OCkiLEFUVFJJQlMoQV9BUkNIVjIpLAor IjMyLWJpdCBNdWx0aXBseS1TdWJ0cmFjdCBieSB1bnNpZ25lZCBpbW1lZGlhdGUiLAoreyBmSU1N RVhUKHVpVik7IFJ4Vj1SeFYgLSAoUnNWKnVpVik7fSkKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIG11bHRpcGx5L21hYyAgMzJ4MzItPjY0 IGluc3RydWN0aW9ucyAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCitRNklOU04oTTJfZHBtcHlzc19zMCwgICAgIlJkZDMyPW1weShSczMy LFJ0MzIpIiwgQVRUUklCUygpLCJNdWx0aXBseSAzMngzMiIse1JkZFY9Zk1QWTMyU1MoUnNWLFJ0 Vik7fSkKK1E2SU5TTihNMl9kcG1weXNzX2FjY19zMCwiUnh4MzIrPW1weShSczMyLFJ0MzIpIixB VFRSSUJTKCksIk11bHRpcGx5IDMyeDMyIix7Unh4Vj0gUnh4ViArIGZNUFkzMlNTKFJzVixSdFYp O30pCitRNklOU04oTTJfZHBtcHlzc19uYWNfczAsIlJ4eDMyLT1tcHkoUnMzMixSdDMyKSIsQVRU UklCUygpLCJNdWx0aXBseSAzMngzMiIse1J4eFY9IFJ4eFYgLSBmTVBZMzJTUyhSc1YsUnRWKTt9 KQorCitRNklOU04oTTJfZHBtcHl1dV9zMCwgICAgIlJkZDMyPW1weXUoUnMzMixSdDMyKSIsIEFU VFJJQlMoKSwiTXVsdGlwbHkgMzJ4MzIiLHtSZGRWPWZNUFkzMlVVKGZDQVNUNHUoUnNWKSxmQ0FT VDR1KFJ0VikpO30pCitRNklOU04oTTJfZHBtcHl1dV9hY2NfczAsIlJ4eDMyKz1tcHl1KFJzMzIs UnQzMikiLEFUVFJJQlMoKSwiTXVsdGlwbHkgMzJ4MzIiLHtSeHhWPSBSeHhWICsgZk1QWTMyVVUo ZkNBU1Q0dShSc1YpLGZDQVNUNHUoUnRWKSk7fSkKK1E2SU5TTihNMl9kcG1weXV1X25hY19zMCwi Unh4MzItPW1weXUoUnMzMixSdDMyKSIsQVRUUklCUygpLCJNdWx0aXBseSAzMngzMiIse1J4eFY9 IFJ4eFYgLSBmTVBZMzJVVShmQ0FTVDR1KFJzViksZkNBU1Q0dShSdFYpKTt9KQorCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBt dWx0aXBseS9tYWMgIDMyeDMyLT4zMiAodXBwZXIpIGluc3RydWN0aW9ucyAgICAgICAqLworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1E2 SU5TTihNMl9tcHlfdXAsICAgICAgICAiUmQzMj1tcHkoUnMzMixSdDMyKSIsIEFUVFJJQlMoKSwi TXVsdGlwbHkgMzJ4MzIiLHtSZFY9Zk1QWTMyU1MoUnNWLFJ0Vik+PjMyO30pCitRNklOU04oTTJf bXB5X3VwX3MxLCAgICAgIlJkMzI9bXB5KFJzMzIsUnQzMik6PDwxIiwgQVRUUklCUygpLCJNdWx0 aXBseSAzMngzMiIse1JkVj1mTVBZMzJTUyhSc1YsUnRWKT4+MzE7fSkKK1E2SU5TTihNMl9tcHlf dXBfczFfc2F0LCAiUmQzMj1tcHkoUnMzMixSdDMyKTo8PDE6c2F0IiwgQVRUUklCUygpLCJNdWx0 aXBseSAzMngzMiIse1JkVj1mU0FUKGZNUFkzMlNTKFJzVixSdFYpPj4zMSk7fSkKK1E2SU5TTihN Ml9tcHl1X3VwLCAgICAgICAiUmQzMj1tcHl1KFJzMzIsUnQzMikiLCBBVFRSSUJTKCksIk11bHRp cGx5IDMyeDMyIix7UmRWPWZNUFkzMlVVKGZDQVNUNHUoUnNWKSxmQ0FTVDR1KFJ0VikpPj4zMjt9 KQorUTZJTlNOKE0yX21weXN1X3VwLCAgICAgICJSZDMyPW1weXN1KFJzMzIsUnQzMikiLCBBVFRS SUJTKCksIk11bHRpcGx5IDMyeDMyIix7UmRWPWZNUFkzMlNVKFJzVixmQ0FTVDR1KFJ0VikpPj4z Mjt9KQorUTZJTlNOKE0yX2RwbXB5c3Nfcm5kX3MwLCJSZDMyPW1weShSczMyLFJ0MzIpOnJuZCIs IEFUVFJJQlMoKSwiTXVsdGlwbHkgMzJ4MzIiLHtSZFY9KGZNUFkzMlNTKFJzVixSdFYpK2ZDT05T VExMKDB4ODAwMDAwMDApKT4+MzI7fSkKKworUTZJTlNOKE00X21hY191cF9zMV9zYXQsICJSeDMy Kz1tcHkoUnMzMixSdDMyKTo8PDE6c2F0IiwgQVRUUklCUygpLCJNdWx0aXBseSAzMngzMiIse1J4 Vj1mU0FUKCAgKGZTRTMyXzY0KFJ4VikpICsgKGZNUFkzMlNTKFJzVixSdFYpPj4zMSkpO30pCitR NklOU04oTTRfbmFjX3VwX3MxX3NhdCwgIlJ4MzItPW1weShSczMyLFJ0MzIpOjw8MTpzYXQiLCBB VFRSSUJTKCksIk11bHRpcGx5IDMyeDMyIix7UnhWPWZTQVQoICAoZlNFMzJfNjQoUnhWKSkgLSAo Zk1QWTMyU1MoUnNWLFJ0Vik+PjMxKSk7fSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDMyeDMyLT4zMiBtdWx0aXBseSAobG93ZXIpICAg ICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK1E2SU5TTihNMl9tcHlpLCJSZDMyPW1weWkoUnMzMixSdDMyKSIsQVRUUklC UygpLAorIk11bHRpcGx5IEludGVnZXIiLAoreyBSZFY9UnNWKlJ0Vjt9KQorCitRNklOU04oTTJf bWFjaSwiUngzMis9bXB5aShSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJNdWx0aXBs eS1BY2N1bXVsYXRlIEludGVnZXIiLAoreyBSeFY9UnhWICsgUnNWKlJ0Vjt9KQorCitRNklOU04o TTJfbW5hY2ksIlJ4MzItPW1weWkoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiTXVs dGlwbHktTmVnLUFjY3VtdWxhdGUgSW50ZWdlciIsCit7IFJ4Vj1SeFYgLSBSc1YqUnRWO30pCisK Ky8qKioqKiogV0hZIEFSRSBUSEVTRSBJTiBNUFkuSURFRj8gKioqKioqKioqKi8KKworUTZJTlNO KE0yX2FjY2ksIlJ4MzIrPWFkZChSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJBZGQg d2l0aCBhY2N1bXVsYXRlIiwKK3sgUnhWPVJ4ViArIFJzViArIFJ0Vjt9KQorCitRNklOU04oTTJf YWNjaWksIlJ4MzIrPWFkZChSczMyLCNzOCkiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkFkZCB3aXRo IGFjY3VtdWxhdGUiLAoreyBmSU1NRVhUKHNpVik7IFJ4Vj1SeFYgKyBSc1YgKyBzaVY7fSkKKwor UTZJTlNOKE0yX25hY2NpLCJSeDMyLT1hZGQoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiks CisiQWRkIHdpdGggbmVnIGFjY3VtdWxhdGUiLAoreyBSeFY9UnhWIC0gKFJzViArIFJ0Vik7fSkK KworUTZJTlNOKE0yX25hY2NpaSwiUngzMi09YWRkKFJzMzIsI3M4KSIsQVRUUklCUyhBX0FSQ0hW MiksCisiQWRkIHdpdGggbmVnIGFjY3VtdWxhdGUiLAoreyBmSU1NRVhUKHNpVik7IFJ4Vj1SeFYg LSAoUnNWICsgc2lWKTt9KQorCitRNklOU04oTTJfc3ViYWNjLCJSeDMyKz1zdWIoUnQzMixSczMy KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiU3ViIHdpdGggYWNjdW11bGF0ZSIsCit7IFJ4Vj1SeFYg KyBSdFYgLSBSc1Y7fSkKKworCisKKworUTZJTlNOKE00X21weXJyX2FkZHIsIlJ5MzI9YWRkKFJ1 MzIsbXB5aShSeTMyLFJzMzIpKSIsQVRUUklCUygpLAorIk1weSBieSBpbW1lZCBhbmQgYWRkIGlt bWVkIiwKK3sgUnlWID0gUnVWICsgUnNWKlJ5Vjt9KQorCitRNklOU04oTTRfbXB5cmlfYWRkcl91 MiwiUmQzMj1hZGQoUnUzMixtcHlpKCN1NjoyLFJzMzIpKSIsQVRUUklCUygpLAorIk1weSBieSBp bW1lZCBhbmQgYWRkIGltbWVkIiwKK3sgUmRWID0gUnVWICsgUnNWKnVpVjt9KQorCitRNklOU04o TTRfbXB5cmlfYWRkciwiUmQzMj1hZGQoUnUzMixtcHlpKFJzMzIsI3U2KSkiLEFUVFJJQlMoKSwK KyJNcHkgYnkgaW1tZWQgYW5kIGFkZCBpbW1lZCIsCit7IGZJTU1FWFQodWlWKTsgUmRWID0gUnVW ICsgUnNWKnVpVjt9KQorCisKKworUTZJTlNOKE00X21weXJpX2FkZGksIlJkMzI9YWRkKCN1Nixt cHlpKFJzMzIsI1U2KSkiLEFUVFJJQlMoKSwKKyJNcHkgYnkgaW1tZWQgYW5kIGFkZCBpbW1lZCIs Cit7IGZJTU1FWFQodWlWKTsgUmRWID0gdWlWICsgUnNWKlVpVjt9KQorCisKKworUTZJTlNOKE00 X21weXJyX2FkZGksIlJkMzI9YWRkKCN1NixtcHlpKFJzMzIsUnQzMikpIixBVFRSSUJTKCksCisi TXB5IGJ5IGltbWVkIGFuZCBhZGQgaW1tZWQiLAoreyBmSU1NRVhUKHVpVik7IFJkViA9IHVpViAr IFJzVipSdFY7fSkKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIHZlY3RvciBtYWMgIDJ4 WzE2eDE2IC0+IDMyXSAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1h Y19zZW1hKE4pXAoreyBmU0VUV09SRCgwLFJkZFYsZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VU SEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUmRkVixmU0FU KGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkpO1wK K30KK1E2SU5TTihNMl92bXB5MnNfczAsIlJkZDMyPXZtcHloKFJzMzIsUnQzMik6c2F0IixBVFRS SUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3ZtcHkyc19z MSwiUmRkMzI9dm1weWgoUnMzMixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0 aXBseSIsdm1hY19zZW1hKDEpKQorCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19z ZW1hKE4pXAoreyBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsgZlNDQUxF KE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpKSk7XAorICBmU0VU V09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdF VEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSk7XAorfQorUTZJTlNOKE0yX3ZtYWMyc19z MCwiUnh4MzIrPXZtcHloKFJzMzIsUnQzMik6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBs eSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3ZtYWMyc19zMSwiUnh4MzIrPXZtcHloKFJzMzIs UnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkK KworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7IGZTRVRXT1JEKDAs UmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNVKGZHRVRIQUxGKDAsUnNWKSxmR0VUVUhBTEYoMCxS dFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNVKGZHRVRI QUxGKDEsUnNWKSxmR0VUVUhBTEYoMSxSdFYpKSkpKTtcCit9CitRNklOU04oTTJfdm1weTJzdV9z MCwiUmRkMzI9dm1weWhzdShSczMyLFJ0MzIpOnNhdCIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlw bHkiLHZtYWNfc2VtYSgwKSkKK1E2SU5TTihNMl92bXB5MnN1X3MxLCJSZGQzMj12bXB5aHN1KFJz MzIsUnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgx KSkKKworCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZtYWNfc2VtYShOKVwKK3sgZlNFVFdP UkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhWKSArIGZTQ0FMRShOLGZNUFkxNlNVKGZHRVRI QUxGKDAsUnNWKSxmR0VUVUhBTEYoMCxSdFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUnh4VixmU0FU KGZHRVRXT1JEKDEsUnh4VikgKyBmU0NBTEUoTixmTVBZMTZTVShmR0VUSEFMRigxLFJzViksZkdF VFVIQUxGKDEsUnRWKSkpKSk7XAorfQorUTZJTlNOKE0yX3ZtYWMyc3VfczAsIlJ4eDMyKz12bXB5 aHN1KFJzMzIsUnQzMik6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1h KDApKQorUTZJTlNOKE0yX3ZtYWMyc3VfczEsIlJ4eDMyKz12bXB5aHN1KFJzMzIsUnQzMik6PDwx OnNhdCIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkKKworCisKKyN1 bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUSEFMRigxLFJkVixm R0VUSEFMRigxLChmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFM RigxLFJ0VikpKSArIDB4ODAwMCkpKSk7XAorICBmU0VUSEFMRigwLFJkVixmR0VUSEFMRigxLChm U0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSAr IDB4ODAwMCkpKSk7XAorfQorUTZJTlNOKE0yX3ZtcHkyc19zMHBhY2ssIlJkMzI9dm1weWgoUnMz MixSdDMyKTpybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFj X3NlbWEoMCkpCitRNklOU04oTTJfdm1weTJzX3MxcGFjaywiUmQzMj12bXB5aChSczMyLFJ0MzIp Ojw8MTpybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3Nl bWEoMSkpCisKKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7IGZT RVRXT1JEKDAsUnh4VixmR0VUV09SRCgwLFJ4eFYpICsgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1Yp LGZHRVRIQUxGKDAsUnRWKSkpO1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZHRVRXT1JEKDEsUnh4Vikg KyBmTVBZMTZTUyhmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMSxSdFYpKSk7XAorfQorUTZJTlNO KE0yX3ZtYWMyLCJSeHgzMis9dm1weWgoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksIlZl Y3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5l IHZtYWNfc2VtYShOKVwKK3sgZlNFVFdPUkQoMCxSZGRWLGZTQVQoZlNDQUxFKE4sZk1QWTE2U1Mo ZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUmRk VixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRW KSkpKSk7XAorfQorUTZJTlNOKE0yX3ZtcHkyZXNfczAsIlJkZDMyPXZtcHllaChSc3MzMixSdHQz Mik6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDApKQorUTZJTlNO KE0yX3ZtcHkyZXNfczEsIlJkZDMyPXZtcHllaChSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRUUklC UygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgxKSkKKworI3VuZGVmIHZtYWNfc2VtYQor I2RlZmluZSB2bWFjX3NlbWEoTilcCit7IGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAs Unh4VikgKyBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0 VikpKSkpO1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArIGZTQ0FM RShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpKSk7XAorfQor UTZJTlNOKE0yX3ZtYWMyZXNfczAsIlJ4eDMyKz12bXB5ZWgoUnNzMzIsUnR0MzIpOnNhdCIsQVRU UklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgwKSkKK1E2SU5TTihNMl92bWFjMmVz X3MxLCJSeHgzMis9dm1weWVoKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIlZlY3Rv ciBNdWx0aXBseSIsdm1hY19zZW1hKDEpKQorCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZt YWNfc2VtYShOKVwKK3sgZlNFVFdPUkQoMCxSeHhWLGZHRVRXT1JEKDAsUnh4VikgKyBmTVBZMTZT UyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKTtcCisgIGZTRVRXT1JEKDEsUnh4 VixmR0VUV09SRCgxLFJ4eFYpICsgZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigy LFJ0dFYpKSk7XAorfQorUTZJTlNOKE0yX3ZtYWMyZXMsIlJ4eDMyKz12bXB5ZWgoUnNzMzIsUnR0 MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEoMCkpCisK KworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qIHZybXB5aCwgYWthIEJpZyBNYWMsIGFrYSBNYWMgRGFkZHksIGFrYSBNYWMt YWMtYWMtYWMgKi8KKy8qIHZlY3RvciBtYWMgIDR4WzE2eDE2XSArIDY0IC0+NjQgICAgICAgICAg ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKworCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZtYWNfc2Vt YShOKVwKK3sgUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxG KDAsUnR0VikpXAorICAgICAgICAgICAgICArIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdF VEhBTEYoMSxSdHRWKSlcCisgICAgICAgICAgICAgICsgZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NW KSxmR0VUSEFMRigyLFJ0dFYpKVwKKyAgICAgICAgICAgICAgKyBmTVBZMTZTUyhmR0VUSEFMRigz LFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK30KK1E2SU5TTihNMl92cm1hY19zMCwiUnh4MzIr PXZybXB5aChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3Nl bWEoMCkpCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBSZGRW ID0gZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKVwKKyAgICAgICAr IGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMSxSdHRWKSlcCisgICAgICAgKyBm TVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpXAorICAgICAgICsgZk1Q WTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKTtcCit9CitRNklOU04oTTJf dnJtcHlfczAsIlJkZDMyPXZybXB5aChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIE11 bHRpcGx5Iix2bWFjX3NlbWEoMCkpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogdmVjdG9yIGR1YWwgbWFjcy4ganVzdCBs aWtlIGNvbXBsZXggICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyogV2l0aCByb3VuZCZwYWNrICov CisjdW5kZWYgZG1weV9zZW1hCisjZGVmaW5lIGRtcHlfc2VtYShOKVwKK3sgZlNFVEhBTEYoMCxS ZFYsZkdFVEhBTEYoMSwoZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZH RVRIQUxGKDAsUnR0VikpKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm U0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSArIDB4 ODAwMCkpKSk7XAorICBmU0VUSEFMRigxLFJkVixmR0VUSEFMRigxLChmU0FUKGZTQ0FMRShOLGZN UFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpICsgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNz ViksZkdFVEhBTEYoMyxSdHRWKSkpICsgMHg4MDAwKSkpKTtcCit9CitRNklOU04oTTJfdmRtcHly c19zMCwiUmQzMj12ZG1weShSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAidmVj dG9yIGR1YWwgbWFjIHcvIHJvdW5kJnBhY2siLGRtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl92ZG1w eXJzX3MxLCJSZDMyPXZkbXB5KFJzczMyLFJ0dDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJ2 ZWN0b3IgZHVhbCBtYWMgdy8gcm91bmQmcGFjayIsZG1weV9zZW1hKDEpKQorCisKKworCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisv KiB2ZWN0b3IgYnl0ZSBtdWx0aXBsaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworCitRNklOU04oTTVfdnJtcHlidXUsIlJkZDMyPXZybXB5YnUoUnNzMzIsUnR0MzIpIixBVFRS SUJTKCksCisgInZlY3RvciBkdWFsIG1weSBieXRlcyIsCit7CisgIGZTRVRXT1JEKDAsUmRkViwo Zk1QWTE2U1MoZkdFVFVCWVRFKDAsUnNzViksZkdFVFVCWVRFKDAsUnR0VikpICsKKwkJICAgZk1Q WTE2U1MoZkdFVFVCWVRFKDEsUnNzViksZkdFVFVCWVRFKDEsUnR0VikpICsKKwkJICAgZk1QWTE2 U1MoZkdFVFVCWVRFKDIsUnNzViksZkdFVFVCWVRFKDIsUnR0VikpICsKKwkJICAgZk1QWTE2U1Mo ZkdFVFVCWVRFKDMsUnNzViksZkdFVFVCWVRFKDMsUnR0VikpKSk7CisgIGZTRVRXT1JEKDEsUmRk ViwoZk1QWTE2U1MoZkdFVFVCWVRFKDQsUnNzViksZkdFVFVCWVRFKDQsUnR0VikpICsKKwkJICAg Zk1QWTE2U1MoZkdFVFVCWVRFKDUsUnNzViksZkdFVFVCWVRFKDUsUnR0VikpICsKKwkJICAgZk1Q WTE2U1MoZkdFVFVCWVRFKDYsUnNzViksZkdFVFVCWVRFKDYsUnR0VikpICsKKwkJICAgZk1QWTE2 U1MoZkdFVFVCWVRFKDcsUnNzViksZkdFVFVCWVRFKDcsUnR0VikpKSk7CisgfSkKKworUTZJTlNO KE01X3ZybWFjYnV1LCJSeHgzMis9dnJtcHlidShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyAi dmVjdG9yIGR1YWwgbWFjIGJ5dGVzIiwKK3sKKyAgZlNFVFdPUkQoMCxSeHhWLChmR0VUV09SRCgw LFJ4eFYpICsKKwkgICAgICAgICAgIGZNUFkxNlNTKGZHRVRVQllURSgwLFJzc1YpLGZHRVRVQllU RSgwLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRVQllURSgxLFJzc1YpLGZHRVRVQllURSgx LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRVQllURSgyLFJzc1YpLGZHRVRVQllURSgyLFJ0 dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRVQllURSgzLFJzc1YpLGZHRVRVQllURSgzLFJ0dFYp KSkpOworICBmU0VUV09SRCgxLFJ4eFYsKGZHRVRXT1JEKDEsUnh4VikgKworCQkgICBmTVBZMTZT UyhmR0VUVUJZVEUoNCxSc3NWKSxmR0VUVUJZVEUoNCxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhm R0VUVUJZVEUoNSxSc3NWKSxmR0VUVUJZVEUoNSxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VU VUJZVEUoNixSc3NWKSxmR0VUVUJZVEUoNixSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUVUJZ VEUoNyxSc3NWKSxmR0VUVUJZVEUoNyxSdHRWKSkpKTsKKyB9KQorCisKK1E2SU5TTihNNV92cm1w eWJzdSwiUmRkMzI9dnJtcHlic3UoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisgInZlY3RvciBk dWFsIG1weSBieXRlcyIsCit7CisgIGZTRVRXT1JEKDAsUmRkViwoZk1QWTE2U1MoZkdFVEJZVEUo MCxSc3NWKSxmR0VUVUJZVEUoMCxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSgxLFJz c1YpLGZHRVRVQllURSgxLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNzViks ZkdFVFVCWVRFKDIsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMyxSc3NWKSxmR0VU VUJZVEUoMyxSdHRWKSkpKTsKKyAgZlNFVFdPUkQoMSxSZGRWLChmTVBZMTZTUyhmR0VUQllURSg0 LFJzc1YpLGZHRVRVQllURSg0LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDUsUnNz ViksZkdFVFVCWVRFKDUsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoNixSc3NWKSxm R0VUVUJZVEUoNixSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg3LFJzc1YpLGZHRVRV QllURSg3LFJ0dFYpKSkpOworIH0pCisKK1E2SU5TTihNNV92cm1hY2JzdSwiUnh4MzIrPXZybXB5 YnN1KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorICJ2ZWN0b3IgZHVhbCBtYWMgYnl0ZXMiLAor eworICBmU0VUV09SRCgwLFJ4eFYsKGZHRVRXT1JEKDAsUnh4VikgKworCQkgICBmTVBZMTZTUyhm R0VUQllURSgwLFJzc1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRC WVRFKDEsUnNzViksZkdFVFVCWVRFKDEsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUo MixSc3NWKSxmR0VUVUJZVEUoMixSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSgzLFJz c1YpLGZHRVRVQllURSgzLFJ0dFYpKSkpOworICBmU0VUV09SRCgxLFJ4eFYsKGZHRVRXT1JEKDEs Unh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg0LFJzc1YpLGZHRVRVQllURSg0LFJ0dFYp KSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDUsUnNzViksZkdFVFVCWVRFKDUsUnR0VikpICsK KwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoNixSc3NWKSxmR0VUVUJZVEUoNixSdHRWKSkgKworCQkg ICBmTVBZMTZTUyhmR0VUQllURSg3LFJzc1YpLGZHRVRVQllURSg3LFJ0dFYpKSkpOworIH0pCisK KworUTZJTlNOKE01X3ZtcHlidXUsIlJkZDMyPXZtcHlidShSczMyLFJ0MzIpIixBVFRSSUJTKCks CisgInZlY3RvciBtcHkgYnl0ZXMiLAoreworICBmU0VUSEFMRigwLFJkZFYsKGZNUFkxNlNTKGZH RVRVQllURSgwLFJzViksZkdFVFVCWVRFKDAsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMSxSZGRWLChm TVBZMTZTUyhmR0VUVUJZVEUoMSxSc1YpLGZHRVRVQllURSgxLFJ0VikpKSk7CisgIGZTRVRIQUxG KDIsUmRkViwoZk1QWTE2U1MoZkdFVFVCWVRFKDIsUnNWKSxmR0VUVUJZVEUoMixSdFYpKSkpOwor ICBmU0VUSEFMRigzLFJkZFYsKGZNUFkxNlNTKGZHRVRVQllURSgzLFJzViksZkdFVFVCWVRFKDMs UnRWKSkpKTsKKyB9KQorCitRNklOU04oTTVfdm1weWJzdSwiUmRkMzI9dm1weWJzdShSczMyLFJ0 MzIpIixBVFRSSUJTKCksCisgInZlY3RvciBtcHkgYnl0ZXMiLAoreworICBmU0VUSEFMRigwLFJk ZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDAsUnNWKSxmR0VUVUJZVEUoMCxSdFYpKSkpOworICBmU0VU SEFMRigxLFJkZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDEsUnNWKSxmR0VUVUJZVEUoMSxSdFYpKSkp OworICBmU0VUSEFMRigyLFJkZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNWKSxmR0VUVUJZVEUo MixSdFYpKSkpOworICBmU0VUSEFMRigzLFJkZFYsKGZNUFkxNlNTKGZHRVRCWVRFKDMsUnNWKSxm R0VUVUJZVEUoMyxSdFYpKSkpOworIH0pCisKKworUTZJTlNOKE01X3ZtYWNidXUsIlJ4eDMyKz12 bXB5YnUoUnMzMixSdDMyKSIsQVRUUklCUygpLAorICJ2ZWN0b3IgbWFjIGJ5dGVzIiwKK3sKKyAg ZlNFVEhBTEYoMCxSeHhWLChmR0VUSEFMRigwLFJ4eFYpK2ZNUFkxNlNTKGZHRVRVQllURSgwLFJz ViksZkdFVFVCWVRFKDAsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMSxSeHhWLChmR0VUSEFMRigxLFJ4 eFYpK2ZNUFkxNlNTKGZHRVRVQllURSgxLFJzViksZkdFVFVCWVRFKDEsUnRWKSkpKTsKKyAgZlNF VEhBTEYoMixSeHhWLChmR0VUSEFMRigyLFJ4eFYpK2ZNUFkxNlNTKGZHRVRVQllURSgyLFJzViks ZkdFVFVCWVRFKDIsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMyxSeHhWLChmR0VUSEFMRigzLFJ4eFYp K2ZNUFkxNlNTKGZHRVRVQllURSgzLFJzViksZkdFVFVCWVRFKDMsUnRWKSkpKTsKKyB9KQorCitR NklOU04oTTVfdm1hY2JzdSwiUnh4MzIrPXZtcHlic3UoUnMzMixSdDMyKSIsQVRUUklCUygpLAor ICJ2ZWN0b3IgbWFjIGJ5dGVzIiwKK3sKKyAgZlNFVEhBTEYoMCxSeHhWLChmR0VUSEFMRigwLFJ4 eFYpK2ZNUFkxNlNTKGZHRVRCWVRFKDAsUnNWKSxmR0VUVUJZVEUoMCxSdFYpKSkpOworICBmU0VU SEFMRigxLFJ4eFYsKGZHRVRIQUxGKDEsUnh4VikrZk1QWTE2U1MoZkdFVEJZVEUoMSxSc1YpLGZH RVRVQllURSgxLFJ0VikpKSk7CisgIGZTRVRIQUxGKDIsUnh4ViwoZkdFVEhBTEYoMixSeHhWKStm TVBZMTZTUyhmR0VUQllURSgyLFJzViksZkdFVFVCWVRFKDIsUnRWKSkpKTsKKyAgZlNFVEhBTEYo MyxSeHhWLChmR0VUSEFMRigzLFJ4eFYpK2ZNUFkxNlNTKGZHRVRCWVRFKDMsUnNWKSxmR0VUVUJZ VEUoMyxSdFYpKSkpOworIH0pCisKKworCitRNklOU04oTTVfdmRtcHlic3UsIlJkZDMyPXZkbXB5 YnN1KFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyAidmVjdG9yIHF1YWQgbXB5IGJ5dGVz IiwKK3sKKyAgZlNFVEhBTEYoMCxSZGRWLGZTQVROKDE2LChmTVBZMTZTUyhmR0VUQllURSgwLFJz c1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisgICAgICAgICAJCSAgIGZNUFkxNlNTKGZHRVRCWVRF KDEsUnNzViksZkdFVFVCWVRFKDEsUnR0VikpKSkpOworICBmU0VUSEFMRigxLFJkZFYsZlNBVE4o MTYsKGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNzViksZkdFVFVCWVRFKDIsUnR0VikpICsKKyAgICAg ICAgIAkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMyxSc3NWKSxmR0VUVUJZVEUoMyxSdHRWKSkpKSk7 CisgIGZTRVRIQUxGKDIsUmRkVixmU0FUTigxNiwoZk1QWTE2U1MoZkdFVEJZVEUoNCxSc3NWKSxm R0VUVUJZVEUoNCxSdHRWKSkgKworICAgICAgICAgCQkgICBmTVBZMTZTUyhmR0VUQllURSg1LFJz c1YpLGZHRVRVQllURSg1LFJ0dFYpKSkpKTsKKyAgZlNFVEhBTEYoMyxSZGRWLGZTQVROKDE2LChm TVBZMTZTUyhmR0VUQllURSg2LFJzc1YpLGZHRVRVQllURSg2LFJ0dFYpKSArCisgICAgICAgICAJ CSAgIGZNUFkxNlNTKGZHRVRCWVRFKDcsUnNzViksZkdFVFVCWVRFKDcsUnR0VikpKSkpOworIH0p CisKKworUTZJTlNOKE01X3ZkbWFjYnN1LCJSeHgzMis9dmRtcHlic3UoUnNzMzIsUnR0MzIpOnNh dCIsQVRUUklCUygpLAorICJ2ZWN0b3IgcXVhZCBtYWMgYnl0ZXMiLAoreworICBmU0VUSEFMRigw LFJ4eFYsZlNBVE4oMTYsKGZHRVRIQUxGKDAsUnh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllU RSgwLFJzc1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDEs UnNzViksZkdFVFVCWVRFKDEsUnR0VikpKSkpOworICBmU0VUSEFMRigxLFJ4eFYsZlNBVE4oMTYs KGZHRVRIQUxGKDEsUnh4VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSgyLFJzc1YpLGZHRVRV QllURSgyLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDMsUnNzViksZkdFVFVCWVRF KDMsUnR0VikpKSkpOworICBmU0VUSEFMRigyLFJ4eFYsZlNBVE4oMTYsKGZHRVRIQUxGKDIsUnh4 VikgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg0LFJzc1YpLGZHRVRVQllURSg0LFJ0dFYpKSAr CisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDUsUnNzViksZkdFVFVCWVRFKDUsUnR0VikpKSkpOwor ICBmU0VUSEFMRigzLFJ4eFYsZlNBVE4oMTYsKGZHRVRIQUxGKDMsUnh4VikgKworCQkgICBmTVBZ MTZTUyhmR0VUQllURSg2LFJzc1YpLGZHRVRVQllURSg2LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNT KGZHRVRCWVRFKDcsUnNzViksZkdFVFVCWVRFKDcsUnR0VikpKSkpOworIH0pCisKKworCisvKiBG dWxsIHZlcnNpb24gKi8KKyN1bmRlZiBkbXB5X3NlbWEKKyNkZWZpbmUgZG1weV9zZW1hKE4pXAor eyBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2 U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSkgKyBcCisgICAgICAgICAgICAg ICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDEsUnR0 VikpKSkpO1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArIGZTQ0FM RShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpICsgXAorICAg ICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VU SEFMRigzLFJ0dFYpKSkpKTtcCit9CitRNklOU04oTTJfdmRtYWNzX3MwLCJSeHgzMis9dmRtcHko UnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiIixkbXB5X3NlbWEoMCkpCitRNklOU04o TTJfdmRtYWNzX3MxLCJSeHgzMis9dmRtcHkoUnNzMzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMo KSwiIixkbXB5X3NlbWEoMSkpCisKKyN1bmRlZiBkbXB5X3NlbWEKKyNkZWZpbmUgZG1weV9zZW1h KE4pXAoreyBmU0VUV09SRCgwLFJkZFYsZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigw LFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKSArIFwKKyAgICAgICAgICAgICAgZlNDQUxFKE4sZk1Q WTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSkpKTtcCisgIGZTRVRXT1JE KDEsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYo MixSdHRWKSkpICsgXAorICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigz LFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpKSkpO1wKK30KKworUTZJTlNOKE0yX3ZkbXB5c19zMCwi UmRkMzI9dmRtcHkoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiIixkbXB5X3NlbWEo MCkpCitRNklOU04oTTJfdmRtcHlzX3MxLCJSZGQzMj12ZG1weShSc3MzMixSdHQzMik6PDwxOnNh dCIsQVRUUklCUygpLCIiLGRtcHlfc2VtYSgxKSkKKworCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjb21wbGV4IG11bHRpcGx5 L21hYyB3aXRoICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogcmVhbCZpbWFnIGFyZSBw YWNrZWQgdG9nZXRoZXIgYW5kIGFsd2F5cyBzYXR1cmF0ZWQgKi8KKy8qIHRvIHByb3RlY3QgYWdh aW5zdCBvdmVyZmxvdy4gICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjdW5kZWYgY21weV9z ZW1hCisjZGVmaW5lIGNtcHlfc2VtYShOLENPTkpNSU5VUyxDT05KUExVUylcCit7IGZTRVRIQUxG KDEsUmRWLGZHRVRIQUxGKDEsKGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1Yp LGZHRVRIQUxGKDAsUnRWKSkpIENPTkpNSU5VUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDEsUnRW KSkpICsgMHg4MDAwKSkpKTtcCisgIGZTRVRIQUxGKDAsUmRWLGZHRVRIQUxGKDEsKGZTQVQoZlND QUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpIENPTkpQTFVT IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhm R0VUSEFMRigxLFJzViksZkdFVEhBTEYoMSxSdFYpKSkgKyAweDgwMDApKSkpO1wKK30KK1E2SU5T TihNMl9jbXB5cnNfczAsIlJkMzI9Y21weShSczMyLFJ0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwg ICAgIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgwLCssLSkpCitRNklOU04oTTJfY21weXJz X3MxLCJSZDMyPWNtcHkoUnMzMixSdDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJDb21wbGV4 IE11bHRpcGx5IixjbXB5X3NlbWEoMSwrLC0pKQorCisKK1E2SU5TTihNMl9jbXB5cnNjX3MwLCJS ZDMyPWNtcHkoUnMzMixSdDMyKik6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksICAgICJDb21w bGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwtLCspKQorUTZJTlNOKE0yX2NtcHlyc2NfczEsIlJk MzI9Y21weShSczMyLFJ0MzIqKTo8PDE6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksIkNvbXBs ZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgxLC0sKykpCisKKworI3VuZGVmIGNtcHlfc2VtYQorI2Rl ZmluZSBjbXB5X3NlbWEoTixDT05KTUlOVVMsQ09OSlBMVVMpXAoreyBmU0VUV09SRCgxLFJ4eFYs ZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1Yp LGZHRVRIQUxGKDAsUnRWKSkpIENPTkpNSU5VUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhB TEYoMSxSdFYpKSkpKTtcCisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4Vikg KyBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSkgQ09O SlBMVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxF KE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSk7XAorfQorUTZJ TlNOKE0yX2NtYWNzX3MwLCJSeHgzMis9Y21weShSczMyLFJ0MzIpOnNhdCIsQVRUUklCUygpLCAg ICAiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDAsKywtKSkKK1E2SU5TTihNMl9jbWFjc19z MSwiUnh4MzIrPWNtcHkoUnMzMixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIkNvbXBsZXggTXVs dGlwbHkiLGNtcHlfc2VtYSgxLCssLSkpCisKKy8qIEVKUDogTmVlZCBtYWMgdmVyc2lvbnMgdy8g Q09OSiBUPyAqLworUTZJTlNOKE0yX2NtYWNzY19zMCwiUnh4MzIrPWNtcHkoUnMzMixSdDMyKik6 c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwgICAgIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgw LC0sKykpCitRNklOU04oTTJfY21hY3NjX3MxLCJSeHgzMis9Y21weShSczMyLFJ0MzIqKTo8PDE6 c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDEsLSwr KSkKKworCisjdW5kZWYgY21weV9zZW1hCisjZGVmaW5lIGNtcHlfc2VtYShOLENPTkpNSU5VUyxD T05KUExVUylcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRI QUxGKDEsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBDT05KTUlOVVMgXAorICAgICAgICAgICAgICAg ICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMSxSdFYp KSkpKTtcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxG KDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBDT05KUExVUyBcCisgICAgICAgICAgICAgICAgICAg ICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkp O1wKK30KKworUTZJTlNOKE0yX2NtcHlzX3MwLCJSZGQzMj1jbXB5KFJzMzIsUnQzMik6c2F0IixB VFRSSUJTKCksICAgICJDb21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwrLC0pKQorUTZJTlNO KE0yX2NtcHlzX3MxLCJSZGQzMj1jbXB5KFJzMzIsUnQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJD b21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMSwrLC0pKQorCitRNklOU04oTTJfY21weXNjX3Mw LCJSZGQzMj1jbXB5KFJzMzIsUnQzMiopOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksICAgICJDb21w bGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwtLCspKQorUTZJTlNOKE0yX2NtcHlzY19zMSwiUmRk MzI9Y21weShSczMyLFJ0MzIqKTo8PDE6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiQ29tcGxleCBN dWx0aXBseSIsY21weV9zZW1hKDEsLSwrKSkKKworCisKKyN1bmRlZiBjbXB5X3NlbWEKKyNkZWZp bmUgY21weV9zZW1hKE4sQ09OSk1JTlVTLENPTkpQTFVTKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZT QVQoZkdFVFdPUkQoMSxSeHhWKSAtIChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzViks ZkdFVEhBTEYoMCxSdFYpKSkgQ09OSk1JTlVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhB TEYoMSxSdFYpKSkpKSk7XAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYp IC0gKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBD T05KUExVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlND QUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSkpO1wKK30K K1E2SU5TTihNMl9jbmFjc19zMCwiUnh4MzItPWNtcHkoUnMzMixSdDMyKTpzYXQiLEFUVFJJQlMo QV9BUkNIVjIpLCAgICAiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDAsKywtKSkKK1E2SU5T TihNMl9jbmFjc19zMSwiUnh4MzItPWNtcHkoUnMzMixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKEFf QVJDSFYyKSwiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDEsKywtKSkKKworLyogRUpQOiBu ZWVkIENPTkogdmVyc2lvbnM/ICovCitRNklOU04oTTJfY25hY3NjX3MwLCJSeHgzMi09Y21weShS czMyLFJ0MzIqKTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCAgICAiQ29tcGxleCBNdWx0aXBseSIs Y21weV9zZW1hKDAsLSwrKSkKK1E2SU5TTihNMl9jbmFjc2NfczEsIlJ4eDMyLT1jbXB5KFJzMzIs UnQzMiopOjw8MTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJDb21wbGV4IE11bHRpcGx5IixjbXB5 X3NlbWEoMSwtLCspKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBjb21wbGV4IGludGVycG9sYXRpb24gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLworLyogR2l2ZW4gYSBwYWlyIG9mIGNvbXBsZXggdmFsdWVzLCBz Y2FsZSBieSBhLGIsIHN1bSAgKi8KKy8qIFNhdHVyYXRlL3NoaWZ0MSBhbmQgcm91bmQvcGFjayAg ICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisjdW5kZWYgdnJjbXB5c19zZW1hCisjZGVmaW5lIHZy Y21weXNfc2VtYShOLElOV09SRCkgXAoreyBmU0VUV09SRCgxLFJkZFYsZlNBVChmU0NBTEUoTixm TVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkpICsgXAorICAgICAg ICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRI QUxGKDEsSU5XT1JEKSkpKSk7XAorICBmU0VUV09SRCgwLFJkZFYsZlNBVChmU0NBTEUoTixmTVBZ MTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkpICsgXAorICAgICAgICAg ICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxG KDEsSU5XT1JEKSkpKSk7XAorfQorCisKKworUTZJTlNOKE0yX3ZyY21weXNfczFfaCwiUmRkMzI9 dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNhdDpyYXc6aGkiLEFUVFJJQlMoQV9BUkNIVjMpLCAi VmVjdG9yIFJlZHVjZSBDb21wbGV4IE11bHRpcGx5IGJ5IFNjYWxhciIsdnJjbXB5c19zZW1hKDEs ZkdFVFdPUkQoMSxSdHRWKSkpCitRNklOU04oTTJfdnJjbXB5c19zMV9sLCJSZGQzMj12cmNtcHlz KFJzczMyLFJ0dDMyKTo8PDE6c2F0OnJhdzpsbyIsQVRUUklCUyhBX0FSQ0hWMyksICJWZWN0b3Ig UmVkdWNlIENvbXBsZXggTXVsdGlwbHkgYnkgU2NhbGFyIix2cmNtcHlzX3NlbWEoMSxmR0VUV09S RCgwLFJ0dFYpKSkKKworI3VuZGVmIHZyY21weXNfc2VtYQorI2RlZmluZSB2cmNtcHlzX3NlbWEo TixJTldPUkQpIFwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArIGZT Q0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMCxJTldPUkQpKSkgKyBc CisgICAgICAgICAgICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNz ViksZkdFVEhBTEYoMSxJTldPUkQpKSkpKTtcCisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRX T1JEKDAsUnh4VikgKyBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxG KDAsSU5XT1JEKSkpICsgXAorICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZT UyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDEsSU5XT1JEKSkpKSk7XAorfQorCisKKworUTZJ TlNOKE0yX3ZyY21weXNfYWNjX3MxX2gsIlJ4eDMyKz12cmNtcHlzKFJzczMyLFJ0dDMyKTo8PDE6 c2F0OnJhdzpoaSIsQVRUUklCUyhBX0FSQ0hWMyksICJWZWN0b3IgUmVkdWNlIENvbXBsZXggTXVs dGlwbHkgYnkgU2NhbGFyIix2cmNtcHlzX3NlbWEoMSxmR0VUV09SRCgxLFJ0dFYpKSkKK1E2SU5T TihNMl92cmNtcHlzX2FjY19zMV9sLCJSeHgzMis9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNh dDpyYXc6bG8iLEFUVFJJQlMoQV9BUkNIVjMpLCAiVmVjdG9yIFJlZHVjZSBDb21wbGV4IE11bHRp cGx5IGJ5IFNjYWxhciIsdnJjbXB5c19zZW1hKDEsZkdFVFdPUkQoMCxSdHRWKSkpCisKKyN1bmRl ZiB2cmNtcHlzX3NlbWEKKyNkZWZpbmUgdnJjbXB5c19zZW1hKE4sSU5XT1JEKSBcCit7IGZTRVRI QUxGKDEsUmRWLGZHRVRIQUxGKDEsZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJz c1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkpICsgXAorICAgICAgICAgICAgICAgICAgICAgICBmU0NB TEUoTixmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDEsSU5XT1JEKSkpICsgMHg4 MDAwKSkpO1wKKyAgZlNFVEhBTEYoMCxSZFYsZkdFVEhBTEYoMSxmU0FUKGZTQ0FMRShOLGZNUFkx NlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYoMCxJTldPUkQpKSkgKyBcCisgICAgICAgICAg ICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYo MSxJTldPUkQpKSkgKyAweDgwMDApKSk7XAorfQorCitRNklOU04oTTJfdnJjbXB5c19zMXJwX2gs IlJkMzI9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQ6cmF3OmhpIixBVFRSSUJTKEFf QVJDSFYzKSwgIlZlY3RvciBSZWR1Y2UgQ29tcGxleCBNdWx0aXBseSBieSBTY2FsYXIiLHZyY21w eXNfc2VtYSgxLGZHRVRXT1JEKDEsUnR0VikpKQorUTZJTlNOKE0yX3ZyY21weXNfczFycF9sLCJS ZDMyPXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0OnJhdzpsbyIsQVRUUklCUyhBX0FS Q0hWMyksICJWZWN0b3IgUmVkdWNlIENvbXBsZXggTXVsdGlwbHkgYnkgU2NhbGFyIix2cmNtcHlz X3NlbWEoMSxmR0VUV09SRCgwLFJ0dFYpKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogbWl4ZWQgbW9kZSAzMngx NiB2ZWN0b3IgZHVhbCBtdWx0aXBsaWVzICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisvKiBTSUdORUQgMzIgeCBTSUdORUQgMTYgKi8KKworCisjdW5kZWYgbWl4bXB5 X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZH RVRXT1JEKDEsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NWKSxm R0VUSEFMRigyLFJ0dFYpKSkpPj4xNikpICk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdF VFdPUkQoMCxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZH RVRIQUxGKDAsUnR0VikpKSk+PjE2KSkgKTsgXAorfQorUTZJTlNOKE0yX21tYWNsc19zMCwiUnh4 MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbWFjbHNfczEsIlJ4eDMy Kz12bXB5d2VoKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lv biBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmlu ZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhW KSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDMsUnR0 VikpKSk+PjE2KSApKTsgXAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYp ICsgKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMSxSdHRW KSkpKT4+MTYgKSkpOyBcCit9CitRNklOU04oTTJfbW1hY2hzX3MwLCJSeHgzMis9dm1weXdvaChS c3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHki LG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tYWNoc19zMSwiUnh4MzIrPXZtcHl3b2goUnNz MzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5Iixt aXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1h KE4pXAoreyBmU0VUV09SRCgxLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09S RCgxLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpKSk+PjE2KSk7IFwKKyAgZlNFVFdPUkQoMCxSZGRW LGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFMRigwLFJ0 dFYpKSkpPj4xNikpOyBcCit9CitRNklOU04oTTJfbW1weWxfczAsIlJkZDMyPXZtcHl3ZWgoUnNz MzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5Iixt aXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5bF9zMSwiUmRkMzI9dm1weXdlaChSc3MzMixS dHQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1w eV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilc Cit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDEs UnNzViksZkdFVEhBTEYoMyxSdHRWKSkpKT4+MTYpKTsgXAorICBmU0VUV09SRCgwLFJkZFYsZlNB VCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEsUnR0Vikp KSk+PjE2KSk7IFwKK30KK1E2SU5TTihNMl9tbXB5aF9zMCwiUmRkMzI9dm1weXdvaChSc3MzMixS dHQzMik6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1w eV9zZW1hKDApKQorUTZJTlNOKE0yX21tcHloX3MxLCJSZGQzMj12bXB5d29oKFJzczMyLFJ0dDMy KTo8PDE6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoMSkpCisKKworLyogV2l0aCByb3VuZGluZyAqLworCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNk ZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZHRVRXT1JEKDEs Unh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NWKSxmR0VUSEFMRigy LFJ0dFYpKSkrMHg4MDAwKT4+MTYpKSApOyBcCisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRX T1JEKDAsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VU SEFMRigwLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKSApOyBcCit9CitRNklOU04oTTJfbW1hY2xzX3Jz MCwiUnh4MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1p eGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1hY2xz X3JzMSwiUnh4MzIrPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCks Ik1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXht cHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQo ZkdFVFdPUkQoMSxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1Yp LGZHRVRIQUxGKDMsUnR0VikpKSsweDgwMDApPj4xNikgKSk7IFwKKyAgZlNFVFdPUkQoMCxSeHhW LGZTQVQoZkdFVFdPUkQoMCxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgw LFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSsweDgwMDApPj4xNiApKSk7IFwKK30KK1E2SU5TTihN Ml9tbWFjaHNfcnMwLCJSeHgzMis9dm1weXdvaChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklC UygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5T TihNMl9tbWFjaHNfcnMxLCJSeHgzMis9dm1weXdvaChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQi LEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKwor I3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgx LFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxG KDIsUnR0VikpKSsweDgwMDApPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKChmU0NB TEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkpKzB4ODAw MCk+PjE2KSk7IFwKK30KK1E2SU5TTihNMl9tbXB5bF9yczAsIlJkZDMyPXZtcHl3ZWgoUnNzMzIs UnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIs bWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1weWxfcnMxLCJSZGQzMj12bXB5d2VoKFJzczMy LFJ0dDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHki LG1peG1weV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3Nl bWEoTilcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRX T1JEKDEsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpKzB4ODAwMCk+PjE2KSk7IFwKKyAgZlNFVFdP UkQoMCxSZGRWLGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VU SEFMRigxLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHloX3JzMCwi UmRkMzI9dm1weXdvaChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQg UHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5aF9yczEs IlJkZDMyPXZtcHl3b2goUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVk IFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKworI3VuZGVmIG1peG1weV9z ZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKERFU1QsRVFVQUxTLE4pXAoreyBERVNUIEVRVUFMUyBm U0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpICsg ZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKTt9 CisKK1E2SU5TTihNNF92cm1weWVoX3MwLCJSZGQzMj12cm1weXdlaChSc3MzMixSdHQzMikiLEFU VFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoUmRkViw9 LDApKQorUTZJTlNOKE00X3ZybXB5ZWhfczEsIlJkZDMyPXZybXB5d2VoKFJzczMyLFJ0dDMyKTo8 PDEiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSZGRW LD0sMSkpCitRNklOU04oTTRfdnJtcHllaF9hY2NfczAsIlJ4eDMyKz12cm1weXdlaChSc3MzMixS dHQzMikiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoUnh4ViwrPSwwKSkKK1E2SU5TTihNNF92cm1weWVoX2FjY19zMSwiUnh4MzIrPXZybXB5d2Vo KFJzczMyLFJ0dDMyKTo8PDEiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5Iixt aXhtcHlfc2VtYShSeHhWLCs9LDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4 bXB5X3NlbWEoREVTVCxFUVVBTFMsTilcCit7IERFU1QgRVFVQUxTIGZTQ0FMRShOLGZNUFkzMjE2 U1MoZkdFVFdPUkQoMSxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKSkgKyBmU0NBTEUoTixmTVBZMzIx NlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkpO30KKworUTZJTlNOKE00X3Zy bXB5b2hfczAsIlJkZDMyPXZybXB5d29oKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCAgICAiTWl4 ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSZGRWLD0sMCkpCitRNklOU04oTTRf dnJtcHlvaF9zMSwiUmRkMzI9dnJtcHl3b2goUnNzMzIsUnR0MzIpOjw8MSIsQVRUUklCUygpLCJN aXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKFJkZFYsPSwxKSkKK1E2SU5TTihN NF92cm1weW9oX2FjY19zMCwiUnh4MzIrPXZybXB5d29oKFJzczMyLFJ0dDMyKSIsQVRUUklCUygp LCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSeHhWLCs9LDApKQor UTZJTlNOKE00X3ZybXB5b2hfYWNjX3MxLCJSeHgzMis9dnJtcHl3b2goUnNzMzIsUnR0MzIpOjw8 MSIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKFJ4eFYs Kz0sMSkpCisKKworCisKKworCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3Nl bWEoTixILFJORClcCit7ICBSZFYgPSBmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNTKFJzVixmR0VU SEFMRihILFJ0VikpKVJORCk+PjE2KTsgXAorfQorUTZJTlNOKE0yX2htbXB5bF9yczEsIlJkMzI9 bXB5KFJzMzIsUnQuTDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksIk1peGVkIFBy ZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSwwLCsweDgwMDApKQorUTZJTlNOKE0yX2ht bXB5aF9yczEsIlJkMzI9bXB5KFJzMzIsUnQuSDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUyhBX0FS Q0hWMiksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSwxLCsweDgwMDAp KQorUTZJTlNOKE0yX2htbXB5bF9zMSwiUmQzMj1tcHkoUnMzMixSdC5MMzIpOjw8MTpzYXQiLEFU VFJJQlMoQV9BUkNIVjIpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEs MCwpKQorUTZJTlNOKE0yX2htbXB5aF9zMSwiUmQzMj1tcHkoUnMzMixSdC5IMzIpOjw8MTpzYXQi LEFUVFJJQlMoQV9BUkNIVjIpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1h KDEsMSwpKQorCisKKworCisKKworCisKKworLyogU0lHTkVEIDMyIHggVU5TSUdORUQgMTYgKi8K KworI3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09S RCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZH RVRXT1JEKDEsUnNzViksZkdFVFVIQUxGKDIsUnR0VikpKSk+PjE2KSkgKTsgXAorICBmU0VUV09S RCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZH RVRXT1JEKDAsUnNzViksZkdFVFVIQUxGKDAsUnR0VikpKSk+PjE2KSkgKTsgXAorfQorUTZJTlNO KE0yX21tYWN1bHNfczAsIlJ4eDMyKz12bXB5d2V1aChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJT KCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNO KE0yX21tYWN1bHNfczEsIlJ4eDMyKz12bXB5d2V1aChSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRU UklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEpKQorCisjdW5k ZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUnh4 VixmU0FUKGZHRVRXT1JEKDEsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQo MSxSc3NWKSxmR0VUVUhBTEYoMyxSdHRWKSkpKT4+MTYpICkpOyBcCisgIGZTRVRXT1JEKDAsUnh4 VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQo MCxSc3NWKSxmR0VUVUhBTEYoMSxSdHRWKSkpKT4+MTYgKSkpOyBcCit9CitRNklOU04oTTJfbW1h Y3Voc19zMCwiUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwgICAg Ik1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1h Y3Voc19zMSwiUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCks Ik1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXht cHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSZGRWLGZTQVQo KGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQoMSxSc3NWKSxmR0VUVUhBTEYoMixSdHRWKSkp KT4+MTYpKTsgXAorICBmU0VUV09SRCgwLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTVShm R0VUV09SRCgwLFJzc1YpLGZHRVRVSEFMRigwLFJ0dFYpKSkpPj4xNikpOyBcCit9CitRNklOU04o TTJfbW1weXVsX3MwLCJSZGQzMj12bXB5d2V1aChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCks ICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0y X21tcHl1bF9zMSwiUmRkMzI9dm1weXdldWgoUnNzMzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMo KSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1p eG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJkZFYsZlNB VCgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgxLFJzc1YpLGZHRVRVSEFMRigzLFJ0dFYp KSkpPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNV KGZHRVRXT1JEKDAsUnNzViksZkdFVFVIQUxGKDEsUnR0VikpKSk+PjE2KSk7IFwKK30KK1E2SU5T TihNMl9tbXB5dWhfczAsIlJkZDMyPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMo KSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04o TTJfbW1weXVoX3MxLCJSZGQzMj12bXB5d291aChSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRUUklC UygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEpKQorCisKKy8qIFdp dGggcm91bmRpbmcgKi8KKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1h KE4pXAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgKChmU0NBTEUo TixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNzViksZkdFVFVIQUxGKDIsUnR0VikpKSsweDgwMDAp Pj4xNikpICk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhWKSArICgo ZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgwLFJzc1YpLGZHRVRVSEFMRigwLFJ0dFYpKSkr MHg4MDAwKT4+MTYpKSApOyBcCit9CitRNklOU04oTTJfbW1hY3Vsc19yczAsIlJ4eDMyKz12bXB5 d2V1aChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9u IE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbWFjdWxzX3JzMSwiUnh4MzIr PXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVj aXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNk ZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZHRVRXT1JEKDEs Unh4VikgKyAoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQoMSxSc3NWKSxmR0VUVUhBTEYo MyxSdHRWKSkpKzB4ODAwMCk+PjE2KSApKTsgXAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VU V09SRCgwLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDAsUnNzViksZkdF VFVIQUxGKDEsUnR0VikpKSsweDgwMDApPj4xNiApKSk7IFwKK30KK1E2SU5TTihNMl9tbWFjdWhz X3JzMCwiUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpybmQ6c2F0IixBVFRSSUJTKCksICAg ICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21t YWN1aHNfcnMxLCJSeHgzMis9dm1weXdvdWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRS SUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRl ZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSZGRW LGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQoMSxSc3NWKSxmR0VUVUhBTEYoMixS dHRWKSkpKzB4ODAwMCk+PjE2KSk7IFwKKyAgZlNFVFdPUkQoMCxSZGRWLGZTQVQoKGZTQ0FMRShO LGZNUFkzMjE2U1UoZkdFVFdPUkQoMCxSc3NWKSxmR0VUVUhBTEYoMCxSdHRWKSkpKzB4ODAwMCk+ PjE2KSk7IFwKK30KK1E2SU5TTihNMl9tbXB5dWxfcnMwLCJSZGQzMj12bXB5d2V1aChSc3MzMixS dHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5Iixt aXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5dWxfcnMxLCJSZGQzMj12bXB5d2V1aChSc3Mz MixSdHQzMik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5 IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9z ZW1hKE4pXAoreyBmU0VUV09SRCgxLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VU V09SRCgxLFJzc1YpLGZHRVRVSEFMRigzLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKTsgXAorICBmU0VU V09SRCgwLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgwLFJzc1YpLGZH RVRVSEFMRigxLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHl1aF9y czAsIlJkZDMyPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTpybmQ6c2F0IixBVFRSSUJTKCksICAgICJN aXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tcHl1 aF9yczEsIlJkZDMyPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygp LCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEpKQorCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qIGNvbXBsZXggbWFjIHdpdGggZnVsbCA2NC1iaXQgYWNjdW0gLSBubyBzYXQsIG5vIHNoaWZ0 ICAgICAgKi8KKy8qIGVpdGhlciBkbyByZWFsIG9yIGFjY3VtLCBuZXZlciBib3RoICAgICAgICAg ICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKE0yX3ZyY21hY2lfczAsIlJ4eDMy Kz12cmNtcHlpKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29tcGxleCBNYWMgSW1h Z2luYXJ5IiwKK3sKK1J4eFYgPSBSeHhWICsgZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VU SEFMRigwLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NW KSxmR0VUSEFMRigxLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYo MyxSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAgZk1QWTE2U1MoZkdF VEhBTEYoMixSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKTtcCit9KQorCitRNklOU04oTTJfdnJjbWFj cl9zMCwiUnh4MzIrPXZyY21weXIoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksIlZlY3RvciBDb21w bGV4IE1hYyBSZWFsIiwKK3sgUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1Yp LGZHRVRIQUxGKDAsUnR0VikpIC0gXAorICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxG KDEsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkgKyBcCisgICAgICAgICAgICAgICAgZk1QWTE2U1Mo ZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSAtIFwKKyAgICAgICAgICAgICAgICBm TVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK30pCisKK1E2SU5T TihNMl92cmNtYWNpX3MwYywiUnh4MzIrPXZyY21weWkoUnNzMzIsUnR0MzIqKSIsQVRUUklCUyhB X0FSQ0hWMiksIlZlY3RvciBDb21wbGV4IE1hYyBJbWFnaW5hcnkiLAoreworUnh4ViA9IFJ4eFYg KyBmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpIC0gXAorICAgICAg ICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpICsgXAor ICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDIsUnR0Vikp IC0gXAorICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDMs UnR0VikpO1wKK30pCisKK1E2SU5TTihNMl92cmNtYWNyX3MwYywiUnh4MzIrPXZyY21weXIoUnNz MzIsUnR0MzIqKSIsQVRUUklCUyhBX0FSQ0hWMiksIlZlY3RvciBDb21wbGV4IE1hYyBSZWFsIiwK K3sgUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0 VikpICsgXAorICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhB TEYoMSxSdHRWKSkgKyBcCisgICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NW KSxmR0VUSEFMRigyLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFM RigzLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK30pCisKK1E2SU5TTihNMl9jbWFjaV9zMCwi Unh4MzIrPWNtcHlpKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTWFjIElt YWdpbmFyeSIsCit7CitSeHhWID0gUnh4ViArIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VU SEFMRigwLFJ0VikpICsgXAorICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigwLFJzViks ZkdFVEhBTEYoMSxSdFYpKTsKK30pCisKK1E2SU5TTihNMl9jbWFjcl9zMCwiUnh4MzIrPWNtcHly KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTWFjIFJlYWwiLAoreyBSeHhW ID0gUnh4ViArIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpIC0gXAor ICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0Vikp OworfSkKKworCitRNklOU04oTTJfdnJjbXB5aV9zMCwiUmRkMzI9dnJjbXB5aShSc3MzMixSdHQz MikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTXB5IEltYWdpbmFyeSIsCit7CitSZGRWID0g Zk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSArIFwKKyAgICAgICBm TVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpICsgXAorICAgICAgIGZN UFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMixSdHRWKSkgKyBcCisgICAgICAgZk1Q WTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKTtcCit9KQorCitRNklOU04o TTJfdnJjbXB5cl9zMCwiUmRkMzI9dnJjbXB5cihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiVmVj dG9yIENvbXBsZXggTXB5IFJlYWwiLAoreyBSZGRWID0gZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NW KSxmR0VUSEFMRigwLFJ0dFYpKSAtIFwKKyAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNz ViksZkdFVEhBTEYoMSxSdHRWKSkgKyBcCisgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigyLFJz c1YpLGZHRVRIQUxGKDIsUnR0VikpIC0gXAorICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMyxS c3NWKSxmR0VUSEFMRigzLFJ0dFYpKTtcCit9KQorCitRNklOU04oTTJfdnJjbXB5aV9zMGMsIlJk ZDMyPXZyY21weWkoUnNzMzIsUnR0MzIqKSIsQVRUUklCUyhBX0FSQ0hWMiksIlZlY3RvciBDb21w bGV4IE1weSBJbWFnaW5hcnkiLAoreworUmRkViA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViks ZkdFVEhBTEYoMCxSdHRWKSkgLSBcCisgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxm R0VUSEFMRigxLFJ0dFYpKSArIFwKKyAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZH RVRIQUxGKDIsUnR0VikpIC0gXAorICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdF VEhBTEYoMyxSdHRWKSk7XAorfSkKKworUTZJTlNOKE0yX3ZyY21weXJfczBjLCJSZGQzMj12cmNt cHlyKFJzczMyLFJ0dDMyKikiLEFUVFJJQlMoQV9BUkNIVjIpLCJWZWN0b3IgQ29tcGxleCBNcHkg UmVhbCIsCit7IFJkZFYgPSBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0 VikpICsgXAorICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0 dFYpKSArIFwKKyAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixS dHRWKSkgKyBcCisgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDMs UnR0VikpO1wKK30pCisKK1E2SU5TTihNMl9jbXB5aV9zMCwiUmRkMzI9Y21weWkoUnMzMixSdDMy KSIsQVRUUklCUygpLCJWZWN0b3IgQ29tcGxleCBNcHkgSW1hZ2luYXJ5IiwKK3sKK1JkZFYgPSBm TVBZMTZTUyhmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMCxSdFYpKSArIFwKKyAgICAgICBmTVBZ MTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMSxSdFYpKTsKK30pCisKK1E2SU5TTihNMl9j bXB5cl9zMCwiUmRkMzI9Y21weXIoUnMzMixSdDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29tcGxl eCBNcHkgUmVhbCIsCit7IFJkZFYgPSBmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYo MCxSdFYpKSAtIFwKKyAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigx LFJ0VikpOworfSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKiBDb21wbGV4IG1weS9tYWMgd2l0aCAyeDMyIGJp dCBhY2N1bSwgc2F0LCBzaGlmdCAgICAgICAgICAgICovCisvKiAzMngxNiByZWFsIG9yIGltYWcg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNp ZiAxCisKK1E2SU5TTihNNF9jbXB5aV93aCwiUmQzMj1jbXB5aXdoKFJzczMyLFJ0MzIpOjw8MTpy bmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBDb21wbGV4IE11bHRpcGx5IiwKK3sK KyBSZFYgPSBmU0FUKCAgKCAgZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEs UnRWKSkKKyAgICAgICAgICAgICAgICsgZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRI QUxGKDAsUnRWKSkKKyAgICAgICAgICAgICAgICsgMHg0MDAwKT4+MTUpOworfSkKKworCitRNklO U04oTTRfY21weXJfd2gsIlJkMzI9Y21weXJ3aChSc3MzMixSdDMyKTo8PDE6cm5kOnNhdCIsQVRU UklCUygpLCJNaXhlZCBQcmVjaXNpb24gQ29tcGxleCBNdWx0aXBseSIsCit7CisgUmRWID0gZlNB VCggICggIGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFMRigwLFJ0VikpCisgICAg ICAgICAgICAgICAtIGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NWKSxmR0VUSEFMRigxLFJ0Vikp CisgICAgICAgICAgICAgICArIDB4NDAwMCk+PjE1KTsKK30pCisKK1E2SU5TTihNNF9jbXB5aV93 aGMsIlJkMzI9Y21weWl3aChSc3MzMixSdDMyKik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4 ZWQgUHJlY2lzaW9uIENvbXBsZXggTXVsdGlwbHkiLAoreworIFJkViA9IGZTQVQoICAoICBmTVBZ MzIxNlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMCxSdFYpKQorICAgICAgICAgICAgICAg LSBmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMSxSdFYpKQorICAgICAgICAg ICAgICAgKyAweDQwMDApPj4xNSk7Cit9KQorCisKK1E2SU5TTihNNF9jbXB5cl93aGMsIlJkMzI9 Y21weXJ3aChSc3MzMixSdDMyKik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lz aW9uIENvbXBsZXggTXVsdGlwbHkiLAoreworIFJkViA9IGZTQVQoICAoICBmTVBZMzIxNlNTKGZH RVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMCxSdFYpKQorICAgICAgICAgICAgICAgKyBmTVBZMzIx NlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMSxSdFYpKQorICAgICAgICAgICAgICAgKyAw eDQwMDApPj4xNSk7Cit9KQorCisKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgbXB5L21h YyB3aXRoIDJ4MzIgYml0IGFjY3VtLCBzYXQsIHNoaWZ0ICAgICAgICAgICAgICovCisvKiBlaXRo ZXIgZG8gcmVhbCBvciBpbWFnLCAgbmV2ZXIgYm90aCAgICAgICAgICAgICAgICAgICAgICAgICov CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKKyN1bmRlZiBWQ01QWVNFTUkKKyNkZWZpbmUgVkNNUFlTRU1JKERTVCxBQ0Mw LEFDQzEsU0hJRlQsU0FUKSBcCisJZlNFVFdPUkQoMCxEU1QsU0FUKEFDQzAgZlNDQUxFKFNISUZU LGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkgKyBcCisJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxm R0VUSEFMRigxLFJ0dFYpKSkpKTsgXAorCWZTRVRXT1JEKDEsRFNULFNBVChBQ0MxIGZTQ0FMRShT SElGVCxmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpICsgXAorCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNz ViksZkdFVEhBTEYoMyxSdHRWKSkpKSk7IFwKKworI3VuZGVmIFZDTVBZU0VNUgorI2RlZmluZSBW Q01QWVNFTVIoRFNULEFDQzAsQUNDMSxTSElGVCxTQVQpIFwKKwlmU0VUV09SRCgwLERTVCxTQVQo QUNDMCBmU0NBTEUoU0hJRlQsZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0 dFYpKSAtIFwKKwkgICAgICAgICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNz ViksZkdFVEhBTEYoMSxSdHRWKSkpKSk7IFwKKwlmU0VUV09SRCgxLERTVCxTQVQoQUNDMSBmU0NB TEUoU0hJRlQsZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSAtIFwK KwkgICAgICAgICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhB TEYoMyxSdHRWKSkpKSk7IFwKKworCisjdW5kZWYgVkNNUFlJUgorI2RlZmluZSBWQ01QWUlSKFRB R0JBU0UsRFNUU1lOLERTVFZBTCxBQ0NTRU0sQUNDVkFMMCxBQ0NWQUwxLFNISUZUU1lOLFNISUZU VkFMLFNBVFNZTixTQVRWQUwpIFwKK1E2SU5TTihNMl8jI1RBR0JBU0UjI2ksRFNUU1lOIEFDQ1NF TSAidmNtcHlpKFJzczMyLFJ0dDMyKSIgU0hJRlRTWU4gU0FUU1lOLEFUVFJJQlMoQV9BUkNIVjIp LCBcCisJIlZlY3RvciBDb21wbGV4IE11bHRpcGx5IEltYWdpbmFyeSIsIHsgVkNNUFlTRU1JKERT VFZBTCxBQ0NWQUwwLEFDQ1ZBTDEsU0hJRlRWQUwsU0FUVkFMKTsgfSkgXAorUTZJTlNOKE0yXyMj VEFHQkFTRSMjcixEU1RTWU4gQUNDU0VNICJ2Y21weXIoUnNzMzIsUnR0MzIpIiBTSElGVFNZTiBT QVRTWU4sQVRUUklCUyhBX0FSQ0hWMiksIFwKKwkiVmVjdG9yIENvbXBsZXggTXVsdGlwbHkgSW1h Z2luYXJ5IiwgeyBWQ01QWVNFTVIoRFNUVkFMLEFDQ1ZBTDAsQUNDVkFMMSxTSElGVFZBTCxTQVRW QUwpOyB9KQorCisKK1ZDTVBZSVIodmNtcHlfczBfc2F0XywiUmRkMzIiLFJkZFYsIj0iLCwsIiIs MCwiOnNhdCIsZlNBVCkKK1ZDTVBZSVIodmNtcHlfczFfc2F0XywiUmRkMzIiLFJkZFYsIj0iLCws Ijo8PDEiLDEsIjpzYXQiLGZTQVQpCitWQ01QWUlSKHZjbWFjX3MwX3NhdF8sIlJ4eDMyIixSeHhW LCIrPSIsZkdFVFdPUkQoMCxSeHhWKSArICxmR0VUV09SRCgxLFJ4eFYpICsgLCIiLDAsIjpzYXQi LGZTQVQpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICBSb3RhdGlvbiAgLS0gYnkgMCwgOTAsIDE4 MCwgb3IgMjcwIG1lYW5zIG11bHQgYnkgMSwgSiwgLTEsIC1KICAgICAqCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCitRNklOU04oUzJfdmNyb3RhdGUsIlJkZDMyPXZjcm90YXRlKFJzczMyLFJ0MzIpIixBVFRS SUJTKEFfQVJDSFYyKSwiUm90YXRlIGNvbXBsZXggdmFsdWUgYnkgbXVsdGlwbGUgb2YgUEkvMiIs Cit7CisJZkhJREUoc2l6ZTF1X3QgdG1wOykKKwl0bXAgPSBmRVhUUkFDVFVfUkFOR0UoUnRWLDEs MCk7CisJaWYgKHRtcCA9PSAwKSB7IC8qIE5vIHJvdGF0aW9uICovCisJCWZTRVRIQUxGKDAsUmRk VixmR0VUSEFMRigwLFJzc1YpKTsKKwkJZlNFVEhBTEYoMSxSZGRWLGZHRVRIQUxGKDEsUnNzVikp OworCX0gZWxzZSBpZiAodG1wID09IDEpIHsgLyogTXVsdGlwbHkgYnkgLUogKi8KKwkJZlNFVEhB TEYoMCxSZGRWLGZHRVRIQUxGKDEsUnNzVikpOworCQlmU0VUSEFMRigxLFJkZFYsZlNBVEgoLWZH RVRIQUxGKDAsUnNzVikpKTsKKwl9IGVsc2UgaWYgKHRtcCA9PSAyKSB7IC8qIE11bHRpcGx5IGJ5 IEogKi8KKwkJZlNFVEhBTEYoMCxSZGRWLGZTQVRIKC1mR0VUSEFMRigxLFJzc1YpKSk7CisJCWZT RVRIQUxGKDEsUmRkVixmR0VUSEFMRigwLFJzc1YpKTsKKwl9IGVsc2UgeyAvKiBNdWx0aXBseSBi eSAtMSAqLworCQlmSElERShpZiAodG1wICE9IDMpIGZhdGFsKCJDIGlzIGJyb2tlbiIpOykKKwkJ ZlNFVEhBTEYoMCxSZGRWLGZTQVRIKC1mR0VUSEFMRigwLFJzc1YpKSk7CisJCWZTRVRIQUxGKDEs UmRkVixmU0FUSCgtZkdFVEhBTEYoMSxSc3NWKSkpOworCX0KKwl0bXAgPSBmRVhUUkFDVFVfUkFO R0UoUnRWLDMsMik7CisJaWYgKHRtcCA9PSAwKSB7IC8qIE5vIHJvdGF0aW9uICovCisJCWZTRVRI QUxGKDIsUmRkVixmR0VUSEFMRigyLFJzc1YpKTsKKwkJZlNFVEhBTEYoMyxSZGRWLGZHRVRIQUxG KDMsUnNzVikpOworCX0gZWxzZSBpZiAodG1wID09IDEpIHsgLyogTXVsdGlwbHkgYnkgLUogKi8K KwkJZlNFVEhBTEYoMixSZGRWLGZHRVRIQUxGKDMsUnNzVikpOworCQlmU0VUSEFMRigzLFJkZFYs ZlNBVEgoLWZHRVRIQUxGKDIsUnNzVikpKTsKKwl9IGVsc2UgaWYgKHRtcCA9PSAyKSB7IC8qIE11 bHRpcGx5IGJ5IEogKi8KKwkJZlNFVEhBTEYoMixSZGRWLGZTQVRIKC1mR0VUSEFMRigzLFJzc1Yp KSk7CisJCWZTRVRIQUxGKDMsUmRkVixmR0VUSEFMRigyLFJzc1YpKTsKKwl9IGVsc2UgeyAvKiBN dWx0aXBseSBieSAtMSAqLworCQlmSElERShpZiAodG1wICE9IDMpIGZhdGFsKCJDIGlzIGJyb2tl biIpOykKKwkJZlNFVEhBTEYoMixSZGRWLGZTQVRIKC1mR0VUSEFMRigyLFJzc1YpKSk7CisJCWZT RVRIQUxGKDMsUmRkVixmU0FUSCgtZkdFVEhBTEYoMyxSc3NWKSkpOworCX0KK30pCisKKworUTZJ TlNOKFM0X3ZyY3JvdGF0ZV9hY2MsIlJ4eDMyKz12cmNyb3RhdGUoUnNzMzIsUnQzMiwjdTIpIixB VFRSSUJTKCksIlJvdGF0ZSBhbmQgUmVkdWNlIEJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTsgaW50 IHRtcHI7IGludCB0bXBpOyB1bnNpZ25lZCBpbnQgY29udHJvbDspCisJZkhJREUoaW50IHN1bXI7 IGludCBzdW1pOykKKwlzdW1yID0gMDsKKwlzdW1pID0gMDsKKwljb250cm9sID0gZkdFVFVCWVRF KHVpVixSdFYpOworCWZvciAoaSA9IDA7IGkgPCA4OyBpICs9IDIpIHsKKwkJdG1wciA9IGZHRVRC WVRFKGkgICxSc3NWKTsKKwkJdG1waSA9IGZHRVRCWVRFKGkrMSxSc3NWKTsKKwkJc3dpdGNoIChj b250cm9sICYgMykgeworCQkJY2FzZSAwOiAvKiBObyBSb3RhdGlvbiAqLworCQkJCXN1bXIgKz0g dG1wcjsKKwkJCQlzdW1pICs9IHRtcGk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6IC8qIE11bHRp cGx5IGJ5IC1KICovCisJCQkJc3VtciArPSB0bXBpOworCQkJCXN1bWkgLT0gdG1wcjsKKwkJCQli cmVhazsKKwkJCWNhc2UgMjogLyogTXVsdGlwbHkgYnkgSiAqLworCQkJCXN1bXIgLT0gdG1waTsK KwkJCQlzdW1pICs9IHRtcHI7CisJCQkJYnJlYWs7CisJCQljYXNlIDM6IC8qIE11bHRpcGx5IGJ5 IC0xICovCisJCQkJc3VtciAtPSB0bXByOworCQkJCXN1bWkgLT0gdG1waTsKKwkJCQlicmVhazsK KwkJCWZISURFKGRlZmF1bHQ6IGZhdGFsKCJDIGlzIGJyb2tlbiEiKTspCisJCX0KKwkJY29udHJv bCA9IGNvbnRyb2wgPj4gMjsKKwl9CisJZlNFVFdPUkQoMCxSeHhWLGZHRVRXT1JEKDAsUnh4Vikg KyBzdW1yKTsKKwlmU0VUV09SRCgxLFJ4eFYsZkdFVFdPUkQoMSxSeHhWKSArIHN1bWkpOworfSkK KworUTZJTlNOKFM0X3ZyY3JvdGF0ZSwiUmRkMzI9dnJjcm90YXRlKFJzczMyLFJ0MzIsI3UyKSIs QVRUUklCUygpLCJSb3RhdGUgYW5kIFJlZHVjZSBCeXRlcyIsCit7CisJZkhJREUoaW50IGk7IGlu dCB0bXByOyBpbnQgdG1waTsgdW5zaWduZWQgaW50IGNvbnRyb2w7KQorCWZISURFKGludCBzdW1y OyBpbnQgc3VtaTspCisJc3VtciA9IDA7CisJc3VtaSA9IDA7CisJY29udHJvbCA9IGZHRVRVQllU RSh1aVYsUnRWKTsKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSArPSAyKSB7CisJCXRtcHIgPSBmR0VU QllURShpICAsUnNzVik7CisJCXRtcGkgPSBmR0VUQllURShpKzEsUnNzVik7CisJCXN3aXRjaCAo Y29udHJvbCAmIDMpIHsKKwkJCWNhc2UgMDogLyogTm8gUm90YXRpb24gKi8KKwkJCQlzdW1yICs9 IHRtcHI7CisJCQkJc3VtaSArPSB0bXBpOworCQkJCWJyZWFrOworCQkJY2FzZSAxOiAvKiBNdWx0 aXBseSBieSAtSiAqLworCQkJCXN1bXIgKz0gdG1waTsKKwkJCQlzdW1pIC09IHRtcHI7CisJCQkJ YnJlYWs7CisJCQljYXNlIDI6IC8qIE11bHRpcGx5IGJ5IEogKi8KKwkJCQlzdW1yIC09IHRtcGk7 CisJCQkJc3VtaSArPSB0bXByOworCQkJCWJyZWFrOworCQkJY2FzZSAzOiAvKiBNdWx0aXBseSBi eSAtMSAqLworCQkJCXN1bXIgLT0gdG1wcjsKKwkJCQlzdW1pIC09IHRtcGk7CisJCQkJYnJlYWs7 CisJCQlmSElERShkZWZhdWx0OiBmYXRhbCgiQyBpcyBicm9rZW4hIik7KQorCQl9CisJCWNvbnRy b2wgPSBjb250cm9sID4+IDI7CisJfQorCWZTRVRXT1JEKDAsUmRkVixzdW1yKTsKKwlmU0VUV09S RCgxLFJkZFYsc3VtaSk7Cit9KQorCisKK1E2SU5TTihTMl92Y25lZ2gsIlJkZDMyPXZjbmVnaChS c3MzMixSdDMyKSIsQVRUUklCUygpLCJDb25kaXRpb25hbCBOZWdhdGUgaGFsZndvcmRzIiwKK3sK KwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlpZiAoZkdFVEJJ VChpLFJ0VikpIHsKKwkJCWZTRVRIQUxGKGksUmRkVixmU0FUSCgtZkdFVEhBTEYoaSxSc3NWKSkp OworCQl9IGVsc2UgeworCQkJZlNFVEhBTEYoaSxSZGRWLGZHRVRIQUxGKGksUnNzVikpOworCQl9 CisJfQorfSkKKworUTZJTlNOKFMyX3ZyY25lZ2gsIlJ4eDMyKz12cmNuZWdoKFJzczMyLFJ0MzIp IixBVFRSSUJTKCksIlZlY3RvciBSZWR1Y2UgQ29uZGl0aW9uYWwgTmVnYXRlIGhhbGZ3b3JkcyIs Cit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKGZH RVRCSVQoaSxSdFYpKSB7CisJCQlSeHhWICs9IC1mR0VUSEFMRihpLFJzc1YpOworCQl9IGVsc2Ug eworCQkJUnh4ViArPSBmR0VUSEFMRihpLFJzc1YpOworCQl9CisJfQorfSkKKworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICogIEZpbml0ZS1maWVsZCBtdWx0aXBsaWVzLiAgV3JpdHRlbiBieSBEYXZpZCBI b3lsZSAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihNNF9wbXB5 dywiUmRkMzI9cG1weXcoUnMzMixSdDMyKSIsQVRUUklCUygpLCJQb2x5bm9taWFsIDMyYml0IE11 bHRpcGxpY2F0aW9uIHdpdGggQWRkaXRpb24gaW4gR0YoMikiLAoreworICAgICAgICBmSElERShp bnQgaTsgdW5zaWduZWQgaW50IHk7KQorICAgICAgICBmSElERSh1bnNpZ25lZCBsb25nIGxvbmcg eDsgdW5zaWduZWQgbG9uZyBsb25nIHByb2Q7KQorICAgICAgICB4ID0gZkdFVFVXT1JEKDAsIFJz Vik7CisgICAgICAgIHkgPSBmR0VUVVdPUkQoMCwgUnRWKTsKKworICAgICAgICBwcm9kID0gMDsK KyAgICAgICAgZm9yKGk9MDsgaSA8IDMyOyBpKyspIHsKKyAgICAgICAgICAgIGlmKCh5ID4+IGkp ICYgMSkgcHJvZCBePSAoeCA8PCBpKTsKKyAgICAgICAgfQorCVJkZFYgPSBwcm9kOworfSkKKwor UTZJTlNOKE00X3ZwbXB5aCwiUmRkMzI9dnBtcHloKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwiRHVh bCBQb2x5bm9taWFsIDE2Yml0IE11bHRpcGxpY2F0aW9uIHdpdGggQWRkaXRpb24gaW4gR0YoMiki LAoreworICAgICAgICBmSElERShpbnQgaTsgdW5zaWduZWQgaW50IHgwOyB1bnNpZ25lZCBpbnQg eDE7KQorICAgICAgICBmSElERSh1bnNpZ25lZCBpbnQgeTA7IHVuc2lnbmVkIGludCB5MTspCisg ICAgICAgIGZISURFKHVuc2lnbmVkIGludCBwcm9kMDsgdW5zaWduZWQgaW50IHByb2QxOykKKwor ICAgICAgICB4MCA9IGZHRVRVSEFMRigwLCBSc1YpOworICAgICAgICB4MSA9IGZHRVRVSEFMRigx LCBSc1YpOworICAgICAgICB5MCA9IGZHRVRVSEFMRigwLCBSdFYpOworICAgICAgICB5MSA9IGZH RVRVSEFMRigxLCBSdFYpOworCisgICAgICAgIHByb2QwID0gcHJvZDEgPSAwOworICAgICAgICBm b3IoaT0wOyBpIDwgMTY7IGkrKykgeworICAgICAgICAgICAgaWYoKHkwID4+IGkpICYgMSkgcHJv ZDAgXj0gKHgwIDw8IGkpOworICAgICAgICAgICAgaWYoKHkxID4+IGkpICYgMSkgcHJvZDEgXj0g KHgxIDw8IGkpOworICAgICAgICB9CisgICAgICAgIGZTRVRIQUxGKDAsUmRkVixmR0VUVUhBTEYo MCxwcm9kMCkpOworICAgICAgICBmU0VUSEFMRigxLFJkZFYsZkdFVFVIQUxGKDAscHJvZDEpKTsK KyAgICAgICAgZlNFVEhBTEYoMixSZGRWLGZHRVRVSEFMRigxLHByb2QwKSk7CisgICAgICAgIGZT RVRIQUxGKDMsUmRkVixmR0VUVUhBTEYoMSxwcm9kMSkpOworfSkKKworUTZJTlNOKE00X3BtcHl3 X2FjYywiUnh4MzJePXBtcHl3KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwiUG9seW5vbWlhbCAzMmJp dCBNdWx0aXBsaWNhdGlvbiB3aXRoIEFkZGl0aW9uIGluIEdGKDIpIiwKK3sKKyAgICAgICAgZkhJ REUoaW50IGk7IHVuc2lnbmVkIGludCB5OykKKyAgICAgICAgZkhJREUodW5zaWduZWQgbG9uZyBs b25nIHg7IHVuc2lnbmVkIGxvbmcgbG9uZyBwcm9kOykKKyAgICAgICAgeCA9IGZHRVRVV09SRCgw LCBSc1YpOworICAgICAgICB5ID0gZkdFVFVXT1JEKDAsIFJ0Vik7CisKKyAgICAgICAgcHJvZCA9 IDA7CisgICAgICAgIGZvcihpPTA7IGkgPCAzMjsgaSsrKSB7CisgICAgICAgICAgICBpZigoeSA+ PiBpKSAmIDEpIHByb2QgXj0gKHggPDwgaSk7CisgICAgICAgIH0KKwlSeHhWIF49IHByb2Q7Cit9 KQorCitRNklOU04oTTRfdnBtcHloX2FjYywiUnh4MzJePXZwbXB5aChSczMyLFJ0MzIpIixBVFRS SUJTKCksIkR1YWwgUG9seW5vbWlhbCAxNmJpdCBNdWx0aXBsaWNhdGlvbiB3aXRoIEFkZGl0aW9u IGluIEdGKDIpIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7IHVuc2lnbmVkIGludCB4MDsgdW5z aWduZWQgaW50IHgxOykKKyAgICAgICAgZkhJREUodW5zaWduZWQgaW50IHkwOyB1bnNpZ25lZCBp bnQgeTE7KQorICAgICAgICBmSElERSh1bnNpZ25lZCBpbnQgcHJvZDA7IHVuc2lnbmVkIGludCBw cm9kMTspCisKKyAgICAgICAgeDAgPSBmR0VUVUhBTEYoMCwgUnNWKTsKKyAgICAgICAgeDEgPSBm R0VUVUhBTEYoMSwgUnNWKTsKKyAgICAgICAgeTAgPSBmR0VUVUhBTEYoMCwgUnRWKTsKKyAgICAg ICAgeTEgPSBmR0VUVUhBTEYoMSwgUnRWKTsKKworICAgICAgICBwcm9kMCA9IHByb2QxID0gMDsK KyAgICAgICAgZm9yKGk9MDsgaSA8IDE2OyBpKyspIHsKKyAgICAgICAgICAgIGlmKCh5MCA+PiBp KSAmIDEpIHByb2QwIF49ICh4MCA8PCBpKTsKKyAgICAgICAgICAgIGlmKCh5MSA+PiBpKSAmIDEp IHByb2QxIF49ICh4MSA8PCBpKTsKKyAgICAgICAgfQorICAgICAgICBmU0VUSEFMRigwLFJ4eFYs ZkdFVFVIQUxGKDAsUnh4VikgXiBmR0VUVUhBTEYoMCxwcm9kMCkpOworICAgICAgICBmU0VUSEFM RigxLFJ4eFYsZkdFVFVIQUxGKDEsUnh4VikgXiBmR0VUVUhBTEYoMCxwcm9kMSkpOworICAgICAg ICBmU0VUSEFMRigyLFJ4eFYsZkdFVFVIQUxGKDIsUnh4VikgXiBmR0VUVUhBTEYoMSxwcm9kMCkp OworICAgICAgICBmU0VUSEFMRigzLFJ4eFYsZkdFVFVIQUxGKDMsUnh4VikgXiBmR0VUVUhBTEYo MSxwcm9kMSkpOworfSkKKworCisvKiBWNzA6IFRJTlkgQ09SRSAqLworCisjZGVmaW5lIENNUFk2 NChUQUcsTkFNRSxERVNDLE9QRVJBTkQxLE9QLFcwLFcxLFcyLFczKSBcCitRNklOU04oTTdfIyNU QUcsIlJkZDMyPSIgTkFNRSAiKFJzczMyLCIgT1BFUkFORDEgIikiLEFUVFJJQlMoQV9SRVNUUklD VF9TTE9UM09OTFkpLCJDb21wbGV4IE11bHRpcGx5IDY0LWJpdCAiIERFU0MsICAgIHsgUmRkViAg PSAoZk1QWTMyU1MoZkdFVFdPUkQoVzAsIFJzc1YpLCBmR0VUV09SRChXMSwgUnR0VikpIE9QIGZN UFkzMlNTKGZHRVRXT1JEKFcyLCBSc3NWKSwgZkdFVFdPUkQoVzMsIFJ0dFYpKSk7fSlcCitRNklO U04oTTdfIyNUQUcjI19hY2MsIlJ4eDMyKz0iIE5BTUUgIihSc3MzMiwiT1BFUkFORDEiKSIsQVRU UklCUyhBX1JFU1RSSUNUX1NMT1QzT05MWSksIkNvbXBsZXggTXVsdGlwbHktQWNjdW11bGF0ZSA2 NC1iaXQgIiBERVNDLCB7IFJ4eFYgKz0gKGZNUFkzMlNTKGZHRVRXT1JEKFcwLCBSc3NWKSwgZkdF VFdPUkQoVzEsIFJ0dFYpKSBPUCBmTVBZMzJTUyhmR0VUV09SRChXMiwgUnNzViksIGZHRVRXT1JE KFczLCBSdHRWKSkpO30pCisKK0NNUFk2NChkY21weXJ3LCAiY21weXJ3IiwiUmVhbCIsIlJ0dDMy IiAsLSwwLDAsMSwxKQorQ01QWTY0KGRjbXB5cndjLCJjbXB5cnciLCJSZWFsIiwiUnR0MzIqIiwr LDAsMCwxLDEpCitDTVBZNjQoZGNtcHlpdywgImNtcHlpdyIsIkltYWciLCJSdHQzMiIgLCssMCwx LDEsMCkKK0NNUFk2NChkY21weWl3YywiY21weWl3IiwiSW1hZyIsIlJ0dDMyKiIsLSwxLDAsMCwx KQorCisjZGVmaW5lIENNUFkxMjgoVEFHLCBOQU1FLCBPUEVSQU5EMSwgV09SRDAsIFdPUkQxLCBX T1JEMiwgV09SRDMsIE9QKSBcCitRNklOU04oTTdfIyNUQUcsIlJkMzI9IiBOQU1FICIoUnNzMzIs Ik9QRVJBTkQxIik6PDwxOnNhdCIsQVRUUklCUyhBX1JFU1RSSUNUX1NMT1QzT05MWSksIkNvbXBs ZXggTXVsdGlwbHkgMzItYml0IHJlc3VsdCByZWFsIiwgIFwKK3sgXAorZkhJREUoc2l6ZTE2c190 IGFjYzEyODspXAorZkhJREUoc2l6ZTE2c190IHRtcDEyODspXAorZkhJREUoc2l6ZThzX3QgYWNj NjQ7KVwKK3RtcDEyOCA9IGZDQVNUOFNfMTZTKGZNUFkzMlNTKGZHRVRXT1JEKFdPUkQwLCBSc3NW KSwgZkdFVFdPUkQoV09SRDEsIFJ0dFYpKSk7XAorYWNjMTI4ID0gZkNBU1Q4U18xNlMoZk1QWTMy U1MoZkdFVFdPUkQoV09SRDIsIFJzc1YpLCBmR0VUV09SRChXT1JEMywgUnR0VikpKTtcCithY2Mx MjggPSBPUCh0bXAxMjgsYWNjMTI4KTtcCithY2MxMjggPSBmU0hJRlRSMTI4KGFjYzEyOCwgMzEp O1wKK2FjYzY0ID0gIGZDQVNUMTZTXzhTKGFjYzEyOCk7XAorUmRWID0gZlNBVFcoYWNjNjQpO1wK K30pCisKKworQ01QWTEyOCh3Y21weXJ3LCAiY21weXJ3IiwgIlJ0dDMyIiwgMCwgMCwgMSwgMSwg ZlNVQjEyOCkKK0NNUFkxMjgod2NtcHlyd2MsICJjbXB5cnciLCAiUnR0MzIqIiwgMCwgMCwgMSwg MSwgZkFERDEyOCkKK0NNUFkxMjgod2NtcHlpdywgImNtcHlpdyIsICJSdHQzMiIsIDAsIDEsIDEs IDAsIGZBREQxMjgpCitDTVBZMTI4KHdjbXB5aXdjLCAiY21weWl3IiwgIlJ0dDMyKiIsIDEsIDAs IDAsIDEsIGZTVUIxMjgpCisKKworI2RlZmluZSBDTVBZMTI4Uk5EKFRBRywgTkFNRSwgT1BFUkFO RDEsIFdPUkQwLCBXT1JEMSwgV09SRDIsIFdPUkQzLCBPUCkgXAorUTZJTlNOKE03XyMjVEFHIyNf cm5kLCJSZDMyPSIgTkFNRSAiKFJzczMyLCJPUEVSQU5EMSIpOjw8MTpybmQ6c2F0IixBVFRSSUJT KEFfUkVTVFJJQ1RfU0xPVDNPTkxZKSwiQ29tcGxleCBNdWx0aXBseSAzMi1iaXQgcmVzdWx0IHJl YWwiLCAgXAoreyBcCitmSElERShzaXplMTZzX3QgYWNjMTI4OylcCitmSElERShzaXplMTZzX3Qg dG1wMTI4OylcCitmSElERShzaXplMTZzX3QgY29uc3QxMjg7KVwKK2ZISURFKHNpemU4c190IGFj YzY0OylcCit0bXAxMjggPSBmQ0FTVDhTXzE2UyhmTVBZMzJTUyhmR0VUV09SRChXT1JEMCwgUnNz ViksIGZHRVRXT1JEKFdPUkQxLCBSdHRWKSkpO1wKK2FjYzEyOCA9IGZDQVNUOFNfMTZTKGZNUFkz MlNTKGZHRVRXT1JEKFdPUkQyLCBSc3NWKSwgZkdFVFdPUkQoV09SRDMsIFJ0dFYpKSk7XAorY29u c3QxMjggPSBmQ0FTVDhTXzE2UyhmQ09OU1RMTCgweDQwMDAwMDAwKSk7XAorYWNjMTI4ID0gT1Ao dG1wMTI4LGFjYzEyOCk7XAorYWNjMTI4ID0gZkFERDEyOChhY2MxMjgsY29uc3QxMjgpO1wKK2Fj YzEyOCA9IGZTSElGVFIxMjgoYWNjMTI4LCAzMSk7XAorYWNjNjQgPSAgZkNBU1QxNlNfOFMoYWNj MTI4KTtcCitSZFYgPSBmU0FUVyhhY2M2NCk7XAorfSkKKworQ01QWTEyOFJORCh3Y21weXJ3LCAi Y21weXJ3IiwgIlJ0dDMyIiwgMCwgMCwgMSwgMSwgZlNVQjEyOCkKK0NNUFkxMjhSTkQod2NtcHly d2MsICJjbXB5cnciLCAiUnR0MzIqIiwgMCwgMCwgMSwgMSwgZkFERDEyOCkKK0NNUFkxMjhSTkQo d2NtcHlpdywgImNtcHlpdyIsICJSdHQzMiIsIDAsIDEsIDEsIDAsIGZBREQxMjgpCitDTVBZMTI4 Uk5EKHdjbXB5aXdjLCAiY21weWl3IiwgIlJ0dDMyKiIsIDEsIDAsIDAsIDEsIGZTVUIxMjgpCisK KworCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3NoaWZ0LmlkZWYgYi90 YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zaGlmdC5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjQ4NWMyNzkKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9p bXBvcnRlZC9zaGlmdC5pZGVmCkBAIC0wLDAgKzEsMTA2NyBAQAorLyoKKyAqICBDb3B5cmlnaHQo YykgMjAxOS0yMDIwIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq LworCisvKgorICogUy10eXBlIEluc3RydWN0aW9ucworICovCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogU0hJRlRTICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKworLyogTk9URTogUmRkID0gUnMgKnJpZ2h0KiBzaGlmdHMgZG9u J3QgbWFrZSBzZW5zZSAqLworLyogTk9URTogUmRbZF0gPSBSc1tzXSAqcmlnaHQqIHNoaWZ0cyB3 aXRoIHNhdHVyYXRpb24gZG9uJ3QgbWFrZSBzZW5zZSAqLworCisKKyNkZWZpbmUgUlNISUZUVFlQ RVMoVEFHRU5ELFJFR0QsUkVHUyxSRUdTVFlQRSxBQ0MsQUNDU1JDLFNBVCxTQVRPUFQsQVRUUlMp IFwKK1E2SU5TTihTMl9hc3Jfcl8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1hc3IoIiAjUkVH UyAiMzIsUnQzMikiICNTQVRPUFQsQVRUUklCUyhBVFRSUyksIFwKKwkiQXJpdGhtZXRpYyBTaGlm dCBSaWdodCBieSBSZWdpc3RlciIsIFwKKwl7ICBcCisgICAgICAgICAgICAgICAgZkhJREUoc2l6 ZTRzX3QpIHNoYW10PWZTWFROKDcsMzIsUnRWKTtcCisJCVJFR0QjI1YgPSBTQVQoQUNDU1JDIEFD QyBmQklESVJfQVNISUZUUihSRUdTIyNWLHNoYW10LFJFR1NUWVBFKSk7ICBcCisJfSlcCitcCitR NklOU04oUzJfYXNsX3JfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9YXNsKCIgI1JFR1MgIjMy LFJ0MzIpIiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIkFyaXRobWV0aWMgU2hpZnQgTGVm dCBieSBSZWdpc3RlciIsIFwKKwl7ICBcCisgICAgICAgICAgICAgICAgZkhJREUoc2l6ZTRzX3Qp IHNoYW10PWZTWFROKDcsMzIsUnRWKTtcCisJCVJFR0QjI1YgPSBTQVQoQUNDU1JDIEFDQyBmQklE SVJfQVNISUZUTChSRUdTIyNWLHNoYW10LFJFR1NUWVBFKSk7ICBcCisJfSlcCitcCitRNklOU04o UzJfbHNyX3JfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9bHNyKCIgI1JFR1MgIjMyLFJ0MzIp IiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIkxvZ2ljYWwgU2hpZnQgUmlnaHQgYnkgUmVn aXN0ZXIiLCBcCisJeyAgXAorICAgICAgICAgICAgICAgIGZISURFKHNpemU0c190KSBzaGFtdD1m U1hUTig3LDMyLFJ0Vik7XAorCQlSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkJJRElSX0xTSElG VFIoUkVHUyMjVixzaGFtdCxSRUdTVFlQRSkpOyAgXAorCX0pXAorXAorUTZJTlNOKFMyX2xzbF9y XyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWxzbCgiICNSRUdTICIzMixSdDMyKSIgI1NBVE9Q VCxBVFRSSUJTKEFUVFJTKSwgXAorCSJMb2dpY2FsIFNoaWZ0IExlZnQgYnkgUmVnaXN0ZXIiLCBc CisJeyAgXAorICAgICAgICAgICAgICAgIGZISURFKHNpemU0c190KSBzaGFtdD1mU1hUTig3LDMy LFJ0Vik7XAorCQlSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkJJRElSX0xTSElGVEwoUkVHUyMj VixzaGFtdCxSRUdTVFlQRSkpOyAgXAorCX0pCisKK1JTSElGVFRZUEVTKHIsUmQsUnMsNF84LCws ZkVDSE8sLCkKK1JTSElGVFRZUEVTKHAsUmRkLFJzcyw4XzgsLCxmRUNITywsKQorUlNISUZUVFlQ RVMocl9hY2MsUngsUnMsNF84LCssUnhWLGZFQ0hPLCwpCitSU0hJRlRUWVBFUyhwX2FjYyxSeHgs UnNzLDhfOCwrLFJ4eFYsZkVDSE8sLCkKK1JTSElGVFRZUEVTKHJfbmFjLFJ4LFJzLDRfOCwtLFJ4 VixmRUNITywsKQorUlNISUZUVFlQRVMocF9uYWMsUnh4LFJzcyw4XzgsLSxSeHhWLGZFQ0hPLCwp CisKK1JTSElGVFRZUEVTKHJfYW5kLFJ4LFJzLDRfOCwmLFJ4VixmRUNITywsKQorUlNISUZUVFlQ RVMocl9vcixSeCxScyw0XzgsfCxSeFYsZkVDSE8sLCkKK1JTSElGVFRZUEVTKHBfYW5kLFJ4eCxS c3MsOF84LCYsUnh4VixmRUNITywsKQorUlNISUZUVFlQRVMocF9vcixSeHgsUnNzLDhfOCx8LFJ4 eFYsZkVDSE8sLCkKK1JTSElGVFRZUEVTKHBfeG9yLFJ4eCxSc3MsOF84LF4sUnh4VixmRUNITyws KQorCisKKyN1bmRlZiBSU0hJRlRUWVBFUworCisvKiBSZWdpc3RlciBzaGlmdCB3aXRoIHNhdHVy YXRpb24gKi8KKyNkZWZpbmUgUlNBVFNISUZUVFlQRVMoVEFHRU5ELFJFR0QsUkVHUyxSRUdTVFlQ RSkgXAorUTZJTlNOKFMyX2Fzcl9yXyMjVEFHRU5ELCNSRUdEICIzMiIgIj1hc3IoIiAjUkVHUyAi MzIsUnQzMik6c2F0IixBVFRSSUJTKCksIFwKKwkiQXJpdGhtZXRpYyBTaGlmdCBSaWdodCBieSBS ZWdpc3RlciIsIFwKKwl7ICBcCisgICAgICAgICAgICAgICAgZkhJREUoc2l6ZTRzX3QpIHNoYW10 PWZTWFROKDcsMzIsUnRWKTtcCisJCVJFR0QjI1YgPSBmQklESVJfQVNISUZUUl9TQVQoUkVHUyMj VixzaGFtdCxSRUdTVFlQRSk7ICBcCisJfSlcCitcCitRNklOU04oUzJfYXNsX3JfIyNUQUdFTkQs I1JFR0QgIjMyIiAiPWFzbCgiICNSRUdTICIzMixSdDMyKTpzYXQiLEFUVFJJQlMoKSwgXAorCSJB cml0aG1ldGljIFNoaWZ0IExlZnQgYnkgUmVnaXN0ZXIiLCBcCisJeyAgXAorICAgICAgICAgICAg ICAgIGZISURFKHNpemU0c190KSBzaGFtdD1mU1hUTig3LDMyLFJ0Vik7XAorCQlSRUdEIyNWID0g ZkJJRElSX0FTSElGVExfU0FUKFJFR1MjI1Ysc2hhbXQsUkVHU1RZUEUpOyAgXAorCX0pCisKK1JT QVRTSElGVFRZUEVTKHJfc2F0LFJkLFJzLDRfOCkKKworCisKKworCisjZGVmaW5lIElTSElGVFRZ UEVTKFRBR0VORCxTSVpFLFJFR0QsUkVHUyxSRUdTVFlQRSxBQ0MsQUNDU1JDLFNBVCxTQVRPUFQs QVRUUlMpIFwKK1E2SU5TTihTMl9hc3JfaV8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1hc3Io IiAjUkVHUyAiMzIsI3UiICNTSVpFICIpIiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIkFy aXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwgXAorCXsgUkVHRCMjViA9IFNBVChB Q0NTUkMgQUNDIGZBU0hJRlRSKFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pIFwKK1wKK1E2SU5T TihTMl9sc3JfaV8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1sc3IoIiAjUkVHUyAiMzIsI3Ui ICNTSVpFICIpIiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIkxvZ2ljYWwgU2hpZnQgUmln aHQgYnkgSW1tZWRpYXRlIiwgXAorCXsgUkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZMU0hJRlRS KFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pIFwKK1wKK1E2SU5TTihTMl9hc2xfaV8jI1RBR0VO RCwjUkVHRCAiMzIiICNBQ0MgIj1hc2woIiAjUkVHUyAiMzIsI3UiICNTSVpFICIpIiAjU0FUT1BU LEFUVFJJQlMoQVRUUlMpLCBcCisJIlNoaWZ0IExlZnQgYnkgSW1tZWRpYXRlIiwgXAorCXsgUkVH RCMjViA9IFNBVChBQ0NTUkMgQUNDIGZBU0hJRlRMKFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0p IFwKK1E2SU5TTihTNl9yb2xfaV8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1yb2woIiAjUkVH UyAiMzIsI3UiICNTSVpFICIpIiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIlJvdGF0ZSBM ZWZ0IGJ5IEltbWVkaWF0ZSIsIFwKKwl7IFJFR0QjI1YgPSBTQVQoQUNDU1JDIEFDQyBmUk9UTChS RUdTIyNWLHVpVixSRUdTVFlQRSkpOyB9KQorCisKKyNkZWZpbmUgSVNISUZUVFlQRVNfT05MWV9B U0woVEFHRU5ELFNJWkUsUkVHRCxSRUdTLFJFR1NUWVBFLEFDQyxBQ0NTUkMsU0FULFNBVE9QVCkg XAorUTZJTlNOKFMyX2FzbF9pXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWFzbCgiICNSRUdT ICIzMiwjdSIgI1NJWkUgIikiICNTQVRPUFQsQVRUUklCUygpLCBcCisJIiIsIFwKKwl7IFJFR0Qj I1YgPSBTQVQoQUNDU1JDIEFDQyBmQVNISUZUTChSRUdTIyNWLHVpVixSRUdTVFlQRSkpOyB9KQor CisjZGVmaW5lIElTSElGVFRZUEVTX09OTFlfQVNSKFRBR0VORCxTSVpFLFJFR0QsUkVHUyxSRUdT VFlQRSxBQ0MsQUNDU1JDLFNBVCxTQVRPUFQpIFwKK1E2SU5TTihTMl9hc3JfaV8jI1RBR0VORCwj UkVHRCAiMzIiICNBQ0MgIj1hc3IoIiAjUkVHUyAiMzIsI3UiICNTSVpFICIpIiAjU0FUT1BULEFU VFJJQlMoKSwgXAorCSIiLCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkFTSElGVFIo UkVHUyMjVix1aVYsUkVHU1RZUEUpKTsgfSkKKworCisjZGVmaW5lIElTSElGVFRZUEVTX05PQVNS KFRBR0VORCxTSVpFLFJFR0QsUkVHUyxSRUdTVFlQRSxBQ0MsQUNDU1JDLFNBVCxTQVRPUFQpIFwK K1E2SU5TTihTMl9sc3JfaV8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1sc3IoIiAjUkVHUyAi MzIsI3UiICNTSVpFICIpIiAjU0FUT1BULEFUVFJJQlMoKSwgXAorCSJMb2dpY2FsIFNoaWZ0IFJp Z2h0IGJ5IFJlZ2lzdGVyIiwgXAorCXsgUkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZMU0hJRlRS KFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pIFwKK1E2SU5TTihTMl9hc2xfaV8jI1RBR0VORCwj UkVHRCAiMzIiICNBQ0MgIj1hc2woIiAjUkVHUyAiMzIsI3UiICNTSVpFICIpIiAjU0FUT1BULEFU VFJJQlMoKSwgXAorCSJTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwgXAorCXsgUkVHRCMjViA9IFNB VChBQ0NTUkMgQUNDIGZBU0hJRlRMKFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pIFwKK1E2SU5T TihTNl9yb2xfaV8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0MgIj1yb2woIiAjUkVHUyAiMzIsI3Ui ICNTSVpFICIpIiAjU0FUT1BULEFUVFJJQlMoKSwgXAorCSJSb3RhdGUgTGVmdCBieSBJbW1lZGlh dGUiLCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZlJPVEwoUkVHUyMjVix1aVYsUkVH U1RZUEUpKTsgfSkKKworCisKK0lTSElGVFRZUEVTKHIsNSxSZCxScyw0XzQsLCxmRUNITywsKQor SVNISUZUVFlQRVMocCw2LFJkZCxSc3MsOF84LCwsZkVDSE8sLCkKK0lTSElGVFRZUEVTKHJfYWNj LDUsUngsUnMsNF80LCssUnhWLGZFQ0hPLCwpCitJU0hJRlRUWVBFUyhwX2FjYyw2LFJ4eCxSc3Ms OF84LCssUnh4VixmRUNITywsKQorSVNISUZUVFlQRVMocl9uYWMsNSxSeCxScyw0XzQsLSxSeFYs ZkVDSE8sLCkKK0lTSElGVFRZUEVTKHBfbmFjLDYsUnh4LFJzcyw4XzgsLSxSeHhWLGZFQ0hPLCwp CisKK0lTSElGVFRZUEVTX05PQVNSKHJfeGFjYyw1LFJ4LFJzLDRfNCxeLCBSeFYsZkVDSE8sKQor SVNISUZUVFlQRVNfTk9BU1IocF94YWNjLDYsUnh4LFJzcyw4XzgsXiwgUnh4VixmRUNITywpCisK K0lTSElGVFRZUEVTKHJfYW5kLDUsUngsUnMsNF80LCYsUnhWLGZFQ0hPLCwpCitJU0hJRlRUWVBF UyhyX29yLDUsUngsUnMsNF80LHwsUnhWLGZFQ0hPLCwpCitJU0hJRlRUWVBFUyhwX2FuZCw2LFJ4 eCxSc3MsOF84LCYsUnh4VixmRUNITywsKQorSVNISUZUVFlQRVMocF9vciw2LFJ4eCxSc3MsOF84 LHwsUnh4VixmRUNITywsKQorCitJU0hJRlRUWVBFU19PTkxZX0FTTChyX3NhdCw1LFJkLFJzLDRf OCwsLGZTQVQsOnNhdCkKKworCitRNklOU04oUzJfYXNyX2lfcl9ybmQsIlJkMzI9YXNyKFJzMzIs I3U1KTpybmQiLEFUVFJJQlMoKSwKKyAgICAgICAiU2hpZnQgcmlnaHQgd2l0aCByb3VuZCIsCisg ICAgICAgeyBSZFYgPSBmQVNISUZUUigoKGZBU0hJRlRSKFJzVix1aVYsNF84KSkrMSksMSw4Xzgp OyB9KQorCisKK1E2SU5TTihTMl9hc3JfaV9wX3JuZCwiUmRkMzI9YXNyKFJzczMyLCN1Nik6cm5k IixBVFRSSUJTKCksICJTaGlmdCByaWdodCB3aXRoIHJvdW5kIiwKK3sgZkhJREUoc2l6ZTh1X3Qg dG1wOykKKyAgZkhJREUoc2l6ZTh1X3Qgcm5kOykKKyAgdG1wID0gZkFTSElGVFIoUnNzVix1aVYs OF84KTsKKyAgcm5kID0gdG1wICYgMTsKKyAgUmRkViA9IGZBU0hJRlRSKHRtcCwxLDhfOCkgKyBy bmQ7IH0pCisKKworUTZJTlNOKFM0X2xzbGksIlJkMzI9bHNsKCNzNixSdDMyKSIsQVRUUklCUygp LCAiU2hpZnQgYW4gaW1tZWRpYXRlIGxlZnQgYnkgcmVnaXN0ZXIgYW1vdW50IiwKK3sKKwlmSElE RShzaXplNHNfdCkgc2hhbXQgPSBmU1hUTig3LDMyLFJ0Vik7CisJUmRWID0gZkJJRElSX0xTSElG VEwoc2lWLHNoYW10LDRfOCk7Cit9KQorCisKKworCitRNklOU04oUzJfYWRkYXNsX3JycmksIlJk MzI9YWRkYXNsKFJ0MzIsUnMzMiwjdTMpIixBVFRSSUJTKCksCisJIlNoaWZ0IGxlZnQgYnkgc21h bGwgYW1vdW50IGFuZCBhZGQiLAorCXsgUmRWID0gUnRWICsgZkFTSElGVEwoUnNWLHVpViw0XzQp OyB9KQorCisKKworI2RlZmluZSBTSElGVE9QSShUQUdFTkQsSU5ORVJPUCxJTk5FUlNFTSlcCitR NklOU04oUzRfYW5kaV8jI1RBR0VORCwiUngzMj1hbmQoI3U4LCJJTk5FUk9QIikiLCwiU2hpZnQt b3AiLHtSeFY9ZklNTUVYVCh1aVYpJklOTkVSU0VNO30pXAorUTZJTlNOKFM0X29yaV8jI1RBR0VO RCwgIlJ4MzI9b3IoI3U4LCJJTk5FUk9QIikiLCwiU2hpZnQtb3AiLHtSeFY9ZklNTUVYVCh1aVYp fElOTkVSU0VNO30pXAorUTZJTlNOKFM0X2FkZGlfIyNUQUdFTkQsIlJ4MzI9YWRkKCN1OCwiSU5O RVJPUCIpIiwsIlNoaWZ0LW9wIix7UnhWPWZJTU1FWFQodWlWKStJTk5FUlNFTTt9KVwKK1E2SU5T TihTNF9zdWJpXyMjVEFHRU5ELCJSeDMyPXN1YigjdTgsIklOTkVST1AiKSIsLCJTaGlmdC1vcCIs e1J4Vj1mSU1NRVhUKHVpViktSU5ORVJTRU07fSkKKworCitTSElGVE9QSShhc2xfcmksImFzbChS eDMyLCNVNSkiLChSeFY8PFVpVikpCitTSElGVE9QSShsc3JfcmksImxzcihSeDMyLCNVNSkiLCgo KHVuc2lnbmVkIGludClSeFYpPj5VaVYpKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogUEVSTVVURVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KK1E2SU5TTihTMl92YWxpZ25pYiwiUmRkMzI9dmFsaWduYihSdHQzMixSc3MzMiwj dTMpIiwKK0FUVFJJQlMoKSwgIlZlY3RvciBhbGlnbiBieXRlcyIsCit7CisgIFJkZFYgPSAoZkxT SElGVFIoUnNzVix1aVYqOCw4XzgpKXwoZkFTSElGVEwoUnR0ViwoKDgtdWlWKSo4KSw4XzgpKTsK K30pCisKK1E2SU5TTihTMl92YWxpZ25yYiwiUmRkMzI9dmFsaWduYihSdHQzMixSc3MzMixQdTQp IiwKK0FUVFJJQlMoKSwgIkFsaWduIHdpdGggcmVnaXN0ZXIiLAoreyBSZGRWID0gZkxTSElGVFIo UnNzViwoUHVWJjB4NykqOCw4XzgpfChmQVNISUZUTChSdHRWLCg4LShQdVYmMHg3KSkqOCw4Xzgp KTt9KQorCitRNklOU04oUzJfdnNwbGljZWliLCJSZGQzMj12c3BsaWNlYihSc3MzMixSdHQzMiwj dTMpIiwKK0FUVFJJQlMoKSwgIlZlY3RvciBzcGxpY2UgYnl0ZXMiLAoreyBSZGRWID0gZkFTSElG VEwoUnR0Vix1aVYqOCw4XzgpIHwgZlpYVE4odWlWKjgsNjQsUnNzVik7IH0pCisKK1E2SU5TTihT Ml92c3BsaWNlcmIsIlJkZDMyPXZzcGxpY2ViKFJzczMyLFJ0dDMyLFB1NCkiLAorQVRUUklCUygp LCAiU3BsaWNlIHdpdGggcmVnaXN0ZXIiLAoreyBSZGRWID0gZkFTSElGVEwoUnR0ViwoUHVWJjcp KjgsOF84KSB8IGZaWFROKChQdVYmNykqOCw2NCxSc3NWKTsgfSkKKworUTZJTlNOKFMyX3ZzcGxh dHJoLCJSZGQzMj12c3BsYXRoKFJzMzIpIiwKK0FUVFJJQlMoKSwgIlZlY3RvciBzcGxhdCBoYWxm d29yZHMgZnJvbSByZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAg Zm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLCBmR0VUSEFMRigwLFJzVikp OworICAgICAgICB9Cit9KQorCisKK1E2SU5TTihTMl92c3BsYXRyYiwiUmQzMj12c3BsYXRiKFJz MzIpIiwKK0FUVFJJQlMoKSwgIlZlY3RvciBzcGxhdCBieXRlcyBmcm9tIHJlZ2lzdGVyIiwKK3sK KyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBm U0VUQllURShpLFJkViwgZkdFVEJZVEUoMCxSc1YpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNO KFM2X3ZzcGxhdHJicCwiUmRkMzI9dnNwbGF0YihSczMyKSIsCitBVFRSSUJTKCksICJWZWN0b3Ig c3BsYXQgYnl0ZXMgZnJvbSByZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAg ICAgICAgZm9yIChpPTA7aTw4O2krKykgeworCSAgZlNFVEJZVEUoaSxSZGRWLCBmR0VUQllURSgw LFJzVikpOworICAgICAgICB9Cit9KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKiBJbnNlcnQvRXh0cmFjdFt1XSAgICAgICAgICAgICAg ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitRNklOU04oUzJfaW5zZXJ0LCJSeDMyPWluc2VydChSczMyLCN1NSwjVTUpIiwK K0FUVFJJQlMoKSwgIkluc2VydCBiaXRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0aD11 aVY7CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PVVpVjsKKwkvKiBjbGVhciBiaXRzIGluIFJ4 eCB3aGVyZSBuZXcgYml0cyBnbyAqLworCVJ4ViAmPSB+KCgoZkNPTlNUTEwoMSk8PHdpZHRoKS0x KTw8b2Zmc2V0KTsKKwkvKiBPUiBpbiBuZXcgYml0cyAqLworCVJ4ViB8PSAoKFJzViAmICgoZkNP TlNUTEwoMSk8PHdpZHRoKS0xKSkgPDwgb2Zmc2V0KTsKK30pCisKKworUTZJTlNOKFMyX3RhYmxl aWR4YiwiUngzMj10YWJsZWlkeGIoUnMzMiwjdTQsI1M2KTpyYXciLAorQVRUUklCUyhBX0FSQ0hW MiksICJFeHRyYWN0IGFuZCBpbnNlcnQgYml0cyIsCit7CisgICAgICAgIGZISURFKGludCkgd2lk dGg9dWlWOworICAgICAgICBmSElERShpbnQpIG9mZnNldD1TaVY7CisgICAgICAgIGZISURFKGlu dCkgZmllbGQgPSBmRVhUUkFDVFVfQklESVIoUnNWLHdpZHRoLG9mZnNldCk7CisgICAgICAgIGZJ TlNFUlRfQklUUyhSeFYsd2lkdGgsMCxmaWVsZCk7Cit9KQorCitRNklOU04oUzJfdGFibGVpZHho LCJSeDMyPXRhYmxlaWR4aChSczMyLCN1NCwjUzYpOnJhdyIsCitBVFRSSUJTKEFfQVJDSFYyKSwg IkV4dHJhY3QgYW5kIGluc2VydCBiaXRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0aD11 aVY7CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PVNpVisxOworICAgICAgICBmSElERShpbnQp IGZpZWxkID0gZkVYVFJBQ1RVX0JJRElSKFJzVix3aWR0aCxvZmZzZXQpOworICAgICAgICBmSU5T RVJUX0JJVFMoUnhWLHdpZHRoLDEsZmllbGQpOworfSkKKworUTZJTlNOKFMyX3RhYmxlaWR4dywi UngzMj10YWJsZWlkeHcoUnMzMiwjdTQsI1M2KTpyYXciLAorQVRUUklCUyhBX0FSQ0hWMiksICJF eHRyYWN0IGFuZCBpbnNlcnQgYml0cyIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlW OworICAgICAgICBmSElERShpbnQpIG9mZnNldD1TaVYrMjsKKyAgICAgICAgZkhJREUoaW50KSBm aWVsZCA9IGZFWFRSQUNUVV9CSURJUihSc1Ysd2lkdGgsb2Zmc2V0KTsKKyAgICAgICAgZklOU0VS VF9CSVRTKFJ4Vix3aWR0aCwyLGZpZWxkKTsKK30pCisKK1E2SU5TTihTMl90YWJsZWlkeGQsIlJ4 MzI9dGFibGVpZHhkKFJzMzIsI3U0LCNTNik6cmF3IiwKK0FUVFJJQlMoQV9BUkNIVjIpLCAiRXh0 cmFjdCBhbmQgaW5zZXJ0IGJpdHMiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsK KyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9U2lWKzM7CisgICAgICAgIGZISURFKGludCkgZmll bGQgPSBmRVhUUkFDVFVfQklESVIoUnNWLHdpZHRoLG9mZnNldCk7CisgICAgICAgIGZJTlNFUlRf QklUUyhSeFYsd2lkdGgsMyxmaWVsZCk7Cit9KQorCisKK1E2SU5TTihBNF9iaXRzcGxpdGksIlJk ZDMyPWJpdHNwbGl0KFJzMzIsI3U1KSIsCitBVFRSSUJTKCksICJTcGxpdCBhIGJpdGZpZWxkIGlu dG8gdHdvIHJlZ2lzdGVycyIsCit7CisgICAgICAgIGZTRVRXT1JEKDEsUmRkViwoZkNBU1Q0XzR1 KFJzVik+PnVpVikpOworICAgICAgICBmU0VUV09SRCgwLFJkZFYsZlpYVE4odWlWLDMyLFJzVikp OworfSkKKworUTZJTlNOKEE0X2JpdHNwbGl0LCJSZGQzMj1iaXRzcGxpdChSczMyLFJ0MzIpIiwK K0FUVFJJQlMoKSwgIlNwbGl0IGEgYml0ZmllbGQgaW50byB0d28gcmVnaXN0ZXJzIiwKK3sKKwkJ ZkhJREUoc2l6ZTR1X3QpIHNoYW10ID0gZlpYVE4oNSwzMixSdFYpOworICAgICAgICBmU0VUV09S RCgxLFJkZFYsKGZDQVNUNF80dShSc1YpPj5zaGFtdCkpOworICAgICAgICBmU0VUV09SRCgwLFJk ZFYsZlpYVE4oc2hhbXQsMzIsUnNWKSk7Cit9KQorCisKKworCitRNklOU04oUzRfZXh0cmFjdCwi UmQzMj1leHRyYWN0KFJzMzIsI3U1LCNVNSkiLAorQVRUUklCUygpLCAiRXh0cmFjdCBzaWduZWQg Yml0ZmllbGQiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJ REUoaW50KSBvZmZzZXQ9VWlWOworCQlSZFYgPSBmU1hUTih3aWR0aCwzMiwoZkNBU1Q0XzR1KFJz VikgPj4gb2Zmc2V0KSk7Cit9KQorCisKK1E2SU5TTihTMl9leHRyYWN0dSwiUmQzMj1leHRyYWN0 dShSczMyLCN1NSwjVTUpIiwKK0FUVFJJQlMoKSwgIkV4dHJhY3QgdW5zaWduZWQgYml0ZmllbGQi LAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJREUoaW50KSBv ZmZzZXQ9VWlWOworCQlSZFYgPSBmWlhUTih3aWR0aCwzMiwoZkNBU1Q0XzR1KFJzVikgPj4gb2Zm c2V0KSk7Cit9KQorCitRNklOU04oUzJfaW5zZXJ0cCwiUnh4MzI9aW5zZXJ0KFJzczMyLCN1Niwj VTYpIiwKK0FUVFJJQlMoKSwgIkluc2VydCBiaXRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3 aWR0aD11aVY7CisgICAgICAJZkhJREUoaW50KSBvZmZzZXQ9VWlWOworCQkvKiBjbGVhciBiaXRz IGluIFJ4eCB3aGVyZSBuZXcgYml0cyBnbyAqLworCQlSeHhWICY9IH4oKChmQ09OU1RMTCgxKTw8 d2lkdGgpLTEpPDxvZmZzZXQpOworCQkvKiBPUiBpbiBuZXcgYml0cyAqLworCQlSeHhWIHw9ICgo UnNzViAmICgoZkNPTlNUTEwoMSk8PHdpZHRoKS0xKSkgPDwgb2Zmc2V0KTsKK30pCisKKworUTZJ TlNOKFM0X2V4dHJhY3RwLCJSZGQzMj1leHRyYWN0KFJzczMyLCN1NiwjVTYpIiwKK0FUVFJJQlMo KSwgIkV4dHJhY3Qgc2lnbmVkIGJpdGZpZWxkIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0 aD11aVY7CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PVVpVjsKKwlSZGRWID0gZlNYVE4od2lk dGgsNjQsKGZDQVNUOF84dShSc3NWKSA+PiBvZmZzZXQpKTsKK30pCisKKworUTZJTlNOKFMyX2V4 dHJhY3R1cCwiUmRkMzI9ZXh0cmFjdHUoUnNzMzIsI3U2LCNVNikiLAorQVRUUklCUygpLCAiRXh0 cmFjdCB1bnNpZ25lZCBiaXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlW OworICAgICAgICBmSElERShpbnQpIG9mZnNldD1VaVY7CisJUmRkViA9IGZaWFROKHdpZHRoLDY0 LChmQ0FTVDhfOHUoUnNzVikgPj4gb2Zmc2V0KSk7Cit9KQorCisKKworCitRNklOU04oUzJfbWFz aywiUmQzMj1tYXNrKCN1NSwjVTUpIiwKK0FUVFJJQlMoKSwgIkZvcm0gbWFzayBmcm9tIGltbWVk aWF0ZSIsCit7CisgICAgUmRWID0gKCgxPDx1aVYpLTEpIDw8IFVpVjsKK30pCisKKworCisKKwor UTZJTlNOKFMyX2luc2VydF9ycCwiUngzMj1pbnNlcnQoUnMzMixSdHQzMikiLAorQVRUUklCUygp LCAiSW5zZXJ0IGJpdHMiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIs KGZHRVRXT1JEKDEsUnR0VikpKTsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywz MiwoZkdFVFdPUkQoMCxSdHRWKSkpOworCWZISURFKHNpemU4dV90KSBtYXNrID0gKChmQ09OU1RM TCgxKTw8d2lkdGgpLTEpOworCWlmIChvZmZzZXQgPCAwKSB7CisJCVJ4ViA9IDA7CisJfSBlbHNl IHsKKwkJLyogY2xlYXIgYml0cyBpbiBSeHggd2hlcmUgbmV3IGJpdHMgZ28gKi8KKwkJUnhWICY9 IH4obWFzazw8b2Zmc2V0KTsKKwkJLyogT1IgaW4gbmV3IGJpdHMgKi8KKwkJUnhWIHw9ICgoUnNW ICYgbWFzaykgPDwgb2Zmc2V0KTsKKwl9Cit9KQorCisKK1E2SU5TTihTNF9leHRyYWN0X3JwLCJS ZDMyPWV4dHJhY3QoUnMzMixSdHQzMikiLAorQVRUUklCUygpLCAiRXh0cmFjdCBzaWduZWQgYml0 ZmllbGQiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JE KDEsUnR0VikpKTsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdP UkQoMCxSdHRWKSkpOworCVJkViA9IGZTWFROKHdpZHRoLDY0LGZCSURJUl9MU0hJRlRSKGZDQVNU NF84dShSc1YpLG9mZnNldCw0XzgpKTsKK30pCisKKworCitRNklOU04oUzJfZXh0cmFjdHVfcnAs IlJkMzI9ZXh0cmFjdHUoUnMzMixSdHQzMikiLAorQVRUUklCUygpLCAiRXh0cmFjdCB1bnNpZ25l ZCBiaXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9ZlpYVE4oNiwzMiwoZkdF VFdPUkQoMSxSdHRWKSkpOworICAgICAgICBmSElERShpbnQpIG9mZnNldD1mU1hUTig3LDMyLChm R0VUV09SRCgwLFJ0dFYpKSk7CisJUmRWID0gZlpYVE4od2lkdGgsNjQsZkJJRElSX0xTSElGVFIo ZkNBU1Q0Xzh1KFJzViksb2Zmc2V0LDRfOCkpOworfSkKKworUTZJTlNOKFMyX2luc2VydHBfcnAs IlJ4eDMyPWluc2VydChSc3MzMixSdHQzMikiLAorQVRUUklCUygpLCAiSW5zZXJ0IGJpdHMiLAor eworICAgICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JEKDEsUnR0Vikp KTsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdPUkQoMCxSdHRW KSkpOworCWZISURFKHNpemU4dV90KSBtYXNrID0gKChmQ09OU1RMTCgxKTw8d2lkdGgpLTEpOwor CWlmIChvZmZzZXQgPCAwKSB7CisJCVJ4eFYgPSAwOworCX0gZWxzZSB7CisJCS8qIGNsZWFyIGJp dHMgaW4gUnh4IHdoZXJlIG5ldyBiaXRzIGdvICovCisJCVJ4eFYgJj0gfihtYXNrPDxvZmZzZXQp OworCQkvKiBPUiBpbiBuZXcgYml0cyAqLworCQlSeHhWIHw9ICgoUnNzViAmIG1hc2spIDw8IG9m ZnNldCk7CisJfQorfSkKKworCitRNklOU04oUzRfZXh0cmFjdHBfcnAsIlJkZDMyPWV4dHJhY3Qo UnNzMzIsUnR0MzIpIiwKK0FUVFJJQlMoKSwgIkV4dHJhY3Qgc2lnbmVkIGJpdGZpZWxkIiwKK3sK KyAgICAgICAgZkhJREUoaW50KSB3aWR0aD1mWlhUTig2LDMyLChmR0VUV09SRCgxLFJ0dFYpKSk7 CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PWZTWFROKDcsMzIsKGZHRVRXT1JEKDAsUnR0Vikp KTsKKwlSZGRWID0gZlNYVE4od2lkdGgsNjQsZkJJRElSX0xTSElGVFIoZkNBU1Q4Xzh1KFJzc1Yp LG9mZnNldCw4XzgpKTsKK30pCisKKworUTZJTlNOKFMyX2V4dHJhY3R1cF9ycCwiUmRkMzI9ZXh0 cmFjdHUoUnNzMzIsUnR0MzIpIiwKK0FUVFJJQlMoKSwgIkV4dHJhY3QgdW5zaWduZWQgYml0Zmll bGQiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JEKDEs UnR0VikpKTsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdPUkQo MCxSdHRWKSkpOworCVJkZFYgPSBmWlhUTih3aWR0aCw2NCxmQklESVJfTFNISUZUUihmQ0FTVDhf OHUoUnNzViksb2Zmc2V0LDhfOCkpOworfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKiB0c3RiaXQvc2V0Yml0L2NscmJpdCAgICAgICAgICAg ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitRNklOU04oUzJfdHN0Yml0X2ksIlBkND10c3RiaXQoUnMzMiwjdTUpIiwKK0FU VFJJQlMoKSwgIlRlc3QgYSBiaXQiLAoreworCVBkViA9IGY4QklUU09GKChSc1YgJiAoMTw8dWlW KSkgIT0gMCk7Cit9KQorCitRNklOU04oUzRfbnRzdGJpdF9pLCJQZDQ9IXRzdGJpdChSczMyLCN1 NSkiLAorQVRUUklCUygpLCAiVGVzdCBhIGJpdCIsCit7CisJUGRWID0gZjhCSVRTT0YoKFJzViAm ICgxPDx1aVYpKSA9PSAwKTsKK30pCisKK1E2SU5TTihTMl9zZXRiaXRfaSwiUmQzMj1zZXRiaXQo UnMzMiwjdTUpIiwKK0FUVFJJQlMoKSwgIlNldCBhIGJpdCIsCit7CisJUmRWID0gKFJzViB8ICgx PDx1aVYpKTsKK30pCisKK1E2SU5TTihTMl90b2dnbGViaXRfaSwiUmQzMj10b2dnbGViaXQoUnMz MiwjdTUpIiwKK0FUVFJJQlMoKSwgIlRvZ2dsZSBhIGJpdCIsCit7CisJUmRWID0gKFJzViBeICgx PDx1aVYpKTsKK30pCisKK1E2SU5TTihTMl9jbHJiaXRfaSwiUmQzMj1jbHJiaXQoUnMzMiwjdTUp IiwKK0FUVFJJQlMoKSwgIkNsZWFyIGEgYml0IiwKK3sKKwlSZFYgPSAoUnNWICYgKH4oMTw8dWlW KSkpOworfSkKKworCisKKy8qIHVzaW5nIGEgcmVnaXN0ZXIgKi8KK1E2SU5TTihTMl90c3RiaXRf ciwiUGQ0PXRzdGJpdChSczMyLFJ0MzIpIiwKK0FUVFJJQlMoKSwgIlRlc3QgYSBiaXQiLAorewor CVBkViA9IGY4QklUU09GKChmQ0FTVDRfOHUoUnNWKSAmIGZCSURJUl9MU0hJRlRMKDEsZlNYVE4o NywzMixSdFYpLDRfOCkpICE9IDApOworfSkKKworUTZJTlNOKFM0X250c3RiaXRfciwiUGQ0PSF0 c3RiaXQoUnMzMixSdDMyKSIsCitBVFRSSUJTKCksICJUZXN0IGEgYml0IiwKK3sKKwlQZFYgPSBm OEJJVFNPRigoZkNBU1Q0Xzh1KFJzVikgJiBmQklESVJfTFNISUZUTCgxLGZTWFROKDcsMzIsUnRW KSw0XzgpKSA9PSAwKTsKK30pCisKK1E2SU5TTihTMl9zZXRiaXRfciwiUmQzMj1zZXRiaXQoUnMz MixSdDMyKSIsCitBVFRSSUJTKCksICJTZXQgYSBiaXQiLAoreworCVJkViA9IChSc1YgfCBmQklE SVJfTFNISUZUTCgxLGZTWFROKDcsMzIsUnRWKSw0XzgpKTsKK30pCisKK1E2SU5TTihTMl90b2dn bGViaXRfciwiUmQzMj10b2dnbGViaXQoUnMzMixSdDMyKSIsCitBVFRSSUJTKCksICJUb2dnbGUg YSBiaXQiLAoreworCVJkViA9IChSc1YgXiBmQklESVJfTFNISUZUTCgxLGZTWFROKDcsMzIsUnRW KSw0XzgpKTsKK30pCisKK1E2SU5TTihTMl9jbHJiaXRfciwiUmQzMj1jbHJiaXQoUnMzMixSdDMy KSIsCitBVFRSSUJTKCksICJDbGVhciBhIGJpdCIsCit7CisJUmRWID0gKFJzViAmICh+KGZCSURJ Ul9MU0hJRlRMKDEsZlNYVE4oNywzMixSdFYpLDRfOCkpKSk7Cit9KQorCisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogdmVjdG9yIHNoaWZ0aW5n ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworLyogSGFsZiBWZWN0b3IgSW1tZWRpYXRlIFNoaWZ0 cyAqLworCitRNklOU04oUzJfYXNyX2lfdmgsIlJkZDMyPXZhc3JoKFJzczMyLCN1NCkiLEFUVFJJ QlMoKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sK KyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBm U0VUSEFMRihpLFJkZFYsIChmR0VUSEFMRihpLFJzc1YpPj51aVYpKTsKKyAgICAgICAgfQorfSkK KworCitRNklOU04oUzJfbHNyX2lfdmgsIlJkZDMyPXZsc3JoKFJzczMyLCN1NCkiLEFUVFJJQlMo KSwKKwkiVmVjdG9yIExvZ2ljYWwgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAg ICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFM RihpLFJkZFYsIChmR0VUVUhBTEYoaSxSc3NWKT4+dWlWKSk7CisgICAgICAgIH0KK30pCisKK1E2 SU5TTihTMl9hc2xfaV92aCwiUmRkMzI9dmFzbGgoUnNzMzIsI3U0KSIsQVRUUklCUygpLAorCSJW ZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBMZWZ0IGJ5IEltbWVkaWF0ZSIsCit7CisgICAgICAgIGZI SURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxS ZGRWLCAoZkdFVEhBTEYoaSxSc3NWKTw8dWlWKSk7CisgICAgICAgIH0KK30pCisKKy8qIEhhbGYg VmVjdG9yIFJlZ2lzdGVyIFNoaWZ0cyAqLworCitRNklOU04oUzJfYXNyX3JfdmgsIlJkZDMyPXZh c3JoKFJzczMyLFJ0MzIpIixBVFRSSUJTKCksCisJIlZlY3RvciBBcml0aG1ldGljIFNoaWZ0IFJp Z2h0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3Ig KGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsIGZCSURJUl9BU0hJRlRSKGZHRVRI QUxGKGksUnNzViksZlNYVE4oNywzMixSdFYpLDJfOCkpOworICAgICAgICB9Cit9KQorCitRNklO U04oUzVfYXNyaHViX3JuZF9zYXQsIlJkMzI9dmFzcmh1YihSc3MzMiwjdTQpOnJhdyIsLAorCSJW ZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBSaWdodCBieSBJbW1lZGlhdGUgd2l0aCBSb3VuZCwgU2F0 dXJhdGUsIGFuZCBQYWNrIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3Ig KGk9MDtpPDQ7aSsrKSB7CisJCQlmU0VUQllURShpLFJkViwgZlNBVFVCKCAoKGZHRVRIQUxGKGks UnNzVikgPj4gdWlWICkrMSk+PjEgICkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzVfYXNy aHViX3NhdCwiUmQzMj12YXNyaHViKFJzczMyLCN1NCk6c2F0IiwsCisJIlZlY3RvciBBcml0aG1l dGljIFNoaWZ0IFJpZ2h0IGJ5IEltbWVkaWF0ZSB3aXRoIFNhdHVyYXRlIGFuZCBQYWNrIiwKK3sK KyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCQlm U0VUQllURShpLFJkViwgZlNBVFVCKCBmR0VUSEFMRihpLFJzc1YpID4+IHVpViApKTsKKyAgICAg ICAgfQorfSkKKworCisKK1E2SU5TTihTNV92YXNyaHJuZCwiUmRkMzI9dmFzcmgoUnNzMzIsI3U0 KTpyYXciLCwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIHdp dGggUm91bmQiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8 NDtpKyspIHsKKwkJCWZTRVRIQUxGKGksUmRkViwgKCAoKGZHRVRIQUxGKGksUnNzVikgPj4gdWlW KSsxKT4+MSAgKSk7CisgICAgICAgIH0KK30pCisKKworUTZJTlNOKFMyX2FzbF9yX3ZoLCJSZGQz Mj12YXNsaChSc3MzMixSdDMyKSIsQVRUUklCUygpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlm dCBMZWZ0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBm b3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsIGZCSURJUl9BU0hJRlRMKGZH RVRIQUxGKGksUnNzViksZlNYVE4oNywzMixSdFYpLDJfOCkpOworICAgICAgICB9Cit9KQorCisK KworUTZJTlNOKFMyX2xzcl9yX3ZoLCJSZGQzMj12bHNyaChSc3MzMixSdDMyKSIsQVRUUklCUygp LAorCSJWZWN0b3IgTG9naWNhbCBTaGlmdCBSaWdodCBieSBSZWdpc3RlciIsCit7CisgICAgICAg IGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYo aSxSZGRWLCBmQklESVJfTFNISUZUUihmR0VUVUhBTEYoaSxSc3NWKSxmU1hUTig3LDMyLFJ0Viks Ml84KSk7CisgICAgICAgIH0KK30pCisKKworUTZJTlNOKFMyX2xzbF9yX3ZoLCJSZGQzMj12bHNs aChSc3MzMixSdDMyKSIsQVRUUklCUygpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlmdCBMZWZ0IGJ5 IFJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtp PDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsIGZCSURJUl9MU0hJRlRMKGZHRVRVSEFMRihp LFJzc1YpLGZTWFROKDcsMzIsUnRWKSwyXzgpKTsKKyAgICAgICAgfQorfSkKKworCisKKworLyog V29yZCBWZWN0b3IgSW1tZWRpYXRlIFNoaWZ0cyAqLworCitRNklOU04oUzJfYXNyX2lfdncsIlJk ZDMyPXZhc3J3KFJzczMyLCN1NSkiLEFUVFJJQlMoKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hp ZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAg ICBmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJkZFYsKGZHRVRXT1JEKGksUnNz Vik+PnVpVikpOworICAgICAgICB9Cit9KQorCisKKworUTZJTlNOKFMyX2Fzcl9pX3N2d190cnVu LCJSZDMyPXZhc3J3KFJzczMyLCN1NSkiLEFUVFJJQlMoQV9BUkNIVjIpLAorCSJWZWN0b3IgQXJp dGhtZXRpYyBTaGlmdCBSaWdodCBieSBJbW1lZGlhdGUgd2l0aCBUcnVuY2F0ZSBhbmQgUGFjayIs Cit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgewor CSAgZlNFVEhBTEYoaSxSZFYsZkdFVEhBTEYoMCwoZkdFVFdPUkQoaSxSc3NWKT4+dWlWKSkpOwor ICAgICAgICB9Cit9KQorCitRNklOU04oUzJfYXNyX3Jfc3Z3X3RydW4sIlJkMzI9dmFzcncoUnNz MzIsUnQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBS aWdodCB0cnVuY2F0ZSBhbmQgUGFjayIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAg ICAgZm9yIChpPTA7aTwyO2krKykgeworIAkgIGZTRVRIQUxGKGksUmRWLGZHRVRIQUxGKDAsZkJJ RElSX0FTSElGVFIoZkdFVFdPUkQoaSxSc3NWKSxmU1hUTig3LDMyLFJ0ViksNF84KSkpOworICAg ICAgICB9Cit9KQorCisKK1E2SU5TTihTMl9sc3JfaV92dywiUmRkMzI9dmxzcncoUnNzMzIsI3U1 KSIsQVRUUklCUygpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlmdCBSaWdodCBieSBJbW1lZGlhdGUi LAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsK KwkgIGZTRVRXT1JEKGksUmRkViwoZkdFVFVXT1JEKGksUnNzVik+PnVpVikpOworICAgICAgICB9 Cit9KQorCitRNklOU04oUzJfYXNsX2lfdncsIlJkZDMyPXZhc2x3KFJzczMyLCN1NSkiLEFUVFJJ QlMoKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgTGVmdCBieSBJbW1lZGlhdGUiLAorewor ICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZT RVRXT1JEKGksUmRkViwoZkdFVFdPUkQoaSxSc3NWKTw8dWlWKSk7CisgICAgICAgIH0KK30pCisK Ky8qIFdvcmQgVmVjdG9yIFJlZ2lzdGVyIFNoaWZ0cyAqLworCitRNklOU04oUzJfYXNyX3Jfdncs IlJkZDMyPXZhc3J3KFJzczMyLFJ0MzIpIixBVFRSSUJTKCksCisJIlZlY3RvciBBcml0aG1ldGlj IFNoaWZ0IFJpZ2h0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAg ICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisgCSAgZlNFVFdPUkQoaSxSZGRWLCBmQklESVJfQVNI SUZUUihmR0VUV09SRChpLFJzc1YpLGZTWFROKDcsMzIsUnRWKSw0XzgpKTsKKyAgICAgICAgfQor fSkKKworCisKK1E2SU5TTihTMl9hc2xfcl92dywiUmRkMzI9dmFzbHcoUnNzMzIsUnQzMikiLEFU VFJJQlMoKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgTGVmdCBieSBSZWdpc3RlciIsCit7 CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworIAkg IGZTRVRXT1JEKGksUmRkViwgZkJJRElSX0FTSElGVEwoZkdFVFdPUkQoaSxSc3NWKSxmU1hUTig3 LDMyLFJ0ViksNF84KSk7CisgICAgICAgIH0KK30pCisKKworUTZJTlNOKFMyX2xzcl9yX3Z3LCJS ZGQzMj12bHNydyhSc3MzMixSdDMyKSIsQVRUUklCUygpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlm dCBSaWdodCBieSBSZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAg Zm9yIChpPTA7aTwyO2krKykgeworIAkgIGZTRVRXT1JEKGksUmRkViwgZkJJRElSX0xTSElGVFIo ZkdFVFVXT1JEKGksUnNzViksZlNYVE4oNywzMixSdFYpLDRfOCkpOworICAgICAgICB9Cit9KQor CisKKworUTZJTlNOKFMyX2xzbF9yX3Z3LCJSZGQzMj12bHNsdyhSc3MzMixSdDMyKSIsQVRUUklC UygpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwKK3sKKyAgICAg ICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisgCSAgZlNFVFdP UkQoaSxSZGRWLCBmQklESVJfTFNISUZUTChmR0VUVVdPUkQoaSxSc3NWKSxmU1hUTig3LDMyLFJ0 ViksNF84KSk7CisgICAgICAgIH0KK30pCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgU1hUL1pYVC9TQVQvVFJVTi9S TkRQQUNLICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisKK1E2SU5TTihTMl92cm5kcGFja3doLCJSZDMyPXZybmR3aChSc3Mz MikiLEFUVFJJQlMoKSwKKyJSb3VuZCBhbmQgUGFjayB2ZWN0b3Igb2Ygd29yZHMgdG8gSGFsZndv cmRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsr KSB7CisJICBmU0VUSEFMRihpLFJkVixmR0VUSEFMRigxLChmR0VUV09SRChpLFJzc1YpKzB4MDgw MDApKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92cm5kcGFja3docywiUmQzMj12cm5k d2goUnNzMzIpOnNhdCIsQVRUUklCUygpLAorIlJvdW5kIGFuZCBQYWNrIHZlY3RvciBvZiB3b3Jk cyB0byBIYWxmd29yZHMiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAo aT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRWLGZHRVRIQUxGKDEsZlNBVChmR0VUV09S RChpLFJzc1YpKzB4MDgwMDApKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92c3h0Ymgs IlJkZDMyPXZzeHRiaChSczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHNpZ24gZXh0 ZW5kIGJ5dGUgdG8gaGFsZiIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9y IChpPTA7aTw0O2krKykgeworICAJICBmU0VUSEFMRihpLFJkZFYsZkdFVEJZVEUoaSxSc1YpKTsK KyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3Z6eHRiaCwiUmRkMzI9dnp4dGJoKFJzMzIpIixB VFRSSUJTKCksCisiVmVjdG9yIHplcm8gZXh0ZW5kIGJ5dGUgdG8gaGFsZiIsCit7CisgICAgICAg IGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICBmU0VUSEFM RihpLFJkZFYsZkdFVFVCWVRFKGksUnNWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92 c2F0aHViLCJSZDMyPXZzYXRodWIoUnNzMzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHNhdHVyYXRl IGhhbGYgdG8gdW5zaWduZWQgYnl0ZSIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAg ICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICBmU0VUQllURShpLFJkVixmU0FUVU4oOCxmR0VU SEFMRihpLFJzc1YpKSk7CisgICAgICAgIH0KK30pCisKKworCisKKworUTZJTlNOKFMyX3N2c2F0 aHViLCJSZDMyPXZzYXRodWIoUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlZlY3RvciBzYXR1 cmF0ZSBoYWxmIHRvIHVuc2lnbmVkIGJ5dGUiLAoreworCWZTRVRCWVRFKDAsUmRWLGZTQVRVTig4 LGZHRVRIQUxGKDAsUnNWKSkpOworICAJZlNFVEJZVEUoMSxSZFYsZlNBVFVOKDgsZkdFVEhBTEYo MSxSc1YpKSk7CisgIAlmU0VUQllURSgyLFJkViwwKTsKKyAgCWZTRVRCWVRFKDMsUmRWLDApOwor fSkKKworUTZJTlNOKFMyX3N2c2F0aGIsIlJkMzI9dnNhdGhiKFJzMzIpIixBVFRSSUJTKEFfQVJD SFYyKSwKKyJWZWN0b3Igc2F0dXJhdGUgaGFsZiB0byBzaWduZWQgYnl0ZSIsCit7CisJZlNFVEJZ VEUoMCxSZFYsZlNBVE4oOCxmR0VUSEFMRigwLFJzVikpKTsKKyAgCWZTRVRCWVRFKDEsUmRWLGZT QVROKDgsZkdFVEhBTEYoMSxSc1YpKSk7CisgIAlmU0VUQllURSgyLFJkViwwKTsKKyAgCWZTRVRC WVRFKDMsUmRWLDApOworfSkKKworCitRNklOU04oUzJfdnNhdGhiLCJSZDMyPXZzYXRoYihSc3Mz MikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlZlY3RvciBzYXR1cmF0ZSBoYWxmIHRvIHNpZ25lZCBi eXRlIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsr KSB7CisgIAkgIGZTRVRCWVRFKGksUmRWLGZTQVROKDgsZkdFVEhBTEYoaSxSc3NWKSkpOworICAg ICAgICB9Cit9KQorCitRNklOU04oUzJfdnRydW5vaGIsIlJkMzI9dnRydW5vaGIoUnNzMzIpIixB VFRSSUJTKEFfQVJDSFYyKSwKKyJWZWN0b3IgdHJ1bmNhdGUgaGFsZiB0byBieXRlOiB0YWtlIGhp Z2giLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKysp IHsKKyAgCSAgZlNFVEJZVEUoaSxSZFYsZkdFVEJZVEUoaSoyKzEsUnNzVikpOworICAgICAgICB9 Cit9KQorCitRNklOU04oUzJfdnRydW5ld2gsIlJkZDMyPXZ0cnVuZXdoKFJzczMyLFJ0dDMyKSIs QVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHRydW5jYXRlIHdvcmQgdG8gaGFsZjogdGFrZSBs b3ciLAoreworCWZTRVRIQUxGKDAsUmRkVixmR0VUSEFMRigwLFJ0dFYpKTsKKwlmU0VUSEFMRigx LFJkZFYsZkdFVEhBTEYoMixSdHRWKSk7CisJZlNFVEhBTEYoMixSZGRWLGZHRVRIQUxGKDAsUnNz VikpOworCWZTRVRIQUxGKDMsUmRkVixmR0VUSEFMRigyLFJzc1YpKTsKK30pCisKK1E2SU5TTihT Ml92dHJ1bm93aCwiUmRkMzI9dnRydW5vd2goUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFfQVJDSFYy KSwKKyJWZWN0b3IgdHJ1bmNhdGUgd29yZCB0byBoYWxmOiB0YWtlIGhpZ2giLAoreworCWZTRVRI QUxGKDAsUmRkVixmR0VUSEFMRigxLFJ0dFYpKTsKKwlmU0VUSEFMRigxLFJkZFYsZkdFVEhBTEYo MyxSdHRWKSk7CisJZlNFVEhBTEYoMixSZGRWLGZHRVRIQUxGKDEsUnNzVikpOworCWZTRVRIQUxG KDMsUmRkVixmR0VUSEFMRigzLFJzc1YpKTsKK30pCisKKworUTZJTlNOKFMyX3Z0cnVuZWhiLCJS ZDMyPXZ0cnVuZWhiKFJzczMyKSIsQVRUUklCUygpLAorIlZlY3RvciB0cnVuY2F0ZSBoYWxmIHRv IGJ5dGU6IHRha2UgbG93IiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3Ig KGk9MDtpPDQ7aSsrKSB7CisgIAkgIGZTRVRCWVRFKGksUmRWLGZHRVRCWVRFKGkqMixSc3NWKSk7 CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTNl92dHJ1bmVoYl9wcHAsIlJkZDMyPXZ0cnVuZWhi KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIlZlY3RvciB0cnVuY2F0ZSBoYWxmIHRvIGJ5dGU6 IHRha2UgbG93IiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtp PDQ7aSsrKSB7CisgIAkgIAkJZlNFVEJZVEUoaSxSZGRWLGZHRVRCWVRFKGkqMixSdHRWKSk7CisJ CQlmU0VUQllURShpKzQsUmRkVixmR0VUQllURShpKjIsUnNzVikpOworICAgICAgICB9Cit9KQor CitRNklOU04oUzZfdnRydW5vaGJfcHBwLCJSZGQzMj12dHJ1bm9oYihSc3MzMixSdHQzMikiLEFU VFJJQlMoKSwKKyJWZWN0b3IgdHJ1bmNhdGUgaGFsZiB0byBieXRlOiB0YWtlIGhpZ2giLAorewor ICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKyAgCSAg CQlmU0VUQllURShpLFJkZFYsZkdFVEJZVEUoaSoyKzEsUnR0VikpOworICAJICAJCWZTRVRCWVRF KGkrNCxSZGRWLGZHRVRCWVRFKGkqMisxLFJzc1YpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNO KFMyX3ZzeHRodywiUmRkMzI9dnN4dGh3KFJzMzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHNpZ24g ZXh0ZW5kIGhhbGYgdG8gd29yZCIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAg Zm9yIChpPTA7aTwyO2krKykgeworICAJICBmU0VUV09SRChpLFJkZFYsZkdFVEhBTEYoaSxSc1Yp KTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3Z6eHRodywiUmRkMzI9dnp4dGh3KFJzMzIp IixBVFRSSUJTKCksCisiVmVjdG9yIHplcm8gZXh0ZW5kIGhhbGYgdG8gd29yZCIsCit7CisgICAg ICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworICAJICBmU0VU V09SRChpLFJkZFYsZkdFVFVIQUxGKGksUnNWKSk7CisgICAgICAgIH0KK30pCisKKworUTZJTlNO KFMyX3ZzYXR3aCwiUmQzMj12c2F0d2goUnNzMzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHNhdHVy YXRlIHdvcmQgdG8gc2lnbmVkIGhhbGYiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAg ICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKyAgCSAgZlNFVEhBTEYoaSxSZFYsZlNBVE4oMTYsZkdF VFdPUkQoaSxSc3NWKSkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJfdnNhdHd1aCwiUmQz Mj12c2F0d3VoKFJzczMyKSIsQVRUUklCUygpLAorIlZlY3RvciBzYXR1cmF0ZSB3b3JkIHRvIHVu c2lnbmVkIGhhbGYiLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0w O2k8MjtpKyspIHsKKyAgCSAgZlNFVEhBTEYoaSxSZFYsZlNBVFVOKDE2LGZHRVRXT1JEKGksUnNz VikpKTsKKyAgICAgICAgfQorfSkKKworLyogT3RoZXIgbWlzYyBpbnNucyBvZiB0aGlzIHR5cGUg Ki8KKworUTZJTlNOKFMyX3BhY2tobCwiUmRkMzI9cGFja2hsKFJzMzIsUnQzMikiLEFUVFJJQlMo KSwKKyJQYWNrIGhpZ2ggaGFsZndvcmRzIGFuZCBsb3cgaGFsZndvcmRzIHRvZ2V0aGVyIiwKK3sK KyAgICBmU0VUSEFMRigwLFJkZFYsZkdFVEhBTEYoMCxSdFYpKTsKKyAgICBmU0VUSEFMRigxLFJk ZFYsZkdFVEhBTEYoMCxSc1YpKTsKKyAgICBmU0VUSEFMRigyLFJkZFYsZkdFVEhBTEYoMSxSdFYp KTsKKyAgICBmU0VUSEFMRigzLFJkZFYsZkdFVEhBTEYoMSxSc1YpKTsKK30pCisKK1E2SU5TTihB Ml9zd2l6LCJSZDMyPXN3aXooUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkVuZGlhbiBzd2Fw IHRoZSBieXRlcyBvZiBScyIsCit7CisgICAgZlNFVEJZVEUoMCxSZFYsZkdFVEJZVEUoMyxSc1Yp KTsKKyAgICBmU0VUQllURSgxLFJkVixmR0VUQllURSgyLFJzVikpOworICAgIGZTRVRCWVRFKDIs UmRWLGZHRVRCWVRFKDEsUnNWKSk7CisgICAgZlNFVEJZVEUoMyxSZFYsZkdFVEJZVEUoMCxSc1Yp KTsKK30pCisKKworCisvKiBWZWN0b3IgU2F0IHdpdGhvdXQgUGFja2luZyAqLworUTZJTlNOKFMy X3ZzYXRodWJfbm9wYWNrLCJSZGQzMj12c2F0aHViKFJzczMyKSIsQVRUUklCUygpLAorIlZlY3Rv ciBzYXR1cmF0ZSBoYWxmIHRvIHVuc2lnbmVkIGJ5dGUiLAoreworICAgICAgICBmSElERShpbnQg aTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKyAgCSAgZlNFVEhBTEYoaSxSZGRWLGZT QVRVTig4LGZHRVRIQUxGKGksUnNzVikpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3Zz YXRoYl9ub3BhY2ssIlJkZDMyPXZzYXRoYihSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlZl Y3RvciBzYXR1cmF0ZSBoYWxmIHRvIHNpZ25lZCBieXRlIHdpdGhvdXQgcGFjayIsCit7CisgICAg ICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICBmU0VU SEFMRihpLFJkZFYsZlNBVE4oOCxmR0VUSEFMRihpLFJzc1YpKSk7CisgICAgICAgIH0KK30pCisK K1E2SU5TTihTMl92c2F0d2hfbm9wYWNrLCJSZGQzMj12c2F0d2goUnNzMzIpIixBVFRSSUJTKCks CisiVmVjdG9yIHNhdHVyYXRlIHdvcmQgdG8gc2lnbmVkIGhhbGYiLAoreworICAgICAgICBmSElE RShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKyAgCSAgZlNFVFdPUkQoaSxS ZGRWLGZTQVROKDE2LGZHRVRXT1JEKGksUnNzVikpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNO KFMyX3ZzYXR3dWhfbm9wYWNrLCJSZGQzMj12c2F0d3VoKFJzczMyKSIsQVRUUklCUygpLAorIlZl Y3RvciBzYXR1cmF0ZSB3b3JkIHRvIHVuc2lnbmVkIGhhbGYiLAoreworICAgICAgICBmSElERShp bnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKyAgCSAgZlNFVFdPUkQoaSxSZGRW LGZTQVRVTigxNixmR0VUV09SRChpLFJzc1YpKSk7CisgICAgICAgIH0KK30pCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBTaHVmZmxlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK1E2SU5TTihTMl9zaHVmZm9iLCJSZGQz Mj1zaHVmZm9iKFJ0dDMyLFJzczMyKSIsQVRUUklCUygpLAorIlNodWZmbGUgaGlnaCBieXRlcyB0 b2dldGhlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0 O2krKykgeworCSAgZlNFVEJZVEUoaSoyICAsUmRkVixmR0VUQllURShpKjIrMSxSc3NWKSk7CisJ ICBmU0VUQllURShpKjIrMSxSZGRWLGZHRVRCWVRFKGkqMisxLFJ0dFYpKTsKKyAgICAgICAgfQor fSkKKworUTZJTlNOKFMyX3NodWZmZWIsIlJkZDMyPXNodWZmZWIoUnNzMzIsUnR0MzIpIixBVFRS SUJTKCksCisiU2h1ZmZsZSBsb3cgYnl0ZXMgdG9nZXRoZXIiLAoreworICAgICAgICBmSElERShp bnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZTRVRCWVRFKGkqMiAgLFJk ZFYsZkdFVEJZVEUoaSoyLFJ0dFYpKTsKKwkgIGZTRVRCWVRFKGkqMisxLFJkZFYsZkdFVEJZVEUo aSoyLFJzc1YpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3NodWZmb2gsIlJkZDMyPXNo dWZmb2goUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisiU2h1ZmZsZSBoaWdoIGhhbHZlcyB0b2dl dGhlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2kr KykgeworCSAgZlNFVEhBTEYoaSoyICAsUmRkVixmR0VUSEFMRihpKjIrMSxSc3NWKSk7CisJICBm U0VUSEFMRihpKjIrMSxSZGRWLGZHRVRIQUxGKGkqMisxLFJ0dFYpKTsKKyAgICAgICAgfQorfSkK KworUTZJTlNOKFMyX3NodWZmZWgsIlJkZDMyPXNodWZmZWgoUnNzMzIsUnR0MzIpIixBVFRSSUJT KCksCisiU2h1ZmZsZSBsb3cgaGFsdmVzIHRvZ2V0aGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50 IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpKjIgICxSZGRW LGZHRVRIQUxGKGkqMixSdHRWKSk7CisJICBmU0VUSEFMRihpKjIrMSxSZGRWLGZHRVRIQUxGKGkq MixSc3NWKSk7CisgICAgICAgIH0KK30pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKiBTdHJhbmdlIGJpdCBpbnN0cnVjdGlvbnMgICAgICAg ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitRNklOU04oUzVfcG9wY291bnRwLCJSZDMyPXBvcGNvdW50KFJzczMyKSIsQVRU UklCUygpLAorIlBvcHVsYXRpb24gQ291bnQiLCB7IFJkViA9IGZDT1VOVE9ORVNfOChSc3NWKTsg fSkKKworUTZJTlNOKFM0X3Bhcml0eSwiUmQzMj1wYXJpdHkoUnMzMixSdDMyKSIsLAorIlBhcml0 eSBvZiBNYXNrZWQgVmFsdWUiLCB7IFJkViA9IDEmZkNPVU5UT05FU180KFJzViAmIFJ0Vik7IH0p CisKK1E2SU5TTihTMl9wYXJpdHlwLCJSZDMyPXBhcml0eShSc3MzMixSdHQzMikiLEFUVFJJQlMo QV9BUkNIVjIpLAorIlBhcml0eSBvZiBNYXNrZWQgVmFsdWUiLCB7IFJkViA9IDEmZkNPVU5UT05F U184KFJzc1YgJiBSdHRWKTsgfSkKKworUTZJTlNOKFMyX2xmc3AsIlJkZDMyPWxmcyhSc3MzMixS dHQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlBhcml0eSBvZiBNYXNrZWQgVmFsdWUiLCB7IFJk ZFYgPSAoZkNBU1Q4dShSc3NWKSA+PiAxKSB8IChmQ0FTVDh1KCgxJmZDT1VOVE9ORVNfOChSc3NW ICYgUnR0VikpKTw8NjMpIDsgfSkKKworUTZJTlNOKFMyX2NsYm5vcm0sIlJkMzI9bm9ybWFtdChS czMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiQ291bnQgbGVhZGluZyBzaWduIGJpdHMgLSAxIiwg eyBpZiAoUnNWID09IDApIHsgUmRWID0gMDsgfSBlbHNlIHsgUmRWID0gKGZNQVgoZkNMMV80KFJz ViksZkNMMV80KH5Sc1YpKSktMTt9IH0pCisKK1E2SU5TTihTNF9jbGJhZGRpLCJSZDMyPWFkZChj bGIoUnMzMiksI3M2KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiQ291bnQgbGVhZGluZyBzaWduIGJp dHMgdGhlbiBhZGQgc2lnbmVkIG51bWJlciIsCit7IFJkViA9IChmTUFYKGZDTDFfNChSc1YpLGZD TDFfNCh+UnNWKSkpK3NpVjt9ICkKKworUTZJTlNOKFM0X2NsYnBub3JtLCJSZDMyPW5vcm1hbXQo UnNzMzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb3VudCBsZWFkaW5nIHNpZ24gYml0cyAtIDEi LCB7IGlmIChSc3NWID09IDApIHsgUmRWID0gMDsgfQorZWxzZSB7IFJkViA9IChmTUFYKGZDTDFf OChSc3NWKSxmQ0wxXzgoflJzc1YpKSktMTt9fSkKKworUTZJTlNOKFM0X2NsYnBhZGRpLCJSZDMy PWFkZChjbGIoUnNzMzIpLCNzNikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvdW50IGxlYWRpbmcg c2lnbiBiaXRzIHRoZW4gYWRkIHNpZ25lZCBudW1iZXIiLAoreyBSZFYgPSAoZk1BWChmQ0wxXzgo UnNzViksZkNMMV84KH5Sc3NWKSkpK3NpVjt9KQorCisKK1E2SU5TTihTMl9jbGIsIlJkMzI9Y2xi KFJzMzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9IGZNQVgoZkNM MV80KFJzViksZkNMMV80KH5Sc1YpKTt9KQorCisKK1E2SU5TTihTMl9jbDAsIlJkMzI9Y2wwKFJz MzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9IGZDTDFfNCh+UnNW KTt9KQorCitRNklOU04oUzJfY2wxLCJSZDMyPWNsMShSczMyKSIsQVRUUklCUygpLAorIkNvdW50 IGxlYWRpbmcgYml0cyIsIHtSZFYgPSBmQ0wxXzQoUnNWKTt9KQorCitRNklOU04oUzJfY2xicCwi UmQzMj1jbGIoUnNzMzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9 IGZNQVgoZkNMMV84KFJzc1YpLGZDTDFfOCh+UnNzVikpO30pCisKK1E2SU5TTihTMl9jbDBwLCJS ZDMyPWNsMChSc3MzMikiLEFUVFJJQlMoKSwKKyJDb3VudCBsZWFkaW5nIGJpdHMiLCB7UmRWID0g ZkNMMV84KH5Sc3NWKTt9KQorCitRNklOU04oUzJfY2wxcCwiUmQzMj1jbDEoUnNzMzIpIixBVFRS SUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9IGZDTDFfOChSc3NWKTt9KQorCisK KworCitRNklOU04oUzJfYnJldiwJIlJkMzI9YnJldihSczMyKSIsICAgQVRUUklCUyhBX0FSQ0hW MiksICJCaXQgUmV2ZXJzZSIse1JkViA9IGZCUkVWXzQoUnNWKTt9KQorUTZJTlNOKFMyX2JyZXZw LCJSZGQzMj1icmV2KFJzczMyKSIsIEFUVFJJQlMoKSwgIkJpdCBSZXZlcnNlIix7UmRkViA9IGZC UkVWXzgoUnNzVik7fSkKK1E2SU5TTihTMl9jdDAsICAiUmQzMj1jdDAoUnMzMikiLCAgICBBVFRS SUJTKEFfQVJDSFYyKSwgIkNvdW50IFRyYWlsaW5nIix7UmRWID0gZkNMMV80KH5mQlJFVl80KFJz VikpO30pCitRNklOU04oUzJfY3QxLCAgIlJkMzI9Y3QxKFJzMzIpIiwgICAgQVRUUklCUyhBX0FS Q0hWMiksICJDb3VudCBUcmFpbGluZyIse1JkViA9IGZDTDFfNChmQlJFVl80KFJzVikpO30pCitR NklOU04oUzJfY3QwcCwgIlJkMzI9Y3QwKFJzczMyKSIsICAgQVRUUklCUygpLCAiQ291bnQgVHJh aWxpbmciLHtSZFYgPSBmQ0wxXzgofmZCUkVWXzgoUnNzVikpO30pCitRNklOU04oUzJfY3QxcCwg IlJkMzI9Y3QxKFJzczMyKSIsICAgQVRUUklCUygpLCAiQ291bnQgVHJhaWxpbmciLHtSZFYgPSBm Q0wxXzgoZkJSRVZfOChSc3NWKSk7fSkKKworCitRNklOU04oUzJfaW50ZXJsZWF2ZSwiUmRkMzI9 aW50ZXJsZWF2ZShSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLCJJbnRlcmxlYXZlIGJpdHMiLAor e1JkZFYgPSBmSU5URVJMRUFWRShmR0VUV09SRCgxLFJzc1YpLGZHRVRXT1JEKDAsUnNzVikpO30p CisKK1E2SU5TTihTMl9kZWludGVybGVhdmUsIlJkZDMyPWRlaW50ZXJsZWF2ZShSc3MzMikiLEFU VFJJQlMoQV9BUkNIVjIpLCJJbnRlcmxlYXZlIGJpdHMiLAore1JkZFYgPSBmREVJTlRFUkxFQVZF KFJzc1YpO30pCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N1Ymluc25z LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zdWJpbnNucy5pZGVmCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYWIxMmYKLS0tIC9kZXYvbnVsbAorKysgYi90YXJn ZXQvaGV4YWdvbi9pbXBvcnRlZC9zdWJpbnNucy5pZGVmCkBAIC0wLDAgKzEsMTUyIEBACisvKgor ICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIElu Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICovCisKKy8qCisgKiBzdWItaW5zdHJ1Y3Rpb25zCisgKi8KKworCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBBLXR5cGUgc3Vi aW5zbnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworUTZJTlNOKFNBMV9hZGRpLCAgICAgIlJ4MTY9YWRkKFJ4MTYsI3M3KSIsICAgIEFUVFJJQlMo QV9TVUJJTlNOKSwiQWRkIiwgICAgICAgIHsgZklNTUVYVChzaVYpOyBSeFY9UnhWK3NpVjt9KQor UTZJTlNOKFNBMV90ZnIsICAgICAgIlJkMTY9UnMxNiIsICAgICAgICAgICAgIEFUVFJJQlMoQV9T VUJJTlNOKSwiVGZyIiwgICAgICAgIHsgUmRWPVJzVjt9KQorUTZJTlNOKFNBMV9zZXRpLCAgICAg IlJkMTY9I3U2IiwgICAgICAgICAgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiU2V0IGltbWVkIiwg IHsgZklNTUVYVCh1aVYpOyBSZFY9dWlWO30pCitRNklOU04oU0ExX3NldGluMSwgICAiUmQxNj0j LTEiLCAgICAgICAgICAgICAgQVRUUklCUyhBX1NVQklOU04pLCJTZXQgdG8gLTEiLCAgeyBSZFY9 LTE7fSkKK1E2SU5TTihTQTFfY2xydG5ldywgICJpZiAocDAubmV3KSBSZDE2PSMwIiwgICBBVFRS SUJTKEFfU1VCSU5TTiksImNsZWFyIGlmIHRydWUiLCB7IGlmIChmTFNCTkVXMCkge1JkVj0wO30g ZWxzZSB7Q0FOQ0VMO30gfSkKK1E2SU5TTihTQTFfY2xyZm5ldywgICJpZiAoIXAwLm5ldykgUmQx Nj0jMCIsICBBVFRSSUJTKEFfU1VCSU5TTiksImNsZWFyIGlmIGZhbHNlIix7IGlmIChmTFNCTkVX ME5PVCkge1JkVj0wO30gZWxzZSB7Q0FOQ0VMO30gfSkKK1E2SU5TTihTQTFfY2xydCwgICAgICJp ZiAocDApIFJkMTY9IzAiLCAgICAgICBBVFRSSUJTKEFfU1VCSU5TTiksImNsZWFyIGlmIHRydWUi LCB7IGlmIChmTFNCT0xEKGZSRUFEX1AwKCkpKSB7UmRWPTA7fSBlbHNlIHtDQU5DRUw7fSB9KQor UTZJTlNOKFNBMV9jbHJmLCAgICAgImlmICghcDApIFJkMTY9IzAiLCAgICAgIEFUVFJJQlMoQV9T VUJJTlNOKSwiY2xlYXIgaWYgZmFsc2UiLHsgaWYgKGZMU0JPTEROT1QoZlJFQURfUDAoKSkpIHtS ZFY9MDt9IGVsc2Uge0NBTkNFTDt9IH0pCisKK1E2SU5TTihTQTFfYWRkc3AsICAgICJSZDE2PWFk ZChyMjksI3U2OjIpIiwgICBBVFRSSUJTKEFfU1VCSU5TTiksIkFkZCIsICAgICAgICB7IFJkVj1m UkVBRF9TUCgpK3VpVjsgfSkKK1E2SU5TTihTQTFfaW5jLCAgICAgICJSZDE2PWFkZChSczE2LCMx KSIsICAgICBBVFRSSUJTKEFfU1VCSU5TTiksIkluYyIsICAgICAgICB7IFJkVj1Sc1YrMTt9KQor UTZJTlNOKFNBMV9kZWMsICAgICAgIlJkMTY9YWRkKFJzMTYsIy0xKSIsICAgIEFUVFJJQlMoQV9T VUJJTlNOKSwiRGVjIiwgICAgICAgIHsgUmRWPVJzVi0xO30pCitRNklOU04oU0ExX2FkZHJ4LCAg ICAiUngxNj1hZGQoUngxNixSczE2KSIsICAgQVRUUklCUyhBX1NVQklOU04pLCJBZGQiLCAgICAg ICAgeyBSeFY9UnhWK1JzVjsgfSkKK1E2SU5TTihTQTFfenh0YiwgICAgICJSZDE2PWFuZChSczE2 LCMyNTUpIiwgICBBVFRSSUJTKEFfU1VCSU5TTiksIlp4dGIiLCAgICAgICB7IFJkVj0gZlpYVE4o OCwzMixSc1YpO30pCitRNklOU04oU0ExX2FuZDEsICAgICAiUmQxNj1hbmQoUnMxNiwjMSkiLCAg ICAgQVRUUklCUyhBX1NVQklOU04pLCJBbmQgIzEiLCAgICAgeyBSZFY9IFJzViYxO30pCitRNklO U04oU0ExX3N4dGIsICAgICAiUmQxNj1zeHRiKFJzMTYpIiwgICAgICAgQVRUUklCUyhBX1NVQklO U04pLCJTeHRiIiwgICAgICAgeyBSZFY9IGZTWFROKDgsMzIsUnNWKTt9KQorUTZJTlNOKFNBMV96 eHRoLCAgICAgIlJkMTY9enh0aChSczE2KSIsICAgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiWnh0 aCIsICAgICAgIHsgUmRWPSBmWlhUTigxNiwzMixSc1YpO30pCitRNklOU04oU0ExX3N4dGgsICAg ICAiUmQxNj1zeHRoKFJzMTYpIiwgICAgICAgQVRUUklCUyhBX1NVQklOU04pLCJTeHRoIiwgICAg ICAgeyBSZFY9IGZTWFROKDE2LDMyLFJzVik7fSkKK1E2SU5TTihTQTFfY29tYmluZXpyLCJSZGQ4 PWNvbWJpbmUoIzAsUnMxNikiLCBBVFRSSUJTKEFfU1VCSU5TTiksIkNvbWJpbmVzIiwgICB7IGZT RVRXT1JEKDAsUmRkVixSc1YpOyBmU0VUV09SRCgxLFJkZFYsMCk7IH0pCitRNklOU04oU0ExX2Nv bWJpbmVyeiwiUmRkOD1jb21iaW5lKFJzMTYsIzApIiwgQVRUUklCUyhBX1NVQklOU04pLCJDb21i aW5lcyIsICAgeyBmU0VUV09SRCgwLFJkZFYsMCk7IGZTRVRXT1JEKDEsUmRkVixSc1YpOyB9KQor UTZJTlNOKFNBMV9jb21iaW5lMGksIlJkZDg9Y29tYmluZSgjMCwjdTIpIiwgQVRUUklCUyhBX1NV QklOU04pLCJDb21iaW5lcyIsICAgeyBmU0VUV09SRCgwLFJkZFYsdWlWKTsgZlNFVFdPUkQoMSxS ZGRWLDApOyB9KQorUTZJTlNOKFNBMV9jb21iaW5lMWksIlJkZDg9Y29tYmluZSgjMSwjdTIpIiwg QVRUUklCUyhBX1NVQklOU04pLCJDb21iaW5lcyIsICAgeyBmU0VUV09SRCgwLFJkZFYsdWlWKTsg ZlNFVFdPUkQoMSxSZGRWLDEpOyB9KQorUTZJTlNOKFNBMV9jb21iaW5lMmksIlJkZDg9Y29tYmlu ZSgjMiwjdTIpIiwgQVRUUklCUyhBX1NVQklOU04pLCJDb21iaW5lcyIsICAgeyBmU0VUV09SRCgw LFJkZFYsdWlWKTsgZlNFVFdPUkQoMSxSZGRWLDIpOyB9KQorUTZJTlNOKFNBMV9jb21iaW5lM2ks IlJkZDg9Y29tYmluZSgjMywjdTIpIiwgQVRUUklCUyhBX1NVQklOU04pLCJDb21iaW5lcyIsICAg eyBmU0VUV09SRCgwLFJkZFYsdWlWKTsgZlNFVFdPUkQoMSxSZGRWLDMpOyB9KQorUTZJTlNOKFNB MV9jbXBlcWksICAgInAwPWNtcC5lcShSczE2LCN1MikiLCAgIEFUVFJJQlMoQV9TVUJJTlNOKSwi Q29tcGFyZUltbWVkIix7ZldSSVRFX1AwKGY4QklUU09GKFJzVj09dWlWKSk7fSkKKworCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgIExkMS8yIHN1 Ymluc25zICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCitRNklOU04oU0wxX2xvYWRyaV9pbywgICJSZDE2PW1lbXcoUnMxNisjdTQ6MikiLCBBVFRS SUJTKEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIHdvcmQiLCB7ZkVBX1JJKFJzVix1aVYpOyBmTE9B RCgxLDQsdSxFQSxSZFYpO30pCitRNklOU04oU0wxX2xvYWRydWJfaW8sICJSZDE2PW1lbXViKFJz MTYrI3U0OjApIixBVFRSSUJTKEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIGJ5dGUiLCB7ZkVBX1JJ KFJzVix1aVYpOyBmTE9BRCgxLDEsdSxFQSxSZFYpO30pCisKK1E2SU5TTihTTDJfbG9hZHJoX2lv LCAgIlJkMTY9bWVtaChSczE2KyN1MzoxKSIsIEFUVFJJQlMoQV9MT0FELEFfU1VCSU5TTiksImxv YWQgaGFsZiIsIHtmRUFfUkkoUnNWLHVpVik7IGZMT0FEKDEsMixzLEVBLFJkVik7fSkKK1E2SU5T TihTTDJfbG9hZHJ1aF9pbywgIlJkMTY9bWVtdWgoUnMxNisjdTM6MSkiLEFUVFJJQlMoQV9MT0FE LEFfU1VCSU5TTiksImxvYWQgaGFsZiIsIHtmRUFfUkkoUnNWLHVpVik7IGZMT0FEKDEsMix1LEVB LFJkVik7fSkKK1E2SU5TTihTTDJfbG9hZHJiX2lvLCAgIlJkMTY9bWVtYihSczE2KyN1MzowKSIs IEFUVFJJQlMoQV9MT0FELEFfU1VCSU5TTiksImxvYWQgYnl0ZSIsIHtmRUFfUkkoUnNWLHVpVik7 IGZMT0FEKDEsMSxzLEVBLFJkVik7fSkKK1E2SU5TTihTTDJfbG9hZHJpX3NwLCAgIlJkMTY9bWVt dyhyMjkrI3U1OjIpIiwgIEFUVFJJQlMoQV9MT0FELEFfU1VCSU5TTiksImxvYWQgd29yZCIsIHtm RUFfUkkoZlJFQURfU1AoKSx1aVYpOyBmTE9BRCgxLDQsdSxFQSxSZFYpO30pCitRNklOU04oU0wy X2xvYWRyZF9zcCwgICJSZGQ4PW1lbWQocjI5KyN1NTozKSIsIEFUVFJJQlMoQV9MT0FELEFfU1VC SU5TTiksImxvYWQgZHdvcmQiLHtmRUFfUkkoZlJFQURfU1AoKSx1aVYpOyBmTE9BRCgxLDgsdSxF QSxSZGRWKTt9KQorCitRNklOU04oU0wyX2RlYWxsb2NmcmFtZSwiZGVhbGxvY2ZyYW1lIiwgQVRU UklCUyhBX1NVQklOU04sQV9MT0FEKSwgIkRlYWxsb2NhdGUgc3RhY2sgZnJhbWUiLAoreyBmSElE RShzaXplOHVfdCB0bXA7KSBmRUFfUkVHKGZSRUFEX0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRt cCk7CisJdG1wID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQo MSx0bXApKTsKKwlmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7 IH0pCisKK1E2SU5TTihTTDJfcmV0dXJuLCJkZWFsbG9jX3JldHVybiIsIEFUVFJJQlMoQV9KSU5E SVIsQV9TVUJJTlNOLEFfTE9BRCxBX1JFVFVSTixBX1JFU1RSSUNUX1NMT1QwT05MWSksICJEZWFs bG9jYXRlIHN0YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KSBm RUFfUkVHKGZSRUFEX0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJdG1wID0gZkZSQU1F X1VOU0NSQU1CTEUodG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsKKwlmV1JJVEVf RlAoZkdFVFdPUkQoMCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7CisgICAgZkpVTVBSKFJFR19M UixmR0VUV09SRCgxLHRtcCksQ09GX1RZUEVfSlVNUFIpO30pCisKK1E2SU5TTihTTDJfcmV0dXJu X3QsImlmIChwMCkgZGVhbGxvY19yZXR1cm4iLCBBVFRSSUJTKEFfSklORElST0xELEFfU1VCSU5T TixBX0xPQUQsQV9SRVRVUk4sQV9SRVNUUklDVF9TTE9UME9OTFkpLCAiRGVhbGxvY2F0ZSBzdGFj ayBmcmFtZSBhbmQgcmV0dXJuIiwKK3sgZkhJREUoc2l6ZTh1X3QgdG1wOyk7IGZCUkFOQ0hfU1BF Q1VMQVRFX1NUQUxMKGZMU0JPTEQoZlJFQURfUDAoKSksLCBTUEVDVUxBVEVfTk9UX1RBS0VOLDQs MCk7IGZFQV9SRUcoZlJFQURfRlAoKSk7IGlmIChmTFNCT0xEKGZSRUFEX1AwKCkpKSB7IGZMT0FE KDEsOCx1LEVBLHRtcCk7IHRtcCA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7IGZXUklURV9MUihm R0VUV09SRCgxLHRtcCkpOyBmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsgZldSSVRFX1NQKEVB KzgpOworICBmSlVNUFIoUkVHX0xSLGZHRVRXT1JEKDEsdG1wKSxDT0ZfVFlQRV9KVU1QUik7fSBl bHNlIHtMT0FEX0NBTkNFTChFQSk7fSB9KQorCitRNklOU04oU0wyX3JldHVybl9mLCJpZiAoIXAw KSBkZWFsbG9jX3JldHVybiIsIEFUVFJJQlMoQV9KSU5ESVJPTEQsQV9TVUJJTlNOLEFfTE9BRCxB X1JFVFVSTixBX1JFU1RSSUNUX1NMT1QwT05MWSksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1lIGFu ZCByZXR1cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KTtmQlJBTkNIX1NQRUNVTEFURV9TVEFM TChmTFNCT0xETk9UKGZSRUFEX1AwKCkpLCwgU1BFQ1VMQVRFX05PVF9UQUtFTiw0LDApOyBmRUFf UkVHKGZSRUFEX0ZQKCkpOyBpZiAoZkxTQk9MRE5PVChmUkVBRF9QMCgpKSkgeyBmTE9BRCgxLDgs dSxFQSx0bXApOyB0bXAgPSBmRlJBTUVfVU5TQ1JBTUJMRSh0bXApOyBmV1JJVEVfTFIoZkdFVFdP UkQoMSx0bXApKTsgZldSSVRFX0ZQKGZHRVRXT1JEKDAsdG1wKSk7IGZXUklURV9TUChFQSs4KTsK KyAgZkpVTVBSKFJFR19MUixmR0VUV09SRCgxLHRtcCksQ09GX1RZUEVfSlVNUFIpO30gZWxzZSB7 TE9BRF9DQU5DRUwoRUEpO30gfSkKKworCisKK1E2SU5TTihTTDJfcmV0dXJuX3RuZXcsImlmIChw MC5uZXcpIGRlYWxsb2NfcmV0dXJuOm50IiwgQVRUUklCUyhBX0pJTkRJUk5FVyxBX1NVQklOU04s QV9MT0FELEFfUkVUVVJOLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwgIkRlYWxsb2NhdGUgc3RhY2sg ZnJhbWUgYW5kIHJldHVybiIsCit7IGZISURFKHNpemU4dV90IHRtcDspIGZCUkFOQ0hfU1BFQ1VM QVRFX1NUQUxMKGZMU0JORVcwLCwgU1BFQ1VMQVRFX05PVF9UQUtFTiAsIDQsMyk7IGZFQV9SRUco ZlJFQURfRlAoKSk7IGlmIChmTFNCTkVXMCkgeyBmTE9BRCgxLDgsdSxFQSx0bXApOyB0bXAgPSBm RlJBTUVfVU5TQ1JBTUJMRSh0bXApOyBmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsgZldSSVRF X0ZQKGZHRVRXT1JEKDAsdG1wKSk7IGZXUklURV9TUChFQSs4KTsKKyAgZkpVTVBSKFJFR19MUixm R0VUV09SRCgxLHRtcCksQ09GX1RZUEVfSlVNUFIpO30gZWxzZSB7TE9BRF9DQU5DRUwoRUEpO30g fSkKKworUTZJTlNOKFNMMl9yZXR1cm5fZm5ldywiaWYgKCFwMC5uZXcpIGRlYWxsb2NfcmV0dXJu Om50IiwgQVRUUklCUyhBX0pJTkRJUk5FVyxBX1NVQklOU04sQV9MT0FELEFfUkVUVVJOLEFfUkVT VFJJQ1RfU0xPVDBPTkxZKSwgIkRlYWxsb2NhdGUgc3RhY2sgZnJhbWUgYW5kIHJldHVybiIsCit7 IGZISURFKHNpemU4dV90IHRtcDspIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcwTk9U LCwgU1BFQ1VMQVRFX05PVF9UQUtFTiAsIDQsMyk7IGZFQV9SRUcoZlJFQURfRlAoKSk7IGlmIChm TFNCTkVXME5PVCkgeyBmTE9BRCgxLDgsdSxFQSx0bXApOyB0bXAgPSBmRlJBTUVfVU5TQ1JBTUJM RSh0bXApOyBmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsgZldSSVRFX0ZQKGZHRVRXT1JEKDAs dG1wKSk7IGZXUklURV9TUChFQSs4KTsKKyAgZkpVTVBSKFJFR19MUixmR0VUV09SRCgxLHRtcCks Q09GX1RZUEVfSlVNUFIpO30gZWxzZSB7TE9BRF9DQU5DRUwoRUEpO30gfSkKKworCitRNklOU04o U0wyX2p1bXByMzEsImp1bXByIHIzMSIsQVRUUklCUyhBX1NVQklOU04sQV9KSU5ESVIsQV9SRVNU UklDVF9TTE9UME9OTFkpLCJpbmRpcmVjdCB1bmNvbmRpdGlvbmFsIGp1bXAiLAoreyBmSlVNUFIo UkVHX0xSLGZSRUFEX0xSKCksQ09GX1RZUEVfSlVNUFIpO30pCisKK1E2SU5TTihTTDJfanVtcHIz MV90LCJpZiAocDApIGp1bXByIHIzMSIsQVRUUklCUyhBX1NVQklOU04sQV9KSU5ESVJPTEQsQV9S RVNUUklDVF9TTE9UME9OTFkpLCJpbmRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHRydWUiLAor e2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEQoZlJFQURfUDAoKSksLCBTUEVDVUxBVEVf VEFLRU4sNCwwKTsgaWYgKGZMU0JPTEQoZlJFQURfUDAoKSkpIHtmSlVNUFIoUkVHX0xSLGZSRUFE X0xSKCksQ09GX1RZUEVfSlVNUFIpO319KQorCitRNklOU04oU0wyX2p1bXByMzFfZiwiaWYgKCFw MCkganVtcHIgcjMxIixBVFRSSUJTKEFfU1VCSU5TTixBX0pJTkRJUk9MRCxBX1JFU1RSSUNUX1NM T1QwT05MWSksImluZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAgaWYgZmFsc2UiLAore2ZCUkFOQ0hf U1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEROT1QoZlJFQURfUDAoKSksLCBTUEVDVUxBVEVfVEFLRU4s NCwwKTsgaWYgKGZMU0JPTEROT1QoZlJFQURfUDAoKSkpIHtmSlVNUFIoUkVHX0xSLGZSRUFEX0xS KCksQ09GX1RZUEVfSlVNUFIpO319KQorCisKKworUTZJTlNOKFNMMl9qdW1wcjMxX3RuZXcsImlm IChwMC5uZXcpIGp1bXByOm50IHIzMSIsQVRUUklCUyhBX1NVQklOU04sQV9KSU5ESVJORVcsQV9S RVNUUklDVF9TTE9UME9OTFkpLCJpbmRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHRydWUiLAor e2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcwLCwgU1BFQ1VMQVRFX05PVF9UQUtFTiAs IDQsMyk7IGlmIChmTFNCTkVXMCkge2ZKVU1QUihSRUdfTFIsZlJFQURfTFIoKSxDT0ZfVFlQRV9K VU1QUik7fX0pCisKK1E2SU5TTihTTDJfanVtcHIzMV9mbmV3LCJpZiAoIXAwLm5ldykganVtcHI6 bnQgcjMxIixBVFRSSUJTKEFfU1VCSU5TTixBX0pJTkRJUk5FVyxBX1JFU1RSSUNUX1NMT1QwT05M WSksImluZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAgaWYgZmFsc2UiLAore2ZCUkFOQ0hfU1BFQ1VM QVRFX1NUQUxMKGZMU0JORVcwTk9ULCwgU1BFQ1VMQVRFX05PVF9UQUtFTiAsIDQsMyk7IGlmIChm TFNCTkVXME5PVCkge2ZKVU1QUihSRUdfTFIsZlJFQURfTFIoKSxDT0ZfVFlQRV9KVU1QUik7fX0p CisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAg ICAgIFN0MS8yIHN1Ymluc25zICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitRNklOU04oU1MxX3N0b3Jld19pbywgICJtZW13KFJzMTYrI3U0OjIp PVJ0MTYiLCBBVFRSSUJTKEFfU1RPUkUsQV9TVUJJTlNOKSwgInN0b3JlIHdvcmQiLCB7ZkVBX1JJ KFJzVix1aVYpOyBmU1RPUkUoMSw0LEVBLFJ0Vik7fSkKK1E2SU5TTihTUzFfc3RvcmViX2lvLCAg Im1lbWIoUnMxNisjdTQ6MCk9UnQxNiIsIEFUVFJJQlMoQV9TVE9SRSxBX1NVQklOU04pLCAic3Rv cmUgYnl0ZSIsIHtmRUFfUkkoUnNWLHVpVik7IGZTVE9SRSgxLDEsRUEsZkdFVEJZVEUoMCxSdFYp KTt9KQorUTZJTlNOKFNTMl9zdG9yZWhfaW8sICAibWVtaChSczE2KyN1MzoxKT1SdDE2IiwgQVRU UklCUyhBX1NUT1JFLEFfU1VCSU5TTiksICJzdG9yZSBoYWxmIiwge2ZFQV9SSShSc1YsdWlWKTsg ZlNUT1JFKDEsMixFQSxmR0VUSEFMRigwLFJ0VikpO30pCitRNklOU04oU1MyX3N0b3JlZF9zcCwg ICJtZW1kKHIyOSsjczY6Myk9UnR0OCIsIEFUVFJJQlMoQV9TVE9SRSxBX1NVQklOU04pLCAic3Rv cmUgZHdvcmQiLHtmRUFfUkkoZlJFQURfU1AoKSxzaVYpOyBmU1RPUkUoMSw4LEVBLFJ0dFYpO30p CitRNklOU04oU1MyX3N0b3Jld19zcCwgICJtZW13KHIyOSsjdTU6Mik9UnQxNiIsICBBVFRSSUJT KEFfU1RPUkUsQV9TVUJJTlNOKSwgInN0b3JlIHdvcmQiLCB7ZkVBX1JJKGZSRUFEX1NQKCksdWlW KTsgZlNUT1JFKDEsNCxFQSxSdFYpO30pCitRNklOU04oU1MyX3N0b3Jld2kwLCAgICJtZW13KFJz MTYrI3U0OjIpPSMwIiwgQVRUUklCUyhBX1NUT1JFLEFfU1VCSU5TTiksICJzdG9yZSB3b3JkIiwg e2ZFQV9SSShSc1YsdWlWKTsgZlNUT1JFKDEsNCxFQSwwKTt9KQorUTZJTlNOKFNTMl9zdG9yZWJp MCwgICAibWVtYihSczE2KyN1NDowKT0jMCIsIEFUVFJJQlMoQV9TVE9SRSxBX1NVQklOU04pLCAi c3RvcmUgYnl0ZSIsIHtmRUFfUkkoUnNWLHVpVik7IGZTVE9SRSgxLDEsRUEsMCk7fSkKK1E2SU5T TihTUzJfc3RvcmV3aTEsICAgIm1lbXcoUnMxNisjdTQ6Mik9IzEiLCBBVFRSSUJTKEFfU1RPUkUs QV9TVUJJTlNOKSwgInN0b3JlIHdvcmQiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSw0LEVB LDEpO30pCitRNklOU04oU1MyX3N0b3JlYmkxLCAgICJtZW1iKFJzMTYrI3U0OjApPSMxIiwgQVRU UklCUyhBX1NUT1JFLEFfU1VCSU5TTiksICJzdG9yZSBieXRlIiwge2ZFQV9SSShSc1YsdWlWKTsg ZlNUT1JFKDEsMSxFQSwxKTt9KQorCisKK1E2SU5TTihTUzJfYWxsb2NmcmFtZSwiYWxsb2NmcmFt ZSgjdTU6MykiLCBBVFRSSUJTKEFfU1VCSU5TTixBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZ KSwgIkFsbG9jYXRlIHN0YWNrIGZyYW1lIiwKK3sgZkVBX1JJKGZSRUFEX1NQKCksLTgpOyAgZlNU T1JFKDEsOCxFQSxmRlJBTUVfU0NSQU1CTEUoKGZDQVNUOF84dShmUkVBRF9MUigpKSA8PCAzMikg fCBmQ0FTVDRfNHUoZlJFQURfRlAoKSkpKTsgZldSSVRFX0ZQKEVBKTsgZkZSQU1FQ0hFQ0soRUEt dWlWLEVBKTsgZldSSVRFX1NQKEVBLXVpVik7IH0pCisKKworCmRpZmYgLS1naXQgYS90YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9zeXN0ZW0uaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N5 c3RlbS5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NjE0NGQKLS0t IC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zeXN0ZW0uaWRlZgpAQCAt MCwwICsxLDY5IEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjAgUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBTeXN0ZW0gSW50ZXJm YWNlIEluc3RydWN0aW9ucworICovCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBVc2VyLT5PUyBpbnRlcmZhY2UgICAgICAgICAgICAgICAg ICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKK1E2SU5TTihKMl90cmFwMCwidHJhcDAoI3U4KSIsQVRUUklCUyhBX0NPRiksCisiVHJhcCB0 byBPcGVyYXRpbmcgU3lzdGVtIiwKKwlmVFJBUCgwLHVpVik7CispCisKK1E2SU5TTihZMl9pY2lu dmEsImljaW52YShSczMyKSIsQVRUUklCUyhBX0lDT1AsQV9JQ0ZMVVNIT1ApLCJJbnN0cnVjdGlv biBDYWNoZSBJbnZhbGlkYXRlIEFkZHJlc3MiLHtmRUFfUkVHKFJzVik7IGZJQ0lOVkEoRUEpO30p CisKK1E2SU5TTihZMl9pc3luYywiaXN5bmMiLEFUVFJJQlMoKSwiTWVtb3J5IFN5bmNocm9uaXph dGlvbiIse2ZJU1lOQygpO30pCitRNklOU04oWTJfYmFycmllciwiYmFycmllciIsQVRUUklCUyhB X1JFU1RSSUNUX1NMT1QwT05MWSksIk1lbW9yeSBCYXJyaWVyIix7ZkJBUlJJRVIoKTt9KQorUTZJ TlNOKFkyX3N5bmNodCwic3luY2h0IixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwiTWVt b3J5IFN5bmNocm9uaXphdGlvbiIse2ZTWU5DSCgpO30pCisKKworUTZJTlNOKFkyX2RjZmV0Y2hi bywiZGNmZXRjaChSczMyKyN1MTE6MykiLEFUVFJJQlMoQV9SRVNUUklDVF9QUkVGRVJTTE9UMCxB X0RDRkVUQ0gpLCJEYXRhIENhY2hlIFByZWZldGNoIix7ZkVBX1JJKFJzVix1aVYpOyBmRENGRVRD SChFQSk7fSkKKworCitRNklOU04oWTJfZGN6ZXJvYSwiZGN6ZXJvYShSczMyKSIsQVRUUklCUyhB X1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfRENaRVJPQSksIlplcm8gYW4gYWxpZ25lZCAz Mi1ieXRlIGNhY2hlbGluZSIse2ZFQV9SRUcoUnNWKTsgZkRDWkVST0EoRUEpO30pCitRNklOU04o WTJfZGNjbGVhbmEsImRjY2xlYW5hKFJzMzIpIixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDBPTkxZ LEFfRENGTFVTSE9QKSwiRGF0YSBDYWNoZSBDbGVhbiBBZGRyZXNzIix7ZkVBX1JFRyhSc1YpOyBm RENDTEVBTkEoRUEpO30pCitRNklOU04oWTJfZGNjbGVhbmludmEsImRjY2xlYW5pbnZhKFJzMzIp IixBVFRSSUJTKEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfRENGTFVTSE9QKSwiRGF0YSBDYWNoZSBD bGVhbiBhbmQgSW52YWxpZGF0ZSBBZGRyZXNzIix7ZkVBX1JFRyhSc1YpOyBmRENDTEVBTklOVkEo RUEpO30pCitRNklOU04oWTJfZGNpbnZhLCJkY2ludmEoUnMzMikiLEFUVFJJQlMoQV9SRVNUUklD VF9TTE9UME9OTFksQV9EQ0ZMVVNIT1ApLCJEYXRhIENhY2hlIEludmFsaWRhdGUgQWRkcmVzcyIs e2ZFQV9SRUcoUnNWKTsgZkRDQ0xFQU5JTlZBKEVBKTt9KQorCisKKworCisKKworUTZJTlNOKFk0 X2wyZmV0Y2gsImwyZmV0Y2goUnMzMixSdDMyKSIsQVRUUklCUyhBX1JFU1RSSUNUX1NMT1QwT05M WSksIkwyIENhY2hlIFByZWZldGNoIiwKK3sgZkwyRkVUQ0goUnNWLAorCShSdFYmMHhmZiksIC8q aGVpZ2h0Ki8KKwkoKFJ0Vj4+OCkmMHhmZiksIC8qd2lkdGgqLworCSgoUnRWPj4xNikmMHhmZmZm KSwgLypzdHJpZGUqLworCTApOyAvKmV4dHJhIGF0dHJpYiBmbGFncyovCit9KQorCisKKworUTZJ TlNOKFk1X2wyZmV0Y2gsImwyZmV0Y2goUnMzMixSdHQzMikiLEFUVFJJQlMoQV9SRVNUUklDVF9T TE9UME9OTFkpLCJMMiBDYWNoZSBQcmVmZXRjaCIsCit7IGZMMkZFVENIKFJzViwKKwlmR0VUVUhB TEYoMCxSdHRWKSwgLypoZWlnaHQqLworCWZHRVRVSEFMRigxLFJ0dFYpLCAvKndpZHRoKi8KKwlm R0VUVUhBTEYoMixSdHRWKSwgLypzdHJpZGUqLworCWZHRVRVSEFMRigzLFJ0dFYpKTsgLypmbGFn cyovCit9KQotLSAKMi43LjQKCg==