From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by sourceware.org (Postfix) with ESMTPS id 279193856248 for ; Tue, 10 May 2022 00:18:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 279193856248 Received: by mail-oi1-x22b.google.com with SMTP id w130so5106339oig.0 for ; Mon, 09 May 2022 17:18:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=jDtBv0zkteAK4B6+lIABVPmwISOtLgsK3V/iNtnja1U=; b=hkz1X0L0nNYYkpfi2SxnXCU4+jkiTEduMJQkKQY8iD7mgIewsjSCiM16NBhuO/ZVpL fXnNvNDRE0XMZAvPX/52fO8gWQ6pTYTKP4wwtbs2OVZXa6bDf+vNmhxDQVZ0OUjkVaqf Ukm4/FqXM4uTxO3wRbLWj9NIEqmSSoAqLstYrDwLp8kVehkEECrDbr7Pik11lDYGZ8IN +Ae5ubxztPw/kPr2nfxqW0ipO/+yH6tOUWllP7zQJPmJNP8SnFu69cKZfSM0i/7KrSF4 +xJx17cqFqGZm7xHpJnQqEa1hviB+DZC82BptpGztypcBnxsqhaW3aQC1TcDy1vgbD2J s2sA== X-Gm-Message-State: AOAM533Vy4BgL39ptvZMW1zVKbku2tgS8lyM6JKxXQp/qeOoPYJIIItp 0lPUYhNOdppg8BvqBbzC1IXFKifAv2+S06b6fFfpJSfOFUg= X-Google-Smtp-Source: ABdhPJyrJW9ouGz9s5pUDJFmps3dIvH6Ss+WDH5Sd0a646sffUTZaeNGv4/GoG8WxMSpWNrbJxTxyZEZ1XFC4M8E0GM= X-Received: by 2002:a05:6808:219c:b0:326:4456:d0be with SMTP id be28-20020a056808219c00b003264456d0bemr8727844oib.79.1652141937213; Mon, 09 May 2022 17:18:57 -0700 (PDT) MIME-Version: 1.0 From: Zopolis0 Date: Tue, 10 May 2022 10:18:46 +1000 Message-ID: Subject: libjava configure fails on finding no C compiler in $PATH despite gcc being present To: gcc-help@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000497bf305de9d4561" X-Spam-Status: No, score=-0.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-help@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-help mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 May 2022 00:19:00 -0000 --000000000000497bf305de9d4561 Content-Type: text/plain; charset="UTF-8" While compiling gcj, it progresses successfully until running ./configure in libjava, which, among other things, fails to find any C compiler in $PATH. This is despite all other ./configures in other directories successfully finding gcc, and me adding gcc directly to $PATH. (note: I am running ./configure directly from libjava, which is adding some additional errors such as [./../../../config-ml.in: No such file or directory], but the main issues are still present in a regular build). --000000000000497bf305de9d4561 Content-Type: application/octet-stream; name="config.log" Content-Disposition: attachment; filename="config.log" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2zen5zj0 VGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hp bGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2Vz IGEgbWlzdGFrZS4KCkl0IHdhcyBjcmVhdGVkIGJ5IGxpYmphdmEgIHZlcnNpb24tdW51c2VkLCB3 aGljaCB3YXMKZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21t YW5kIGxpbmUgd2FzCgogICQgLi9jb25maWd1cmUgCgojIyAtLS0tLS0tLS0gIyMKIyMgUGxhdGZv cm0uICMjCiMjIC0tLS0tLS0tLSAjIwoKaG9zdG5hbWUgPSBDQjEwTE9BTjAxTAp1bmFtZSAtbSA9 IHg4Nl82NAp1bmFtZSAtciA9IDUuMTAuMTAyLjEtbWljcm9zb2Z0LXN0YW5kYXJkLVdTTDIKdW5h bWUgLXMgPSBMaW51eAp1bmFtZSAtdiA9ICMxIFNNUCBXZWQgTWFyIDIgMDA6MzA6NTkgVVRDIDIw MjIKCi91c3IvYmluL3VuYW1lIC1wID0gdW5rbm93bgovYmluL3VuYW1lIC1YICAgICA9IHVua25v d24KCi9iaW4vYXJjaCAgICAgICAgICAgICAgPSB1bmtub3duCi91c3IvYmluL2FyY2ggLWsgICAg ICAgPSB1bmtub3duCi91c3IvY29udmV4L2dldHN5c2luZm8gPSB1bmtub3duCi91c3IvYmluL2hv c3RpbmZvICAgICAgPSB1bmtub3duCi9iaW4vbWFjaGluZSAgICAgICAgICAgPSB1bmtub3duCi91 c3IvYmluL29zbGV2ZWwgICAgICAgPSB1bmtub3duCi9iaW4vdW5pdmVyc2UgICAgICAgICAgPSB1 bmtub3duCgpQQVRIOiAvdXNyL2xvY2FsL3NiaW4KUEFUSDogL3Vzci9sb2NhbC9iaW4KUEFUSDog L3Vzci9zYmluClBBVEg6IC91c3IvYmluClBBVEg6IC9zYmluClBBVEg6IC9iaW4KUEFUSDogL3Vz ci9nYW1lcwpQQVRIOiAvdXNyL2xvY2FsL2dhbWVzClBBVEg6IC91c3IvbGliL3dzbC9saWIKUEFU SDogL21udC9jL1Byb2dyYW0gRmlsZXMvV2luZG93c0FwcHMvVGhlRGViaWFuUHJvamVjdC5EZWJp YW5HTlVMaW51eF8xLjEyLjIuMF94NjRfXzc2djRnZnN6MTlodjQKUEFUSDogL21udC9jL1dJTkRP V1Mvc3lzdGVtMzIKUEFUSDogL21udC9jL1dJTkRPV1MKUEFUSDogL21udC9jL1dJTkRPV1MvU3lz dGVtMzIvV2JlbQpQQVRIOiAvbW50L2MvV0lORE9XUy9TeXN0ZW0zMi9XaW5kb3dzUG93ZXJTaGVs bC92MS4wLwpQQVRIOiAvbW50L2MvV0lORE9XUy9TeXN0ZW0zMi9PcGVuU1NILwpQQVRIOiAvbW50 L2MvUHJvZ3JhbSBGaWxlcyAoeDg2KS9Db21tb24gRmlsZXMvUHJvcGVsbGVyaGVhZCBTb2Z0d2Fy ZS9SZVdpcmUvClBBVEg6IC9tbnQvYy9Qcm9ncmFtIEZpbGVzL0NvbW1vbiBGaWxlcy9Qcm9wZWxs ZXJoZWFkIFNvZnR3YXJlL1JlV2lyZS8KUEFUSDogL21udC9jL1VzZXJzLzI0bXMuZG93bi9BcHBE YXRhL0xvY2FsL01pY3Jvc29mdC9XaW5kb3dzQXBwcwpQQVRIOiAvbW50L2MvVXNlcnMvMjRtcy5k b3duL0FwcERhdGEvTG9jYWwvUGFja2FnZXMvUHl0aG9uU29mdHdhcmVGb3VuZGF0aW9uLlB5dGhv bi4zLjEwX3FiejVuMmtmcmE4cDAvTG9jYWxDYWNoZS9sb2NhbC1wYWNrYWdlcy9QeXRob24zMTAv U2NyaXB0cwpQQVRIOiAvdXNyL2Jpbi9nY2MKUEFUSDogL3Vzci9iaW4vZ2NjLTEwCgoKIyMgLS0t LS0tLS0tLS0gIyMKIyMgQ29yZSB0ZXN0cy4gIyMKIyMgLS0tLS0tLS0tLS0gIyMKCjoyOTM0OiBj aGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZQo6Mjk0ODogcmVzdWx0OiB4ODZfNjQtcGMtbGludXgt Z251CjozMDY0OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlCjozMDc3OiByZXN1bHQ6IHg4Nl82 NC1wYy1saW51eC1nbnUKOjMwOTc6IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZQo6MzExMDog cmVzdWx0OiB4ODZfNjQtcGMtbGludXgtZ251CjozMTcwOiBjaGVja2luZyB3aGV0aGVyIGxuIC1z IHdvcmtzCjozMTc0OiByZXN1bHQ6IHllcwo6MzI1MjogY2hlY2tpbmcgZm9yIGFudGxyLmphcgo6 MzI2ODogcmVzdWx0OiAvdXNyL3NoYXJlL2phdmEvYW50bHIuamFyCjozMjkzOiBjaGVja2luZyB3 aGV0aGVyIHRvIGJ1aWxkIGdqZG9jCjozMjk4OiByZXN1bHQ6IHllcwo6MzM1MTogY2hlY2tpbmcg Zm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbAo6MzQxOTogcmVzdWx0OiAuLy4uL2luc3RhbGwt c2ggLWMKOjM0MzA6IGNoZWNraW5nIHdoZXRoZXIgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2FuZQo6 MzQ4NTogcmVzdWx0OiB5ZXMKOjM2MzY6IGNoZWNraW5nIGZvciBhIHRocmVhZC1zYWZlIG1rZGly IC1wCjozNjc1OiByZXN1bHQ6IC4vLi4vaW5zdGFsbC1zaCAtYyAtZAo6MzY4MjogY2hlY2tpbmcg Zm9yIGdhd2sKOjM3MTI6IHJlc3VsdDogbm8KOjM2ODI6IGNoZWNraW5nIGZvciBtYXdrCjozNzEy OiByZXN1bHQ6IG5vCjozNjgyOiBjaGVja2luZyBmb3IgbmF3awo6MzcxMjogcmVzdWx0OiBubwo6 MzY4MjogY2hlY2tpbmcgZm9yIGF3awo6MzcxMjogcmVzdWx0OiBubwo6MzcyMDogY2hlY2tpbmcg d2hldGhlciBtYWtlIHNldHMgJChNQUtFKQo6Mzc0MjogcmVzdWx0OiB5ZXMKOjM3NzE6IGNoZWNr aW5nIHdoZXRoZXIgbWFrZSBzdXBwb3J0cyBuZXN0ZWQgdmFyaWFibGVzCjozNzg4OiByZXN1bHQ6 IHllcwo6Mzk2ODogY2hlY2tpbmcgZm9yIGdjYwo6Mzk5ODogcmVzdWx0OiBubwo6NDA2MTogY2hl Y2tpbmcgZm9yIGNjCjo0MTA4OiByZXN1bHQ6IG5vCjo0MTY0OiBjaGVja2luZyBmb3IgY2wuZXhl Cjo0MTk0OiByZXN1bHQ6IG5vCjo0MjE4OiBlcnJvcjogaW4gYC9ob21lL3pvcG9saXM0L2djai9s aWJqYXZhJzoKOjQyMjA6IGVycm9yOiBubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4g JFBBVEgKU2VlIGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzCjo0MjIwOiBjaGVja2luZyBm b3IgQyBjb21waWxlciB2ZXJzaW9uCjo0MjIwOiAgLS12ZXJzaW9uID4mNQouL2NvbmZpZ3VyZTog bGluZSA0MjM1OiAtLXZlcnNpb246IGNvbW1hbmQgbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6 NDIyMDogIC12ID4mNQouL2NvbmZpZ3VyZTogbGluZSA0MjM1OiAtdjogY29tbWFuZCBub3QgZm91 bmQKOjQyMjA6ICQ/ID0gMTI3Cjo0MjIwOiAgLVYgPiY1Ci4vY29uZmlndXJlOiBsaW5lIDQyMzU6 IC1WOiBjb21tYW5kIG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOjQyMjA6ICAtcXZlcnNpb24g PiY1Ci4vY29uZmlndXJlOiBsaW5lIDQyMzU6IC1xdmVyc2lvbjogY29tbWFuZCBub3QgZm91bmQK OjQyMjA6ICQ/ID0gMTI3Cjo0MjIwOiAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgPiY1Ci4v Y29uZmlndXJlOiBsaW5lIDQyNjE6IC1vOiBjb21tYW5kIG5vdCBmb3VuZAo6NDIyMDogJD8gPSAx MjcKOjQyMjA6IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzCjo0MjIwOiAgLWMg ICBjb25mdGVzdC5jID4mNQouL2NvbmZpZ3VyZTogbGluZSA0NTAwOiAtYzogY29tbWFuZCBub3Qg Zm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZz LmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVz ZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwg IiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9u LXVudXNlZCIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsK fCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IGVycm9yOiBpbiBgL2hvbWUvem9wb2xp czQvZ2NqL2xpYmphdmEnOgo6NDIyMDogZXJyb3I6IGNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBv YmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlClNlZSBgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0 YWlscwo6NDIyMDogcmVzdWx0OiAKOjQyMjA6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5n IHRoZSBHTlUgQyBjb21waWxlcgo6NDIyMDogIC1jICAgY29uZnRlc3QuYyA+JjUKLi9jb25maWd1 cmU6IGxpbmUgMTc0MjogLWM6IGNvbW1hbmQgbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZh aWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05B TUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJ TkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJq YXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgLyogZW5kIGNvbmZkZWZz LmguICAqLwp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgI2lmbmRlZiBfX0dOVUNfXwp8ICAgICAg ICBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVz dWx0OiBubwo6NDIyMDogY2hlY2tpbmcgd2hldGhlciAgYWNjZXB0cyAtZwo6NDIyMDogIC1jIC1n ICBjb25mdGVzdC5jID4mNQouL2NvbmZpZ3VyZTogbGluZSAxNzQyOiAtYzogY29tbWFuZCBub3Qg Zm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZz LmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVz ZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwg IiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9u LXVudXNlZCIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsK fCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6ICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci4v Y29uZmlndXJlOiBsaW5lIDE3NDI6IC1jOiBjb21tYW5kIG5vdCBmb3VuZAo6NDIyMDogJD8gPSAx MjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFD S0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8 ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tB R0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdS RVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FH RSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8IC8qIGVuZCBj b25mZGVmcy5oLiAgKi8KfCAKfCBpbnQKfCBtYWluICgpCnwgewp8IAp8ICAgOwp8ICAgcmV0dXJu IDA7CnwgfQo6NDIyMDogIC1jIC1nICBjb25mdGVzdC5jID4mNQouL2NvbmZpZ3VyZTogbGluZSAx NzQyOiAtYzogY29tbWFuZCBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dy YW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2 YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2 YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8 ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2Rl ZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwg CnwgaW50CnwgbWFpbiAoKQp8IHsKfCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJl c3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciAgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5Cjo0 MjIwOiAgIC1jICAgY29uZnRlc3QuYyA+JjUKLi9jb25maWd1cmU6IGxpbmUgMTc0MjogLWM6IGNv bW1hbmQgbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAv KiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZl cnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11 bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lP TiAidmVyc2lvbi11bnVzZWQiCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxz dGRhcmcuaD4KfCAjaW5jbHVkZSA8c3RkaW8uaD4KfCBzdHJ1Y3Qgc3RhdDsKfCAvKiBNb3N0IG9m IHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5z aC4gICovCnwgc3RydWN0IGJ1ZiB7IGludCB4OyB9Owp8IEZJTEUgKiAoKnJjc29wZW4pIChzdHJ1 Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Cnwgc3RhdGljIGNoYXIgKmUgKHAsIGkpCnwg ICAgICBjaGFyICoqcDsKfCAgICAgIGludCBpOwp8IHsKfCAgIHJldHVybiBwW2ldOwp8IH0KfCBz dGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4p Cnwgewp8ICAgY2hhciAqczsKfCAgIHZhX2xpc3QgdjsKfCAgIHZhX3N0YXJ0ICh2LHApOwp8ICAg cyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKfCAgIHZhX2VuZCAodik7CnwgICByZXR1cm4gczsK fCB9CnwgCnwgLyogT1NGIDQuMCBDb21wYXEgY2MgaXMgc29tZSBzb3J0IG9mIGFsbW9zdC1BTlNJ IGJ5IGRlZmF1bHQuICBJdCBoYXMKfCAgICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBzdHVmZiwg YnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMuCnwgICAgVGhlc2UgZG9uJ3Qg cHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRseSB0cmVh dGVkCnwgICAgYXMgJ3gnLiAgVGhlIGZvbGxvd2luZyBpbmR1Y2VzIGFuIGVycm9yLCB1bnRpbCAt c3RkIGlzIGFkZGVkIHRvIGdldAp8ICAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJpb3VzbHkgJ1x4 MDAnIT0neCcgYWx3YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4KfCAgICBhcnJheSBzaXplIGF0 IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBzb21ldGhp bmcKfCAgICB0aGF0J3MgdHJ1ZSBvbmx5IHdpdGggLXN0ZC4gICovCnwgaW50IG9zZjRfY2NfYXJy YXkgWydceDAwJyA9PSAwID8gMSA6IC0xXTsKfCAKfCAvKiBJQk0gQyA2IGZvciBBSVggaXMgYWxt b3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0IHJlcGxhY2VzIG1hY3JvIHBhcmFtZXRlcnMKfCAg ICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4gICovCnwgI2RlZmluZSBG T08oeCkgJ3gnCnwgaW50IHhsYzZfY2NfYXJyYXlbRk9PKGEpID09ICd4JyA/IDEgOiAtMV07Cnwg CnwgaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7Cnwgc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50 IGEpO307Cnwgc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307CnwgaW50IHBhaXJuYW1l cyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBp bnQpLCBpbnQsIGludCk7CnwgaW50IGFyZ2M7CnwgY2hhciAqKmFyZ3Y7CnwgaW50CnwgbWFpbiAo KQp8IHsKfCByZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3Ys IDEpICE9IGFyZ3ZbMV07CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiAgLXFsYW5nbHZs PWV4dGM4OSAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci4vY29uZmlndXJlOiBsaW5lIDE3NDI6IC1xbGFu Z2x2bD1leHRjODk6IGNvbW1hbmQgbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBw cm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxp YmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNL QUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxp YmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2 YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8 ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgLyogZW5kIGNvbmZkZWZzLmguICAq Lwp8ICNpbmNsdWRlIDxzdGRhcmcuaD4KfCAjaW5jbHVkZSA8c3RkaW8uaD4KfCBzdHJ1Y3Qgc3Rh dDsKfCAvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1 LjcncyBzcmMvY29uZi5zaC4gICovCnwgc3RydWN0IGJ1ZiB7IGludCB4OyB9Owp8IEZJTEUgKiAo KnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Cnwgc3RhdGljIGNo YXIgKmUgKHAsIGkpCnwgICAgICBjaGFyICoqcDsKfCAgICAgIGludCBpOwp8IHsKfCAgIHJldHVy biBwW2ldOwp8IH0KfCBzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCks IGNoYXIgKipwLCAuLi4pCnwgewp8ICAgY2hhciAqczsKfCAgIHZhX2xpc3QgdjsKfCAgIHZhX3N0 YXJ0ICh2LHApOwp8ICAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKfCAgIHZhX2VuZCAodik7 CnwgICByZXR1cm4gczsKfCB9CnwgCnwgLyogT1NGIDQuMCBDb21wYXEgY2MgaXMgc29tZSBzb3J0 IG9mIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQuICBJdCBoYXMKfCAgICBmdW5jdGlvbiBwcm90b3R5 cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMuCnwg ICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFy ZSBzaWxlbnRseSB0cmVhdGVkCnwgICAgYXMgJ3gnLiAgVGhlIGZvbGxvd2luZyBpbmR1Y2VzIGFu IGVycm9yLCB1bnRpbCAtc3RkIGlzIGFkZGVkIHRvIGdldAp8ICAgIHByb3BlciBBTlNJIG1vZGUu ICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4KfCAg ICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0w IHRvIGdldCBzb21ldGhpbmcKfCAgICB0aGF0J3MgdHJ1ZSBvbmx5IHdpdGggLXN0ZC4gICovCnwg aW50IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0xXTsKfCAKfCAvKiBJQk0gQyA2 IGZvciBBSVggaXMgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0IHJlcGxhY2VzIG1hY3Jv IHBhcmFtZXRlcnMKfCAgICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4g ICovCnwgI2RlZmluZSBGT08oeCkgJ3gnCnwgaW50IHhsYzZfY2NfYXJyYXlbRk9PKGEpID09ICd4 JyA/IDEgOiAtMV07CnwgCnwgaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7Cnwgc3RydWN0IHMx IHtpbnQgKCpmKSAoaW50IGEpO307Cnwgc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307 CnwgaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBz dHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7CnwgaW50IGFyZ2M7CnwgY2hhciAqKmFyZ3Y7 CnwgaW50CnwgbWFpbiAoKQp8IHsKfCByZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAg fHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0 MjIwOiAgLXFsYW5nbHZsPWFuc2kgLWMgICBjb25mdGVzdC5jID4mNQouL2NvbmZpZ3VyZTogbGlu ZSAxNzQyOiAtcWxhbmdsdmw9YW5zaTogY29tbWFuZCBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3 CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tB R0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAj ZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdF X1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQ T1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0Ug ImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAvKiBlbmQgY29u ZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGFyZy5oPgp8ICNpbmNsdWRlIDxzdGRpby5oPgp8 IHN0cnVjdCBzdGF0Owp8IC8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVu IGZyb20gUkNTIDUuNydzIHNyYy9jb25mLnNoLiAgKi8KfCBzdHJ1Y3QgYnVmIHsgaW50IHg7IH07 CnwgRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsK fCBzdGF0aWMgY2hhciAqZSAocCwgaSkKfCAgICAgIGNoYXIgKipwOwp8ICAgICAgaW50IGk7Cnwg ewp8ICAgcmV0dXJuIHBbaV07CnwgfQp8IHN0YXRpYyBjaGFyICpmIChjaGFyICogKCpnKSAoY2hh ciAqKiwgaW50KSwgY2hhciAqKnAsIC4uLikKfCB7CnwgICBjaGFyICpzOwp8ICAgdmFfbGlzdCB2 Owp8ICAgdmFfc3RhcnQgKHYscCk7CnwgICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOwp8ICAg dmFfZW5kICh2KTsKfCAgIHJldHVybiBzOwp8IH0KfCAKfCAvKiBPU0YgNC4wIENvbXBhcSBjYyBp cyBzb21lIHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcwp8ICAgIGZ1bmN0 aW9uIHByb3RvdHlwZXMgYW5kIHN0dWZmLCBidXQgbm90ICdceEhIJyBoZXggY2hhcmFjdGVyIGNv bnN0YW50cy4KfCAgICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVuZm9ydHVuYXRlbHks IGluc3RlYWQgYXJlIHNpbGVudGx5IHRyZWF0ZWQKfCAgICBhcyAneCcuICBUaGUgZm9sbG93aW5n IGluZHVjZXMgYW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CnwgICAgcHJvcGVy IEFOU0kgbW9kZS4gIEN1cmlvdXNseSAnXHgwMCchPSd4JyBhbHdheXMgY29tZXMgb3V0IHRydWUs IGZvciBhbgp8ICAgIGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdzIG5lY2Vzc2FyeSB0byB3cml0 ZSAnXHgwMCc9PTAgdG8gZ2V0IHNvbWV0aGluZwp8ICAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAt c3RkLiAgKi8KfCBpbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAgPyAxIDogLTFdOwp8IAp8 IC8qIElCTSBDIDYgZm9yIEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVw bGFjZXMgbWFjcm8gcGFyYW1ldGVycwp8ICAgIGluc2lkZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIg Y29uc3RhbnRzLiAgKi8KfCAjZGVmaW5lIEZPTyh4KSAneCcKfCBpbnQgeGxjNl9jY19hcnJheVtG T08oYSkgPT0gJ3gnID8gMSA6IC0xXTsKfCAKfCBpbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsK fCBzdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsKfCBzdHJ1Y3QgczIge2ludCAoKmYpIChk b3VibGUgYSk7fTsKfCBpbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1 Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKfCBpbnQgYXJnYzsKfCBj aGFyICoqYXJndjsKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBmIChlLCBhcmd2LCAwKSAh PSBhcmd2WzBdICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKfCAgIDsKfCAgIHJldHVy biAwOwp8IH0KOjQyMjA6ICAtc3RkIC1jICAgY29uZnRlc3QuYyA+JjUKLi9jb25maWd1cmU6IGxp bmUgMTc0MjogLXN0ZDogY29tbWFuZCBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVk IHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAi bGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEi CnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAvKiBlbmQgY29uZmRlZnMuaC4g ICovCnwgI2luY2x1ZGUgPHN0ZGFyZy5oPgp8ICNpbmNsdWRlIDxzdGRpby5oPgp8IHN0cnVjdCBz dGF0Owp8IC8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNT IDUuNydzIHNyYy9jb25mLnNoLiAgKi8KfCBzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CnwgRklMRSAq ICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKfCBzdGF0aWMg Y2hhciAqZSAocCwgaSkKfCAgICAgIGNoYXIgKipwOwp8ICAgICAgaW50IGk7Cnwgewp8ICAgcmV0 dXJuIHBbaV07CnwgfQp8IHN0YXRpYyBjaGFyICpmIChjaGFyICogKCpnKSAoY2hhciAqKiwgaW50 KSwgY2hhciAqKnAsIC4uLikKfCB7CnwgICBjaGFyICpzOwp8ICAgdmFfbGlzdCB2Owp8ICAgdmFf c3RhcnQgKHYscCk7CnwgICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOwp8ICAgdmFfZW5kICh2 KTsKfCAgIHJldHVybiBzOwp8IH0KfCAKfCAvKiBPU0YgNC4wIENvbXBhcSBjYyBpcyBzb21lIHNv cnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcwp8ICAgIGZ1bmN0aW9uIHByb3Rv dHlwZXMgYW5kIHN0dWZmLCBidXQgbm90ICdceEhIJyBoZXggY2hhcmFjdGVyIGNvbnN0YW50cy4K fCAgICBUaGVzZSBkb24ndCBwcm92b2tlIGFuIGVycm9yIHVuZm9ydHVuYXRlbHksIGluc3RlYWQg YXJlIHNpbGVudGx5IHRyZWF0ZWQKfCAgICBhcyAneCcuICBUaGUgZm9sbG93aW5nIGluZHVjZXMg YW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CnwgICAgcHJvcGVyIEFOU0kgbW9k ZS4gIEN1cmlvdXNseSAnXHgwMCchPSd4JyBhbHdheXMgY29tZXMgb3V0IHRydWUsIGZvciBhbgp8 ICAgIGFycmF5IHNpemUgYXQgbGVhc3QuICBJdCdzIG5lY2Vzc2FyeSB0byB3cml0ZSAnXHgwMCc9 PTAgdG8gZ2V0IHNvbWV0aGluZwp8ICAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkLiAgKi8K fCBpbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAgPyAxIDogLTFdOwp8IAp8IC8qIElCTSBD IDYgZm9yIEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVwbGFjZXMgbWFj cm8gcGFyYW1ldGVycwp8ICAgIGluc2lkZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRz LiAgKi8KfCAjZGVmaW5lIEZPTyh4KSAneCcKfCBpbnQgeGxjNl9jY19hcnJheVtGT08oYSkgPT0g J3gnID8gMSA6IC0xXTsKfCAKfCBpbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsKfCBzdHJ1Y3Qg czEge2ludCAoKmYpIChpbnQgYSk7fTsKfCBzdHJ1Y3QgczIge2ludCAoKmYpIChkb3VibGUgYSk7 fTsKfCBpbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3QgYnVmICos IHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKfCBpbnQgYXJnYzsKfCBjaGFyICoqYXJn djsKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBd ICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0K OjQyMjA6ICAtQWUgLWMgICBjb25mdGVzdC5jID4mNQouL2NvbmZpZ3VyZTogbGluZSAxNzQyOiAt QWU6IGNvbW1hbmQgbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdh czoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwg I2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJ T04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVy c2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVm aW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUg VkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNs dWRlIDxzdGRhcmcuaD4KfCAjaW5jbHVkZSA8c3RkaW8uaD4KfCBzdHJ1Y3Qgc3RhdDsKfCAvKiBN b3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMv Y29uZi5zaC4gICovCnwgc3RydWN0IGJ1ZiB7IGludCB4OyB9Owp8IEZJTEUgKiAoKnJjc29wZW4p IChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Cnwgc3RhdGljIGNoYXIgKmUgKHAs IGkpCnwgICAgICBjaGFyICoqcDsKfCAgICAgIGludCBpOwp8IHsKfCAgIHJldHVybiBwW2ldOwp8 IH0KfCBzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipw LCAuLi4pCnwgewp8ICAgY2hhciAqczsKfCAgIHZhX2xpc3QgdjsKfCAgIHZhX3N0YXJ0ICh2LHAp Owp8ICAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKfCAgIHZhX2VuZCAodik7CnwgICByZXR1 cm4gczsKfCB9CnwgCnwgLyogT1NGIDQuMCBDb21wYXEgY2MgaXMgc29tZSBzb3J0IG9mIGFsbW9z dC1BTlNJIGJ5IGRlZmF1bHQuICBJdCBoYXMKfCAgICBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBz dHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25zdGFudHMuCnwgICAgVGhlc2Ug ZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRs eSB0cmVhdGVkCnwgICAgYXMgJ3gnLiAgVGhlIGZvbGxvd2luZyBpbmR1Y2VzIGFuIGVycm9yLCB1 bnRpbCAtc3RkIGlzIGFkZGVkIHRvIGdldAp8ICAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJpb3Vz bHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4KfCAgICBhcnJheSBz aXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBz b21ldGhpbmcKfCAgICB0aGF0J3MgdHJ1ZSBvbmx5IHdpdGggLXN0ZC4gICovCnwgaW50IG9zZjRf Y2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0xXTsKfCAKfCAvKiBJQk0gQyA2IGZvciBBSVgg aXMgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0IHJlcGxhY2VzIG1hY3JvIHBhcmFtZXRl cnMKfCAgICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4gICovCnwgI2Rl ZmluZSBGT08oeCkgJ3gnCnwgaW50IHhsYzZfY2NfYXJyYXlbRk9PKGEpID09ICd4JyA/IDEgOiAt MV07CnwgCnwgaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7Cnwgc3RydWN0IHMxIHtpbnQgKCpm KSAoaW50IGEpO307Cnwgc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307CnwgaW50IHBh aXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3Rh dCAqLCBpbnQpLCBpbnQsIGludCk7CnwgaW50IGFyZ2M7CnwgY2hhciAqKmFyZ3Y7CnwgaW50Cnwg bWFpbiAoKQp8IHsKfCByZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUs IGFyZ3YsIDEpICE9IGFyZ3ZbMV07CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiAgLUFh IC1EX0hQVVhfU09VUkNFIC1jICAgY29uZnRlc3QuYyA+JjUKLi9jb25maWd1cmU6IGxpbmUgMTc0 MjogLUFhOiBjb21tYW5kIG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZh Igp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9W RVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZh IHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwg I2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVm aW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAj aW5jbHVkZSA8c3RkYXJnLmg+CnwgI2luY2x1ZGUgPHN0ZGlvLmg+Cnwgc3RydWN0IHN0YXQ7Cnwg LyogTW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mg c3JjL2NvbmYuc2guICAqLwp8IHN0cnVjdCBidWYgeyBpbnQgeDsgfTsKfCBGSUxFICogKCpyY3Nv cGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOwp8IHN0YXRpYyBjaGFyICpl IChwLCBpKQp8ICAgICAgY2hhciAqKnA7CnwgICAgICBpbnQgaTsKfCB7CnwgICByZXR1cm4gcFtp XTsKfCB9Cnwgc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQpLCBjaGFy ICoqcCwgLi4uKQp8IHsKfCAgIGNoYXIgKnM7CnwgICB2YV9saXN0IHY7CnwgICB2YV9zdGFydCAo dixwKTsKfCAgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CnwgICB2YV9lbmQgKHYpOwp8ICAg cmV0dXJuIHM7CnwgfQp8IAp8IC8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBh bG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQgaGFzCnwgICAgZnVuY3Rpb24gcHJvdG90eXBlcyBh bmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFyYWN0ZXIgY29uc3RhbnRzLgp8ICAgIFRo ZXNlIGRvbid0IHByb3Zva2UgYW4gZXJyb3IgdW5mb3J0dW5hdGVseSwgaW5zdGVhZCBhcmUgc2ls ZW50bHkgdHJlYXRlZAp8ICAgIGFzICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJv ciwgdW50aWwgLXN0ZCBpcyBhZGRlZCB0byBnZXQKfCAgICBwcm9wZXIgQU5TSSBtb2RlLiAgQ3Vy aW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCnwgICAgYXJy YXkgc2l6ZSBhdCBsZWFzdC4gIEl0J3MgbmVjZXNzYXJ5IHRvIHdyaXRlICdceDAwJz09MCB0byBn ZXQgc29tZXRoaW5nCnwgICAgdGhhdCdzIHRydWUgb25seSB3aXRoIC1zdGQuICAqLwp8IGludCBv c2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CnwgCnwgLyogSUJNIEMgNiBmb3Ig QUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQsIGJ1dCBpdCByZXBsYWNlcyBtYWNybyBwYXJh bWV0ZXJzCnwgICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMuICAqLwp8 ICNkZWZpbmUgRk9PKHgpICd4Jwp8IGludCB4bGM2X2NjX2FycmF5W0ZPTyhhKSA9PSAneCcgPyAx IDogLTFdOwp8IAp8IGludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOwp8IHN0cnVjdCBzMSB7aW50 ICgqZikgKGludCBhKTt9Owp8IHN0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9Owp8IGlu dCBwYWlybmFtZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwgc3RydWN0 IHN0YXQgKiwgaW50KSwgaW50LCBpbnQpOwp8IGludCBhcmdjOwp8IGNoYXIgKiphcmd2Owp8IGlu dAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9IGFyZ3ZbMF0gIHx8ICBm IChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDog IC1YYyAtRF9fRVhURU5TSU9OU19fIC1jICAgY29uZnRlc3QuYyA+JjUKLi9jb25maWd1cmU6IGxp bmUgMTc0MjogLVhjOiBjb21tYW5kIG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQg cHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFD S0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJs aWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmph dmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIK fCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KfCAjaW5jbHVkZSA8c3RkYXJnLmg+CnwgI2luY2x1ZGUgPHN0ZGlvLmg+Cnwgc3RydWN0IHN0 YXQ7CnwgLyogTW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1Mg NS43J3Mgc3JjL2NvbmYuc2guICAqLwp8IHN0cnVjdCBidWYgeyBpbnQgeDsgfTsKfCBGSUxFICog KCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOwp8IHN0YXRpYyBj aGFyICplIChwLCBpKQp8ICAgICAgY2hhciAqKnA7CnwgICAgICBpbnQgaTsKfCB7CnwgICByZXR1 cm4gcFtpXTsKfCB9Cnwgc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQp LCBjaGFyICoqcCwgLi4uKQp8IHsKfCAgIGNoYXIgKnM7CnwgICB2YV9saXN0IHY7CnwgICB2YV9z dGFydCAodixwKTsKfCAgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CnwgICB2YV9lbmQgKHYp Owp8ICAgcmV0dXJuIHM7CnwgfQp8IAp8IC8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29y dCBvZiBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LiAgSXQgaGFzCnwgICAgZnVuY3Rpb24gcHJvdG90 eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFyYWN0ZXIgY29uc3RhbnRzLgp8 ICAgIFRoZXNlIGRvbid0IHByb3Zva2UgYW4gZXJyb3IgdW5mb3J0dW5hdGVseSwgaW5zdGVhZCBh cmUgc2lsZW50bHkgdHJlYXRlZAp8ICAgIGFzICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBh biBlcnJvciwgdW50aWwgLXN0ZCBpcyBhZGRlZCB0byBnZXQKfCAgICBwcm9wZXIgQU5TSSBtb2Rl LiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCnwg ICAgYXJyYXkgc2l6ZSBhdCBsZWFzdC4gIEl0J3MgbmVjZXNzYXJ5IHRvIHdyaXRlICdceDAwJz09 MCB0byBnZXQgc29tZXRoaW5nCnwgICAgdGhhdCdzIHRydWUgb25seSB3aXRoIC1zdGQuICAqLwp8 IGludCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CnwgCnwgLyogSUJNIEMg NiBmb3IgQUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQsIGJ1dCBpdCByZXBsYWNlcyBtYWNy byBwYXJhbWV0ZXJzCnwgICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMu ICAqLwp8ICNkZWZpbmUgRk9PKHgpICd4Jwp8IGludCB4bGM2X2NjX2FycmF5W0ZPTyhhKSA9PSAn eCcgPyAxIDogLTFdOwp8IAp8IGludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOwp8IHN0cnVjdCBz MSB7aW50ICgqZikgKGludCBhKTt9Owp8IHN0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9 Owp8IGludCBwYWlybmFtZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwg c3RydWN0IHN0YXQgKiwgaW50KSwgaW50LCBpbnQpOwp8IGludCBhcmdjOwp8IGNoYXIgKiphcmd2 Owp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9IGFyZ3ZbMF0g IHx8ICBmIChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6 NDIyMDogcmVzdWx0OiB1bnN1cHBvcnRlZAo6NDIyMDogY2hlY2tpbmcgd2hldGhlciAgdW5kZXJz dGFuZHMgLWMgYW5kIC1vIHRvZ2V0aGVyCjo0NzY1OiAgLWMgY29uZnRlc3QuYyAtbyBjb25mdGVz dDIuCi4vY29uZmlndXJlOiBsaW5lIDQ3NjY6IC1jOiBjb21tYW5kIG5vdCBmb3VuZAo6NDc2ODog JD8gPSAxMjcKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBzdHlsZSBvZiBp bmNsdWRlIHVzZWQgYnkgbWFrZQo6NDIyMDogcmVzdWx0OiBHTlUKOjQyMjA6IGNoZWNraW5nIGRl cGVuZGVuY3kgc3R5bGUgb2YgL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgCjo0MjIwOiByZXN1 bHQ6IG5vbmUKOjQyMjA6IGNoZWNraW5nIGZvciBnKysKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6 IGNoZWNraW5nIGZvciBjKysKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBn cHAKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBhQ0MKOjQyMjA6IHJlc3Vs dDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBDQwo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIGN4eAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGNjKysK OjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBjbC5leGUKOjQyMjA6IHJlc3Vs dDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBGQ0MKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNo ZWNraW5nIGZvciBLQ0MKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBSQ0MK OjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciB4bENfcgo6NDIyMDogcmVzdWx0 OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHhsQwo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIEMrKyBjb21waWxlciB2ZXJzaW9uCjo0MjIwOiBnKysgLS12ZXJzaW9uID4mNQpn KysgKERlYmlhbiAxMC4yLjEtNikgMTAuMi4xIDIwMjEwMTEwCkNvcHlyaWdodCAoQykgMjAyMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUg dGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7 IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuCgo6NDIyMDogJD8gPSAwCjo0MjIwOiBnKysgLXYgPiY1ClVzaW5nIGJ1aWx0LWlu IHNwZWNzLgpDT0xMRUNUX0dDQz1nKysKQ09MTEVDVF9MVE9fV1JBUFBFUj0vdXNyL2xpYi9nY2Mv eDg2XzY0LWxpbnV4LWdudS8xMC9sdG8td3JhcHBlcgpPRkZMT0FEX1RBUkdFVF9OQU1FUz1udnB0 eC1ub25lOmFtZGdjbi1hbWRoc2E6aHNhCk9GRkxPQURfVEFSR0VUX0RFRkFVTFQ9MQpUYXJnZXQ6 IHg4Nl82NC1saW51eC1nbnUKQ29uZmlndXJlZCB3aXRoOiAuLi9zcmMvY29uZmlndXJlIC12IC0t d2l0aC1wa2d2ZXJzaW9uPSdEZWJpYW4gMTAuMi4xLTYnIC0td2l0aC1idWd1cmw9ZmlsZTovLy91 c3Ivc2hhcmUvZG9jL2djYy0xMC9SRUFETUUuQnVncyAtLWVuYWJsZS1sYW5ndWFnZXM9YyxhZGEs YysrLGdvLGJyaWcsZCxmb3J0cmFuLG9iamMsb2JqLWMrKyxtMiAtLXByZWZpeD0vdXNyIC0td2l0 aC1nY2MtbWFqb3ItdmVyc2lvbi1vbmx5IC0tcHJvZ3JhbS1zdWZmaXg9LTEwIC0tcHJvZ3JhbS1w cmVmaXg9eDg2XzY0LWxpbnV4LWdudS0gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWxpbmtlci1i dWlsZC1pZCAtLWxpYmV4ZWNkaXI9L3Vzci9saWIgLS13aXRob3V0LWluY2x1ZGVkLWdldHRleHQg LS1lbmFibGUtdGhyZWFkcz1wb3NpeCAtLWxpYmRpcj0vdXNyL2xpYiAtLWVuYWJsZS1ubHMgLS1l bmFibGUtYm9vdHN0cmFwIC0tZW5hYmxlLWNsb2NhbGU9Z251IC0tZW5hYmxlLWxpYnN0ZGN4eC1k ZWJ1ZyAtLWVuYWJsZS1saWJzdGRjeHgtdGltZT15ZXMgLS13aXRoLWRlZmF1bHQtbGlic3RkY3h4 LWFiaT1uZXcgLS1lbmFibGUtZ251LXVuaXF1ZS1vYmplY3QgLS1kaXNhYmxlLXZ0YWJsZS12ZXJp ZnkgLS1lbmFibGUtcGx1Z2luIC0tZW5hYmxlLWRlZmF1bHQtcGllIC0td2l0aC1zeXN0ZW0temxp YiAtLWVuYWJsZS1saWJwaG9ib3MtY2hlY2tpbmc9cmVsZWFzZSAtLXdpdGgtdGFyZ2V0LXN5c3Rl bS16bGliPWF1dG8gLS1lbmFibGUtb2JqYy1nYz1hdXRvIC0tZW5hYmxlLW11bHRpYXJjaCAtLWRp c2FibGUtd2Vycm9yIC0td2l0aC1hcmNoLTMyPWk2ODYgLS13aXRoLWFiaT1tNjQgLS13aXRoLW11 bHRpbGliLWxpc3Q9bTMyLG02NCxteDMyIC0tZW5hYmxlLW11bHRpbGliIC0td2l0aC10dW5lPWdl bmVyaWMgLS1lbmFibGUtb2ZmbG9hZC10YXJnZXRzPW52cHR4LW5vbmU9L2J1aWxkL2djYy0xMC1L bTlVN3MvZ2NjLTEwLTEwLjIuMS9kZWJpYW4vdG1wLW52cHR4L3VzcixhbWRnY24tYW1kaHNhPS9i dWlsZC9nY2MtMTAtS205VTdzL2djYy0xMC0xMC4yLjEvZGViaWFuL3RtcC1nY24vdXNyLGhzYSAt LXdpdGhvdXQtY3VkYS1kcml2ZXIgLS1lbmFibGUtY2hlY2tpbmc9cmVsZWFzZSAtLWJ1aWxkPXg4 Nl82NC1saW51eC1nbnUgLS1ob3N0PXg4Nl82NC1saW51eC1nbnUgLS10YXJnZXQ9eDg2XzY0LWxp bnV4LWdudSAtLXdpdGgtYnVpbGQtY29uZmlnPWJvb3RzdHJhcC1sdG8tbGVhbiAtLWVuYWJsZS1s aW5rLW11dGV4ClRocmVhZCBtb2RlbDogcG9zaXgKU3VwcG9ydGVkIExUTyBjb21wcmVzc2lvbiBh bGdvcml0aG1zOiB6bGliIHpzdGQKZ2NjIHZlcnNpb24gMTAuMi4xIDIwMjEwMTEwIChEZWJpYW4g MTAuMi4xLTYpIAouLi4gcmVzdCBvZiBzdGRlcnIgb3V0cHV0IGRlbGV0ZWQgLi4uCjo0MjIwOiAk PyA9IDAKOjQyMjA6IGcrKyAtViA+JjUKZysrOiBlcnJvcjogdW5yZWNvZ25pemVkIGNvbW1hbmQt bGluZSBvcHRpb24gJy1WJwpnKys6IGZhdGFsIGVycm9yOiBubyBpbnB1dCBmaWxlcwpjb21waWxh dGlvbiB0ZXJtaW5hdGVkLgo6NDIyMDogJD8gPSAxCjo0MjIwOiBnKysgLXF2ZXJzaW9uID4mNQpn Kys6IGVycm9yOiB1bnJlY29nbml6ZWQgY29tbWFuZC1saW5lIG9wdGlvbiAnLXF2ZXJzaW9uJzsg ZGlkIHlvdSBtZWFuICctLXZlcnNpb24nPwpnKys6IGZhdGFsIGVycm9yOiBubyBpbnB1dCBmaWxl cwpjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgo6NDIyMDogJD8gPSAxCjo0MjIwOiBjaGVja2luZyB3 aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMrKyBjb21waWxlcgo6NDIyMDogZysrIC1jICAt Zm5vLWJ1aWx0aW4gIGNvbmZ0ZXN0LmNwcCA+JjUKOjQyMjA6ICQ/ID0gMAo6IGZhaWxlZCBwcm9n cmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmph dmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdF X1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmph dmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNk ZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8 IAp8IGludAp8IG1haW4gKCkKfCB7CnwgI2lmbmRlZiBfX0dOVUNfXwp8ICAgICAgICBjaG9rZSBt ZQp8ICNlbmRpZgp8IAp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6 NDIyMDogY2hlY2tpbmcgd2hldGhlciBnKysgYWNjZXB0cyAtZwo6NDIyMDogZysrIC1jIC1nICBj b25mdGVzdC5jcHAgPiY1Cjo0MjIwOiAkPyA9IDAKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyog Y29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUg UEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJz aW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNL QUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04g InZlcnNpb24tdW51c2VkIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAKfCBpbnQKfCBtYWlu ICgpCnwgewp8IAp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogZysrIC1jICAgY29uZnRl c3QuY3BwID4mNQo6NDIyMDogJD8gPSAwCjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZk ZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tB R0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11 bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIK fCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9V UkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJz aW9uLXVudXNlZCIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgCnwgaW50CnwgbWFpbiAoKQp8 IHsKfCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IGcrKyAtYyAtZyAgY29uZnRlc3Qu Y3BwID4mNQo6NDIyMDogJD8gPSAwCjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZz LmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVz ZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwg IiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9u LXVudXNlZCIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsK fCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGRlcGVuZGVuY3kgc3R5bGUgb2YgZysrCjo0MjIwOiByZXN1bHQ6IGdjYzMKOjQyMjA6IGNo ZWNraW5nIGZvciBhcwo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGxkCjo0 MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgYXIKOjQyMjA6IHJlc3VsdDogbm8K OjQyMjA6IGNoZWNraW5nIGZvciByYW5saWIKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGZvciBkbGx0b29sCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZ2F3 awo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIG1hd2sKOjQyMjA6IHJlc3Vs dDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBuYXdrCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBj aGVja2luZyBmb3IgYXdrCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgamFy Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZmFzdGphcgo6NDIyMDogcmVz dWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGdqYXIKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6 IGNoZWNraW5nIGZvciB6aXAKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciB1 bnppcAo6NDIyMDogcmVzdWx0OiB1bnppcAo6NDIyMDogZXJyb3I6IGNhbm5vdCBmaW5kIG5laXRo ZXIgemlwIG5vciBqYXIsIGNhbm5vdCBjb250aW51ZQo6NDIyMDogY2hlY2tpbmcgd2hldGhlciB0 byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMKOjQyMjA6 IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCkgaXMgR05VIGxkCjo0 MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBpZiB0aGUgR05VIGxpbmtlciAoKSBzdXBw b3J0cyAtQnN5bWJvbGljLWZ1bmN0aW9ucwo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tp bmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzCjo0MjIwOiByZXN1bHQ6IEdOVS9MaW51 eCBsZC5zbwo6NDIyMDogY2hlY2tpbmcgd2hpY2ggdmFyaWFibGUgc3BlY2lmaWVzIHJ1bi10aW1l IGxpYnJhcnkgcGF0aAo6NDIyMDogcmVzdWx0OiBMRF9MSUJSQVJZX1BBVEgKOjQyMjA6IGNoZWNr aW5nIGhvdyB0byBwcmludCBzdHJpbmdzCjo0MjIwOiByZXN1bHQ6IHByaW50Zgo6NDIyMDogY2hl Y2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0Cjo0MjIwOiBlcnJv cjogbm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gJFBBVEgKOjQyMjA6IHJlc3Vs dDogCjo0MjIwOiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQg LWUKOjQyMjA6IGVycm9yOiBubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gL3Vz ci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmlu Oi91c3IvZ2FtZXM6L3Vzci9sb2NhbC9nYW1lczovdXNyL2xpYi93c2wvbGliOi9tbnQvYy9Qcm9n cmFtIEZpbGVzL1dpbmRvd3NBcHBzL1RoZURlYmlhblByb2plY3QuRGViaWFuR05VTGludXhfMS4x Mi4yLjBfeDY0X183NnY0Z2ZzejE5aHY0Oi9tbnQvYy9XSU5ET1dTL3N5c3RlbTMyOi9tbnQvYy9X SU5ET1dTOi9tbnQvYy9XSU5ET1dTL1N5c3RlbTMyL1diZW06L21udC9jL1dJTkRPV1MvU3lzdGVt MzIvV2luZG93c1Bvd2VyU2hlbGwvdjEuMC86L21udC9jL1dJTkRPV1MvU3lzdGVtMzIvT3BlblNT SC86L21udC9jL1Byb2dyYW0gRmlsZXMgKHg4NikvQ29tbW9uIEZpbGVzL1Byb3BlbGxlcmhlYWQg U29mdHdhcmUvUmVXaXJlLzovbW50L2MvUHJvZ3JhbSBGaWxlcy9Db21tb24gRmlsZXMvUHJvcGVs bGVyaGVhZCBTb2Z0d2FyZS9SZVdpcmUvOi9tbnQvYy9Vc2Vycy8yNG1zLmRvd24vQXBwRGF0YS9M b2NhbC9NaWNyb3NvZnQvV2luZG93c0FwcHM6L21udC9jL1VzZXJzLzI0bXMuZG93bi9BcHBEYXRh L0xvY2FsL1BhY2thZ2VzL1B5dGhvblNvZnR3YXJlRm91bmRhdGlvbi5QeXRob24uMy4xMF9xYno1 bjJrZnJhOHAwL0xvY2FsQ2FjaGUvbG9jYWwtcGFja2FnZXMvUHl0aG9uMzEwL1NjcmlwdHM6L3Vz ci9iaW4vZ2NjOi91c3IvYmluL2djYy0xMDovdXNyL3hwZzQvYmluCjo0MjIwOiByZXN1bHQ6IAo6 NDIyMDogY2hlY2tpbmcgZm9yIGVncmVwCjo0MjIwOiBlcnJvcjogbm8gYWNjZXB0YWJsZSBlZ3Jl cCBjb3VsZCBiZSBmb3VuZCBpbiAvdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9z YmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi91c3Iv bGliL3dzbC9saWI6L21udC9jL1Byb2dyYW0gRmlsZXMvV2luZG93c0FwcHMvVGhlRGViaWFuUHJv amVjdC5EZWJpYW5HTlVMaW51eF8xLjEyLjIuMF94NjRfXzc2djRnZnN6MTlodjQ6L21udC9jL1dJ TkRPV1Mvc3lzdGVtMzI6L21udC9jL1dJTkRPV1M6L21udC9jL1dJTkRPV1MvU3lzdGVtMzIvV2Jl bTovbW50L2MvV0lORE9XUy9TeXN0ZW0zMi9XaW5kb3dzUG93ZXJTaGVsbC92MS4wLzovbW50L2Mv V0lORE9XUy9TeXN0ZW0zMi9PcGVuU1NILzovbW50L2MvUHJvZ3JhbSBGaWxlcyAoeDg2KS9Db21t b24gRmlsZXMvUHJvcGVsbGVyaGVhZCBTb2Z0d2FyZS9SZVdpcmUvOi9tbnQvYy9Qcm9ncmFtIEZp bGVzL0NvbW1vbiBGaWxlcy9Qcm9wZWxsZXJoZWFkIFNvZnR3YXJlL1JlV2lyZS86L21udC9jL1Vz ZXJzLzI0bXMuZG93bi9BcHBEYXRhL0xvY2FsL01pY3Jvc29mdC9XaW5kb3dzQXBwczovbW50L2Mv VXNlcnMvMjRtcy5kb3duL0FwcERhdGEvTG9jYWwvUGFja2FnZXMvUHl0aG9uU29mdHdhcmVGb3Vu ZGF0aW9uLlB5dGhvbi4zLjEwX3FiejVuMmtmcmE4cDAvTG9jYWxDYWNoZS9sb2NhbC1wYWNrYWdl cy9QeXRob24zMTAvU2NyaXB0czovdXNyL2Jpbi9nY2M6L3Vzci9iaW4vZ2NjLTEwOi91c3IveHBn NC9iaW4KOjQyMjA6IHJlc3VsdDogCjo0MjIwOiBjaGVja2luZyBmb3IgZmdyZXAKOjQyMjA6IGVy cm9yOiBubyBhY2NlcHRhYmxlIGZncmVwIGNvdWxkIGJlIGZvdW5kIGluIC91c3IvbG9jYWwvc2Jp bjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVz Oi91c3IvbG9jYWwvZ2FtZXM6L3Vzci9saWIvd3NsL2xpYjovbW50L2MvUHJvZ3JhbSBGaWxlcy9X aW5kb3dzQXBwcy9UaGVEZWJpYW5Qcm9qZWN0LkRlYmlhbkdOVUxpbnV4XzEuMTIuMi4wX3g2NF9f NzZ2NGdmc3oxOWh2NDovbW50L2MvV0lORE9XUy9zeXN0ZW0zMjovbW50L2MvV0lORE9XUzovbW50 L2MvV0lORE9XUy9TeXN0ZW0zMi9XYmVtOi9tbnQvYy9XSU5ET1dTL1N5c3RlbTMyL1dpbmRvd3NQ b3dlclNoZWxsL3YxLjAvOi9tbnQvYy9XSU5ET1dTL1N5c3RlbTMyL09wZW5TU0gvOi9tbnQvYy9Q cm9ncmFtIEZpbGVzICh4ODYpL0NvbW1vbiBGaWxlcy9Qcm9wZWxsZXJoZWFkIFNvZnR3YXJlL1Jl V2lyZS86L21udC9jL1Byb2dyYW0gRmlsZXMvQ29tbW9uIEZpbGVzL1Byb3BlbGxlcmhlYWQgU29m dHdhcmUvUmVXaXJlLzovbW50L2MvVXNlcnMvMjRtcy5kb3duL0FwcERhdGEvTG9jYWwvTWljcm9z b2Z0L1dpbmRvd3NBcHBzOi9tbnQvYy9Vc2Vycy8yNG1zLmRvd24vQXBwRGF0YS9Mb2NhbC9QYWNr YWdlcy9QeXRob25Tb2Z0d2FyZUZvdW5kYXRpb24uUHl0aG9uLjMuMTBfcWJ6NW4ya2ZyYThwMC9M b2NhbENhY2hlL2xvY2FsLXBhY2thZ2VzL1B5dGhvbjMxMC9TY3JpcHRzOi91c3IvYmluL2djYzov dXNyL2Jpbi9nY2MtMTA6L3Vzci94cGc0L2Jpbgo6NDIyMDogcmVzdWx0OiAKOjQyMjA6IGNoZWNr aW5nIGZvciBub24tR05VIGxkCjo0MjIwOiByZXN1bHQ6IC91c3IvYmluL2xkCjo0MjIwOiBjaGVj a2luZyBpZiB0aGUgbGlua2VyICgvdXNyL2Jpbi9sZCkgaXMgR05VIGxkCjo0MjIwOiByZXN1bHQ6 IHllcwo6NDIyMDogY2hlY2tpbmcgZm9yIEJTRC0gb3IgTVMtY29tcGF0aWJsZSBuYW1lIGxpc3Rl ciAobm0pCjo0MjIwOiByZXN1bHQ6IC91c3IvYmluL25tIC1CCjo0MjIwOiBjaGVja2luZyB0aGUg bmFtZSBsaXN0ZXIgKC91c3IvYmluL25tIC1CKSBpbnRlcmZhY2UKOjc3MjQ6IC9ob21lL3pvcG9s aXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9j b21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjc3Mjc6IC91c3IvYmluL25tIC1CICJj b25mdGVzdC4iCi91c3IvYmluL25tOiAnY29uZnRlc3QuJzogTm8gc3VjaCBmaWxlCjo3NzMwOiBv dXRwdXQKOjQyMjA6IHJlc3VsdDogQlNEIG5tCjo0MjIwOiBjaGVja2luZyB0aGUgbWF4aW11bSBs ZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwo6NDIyMDogcmVzdWx0OiAxNTcyODY0Cjo0 MjIwOiBjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25z dHJ1Y3RzCjo0MjIwOiByZXN1bHQ6IHllcwo6NDIyMDogY2hlY2tpbmcgd2hldGhlciB0aGUgc2hl bGwgdW5kZXJzdGFuZHMgIis9Igo6NDIyMDogcmVzdWx0OiB5ZXMKOjQyMjA6IGNoZWNraW5nIGZv ciAvdXNyL2Jpbi9sZCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcwo6NDIyMDogcmVzdWx0 OiAtcgo6NDIyMDogY2hlY2tpbmcgZm9yIG9iamR1bXAKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6 IGNoZWNraW5nIGhvdyB0byByZWNvZ25pemUgZGVwZW5kZW50IGxpYnJhcmllcwo6NDIyMDogcmVz dWx0OiBwYXNzX2FsbAo6NDIyMDogY2hlY2tpbmcgZm9yIGFyCjo0MjIwOiByZXN1bHQ6IG5vCjo0 MjIwOiBjaGVja2luZyBmb3Igc3RyaXAKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5n IGZvciByYW5saWIKOjQyMjA6IHJlc3VsdDogOgo6NDIyMDogV0FSTklORzogdXNpbmcgY3Jvc3Mg dG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0Cjo0MjIwOiBjaGVja2luZyBjb21t YW5kIHRvIHBhcnNlIC91c3IvYmluL25tIC1CIG91dHB1dCBmcm9tIC9ob21lL3pvcG9saXM0L2dj ai9jb21waWxlICBvYmplY3QKOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAg IGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1j OiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgojaWZkZWYg X19jcGx1c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgpjaGFyIG5tX3Rlc3RfdmFyOwp2b2lkIG5t X3Rlc3RfZnVuYyh2b2lkKTsKdm9pZCBubV90ZXN0X2Z1bmModm9pZCl7fQojaWZkZWYgX19jcGx1 c3BsdXMKfQojZW5kaWYKaW50IG1haW4oKXtubV90ZXN0X3Zhcj0nYSc7bm1fdGVzdF9mdW5jKCk7 cmV0dXJuKDApO30KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0 ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3Qg Zm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgojaWZkZWYgX19jcGx1 c3BsdXMKZXh0ZXJuICJDIiB7CiNlbmRpZgpjaGFyIG5tX3Rlc3RfdmFyOwp2b2lkIG5tX3Rlc3Rf ZnVuYyh2b2lkKTsKdm9pZCBubV90ZXN0X2Z1bmModm9pZCl7fQojaWZkZWYgX19jcGx1c3BsdXMK fQojZW5kaWYKaW50IG1haW4oKXtubV90ZXN0X3Zhcj0nYSc7bm1fdGVzdF9mdW5jKCk7cmV0dXJu KDApO30KOjQyMjA6IHJlc3VsdDogZmFpbGVkCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29t cGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2 OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6NDIyMDogY2hlY2tpbmcgaG93 IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21w aWxlICAtRSAgY29uZnRlc3QuYwovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVj OiAtRTogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAv KiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZl cnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11 bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lP TiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJB UllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklY ICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KfCAjaWZkZWYgX19TVERDX18KfCAjIGluY2x1ZGUgPGxpbWl0cy5oPgp8ICNlbHNlCnwgIyBp bmNsdWRlIDxhc3NlcnQuaD4KfCAjZW5kaWYKfCAJCSAgICAgU3ludGF4IGVycm9yCjo0MjIwOiAv aG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLUUgIGNvbmZ0ZXN0LmMKL2hvbWUvem9wb2xpczQv Z2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLUU6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBm YWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9O QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZp bmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RS SU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQg ImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGli amF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9T SExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8 ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEK fCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2lmZGVmIF9fU1REQ19fCnwgIyBpbmNsdWRlIDxs aW1pdHMuaD4KfCAjZWxzZQp8ICMgaW5jbHVkZSA8YXNzZXJ0Lmg+CnwgI2VuZGlmCnwgCQkgICAg IFN5bnRheCBlcnJvcgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1FIC10cmFk aXRpb25hbC1jcHAgIGNvbmZ0ZXN0LmMKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjog ZXhlYzogLUU6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9O ICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNp b24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZF UlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9M SUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BS RUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMu aC4gICovCnwgI2lmZGVmIF9fU1REQ19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4KfCAjZWxzZQp8 ICMgaW5jbHVkZSA8YXNzZXJ0Lmg+CnwgI2VuZGlmCnwgCQkgICAgIFN5bnRheCBlcnJvcgo6NDIy MDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1FIC10cmFkaXRpb25hbC1jcHAgIGNvbmZ0 ZXN0LmMKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLUU6IG5vdCBmb3Vu ZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAq Lwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJO QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIK fCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZp bmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8 ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2Rl ZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIK fCAjZGVmaW5lIFVTRV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2lmZGVmIF9f U1REQ19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4KfCAjZWxzZQp8ICMgaW5jbHVkZSA8YXNzZXJ0 Lmg+CnwgI2VuZGlmCnwgCQkgICAgIFN5bnRheCBlcnJvcgo6NDIyMDogL2xpYi9jcHAgIGNvbmZ0 ZXN0LmMKOjQyMjA6ICQ/ID0gMAo6NDIyMDogL2xpYi9jcHAgIGNvbmZ0ZXN0LmMKOjQyMjA6ICQ/ ID0gMAo6NDIyMDogcmVzdWx0OiAvbGliL2NwcAo6NDIyMDogL2xpYi9jcHAgIGNvbmZ0ZXN0LmMK OjQyMjA6ICQ/ID0gMAo6NDIyMDogL2xpYi9jcHAgIGNvbmZ0ZXN0LmMKOjQyMjA6ICQ/ID0gMAo6 NDIyMDogZXJyb3I6IGluIGAvaG9tZS96b3BvbGlzNC9nY2ovbGliamF2YSc6Cjo0MjIwOiBlcnJv cjogQyBwcmVwcm9jZXNzb3IgIi9saWIvY3BwIiBmYWlscyBzYW5pdHkgY2hlY2sKU2VlIGBjb25m aWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzCjo0MjIwOiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRl ciBmaWxlcwo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3Qu YyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3Vu ZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAq Lwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJO QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIK fCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZp bmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8 ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2Rl ZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIK fCAjZGVmaW5lIFVTRV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUg PHN0ZGxpYi5oPgp8ICNpbmNsdWRlIDxzdGRhcmcuaD4KfCAjaW5jbHVkZSA8c3RyaW5nLmg+Cnwg I2luY2x1ZGUgPGZsb2F0Lmg+CnwgCnwgaW50CnwgbWFpbiAoKQp8IHsKfCAKfCAgIDsKfCAgIHJl dHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBzeXMvdHlw ZXMuaAo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+ JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6 NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8 ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1F ICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUg UEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNk ZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2Vk Igp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmlu ZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAj ZGVmaW5lIFVTRV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0 ZGlvLmg+CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0 Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+ CnwgIyBpbmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8 ICMgIGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9T VFJJTkdfSAp8ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1P UllfSAp8ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmlu Zy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5n cy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5 cGVzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGlu dC5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQu aD4KfCAjZW5kaWYKfCAKfCAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cjo0MjIwOiByZXN1bHQ6IG5v Cjo0MjIwOiBjaGVja2luZyBmb3Igc3lzL3N0YXQuaAo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2Nq L2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6 IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZh Igp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9W RVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZh IHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwg I2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVm aW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFS ICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElC R0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAvKiBlbmQgY29u ZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGlvLmg+CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVT X0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NZU19T VEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIFNURENfSEVB REVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+CnwgIyBpbmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxz ZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8ICMgIGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5k aWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdfSAp8ICMgaWYgIWRlZmluZWQgU1REQ19I RUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllfSAp8ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8 ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmluZy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NU UklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5ncy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lO VFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5cGVzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVf U1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGludC5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VO SVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQuaD4KfCAjZW5kaWYKfCAKfCAjaW5jbHVkZSA8c3lz L3N0YXQuaD4KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBzdGRsaWIuaAo6 NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hv bWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDog JD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZp bmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5l IFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FH RV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUg UEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNk ZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1Rf VE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5l IFVTRV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGlvLmg+ CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Cnwg I2VuZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+CnwgIyBp bmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8ICMgIGlu Y2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdf SAp8ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllfSAp8 ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmluZy5oPgp8 ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5ncy5oPgp8 ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5cGVzLmg+ CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGludC5oPgp8 ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQuaD4KfCAj ZW5kaWYKfCAKfCAjaW5jbHVkZSA8c3RkbGliLmg+Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBj aGVja2luZyBmb3Igc3RyaW5nLmgKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZv ciBtZW1vcnkuaAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHN0cmluZ3Mu aAo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUK L2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIy MDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNk ZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFD S0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZp bmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8 ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBB V1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVm aW5lIFVTRV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGlv Lmg+CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgp8 ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ CnwgI2VuZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+Cnwg IyBpbmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8ICMg IGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJ TkdfSAp8ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllf SAp8ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmluZy5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5ncy5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5cGVz Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGludC5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQuaD4K fCAjZW5kaWYKfCAKfCAjaW5jbHVkZSA8c3RyaW5ncy5oPgo6NDIyMDogcmVzdWx0OiBubwo6NDIy MDogY2hlY2tpbmcgZm9yIGludHR5cGVzLmgKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGZvciBzdGRpbnQuaAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHVu aXN0ZC5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZGxmY24uaAo6NDIy MDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUv em9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8g PSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUg UEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZh Igp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBB Q0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9C VUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFD S0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZp bmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9P TEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVT RV9MVERMIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGlvLmg+Cnwg I2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgp8ICNlbmRp Zgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CnwgI2Vu ZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+CnwgIyBpbmNs dWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8ICMgIGluY2x1 ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdfSAp8 ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllfSAp8ICMg IGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmluZy5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5ncy5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5cGVzLmg+Cnwg I2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGludC5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQuaD4KfCAjZW5k aWYKfCAKfCAjaW5jbHVkZSA8ZGxmY24uaD4KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGZvciBvYmpkaXIKOjQyMjA6IHJlc3VsdDogLmxpYnMKOjQyMjA6IGNoZWNraW5nIGZvciAv aG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgb3B0aW9uIHRvIHByb2R1Y2UgUElDCjo0MjIwOiBy ZXN1bHQ6ICAtRFBJQwo6NDIyMDogY2hlY2tpbmcgaWYgL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGUgIFBJQyBmbGFnICAtRFBJQyB3b3Jrcwo6MTA4NTc6IC9ob21lL3pvcG9saXM0L2djai9jb21w aWxlICAtYyAgICAtRFBJQyAtRFBJQyBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ov Y29tcGlsZTogMzA2OiBleGVjOiAtYzogbm90IGZvdW5kCjoxMDg2MTogJD8gPSAxMjcKOjQyMjA6 IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGlmIC9ob21lL3pvcG9saXM0L2djai9jb21waWxl ICBzdGF0aWMgZmxhZyAgd29ya3MKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGlm IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICBzdXBwb3J0cyAtYyAtbyBmaWxlLm8KOjEwOTYy OiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLWMgICAtbyBvdXQvY29uZnRlc3QyLm8gY29u ZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMyNzogLWM6IG5vdCBmb3Vu ZAo6MTA5NjY6ICQ/ID0gMTI3Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBpZiAv aG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgc3VwcG9ydHMgLWMgLW8gZmlsZS5vCjo0MjIwOiBy ZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3MK OjQyMjA6IHJlc3VsdDogeWVzCjo0MjIwOiBjaGVja2luZyB3aGV0aGVyIHRoZSAvaG9tZS96b3Bv bGlzNC9nY2ovY29tcGlsZSAgbGlua2VyICgvdXNyL2Jpbi9sZCkgc3VwcG9ydHMgc2hhcmVkIGxp YnJhcmllcwo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZHluYW1pYyBsaW5rZXIg Y2hhcmFjdGVyaXN0aWNzCjo0MjIwOiBlcnJvcjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQg YWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGUgIC1vIGNvbmZ0ZXN0ICAgICBjb25mdGVzdC5jICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2Nv bXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQg cHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFD S0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJs aWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmph dmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIK fCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBB VEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZp bmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVm aW5lIExUX09CSkRJUiAiLmxpYnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAKfCBpbnQK fCBtYWluICgpCnwgewp8IAp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBH TlUvTGludXggbGQuc28KOjQyMjA6IGNoZWNraW5nIGhvdyB0byBoYXJkY29kZSBsaWJyYXJ5IHBh dGhzIGludG8gcHJvZ3JhbXMKOjQyMjA6IHJlc3VsdDogdW5zdXBwb3J0ZWQKOjQyMjA6IGNoZWNr aW5nIGZvciBzaGxfbG9hZAo6NDIyMDogZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2Vk IGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21w aWxlICAtbyBjb25mdGVzdCAgICBjb25mdGVzdC5jICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2Nv bXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQg cHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFD S0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJs aWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmph dmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIK fCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBB VEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZp bmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVm aW5lIExUX09CSkRJUiAiLmxpYnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAvKiBEZWZp bmUgc2hsX2xvYWQgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0cy5oPiBk ZWNsYXJlcyBzaGxfbG9hZC4KfCAgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4g ZGVjbGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KfCAjZGVmaW5lIHNobF9sb2FkIGlubm9jdW91c19z aGxfbG9hZAp8IAp8IC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5k IGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKfCAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGgg Y2hhciBzaGxfbG9hZCAoKTsgYmVsb3cuCnwgICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3Nl cnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKfCAgICAgPGxpbWl0cy5oPiBleGlz dHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KfCAKfCAjaWZkZWYgX19TVERD X18KfCAjIGluY2x1ZGUgPGxpbWl0cy5oPgp8ICNlbHNlCnwgIyBpbmNsdWRlIDxhc3NlcnQuaD4K fCAjZW5kaWYKfCAKfCAjdW5kZWYgc2hsX2xvYWQKfCAKfCAvKiBPdmVycmlkZSBhbnkgR0NDIGlu dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAgICBVc2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKfCAgICBidWlsdGluIGFu ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwp8ICNp ZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYKfCBjaGFyIHNobF9sb2FkICgp Owp8IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNo IGl0IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1 bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGgg X18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCnwgI2lmIGRlZmluZWQgX19z dHViX3NobF9sb2FkIHx8IGRlZmluZWQgX19zdHViX19fc2hsX2xvYWQKfCBjaG9rZSBtZQp8ICNl bmRpZgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIHNobF9sb2FkICgpOwp8ICAgOwp8 ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHNo bF9sb2FkIGluIC1sZGxkCjo0MjIwOiBlcnJvcjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQg YWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGUgIC1vIGNvbmZ0ZXN0ICAgIGNvbmZ0ZXN0LmMgLWxkbGQgICA+JjUKL2hvbWUvem9wb2xpczQv Z2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBm YWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9O QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZp bmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RS SU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQg ImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGli amF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9T SExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8 ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEK fCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAK fCAvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv ci4KfCAgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg b2YgYSBHQ0MKfCAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAj ZW5kaWYKfCBjaGFyIHNobF9sb2FkICgpOwp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIHNo bF9sb2FkICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6NDIy MDogY2hlY2tpbmcgZm9yIGRsb3Blbgo6NDIyMDogZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBh bGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2dj ai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25mdGVzdC5jICA+JjUKL2hvbWUvem9wb2xpczQv Z2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBm YWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9O QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZp bmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RS SU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQg ImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGli amF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9T SExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8 ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEK fCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAv KiBEZWZpbmUgZGxvcGVuIHRvIGFuIGlubm9jdW91cyB2YXJpYW50LCBpbiBjYXNlIDxsaW1pdHMu aD4gZGVjbGFyZXMgZGxvcGVuLgp8ICAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxpbWl0cy5o PiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLwp8ICNkZWZpbmUgZGxvcGVuIGlubm9jdW91c19k bG9wZW4KfCAKfCAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBo b3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCnwgICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNo YXIgZGxvcGVuICgpOyBiZWxvdy4KfCAgICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5o PiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQp8ICAgICA8bGltaXRzLmg+IGV4aXN0cyBl dmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwp8IAp8ICNpZmRlZiBfX1NURENfXwp8 ICMgaW5jbHVkZSA8bGltaXRzLmg+CnwgI2Vsc2UKfCAjIGluY2x1ZGUgPGFzc2VydC5oPgp8ICNl bmRpZgp8IAp8ICN1bmRlZiBkbG9wZW4KfCAKfCAvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFs IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAgICBVc2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKfCAgICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwp8ICNpZmRlZiBf X2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYKfCBjaGFyIGRsb3BlbiAoKTsKfCAvKiBU aGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBs ZW1lbnRzCnwgICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMg YXJlIGFjdHVhbGx5IG5hbWVkCnwgICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0 aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwp8ICNpZiBkZWZpbmVkIF9fc3R1Yl9kbG9w ZW4gfHwgZGVmaW5lZCBfX3N0dWJfX19kbG9wZW4KfCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGlu dAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIGRsb3BlbiAoKTsKfCAgIDsKfCAgIHJldHVybiAwOwp8 IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbAo6 NDIyMDogZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVD VVRBQkxFUy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAg ICBjb25mdGVzdC5jIC1sZGwgICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjog ZXhlYzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9O ICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNp b24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZF UlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9M SUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BS RUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJ UiAiLmxpYnMvIgp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAKfCAvKiBPdmVycmlkZSBhbnkg R0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAgICBVc2UgY2hhciBi ZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKfCAgICBidWls dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAq Lwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYKfCBjaGFyIGRsb3Bl biAoKTsKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBkbG9wZW4gKCk7CnwgICA7CnwgICBy ZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZGxvcGVu IGluIC1sc3ZsZAo6NDIyMDogZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVy IEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAt byBjb25mdGVzdCAgICBjb25mdGVzdC5jIC1sc3ZsZCAgID4mNQovaG9tZS96b3BvbGlzNC9nY2ov Y29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxl ZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUg ImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQ QUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcg ImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGli amF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZh Igp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElC UEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2Rl ZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNk ZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8IAp8IC8q IE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgp8 ICAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh IEdDQwp8ICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBz dGlsbCBhcHBseS4gICovCnwgI2lmZGVmIF9fY3BsdXNwbHVzCnwgZXh0ZXJuICJDIgp8ICNlbmRp Zgp8IGNoYXIgZGxvcGVuICgpOwp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIGRsb3BlbiAo KTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGZvciBkbGRfbGluayBpbiAtbGRsZAo6NDIyMDogZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5v dCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9ob21lL3pvcG9saXM0 L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25mdGVzdC5jIC1sZGxkICAgPiY1Ci9ob21l L3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5l IFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2 YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQ QUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0Vf QlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBB Q0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RP T0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBV U0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAvKiBlbmQgY29uZmRlZnMu aC4gICovCnwgCnwgLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv aWQgYW4gZXJyb3IuCnwgICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJl dHVybiB0eXBlIG9mIGEgR0NDCnwgICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJv dG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZkZWYgX19jcGx1c3BsdXMKfCBleHRl cm4gIkMiCnwgI2VuZGlmCnwgY2hhciBkbGRfbGluayAoKTsKfCBpbnQKfCBtYWluICgpCnwgewp8 IHJldHVybiBkbGRfbGluayAoKTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3Vs dDogbm8KOjQyMjA6IGNoZWNraW5nIHdoZXRoZXIgc3RyaXBwaW5nIGxpYnJhcmllcyBpcyBwb3Nz aWJsZQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgaWYgbGlidG9vbCBzdXBwb3J0 cyBzaGFyZWQgbGlicmFyaWVzCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyB3aGV0 aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNo ZWNraW5nIHdoZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllcwo6NDIyMDogcmVzdWx0OiB5 ZXMKOjQyMjA6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMrKyBwcmVwcm9jZXNzb3IKOjQyMjA6 IGcrKyAtRSAgY29uZnRlc3QuY3BwCjo0MjIwOiAkPyA9IDAKOjQyMjA6IGcrKyAtRSAgY29uZnRl c3QuY3BwCjo0MjIwOiAkPyA9IDAKOjQyMjA6IC9saWIvY3BwICBjb25mdGVzdC5jcHAKOjQyMjA6 ICQ/ID0gMAo6NDIyMDogL2xpYi9jcHAgIGNvbmZ0ZXN0LmNwcAo6NDIyMDogJD8gPSAwCjo0MjIw OiByZXN1bHQ6IC9saWIvY3BwCjo0MjIwOiAvbGliL2NwcCAgY29uZnRlc3QuY3BwCjo0MjIwOiAk PyA9IDAKOjQyMjA6IC9saWIvY3BwICBjb25mdGVzdC5jcHAKOjQyMjA6ICQ/ID0gMAo6NDIyMDog ZXJyb3I6IGluIGAvaG9tZS96b3BvbGlzNC9nY2ovbGliamF2YSc6Cjo0MjIwOiBlcnJvcjogQysr IHByZXByb2Nlc3NvciAiL2xpYi9jcHAiIGZhaWxzIHNhbml0eSBjaGVjawpTZWUgYGNvbmZpZy5s b2cnIGZvciBtb3JlIGRldGFpbHMKOjQyMjA6IGNoZWNraW5nIHdoZXRoZXIgdGhlIGcrKyBsaW5r ZXIgKC91c3IvYmluL2xkKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzCjo0MjIwOiByZXN1bHQ6 IHllcwo6NDIyMDogZysrIC1jICAgY29uZnRlc3QuY3BwID4mNQo6NDIyMDogJD8gPSAwCjo0MjIw OiBjaGVja2luZyBmb3IgZysrIG9wdGlvbiB0byBwcm9kdWNlIFBJQwo6NDIyMDogcmVzdWx0OiAg LURQSUMKOjQyMjA6IGNoZWNraW5nIGlmIGcrKyBQSUMgZmxhZyAgLURQSUMgd29ya3MKOjE1NzY4 OiBnKysgLWMgICAgLURQSUMgLURQSUMgY29uZnRlc3QuY3BwID4mNQo6MTU3NzI6ICQ/ID0gMAo6 NDIyMDogcmVzdWx0OiB5ZXMKOjQyMjA6IGNoZWNraW5nIGlmIGcrKyBzdGF0aWMgZmxhZyAgd29y a3MKOjQyMjA6IHJlc3VsdDogeWVzCjo0MjIwOiBjaGVja2luZyBpZiBnKysgc3VwcG9ydHMgLWMg LW8gZmlsZS5vCjoxNTg2NzogZysrIC1jICAgLW8gb3V0L2NvbmZ0ZXN0Mi5vIGNvbmZ0ZXN0LmNw cCA+JjUKOjE1ODcxOiAkPyA9IDAKOjQyMjA6IHJlc3VsdDogeWVzCjo0MjIwOiBjaGVja2luZyBp ZiBnKysgc3VwcG9ydHMgLWMgLW8gZmlsZS5vCjo0MjIwOiByZXN1bHQ6IHllcwo6NDIyMDogY2hl Y2tpbmcgd2hldGhlciB0aGUgZysrIGxpbmtlciAoL3Vzci9iaW4vbGQpIHN1cHBvcnRzIHNoYXJl ZCBsaWJyYXJpZXMKOjQyMjA6IHJlc3VsdDogeWVzCjo0MjIwOiBjaGVja2luZyBkeW5hbWljIGxp bmtlciBjaGFyYWN0ZXJpc3RpY3MKOjQyMjA6IHJlc3VsdDogR05VL0xpbnV4IGxkLnNvCjo0MjIw OiBjaGVja2luZyBob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zCjo0 MjIwOiByZXN1bHQ6IHVuc3VwcG9ydGVkCjo0MjIwOiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxl IG9mICAtQi9ob21lL3pvcG9saXM0L2djai9saWJqYXZhLwo6NDIyMDogcmVzdWx0OiBub25lCjo0 MjIwOiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICAtQi9ob21lL3pvcG9saXM0L2djai9s aWJqYXZhLwo6NDIyMDogcmVzdWx0OiBub25lCjo0MjIwOiBjaGVja2luZyBpZiAvaG9tZS96b3Bv bGlzNC9nY2ovY29tcGlsZSAgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucwo6MTc0 NzQ6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIC1mbm8tcnR0aSAtZm5vLWV4Y2Vw dGlvbnMgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhl YzogLWM6IG5vdCBmb3VuZAo6MTc0Nzg6ICQ/ID0gMTI3Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIw OiBjaGVja2luZyBmb3IgL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIG9wdGlvbiB0byBwcm9k dWNlIFBJQwo6NDIyMDogcmVzdWx0OiAtZlBJQwo6NDIyMDogY2hlY2tpbmcgaWYgL2hvbWUvem9w b2xpczQvZ2NqL2NvbXBpbGUgIFBJQyBmbGFnIC1mUElDIHdvcmtzCjoxNzgyMTogL2hvbWUvem9w b2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgLWZQSUMgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xp czQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6MTc4MjU6ICQ/ID0gMTI3 Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBpZiAvaG9tZS96b3BvbGlzNC9nY2ov Y29tcGlsZSAgc3RhdGljIGZsYWcgLXN0YXRpYyB3b3Jrcwo6NDIyMDogcmVzdWx0OiBubwo6NDIy MDogY2hlY2tpbmcgaWYgL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIHN1cHBvcnRzIC1jIC1v IGZpbGUubwo6MTc5MjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIC1vIG91dC9j b25mdGVzdDIubyBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzI3 OiAtYzogbm90IGZvdW5kCjoxNzkyNDogJD8gPSAxMjcKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6 IGNoZWNraW5nIGlmIC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICBzdXBwb3J0cyAtYyAtbyBm aWxlLm8KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIHdoZXRoZXIgdGhlIC9ob21l L3pvcG9saXM0L2djai9jb21waWxlICBsaW5rZXIgKC91c3IvYmluL2xkKSBzdXBwb3J0cyBzaGFy ZWQgbGlicmFyaWVzCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBob3cgdG8gaGFy ZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zCjo0MjIwOiByZXN1bHQ6IHVuc3VwcG9y dGVkCjo0MjIwOiBjaGVja2luZyB3aGV0aGVyIHRoZSBjb21waWxlciBpcyBjb25maWd1cmVkIGZv ciBzZXRqbXAvbG9uZ2ptcCBleGNlcHRpb25zCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29t cGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2 OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdh czoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwg I2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJ T04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVy c2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVm aW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUg VkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxE X0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pf UFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JK RElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRF UlBSRVRFUiAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpZmRlZiBfX1VTSU5HX1NKTEpf RVhDRVBUSU9OU19fCnwgICAgICAgICAgIHRoaXMgd2lsbCBmYWlsCnwgICAgICAgICAgICNlbmRp Zgp8IGludAp8IG1haW4gKCkKfCB7CnwgaW50IGk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0 MjIwOiByZXN1bHQ6IHllcwpjb25mdGVzdC5jOjIwOjEwOiBmYXRhbCBlcnJvcjogc3lzL2NvbmZp Zy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CiAgIDIwIHwgI2luY2x1ZGUgPHN5cy9jb25m aWcuaD4KICAgICAgfCAgICAgICAgICBefn5+fn5+fn5+fn5+fgpjb21waWxhdGlvbiB0ZXJtaW5h dGVkLgo6NDIyMDogY2hlY2tpbmcgZm9yIFgKOjQyMjA6IC9saWIvY3BwICBjb25mdGVzdC5jCjo0 MjIwOiAkPyA9IDAKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRl ciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAg LW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAtbFgxMSAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9j b21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVk IHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAi bGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEi CnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQ QVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVm aW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2Rl ZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAj ZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5B QkxFX0pWTVBJIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPFgxMS9YbGli Lmg+CnwgaW50CnwgbWFpbiAoKQp8IHsKfCBYcm1Jbml0aWFsaXplICgpCnwgICA7CnwgICByZXR1 cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgLS1uby1tZXJn ZS1leGlkeC1lbnRyaWVzCjo0MjIwOiBlcnJvcjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQg YWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGUgIC1vIGNvbmZ0ZXN0ICAgIC1XbCwtLW5vLW1lcmdlLWV4aWR4LWVudHJpZXMgY29uZnRlc3Qu YyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91 bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmgg Ki8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFS TkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQi CnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIK fCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVu dXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNk ZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwi CnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVm aW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5l IFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExB WV9NSVNTSU5HIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgaW50IG1haW4odm9pZCl7IHJl dHVybiAwO30KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBnYXJiYWdlIGNv bGxlY3RvciB0byB1c2UKOjQyMjA6IHJlc3VsdDogYm9laG0KOjQyMjA6IGNoZWNraW5nIGZvciB0 aHJlYWQgbW9kZWwgdXNlZCBieSBHQ0MKOjQyMjA6IHJlc3VsdDogCjo0MjIwOiBlcnJvcjogIGlz IGFuIHVua25vd24gdGhyZWFkIHBhY2thZ2UKOjQyMjA6IGNoZWNraW5nIGZvciBzdHJlcnJvcl9y Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igc2VsZWN0Cjo0MjIwOiBlcnJv cjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLgo6 NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1vIGNvbmZ0ZXN0ICAgIGNvbmZ0ZXN0 LmMgID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90IGZv dW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5o ICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RB Uk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2Vk Igp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2Rl ZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIi CnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11 bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAj ZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2Fs Igp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2Rl ZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmlu ZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BM QVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hf U1lOQ0hST05JWkFUSU9OIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgLyogRGVmaW5lIHNl bGVjdCB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGltaXRzLmg+IGRlY2xhcmVz IHNlbGVjdC4KfCAgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4gZGVjbGFyZXMg Z2V0dGltZW9mZGF5LiAgKi8KfCAjZGVmaW5lIHNlbGVjdCBpbm5vY3VvdXNfc2VsZWN0CnwgCnwg LyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZl dyBwcm90b3R5cGVzLAp8ICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIHNlbGVjdCAo KTsgYmVsb3cuCnwgICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERD X18gaXMgZGVmaW5lZCwgc2luY2UKfCAgICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVl c3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KfCAKfCAjaWZkZWYgX19TVERDX18KfCAjIGluY2x1ZGUg PGxpbWl0cy5oPgp8ICNlbHNlCnwgIyBpbmNsdWRlIDxhc3NlcnQuaD4KfCAjZW5kaWYKfCAKfCAj dW5kZWYgc2VsZWN0CnwgCnwgLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUg dG8gYXZvaWQgYW4gZXJyb3IuCnwgICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2gg dGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCnwgICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1l bnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZkZWYgX19jcGx1c3BsdXMK fCBleHRlcm4gIkMiCnwgI2VuZGlmCnwgY2hhciBzZWxlY3QgKCk7CnwgLyogVGhlIEdOVSBDIGxp YnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwp8ICAg ICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxs eSBuYW1lZAp8ICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBu YW1lIGlzIGFuIGFsaWFzLiAgKi8KfCAjaWYgZGVmaW5lZCBfX3N0dWJfc2VsZWN0IHx8IGRlZmlu ZWQgX19zdHViX19fc2VsZWN0CnwgY2hva2UgbWUKfCAjZW5kaWYKfCAKfCBpbnQKfCBtYWluICgp Cnwgewp8IHJldHVybiBzZWxlY3QgKCk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiBy ZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZnN0YXQKOjQyMjA6IGVycm9yOiBMaW5rIHRl c3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9t ZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgPiY1Ci9o b21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6 ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVm aW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGli amF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmlu ZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tB R0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5l IFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdU X1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmlu ZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1df UFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJG RkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5H IDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTkla QVRJT04gMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAvKiBEZWZpbmUgZnN0YXQgdG8gYW4g aW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0cy5oPiBkZWNsYXJlcyBmc3RhdC4KfCAg ICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5 LiAgKi8KfCAjZGVmaW5lIGZzdGF0IGlubm9jdW91c19mc3RhdAp8IAp8IC8qIFN5c3RlbSBoZWFk ZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywK fCAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBmc3RhdCAoKTsgYmVsb3cuCnwgICAg IFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwg c2luY2UKfCAgICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGls ZXJzLiAgKi8KfCAKfCAjaWZkZWYgX19TVERDX18KfCAjIGluY2x1ZGUgPGxpbWl0cy5oPgp8ICNl bHNlCnwgIyBpbmNsdWRlIDxhc3NlcnQuaD4KfCAjZW5kaWYKfCAKfCAjdW5kZWYgZnN0YXQKfCAK fCAvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv ci4KfCAgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg b2YgYSBHQ0MKfCAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAj ZW5kaWYKfCBjaGFyIGZzdGF0ICgpOwp8IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhp cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlzIGZhaWwg d2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAgICAgc29t ZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4g ICovCnwgI2lmIGRlZmluZWQgX19zdHViX2ZzdGF0IHx8IGRlZmluZWQgX19zdHViX19fZnN0YXQK fCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIGZzdGF0 ICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIG9wZW4KOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBh ZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGls ZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21w aWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHBy b2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGli amF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tB R0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGli amF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZh Igp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwg I2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRI X1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5l IExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmlu ZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVm aW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxF X0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9F SE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8IC8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KfCAvKiBEZWZpbmUgb3BlbiB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4g Y2FzZSA8bGltaXRzLmg+IGRlY2xhcmVzIG9wZW4uCnwgICAgRm9yIGV4YW1wbGUsIEhQLVVYIDEx aSA8bGltaXRzLmg+IGRlY2xhcmVzIGdldHRpbWVvZmRheS4gICovCnwgI2RlZmluZSBvcGVuIGlu bm9jdW91c19vcGVuCnwgCnwgLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3Jv cyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAp8ICAgICB3aGljaCBjYW4gY29uZmxpY3Qg d2l0aCBjaGFyIG9wZW4gKCk7IGJlbG93Lgp8ICAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNz ZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCnwgICAgIDxsaW1pdHMuaD4gZXhp c3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCnwgCnwgI2lmZGVmIF9fU1RE Q19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4KfCAjZWxzZQp8ICMgaW5jbHVkZSA8YXNzZXJ0Lmg+ CnwgI2VuZGlmCnwgCnwgI3VuZGVmIG9wZW4KfCAKfCAvKiBPdmVycmlkZSBhbnkgR0NDIGludGVy bmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAgICBVc2UgY2hhciBiZWNhdXNlIGlu dCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKfCAgICBidWlsdGluIGFuZCB0 aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwp8ICNpZmRl ZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYKfCBjaGFyIG9wZW4gKCk7CnwgLyog VGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1w bGVtZW50cwp8ICAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25z IGFyZSBhY3R1YWxseSBuYW1lZAp8ICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQg dGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KfCAjaWYgZGVmaW5lZCBfX3N0dWJfb3Bl biB8fCBkZWZpbmVkIF9fc3R1Yl9fX29wZW4KfCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGludAp8 IG1haW4gKCkKfCB7CnwgcmV0dXJuIG9wZW4gKCk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0 MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZnN5bmMKOjQyMjA6IHJlc3VsdDog bm8KOjQyMjA6IGNoZWNraW5nIGZvciBzbGVlcAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIG9wZW5kaXIKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dl ZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29t cGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9j b21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVk IHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAi bGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEi CnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQ QVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVm aW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2Rl ZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAj ZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5B QkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVf Qk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8IC8qIGVuZCBj b25mZGVmcy5oLiAgKi8KfCAvKiBEZWZpbmUgb3BlbmRpciB0byBhbiBpbm5vY3VvdXMgdmFyaWFu dCwgaW4gY2FzZSA8bGltaXRzLmg+IGRlY2xhcmVzIG9wZW5kaXIuCnwgICAgRm9yIGV4YW1wbGUs IEhQLVVYIDExaSA8bGltaXRzLmg+IGRlY2xhcmVzIGdldHRpbWVvZmRheS4gICovCnwgI2RlZmlu ZSBvcGVuZGlyIGlubm9jdW91c19vcGVuZGlyCnwgCnwgLyogU3lzdGVtIGhlYWRlciB0byBkZWZp bmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAp8ICAgICB3aGlj aCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIG9wZW5kaXIgKCk7IGJlbG93Lgp8ICAgICBQcmVmZXIg PGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCnwg ICAgIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICov CnwgCnwgI2lmZGVmIF9fU1REQ19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4KfCAjZWxzZQp8ICMg aW5jbHVkZSA8YXNzZXJ0Lmg+CnwgI2VuZGlmCnwgCnwgI3VuZGVmIG9wZW5kaXIKfCAKfCAvKiBP dmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAg ICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBH Q0MKfCAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYK fCBjaGFyIG9wZW5kaXIgKCk7CnwgLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZv ciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwp8ICAgICB0byBhbHdheXMgZmFpbCB3aXRo IEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAp8ICAgICBzb21ldGhp bmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8K fCAjaWYgZGVmaW5lZCBfX3N0dWJfb3BlbmRpciB8fCBkZWZpbmVkIF9fc3R1Yl9fX29wZW5kaXIK fCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIG9wZW5k aXIgKCk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBj aGVja2luZyBmb3IgbG9jYWx0aW1lX3IKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5n IGZvciBnZXRwd3VpZF9yCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZ2V0 Y3dkCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgYWNjZXNzCjo0MjIwOiBy ZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igc3RhdAo6NDIyMDogcmVzdWx0OiBubwo6NDIy MDogY2hlY2tpbmcgZm9yIGxzdGF0Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBm b3IgbWtkaXIKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciByZW5hbWUKOjQy MjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBybWRpcgo6NDIyMDogcmVzdWx0OiBu bwo6NDIyMDogY2hlY2tpbmcgZm9yIHVubGluawo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIHV0aW1lCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgY2ht b2QKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciByZWFkbGluawo6NDIyMDog ZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxF Uy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25m dGVzdC5jICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5v dCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRl ZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FH RV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVu dXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8 ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VS TCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNp b24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgi CnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9s b2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8 ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNk ZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9E SVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9I QVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8IC8qIERlZmlu ZSByZWFkbGluayB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGltaXRzLmg+IGRl Y2xhcmVzIHJlYWRsaW5rLgp8ICAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxpbWl0cy5oPiBk ZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLwp8ICNkZWZpbmUgcmVhZGxpbmsgaW5ub2N1b3VzX3Jl YWRsaW5rCnwgCnwgLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQg aG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAp8ICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBj aGFyIHJlYWRsaW5rICgpOyBiZWxvdy4KfCAgICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2Vy dC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQp8ICAgICA8bGltaXRzLmg+IGV4aXN0 cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwp8IAp8ICNpZmRlZiBfX1NURENf Xwp8ICMgaW5jbHVkZSA8bGltaXRzLmg+CnwgI2Vsc2UKfCAjIGluY2x1ZGUgPGFzc2VydC5oPgp8 ICNlbmRpZgp8IAp8ICN1bmRlZiByZWFkbGluawp8IAp8IC8qIE92ZXJyaWRlIGFueSBHQ0MgaW50 ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgp8ICAgIFVzZSBjaGFyIGJlY2F1c2Ug aW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwp8ICAgIGJ1aWx0aW4gYW5k IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCnwgI2lm ZGVmIF9fY3BsdXNwbHVzCnwgZXh0ZXJuICJDIgp8ICNlbmRpZgp8IGNoYXIgcmVhZGxpbmsgKCk7 CnwgLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2gg aXQgaW1wbGVtZW50cwp8ICAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVu Y3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAp8ICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KfCAjaWYgZGVmaW5lZCBfX3N0 dWJfcmVhZGxpbmsgfHwgZGVmaW5lZCBfX3N0dWJfX19yZWFkbGluawp8IGNob2tlIG1lCnwgI2Vu ZGlmCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsKfCByZXR1cm4gcmVhZGxpbmsgKCk7CnwgICA7Cnwg ICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igbmxf bGFuZ2luZm8KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBzZXRsb2NhbGUK OjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhF Q1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3Qg ICAgY29uZnRlc3QuYyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6 IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8q IGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5l IFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVy c2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVu dXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFD S0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9O ICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFS WV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVgg Ii91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5s aWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVS IDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVm aW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZp bmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAv KiBEZWZpbmUgc2V0bG9jYWxlIHRvIGFuIGlubm9jdW91cyB2YXJpYW50LCBpbiBjYXNlIDxsaW1p dHMuaD4gZGVjbGFyZXMgc2V0bG9jYWxlLgp8ICAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxp bWl0cy5oPiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLwp8ICNkZWZpbmUgc2V0bG9jYWxlIGlu bm9jdW91c19zZXRsb2NhbGUKfCAKfCAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIg bWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCnwgICAgIHdoaWNoIGNhbiBjb25m bGljdCB3aXRoIGNoYXIgc2V0bG9jYWxlICgpOyBiZWxvdy4KfCAgICAgUHJlZmVyIDxsaW1pdHMu aD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQp8ICAgICA8bGlt aXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwp8IAp8ICNp ZmRlZiBfX1NURENfXwp8ICMgaW5jbHVkZSA8bGltaXRzLmg+CnwgI2Vsc2UKfCAjIGluY2x1ZGUg PGFzc2VydC5oPgp8ICNlbmRpZgp8IAp8ICN1bmRlZiBzZXRsb2NhbGUKfCAKfCAvKiBPdmVycmlk ZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAgICBVc2Ug Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKfCAg ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYKfCBjaGFy IHNldGxvY2FsZSAoKTsKfCAvKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1 bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCnwgICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5P U1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCnwgICAgIHNvbWV0aGluZyBz dGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwp8ICNp ZiBkZWZpbmVkIF9fc3R1Yl9zZXRsb2NhbGUgfHwgZGVmaW5lZCBfX3N0dWJfX19zZXRsb2NhbGUK fCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIHNldGxv Y2FsZSAoKTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6 IGNoZWNraW5nIGZvciBpbmV0X3B0b24KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5n IGZvciB1bmFtZQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGluZXRfbnRv YQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGdldHJsaW1pdAo6NDIyMDog cmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHNpZ2FjdGlvbgo6NDIyMDogcmVzdWx0OiBu bwo6NDIyMDogY2hlY2tpbmcgZm9yIGZ0cnVuY2F0ZQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDog Y2hlY2tpbmcgZm9yIG1tYXAKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBn ZXRpZmFkZHJzCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgaW5ldF9hdG9u Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgaW5ldF9hZGRyCjo0MjIwOiBy ZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgdW5pc3RkLmgKOjQyMjA6IHJlc3VsdDogbm8K OjQyMjA6IGNoZWNraW5nIGZvciBkbGZjbi5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVj a2luZyBzeXMvcmVzb3VyY2UuaCB1c2FiaWxpdHkKOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9j b21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAz MDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0g d2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVS U0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2 ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmlu ZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAi TERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdD Sl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9P QkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElO VEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJ IDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0Mg MQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8IC8qIGVuZCBjb25mZGVmcy5o LiAgKi8KfCAjaW5jbHVkZSA8c3RkaW8uaD4KfCAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAp8ICMg aW5jbHVkZSA8c3lzL3R5cGVzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAp8 ICMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KfCAjZW5kaWYKfCAjaWZkZWYgU1REQ19IRUFERVJTCnwg IyBpbmNsdWRlIDxzdGRsaWIuaD4KfCAjIGluY2x1ZGUgPHN0ZGRlZi5oPgp8ICNlbHNlCnwgIyBp ZmRlZiBIQVZFX1NURExJQl9ICnwgIyAgaW5jbHVkZSA8c3RkbGliLmg+CnwgIyBlbmRpZgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR19ICnwgIyBpZiAhZGVmaW5lZCBTVERDX0hFQURFUlMg JiYgZGVmaW5lZCBIQVZFX01FTU9SWV9ICnwgIyAgaW5jbHVkZSA8bWVtb3J5Lmg+CnwgIyBlbmRp Zgp8ICMgaW5jbHVkZSA8c3RyaW5nLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RSSU5HU19I CnwgIyBpbmNsdWRlIDxzdHJpbmdzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfSU5UVFlQRVNf SAp8ICMgaW5jbHVkZSA8aW50dHlwZXMuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVERJTlRf SAp8ICMgaW5jbHVkZSA8c3RkaW50Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfVU5JU1REX0gK fCAjIGluY2x1ZGUgPHVuaXN0ZC5oPgp8ICNlbmRpZgp8ICNpbmNsdWRlIDxzeXMvcmVzb3VyY2Uu aD4KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIHN5cy9yZXNvdXJjZS5oIHByZXNl bmNlCjo0MjIwOiAvbGliL2NwcCAgY29uZnRlc3QuYwo6NDIyMDogJD8gPSAwCjo0MjIwOiByZXN1 bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igc3lzL3Jlc291cmNlLmgKOjQyMjA6IHJlc3VsdDog bm8KOjQyMjA6IGNoZWNraW5nIGZvciBkbGFkZHIgaW4gLWxkbAo6NDIyMDogZXJyb3I6IExpbmsg dGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9o b21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25mdGVzdC5jIC1sZGwg ICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3Vu ZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAq Lwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJO QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIK fCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZp bmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8 ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2Rl ZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIK fCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZp bmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUg VVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZ X01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZ TkNIUk9OSVpBVElPTiAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8IAp8IC8qIE92ZXJyaWRl IGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgp8ICAgIFVzZSBj aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwp8ICAg IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs eS4gICovCnwgI2lmZGVmIF9fY3BsdXNwbHVzCnwgZXh0ZXJuICJDIgp8ICNlbmRpZgp8IGNoYXIg ZGxhZGRyICgpOwp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIGRsYWRkciAoKTsKfCAgIDsK fCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBk bGFkZHIgaW4gLWxkbGQKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBh ZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGls ZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAtbGRsZCAgID4mNQovaG9tZS96b3BvbGlzNC9n Y2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZh aWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05B TUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJ TkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJq YXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NI TElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwg I2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8 ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAx CnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5l IEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBI QVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAvKiBl bmQgY29uZmRlZnMuaC4gICovCnwgCnwgLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90 b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCnwgICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCnwgICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMg YXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZkZWYgX19jcGx1 c3BsdXMKfCBleHRlcm4gIkMiCnwgI2VuZGlmCnwgY2hhciBkbGFkZHIgKCk7CnwgaW50CnwgbWFp biAoKQp8IHsKfCByZXR1cm4gZGxhZGRyICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIy MDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDCi9ob21lL3pv cG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1wcmludC1wcm9nLW5hbWU9bGQ6IG5vdCBm b3VuZAo6NDIyMDogcmVzdWx0OiAvdXNyL2Jpbi9sZAo6NDIyMDogY2hlY2tpbmcgaWYgdGhlIGxp bmtlciAoL3Vzci9iaW4vbGQpIGlzIEdOVSBsZAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbgo6NDIyMDogcmVzdWx0OiBk b25lCjo0MjIwOiBjaGVja2luZyBmb3IgaWNvbnYKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFy ZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3Bv bGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgIGNvbmZ0ZXN0LmMgID4mNQovaG9tZS96 b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90IGZvdW5kCjo0MjIwOiAkPyA9 IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQ QUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEi CnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFD S0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JV R1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNL QUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmlu ZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09M S0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNF X0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJF QURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEK fCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwg I2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9O IDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VM Rl9NQVBTIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGxpYi5oPgp8 ICNpbmNsdWRlIDxpY29udi5oPgp8IGludAp8IG1haW4gKCkKfCB7CnwgaWNvbnZfdCBjZCA9IGlj b252X29wZW4oIiIsIiIpOwp8ICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsK fCAgICAgICAgaWNvbnZfY2xvc2UoY2QpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDog ZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxF Uy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICAgY29u ZnRlc3QuYyAgLWxpY29udiA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhl YzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6Cnwg LyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZp bmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2 ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24t dW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQ QUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJ T04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJS QVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJ WCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAi LmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVU RVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNk ZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2Rl ZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9F WEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgLyogZW5kIGNvbmZkZWZzLmgu ICAqLwp8ICNpbmNsdWRlIDxzdGRsaWIuaD4KfCAjaW5jbHVkZSA8aWNvbnYuaD4KfCBpbnQKfCBt YWluICgpCnwgewp8IGljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKfCAgICAgICAgICBp Y29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKfCAgICAgICAgICBpY29udl9jbG9zZShjZCk7 CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vLCBjb25zaWRlciBpbnN0 YWxsaW5nIEdOVSBsaWJpY29udgo6NDIyMDogY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTCjo0MjIw OiBlcnJvcjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFC TEVTLgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1vIGNvbmZ0ZXN0ICAgIGNv bmZ0ZXN0LmMgID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzog bm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25m ZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNL QUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24t dW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQi CnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVy c2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFU SCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNy L2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8i CnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwg I2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBY X0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpW X0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwg I2RlZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwg I2luY2x1ZGUgPGxvY2FsZS5oPgp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIExDX01FU1NB R0VTCnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVj a2luZyB3aGV0aGVyIHN0cnVjdCB0bSBpcyBpbiBzeXMvdGltZS5oIG9yIHRpbWUuaAo6NDIyMDog L2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9w b2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAx MjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFD S0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8 ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tB R0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdS RVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FH RSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUg TFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJ VCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9M VERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFE X1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwg I2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNk ZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAx CnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZf TUFQUyAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K fCAjaW5jbHVkZSA8dGltZS5oPgp8IAp8IGludAp8IG1haW4gKCkKfCB7Cnwgc3RydWN0IHRtIHRt Owp8IAkJCQkgICAgIGludCAqcCA9ICZ0bS50bV9zZWM7CnwgCQkJCSAgICAgcmV0dXJuICFwOwp8 ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBzeXMvdGltZS5oCjo0MjIwOiBj aGVja2luZyBmb3Igc3RydWN0IHRtLnRtX3pvbmUKOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9j b21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAz MDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0g d2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVS U0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2 ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmlu ZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAi TERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdD Sl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9P QkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElO VEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJ IDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0Mg MQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9D X1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1f SU5fU1lTX1RJTUUgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CnwgI2luY2x1ZGUgPHN5cy90aW1lLmg+CnwgCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsK fCBzdGF0aWMgc3RydWN0IHRtIGFjX2FnZ3I7CnwgaWYgKGFjX2FnZ3IudG1fem9uZSkKfCByZXR1 cm4gMDsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9j b21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAz MDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0g d2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVS U0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2 ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmlu ZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAi TERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdD Sl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9P QkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElO VEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJ IDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0Mg MQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9D X1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1f SU5fU1lTX1RJTUUgMQp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CnwgI2luY2x1ZGUgPHN5cy90aW1lLmg+CnwgCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsK fCBzdGF0aWMgc3RydWN0IHRtIGFjX2FnZ3I7CnwgaWYgKHNpemVvZiBhY19hZ2dyLnRtX3pvbmUp CnwgcmV0dXJuIDA7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0 MjIwOiBjaGVja2luZyB3aGV0aGVyIHR6bmFtZSBpcyBkZWNsYXJlZAo6NDIyMDogL2hvbWUvem9w b2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2Nq L2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWls ZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1F ICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUg UEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5H ICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxp YmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2 YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJ QlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNk ZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAj ZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8 ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBF TkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFW RV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmlu ZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwg I2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNs dWRlIDx0aW1lLmg+CnwgCnwgaW50CnwgbWFpbiAoKQp8IHsKfCAjaWZuZGVmIHR6bmFtZQp8ICNp ZmRlZiBfX2NwbHVzcGx1cwp8ICAgKHZvaWQpIHR6bmFtZTsKfCAjZWxzZQp8ICAgKHZvaWQpIHR6 bmFtZTsKfCAjZW5kaWYKfCAjZW5kaWYKfCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6 IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciB0em5hbWUKOjQyMjA6IGVycm9yOiBMaW5r IHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAv aG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgPiY1 Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQy MjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAj ZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2Rl ZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBB Q0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVm aW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIK fCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUg QVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2Rl ZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNM T1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9M SUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNT SU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJP TklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVf UFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFW RV9ERUNMX1RaTkFNRSAwCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDx0aW1l Lmg+CnwgI2lmICFIQVZFX0RFQ0xfVFpOQU1FCnwgZXh0ZXJuIGNoYXIgKnR6bmFtZVtdOwp8ICNl bmRpZgp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIHR6bmFtZVswXVswXTsKfCAgIDsK fCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBn ZXRob3N0YnluYW1lX3IKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBh ZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGls ZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21w aWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHBy b2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGli amF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tB R0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGli amF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZh Igp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwg I2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRI X1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5l IExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmlu ZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVm aW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxF X0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9F SE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFW RV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZp bmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwgLyogZW5k IGNvbmZkZWZzLmguICAqLwp8IC8qIERlZmluZSBnZXRob3N0YnluYW1lX3IgdG8gYW4gaW5ub2N1 b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0cy5oPiBkZWNsYXJlcyBnZXRob3N0YnluYW1lX3Iu CnwgICAgRm9yIGV4YW1wbGUsIEhQLVVYIDExaSA8bGltaXRzLmg+IGRlY2xhcmVzIGdldHRpbWVv ZmRheS4gICovCnwgI2RlZmluZSBnZXRob3N0YnluYW1lX3IgaW5ub2N1b3VzX2dldGhvc3RieW5h bWVfcgp8IAp8IC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhv cGVmdWxseSBmZXcgcHJvdG90eXBlcywKfCAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hh ciBnZXRob3N0YnluYW1lX3IgKCk7IGJlbG93Lgp8ICAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8 YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCnwgICAgIDxsaW1pdHMuaD4g ZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCnwgCnwgI2lmZGVmIF9f U1REQ19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4KfCAjZWxzZQp8ICMgaW5jbHVkZSA8YXNzZXJ0 Lmg+CnwgI2VuZGlmCnwgCnwgI3VuZGVmIGdldGhvc3RieW5hbWVfcgp8IAp8IC8qIE92ZXJyaWRl IGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgp8ICAgIFVzZSBj aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwp8ICAg IGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBs eS4gICovCnwgI2lmZGVmIF9fY3BsdXNwbHVzCnwgZXh0ZXJuICJDIgp8ICNlbmRpZgp8IGNoYXIg Z2V0aG9zdGJ5bmFtZV9yICgpOwp8IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBm b3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlzIGZhaWwgd2l0 aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAgICAgc29tZXRo aW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICov CnwgI2lmIGRlZmluZWQgX19zdHViX2dldGhvc3RieW5hbWVfciB8fCBkZWZpbmVkIF9fc3R1Yl9f X2dldGhvc3RieW5hbWVfcgp8IGNob2tlIG1lCnwgI2VuZGlmCnwgCnwgaW50CnwgbWFpbiAoKQp8 IHsKfCByZXR1cm4gZ2V0aG9zdGJ5bmFtZV9yICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6 NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGdldGhvc3RuYW1lCjo0MjIwOiBl cnJvcjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVT Lgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1vIGNvbmZ0ZXN0ICAgIGNvbmZ0 ZXN0LmMgID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90 IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVm cy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdF X1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwg I2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJM ICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lv bi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIK fCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xv Y2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwg I2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2Rl ZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJ U1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hB U0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2Rl ZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAj ZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAvKiBE ZWZpbmUgZ2V0aG9zdG5hbWUgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0 cy5oPiBkZWNsYXJlcyBnZXRob3N0bmFtZS4KfCAgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxs aW1pdHMuaD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KfCAjZGVmaW5lIGdldGhvc3RuYW1l IGlubm9jdW91c19nZXRob3N0bmFtZQp8IAp8IC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9f c3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKfCAgICAgd2hpY2ggY2Fu IGNvbmZsaWN0IHdpdGggY2hhciBnZXRob3N0bmFtZSAoKTsgYmVsb3cuCnwgICAgIFByZWZlciA8 bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKfCAg ICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLiAgKi8K fCAKfCAjaWZkZWYgX19TVERDX18KfCAjIGluY2x1ZGUgPGxpbWl0cy5oPgp8ICNlbHNlCnwgIyBp bmNsdWRlIDxhc3NlcnQuaD4KfCAjZW5kaWYKfCAKfCAjdW5kZWYgZ2V0aG9zdG5hbWUKfCAKfCAv KiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4K fCAgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg YSBHQ0MKfCAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg c3RpbGwgYXBwbHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5k aWYKfCBjaGFyIGdldGhvc3RuYW1lICgpOwp8IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMg dGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlzIGZh aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAgICAg c29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlh cy4gICovCnwgI2lmIGRlZmluZWQgX19zdHViX2dldGhvc3RuYW1lIHx8IGRlZmluZWQgX19zdHVi X19fZ2V0aG9zdG5hbWUKfCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGludAp8IG1haW4gKCkKfCB7 CnwgcmV0dXJuIGdldGhvc3RuYW1lICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDog cmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHVzbGVlcAo6NDIyMDogZXJyb3I6IExpbmsg dGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9o b21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25mdGVzdC5jICA+JjUK L2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIy MDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNk ZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFD S0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZp bmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8 ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBB V1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVm aW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xP V19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJ QkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJ TkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9O SVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9Q Uk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZF X0RFQ0xfVFpOQU1FIDAKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgLyogRGVmaW5lIHVzbGVl cCB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGltaXRzLmg+IGRlY2xhcmVzIHVz bGVlcC4KfCAgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4gZGVjbGFyZXMgZ2V0 dGltZW9mZGF5LiAgKi8KfCAjZGVmaW5lIHVzbGVlcCBpbm5vY3VvdXNfdXNsZWVwCnwgCnwgLyog U3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBw cm90b3R5cGVzLAp8ICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIHVzbGVlcCAoKTsg YmVsb3cuCnwgICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18g aXMgZGVmaW5lZCwgc2luY2UKfCAgICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3Rh bmRpbmcgY29tcGlsZXJzLiAgKi8KfCAKfCAjaWZkZWYgX19TVERDX18KfCAjIGluY2x1ZGUgPGxp bWl0cy5oPgp8ICNlbHNlCnwgIyBpbmNsdWRlIDxhc3NlcnQuaD4KfCAjZW5kaWYKfCAKfCAjdW5k ZWYgdXNsZWVwCnwgCnwgLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8g YXZvaWQgYW4gZXJyb3IuCnwgICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhl IHJldHVybiB0eXBlIG9mIGEgR0NDCnwgICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZkZWYgX19jcGx1c3BsdXMKfCBl eHRlcm4gIkMiCnwgI2VuZGlmCnwgY2hhciB1c2xlZXAgKCk7CnwgLyogVGhlIEdOVSBDIGxpYnJh cnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwp8ICAgICB0 byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBu YW1lZAp8ICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1l IGlzIGFuIGFsaWFzLiAgKi8KfCAjaWYgZGVmaW5lZCBfX3N0dWJfdXNsZWVwIHx8IGRlZmluZWQg X19zdHViX19fdXNsZWVwCnwgY2hva2UgbWUKfCAjZW5kaWYKfCAKfCBpbnQKfCBtYWluICgpCnwg ewp8IHJldHVybiB1c2xlZXAgKCk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1 bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5Cjo0MjIwOiByZXN1bHQ6IG5v Cjo0MjIwOiBjaGVja2luZyBmb3IgdGltZQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tp bmcgZm9yIGZ0aW1lCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBlcnJvcjogbm8gZnVuY3Rpb24g Zm91bmQgdG8gZ2V0IHRoZSB0aW1lCjo0MjIwOiBjaGVja2luZyBmb3IgbWVtbW92ZQo6NDIyMDog ZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxF Uy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25m dGVzdC5jICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5v dCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRl ZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FH RV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVu dXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8 ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VS TCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNp b24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgi CnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9s b2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8 ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNk ZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9E SVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9I QVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNk ZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwg I2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgLyog RGVmaW5lIG1lbW1vdmUgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0cy5o PiBkZWNsYXJlcyBtZW1tb3ZlLgp8ICAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxpbWl0cy5o PiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLwp8ICNkZWZpbmUgbWVtbW92ZSBpbm5vY3VvdXNf bWVtbW92ZQp8IAp8IC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5k IGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKfCAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGgg Y2hhciBtZW1tb3ZlICgpOyBiZWxvdy4KfCAgICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2Vy dC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQp8ICAgICA8bGltaXRzLmg+IGV4aXN0 cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwp8IAp8ICNpZmRlZiBfX1NURENf Xwp8ICMgaW5jbHVkZSA8bGltaXRzLmg+CnwgI2Vsc2UKfCAjIGluY2x1ZGUgPGFzc2VydC5oPgp8 ICNlbmRpZgp8IAp8ICN1bmRlZiBtZW1tb3ZlCnwgCnwgLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCnwgICAgVXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCnwgICAgYnVpbHRpbiBhbmQg dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZk ZWYgX19jcGx1c3BsdXMKfCBleHRlcm4gIkMiCnwgI2VuZGlmCnwgY2hhciBtZW1tb3ZlICgpOwp8 IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0 IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0 aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18g YW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCnwgI2lmIGRlZmluZWQgX19zdHVi X21lbW1vdmUgfHwgZGVmaW5lZCBfX3N0dWJfX19tZW1tb3ZlCnwgY2hva2UgbWUKfCAjZW5kaWYK fCAKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBtZW1tb3ZlICgpOwp8ICAgOwp8ICAgcmV0 dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIG1lbWNweQo6 NDIyMDogZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVD VVRBQkxFUy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAg ICBjb25mdGVzdC5jICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzog LW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyog Y29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUg UEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJz aW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNL QUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04g InZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZ X1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAi L3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxp YnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIg MQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZp bmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmlu ZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUg MQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElN RSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAvKiBlbmQgY29uZmRlZnMuaC4gICov CnwgLyogRGVmaW5lIG1lbWNweSB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGlt aXRzLmg+IGRlY2xhcmVzIG1lbWNweS4KfCAgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1p dHMuaD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KfCAjZGVmaW5lIG1lbWNweSBpbm5vY3Vv dXNfbWVtY3B5CnwgCnwgLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBh bmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAp8ICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0 aCBjaGFyIG1lbWNweSAoKTsgYmVsb3cuCnwgICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3Nl cnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKfCAgICAgPGxpbWl0cy5oPiBleGlz dHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KfCAKfCAjaWZkZWYgX19TVERD X18KfCAjIGluY2x1ZGUgPGxpbWl0cy5oPgp8ICNlbHNlCnwgIyBpbmNsdWRlIDxhc3NlcnQuaD4K fCAjZW5kaWYKfCAKfCAjdW5kZWYgbWVtY3B5CnwgCnwgLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCnwgICAgVXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCnwgICAgYnVpbHRpbiBhbmQg dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KfCAjaWZk ZWYgX19jcGx1c3BsdXMKfCBleHRlcm4gIkMiCnwgI2VuZGlmCnwgY2hhciBtZW1jcHkgKCk7Cnwg LyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQg aW1wbGVtZW50cwp8ICAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rp b25zIGFyZSBhY3R1YWxseSBuYW1lZAp8ICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBh bmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KfCAjaWYgZGVmaW5lZCBfX3N0dWJf bWVtY3B5IHx8IGRlZmluZWQgX19zdHViX19fbWVtY3B5CnwgY2hva2UgbWUKfCAjZW5kaWYKfCAK fCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBtZW1jcHkgKCk7CnwgICA7CnwgICByZXR1cm4g MDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBlcnJvcjogbWVtY3B5IGlzIHJlcXVpcmVk Cjo0MjIwOiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwKOjQyMjA6IHJlc3VsdDogbm8KOjQy MjA6IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbGQKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3Rz IGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96 b3BvbGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAtbGRsZCAgID4m NQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90IGZvdW5kCjo0 MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwg I2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUg ImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNk ZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQ QUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2Rl ZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQi CnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5l IEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNk ZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBT TE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0Vf TElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlT U0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hS T05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZF X1BST0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhB VkVfREVDTF9UWk5BTUUgMAp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAKfCAvKiBPdmVycmlk ZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAgICBVc2Ug Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKfCAg ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYKfCBjaGFy IGRsb3BlbiAoKTsKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBkbG9wZW4gKCk7CnwgICA7 CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Ig c29ja2V0IGxpYnJhcmllcwo6NDIyMDogY2hlY2tpbmcgZm9yIGNvbm5lY3QKOjQyMjA6IGVycm9y OiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0 MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3Qu YyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91 bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmgg Ki8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFS TkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQi CnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIK fCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVu dXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNk ZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwi CnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVm aW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5l IFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExB WV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9T WU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5l IEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZp bmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8IC8qIERlZmlu ZSBjb25uZWN0IHRvIGFuIGlubm9jdW91cyB2YXJpYW50LCBpbiBjYXNlIDxsaW1pdHMuaD4gZGVj bGFyZXMgY29ubmVjdC4KfCAgICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMuaD4gZGVj bGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KfCAjZGVmaW5lIGNvbm5lY3QgaW5ub2N1b3VzX2Nvbm5l Y3QKfCAKfCAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3Bl ZnVsbHkgZmV3IHByb3RvdHlwZXMsCnwgICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIg Y29ubmVjdCAoKTsgYmVsb3cuCnwgICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4g aWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKfCAgICAgPGxpbWl0cy5oPiBleGlzdHMgZXZl biBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KfCAKfCAjaWZkZWYgX19TVERDX18KfCAj IGluY2x1ZGUgPGxpbWl0cy5oPgp8ICNlbHNlCnwgIyBpbmNsdWRlIDxhc3NlcnQuaD4KfCAjZW5k aWYKfCAKfCAjdW5kZWYgY29ubmVjdAp8IAp8IC8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwg cHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgp8ICAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1p Z2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwp8ICAgIGJ1aWx0aW4gYW5kIHRoZW4g aXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCnwgI2lmZGVmIF9f Y3BsdXNwbHVzCnwgZXh0ZXJuICJDIgp8ICNlbmRpZgp8IGNoYXIgY29ubmVjdCAoKTsKfCAvKiBU aGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBs ZW1lbnRzCnwgICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMg YXJlIGFjdHVhbGx5IG5hbWVkCnwgICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0 aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwp8ICNpZiBkZWZpbmVkIF9fc3R1Yl9jb25u ZWN0IHx8IGRlZmluZWQgX19zdHViX19fY29ubmVjdAp8IGNob2tlIG1lCnwgI2VuZGlmCnwgCnwg aW50CnwgbWFpbiAoKQp8IHsKfCByZXR1cm4gY29ubmVjdCAoKTsKfCAgIDsKfCAgIHJldHVybiAw Owp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBtYWluIGluIC1sc29j a2V0Cjo0MjIwOiBlcnJvcjogTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05P X0VYRUNVVEFCTEVTLgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1vIGNvbmZ0 ZXN0ICAgIGNvbmZ0ZXN0LmMgLWxzb2NrZXQgICA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FH RV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJq YXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEi CnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAj ZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhf VkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUg TElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5l IExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZp bmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVf SlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VI TV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZF X1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmlu ZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAvKiBlbmQg Y29uZmRlZnMuaC4gICovCnwgCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsKfCByZXR1cm4gbWFpbiAo KTsKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGZvciBhY2NlcHQKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBh ZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGls ZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgLWxzb2NrZXQgLWxuc2wgPiY1Ci9ob21lL3pv cG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0g MTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBB Q0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNL QUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVH UkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tB R0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5l IExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xL SVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0Vf TFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVB RF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8 ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAj ZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04g MQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxG X01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1Ra TkFNRSAwCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8IC8qIERlZmluZSBhY2NlcHQgdG8gYW4g aW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0cy5oPiBkZWNsYXJlcyBhY2NlcHQuCnwg ICAgRm9yIGV4YW1wbGUsIEhQLVVYIDExaSA8bGltaXRzLmg+IGRlY2xhcmVzIGdldHRpbWVvZmRh eS4gICovCnwgI2RlZmluZSBhY2NlcHQgaW5ub2N1b3VzX2FjY2VwdAp8IAp8IC8qIFN5c3RlbSBo ZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBl cywKfCAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBhY2NlcHQgKCk7IGJlbG93Lgp8 ICAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmlu ZWQsIHNpbmNlCnwgICAgIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNv bXBpbGVycy4gICovCnwgCnwgI2lmZGVmIF9fU1REQ19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4K fCAjZWxzZQp8ICMgaW5jbHVkZSA8YXNzZXJ0Lmg+CnwgI2VuZGlmCnwgCnwgI3VuZGVmIGFjY2Vw dAp8IAp8IC8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFu IGVycm9yLgp8ICAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4g dHlwZSBvZiBhIEdDQwp8ICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlw ZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCnwgI2lmZGVmIF9fY3BsdXNwbHVzCnwgZXh0ZXJuICJD Igp8ICNlbmRpZgp8IGNoYXIgYWNjZXB0ICgpOwp8IC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmlu ZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKfCAgICAgdG8gYWx3YXlz IGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKfCAg ICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBh bGlhcy4gICovCnwgI2lmIGRlZmluZWQgX19zdHViX2FjY2VwdCB8fCBkZWZpbmVkIF9fc3R1Yl9f X2FjY2VwdAp8IGNob2tlIG1lCnwgI2VuZGlmCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsKfCByZXR1 cm4gYWNjZXB0ICgpOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6 NDIyMDogY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3Rz IGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96 b3BvbGlzNC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAgID4mNQovaG9t ZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtbzogbm90IGZvdW5kCjo0MjIwOiAk PyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmlu ZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmph dmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUg UEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdF X0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQ QUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2Rl ZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9U T09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUg VVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BU SFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJ IDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAx CnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFU SU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BST0Nf U0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhBVkVfREVD TF9UWk5BTUUgMAp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAvKiBEZWZpbmUgZ2V0aG9zdGJ5 bmFtZSB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGltaXRzLmg+IGRlY2xhcmVz IGdldGhvc3RieW5hbWUuCnwgICAgRm9yIGV4YW1wbGUsIEhQLVVYIDExaSA8bGltaXRzLmg+IGRl Y2xhcmVzIGdldHRpbWVvZmRheS4gICovCnwgI2RlZmluZSBnZXRob3N0YnluYW1lIGlubm9jdW91 c19nZXRob3N0YnluYW1lCnwgCnwgLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1h Y3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAp8ICAgICB3aGljaCBjYW4gY29uZmxp Y3Qgd2l0aCBjaGFyIGdldGhvc3RieW5hbWUgKCk7IGJlbG93Lgp8ICAgICBQcmVmZXIgPGxpbWl0 cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCnwgICAgIDxs aW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCnwgCnwg I2lmZGVmIF9fU1REQ19fCnwgIyBpbmNsdWRlIDxsaW1pdHMuaD4KfCAjZWxzZQp8ICMgaW5jbHVk ZSA8YXNzZXJ0Lmg+CnwgI2VuZGlmCnwgCnwgI3VuZGVmIGdldGhvc3RieW5hbWUKfCAKfCAvKiBP dmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KfCAg ICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBH Q0MKfCAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwp8ICNpZmRlZiBfX2NwbHVzcGx1cwp8IGV4dGVybiAiQyIKfCAjZW5kaWYK fCBjaGFyIGdldGhvc3RieW5hbWUgKCk7CnwgLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0 aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwp8ICAgICB0byBhbHdheXMgZmFp bCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAp8ICAgICBz b21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFz LiAgKi8KfCAjaWYgZGVmaW5lZCBfX3N0dWJfZ2V0aG9zdGJ5bmFtZSB8fCBkZWZpbmVkIF9fc3R1 Yl9fX2dldGhvc3RieW5hbWUKfCBjaG9rZSBtZQp8ICNlbmRpZgp8IAp8IGludAp8IG1haW4gKCkK fCB7CnwgcmV0dXJuIGdldGhvc3RieW5hbWUgKCk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0 MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbG5zbAo6NDIyMDog ZXJyb3I6IExpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxF Uy4KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25m dGVzdC5jIC1sbnNsICAgID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVj OiAtbzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAv KiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZl cnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11 bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lP TiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJB UllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklY ICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIu bGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRF UiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2Rl ZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVm aW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VY RSAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19U SU1FIDEKfCAjZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8IC8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KfCAKfCAKfCBpbnQKfCBtYWluICgpCnwgewp8IHJldHVybiBtYWluICgpOwp8ICAgOwp8ICAg cmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogcmVzdWx0OiAKOjQyMjA6IGNo ZWNraW5nIGZvciBtYWluIGluIC1sZGwKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBub3Qg YWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9n Y2ovY29tcGlsZSAgLW8gY29uZnRlc3QgICAgY29uZnRlc3QuYyAtbGRsICAgPiY1Ci9ob21lL3pv cG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0g MTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBB Q0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNL QUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVH UkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tB R0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5l IExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xL SVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0Vf TFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVB RF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8 ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAj ZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04g MQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxG X01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1Ra TkFNRSAwCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8IAp8IAp8IGludAp8IG1haW4gKCkKfCB7 CnwgcmV0dXJuIG1haW4gKCk7CnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiByZXN1bHQ6 IG5vCjo0MjIwOiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICAtQi9ob21lL3pvcG9saXM0 L2djai9saWJqYXZhLwo6NDIyMDogcmVzdWx0OiBub25lCjo0MjIwOiBjaGVja2luZyBzaXplIG9m IHZvaWQgKgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3Qu YyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3Vu ZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAq Lwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJO QU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIK fCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZp bmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8 ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2Rl ZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIK fCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZp bmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUg VVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZ X01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZ TkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUg SEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmlu ZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUg PHN0ZGlvLmg+CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBl cy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9z dGF0Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGli Lmg+CnwgIyBpbmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJf SAp8ICMgIGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFW RV9TVFJJTkdfSAp8ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9N RU1PUllfSAp8ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0 cmluZy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3Ry aW5ncy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGlu dHR5cGVzLmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0 ZGludC5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlz dGQuaD4KfCAjZW5kaWYKfCBpbnQKfCBtYWluICgpCnwgewp8IHN0YXRpYyBpbnQgdGVzdF9hcnJh eSBbMSAtIDIgKiAhKCgobG9uZyBpbnQpIChzaXplb2YgKHZvaWQgKikpKSA+PSAwKV07CnwgdGVz dF9hcnJheSBbMF0gPSAwOwp8IHJldHVybiB0ZXN0X2FycmF5IFswXTsKfCAKfCAgIDsKfCAgIHJl dHVybiAwOwp8IH0KOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0 ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3Qg Zm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZz LmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVz ZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwg IiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9u LXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8 ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9j YWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAj ZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVm aW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElT UExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFT SF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVm aW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNk ZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNs dWRlIDxzdGRpby5oPgp8ICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICnwgIyBpbmNsdWRlIDxzeXMv dHlwZXMuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICnwgIyBpbmNsdWRlIDxz eXMvc3RhdC5oPgp8ICNlbmRpZgp8ICNpZmRlZiBTVERDX0hFQURFUlMKfCAjIGluY2x1ZGUgPHN0 ZGxpYi5oPgp8ICMgaW5jbHVkZSA8c3RkZGVmLmg+CnwgI2Vsc2UKfCAjIGlmZGVmIEhBVkVfU1RE TElCX0gKfCAjICBpbmNsdWRlIDxzdGRsaWIuaD4KfCAjIGVuZGlmCnwgI2VuZGlmCnwgI2lmZGVm IEhBVkVfU1RSSU5HX0gKfCAjIGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhB VkVfTUVNT1JZX0gKfCAjICBpbmNsdWRlIDxtZW1vcnkuaD4KfCAjIGVuZGlmCnwgIyBpbmNsdWRl IDxzdHJpbmcuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdTX0gKfCAjIGluY2x1ZGUg PHN0cmluZ3MuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICnwgIyBpbmNsdWRl IDxpbnR0eXBlcy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NURElOVF9ICnwgIyBpbmNsdWRl IDxzdGRpbnQuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9VTklTVERfSAp8ICMgaW5jbHVkZSA8 dW5pc3RkLmg+CnwgI2VuZGlmCnwgaW50CnwgbWFpbiAoKQp8IHsKfCBzdGF0aWMgaW50IHRlc3Rf YXJyYXkgWzEgLSAyICogISgoKGxvbmcgaW50KSAoc2l6ZW9mICh2b2lkICopKSkgPCAwKV07Cnwg dGVzdF9hcnJheSBbMF0gPSAwOwp8IHJldHVybiB0ZXN0X2FycmF5IFswXTsKfCAKfCAgIDsKfCAg IHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogMAo6NDIyMDogY2hlY2tpbmcgd2hldGhlciBi eXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbgo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjog ZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9O ICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNp b24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZF UlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9M SUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BS RUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJ UiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQ UkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8 ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwg I2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VM Rl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9T WVNfVElNRSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAjZGVmaW5lIFNJWkVPRl9W T0lEX1AgMAp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaWZuZGVmIF9fQVBQTEVfQ0NfXwp8 IAkgICAgICAgbm90IGEgdW5pdmVyc2FsIGNhcGFibGUgY29tcGlsZXIKfCAJICAgICAjZW5kaWYK fCAJICAgICB0eXBlZGVmIGludCBkdW1teTsKfCAKOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9j b21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAz MDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0g d2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVS U0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2 ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmlu ZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAi TERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdD Sl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9P QkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElO VEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJ IDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0Mg MQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9D X1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1f SU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwgI2RlZmluZSBTSVpF T0ZfVk9JRF9QIDAKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN5cy90eXBl cy5oPgp8IAkgICAgICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KfCAKfCBpbnQKfCBtYWluICgpCnwg ewp8ICNpZiAhIChkZWZpbmVkIEJZVEVfT1JERVIgJiYgZGVmaW5lZCBCSUdfRU5ESUFOIAkJICAg ICAmJiBkZWZpbmVkIExJVFRMRV9FTkRJQU4gJiYgQllURV9PUkRFUiAmJiBCSUdfRU5ESUFOIAkJ ICAgICAmJiBMSVRUTEVfRU5ESUFOKQp8IAkgICAgICBib2d1cyBlbmRpYW4gbWFjcm9zCnwgCSAg ICAgI2VuZGlmCnwgCnwgICA7CnwgICByZXR1cm4gMDsKfCB9Cjo0MjIwOiAvaG9tZS96b3BvbGlz NC9nY2ovY29tcGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29t cGlsZTogMzA2OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBw cm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxp YmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNL QUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxp YmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2 YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8 ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFU SF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmlu ZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZp bmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2Rl ZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJM RV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JP RUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhB VkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAjZGVm aW5lIFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8ICNkZWZp bmUgU0laRU9GX1ZPSURfUCAwCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRlIDxs aW1pdHMuaD4KfCAKfCBpbnQKfCBtYWluICgpCnwgewp8ICNpZiAhIChkZWZpbmVkIF9MSVRUTEVf RU5ESUFOIHx8IGRlZmluZWQgX0JJR19FTkRJQU4pCnwgCSAgICAgIGJvZ3VzIGVuZGlhbiBtYWNy b3MKfCAJICAgICAjZW5kaWYKfCAKfCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IC9ob21l L3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0 L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3Cjog ZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0Vf TkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVm aW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NU UklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JU ICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxp YmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExf U0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIK fCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAx CnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxG IDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZp bmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5l IEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNk ZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMg MQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAw CnwgI2RlZmluZSBTSVpFT0ZfVk9JRF9QIDAKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgc2hv cnQgaW50IGFzY2lpX21tW10gPQp8IAkJICB7IDB4NDI0OSwgMHg0NzY1LCAweDZFNDQsIDB4Njk2 MSwgMHg2RTUzLCAweDc5NTMsIDAgfTsKfCAJCXNob3J0IGludCBhc2NpaV9paVtdID0KfCAJCSAg eyAweDY5NEMsIDB4NTQ1NCwgMHg2NTZDLCAweDZFNDUsIDB4Njk0NCwgMHg2RTYxLCAwIH07Cnwg CQlpbnQgdXNlX2FzY2lpIChpbnQgaSkgewp8IAkJICByZXR1cm4gYXNjaWlfbW1baV0gKyBhc2Np aV9paVtpXTsKfCAJCX0KfCAJCXNob3J0IGludCBlYmNkaWNfaWlbXSA9CnwgCQkgIHsgMHg4OUQz LCAweEUzRTMsIDB4ODU5MywgMHg5NUM1LCAweDg5QzQsIDB4OTU4MSwgMCB9Owp8IAkJc2hvcnQg aW50IGViY2RpY19tbVtdID0KfCAJCSAgeyAweEMyQzksIDB4Qzc4NSwgMHg5NUM0LCAweDg5ODEs IDB4OTVFMiwgMHhBOEUyLCAwIH07CnwgCQlpbnQgdXNlX2ViY2RpYyAoaW50IGkpIHsKfCAJCSAg cmV0dXJuIGViY2RpY19tbVtpXSArIGViY2RpY19paVtpXTsKfCAJCX0KfCAJCWV4dGVybiBpbnQg Zm9vOwp8IAp8IGludAp8IG1haW4gKCkKfCB7CnwgcmV0dXJuIHVzZV9hc2NpaSAoZm9vKSA9PSB1 c2VfZWJjZGljIChmb28pOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0OiB1 bmtub3duCjo0MjIwOiBlcnJvcjogdW5rbm93biBlbmRpYW5uZXNzCiBwcmVzZXR0aW5nIGFjX2N2 X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscAo6NDIyMDogY2hlY2tpbmcgZm9yIHVu aXN0ZC5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igc3lzL3RpbWUuaAo6 NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHN5cy90eXBlcy5oCjo0MjIwOiBy ZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgZmNudGwuaAo6NDIyMDogcmVzdWx0OiBubwo6 NDIyMDogY2hlY2tpbmcgZm9yIHN5cy9pb2N0bC5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBj aGVja2luZyBmb3Igc3lzL2ZpbGlvLmgKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5n IGZvciBzeXMvc3RhdC5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBzeXMvc2Vs ZWN0LmggdXNhYmlsaXR5Cjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLWMgICBj b25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtYzog bm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25m ZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNL QUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24t dW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQi CnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0Vf VVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVy c2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFU SCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNy L2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8i CnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwg I2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBY X0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpW X0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwg I2RlZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEK fCAjZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8ICNkZWZpbmUgU0laRU9GX1ZPSURfUCAwCnwg I2RlZmluZSBHQ0pWRVJTSU9OICIxMy4wLjAiCnwgI2RlZmluZSBKVl9WRVJTSU9OICIxLjUuMCIK fCAjZGVmaW5lIEpWX0FQSV9WRVJTSU9OICIxLjUiCnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8 ICNpbmNsdWRlIDxzdGRpby5oPgp8ICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICnwgIyBpbmNsdWRl IDxzeXMvdHlwZXMuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICnwgIyBpbmNs dWRlIDxzeXMvc3RhdC5oPgp8ICNlbmRpZgp8ICNpZmRlZiBTVERDX0hFQURFUlMKfCAjIGluY2x1 ZGUgPHN0ZGxpYi5oPgp8ICMgaW5jbHVkZSA8c3RkZGVmLmg+CnwgI2Vsc2UKfCAjIGlmZGVmIEhB VkVfU1RETElCX0gKfCAjICBpbmNsdWRlIDxzdGRsaWIuaD4KfCAjIGVuZGlmCnwgI2VuZGlmCnwg I2lmZGVmIEhBVkVfU1RSSU5HX0gKfCAjIGlmICFkZWZpbmVkIFNURENfSEVBREVSUyAmJiBkZWZp bmVkIEhBVkVfTUVNT1JZX0gKfCAjICBpbmNsdWRlIDxtZW1vcnkuaD4KfCAjIGVuZGlmCnwgIyBp bmNsdWRlIDxzdHJpbmcuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdTX0gKfCAjIGlu Y2x1ZGUgPHN0cmluZ3MuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICnwgIyBp bmNsdWRlIDxpbnR0eXBlcy5oPgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NURElOVF9ICnwgIyBp bmNsdWRlIDxzdGRpbnQuaD4KfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9VTklTVERfSAp8ICMgaW5j bHVkZSA8dW5pc3RkLmg+CnwgI2VuZGlmCnwgI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KOjQyMjA6 IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIHN5cy9zZWxlY3QuaCBwcmVzZW5jZQo6NDIyMDog L2xpYi9jcHAgIGNvbmZ0ZXN0LmMKOjQyMjA6ICQ/ID0gMAo6NDIyMDogcmVzdWx0OiBubwo6NDIy MDogY2hlY2tpbmcgZm9yIHN5cy9zZWxlY3QuaAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hl Y2tpbmcgZm9yIHN5cy9zb2NrZXQuaAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcg Zm9yIG5ldGluZXQvaW4uaAo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGFy cGEvaW5ldC5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgbmV0ZGIuaAo6 NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHB3ZC5oCjo0MjIwOiByZXN1bHQ6 IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igc3lzL2NvbmZpZy5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0 MjIwOiBjaGVja2luZyBmb3Igc3RkaW50LmgKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGZvciBsYW5naW5mby5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Ig bG9jYWxlLmgKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBkaXJlbnQuaAo6 NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgc3lzL3J3X2xvY2suaCB1c2FiaWxpdHkK OjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9o b21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6 ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVm aW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGli amF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmlu ZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tB R0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5l IFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAj ZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdU X1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmlu ZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1df UFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJG RkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5H IDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTkla QVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJP Q19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9E RUNMX1RaTkFNRSAwCnwgI2RlZmluZSBTSVpFT0ZfVk9JRF9QIDAKfCAjZGVmaW5lIEdDSlZFUlNJ T04gIjEzLjAuMCIKfCAjZGVmaW5lIEpWX1ZFUlNJT04gIjEuNS4wIgp8ICNkZWZpbmUgSlZfQVBJ X1ZFUlNJT04gIjEuNSIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGlv Lmg+CnwgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgp8 ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+ CnwgI2VuZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+Cnwg IyBpbmNsdWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8ICMg IGluY2x1ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJ TkdfSAp8ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllf SAp8ICMgIGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmluZy5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5ncy5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5cGVz Lmg+CnwgI2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGludC5o Pgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQuaD4K fCAjZW5kaWYKfCAjaW5jbHVkZSA8c3lzL3J3X2xvY2suaD4KOjQyMjA6IHJlc3VsdDogbm8KOjQy MjA6IGNoZWNraW5nIHN5cy9yd19sb2NrLmggcHJlc2VuY2UKOjQyMjA6IC9saWIvY3BwICBjb25m dGVzdC5jCmNvbmZ0ZXN0LmM6MzE6MTA6IGZhdGFsIGVycm9yOiBzeXMvcndfbG9jay5oOiBObyBz dWNoIGZpbGUgb3IgZGlyZWN0b3J5CiAgIDMxIHwgI2luY2x1ZGUgPHN5cy9yd19sb2NrLmg+CiAg ICAgIHwgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+CmNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCjo0 MjIwOiAkPyA9IDEKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNk ZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFD S0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZp bmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8 ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBB V1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVm aW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xP V19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJ QkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJ TkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9O SVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9Q Uk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZF X0RFQ0xfVFpOQU1FIDAKfCAjZGVmaW5lIFNJWkVPRl9WT0lEX1AgMAp8ICNkZWZpbmUgR0NKVkVS U0lPTiAiMTMuMC4wIgp8ICNkZWZpbmUgSlZfVkVSU0lPTiAiMS41LjAiCnwgI2RlZmluZSBKVl9B UElfVkVSU0lPTiAiMS41Igp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8c3lz L3J3X2xvY2suaD4KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBzeXMvcndf bG9jay5oCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3IgbWFnaWMuaAo6NDIy MDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGlmYWRkcnMuaAo6NDIyMDogcmVzdWx0 OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIG5ldC9pZi5oCjo0MjIwOiAvaG9tZS96b3BvbGlzNC9n Y2ovY29tcGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGls ZTogMzA2OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9n cmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmph dmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdF X1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmph dmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNk ZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9W QVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBM SUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUg TFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmlu ZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9K Vk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhN X0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVf UFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5l IFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8ICNkZWZpbmUg U0laRU9GX1ZPSURfUCAwCnwgI2RlZmluZSBHQ0pWRVJTSU9OICIxMy4wLjAiCnwgI2RlZmluZSBK Vl9WRVJTSU9OICIxLjUuMCIKfCAjZGVmaW5lIEpWX0FQSV9WRVJTSU9OICIxLjUiCnwgLyogZW5k IGNvbmZkZWZzLmguICAqLwp8IAp8ICNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAp8ICNpbmNsdWRl IDxzeXMvc29ja2V0Lmg+CnwgI2VuZGlmCnwgCnwgCnwgI2luY2x1ZGUgPG5ldC9pZi5oPgo6NDIy MDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgaW50dHlwZXMuaCB1c2FiaWxpdHkKOjQyMjA6 IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pv cG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0g MTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBB Q0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIK fCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNL QUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVH UkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tB R0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5l IExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xL SVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0Vf TFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVB RF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8 ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAj ZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04g MQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxG X01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1Ra TkFNRSAwCnwgI2RlZmluZSBTSVpFT0ZfVk9JRF9QIDAKfCAjZGVmaW5lIEdDSlZFUlNJT04gIjEz LjAuMCIKfCAjZGVmaW5lIEpWX1ZFUlNJT04gIjEuNS4wIgp8ICNkZWZpbmUgSlZfQVBJX1ZFUlNJ T04gIjEuNSIKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN0ZGlvLmg+Cnwg I2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKfCAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgp8ICNlbmRp Zgp8ICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKfCAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CnwgI2Vu ZGlmCnwgI2lmZGVmIFNURENfSEVBREVSUwp8ICMgaW5jbHVkZSA8c3RkbGliLmg+CnwgIyBpbmNs dWRlIDxzdGRkZWYuaD4KfCAjZWxzZQp8ICMgaWZkZWYgSEFWRV9TVERMSUJfSAp8ICMgIGluY2x1 ZGUgPHN0ZGxpYi5oPgp8ICMgZW5kaWYKfCAjZW5kaWYKfCAjaWZkZWYgSEFWRV9TVFJJTkdfSAp8 ICMgaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmIGRlZmluZWQgSEFWRV9NRU1PUllfSAp8ICMg IGluY2x1ZGUgPG1lbW9yeS5oPgp8ICMgZW5kaWYKfCAjIGluY2x1ZGUgPHN0cmluZy5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR1NfSAp8ICMgaW5jbHVkZSA8c3RyaW5ncy5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKfCAjIGluY2x1ZGUgPGludHR5cGVzLmg+Cnwg I2VuZGlmCnwgI2lmZGVmIEhBVkVfU1RESU5UX0gKfCAjIGluY2x1ZGUgPHN0ZGludC5oPgp8ICNl bmRpZgp8ICNpZmRlZiBIQVZFX1VOSVNURF9ICnwgIyBpbmNsdWRlIDx1bmlzdGQuaD4KfCAjZW5k aWYKfCAjaW5jbHVkZSA8aW50dHlwZXMuaD4KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNr aW5nIGludHR5cGVzLmggcHJlc2VuY2UKOjQyMjA6IC9saWIvY3BwICBjb25mdGVzdC5jCjo0MjIw OiAkPyA9IDAKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBpbnR0eXBlcy5o Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyBmb3Igc3NpemVfdAo6NDIyMDogL2hv bWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xp czQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcK OiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FH RV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0Vf U1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBP UlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAi bGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRE TF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAi Igp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERM IDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NF TEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2Rl ZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZp bmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwg I2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQ UyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1F IDAKfCAjZGVmaW5lIFNJWkVPRl9WT0lEX1AgMAp8ICNkZWZpbmUgR0NKVkVSU0lPTiAiMTMuMC4w Igp8ICNkZWZpbmUgSlZfVkVSU0lPTiAiMS41LjAiCnwgI2RlZmluZSBKVl9BUElfVkVSU0lPTiAi MS41Igp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8c3RkaW8uaD4KfCAjaWZk ZWYgSEFWRV9TWVNfVFlQRVNfSAp8ICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CnwgI2VuZGlmCnwg I2lmZGVmIEhBVkVfU1lTX1NUQVRfSAp8ICMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KfCAjZW5kaWYK fCAjaWZkZWYgU1REQ19IRUFERVJTCnwgIyBpbmNsdWRlIDxzdGRsaWIuaD4KfCAjIGluY2x1ZGUg PHN0ZGRlZi5oPgp8ICNlbHNlCnwgIyBpZmRlZiBIQVZFX1NURExJQl9ICnwgIyAgaW5jbHVkZSA8 c3RkbGliLmg+CnwgIyBlbmRpZgp8ICNlbmRpZgp8ICNpZmRlZiBIQVZFX1NUUklOR19ICnwgIyBp ZiAhZGVmaW5lZCBTVERDX0hFQURFUlMgJiYgZGVmaW5lZCBIQVZFX01FTU9SWV9ICnwgIyAgaW5j bHVkZSA8bWVtb3J5Lmg+CnwgIyBlbmRpZgp8ICMgaW5jbHVkZSA8c3RyaW5nLmg+CnwgI2VuZGlm CnwgI2lmZGVmIEhBVkVfU1RSSU5HU19ICnwgIyBpbmNsdWRlIDxzdHJpbmdzLmg+CnwgI2VuZGlm CnwgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAp8ICMgaW5jbHVkZSA8aW50dHlwZXMuaD4KfCAjZW5k aWYKfCAjaWZkZWYgSEFWRV9TVERJTlRfSAp8ICMgaW5jbHVkZSA8c3RkaW50Lmg+CnwgI2VuZGlm CnwgI2lmZGVmIEhBVkVfVU5JU1REX0gKfCAjIGluY2x1ZGUgPHVuaXN0ZC5oPgp8ICNlbmRpZgp8 IGludAp8IG1haW4gKCkKfCB7CnwgaWYgKHNpemVvZiAoc3NpemVfdCkpCnwgCSByZXR1cm4gMDsK fCAgIDsKfCAgIHJldHVybiAwOwp8IH0KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5n IGZvciBtYWdpY190Cjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLWMgICBjb25m dGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtYzogbm90 IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVm cy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdF X1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51 c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwg I2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJM ICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lv bi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIK fCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xv Y2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwg I2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2Rl ZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJ U1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hB U0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2Rl ZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAj ZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8ICNkZWZpbmUgU0laRU9GX1ZPSURfUCAwCnwgI2Rl ZmluZSBHQ0pWRVJTSU9OICIxMy4wLjAiCnwgI2RlZmluZSBKVl9WRVJTSU9OICIxLjUuMCIKfCAj ZGVmaW5lIEpWX0FQSV9WRVJTSU9OICIxLjUiCnwgI2RlZmluZSBzc2l6ZV90IGludAp8IC8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KfCAKfCAjaWZkZWYgSEFWRV9NQUdJQ19ICnwgI2luY2x1ZGUgPG1h Z2ljLmg+CnwgI2VuZGlmCnwgCnwgaW50CnwgbWFpbiAoKQp8IHsKfCBpZiAoc2l6ZW9mIChtYWdp Y190KSkKfCAJIHJldHVybiAwOwp8ICAgOwp8ICAgcmV0dXJuIDA7CnwgfQo6NDIyMDogcmVzdWx0 OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIGluX2FkZHJfdAo6NDIyMDogL2hvbWUvem9wb2xpczQv Z2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJv Z3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FH RV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJq YXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEi CnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAj ZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhf VkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUg TElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5l IExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZp bmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVf SlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VI TV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZF X1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmlu ZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAjZGVmaW5l IFNJWkVPRl9WT0lEX1AgMAp8ICNkZWZpbmUgR0NKVkVSU0lPTiAiMTMuMC4wIgp8ICNkZWZpbmUg SlZfVkVSU0lPTiAiMS41LjAiCnwgI2RlZmluZSBKVl9BUElfVkVSU0lPTiAiMS41Igp8ICNkZWZp bmUgc3NpemVfdCBpbnQKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgp8ICNpZmRlZiBTVERDX0hFQURFUlMKfCAjaW5jbHVkZSA8c3RkbGliLmg+CnwgI2lu Y2x1ZGUgPHN0ZGRlZi5oPgp8ICNlbmRpZgp8ICNpZiBIQVZFX05FVElORVRfSU5fSAp8ICNpbmNs dWRlIDxuZXRpbmV0L2luLmg+CnwgI2VuZGlmCjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVj a2luZyB3aGV0aGVyIHN0cnVjdCBpcF9tcmVxIGlzIGluIG5ldGluZXQvaW4uaAo6NDIyMDogL2hv bWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xp czQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcK OiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FH RV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0Vf U1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBP UlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAi bGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRE TF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAi Igp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERM IDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NF TEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2Rl ZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZp bmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwg I2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQ UyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1F IDAKfCAjZGVmaW5lIFNJWkVPRl9WT0lEX1AgMAp8ICNkZWZpbmUgR0NKVkVSU0lPTiAiMTMuMC4w Igp8ICNkZWZpbmUgSlZfVkVSU0lPTiAiMS41LjAiCnwgI2RlZmluZSBKVl9BUElfVkVSU0lPTiAi MS41Igp8ICNkZWZpbmUgc3NpemVfdCBpbnQKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2lu Y2x1ZGUgPG5ldGluZXQvaW4uaD4KOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIHdo ZXRoZXIgc3RydWN0IGlwdjZfbXJlcSBpcyBpbiBuZXRpbmV0L2luLmgKOjQyMjA6IC9ob21lL3pv cG9saXM0L2djai9jb21waWxlICAtYyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2dj ai9jb21waWxlOiAzMDY6IGV4ZWM6IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFp bGVkIHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFN RSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5l IFBBQ0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklO RyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmph dmEiCnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hM SUJQQVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAj ZGVmaW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwg I2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEK fCAjZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUg RU5BQkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhB VkVfQk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZp bmUgSEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8 ICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwg I2RlZmluZSBTSVpFT0ZfVk9JRF9QIDAKfCAjZGVmaW5lIEdDSlZFUlNJT04gIjEzLjAuMCIKfCAj ZGVmaW5lIEpWX1ZFUlNJT04gIjEuNS4wIgp8ICNkZWZpbmUgSlZfQVBJX1ZFUlNJT04gIjEuNSIK fCAjZGVmaW5lIHNzaXplX3QgaW50CnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNpbmNsdWRl IDxuZXRpbmV0L2luLmg+Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyB3aGV0aGVy IHN0cnVjdCBzb2NrYWRkcl9pbjYgaXMgaW4gbmV0aW5ldC9pbi5oCjo0MjIwOiAvaG9tZS96b3Bv bGlzNC9nY2ovY29tcGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQovaG9tZS96b3BvbGlzNC9nY2ov Y29tcGlsZTogMzA2OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIwOiAkPyA9IDEyNwo6IGZhaWxl ZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQQUNLQUdFX05BTUUg ImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQ QUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9TVFJJTkcg ImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGli amF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNLQUdFICJsaWJqYXZh Igp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBMVERMX1NITElC UEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09MS0lUICIiCnwgI2Rl ZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNFX0xUREwgMQp8ICNk ZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJFQURfU0VMRiAxCnwg I2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEKfCAjZGVmaW5lIEVO QUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwgI2RlZmluZSBIQVZF X0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKfCAjZGVmaW5l IEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9NQVBTIDEKfCAj ZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhBVkVfREVDTF9UWk5BTUUgMAp8ICNk ZWZpbmUgU0laRU9GX1ZPSURfUCAwCnwgI2RlZmluZSBHQ0pWRVJTSU9OICIxMy4wLjAiCnwgI2Rl ZmluZSBKVl9WRVJTSU9OICIxLjUuMCIKfCAjZGVmaW5lIEpWX0FQSV9WRVJTSU9OICIxLjUiCnwg I2RlZmluZSBzc2l6ZV90IGludAp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KfCAjaW5jbHVkZSA8 bmV0aW5ldC9pbi5oPgo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9yIHNvY2ts ZW5fdCBpbiBzeXMvc29ja2V0LmgKOjQyMjA6IC9ob21lL3pvcG9saXM0L2djai9jb21waWxlICAt YyAgIGNvbmZ0ZXN0LmMgPiY1Ci9ob21lL3pvcG9saXM0L2djai9jb21waWxlOiAzMDY6IGV4ZWM6 IC1jOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVkIHByb2dyYW0gd2FzOgp8IC8q IGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKfCAjZGVmaW5l IFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidmVy c2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVu dXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFD S0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCnwgI2RlZmluZSBWRVJTSU9O ICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQQVRIX1ZBUiAiTERfTElCUkFS WV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVmaW5lIExJQkdDSl9QUkVGSVgg Ii91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2RlZmluZSBMVF9PQkpESVIgIi5s aWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAjZGVmaW5lIElOVEVSUFJFVEVS IDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5BQkxFX0pWTVBJIDEKfCAjZGVm aW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVfQk9FSE1fR0MgMQp8ICNkZWZp bmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfRVhF IDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNkZWZpbmUgVE1fSU5fU1lTX1RJ TUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwgI2RlZmluZSBTSVpFT0ZfVk9JRF9Q IDAKfCAjZGVmaW5lIEdDSlZFUlNJT04gIjEzLjAuMCIKfCAjZGVmaW5lIEpWX1ZFUlNJT04gIjEu NS4wIgp8ICNkZWZpbmUgSlZfQVBJX1ZFUlNJT04gIjEuNSIKfCAjZGVmaW5lIHNzaXplX3QgaW50 CnwgLyogZW5kIGNvbmZkZWZzLmguICAqLwp8ICNkZWZpbmUgX1BPU0lYX1BJSV9TT0NLRVQKfCAj aW5jbHVkZSA8c3lzL3R5cGVzLmg+CnwgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KOjQyMjA6IHJl c3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciB0bV9nbXRvZmYgaW4gc3RydWN0IHRtCjo0MjIw OiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQovaG9tZS96 b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIwOiAkPyA9 IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2RlZmluZSBQ QUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxpYmphdmEi CnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFD S0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX0JV R1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmluZSBQQUNL QUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmlu ZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFXVF9UT09M S0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZpbmUgVVNF X0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9XX1BUSFJF QURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElCRkZJIDEK fCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lORyAxCnwg I2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9O IDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VM Rl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhBVkVfREVDTF9U Wk5BTUUgMAp8ICNkZWZpbmUgU0laRU9GX1ZPSURfUCAwCnwgI2RlZmluZSBHQ0pWRVJTSU9OICIx My4wLjAiCnwgI2RlZmluZSBKVl9WRVJTSU9OICIxLjUuMCIKfCAjZGVmaW5lIEpWX0FQSV9WRVJT SU9OICIxLjUiCnwgI2RlZmluZSBzc2l6ZV90IGludAp8IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8K fCAjaW5jbHVkZSA8dGltZS5oPgo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tpbmcgZm9y IGdsb2JhbCB0aW1lem9uZSB2YXJpYWJsZQo6NDIyMDogL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBp bGUgIC1jICAgY29uZnRlc3QuYyA+JjUKL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjog ZXhlYzogLWM6IG5vdCBmb3VuZAo6NDIyMDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 CnwgLyogY29uZmRlZnMuaCAqLwp8ICNkZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNk ZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9O ICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNp b24tdW51c2VkIgp8ICNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmlu ZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZpbmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZF UlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9M SUJSQVJZX1BBVEgiCnwgI2RlZmluZSBBV1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BS RUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVmaW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJ UiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xPV19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQ UkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJQkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8 ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwg I2RlZmluZSBKVl9IQVNIX1NZTkNIUk9OSVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VM Rl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9QUk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9T WVNfVElNRSAxCnwgI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKfCAjZGVmaW5lIFNJWkVPRl9W T0lEX1AgMAp8ICNkZWZpbmUgR0NKVkVSU0lPTiAiMTMuMC4wIgp8ICNkZWZpbmUgSlZfVkVSU0lP TiAiMS41LjAiCnwgI2RlZmluZSBKVl9BUElfVkVSU0lPTiAiMS41Igp8ICNkZWZpbmUgc3NpemVf dCBpbnQKfCAvKiBlbmQgY29uZmRlZnMuaC4gICovCnwgI2luY2x1ZGUgPHRpbWUuaD4KOjQyMjA6 IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIGZvciBnbG9iYWwgX3RpbWV6b25lIHZhcmlhYmxl Cjo0MjIwOiAvaG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZSAgLWMgICBjb25mdGVzdC5jID4mNQov aG9tZS96b3BvbGlzNC9nY2ovY29tcGlsZTogMzA2OiBleGVjOiAtYzogbm90IGZvdW5kCjo0MjIw OiAkPyA9IDEyNwo6IGZhaWxlZCBwcm9ncmFtIHdhczoKfCAvKiBjb25mZGVmcy5oICovCnwgI2Rl ZmluZSBQQUNLQUdFX05BTUUgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImxp YmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8ICNkZWZp bmUgUEFDS0FHRV9TVFJJTkcgImxpYmphdmEgdmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNL QUdFX0JVR1JFUE9SVCAibGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVVJMICIiCnwgI2RlZmlu ZSBQQUNLQUdFICJsaWJqYXZhIgp8ICNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwg I2RlZmluZSBMVERMX1NITElCUEFUSF9WQVIgIkxEX0xJQlJBUllfUEFUSCIKfCAjZGVmaW5lIEFX VF9UT09MS0lUICIiCnwgI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgp8ICNkZWZp bmUgVVNFX0xUREwgMQp8ICNkZWZpbmUgTFRfT0JKRElSICIubGlicy8iCnwgI2RlZmluZSBTTE9X X1BUSFJFQURfU0VMRiAxCnwgI2RlZmluZSBJTlRFUlBSRVRFUiAxCnwgI2RlZmluZSBVU0VfTElC RkZJIDEKfCAjZGVmaW5lIEVOQUJMRV9KVk1QSSAxCnwgI2RlZmluZSBYX0RJU1BMQVlfTUlTU0lO RyAxCnwgI2RlZmluZSBIQVZFX0JPRUhNX0dDIDEKfCAjZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05J WkFUSU9OIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX0VYRSAxCnwgI2RlZmluZSBIQVZFX1BS T0NfU0VMRl9NQVBTIDEKfCAjZGVmaW5lIFRNX0lOX1NZU19USU1FIDEKfCAjZGVmaW5lIEhBVkVf REVDTF9UWk5BTUUgMAp8ICNkZWZpbmUgU0laRU9GX1ZPSURfUCAwCnwgI2RlZmluZSBHQ0pWRVJT SU9OICIxMy4wLjAiCnwgI2RlZmluZSBKVl9WRVJTSU9OICIxLjUuMCIKfCAjZGVmaW5lIEpWX0FQ SV9WRVJTSU9OICIxLjUiCnwgI2RlZmluZSBzc2l6ZV90IGludAp8IC8qIGVuZCBjb25mZGVmcy5o LiAgKi8KfCAjaW5jbHVkZSA8dGltZS5oPgo6NDIyMDogcmVzdWx0OiBubwo6NDIyMDogY2hlY2tp bmcgZm9yIHBlcmwKOjQyMjA6IHJlc3VsdDogbm8KOjQyMjA6IGNoZWNraW5nIHdoZXRoZXIgdGhl IHRhcmdldCBzdXBwb3J0cyB0aHJlYWQtbG9jYWwgc3RvcmFnZQo6NDIyMDogZXJyb3I6IExpbmsg dGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4KOjQyMjA6IC9o b21lL3pvcG9saXM0L2djai9jb21waWxlICAtbyBjb25mdGVzdCAgICBjb25mdGVzdC5jICA+JjUK L2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGU6IDMwNjogZXhlYzogLW86IG5vdCBmb3VuZAo6NDIy MDogJD8gPSAxMjcKOiBmYWlsZWQgcHJvZ3JhbSB3YXM6CnwgLyogY29uZmRlZnMuaCAqLwp8ICNk ZWZpbmUgUEFDS0FHRV9OQU1FICJsaWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJs aWJqYXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVm aW5lIFBBQ0tBR0VfU1RSSU5HICJsaWJqYXZhIHZlcnNpb24tdW51c2VkIgp8ICNkZWZpbmUgUEFD S0FHRV9CVUdSRVBPUlQgImxpYmphdmEiCnwgI2RlZmluZSBQQUNLQUdFX1VSTCAiIgp8ICNkZWZp bmUgUEFDS0FHRSAibGliamF2YSIKfCAjZGVmaW5lIFZFUlNJT04gInZlcnNpb24tdW51c2VkIgp8 ICNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCnwgI2RlZmluZSBB V1RfVE9PTEtJVCAiIgp8ICNkZWZpbmUgTElCR0NKX1BSRUZJWCAiL3Vzci9sb2NhbCIKfCAjZGVm aW5lIFVTRV9MVERMIDEKfCAjZGVmaW5lIExUX09CSkRJUiAiLmxpYnMvIgp8ICNkZWZpbmUgU0xP V19QVEhSRUFEX1NFTEYgMQp8ICNkZWZpbmUgSU5URVJQUkVURVIgMQp8ICNkZWZpbmUgVVNFX0xJ QkZGSSAxCnwgI2RlZmluZSBFTkFCTEVfSlZNUEkgMQp8ICNkZWZpbmUgWF9ESVNQTEFZX01JU1NJ TkcgMQp8ICNkZWZpbmUgSEFWRV9CT0VITV9HQyAxCnwgI2RlZmluZSBKVl9IQVNIX1NZTkNIUk9O SVpBVElPTiAxCnwgI2RlZmluZSBIQVZFX1BST0NfU0VMRl9FWEUgMQp8ICNkZWZpbmUgSEFWRV9Q Uk9DX1NFTEZfTUFQUyAxCnwgI2RlZmluZSBUTV9JTl9TWVNfVElNRSAxCnwgI2RlZmluZSBIQVZF X0RFQ0xfVFpOQU1FIDAKfCAjZGVmaW5lIFNJWkVPRl9WT0lEX1AgMAp8ICNkZWZpbmUgR0NKVkVS U0lPTiAiMTMuMC4wIgp8ICNkZWZpbmUgSlZfVkVSU0lPTiAiMS41LjAiCnwgI2RlZmluZSBKVl9B UElfVkVSU0lPTiAiMS41Igp8ICNkZWZpbmUgc3NpemVfdCBpbnQKfCAvKiBlbmQgY29uZmRlZnMu aC4gICovCnwgX190aHJlYWQgaW50IGE7IGludCBiOyBpbnQgbWFpbigpIHsgcmV0dXJuIGEgPSBi OyB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiBjaGVja2luZyB3aGV0aGVyIGxkIHN1cHBvcnRz IGFub255bW91cyB2ZXJzaW9uIHNjcmlwdHMKOjQyMjA6IGVycm9yOiBMaW5rIHRlc3RzIGFyZSBu b3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuCjo0MjIwOiAvaG9tZS96b3BvbGlz NC9nY2ovY29tcGlsZSAgLW8gY29uZnRlc3QgIC1mUElDICAgLXNoYXJlZCAtV2wsLS12ZXJzaW9u LXNjcmlwdCxjb25mdGVzdC5tYXAgY29uZnRlc3QuYyAgPiY1Ci9ob21lL3pvcG9saXM0L2djai9j b21waWxlOiAzMDY6IGV4ZWM6IC1vOiBub3QgZm91bmQKOjQyMjA6ICQ/ID0gMTI3CjogZmFpbGVk IHByb2dyYW0gd2FzOgp8IC8qIGNvbmZkZWZzLmggKi8KfCAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAi bGliamF2YSIKfCAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibGliamF2YSIKfCAjZGVmaW5lIFBB Q0tBR0VfVkVSU0lPTiAidmVyc2lvbi11bnVzZWQiCnwgI2RlZmluZSBQQUNLQUdFX1NUUklORyAi bGliamF2YSB2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJsaWJq YXZhIgp8ICNkZWZpbmUgUEFDS0FHRV9VUkwgIiIKfCAjZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEi CnwgI2RlZmluZSBWRVJTSU9OICJ2ZXJzaW9uLXVudXNlZCIKfCAjZGVmaW5lIExURExfU0hMSUJQ QVRIX1ZBUiAiTERfTElCUkFSWV9QQVRIIgp8ICNkZWZpbmUgQVdUX1RPT0xLSVQgIiIKfCAjZGVm aW5lIExJQkdDSl9QUkVGSVggIi91c3IvbG9jYWwiCnwgI2RlZmluZSBVU0VfTFRETCAxCnwgI2Rl ZmluZSBMVF9PQkpESVIgIi5saWJzLyIKfCAjZGVmaW5lIFNMT1dfUFRIUkVBRF9TRUxGIDEKfCAj ZGVmaW5lIElOVEVSUFJFVEVSIDEKfCAjZGVmaW5lIFVTRV9MSUJGRkkgMQp8ICNkZWZpbmUgRU5B QkxFX0pWTVBJIDEKfCAjZGVmaW5lIFhfRElTUExBWV9NSVNTSU5HIDEKfCAjZGVmaW5lIEhBVkVf Qk9FSE1fR0MgMQp8ICNkZWZpbmUgSlZfSEFTSF9TWU5DSFJPTklaQVRJT04gMQp8ICNkZWZpbmUg SEFWRV9QUk9DX1NFTEZfRVhFIDEKfCAjZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQp8ICNk ZWZpbmUgVE1fSU5fU1lTX1RJTUUgMQp8ICNkZWZpbmUgSEFWRV9ERUNMX1RaTkFNRSAwCnwgI2Rl ZmluZSBTSVpFT0ZfVk9JRF9QIDAKfCAjZGVmaW5lIEdDSlZFUlNJT04gIjEzLjAuMCIKfCAjZGVm aW5lIEpWX1ZFUlNJT04gIjEuNS4wIgp8ICNkZWZpbmUgSlZfQVBJX1ZFUlNJT04gIjEuNSIKfCAj ZGVmaW5lIHNzaXplX3QgaW50CnwgI2RlZmluZSBIQVZFX0dFVElQSU5GTyAxCnwgLyogZW5kIGNv bmZkZWZzLmguICAqLwp8IHZvaWQgZ2xvYmFsc3ltYm9sICh2b2lkKSB7fSB2b2lkIGxvY2Fsc3lt Ym9sICh2b2lkKSB7fQp8IGludAp8IG1haW4gKCkKfCB7CnwgCnwgICA7CnwgICByZXR1cm4gMDsK fCB9Cjo0MjIwOiByZXN1bHQ6IG5vCjo0MjIwOiByZXN1bHQ6IFB5dGhvbiBtb2R1bGVzIGRpcjog L3Vzci9sb2NhbC9zaGFyZS9nY2MtMTMuMC4wL3B5dGhvbi9saWJqYXZhCjo0MjIwOiBjaGVja2lu ZyB0aGF0IGdlbmVyYXRlZCBmaWxlcyBhcmUgbmV3ZXIgdGhhbiBjb25maWd1cmUKOjQyMjA6IHJl c3VsdDogZG9uZQo6NDIyMDogY3JlYXRpbmcgLi9jb25maWcuc3RhdHVzCgojIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tICMjCiMjIFJ1bm5pbmcgY29uZmlnLnN0YXR1cy4gIyMKIyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAjIwoKVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBsaWJqYXZhIGNvbmZp Zy5zdGF0dXMgdmVyc2lvbi11bnVzZWQsIHdoaWNoIHdhcwpnZW5lcmF0ZWQgYnkgR05VIEF1dG9j b25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKCiAgQ09ORklHX0ZJTEVTICAg ID0gCiAgQ09ORklHX0hFQURFUlMgID0gCiAgQ09ORklHX0xJTktTICAgID0gCiAgQ09ORklHX0NP TU1BTkRTID0gCiAgJCAuL2NvbmZpZy5zdGF0dXMgCgpvbiBDQjEwTE9BTjAxTAoKY29uZmlnLnN0 YXR1czoxNDEzOiBjcmVhdGluZyBNYWtlZmlsZQpjb25maWcuc3RhdHVzOjE0MTM6IGNyZWF0aW5n IGxpYmdjai5wYwpjb25maWcuc3RhdHVzOjE0MTM6IGNyZWF0aW5nIGxpYmdjai5zcGVjCmNvbmZp Zy5zdGF0dXM6MTQxMzogY3JlYXRpbmcgbGliZ2NqLXRlc3Quc3BlYwpjb25maWcuc3RhdHVzOjE0 MTM6IGNyZWF0aW5nIGdjai9NYWtlZmlsZQpjb25maWcuc3RhdHVzOjE0MTM6IGNyZWF0aW5nIGlu Y2x1ZGUvTWFrZWZpbGUKY29uZmlnLnN0YXR1czoxNDEzOiBjcmVhdGluZyB0ZXN0c3VpdGUvTWFr ZWZpbGUKY29uZmlnLnN0YXR1czoxNDEzOiBjcmVhdGluZyBjb250cmliL2FvdGNvbXBpbGUucHkK Y29uZmlnLnN0YXR1czoxNDEzOiBjcmVhdGluZyBjb250cmliL2FvdC1jb21waWxlCmNvbmZpZy5z dGF0dXM6MTQxMzogY3JlYXRpbmcgY29udHJpYi9hb3QtY29tcGlsZS1ycG0KY29uZmlnLnN0YXR1 czoxNDEzOiBjcmVhdGluZyBjb250cmliL2dlbmVyYXRlLWNhY2VydHMucGwKY29uZmlnLnN0YXR1 czoxNDEzOiBjcmVhdGluZyBjb250cmliL3JlYnVpbGQtZ2NqLWRiCmNvbmZpZy5zdGF0dXM6MTQx MzogY3JlYXRpbmcgc2NyaXB0cy9qYXIKY29uZmlnLnN0YXR1czoxNDEzOiBjcmVhdGluZyBpbmNs dWRlL2NvbmZpZy5oCmNvbmZpZy5zdGF0dXM6MTU5NDogaW5jbHVkZS9jb25maWcuaCBpcyB1bmNo YW5nZWQKY29uZmlnLnN0YXR1czoxNDEzOiBjcmVhdGluZyBnY2ovbGliZ2NqLWNvbmZpZy5oCmNv bmZpZy5zdGF0dXM6MTU5NDogZ2NqL2xpYmdjai1jb25maWcuaCBpcyB1bmNoYW5nZWQKY29uZmln LnN0YXR1czoxNjU0OiBsaW5raW5nIGluY2x1ZGUvcG9zaXguaCB0byBpbmNsdWRlL3BsYXRmb3Jt LmgKY29uZmlnLnN0YXR1czoxNjU0OiBsaW5raW5nIGphdmEvaW8vbmF0RmlsZVBvc2l4LmNjIHRv IGphdmEvaW8vbmF0RmlsZS5jYwpjb25maWcuc3RhdHVzOjE2NTQ6IGxpbmtpbmcgamF2YS9sYW5n L25hdFBvc2l4UHJvY2Vzcy5jYyB0byBqYXZhL2xhbmcvbmF0Q29uY3JldGVQcm9jZXNzLmNjCmNv bmZpZy5zdGF0dXM6MTY1NDogbGlua2luZyBqYXZhL25ldC9uYXRWTUluZXRBZGRyZXNzUG9zaXgu Y2MgdG8gamF2YS9uZXQvbmF0Vk1JbmV0QWRkcmVzcy5jYwpjb25maWcuc3RhdHVzOjE2NTQ6IGxp bmtpbmcgamF2YS9uZXQvbmF0Vk1OZXR3b3JrSW50ZXJmYWNlUG9zaXguY2MgdG8gamF2YS9uZXQv bmF0Vk1OZXR3b3JrSW50ZXJmYWNlLmNjCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2luZyBnbnUv amF2YS9uZXQvbmF0UGxhaW5Tb2NrZXRJbXBsUG9zaXguY2MgdG8gZ251L2phdmEvbmV0L25hdFBs YWluU29ja2V0SW1wbC5jYwpjb25maWcuc3RhdHVzOjE2NTQ6IGxpbmtpbmcgZ251L2phdmEvbmV0 L25hdFBsYWluRGF0YWdyYW1Tb2NrZXRJbXBsUG9zaXguY2MgdG8gZ251L2phdmEvbmV0L25hdFBs YWluRGF0YWdyYW1Tb2NrZXRJbXBsLmNjCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2luZyBnbnUv amF2YS9uaW8vbmF0Vk1QaXBlUG9zaXguY2MgdG8gZ251L2phdmEvbmlvL25hdFZNUGlwZS5jYwpj b25maWcuc3RhdHVzOjE2NTQ6IGxpbmtpbmcgZ251L2phdmEvbmlvL25hdFZNU2VsZWN0b3JQb3Np eC5jYyB0byBnbnUvamF2YS9uaW8vbmF0Vk1TZWxlY3Rvci5jYwpjb25maWcuc3RhdHVzOjE2NTQ6 IGxpbmtpbmcgZ251L2phdmEvbmlvL2NoYW5uZWxzL25hdEZpbGVDaGFubmVsUG9zaXguY2MgdG8g Z251L2phdmEvbmlvL2NoYW5uZWxzL25hdEZpbGVDaGFubmVsSW1wbC5jYwpjb25maWcuc3RhdHVz OjE2NTQ6IGxpbmtpbmcgZ251L2phdmEvc2VjdXJpdHkvamNlL3BybmcvbmF0Vk1TZWN1cmVSYW5k b21Qb3NpeC5jYyB0byBnbnUvamF2YS9zZWN1cml0eS9qY2UvcHJuZy9uYXRWTVNlY3VyZVJhbmRv bS5jYwpjb25maWcuc3RhdHVzOjE2NTQ6IGxpbmtpbmcgaW5jbHVkZS9ib2VobS1nYy5oIHRvIGlu Y2x1ZGUvamF2YS1nYy5oCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2luZyBpbmNsdWRlLyB0byBp bmNsdWRlL2phdmEtdGhyZWFkcy5oCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2luZyBzeXNkZXAv aTM4Ni9sb2Nrcy5oIHRvIHN5c2RlcC9sb2Nrcy5oCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2lu ZyBzeXNkZXAvZ2VuZXJpYy9iYWNrdHJhY2UuaCB0byBzeXNkZXAvYmFja3RyYWNlLmgKY29uZmln LnN0YXR1czoxNjU0OiBsaW5raW5nIHN5c2RlcC9kZXNjcmlwdG9yLW4uaCB0byBzeXNkZXAvZGVz Y3JpcHRvci5oCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2luZyBpbmNsdWRlL2RlZmF1bHQtc2ln bmFsLmggdG8gaW5jbHVkZS9qYXZhLXNpZ25hbC5oCmNvbmZpZy5zdGF0dXM6MTY1NDogbGlua2lu ZyBpbmNsdWRlL2RlZmF1bHQtc2lnbmFsLmggdG8gaW5jbHVkZS9qYXZhLXNpZ25hbC1hdXguaApj b25maWcuc3RhdHVzOjE2NzM6IGV4ZWN1dGluZyBkZWZhdWx0LTEgY29tbWFuZHMKOjQyMjA6ID09 PSBjb25maWd1cmluZyBpbiBjbGFzc3BhdGggKC9ob21lL3pvcG9saXM0L2djai9saWJqYXZhL2Ns YXNzcGF0aCkKOjQyMjA6IHJ1bm5pbmcgL2Jpbi9iYXNoIC4vY29uZmlndXJlIC0tZGlzYWJsZS1v cHRpb24tY2hlY2tpbmcgJy0tcHJlZml4PS91c3IvbG9jYWwnICAnLS1kaXNhYmxlLXRvb2wtd3Jh cHBlcnMnICctLWRpc2FibGUtbG9hZC1saWJyYXJ5JyAnLS1kaXNhYmxlLWRlYnVnJyAnLS1lbmFi bGUtZGVmYXVsdC10b29sa2l0PScgJy0td2l0aC12bS1jbGFzc2VzPS9ob21lL3pvcG9saXM0L2dj ai9saWJqYXZhOi9ob21lL3pvcG9saXM0L2djai9saWJqYXZhJyAnLS1kaXNhYmxlLWNvcmUtam5p JyAnLS1kaXNhYmxlLWV4YW1wbGVzJyAnLS13aXRoLWdsaWJqPWJ1aWxkJyAnLS1kaXNhYmxlLXBs dWdpbicgJy0tZGlzYWJsZS1nY29uZi1wZWVyJyAnLS1lbmFibGUtZGVmYXVsdC1wcmVmZXJlbmNl cy1wZWVyPWdudS5qYXZhLnV0aWwucHJlZnMuRmlsZUJhc2VkRmFjdG9yeScgJy0tZGlzYWJsZS1n dGstcGVlcicgJy0tZGlzYWJsZS1wbHVnaW4nICctLWRpc2FibGUtcXQtcGVlcicgJy0td2l0aG91 dC1lc2NoZXInICctLWRpc2FibGUtcmVnZW4taGVhZGVycycgJy0tZGlzYWJsZS1XZXJyb3InICct LWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlJyAnLS13aXRoLWF1eGRpcj0vaG9tZS96b3BvbGlzNC9n Y2onIC0tY2FjaGUtZmlsZT0vZGV2L251bGwgLS1zcmNkaXI9Lgo6NDIyMDogZXJyb3I6IC4vY29u ZmlndXJlIGZhaWxlZCBmb3IgY2xhc3NwYXRoCjo0MjIwOiA9PT0gY29uZmlndXJpbmcgaW4gbGli bHRkbCAoL2hvbWUvem9wb2xpczQvZ2NqL2xpYmphdmEvbGlibHRkbCkKOjQyMjA6IHJ1bm5pbmcg L2Jpbi9iYXNoIC4vY29uZmlndXJlIC0tZGlzYWJsZS1vcHRpb24tY2hlY2tpbmcgJy0tcHJlZml4 PS91c3IvbG9jYWwnICAnLS1kaXNhYmxlLXRvb2wtd3JhcHBlcnMnICctLWRpc2FibGUtbG9hZC1s aWJyYXJ5JyAnLS1kaXNhYmxlLWRlYnVnJyAnLS1lbmFibGUtZGVmYXVsdC10b29sa2l0PScgJy0t d2l0aC12bS1jbGFzc2VzPS9ob21lL3pvcG9saXM0L2djai9saWJqYXZhOi9ob21lL3pvcG9saXM0 L2djai9saWJqYXZhJyAnLS1kaXNhYmxlLWNvcmUtam5pJyAnLS1kaXNhYmxlLWV4YW1wbGVzJyAn LS13aXRoLWdsaWJqPWJ1aWxkJyAnLS1kaXNhYmxlLXBsdWdpbicgJy0tZGlzYWJsZS1nY29uZi1w ZWVyJyAnLS1lbmFibGUtZGVmYXVsdC1wcmVmZXJlbmNlcy1wZWVyPWdudS5qYXZhLnV0aWwucHJl ZnMuRmlsZUJhc2VkRmFjdG9yeScgJy0tZGlzYWJsZS1ndGstcGVlcicgJy0tZGlzYWJsZS1wbHVn aW4nICctLWRpc2FibGUtcXQtcGVlcicgJy0td2l0aG91dC1lc2NoZXInICctLWRpc2FibGUtcmVn ZW4taGVhZGVycycgJy0tZGlzYWJsZS1XZXJyb3InICctLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNl JyAnLS13aXRoLWF1eGRpcj0vaG9tZS96b3BvbGlzNC9nY2onIC0tY2FjaGUtZmlsZT0vZGV2L251 bGwgLS1zcmNkaXI9LgoKIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBDYWNoZSB2YXJpYWJsZXMu ICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKCgojIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBP dXRwdXQgdmFyaWFibGVzLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwoKQUNMT0NBTD0nJHtT SEVMTH0gL2hvbWUvem9wb2xpczQvZ2NqL21pc3NpbmcgYWNsb2NhbC0xLjE1JwpBTURFUEJBQ0tT TEFTSD0nXCcKQU1ERVBfRkFMU0U9JyMnCkFNREVQX1RSVUU9JycKQU1UQVI9JyQke1RBUi10YXJ9 JwpBTV9CQUNLU0xBU0g9J1wnCkFNX0RFRkFVTFRfVj0nJChBTV9ERUZBVUxUX1ZFUkJPU0lUWSkn CkFNX0RFRkFVTFRfVkVSQk9TSVRZPScxJwpBTV9WPSckKFYpJwpBTk9OVkVSU0NSSVBUX0ZBTFNF PScnCkFOT05WRVJTQ1JJUFRfR05VX0ZBTFNFPScnCkFOT05WRVJTQ1JJUFRfR05VX1RSVUU9JyMn CkFOT05WRVJTQ1JJUFRfU1VOX0ZBTFNFPScnCkFOT05WRVJTQ1JJUFRfU1VOX1RSVUU9JyMnCkFO T05WRVJTQ1JJUFRfVFJVRT0nIycKQU5UTFJfSkFSPScvdXNyL3NoYXJlL2phdmEvYW50bHIuamFy JwpBUj0nZmFsc2UnCkFTPScnCkFUT01JQ1NQRUM9JycKQVVUT0NPTkY9JyR7U0hFTEx9IC9ob21l L3pvcG9saXM0L2djai9taXNzaW5nIGF1dG9jb25mJwpBVVRPSEVBREVSPScke1NIRUxMfSAvaG9t ZS96b3BvbGlzNC9nY2ovbWlzc2luZyBhdXRvaGVhZGVyJwpBVVRPTUFLRT0nJHtTSEVMTH0gL2hv bWUvem9wb2xpczQvZ2NqL21pc3NpbmcgYXV0b21ha2UtMS4xNScKQVdLPScnCkJBQ0tUUkFDRVNQ RUM9JycKQlVJTERfRUNKMV9GQUxTRT0nJwpCVUlMRF9FQ0oxX1RSVUU9JyMnCkJVSUxEX0xJQkdD Sl9SRURVQ0VEX1JFRkxFQ1RJT05fRkFMU0U9JycKQlVJTERfTElCR0NKX1JFRFVDRURfUkVGTEVD VElPTl9UUlVFPScjJwpCVUlMRF9TVUJMSUJTX0ZBTFNFPScnCkJVSUxEX1NVQkxJQlNfVFJVRT0n IycKQlVJTERfVkVSU0lPTj0nJwpDQz0nL2hvbWUvem9wb2xpczQvZ2NqL2NvbXBpbGUgJwpDQ0RF UE1PREU9J2RlcG1vZGU9bm9uZScKQ0ZMQUdTPScnCkNIRUNLUkVGU1BFQz0nJwpDTEFTU1BBVEhf U0VQQVJBVE9SPSc6JwpDUFA9Jy9saWIvY3BwJwpDUFBGTEFHUz0nJwpDUFU9JycKQ1JFQVRFX0dK RE9DX0ZBTFNFPScjJwpDUkVBVEVfR0pET0NfVFJVRT0nJwpDUkVBVEVfSkFWQV9IT01FX0ZBTFNF PScnCkNSRUFURV9KQVZBX0hPTUVfVFJVRT0nIycKQ1hYPSdnKysnCkNYWENQUD0nL2xpYi9jcHAn CkNYWERFUE1PREU9J2RlcG1vZGU9Z2NjMycKQ1hYRkxBR1M9JycKQ1lHUEFUSF9XPSdlY2hvJwpE RUZTPSctREhBVkVfQ09ORklHX0gnCkRFUERJUj0nLmRlcHMnCkRJUkxUREw9J2xpYmx0ZGwnCkRJ VklERVNQRUM9Jy1mbm8tdXNlLWRpdmlkZS1zdWJyb3V0aW5lJwpETExUT09MPSc6JwpEU1lNVVRJ TD0nJwpEVU1QQklOPScnCkVDSE9fQz0nJwpFQ0hPX049Jy1uJwpFQ0hPX1Q9JycKRUNKX0JVSUxE X0pBUj0nJwpFQ0pfSkFSPScnCkVHUkVQPScnCkVOQUJMRV9TSEFSRURfRkFMU0U9JycKRU5BQkxF X1NIQVJFRF9UUlVFPScjJwpFWENFUFRJT05TUEVDPSctZm5vbi1jYWxsLWV4Y2VwdGlvbnMnCkVY RUVYVD0nJwpGR1JFUD0nJwpHQ0NfRk9SX0VDSlg9JyQoQ1hYKScKR0NERVBTPScnCkdDSU5DUz0n LUkkKHRvcF9zcmNkaXIpLy4uL2JvZWhtLWdjL2luY2x1ZGUgLUkuLi9ib2VobS1nYy9pbmNsdWRl JwpHQ0o9JyAtQi9ob21lL3pvcG9saXM0L2djai9saWJqYXZhLycKR0NKREVQTU9ERT0nZGVwbW9k ZT1ub25lJwpHQ0pGTEFHUz0nLWcgLU8yJwpHQ0pIPSdnY2poJwpHQ0pWRVJTSU9OPScxMy4wLjAn CkdDSl9CSU5fRElSPScnCkdDSl9GT1JfRUNKWD0nJChHQ0opJwpHQ0xJQlM9Jy4uL2JvZWhtLWdj L2xpYmdjamdjX2NvbnZlbmllbmNlLmxhJwpHQ1NQRUM9JycKR0NURVNUU1BFQz0nLUwvaG9tZS96 b3BvbGlzNC9nY2ovbGliamF2YS8uLi9ib2VobS1nYy8ubGlicyAtcnBhdGggL2hvbWUvem9wb2xp czQvZ2NqL2xpYmphdmEvLi4vYm9laG0tZ2MvLmxpYnMnCkdMSUJfQ0ZMQUdTPScnCkdMSUJfTElC Uz0nJwpHUkVQPSdncmVwJwpHVEtfQ0ZMQUdTPScnCkdUS19MSUJTPScnCkhBU0hfU1lOQ19TUEVD PSctZmhhc2gtc3luY2hyb25pemF0aW9uJwpJRUVFU1BFQz0nJwpJTkNMVERMPSctSSQodG9wX3Ny Y2RpcikvbGlibHRkbCAtSSR7dG9wX3NyY2Rpcn0vbGlibHRkbCcKSU5TVEFMTF9BT1RfUlBNX0ZB TFNFPScnCklOU1RBTExfQU9UX1JQTV9UUlVFPScjJwpJTlNUQUxMX0JJTkFSSUVTX0ZBTFNFPScj JwpJTlNUQUxMX0JJTkFSSUVTX1RSVUU9JycKSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0 NCcKSU5TVEFMTF9FQ0pfSkFSX0ZBTFNFPScnCklOU1RBTExfRUNKX0pBUl9UUlVFPScjJwpJTlNU QUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCklOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JwpJTlNU QUxMX1NUUklQX1BST0dSQU09JyQoaW5zdGFsbF9zaCkgLWMgLXMnCklOVEVSUFJFVEVSPSd5ZXMn CklOVEVSUFJFVEVSX0ZBTFNFPScjJwpJTlRFUlBSRVRFUl9UUlVFPScnCkpBUj0nbm8nCkpBVkFf SE9NRT0nJwpKQVZBX0hPTUVfU0VUX0ZBTFNFPScnCkpBVkFfSE9NRV9TRVRfVFJVRT0nIycKSkFW QV9NQUlOVEFJTkVSX01PREVfRkFMU0U9JycKSkFWQV9NQUlOVEFJTkVSX01PREVfVFJVRT0nIycK SkFWQV9WRVJTSU9OPScnCkpDMUdDU1BFQz0nLWZ1c2UtYm9laG0tZ2MnCkpSRV9CSU5fRElSPScn CkpSRV9ESVI9JycKSlJFX0xJQl9ESVI9JycKSlJFX0xOSz0nJwpKVk1fSkFSX0RJUj0nJwpKVk1f SkFSX1JPT1RfRElSPScnCkpWTV9ST09UX0RJUj0nJwpMRD0nL3Vzci9iaW4vbGQnCkxERkxBR1M9 JycKTERMSUJJQ09OVj0nICAnCkxEX0ZJTklTSF9TVEFUSUNfU1BFQz0nJXtzdGF0aWMtbGliZ2Nq Oi1jYWxsX3NoYXJlZH0nCkxEX1NUQVJUX1NUQVRJQ19TUEVDPScle3N0YXRpYy1saWJnY2o6LW5v bl9zaGFyZWR9JwpMSUJBUlRfQ0ZMQUdTPScnCkxJQkFSVF9MSUJTPScnCkxJQkRJUj0nJwpMSUJG Rkk9Jy4uL2xpYmZmaS9saWJmZmlfY29udmVuaWVuY2UubGEnCkxJQkZGSUlOQ1M9Jy1JJCh0b3Bf c3JjZGlyKS8uLi9saWJmZmkvaW5jbHVkZSAtSS4uL2xpYmZmaS9pbmNsdWRlJwpMSUJHQ0NfVU5X SU5EX0lOQ0xVREU9Jy1JJChtdWx0aV9iYXNlZGlyKS8uL2xpYmphdmEvLi4vbGliZ2NjJwpMSUJH Q0pERUJVRz0nZGlzYWJsZScKTElCR0NKVEVTVFNQRUM9Jy1ML2hvbWUvem9wb2xpczQvZ2NqL2xp YmphdmEvLmxpYnMgLXJwYXRoIC9ob21lL3pvcG9saXM0L2djai9saWJqYXZhLy5saWJzJwpMSUJH Q0pfQkNfU1BFQz0nJwpMSUJHQ0pfQ0ZMQUdTPScgIC1mb21pdC1mcmFtZS1wb2ludGVyIC1Vc3Vu JwpMSUJHQ0pfQ1hYRkxBR1M9JyAgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVVzdW4nCkxJQkdDSl9K QVZBRkxBR1M9JyAgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVVzdW4nCkxJQkdDSl9MRF9FWFBPUlRf QUxMPScnCkxJQkdDSl9MRF9TWU1CT0xJQz0nLVdsLC1Cc3ltYm9saWMnCkxJQkdDSl9MRF9TWU1C T0xJQ19GVU5DVElPTlM9JycKTElCR0NKX1NQRUM9JyV7cy1iYy1hYmk6fSAtbGdjaicKTElCR0NK X1NVQkxJQl9DT1JFX0VYVFJBX0RFUFM9JycKTElCR0NKX1NVQkxJQl9MVEZMQUdTPScnCkxJQklD T05WPScnCkxJQkxUREw9JyR7dG9wX2J1aWxkZGlyfS9saWJsdGRsL2xpYmx0ZGxjLmxhJwpMSUJN QVRIU1BFQz0nLWxtJwpMSUJPQkpTPScnCkxJQlM9JycKTElCU1REQ1hYU1BFQz0nJwpMSUJTVERD WFhfUkFXX0NYWF9DWFhGTEFHUz0nICAgIC1JJCh0b3BfYnVpbGRkaXIpLy4uL2xpYnN0ZGMrKy12 My9pbmNsdWRlICAgICAtSSQodG9wX2J1aWxkZGlyKS8uLi9saWJzdGRjKystdjMvaW5jbHVkZS8k KHRhcmdldF9ub25jYW5vbmljYWwpICAgICAtSSQodG9wX3NyY2RpcikvLi4vbGlic3RkYysrLXYz L2xpYnN1cGMrKycKTElCU1REQ1hYX1JBV19DWFhfTERGTEFHUz0nICAgICQodG9wX2J1aWxkZGly KS8uLi9saWJzdGRjKystdjMvc3JjL2xpYnN0ZGMrKy5sYScKTElCVE9PTD0nJChTSEVMTCkgJCh0 b3BfYnVpbGRkaXIpL2xpYnRvb2wnCkxJUE89JycKTE5fUz0nbG4gLXMnCkxUTElCSUNPTlY9JycK TFRMSUJPQkpTPScnCk1BSU5UPScjJwpNQUlOVEFJTkVSX01PREVfRkFMU0U9JycKTUFJTlRBSU5F Ul9NT0RFX1RSVUU9JyMnCk1BS0U9Jy91c3IvYmluL21ha2UnCk1BS0VJTkZPPScke1NIRUxMfSAv aG9tZS96b3BvbGlzNC9nY2ovbWlzc2luZyBtYWtlaW5mbycKTUtESVJfUD0nLi8uLi9pbnN0YWxs LXNoIC1jIC1kJwpOQVRJVkVfRkFMU0U9JyMnCk5BVElWRV9UUlVFPScnCk5FRURTX0RBVEFfU1RB UlRfRkFMU0U9JycKTkVFRFNfREFUQV9TVEFSVF9UUlVFPScjJwpOTT0nL3Vzci9iaW4vbm0gLUIn Ck5NRURJVD0nJwpPQkpEVU1QPSdmYWxzZScKT0JKRVhUPScnCk9TPScnCk9UT09MNjQ9JycKT1RP T0w9JycKUEFDS0FHRT0nbGliamF2YScKUEFDS0FHRV9CVUdSRVBPUlQ9J2xpYmphdmEnClBBQ0tB R0VfTkFNRT0nbGliamF2YScKUEFDS0FHRV9TVFJJTkc9J2xpYmphdmEgdmVyc2lvbi11bnVzZWQn ClBBQ0tBR0VfVEFSTkFNRT0nbGliamF2YScKUEFDS0FHRV9VUkw9JycKUEFDS0FHRV9WRVJTSU9O PSd2ZXJzaW9uLXVudXNlZCcKUEFUSF9TRVBBUkFUT1I9JzonClBFUkw9J2ZhbHNlJwpQS0dfQ09O RklHPScnClBMQVRGT1JNPSdQb3NpeCcKUkFOTElCPSc6JwpTREtfQklOX0RJUj0nJwpTREtfSU5D TFVERV9ESVI9JycKU0RLX0xJQl9ESVI9JycKU0RLX0xOSz0nJwpTRUQ9J3NlZCcKU0VUX01BS0U9 JycKU0hFTEw9Jy9iaW4vYmFzaCcKU1RSSVA9JzonClNVUFBSRVNTX0xJQkdDSl9CQ19GQUxTRT0n JwpTVVBQUkVTU19MSUJHQ0pfQkNfVFJVRT0nIycKU1lTREVQX1NPVVJDRVM9JycKU1lTVEVNU1BF Qz0nICcKU1lTX1pMSUJTPScnClRFU1RTVUJESVJfRkFMU0U9JyMnClRFU1RTVUJESVJfVFJVRT0n JwpUSFJFQURDWFhGTEFHUz0nJwpUSFJFQURERVBTPScnClRIUkVBRElOQ1M9JycKVEhSRUFETERG TEFHUz0nJwpUSFJFQURMSUJTPScnClRIUkVBRFNQRUM9JycKVEhSRUFEU1RBUlRGSUxFU1BFQz0n JwpUT09MS0lUPScnClVOWklQPSd1bnppcCcKVVNFX0xJQkdDSl9CQ19GQUxTRT0nJwpVU0VfTElC R0NKX0JDX1RSVUU9JyMnClVTSU5HX0JPRUhNR0NfRkFMU0U9JyMnClVTSU5HX0JPRUhNR0NfVFJV RT0nJwpVU0lOR19EQVJXSU5fQ1JUX0ZBTFNFPScnClVTSU5HX0RBUldJTl9DUlRfVFJVRT0nIycK VVNJTkdfR0NDX0ZBTFNFPScjJwpVU0lOR19HQ0NfVFJVRT0nJwpVU0lOR19OT0dDX0ZBTFNFPScn ClVTSU5HX05PR0NfVFJVRT0nIycKVVNJTkdfTk9fVEhSRUFEU19GQUxTRT0nJwpVU0lOR19OT19U SFJFQURTX1RSVUU9JyMnClVTSU5HX1BPU0lYX1BMQVRGT1JNX0ZBTFNFPScjJwpVU0lOR19QT1NJ WF9QTEFURk9STV9UUlVFPScnClVTSU5HX1BPU0lYX1RIUkVBRFNfRkFMU0U9JycKVVNJTkdfUE9T SVhfVEhSRUFEU19UUlVFPScjJwpVU0lOR19XSU4zMl9QTEFURk9STV9GQUxTRT0nJwpVU0lOR19X SU4zMl9QTEFURk9STV9UUlVFPScjJwpVU0lOR19XSU4zMl9USFJFQURTX0ZBTFNFPScnClVTSU5H X1dJTjMyX1RIUkVBRFNfVFJVRT0nIycKVkVSU0lPTj0ndmVyc2lvbi11bnVzZWQnClhMSUJfQVdU X0ZBTFNFPScnClhMSUJfQVdUX1RSVUU9JyMnClhNS01GPScnClhfQVdUX0ZBTFNFPScnClhfQVdU X1RSVUU9JyMnClhfQ0ZMQUdTPScnClhfRVhUUkFfTElCUz0nJwpYX0xJQlM9JycKWF9QUkVfTElC Uz0nJwpaSU5DUz0nLUkkKHRvcF9zcmNkaXIpLy4uL3psaWInClpJUD0nbm8nClpMSUJTPScuLi96 bGliL2xpYnpnY2pfY29udmVuaWVuY2UubGEnClpMSUJTUEVDPScnClpMSUJURVNUU1BFQz0nJwph Y19jdF9DQz0nJwphY19jdF9DWFg9JycKYWNfY3RfRFVNUEJJTj0nJwphY19jdF9HQ0o9JycKYW1f X0VYRUVYVF9GQUxTRT0nJwphbV9fRVhFRVhUX1RSVUU9JyMnCmFtX19mYXN0ZGVwQ0NfRkFMU0U9 JycKYW1fX2Zhc3RkZXBDQ19UUlVFPScjJwphbV9fZmFzdGRlcENYWF9GQUxTRT0nIycKYW1fX2Zh c3RkZXBDWFhfVFJVRT0nJwphbV9fZmFzdGRlcEdDSl9GQUxTRT0nJwphbV9fZmFzdGRlcEdDSl9U UlVFPScjJwphbV9faW5jbHVkZT0naW5jbHVkZScKYW1fX2lzcmM9JycKYW1fX2xlYWRpbmdfZG90 PScuJwphbV9fbm9kZXA9J19ubycKYW1fX3F1b3RlPScnCmFtX190YXI9JyQke1RBUi10YXJ9IGNo b2YgLSAiJCR0YXJkaXIiJwphbV9fdW50YXI9JyQke1RBUi10YXJ9IHhmIC0nCmJpbmRpcj0nJHtl eGVjX3ByZWZpeH0vYmluJwpidWlsZD0neDg2XzY0LXBjLWxpbnV4LWdudScKYnVpbGRfYWxpYXM9 JycKYnVpbGRfY3B1PSd4ODZfNjQnCmJ1aWxkX2xpYnN1YmRpcj0nYnVpbGQteDg2XzY0LXBjLWxp bnV4LWdudScKYnVpbGRfb3M9J2xpbnV4LWdudScKYnVpbGRfc3ViZGlyPSdidWlsZC14ODZfNjQt cGMtbGludXgtZ251JwpidWlsZF92ZW5kb3I9J3BjJwpkYXRhZGlyPScke2RhdGFyb290ZGlyfScK ZGF0YXJvb3RkaXI9JyR7cHJlZml4fS9zaGFyZScKZGJleGVjZGlyPSckKHRvb2xleGVjbGliZGly KS9nY2otMTMuMC4wLTE4Jwpkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFS TkFNRX0nCmR2aWRpcj0nJHtkb2NkaXJ9JwpleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwpleHRyYV9s ZGZsYWdzPScnCmV4dHJhX2xkZmxhZ3NfbGliamF2YT0nJwpnY2Nfc3VmZml4PScnCmdjanN1YmRp cj0nZ2NqLTEzLjAuMC0xOCcKZ3h4X2luY2x1ZGVfZGlyPScke3ByZWZpeH0vaW5jbHVkZS8kKGxp YnN0ZGN4eF9pbmNkaXIpJwpoZXJlPScvaG9tZS96b3BvbGlzNC9nY2ovbGliamF2YScKaG9zdD0n eDg2XzY0LXBjLWxpbnV4LWdudScKaG9zdF9hbGlhcz0nJwpob3N0X2NwdT0neDg2XzY0Jwpob3N0 X2V4ZWV4dD0nJwpob3N0X29zPSdsaW51eC1nbnUnCmhvc3Rfc3ViZGlyPScuJwpob3N0X3ZlbmRv cj0ncGMnCmh0bWxkaXI9JyR7ZG9jZGlyfScKaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUn CmluZm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nCmluc3RhbGxfc2g9JyR7U0hFTEx9IC9ob21l L3pvcG9saXM0L2djai9pbnN0YWxsLXNoJwpsaWJkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYicKbGli ZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycKbGlic3RkY3h4X2luY2Rpcj0nYysrLyQo Z2NjX3ZlcnNpb24pJwpsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScKbG9jYWxzdGF0 ZWRpcj0nJHtwcmVmaXh9L3ZhcicKbHRfaG9zdF9mbGFncz0nJwptYW5kaXI9JyR7ZGF0YXJvb3Rk aXJ9L21hbicKbWtkaXJfcD0nJChNS0RJUl9QKScKbWtpbnN0YWxsZGlycz0nL2hvbWUvem9wb2xp czQvZ2NqL21raW5zdGFsbGRpcnMnCm11bHRpX2Jhc2VkaXI9Jy4vLi4vLi4nCm9sZGluY2x1ZGVk aXI9Jy91c3IvaW5jbHVkZScKcGRmZGlyPScke2RvY2Rpcn0nCnByZWZpeD0nL3Vzci9sb2NhbCcK cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0ncyx4LHgsJwpwc2Rpcj0nJHtkb2NkaXJ9JwpweXRob25f bW9kX2Rpcj0nJHtwcmVmaXh9L3NoYXJlL2djYy0xMy4wLjAvcHl0aG9uL2xpYmphdmEnCnB5dGhv bl9tb2RfZGlyX2V4cGFuZGVkPScvdXNyL2xvY2FsL3NoYXJlL2djYy0xMy4wLjAvcHl0aG9uL2xp YmphdmEnCnJ1bnN0YXRlZGlyPScke2xvY2Fsc3RhdGVkaXJ9L3J1bicKc2JpbmRpcj0nJHtleGVj X3ByZWZpeH0vc2JpbicKc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCnN1YmRpcnM9JyBj bGFzc3BhdGggbGlibHRkbCcKc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKdGFyZ2V0PSd4ODZf NjQtcGMtbGludXgtZ251Jwp0YXJnZXRfYWxpYXM9JycKdGFyZ2V0X2NwdT0neDg2XzY0Jwp0YXJn ZXRfbm9uY2Fub25pY2FsPSd4ODZfNjQtcGMtbGludXgtZ251Jwp0YXJnZXRfb3M9J2xpbnV4LWdu dScKdGFyZ2V0X3N1YmRpcj0neDg2XzY0LXBjLWxpbnV4LWdudScKdGFyZ2V0X3ZlbmRvcj0ncGMn CnRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9ub25jYW5vbmljYWwpJwp0 b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpLycKdG9vbGV4ZWNtYWlubGliZGlyPSckKGxpYmRpcikn CgojIyAtLS0tLS0tLS0tLSAjIwojIyBjb25mZGVmcy5oLiAjIwojIyAtLS0tLS0tLS0tLSAjIwoK LyogY29uZmRlZnMuaCAqLwojZGVmaW5lIFBBQ0tBR0VfTkFNRSAibGliamF2YSIKI2RlZmluZSBQ QUNLQUdFX1RBUk5BTUUgImxpYmphdmEiCiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICJ2ZXJzaW9u LXVudXNlZCIKI2RlZmluZSBQQUNLQUdFX1NUUklORyAibGliamF2YSB2ZXJzaW9uLXVudXNlZCIK I2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAibGliamF2YSIKI2RlZmluZSBQQUNLQUdFX1VSTCAi IgojZGVmaW5lIFBBQ0tBR0UgImxpYmphdmEiCiNkZWZpbmUgVkVSU0lPTiAidmVyc2lvbi11bnVz ZWQiCiNkZWZpbmUgTFRETF9TSExJQlBBVEhfVkFSICJMRF9MSUJSQVJZX1BBVEgiCiNkZWZpbmUg QVdUX1RPT0xLSVQgIiIKI2RlZmluZSBMSUJHQ0pfUFJFRklYICIvdXNyL2xvY2FsIgojZGVmaW5l IFVTRV9MVERMIDEKI2RlZmluZSBMVF9PQkpESVIgIi5saWJzLyIKI2RlZmluZSBTTE9XX1BUSFJF QURfU0VMRiAxCiNkZWZpbmUgSU5URVJQUkVURVIgMQojZGVmaW5lIFVTRV9MSUJGRkkgMQojZGVm aW5lIEVOQUJMRV9KVk1QSSAxCiNkZWZpbmUgWF9ESVNQTEFZX01JU1NJTkcgMQojZGVmaW5lIEhB VkVfQk9FSE1fR0MgMQojZGVmaW5lIEpWX0hBU0hfU1lOQ0hST05JWkFUSU9OIDEKI2RlZmluZSBI QVZFX1BST0NfU0VMRl9FWEUgMQojZGVmaW5lIEhBVkVfUFJPQ19TRUxGX01BUFMgMQojZGVmaW5l IFRNX0lOX1NZU19USU1FIDEKI2RlZmluZSBIQVZFX0RFQ0xfVFpOQU1FIDAKI2RlZmluZSBTSVpF T0ZfVk9JRF9QIDAKI2RlZmluZSBHQ0pWRVJTSU9OICIxMy4wLjAiCiNkZWZpbmUgSlZfVkVSU0lP TiAiMS41LjAiCiNkZWZpbmUgSlZfQVBJX1ZFUlNJT04gIjEuNSIKI2RlZmluZSBzc2l6ZV90IGlu dAojZGVmaW5lIEhBVkVfR0VUSVBJTkZPIDEKCjogZXhpdCAwCg== --000000000000497bf305de9d4561--