From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2A45AC7EE23 for ; Mon, 12 Jun 2023 09:12:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=R/ZvBEi/BTeNPqId46K54j3wLI9iHszsd4SpAYtiUHU=; b=GzdQpaxxh/yeOR P8Zdb5jzdOTDuy61Or0Drsbqea4Qy7YXjDBiWWjx3Pf1/C+pKhB8FSnIpReq1xYrf796yV6mq8BlR O1mdRijnkscmfBMRZqFmT4BYf6mKd4/CqsyrnWgHDANGyW4TDTJ9VoxGD/PEkBSOmNogt2UGBPtFv aR1yMqJd/9b9NzoKiA+tK84bmbKUUbQdltewwvfZujz/pu/QtV2QAS9VbCFe1UtU5WLCKd3bYVimW 1trYVkERwbFTW5zDp5pMydhbLutBEciu++4UYPgjRsDwI3xPeRE83at5k0+KIhgy0afUuYSCwIVwj puXQl669hyOih3UTZTKA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q8daf-003F1D-18; Mon, 12 Jun 2023 09:11:57 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q8daZ-003Ezr-30 for linux-riscv@lists.infradead.org; Mon, 12 Jun 2023 09:11:55 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-5149390b20aso7178210a12.3 for ; Mon, 12 Jun 2023 02:11:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1686561110; x=1689153110; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=kCiLkRFGWIGQBIlMAHtN8jo9twSwm90kOudhyc0SYy0=; b=GZgO8p+Ir7VlcN2GoT4aqxWOmjnC/smENBQxiwTuVOcieES8RKAEMYSrJtK6oOzJp5 FtVrU8uzgPVncwtj11R5AHSt1R04u7t2HWY0HlFks1lsseuvs+yN1pLV/zBGt01ga/K2 JDJW5WGjWsModl0G5JOe68zLsjGg96Lxy+kMKy0j2l5t21q8ku+J9bZybKZoWaTGWYFp qU9HCcY/BGNBM0eg/WYbnhyFbzRpnMYmiEiLImFcBT4iUV3vNlK5lW0mFKnnTyRqHRhp cJsOgam/QQg9TLs3WFxs3db8FbT4JxH1gN+TTPW28FS+hhKKqFIrD0DEH5TalhTFUpDT 9KEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686561110; x=1689153110; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kCiLkRFGWIGQBIlMAHtN8jo9twSwm90kOudhyc0SYy0=; b=Wkiucz/1lcU7RAFntsOZ/SxxatQd6EykY6BMMXyDe5syYJ8heU64qU5cYn5gC9W3G1 wH4LB59OMGScPeQ5e8nUG7aAj07BFUuGU3u08/ipyTiqLUspJk9FqvcYM1IuWKD7iEXL SHiTNd5IhoVV4wOT//uL/5J4OQCcsaSAbPbT69N0Ls8UkZoie9qhlANHdwZI4vBD+5SQ SVglnAGEFjG5uItjm9Ti5stMzSY4QsJsSUNmf63+r7hSe3N7fnXhqux6ed67MIVlQzP4 ei0v6ollALKjW4yeFUmgX545jIFfv6jvYIfYGjBhBYCW/3XeEORLMpODSIryellFFHrP +rxA== X-Gm-Message-State: AC+VfDwbJDyN5uee/saIUpSh5168ImU6qHpwnvjr29wo8TR9BuLTkXxw M9NzQ7hXuGhTwo4D3AZG1eJH0g== X-Google-Smtp-Source: ACHHUZ6pSiZRHkLuKfDKL/BKHBizzpMSCtIBXRhT62gcTidgZFLS1NF+75ld0iB9tCoJHvMxEPeXVQ== X-Received: by 2002:a17:907:320e:b0:978:acec:36c0 with SMTP id xg14-20020a170907320e00b00978acec36c0mr8734361ejb.9.1686561107967; Mon, 12 Jun 2023 02:11:47 -0700 (PDT) Received: from localhost (2001-1ae9-1c2-4c00-20f-c6b4-1e57-7965.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:20f:c6b4:1e57:7965]) by smtp.gmail.com with ESMTPSA id lr12-20020a170906fb8c00b00959b3c30f2csm4858862ejb.222.2023.06.12.02.11.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jun 2023 02:11:47 -0700 (PDT) Date: Mon, 12 Jun 2023 11:11:46 +0200 From: Andrew Jones To: Haibo Xu Cc: Haibo Xu , maz@kernel.org, oliver.upton@linux.dev, seanjc@google.com, Paolo Bonzini , Jonathan Corbet , Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Shuah Khan , James Morse , Suzuki K Poulose , Zenghui Yu , Ben Gardon , David Matlack , Vipin Sharma , Colton Lewis , kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Subject: Re: [PATCH v3 10/10] KVM: riscv: selftests: Add get-reg-list test Message-ID: <20230612-b6c96bf6ec13426641a819dd@orel> References: <8cd4ce50f5f4a639f4508085959aae222d4d4386.1686275310.git.haibo1.xu@intel.com> <20230609-fba04b424a4d46574e04e587@orel> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230612_021152_006311_65266784 X-CRM114-Status: GOOD ( 36.97 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gU2F0LCBKdW4gMTAsIDIwMjMgYXQgMTE6MTI6MTVBTSArMDgwMCwgSGFpYm8gWHUgd3JvdGU6 Cj4gT24gRnJpLCBKdW4gOSwgMjAyMyBhdCA5OjM14oCvUE0gQW5kcmV3IEpvbmVzIDxham9uZXNA dmVudGFuYW1pY3JvLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gRnJpLCBKdW4gMDksIDIwMjMgYXQg MTA6MTI6MThBTSArMDgwMCwgSGFpYm8gWHUgd3JvdGU6Cj4gPiA+IGdldC1yZWctbGlzdCB0ZXN0 IGlzIHVzZWQgdG8gY2hlY2sgZm9yIEtWTSByZWdpc3RlcnMgcmVncmVzc2lvbnMKPiA+ID4gZHVy aW5nIFZNIG1pZ3JhdGlvbiB3aGljaCBoYXBwZW5zIHdoZW4gZGVzdGluYXRpb24gaG9zdCBrZXJu ZWwKPiA+ID4gbWlzc2luZyByZWdpc3RlcnMgdGhhdCB0aGUgc291cmNlIGhvc3Qga2VybmVsIGhh cy4gVGhlIGJsZXNzZWQKPiA+ID4gbGlzdCByZWdpc3RlcnMgd2FzIGNyZWF0ZWQgYnkgcnVubmlu ZyBvbiB2Ni40LXJjNS4KPiA+ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogSGFpYm8gWHUgPGhhaWJv MS54dUBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv a3ZtL01ha2VmaWxlICAgICAgICAgIHwgICAxICsKPiA+ID4gIHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL2t2bS9nZXQtcmVnLWxpc3QuYyAgICB8ICAyOCArCj4gPiA+ICAuLi4vc2VsZnRlc3RzL2t2 bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oICAgfCAgIDMgKwo+ID4gPiAgLi4uL3NlbGZ0ZXN0 cy9rdm0vcmlzY3YvZ2V0LXJlZy1saXN0LmMgICAgICAgIHwgNjExICsrKysrKysrKysrKysrKysr Kwo+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCA2NDMgaW5zZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9yaXNjdi9nZXQtcmVnLWxp c3QuYwo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3Zt L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlCj4gPiA+IGlu ZGV4IGQ5MGNhZDE5YzllZS4uZjdiY2RhOTAzZGQ5IDEwMDY0NAo+ID4gPiAtLS0gYS90b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUKPiA+ID4gKysrIGIvdG9vbHMvdGVzdGluZy9z ZWxmdGVzdHMva3ZtL01ha2VmaWxlCj4gPiA+IEBAIC0xNzQsNiArMTc0LDcgQEAgVEVTVF9HRU5f UFJPR1NfczM5MHggKz0ga3ZtX2JpbmFyeV9zdGF0c190ZXN0Cj4gPiA+Cj4gPiA+ICBURVNUX0dF Tl9QUk9HU19yaXNjdiArPSBkZW1hbmRfcGFnaW5nX3Rlc3QKPiA+ID4gIFRFU1RfR0VOX1BST0dT X3Jpc2N2ICs9IGRpcnR5X2xvZ190ZXN0Cj4gPiA+ICtURVNUX0dFTl9QUk9HU19yaXNjdiArPSBn ZXQtcmVnLWxpc3QKPiA+ID4gIFRFU1RfR0VOX1BST0dTX3Jpc2N2ICs9IGt2bV9jcmVhdGVfbWF4 X3ZjcHVzCj4gPiA+ICBURVNUX0dFTl9QUk9HU19yaXNjdiArPSBrdm1fcGFnZV90YWJsZV90ZXN0 Cj4gPiA+ICBURVNUX0dFTl9QUk9HU19yaXNjdiArPSBzZXRfbWVtb3J5X3JlZ2lvbl90ZXN0Cj4g PiA+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZ2V0LXJlZy1saXN0 LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZ2V0LXJlZy1saXN0LmMKPiA+ID4gaW5k ZXggYWJhY2I5NWMyMWM2Li43M2Y0MGUwODQyYjggMTAwNjQ0Cj4gPiA+IC0tLSBhL3Rvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL2t2bS9nZXQtcmVnLWxpc3QuYwo+ID4gPiArKysgYi90b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy9rdm0vZ2V0LXJlZy1saXN0LmMKPiA+ID4gQEAgLTEzMyw2ICsxMzMsMzQg QEAgc3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqdmNwdV9jb25maWdfZ2V0X3ZjcHUoc3RydWN0IHZj cHVfcmVnX2xpc3QgKmMsIHN0cnVjdCBrdm0KPiA+ID4gICAgICAgcmV0dXJuIHZjcHU7Cj4gPiA+ ICB9Cj4gPiA+ICAjZWxzZQo+ID4gPiArc3RhdGljIGlubGluZSBib29sIHZjcHVfaGFzX2V4dChz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBleHQpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIGludCBy ZXQ7Cj4gPiA+ICsgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7Cj4gPiA+ICsKPiA+ID4gKyAgICAg cmV0ID0gX192Y3B1X2dldF9yZWcodmNwdSwgUklTQ1ZfSVNBX0VYVF9SRUcoZXh0KSwgJnZhbHVl KTsKPiA+ID4gKyAgICAgaWYgKHJldCkgewo+ID4gPiArICAgICAgICAgICAgIHByaW50ZigiRmFp bGVkIHRvIGdldCBleHQgJWQiLCBleHQpOwo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiAhIXZhbHVlOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBmaW5hbGl6ZV92Y3B1KHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgc3RydWN0IHZjcHVfcmVnX2xpc3QgKmMpCj4gPiA+ICt7Cj4gPiA+ICsgICAg IHN0cnVjdCB2Y3B1X3JlZ19zdWJsaXN0ICpzOwo+ID4gPiArCj4gPiA+ICsgICAgIGZvcl9lYWNo X3N1Ymxpc3QoYywgcykgewo+ID4gPiArICAgICAgICAgICAgIGlmICghcy0+ZmVhdHVyZSkKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4KPiA+IFVzaW5nIHplcm8gdG8g bWVhbiAibm90IHNwZWNpZmllZCIgbWVhbnMgd2UgY2FuJ3QgdGVzdCBmb3IKPiA+IEtWTV9SSVND Vl9JU0FfRVhUX0EsIGJ1dCB0aGF0J3MgcHJvYmFibHkgT0ssIHNpbmNlIExpbnV4IGFsd2F5cyBo YXMgJ2EnLAo+ID4gc28gd2UnbGwgbmV2ZXIgbmVlZCB0byBjaGVjayBmb3IgaXQuCj4gPgo+IAo+ IEFsbW9zdCBhbGwgdGhlIGZlYXR1cmVzIHdvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3Ig UklTQy1WIHZDUFUgaWYKPiB0aGUgaG9zdCBoYXMgdGhlIGNvcnJlc3BvbmRpbmcgZXh0ZW5zaW9u Lgo+IEp1c3QgbGVhdmUgdGhlIGdhdGVrZWVwZXIgdG8gdGhlIHZjcHVfZmluaWFsaXplKCkgdG8g Y2hlY2sgd2hldGhlciB0aGUKPiBmZWF0dXJlIHdhcyBzdXBwb3J0ZWQgYmVmb3JlIHRyaWdnZXJp bmcgdGhlIHRlc3QuCgpZZXMsIGJ1dCB5b3UgY2FuJ3QgY2hlY2sgaWYgJ2EnIGlzIGF2YWlsYWJs ZSBoZXJlLCBiZWNhdXNlCktWTV9SSVNDVl9JU0FfRVhUX0EgaXMgMCBhbmQgMCBhbHNvIG1lYW5z ICJub3Qgc3BlY2lmaWVkIiwgYXMKc2hvd24gYWJvdmUgd2l0aCB0aGUgImlmIDAsIGNvbnRpbnVl Ii4gQnV0LCBhcyBJIHNhaWQsIGl0CmRvZXNuJ3QgbWF0dGVyLiAnYScgd2lsbCBhbHdheXMgYmUg cHJlc2VudC4KCj4gCj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBfX1RFU1RfUkVRVUlSRSh2 Y3B1X2hhc19leHQodmNwdSwgcy0+ZmVhdHVyZSksCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiVzOiAlcyBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0c1xuIiwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfbmFtZShjKSwgcy0+bmFtZSk7Cj4g PiA+ICsgICAgIH0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgc3RhdGljIHN0cnVjdCBrdm1fdmNw dSAqdmNwdV9jb25maWdfZ2V0X3ZjcHUoc3RydWN0IHZjcHVfcmVnX2xpc3QgKmMsIHN0cnVjdCBr dm1fdm0gKnZtKQo+ID4gPiAgewo+ID4gPiAgICAgICByZXR1cm4gX192bV92Y3B1X2FkZCh2bSwg MCk7Cj4gPiA+IGRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVk ZS9yaXNjdi9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRl L3Jpc2N2L3Byb2Nlc3Nvci5oCj4gPiA+IGluZGV4IGQwMGQyMTNjMzgwNS4uNWI2MmEzZDJhYTli IDEwMDY0NAo+ID4gPiAtLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9y aXNjdi9wcm9jZXNzb3IuaAo+ID4gPiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0v aW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaAo+ID4gPiBAQCAtMzgsNiArMzgsOSBAQCBzdGF0aWMg aW5saW5lIHVpbnQ2NF90IF9fa3ZtX3JlZ19pZCh1aW50NjRfdCB0eXBlLCB1aW50NjRfdCBpZHgs Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVk1fUkVH X1JJU0NWX1RJTUVSX1JFRyhuYW1lKSwgXAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgS1ZNX1JFR19TSVpFX1U2NCkKPiA+ID4KPiA+ID4gKyNkZWZpbmUg UklTQ1ZfSVNBX0VYVF9SRUcoaWR4KSAgICAgICBfX2t2bV9yZWdfaWQoS1ZNX1JFR19SSVNDVl9J U0FfRVhULCBcCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZHgsIEtWTV9SRUdfU0laRV9VTE9ORykKPiA+ID4gKwo+ID4gPiAgLyogTDMgaW5kZXggQml0 WzQ3OjM5XSAqLwo+ID4gPiAgI2RlZmluZSBQR1RCTF9MM19JTkRFWF9NQVNLICAgICAgICAgICAg ICAgICAgMHgwMDAwRkY4MDAwMDAwMDAwVUxMCj4gPiA+ICAjZGVmaW5lIFBHVEJMX0wzX0lOREVY X1NISUZUICAgICAgICAgICAgICAgICAzOQo+ID4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMva3ZtL3Jpc2N2L2dldC1yZWctbGlzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMva3ZtL3Jpc2N2L2dldC1yZWctbGlzdC5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMGYzNzFkOTlkNDcxCj4gPiA+IC0tLSAvZGV2L251 bGwKPiA+ID4gKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3Jpc2N2L2dldC1yZWct bGlzdC5jCj4gPiA+IEBAIC0wLDAgKzEsNjExIEBACj4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAo+ID4gPiArLyoKPiA+ID4gKyAqIENoZWNrIGZvciBLVk1fR0VUX1JF R19MSVNUIHJlZ3Jlc3Npb25zLgo+ID4gPiArICoKPiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAy MCwgUmVkIEhhdCwgSW5jLgo+ID4KPiA+IEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0aGUgUmVkIEhh dCBjb3B5cmlnaHQuIFRoaXMgaXMgYSBjb21wbGV0ZWx5IG5ldwo+ID4gd29yay4KPiA+Cj4gCj4g U3VyZSwgd2lsbCByZW1vdmUgaXQuCj4gCj4gPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgSW50 ZWwgQ29ycG9yYXRpb24KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4gKyNpbmNsdWRlIDxzdGRp by5oPgo+ID4gPiArI2luY2x1ZGUgImt2bV91dGlsLmgiCj4gPiA+ICsjaW5jbHVkZSAidGVzdF91 dGlsLmgiCj4gPiA+ICsjaW5jbHVkZSAicHJvY2Vzc29yLmgiCj4gPiA+ICsKPiA+ID4gKyNkZWZp bmUgUkVHX01BU0sgKEtWTV9SRUdfQVJDSF9NQVNLIHwgS1ZNX1JFR19TSVpFX01BU0spCj4gPiA+ ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBjaGFyICpjb25maWdfaWRfdG9fc3RyKF9fdTY0IGlkKQo+ ID4gPiArewo+ID4gPiArICAgICAvKiByZWdfb2ZmIGlzIHRoZSBvZmZzZXQgaW50byBzdHJ1Y3Qg a3ZtX3Jpc2N2X2NvbmZpZyAqLwo+ID4gPiArICAgICBfX3U2NCByZWdfb2ZmID0gaWQgJiB+KFJF R19NQVNLIHwgS1ZNX1JFR19SSVNDVl9DT05GSUcpOwo+ID4gPiArCj4gPiA+ICsgICAgIHN3aXRj aCAocmVnX29mZikgewo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09ORklHX1JFRyhp c2EpOgo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAiS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVH KGlzYSkiOwo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09ORklHX1JFRyh6aWNib21f YmxvY2tfc2l6ZSk6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX0NP TkZJR19SRUcoemljYm9tX2Jsb2NrX3NpemUpIjsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJ U0NWX0NPTkZJR19SRUcoemljYm96X2Jsb2NrX3NpemUpOgo+ID4gPiArICAgICAgICAgICAgIHJl dHVybiAiS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVHKHppY2Jvel9ibG9ja19zaXplKSI7Cj4gPiA+ ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVHKG12ZW5kb3JpZCk6Cj4gPiA+ICsg ICAgICAgICAgICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX0NPTkZJR19SRUcobXZlbmRvcmlkKSI7 Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVHKG1hcmNoaWQpOgo+ID4g PiArICAgICAgICAgICAgIHJldHVybiAiS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVHKG1hcmNoaWQp IjsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NPTkZJR19SRUcobWltcGlkKToKPiA+ ID4gKyAgICAgICAgICAgICByZXR1cm4gIktWTV9SRUdfUklTQ1ZfQ09ORklHX1JFRyhtaW1waWQp IjsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIC8qCj4gPiA+ICsgICAgICAqIENv bmZpZyByZWdzIHdvdWxkIGdyb3cgcmVndWxhcmx5IHdpdGggbmV3IHBzZXVkbyByZWcgYWRkZWQs IHNvCj4gPiA+ICsgICAgICAqIGp1c3Qgc2hvdyByYXcgaWQgdG8gaW5kaWNhdGUgYSBuZXcgcHNl dWRvIGNvbmZpZyByZWcuCj4gPiA+ICsgICAgICAqLwo+ID4gPiArICAgICByZXR1cm4gc3RyZHVw X3ByaW50ZigiS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVHKCVsbGQpIC8qIFVOS05PV04gKi8iLCBy ZWdfb2ZmKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IGNoYXIgKmNvcmVf aWRfdG9fc3RyKGNvbnN0IGNoYXIgKnByZWZpeCwgX191NjQgaWQpCj4gPiA+ICt7Cj4gPiA+ICsg ICAgIC8qIHJlZ19vZmYgaXMgdGhlIG9mZnNldCBpbnRvIHN0cnVjdCBrdm1fcmlzY3ZfY29yZSAq Lwo+ID4gPiArICAgICBfX3U2NCByZWdfb2ZmID0gaWQgJiB+KFJFR19NQVNLIHwgS1ZNX1JFR19S SVNDVl9DT1JFKTsKPiA+ID4gKwo+ID4gPiArICAgICBzd2l0Y2ggKHJlZ19vZmYpIHsKPiA+ID4g KyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MucGMpOgo+ID4gPiArICAgICAg ICAgICAgIHJldHVybiAiS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnBjKSI7Cj4gPiA+ICsg ICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnJhKToKPiA+ID4gKyAgICAgICAg ICAgICByZXR1cm4gIktWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5yYSkiOwo+ID4gPiArICAg ICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5zcCk6Cj4gPiA+ICsgICAgICAgICAg ICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3Muc3ApIjsKPiA+ID4gKyAgICAg Y2FzZSBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MuZ3ApOgo+ID4gPiArICAgICAgICAgICAg IHJldHVybiAiS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLmdwKSI7Cj4gPiA+ICsgICAgIGNh c2UgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnRwKToKPiA+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gIktWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy50cCkiOwo+ID4gPiArICAgICBjYXNl IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy50MCkgLi4uIEtWTV9SRUdfUklTQ1ZfQ09SRV9S RUcocmVncy50Mik6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHN0cmR1cF9wcmludGYoIktW TV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy50JWxsZCkiLAo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgcmVnX29mZiAtIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy50MCkpOwo+ID4g PiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5zMCkgLi4uIEtWTV9SRUdf UklTQ1ZfQ09SRV9SRUcocmVncy5zMSk6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHN0cmR1 cF9wcmludGYoIktWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5zJWxsZCkiLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgcmVnX29mZiAtIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVn cy5zMCkpOwo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5hMCkg Li4uIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5hNyk6Cj4gPiA+ICsgICAgICAgICAgICAg cmV0dXJuIHN0cmR1cF9wcmludGYoIktWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5hJWxsZCki LAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29mZiAtIEtWTV9SRUdfUklTQ1Zf Q09SRV9SRUcocmVncy5hMCkpOwo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09SRV9S RUcocmVncy5zMikgLi4uIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5zMTEpOgo+ID4gPiAr ICAgICAgICAgICAgIHJldHVybiBzdHJkdXBfcHJpbnRmKCJLVk1fUkVHX1JJU0NWX0NPUkVfUkVH KHJlZ3MucyVsbGQpIiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vZmYgLSBL Vk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MuczIpICsgMik7Cj4gPiA+ICsgICAgIGNhc2UgS1ZN X1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnQzKSAuLi4gS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhy ZWdzLnQ2KToKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gc3RyZHVwX3ByaW50ZigiS1ZNX1JF R19SSVNDVl9DT1JFX1JFRyhyZWdzLnQlbGxkKSIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICByZWdfb2ZmIC0gS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnQzKSArIDMpOwo+ID4g PiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcobW9kZSk6Cj4gPiA+ICsgICAgICAg ICAgICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKG1vZGUpIjsKPiA+ID4gKyAgICAg fQo+ID4gPiArCj4gPiA+ICsgICAgIFRFU1RfRkFJTCgiJXM6IFVua25vd24gY29yZSByZWcgaWQ6 IDB4JWxseCIsIHByZWZpeCwgaWQpOwo+ID4gPiArICAgICByZXR1cm4gTlVMTDsKPiA+ID4gK30K PiA+ID4gKwo+ID4gPiArI2RlZmluZSBSSVNDVl9DU1JfR0VORVJBTChjc3IpIFwKPiA+ID4gKyAg ICAgIktWTV9SRUdfUklTQ1ZfQ1NSX0dFTkVSQUwgfCBLVk1fUkVHX1JJU0NWX0NTUl9SRUcoIiAj Y3NyICIpIgo+ID4gPiArI2RlZmluZSBSSVNDVl9DU1JfQUlBKGNzcikgXAo+ID4gPiArICAgICAi S1ZNX1JFR19SSVNDVl9DU1JfQUlBIHwgS1ZNX1JFR19SSVNDVl9DU1JfUkVHKCIgI2NzciAiKSIK PiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IGNoYXIgKmdlbmVyYWxfY3NyX2lkX3RvX3N0cihf X3U2NCByZWdfb2ZmKQo+ID4gPiArewo+ID4gPiArICAgICAvKiByZWdfb2ZmIGlzIHRoZSBvZmZz ZXQgaW50byBzdHJ1Y3Qga3ZtX3Jpc2N2X2NzciAqLwo+ID4gPiArICAgICBzd2l0Y2ggKHJlZ19v ZmYpIHsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NTUl9SRUcoc3N0YXR1cyk6Cj4g PiA+ICsgICAgICAgICAgICAgcmV0dXJuIFJJU0NWX0NTUl9HRU5FUkFMKHNzdGF0dXMpOwo+ID4g PiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ1NSX1JFRyhzaWUpOgo+ID4gPiArICAgICAgICAg ICAgIHJldHVybiBSSVNDVl9DU1JfR0VORVJBTChzaWUpOwo+ID4gPiArICAgICBjYXNlIEtWTV9S RUdfUklTQ1ZfQ1NSX1JFRyhzdHZlYyk6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFJJU0NW X0NTUl9HRU5FUkFMKHN0dmVjKTsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NTUl9S RUcoc3NjcmF0Y2gpOgo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBSSVNDVl9DU1JfR0VORVJB TChzc2NyYXRjaCk7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DU1JfUkVHKHNlcGMp Ogo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBSSVNDVl9DU1JfR0VORVJBTChzZXBjKTsKPiA+ ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NTUl9SRUcoc2NhdXNlKToKPiA+ID4gKyAgICAg ICAgICAgICByZXR1cm4gUklTQ1ZfQ1NSX0dFTkVSQUwoc2NhdXNlKTsKPiA+ID4gKyAgICAgY2Fz ZSBLVk1fUkVHX1JJU0NWX0NTUl9SRUcoc3R2YWwpOgo+ID4gPiArICAgICAgICAgICAgIHJldHVy biBSSVNDVl9DU1JfR0VORVJBTChzdHZhbCk7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVND Vl9DU1JfUkVHKHNpcCk6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFJJU0NWX0NTUl9HRU5F UkFMKHNpcCk7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DU1JfUkVHKHNhdHApOgo+ ID4gPiArICAgICAgICAgICAgIHJldHVybiBSSVNDVl9DU1JfR0VORVJBTChzYXRwKTsKPiA+ID4g KyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NTUl9SRUcoc2NvdW50ZXJlbik6Cj4gPiA+ICsgICAg ICAgICAgICAgcmV0dXJuIFJJU0NWX0NTUl9HRU5FUkFMKHNjb3VudGVyZW4pOwo+ID4gPiArICAg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgVEVTVF9GQUlMKCJVbmtub3duIGdlbmVyYWwgY3NyIHJl ZzogMHglbGx4IiwgcmVnX29mZik7Cj4gPiA+ICsgICAgIHJldHVybiBOVUxMOwo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqYWlhX2Nzcl9pZF90b19zdHIoX191NjQg cmVnX29mZikKPiA+ID4gK3sKPiA+ID4gKyAgICAgLyogcmVnX29mZiBpcyB0aGUgb2Zmc2V0IGlu dG8gc3RydWN0IGt2bV9yaXNjdl9haWFfY3NyICovCj4gPiA+ICsgICAgIHN3aXRjaCAocmVnX29m Zikgewo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQV9SRUcoc2lzZWxlY3Qp Ogo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBSSVNDVl9DU1JfQUlBKHNpc2VsZWN0KTsKPiA+ ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NTUl9BSUFfUkVHKGlwcmlvMSk6Cj4gPiA+ICsg ICAgICAgICAgICAgcmV0dXJuIFJJU0NWX0NTUl9BSUEoaXByaW8xKTsKPiA+ID4gKyAgICAgY2Fz ZSBLVk1fUkVHX1JJU0NWX0NTUl9BSUFfUkVHKGlwcmlvMik6Cj4gPiA+ICsgICAgICAgICAgICAg cmV0dXJuIFJJU0NWX0NTUl9BSUEoaXByaW8yKTsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJ U0NWX0NTUl9BSUFfUkVHKHNpZWgpOgo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBSSVNDVl9D U1JfQUlBKHNpZWgpOwo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQV9SRUco c2lwaCk6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFJJU0NWX0NTUl9BSUEoc2lwaCk7Cj4g PiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DU1JfQUlBX1JFRyhpcHJpbzFoKToKPiA+ID4g KyAgICAgICAgICAgICByZXR1cm4gUklTQ1ZfQ1NSX0FJQShpcHJpbzFoKTsKPiA+ID4gKyAgICAg Y2FzZSBLVk1fUkVHX1JJU0NWX0NTUl9BSUFfUkVHKGlwcmlvMmgpOgo+ID4gPiArICAgICAgICAg ICAgIHJldHVybiBSSVNDVl9DU1JfQUlBKGlwcmlvMmgpOwo+ID4gPiArICAgICB9Cj4gPiA+ICsK PiA+ID4gKyAgICAgVEVTVF9GQUlMKCJVbmtub3duIGFpYSBjc3IgcmVnOiAweCVsbHgiLCByZWdf b2ZmKTsKPiA+ID4gKyAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyBjb25zdCBjaGFyICpjc3JfaWRfdG9fc3RyKGNvbnN0IGNoYXIgKnByZWZpeCwgX191NjQg aWQpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIF9fdTY0IHJlZ19vZmYgPSBpZCAmIH4oUkVHX01BU0sg fCBLVk1fUkVHX1JJU0NWX0NTUik7Cj4gPiA+ICsgICAgIF9fdTY0IHJlZ19zdWJ0eXBlID0gcmVn X29mZiAmIEtWTV9SRUdfUklTQ1ZfU1VCVFlQRV9NQVNLOwo+ID4gPiArCj4gPiA+ICsgICAgIHJl Z19vZmYgJj0gfktWTV9SRUdfUklTQ1ZfU1VCVFlQRV9NQVNLOwo+ID4gPiArCj4gPiA+ICsgICAg IHN3aXRjaCAocmVnX3N1YnR5cGUpIHsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX0NT Ul9HRU5FUkFMOgo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBnZW5lcmFsX2Nzcl9pZF90b19z dHIocmVnX29mZik7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DU1JfQUlBOgo+ID4g PiArICAgICAgICAgICAgIHJldHVybiBhaWFfY3NyX2lkX3RvX3N0cihyZWdfb2ZmKTsKPiA+ID4g KyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIFRFU1RfRkFJTCgiJXM6IFVua25vd24gY3NyIHN1 YnR5cGU6IDB4JWxseCIsIHByZWZpeCwgcmVnX3N1YnR5cGUpOwo+ID4gPiArICAgICByZXR1cm4g TlVMTDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IGNoYXIgKnRpbWVyX2lk X3RvX3N0cihjb25zdCBjaGFyICpwcmVmaXgsIF9fdTY0IGlkKQo+ID4gPiArewo+ID4gPiArICAg ICAvKiByZWdfb2ZmIGlzIHRoZSBvZmZzZXQgaW50byBzdHJ1Y3Qga3ZtX3Jpc2N2X3RpbWVyICov Cj4gPiA+ICsgICAgIF9fdTY0IHJlZ19vZmYgPSBpZCAmIH4oUkVHX01BU0sgfCBLVk1fUkVHX1JJ U0NWX1RJTUVSKTsKPiA+ID4gKwo+ID4gPiArICAgICBzd2l0Y2ggKHJlZ19vZmYpIHsKPiA+ID4g KyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyhmcmVxdWVuY3kpOgo+ID4gPiArICAg ICAgICAgICAgIHJldHVybiAiS1ZNX1JFR19SSVNDVl9USU1FUl9SRUcoZnJlcXVlbmN5KSI7Cj4g PiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9USU1FUl9SRUcodGltZSk6Cj4gPiA+ICsgICAg ICAgICAgICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyh0aW1lKSI7Cj4gPiA+ICsg ICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9USU1FUl9SRUcoY29tcGFyZSk6Cj4gPiA+ICsgICAgICAg ICAgICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyhjb21wYXJlKSI7Cj4gPiA+ICsg ICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9USU1FUl9SRUcoc3RhdGUpOgo+ID4gPiArICAgICAgICAg ICAgIHJldHVybiAiS1ZNX1JFR19SSVNDVl9USU1FUl9SRUcoc3RhdGUpIjsKPiA+ID4gKyAgICAg fQo+ID4gPiArCj4gPiA+ICsgICAgIFRFU1RfRkFJTCgiJXM6IFVua25vd24gdGltZXIgcmVnIGlk OiAweCVsbHgiLCBwcmVmaXgsIGlkKTsKPiA+ID4gKyAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ICt9 Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBjaGFyICpmcF9mX2lkX3RvX3N0cihjb25zdCBj aGFyICpwcmVmaXgsIF9fdTY0IGlkKQo+ID4gPiArewo+ID4gPiArICAgICAvKiByZWdfb2ZmIGlz IHRoZSBvZmZzZXQgaW50byBzdHJ1Y3QgX19yaXNjdl9mX2V4dF9zdGF0ZSAqLwo+ID4gPiArICAg ICBfX3U2NCByZWdfb2ZmID0gaWQgJiB+KFJFR19NQVNLIHwgS1ZNX1JFR19SSVNDVl9GUF9GKTsK PiA+ID4gKwo+ID4gPiArICAgICBzd2l0Y2ggKHJlZ19vZmYpIHsKPiA+ID4gKyAgICAgY2FzZSBL Vk1fUkVHX1JJU0NWX0ZQX0ZfUkVHKGZbMF0pIC4uLgo+ID4gPiArICAgICAgICAgIEtWTV9SRUdf UklTQ1ZfRlBfRl9SRUcoZlszMV0pOgo+ID4gPiArICAgICAgICAgICAgIHJldHVybiBzdHJkdXBf cHJpbnRmKCJLVk1fUkVHX1JJU0NWX0ZQX0ZfUkVHKGZbJWxsZF0pIiwgcmVnX29mZik7Cj4gPiA+ ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9GUF9GX1JFRyhmY3NyKToKPiA+ID4gKyAgICAgICAg ICAgICByZXR1cm4gIktWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZmNzcikiOwo+ID4gPiArICAgICB9 Cj4gPiA+ICsKPiA+ID4gKyAgICAgVEVTVF9GQUlMKCIlczogVW5rbm93biBmcF9mIHJlZyBpZDog MHglbGx4IiwgcHJlZml4LCBpZCk7Cj4gPiA+ICsgICAgIHJldHVybiBOVUxMOwo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqZnBfZF9pZF90b19zdHIoY29uc3QgY2hh ciAqcHJlZml4LCBfX3U2NCBpZCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgLyogcmVnX29mZiBpcyB0 aGUgb2Zmc2V0IGludG8gc3RydWN0IF9fcmlzY3ZfZF9leHRfc3RhdGUgKi8KPiA+ID4gKyAgICAg X191NjQgcmVnX29mZiA9IGlkICYgfihSRUdfTUFTSyB8IEtWTV9SRUdfUklTQ1ZfRlBfRCk7Cj4g PiA+ICsKPiA+ID4gKyAgICAgc3dpdGNoIChyZWdfb2ZmKSB7Cj4gPiA+ICsgICAgIGNhc2UgS1ZN X1JFR19SSVNDVl9GUF9EX1JFRyhmWzBdKSAuLi4KPiA+ID4gKyAgICAgICAgICBLVk1fUkVHX1JJ U0NWX0ZQX0RfUkVHKGZbMzFdKToKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gc3RyZHVwX3By aW50ZigiS1ZNX1JFR19SSVNDVl9GUF9EX1JFRyhmWyVsbGRdKSIsIHJlZ19vZmYpOwo+ID4gPiAr ICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfRlBfRF9SRUcoZmNzcik6Cj4gPiA+ICsgICAgICAgICAg ICAgcmV0dXJuICJLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZjc3IpIjsKPiA+ID4gKyAgICAgfQo+ ID4gPiArCj4gPiA+ICsgICAgIFRFU1RfRkFJTCgiJXM6IFVua25vd24gZnBfZCByZWcgaWQ6IDB4 JWxseCIsIHByZWZpeCwgaWQpOwo+ID4gPiArICAgICByZXR1cm4gTlVMTDsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IGNoYXIgKmlzYV9leHRfaWRfdG9fc3RyKF9fdTY0IGlk KQo+ID4gPiArewo+ID4gPiArICAgICAvKiByZWdfb2ZmIGlzIHRoZSBvZmZzZXQgaW50byB1bnNp Z25lZCBsb25nIGt2bV9pc2FfZXh0X2FycltdICovCj4gPiA+ICsgICAgIF9fdTY0IHJlZ19vZmYg PSBpZCAmIH4oUkVHX01BU0sgfCBLVk1fUkVHX1JJU0NWX0lTQV9FWFQpOwo+ID4gPiArCj4gPiA+ ICsgICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qga3ZtX2lzYV9leHRfcmVnX25hbWVbXSA9 IHsKPiA+ID4gKyAgICAgICAgICAgICAiS1ZNX1JJU0NWX0lTQV9FWFRfQSIsCj4gPiA+ICsgICAg ICAgICAgICAgIktWTV9SSVNDVl9JU0FfRVhUX0MiLAo+ID4gPiArICAgICAgICAgICAgICJLVk1f UklTQ1ZfSVNBX0VYVF9EIiwKPiA+ID4gKyAgICAgICAgICAgICAiS1ZNX1JJU0NWX0lTQV9FWFRf RiIsCj4gPiA+ICsgICAgICAgICAgICAgIktWTV9SSVNDVl9JU0FfRVhUX0giLAo+ID4gPiArICAg ICAgICAgICAgICJLVk1fUklTQ1ZfSVNBX0VYVF9JIiwKPiA+ID4gKyAgICAgICAgICAgICAiS1ZN X1JJU0NWX0lTQV9FWFRfTSIsCj4gPiA+ICsgICAgICAgICAgICAgIktWTV9SSVNDVl9JU0FfRVhU X1NWUEJNVCIsCj4gPiA+ICsgICAgICAgICAgICAgIktWTV9SSVNDVl9JU0FfRVhUX1NTVEMiLAo+ ID4gPiArICAgICAgICAgICAgICJLVk1fUklTQ1ZfSVNBX0VYVF9TVklOVkFMIiwKPiA+ID4gKyAg ICAgICAgICAgICAiS1ZNX1JJU0NWX0lTQV9FWFRfWklISU5UUEFVU0UiLAo+ID4gPiArICAgICAg ICAgICAgICJLVk1fUklTQ1ZfSVNBX0VYVF9aSUNCT00iLAo+ID4gPiArICAgICAgICAgICAgICJL Vk1fUklTQ1ZfSVNBX0VYVF9aSUNCT1oiLAo+ID4gPiArICAgICAgICAgICAgICJLVk1fUklTQ1Zf SVNBX0VYVF9aQkIiLAo+ID4gPiArICAgICAgICAgICAgICJLVk1fUklTQ1ZfSVNBX0VYVF9TU0FJ QSIsCj4gPiA+ICsgICAgIH07Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKHJlZ19vZmYgPj0gQVJS QVlfU0laRShrdm1faXNhX2V4dF9yZWdfbmFtZSkpIHsKPiA+ID4gKyAgICAgICAgICAgICAvKgo+ ID4gPiArICAgICAgICAgICAgICAqIGlzYV9leHQgcmVncyB3b3VsZCBncm93IHJlZ3VsYXJseSB3 aXRoIG5ldyBpc2EgZXh0ZW5zaW9uIGFkZGVkLCBzbwo+ID4gPiArICAgICAgICAgICAgICAqIGp1 c3Qgc2hvdyAicmVnIiB0byBpbmRpY2F0ZSBhIG5ldyBleHRlbnNpb24uCj4gPiA+ICsgICAgICAg ICAgICAgICovCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHN0cmR1cF9wcmludGYoIiVsbGQg LyogVU5LTk9XTiAqLyIsIHJlZ19vZmYpOwo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAg ICAgcmV0dXJuIGt2bV9pc2FfZXh0X3JlZ19uYW1lW3JlZ19vZmZdOwo+ID4gPiArfQo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqc2JpX2V4dF9zaW5nbGVfaWRfdG9fc3RyKF9fdTY0 IHJlZ19vZmYpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIC8qIHJlZ19vZmYgaXMgS1ZNX1JJU0NWX1NC SV9FWFRfSUQgKi8KPiA+ID4gKyAgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBrdm1fc2Jp X2V4dF9yZWdfbmFtZVtdID0gewo+ID4gPiArICAgICAgICAgICAgICJLVk1fUkVHX1JJU0NWX1NC SV9TSU5HTEUgfCBLVk1fUklTQ1ZfU0JJX0VYVF9WMDEiLAo+ID4gPiArICAgICAgICAgICAgICJL Vk1fUkVHX1JJU0NWX1NCSV9TSU5HTEUgfCBLVk1fUklTQ1ZfU0JJX0VYVF9USU1FIiwKPiA+ID4g KyAgICAgICAgICAgICAiS1ZNX1JFR19SSVNDVl9TQklfU0lOR0xFIHwgS1ZNX1JJU0NWX1NCSV9F WFRfSVBJIiwKPiA+ID4gKyAgICAgICAgICAgICAiS1ZNX1JFR19SSVNDVl9TQklfU0lOR0xFIHwg S1ZNX1JJU0NWX1NCSV9FWFRfUkZFTkNFIiwKPiA+ID4gKyAgICAgICAgICAgICAiS1ZNX1JFR19S SVNDVl9TQklfU0lOR0xFIHwgS1ZNX1JJU0NWX1NCSV9FWFRfU1JTVCIsCj4gPiA+ICsgICAgICAg ICAgICAgIktWTV9SRUdfUklTQ1ZfU0JJX1NJTkdMRSB8IEtWTV9SSVNDVl9TQklfRVhUX0hTTSIs Cj4gPiA+ICsgICAgICAgICAgICAgIktWTV9SRUdfUklTQ1ZfU0JJX1NJTkdMRSB8IEtWTV9SSVND Vl9TQklfRVhUX1BNVSIsCj4gPiA+ICsgICAgICAgICAgICAgIktWTV9SRUdfUklTQ1ZfU0JJX1NJ TkdMRSB8IEtWTV9SSVNDVl9TQklfRVhUX0VYUEVSSU1FTlRBTCIsCj4gPiA+ICsgICAgICAgICAg ICAgIktWTV9SRUdfUklTQ1ZfU0JJX1NJTkdMRSB8IEtWTV9SSVNDVl9TQklfRVhUX1ZFTkRPUiIs Cj4gPiA+ICsgICAgIH07Cj4gPiA+ICsKPiA+ID4gKyAgICAgaWYgKHJlZ19vZmYgPj0gQVJSQVlf U0laRShrdm1fc2JpX2V4dF9yZWdfbmFtZSkpIHsKPiA+ID4gKyAgICAgICAgICAgICAvKgo+ID4g PiArICAgICAgICAgICAgICAqIHNiaV9leHQgcmVncyB3b3VsZCBncm93IHJlZ3VsYXJseSB3aXRo IG5ldyBzYmkgZXh0ZW5zaW9uIGFkZGVkLCBzbwo+ID4gPiArICAgICAgICAgICAgICAqIGp1c3Qg c2hvdyAicmVnIiB0byBpbmRpY2F0ZSBhIG5ldyBleHRlbnNpb24uCj4gPiA+ICsgICAgICAgICAg ICAgICovCj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHN0cmR1cF9wcmludGYoIktWTV9SRUdf UklTQ1ZfU0JJX1NJTkdMRSB8ICVsbGQgLyogVU5LTk9XTiAqLyIsIHJlZ19vZmYpOwo+ID4gPiAr ICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIGt2bV9zYmlfZXh0X3JlZ19uYW1lW3Jl Z19vZmZdOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqc2JpX2V4 dF9tdWx0aV9pZF90b19zdHIoX191NjQgcmVnX3N1YnR5cGUsIF9fdTY0IHJlZ19vZmYpCj4gPiA+ ICt7Cj4gPiA+ICsgICAgIGlmIChyZWdfb2ZmID4gS1ZNX1JFR19SSVNDVl9TQklfTVVMVElfUkVH X0xBU1QpIHsKPiA+ID4gKyAgICAgICAgICAgICAvKgo+ID4gPiArICAgICAgICAgICAgICAqIHNi aV9leHQgcmVncyB3b3VsZCBncm93IHJlZ3VsYXJseSB3aXRoIG5ldyBzYmkgZXh0ZW5zaW9uIGFk ZGVkLCBzbwo+ID4gPiArICAgICAgICAgICAgICAqIGp1c3Qgc2hvdyAicmVnIiB0byBpbmRpY2F0 ZSBhIG5ldyBleHRlbnNpb24uCj4gPiA+ICsgICAgICAgICAgICAgICovCj4gPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIHN0cmR1cF9wcmludGYoIiVsbGQgLyogVU5LTk9XTiAqLyIsIHJlZ19vZmYp Owo+ID4gPiArICAgICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgc3dpdGNoIChyZWdfc3VidHlwZSkg ewo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX01VTFRJX0VOOgo+ID4gPiArICAg ICAgICAgICAgIHJldHVybiBzdHJkdXBfcHJpbnRmKCJLVk1fUkVHX1JJU0NWX1NCSV9NVUxUSV9F TiB8ICVsbGQiLCByZWdfb2ZmKTsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX1NCSV9N VUxUSV9ESVM6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHN0cmR1cF9wcmludGYoIktWTV9S RUdfUklTQ1ZfU0JJX01VTFRJX0RJUyB8ICVsbGQiLCByZWdfb2ZmKTsKPiA+ID4gKyAgICAgfQo+ ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiBOVUxMOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtz dGF0aWMgY29uc3QgY2hhciAqc2JpX2V4dF9pZF90b19zdHIoY29uc3QgY2hhciAqcHJlZml4LCBf X3U2NCBpZCkKPiA+ID4gK3sKPiA+ID4gKyAgICAgX191NjQgcmVnX29mZiA9IGlkICYgfihSRUdf TUFTSyB8IEtWTV9SRUdfUklTQ1ZfU0JJX0VYVCk7Cj4gPiA+ICsgICAgIF9fdTY0IHJlZ19zdWJ0 eXBlID0gcmVnX29mZiAmIEtWTV9SRUdfUklTQ1ZfU1VCVFlQRV9NQVNLOwo+ID4gPiArCj4gPiA+ ICsgICAgIHJlZ19vZmYgJj0gfktWTV9SRUdfUklTQ1ZfU1VCVFlQRV9NQVNLOwo+ID4gPiArCj4g PiA+ICsgICAgIHN3aXRjaCAocmVnX3N1YnR5cGUpIHsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVH X1JJU0NWX1NCSV9TSU5HTEU6Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHNiaV9leHRfc2lu Z2xlX2lkX3RvX3N0cihyZWdfb2ZmKTsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX1NC SV9NVUxUSV9FTjoKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1JJU0NWX1NCSV9NVUxUSV9ESVM6 Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHNiaV9leHRfbXVsdGlfaWRfdG9fc3RyKHJlZ19z dWJ0eXBlLCByZWdfb2ZmKTsKPiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIFRFU1Rf RkFJTCgiJXM6IFVua25vd24gc2JpIGV4dCBzdWJ0eXBlOiAweCVsbHgiLCBwcmVmaXgsIHJlZ19z dWJ0eXBlKTsKPiA+ID4gKyAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4g K3ZvaWQgcHJpbnRfcmVnKGNvbnN0IGNoYXIgKnByZWZpeCwgX191NjQgaWQpCj4gPiA+ICt7Cj4g PiA+ICsgICAgIGNvbnN0IGNoYXIgKnJlZ19zaXplID0gTlVMTDsKPiA+ID4gKwo+ID4gPiArICAg ICBURVNUX0FTU0VSVCgoaWQgJiBLVk1fUkVHX0FSQ0hfTUFTSykgPT0gS1ZNX1JFR19SSVNDViwK PiA+ID4gKyAgICAgICAgICAgICAgICAgIiVzOiBLVk1fUkVHX1JJU0NWIG1pc3NpbmcgaW4gcmVn IGlkOiAweCVsbHgiLCBwcmVmaXgsIGlkKTsKPiA+ID4gKwo+ID4gPiArICAgICBzd2l0Y2ggKGlk ICYgS1ZNX1JFR19TSVpFX01BU0spIHsKPiA+ID4gKyAgICAgY2FzZSBLVk1fUkVHX1NJWkVfVTMy Ogo+ID4gPiArICAgICAgICAgICAgIHJlZ19zaXplID0gIktWTV9SRUdfU0laRV9VMzIiOwo+ID4g PiArICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfU0laRV9VNjQ6 Cj4gPiA+ICsgICAgICAgICAgICAgcmVnX3NpemUgPSAiS1ZNX1JFR19TSVpFX1U2NCI7Cj4gPiA+ ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19TSVpFX1UxMjg6 Cj4gPiA+ICsgICAgICAgICAgICAgcmVnX3NpemUgPSAiS1ZNX1JFR19TSVpFX1UxMjgiOwo+ID4g PiArICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiArICAgICBkZWZhdWx0Ogo+ID4gPiArICAgICAg ICAgICAgIFRFU1RfRkFJTCgiJXM6IFVuZXhwZWN0ZWQgcmVnIHNpemU6IDB4JWxseCBpbiByZWcg aWQ6IDB4JWxseCIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgKGlkICYg S1ZNX1JFR19TSVpFX01BU0spID4+IEtWTV9SRUdfU0laRV9TSElGVCwgaWQpOwo+ID4gPiArICAg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgc3dpdGNoIChpZCAmIEtWTV9SRUdfUklTQ1ZfVFlQRV9N QVNLKSB7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DT05GSUc6Cj4gPiA+ICsgICAg ICAgICAgICAgcHJpbnRmKCJcdEtWTV9SRUdfUklTQ1YgfCAlcyB8IEtWTV9SRUdfUklTQ1ZfQ09O RklHIHwgJXMsXG4iLAo+ID4KPiA+IEFsbCB0aGUgd29yayB0byB0cnkgYW5kIHVzZSBLVk1fUkVH X1NJWkVfVUxPTkcgaW4gdGhlIHJpZ2h0IHBsYWNlcyB3aWxsIGJlCj4gPiBsb3N0IGlmIHdlIHBy aW50IGEgcmVnIGxpc3QgYW5kIHRoZW4gY29weStwYXN0ZSBpdCBhcyBhIGJsZXNzZWQgbGlzdC4g T24KPiA+IDY0LWJpdCwgdGhlIG9ubHkgdGhpbmcgc3VwcG9ydGVkIG5vdywgd2UnbGwgZ2V0IFU2 NCwgYnV0IGlmIHdlIGV2ZXIKPiA+IHN1cHBvcnRlZCAzMi1iaXQsIHRoZW4gd2UnZCBnZXQgVTMy LiBUaGlzIGlzIHVuZm9ydHVuYXRlLCBidXQgdGhlcmUncwo+ID4gbm90aGluZyB3ZSBjYW4gZG8g YWJvdXQgaXQuIEVpdGhlciB3ZSBjYW4ndCBoYXZlIGEgdHJ1ZSBwcmludCtjb3B5K3Bhc3RlCj4g PiB3b3JrZmxvdyBvciB3ZSBzaG91bGQgYXNzdW1lIHdlJ2xsIG9ubHkgc3VwcG9ydCA2NC1iaXQg YW5kIG9ubHkgdXNlIFU2NAo+ID4gaW4gdGhlIGJsZXNzZWQgbGlzdHMgKGZyb20gYSBjb3B5K3Bh c3RlKS4gQnV0LCB3ZSd2ZSBhbHJlYWR5IGdvdCBVTE9ORwo+ID4gaW4gdGhlcmUgbm93LCBzbyB3 ZSBjYW4ganVzdCBsZWF2ZSBpdCBhbmQgYnVybiB0aGlzIGJyaWRnZSBsYXRlci4KPiA+Cj4gCj4g WWVzLCB0aGUgcHJpbnRfcmVnIHdvdWxkIHByaW50IFU2NCAgZm9yIHJpc2N2NjQgc3lzdGVtIGFu ZCBVMzIgZm9yIHJpc2N2MzIuCj4gQXMgY29tbWVudGVkIGluIHYyIHBhdGNoLCBpdCBzZWVtcyAz Mi1iaXQgd2FzIG5vdCBzdXBwb3J0ZWQgaW4gb3RoZXIgQVJDSHMuCj4gSWYgcmlzY3YgZm9sbG93 cyB0aGlzIGFzc3VtcHRpb24sIEkgdGhpbmsgVTY0IHdhcyBiZXR0ZXIgZm9yIHByaW50X3JlZy4K Ckl0J3Mgbm90IGJldHRlciwgYnV0IHRoZXJlJ3Mgbm8gd2F5IHRvIGF2b2lkIGl0LiBUaGUgaW5m b3JtYXRpb24gdGhhdCBpdAp3YXMgYSBVTE9ORywgaW5zdGVhZCBvZiBVNjQsIGhhcyBiZWVuIGxv c3QgYXQgdGhpcyBwb2ludC4gVGhlIG9ubHkgd2F5CnRvIHByaW50IGl0IGNvcnJlY3RseSBpcyB0 byBjcmVhdGUgYSByZWctc2l6ZSBtYXBwaW5nIGFuZCB0aGVuIGxvb2sgaXQgdXAsCnJhdGhlciB0 aGFuIGRlY29kZSBpdC4gV2UgY2FuIGFkZCBhIGxvb2t1cCB3aGVuL2lmIGFkZGluZyAzMi1iaXQg c3VwcG9ydC4KCj4gCj4gCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19z aXplLCBjb25maWdfaWRfdG9fc3RyKGlkKSk7Cj4gPiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4g PiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9DT1JFOgo+ID4gPiArICAgICAgICAgICAgIHBy aW50ZigiXHRLVk1fUkVHX1JJU0NWIHwgJXMgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCAlcyxcbiIs Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19zaXplLCBjb3JlX2lkX3Rv X3N0cihwcmVmaXgsIGlkKSk7Cj4gPiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAg IGNhc2UgS1ZNX1JFR19SSVNDVl9DU1I6Cj4gPiA+ICsgICAgICAgICAgICAgcHJpbnRmKCJcdEtW TV9SRUdfUklTQ1YgfCAlcyB8IEtWTV9SRUdfUklTQ1ZfQ1NSIHwgJXMsXG4iLAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfc2l6ZSwgY3NyX2lkX3RvX3N0cihwcmVmaXgs IGlkKSk7Cj4gPiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JF R19SSVNDVl9USU1FUjoKPiA+ID4gKyAgICAgICAgICAgICBwcmludGYoIlx0S1ZNX1JFR19SSVND ViB8ICVzIHwgS1ZNX1JFR19SSVNDVl9USU1FUiB8ICVzLFxuIiwKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVnX3NpemUsIHRpbWVyX2lkX3RvX3N0cihwcmVmaXgsIGlkKSk7 Cj4gPiA+ICsgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVND Vl9GUF9GOgo+ID4gPiArICAgICAgICAgICAgIHByaW50ZigiXHRLVk1fUkVHX1JJU0NWIHwgJXMg fCBLVk1fUkVHX1JJU0NWX0ZQX0YgfCAlcyxcbiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZ19zaXplLCBmcF9mX2lkX3RvX3N0cihwcmVmaXgsIGlkKSk7Cj4gPiA+ICsg ICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9GUF9EOgo+ ID4gPiArICAgICAgICAgICAgIHByaW50ZigiXHRLVk1fUkVHX1JJU0NWIHwgJXMgfCBLVk1fUkVH X1JJU0NWX0ZQX0QgfCAlcyxcbiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlZ19zaXplLCBmcF9kX2lkX3RvX3N0cihwcmVmaXgsIGlkKSk7Cj4gPiA+ICsgICAgICAgICAg ICAgYnJlYWs7Cj4gPiA+ICsgICAgIGNhc2UgS1ZNX1JFR19SSVNDVl9JU0FfRVhUOgo+ID4gPiAr ICAgICAgICAgICAgIHByaW50ZigiXHRLVk1fUkVHX1JJU0NWIHwgJXMgfCBLVk1fUkVHX1JJU0NW X0lTQV9FWFQgfCAlcyxcbiIsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl Z19zaXplLCBpc2FfZXh0X2lkX3RvX3N0cihpZCkpOwo+ID4gPiArICAgICAgICAgICAgIGJyZWFr Owo+ID4gPiArICAgICBjYXNlIEtWTV9SRUdfUklTQ1ZfU0JJX0VYVDoKPiA+ID4gKyAgICAgICAg ICAgICBwcmludGYoIlx0S1ZNX1JFR19SSVNDViB8ICVzIHwgS1ZNX1JFR19SSVNDVl9TQklfRVhU IHwgJXMsXG4iLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfc2l6ZSwg c2JpX2V4dF9pZF90b19zdHIocHJlZml4LCBpZCkpOwo+ID4gPiArICAgICAgICAgICAgIGJyZWFr Owo+ID4gPiArICAgICBkZWZhdWx0Ogo+ID4gPiArICAgICAgICAgICAgIFRFU1RfRkFJTCgiJXM6 IFVuZXhwZWN0ZWQgcmVnIHR5cGU6IDB4JWxseCBpbiByZWcgaWQ6IDB4JWxseCIsIHByZWZpeCwK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlkICYgS1ZNX1JFR19SSVNDVl9U WVBFX01BU0spID4+IEtWTV9SRUdfUklTQ1ZfVFlQRV9TSElGVCwgaWQpOwo+ID4gPiArICAgICB9 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBUaGUgY3VycmVudCBibGVzc2Vk IGxpc3Qgd2FzIHByaW1lZCB3aXRoIHRoZSBvdXRwdXQgb2Yga2VybmVsIHZlcnNpb24KPiA+ID4g KyAqIHY2LjQtcmM1IGFuZCB0aGVuIGxhdGVyIHVwZGF0ZWQgd2l0aCBuZXcgcmVnaXN0ZXJzLgo+ ID4gPiArICovCj4gPiA+ICtzdGF0aWMgX191NjQgYmFzZV9yZWdzW10gPSB7Cj4gPiA+ICsgICAg IEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPTkZJ RyB8IEtWTV9SRUdfUklTQ1ZfQ09ORklHX1JFRyhpc2EpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJ U0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT05GSUcgfCBLVk1fUkVH X1JJU0NWX0NPTkZJR19SRUcobXZlbmRvcmlkKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8 IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09ORklHIHwgS1ZNX1JFR19SSVND Vl9DT05GSUdfUkVHKG1hcmNoaWQpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JF R19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT05GSUcgfCBLVk1fUkVHX1JJU0NWX0NPTkZJ R19SRUcobWltcGlkKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9V TE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5w YyksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1f UkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MucmEpLAo+ID4gPiAr ICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9D T1JFIHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnNwKSwKPiA+ID4gKyAgICAgS1ZNX1JF R19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9S RUdfUklTQ1ZfQ09SRV9SRUcocmVncy5ncCksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBL Vk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NP UkVfUkVHKHJlZ3MudHApLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpF X1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdz LnQwKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtW TV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy50MSksCj4gPiA+ ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NW X0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MudDIpLAo+ID4gPiArICAgICBLVk1f UkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZN X1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnMwKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8 IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1Zf Q09SRV9SRUcocmVncy5zMSksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJ WkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJl Z3MuYTApLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwg S1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLmExKSwKPiA+ ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklT Q1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5hMiksCj4gPiA+ICsgICAgIEtW TV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBL Vk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MuYTMpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NW IHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZNX1JFR19SSVND Vl9DT1JFX1JFRyhyZWdzLmE0KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdf U0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUco cmVncy5hNSksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcg fCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MuYTYpLAo+ ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19S SVNDVl9DT1JFIHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLmE3KSwKPiA+ID4gKyAgICAg S1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8 IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5zMiksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklT Q1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJ U0NWX0NPUkVfUkVHKHJlZ3MuczMpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JF R19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JF RyhyZWdzLnM0KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9O RyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy5zNSks Cj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVH X1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MuczYpLAo+ID4gPiArICAg ICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT1JF IHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnM3KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19S SVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdf UklTQ1ZfQ09SRV9SRUcocmVncy5zOCksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1f UkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVf UkVHKHJlZ3MuczkpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VM T05HIHwgS1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZNX1JFR19SSVNDVl9DT1JFX1JFRyhyZWdzLnMx MCksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1f UkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MuczExKSwKPiA+ID4g KyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1Zf Q09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVncy50MyksCj4gPiA+ICsgICAgIEtWTV9S RUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1f UkVHX1JJU0NWX0NPUkVfUkVHKHJlZ3MudDQpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwg S1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DT1JFIHwgS1ZNX1JFR19SSVNDVl9D T1JFX1JFRyhyZWdzLnQ1KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0la RV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09SRSB8IEtWTV9SRUdfUklTQ1ZfQ09SRV9SRUcocmVn cy50NiksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBL Vk1fUkVHX1JJU0NWX0NPUkUgfCBLVk1fUkVHX1JJU0NWX0NPUkVfUkVHKG1vZGUpLAo+ID4gPiAr ICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9D U1IgfCBLVk1fUkVHX1JJU0NWX0NTUl9HRU5FUkFMIHwgS1ZNX1JFR19SSVNDVl9DU1JfUkVHKHNz dGF0dXMpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwg S1ZNX1JFR19SSVNDVl9DU1IgfCBLVk1fUkVHX1JJU0NWX0NTUl9HRU5FUkFMIHwgS1ZNX1JFR19S SVNDVl9DU1JfUkVHKHNpZSksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJ WkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NTUiB8IEtWTV9SRUdfUklTQ1ZfQ1NSX0dFTkVSQUwg fCBLVk1fUkVHX1JJU0NWX0NTUl9SRUcoc3R2ZWMpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NW IHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DU1IgfCBLVk1fUkVHX1JJU0NW X0NTUl9HRU5FUkFMIHwgS1ZNX1JFR19SSVNDVl9DU1JfUkVHKHNzY3JhdGNoKSwKPiA+ID4gKyAg ICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ1NS IHwgS1ZNX1JFR19SSVNDVl9DU1JfR0VORVJBTCB8IEtWTV9SRUdfUklTQ1ZfQ1NSX1JFRyhzZXBj KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9S RUdfUklTQ1ZfQ1NSIHwgS1ZNX1JFR19SSVNDVl9DU1JfR0VORVJBTCB8IEtWTV9SRUdfUklTQ1Zf Q1NSX1JFRyhzY2F1c2UpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpF X1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DU1IgfCBLVk1fUkVHX1JJU0NWX0NTUl9HRU5FUkFMIHwg S1ZNX1JFR19SSVNDVl9DU1JfUkVHKHN0dmFsKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8 IEtWTV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ1NSIHwgS1ZNX1JFR19SSVNDVl9D U1JfR0VORVJBTCB8IEtWTV9SRUdfUklTQ1ZfQ1NSX1JFRyhzaXApLAo+ID4gPiArICAgICBLVk1f UkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DU1IgfCBLVk1f UkVHX1JJU0NWX0NTUl9HRU5FUkFMIHwgS1ZNX1JFR19SSVNDVl9DU1JfUkVHKHNhdHApLAo+ID4g PiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVND Vl9DU1IgfCBLVk1fUkVHX1JJU0NWX0NTUl9HRU5FUkFMIHwgS1ZNX1JFR19SSVNDVl9DU1JfUkVH KHNjb3VudGVyZW4pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2 NCB8IEtWTV9SRUdfUklTQ1ZfVElNRVIgfCBLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyhmcmVxdWVu Y3kpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2NCB8IEtWTV9S RUdfUklTQ1ZfVElNRVIgfCBLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyh0aW1lKSwKPiA+ID4gKyAg ICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX1RJTUVS IHwgS1ZNX1JFR19SSVNDVl9USU1FUl9SRUcoY29tcGFyZSksCj4gPiA+ICsgICAgIEtWTV9SRUdf UklTQ1YgfCBLVk1fUkVHX1NJWkVfVTY0IHwgS1ZNX1JFR19SSVNDVl9USU1FUiB8IEtWTV9SRUdf UklTQ1ZfVElNRVJfUkVHKHN0YXRlKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9S RUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfSVNBX0VYVCB8IEtWTV9SSVNDVl9JU0FfRVhU X0EsCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1f UkVHX1JJU0NWX0lTQV9FWFQgfCBLVk1fUklTQ1ZfSVNBX0VYVF9DLAo+ID4gPiArICAgICBLVk1f UkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9JU0FfRVhUIHwg S1ZNX1JJU0NWX0lTQV9FWFRfRCwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdf U0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfSVNBX0VYVCB8IEtWTV9SSVNDVl9JU0FfRVhUX0Ys Cj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVH X1JJU0NWX0lTQV9FWFQgfCBLVk1fUklTQ1ZfSVNBX0VYVF9JLAo+ID4gPiArICAgICBLVk1fUkVH X1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9JU0FfRVhUIHwgS1ZN X1JJU0NWX0lTQV9FWFRfTSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0la RV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfU0JJX0VYVCB8IEtWTV9SRUdfUklTQ1ZfU0JJX1NJTkdM RSB8IEtWTV9SSVNDVl9TQklfRVhUX1YwMSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtW TV9SRUdfU0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfU0JJX0VYVCB8IEtWTV9SRUdfUklTQ1Zf U0JJX1NJTkdMRSB8IEtWTV9SSVNDVl9TQklfRVhUX1RJTUUsCj4gPiA+ICsgICAgIEtWTV9SRUdf UklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX1NCSV9FWFQgfCBLVk1f UkVHX1JJU0NWX1NCSV9TSU5HTEUgfCBLVk1fUklTQ1ZfU0JJX0VYVF9JUEksCj4gPiA+ICsgICAg IEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX1NCSV9F WFQgfCBLVk1fUkVHX1JJU0NWX1NCSV9TSU5HTEUgfCBLVk1fUklTQ1ZfU0JJX0VYVF9SRkVOQ0Us Cj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVH X1JJU0NWX1NCSV9FWFQgfCBLVk1fUkVHX1JJU0NWX1NCSV9TSU5HTEUgfCBLVk1fUklTQ1ZfU0JJ X0VYVF9TUlNULAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05H IHwgS1ZNX1JFR19SSVNDVl9TQklfRVhUIHwgS1ZNX1JFR19SSVNDVl9TQklfU0lOR0xFIHwgS1ZN X1JJU0NWX1NCSV9FWFRfSFNNLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19T SVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9TQklfRVhUIHwgS1ZNX1JFR19SSVNDVl9TQklfU0lO R0xFIHwgS1ZNX1JJU0NWX1NCSV9FWFRfUE1VLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwg S1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9TQklfRVhUIHwgS1ZNX1JFR19SSVND Vl9TQklfU0lOR0xFIHwgS1ZNX1JJU0NWX1NCSV9FWFRfRVhQRVJJTUVOVEFMLAo+ID4gPiArICAg ICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9TQklf RVhUIHwgS1ZNX1JFR19SSVNDVl9TQklfU0lOR0xFIHwgS1ZNX1JJU0NWX1NCSV9FWFRfVkVORE9S LAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JF R19SSVNDVl9TQklfRVhUIHwgS1ZNX1JFR19SSVNDVl9TQklfTVVMVElfRU4gfCAwLAo+ID4gPiAr ICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9T QklfRVhUIHwgS1ZNX1JFR19SSVNDVl9TQklfTVVMVElfRElTIHwgMCwKPiA+ID4gK307Cj4gPiA+ ICsKPiA+ID4gKy8qCj4gPiA+ICsgKiBUaGUgcmVqZWN0c19zZXQgbGlzdCByZWdpc3RlcnMgdGhh dCBzaG91bGQgc2tpcCBzZXQgdGVzdC4KPiA+ID4gKyAqICAtIEtWTV9SRUdfUklTQ1ZfVElNRVJf UkVHKHN0YXRlKTogc2V0IHdvdWxkIGZhaWwgaWYgaXQgd2FzIG5vdCBpbml0aWFsaXplZCBwcm9w ZXJseS4KPiA+ID4gKyAqICAtIEtWTV9SRUdfUklTQ1ZfVElNRVJfUkVHKGZyZXF1ZW5jeSk6IHNl dCBub3Qgc3VwcG9ydGVkCj4gPiA+ICsgKiAgLSBLVk1fUkVHX1JJU0NWX0NPTkZJR19SRUcoemlj Ym9tX2Jsb2NrX3NpemUpOiBzZXQgbm90IHN1cHBvcnRlZAo+ID4gPiArICogIC0gS1ZNX1JFR19S SVNDVl9DT05GSUdfUkVHKHppY2Jvel9ibG9ja19zaXplKTogc2V0IG5vdCBzdXBwb3J0ZWQKPiA+ ID4gKyAqICAtIEtWTV9SSVNDVl9JU0FfRVhUX1NWUEJNVDogc2V0IG5vdCBzdXBwb3J0ZWQKPiA+ ID4gKyAqICAtIEtWTV9SSVNDVl9JU0FfRVhUX1NWSU5WQTogc2V0IG5vdCBzdXBwb3J0ZWQKPiA+ ID4gKyAqICAtIEtWTV9SSVNDVl9JU0FfRVhUX1NTQUlBOiBzZXQgbm90IHN1cHBvcnRlZAo+ID4g PiArICovCj4gPiA+ICtzdGF0aWMgX191NjQgYmFzZV9yZWplY3RzX3NldFtdID0gewo+ID4gPiAr ICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9D T05GSUcgfCBLVk1fUkVHX1JJU0NWX0NPTkZJR19SRUcoemljYm9tX2Jsb2NrX3NpemUpLAo+ID4g PiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVND Vl9DT05GSUcgfCBLVk1fUkVHX1JJU0NWX0NPTkZJR19SRUcoemljYm96X2Jsb2NrX3NpemUpLAo+ ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2NCB8IEtWTV9SRUdfUklT Q1ZfVElNRVIgfCBLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyhmcmVxdWVuY3kpLAo+ID4gPiArICAg ICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2NCB8IEtWTV9SRUdfUklTQ1ZfVElNRVIg fCBLVk1fUkVHX1JJU0NWX1RJTUVSX1JFRyhzdGF0ZSksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklT Q1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0lTQV9FWFQgfCBLVk1fUklT Q1ZfSVNBX0VYVF9TVlBCTVQsCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJ WkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0lTQV9FWFQgfCBLVk1fUklTQ1ZfSVNBX0VYVF9TVklO VkFMLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZN X1JFR19SSVNDVl9JU0FfRVhUIHwgS1ZNX1JJU0NWX0lTQV9FWFRfU1NBSUEsCj4gPgo+ID4gVGhl c2UgYXJlbid0IGFsbCBiYXNlIHJlZ2lzdGVycy4gSSB0aGluayB3ZSBzaG91bGQgZGl2aWRlIHRo ZSByZWplY3QgbGlzdHMKPiA+IHVwIHRvbywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgaWRl YSBJIHdyb3RlIGluIHRoZSBsYXN0IHBhdGNoLCB3aGljaAo+ID4gaXMgdG8gdGVzdCBzZXR0aW5n IHRoZSByZWplY3RzIHRvIGVuc3VyZSB0aGUgZXhwZWN0ZWQgZXJyb3IgaXMgcmV0dXJuZWQuCj4g PiBUaGUgZXJyb3IgbWF5IGJlIGRpZmZlcmVudCBmb3IgYSByZWplY3RlZCBzZXQgb2YgYSBzdXBw b3J0ZWQgcmVnaXN0ZXIgdnMuCj4gPiB0aGF0IG9mIGFuIHVuc3VwcG9ydGVkIHJlZ2lzdGVyLgo+ ID4KPiAKPiBZZXMsIHRoZSByZWplY3QgbGlzdCBzaG91bGQgZGl2aWRlIHVwIHRvby4gV2lsbCBj aGFuZ2UgaXQgaW4gVjQuCj4gCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgX191NjQg emljYm9tX3JlZ3NbXSA9IHsKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0la RV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfQ09ORklHIHwgS1ZNX1JFR19SSVNDVl9DT05GSUdfUkVH KHppY2JvbV9ibG9ja19zaXplKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdf U0laRV9VTE9ORyB8IEtWTV9SRUdfUklTQ1ZfSVNBX0VYVCB8IEtWTV9SSVNDVl9JU0FfRVhUX1pJ Q0JPTSwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBfX3U2NCB6aWNib3pfcmVnc1td ID0gewo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZN X1JFR19SSVNDVl9DT05GSUcgfCBLVk1fUkVHX1JJU0NWX0NPTkZJR19SRUcoemljYm96X2Jsb2Nr X3NpemUpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwg S1ZNX1JFR19SSVNDVl9JU0FfRVhUIHwgS1ZNX1JJU0NWX0lTQV9FWFRfWklDQk9aLAo+ID4gPiAr fTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIF9fdTY0IGFpYV9jc3JfcmVnc1tdID0gewo+ID4gPiAr ICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9D U1IgfCBLVk1fUkVHX1JJU0NWX0NTUl9BSUEgfCBLVk1fUkVHX1JJU0NWX0NTUl9BSUFfUkVHKHNp c2VsZWN0KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VTE9ORyB8 IEtWTV9SRUdfUklTQ1ZfQ1NSIHwgS1ZNX1JFR19SSVNDVl9DU1JfQUlBIHwgS1ZNX1JFR19SSVND Vl9DU1JfQUlBX1JFRyhpcHJpbzEpLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JF R19TSVpFX1VMT05HIHwgS1ZNX1JFR19SSVNDVl9DU1IgfCBLVk1fUkVHX1JJU0NWX0NTUl9BSUEg fCBLVk1fUkVHX1JJU0NWX0NTUl9BSUFfUkVHKGlwcmlvMiksCj4gPiA+ICsgICAgIEtWTV9SRUdf UklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NTUiB8IEtWTV9SRUdf UklTQ1ZfQ1NSX0FJQSB8IEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQV9SRUcoc2llaCksCj4gPiA+ICsg ICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NT UiB8IEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQSB8IEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQV9SRUcoc2lw aCksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1f UkVHX1JJU0NWX0NTUiB8IEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQSB8IEtWTV9SRUdfUklTQ1ZfQ1NS X0FJQV9SRUcoaXByaW8xaCksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJ WkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0NTUiB8IEtWTV9SRUdfUklTQ1ZfQ1NSX0FJQSB8IEtW TV9SRUdfUklTQ1ZfQ1NSX0FJQV9SRUcoaXByaW8yaCksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklT Q1YgfCBLVk1fUkVHX1NJWkVfVUxPTkcgfCBLVk1fUkVHX1JJU0NWX0lTQV9FWFQgfCBLVk1fUklT Q1ZfSVNBX0VYVF9TU0FJQSwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBfX3U2NCBm cF9mX3JlZ3NbXSA9IHsKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9V MzIgfCBLVk1fUkVHX1JJU0NWX0ZQX0YgfCBLVk1fUkVHX1JJU0NWX0ZQX0ZfUkVHKGZbMF0pLAo+ ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklT Q1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsxXSksCj4gPiA+ICsgICAgIEtWTV9S RUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVTMyIHwgS1ZNX1JFR19SSVNDVl9GUF9GIHwgS1ZNX1JF R19SSVNDVl9GUF9GX1JFRyhmWzJdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9S RUdfU0laRV9VMzIgfCBLVk1fUkVHX1JJU0NWX0ZQX0YgfCBLVk1fUkVHX1JJU0NWX0ZQX0ZfUkVH KGZbM10pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtW TV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZls0XSksCj4gPiA+ICsg ICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVTMyIHwgS1ZNX1JFR19SSVNDVl9GUF9G IHwgS1ZNX1JFR19SSVNDVl9GUF9GX1JFRyhmWzVdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVND ViB8IEtWTV9SRUdfU0laRV9VMzIgfCBLVk1fUkVHX1JJU0NWX0ZQX0YgfCBLVk1fUkVHX1JJU0NW X0ZQX0ZfUkVHKGZbNl0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpF X1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZls3XSks Cj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVTMyIHwgS1ZNX1JFR19S SVNDVl9GUF9GIHwgS1ZNX1JFR19SSVNDVl9GUF9GX1JFRyhmWzhdKSwKPiA+ID4gKyAgICAgS1ZN X1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VMzIgfCBLVk1fUkVHX1JJU0NWX0ZQX0YgfCBLVk1f UkVHX1JJU0NWX0ZQX0ZfUkVHKGZbOV0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZN X1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9S RUcoZlsxMF0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8 IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsxMV0pLAo+ID4g PiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1Zf RlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsxMl0pLAo+ID4gPiArICAgICBLVk1fUkVH X1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdf UklTQ1ZfRlBfRl9SRUcoZlsxM10pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JF R19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUco ZlsxNF0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtW TV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsxNV0pLAo+ID4gPiAr ICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBf RiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsxNl0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJ U0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklT Q1ZfRlBfRl9SRUcoZlsxN10pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19T SVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsx OF0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9S RUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsxOV0pLAo+ID4gPiArICAg ICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8 IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsyMF0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NW IHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1Zf RlBfRl9SRUcoZlsyMV0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpF X1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsyMl0p LAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdf UklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsyM10pLAo+ID4gPiArICAgICBL Vk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtW TV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsyNF0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwg S1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBf Rl9SRUcoZlsyNV0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1Uz MiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsyNl0pLAo+ ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklT Q1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlsyN10pLAo+ID4gPiArICAgICBLVk1f UkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9S RUdfUklTQ1ZfRlBfRl9SRUcoZlsyOF0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZN X1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9S RUcoZlsyOV0pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8 IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlszMF0pLAo+ID4g PiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1Zf RlBfRiB8IEtWTV9SRUdfUklTQ1ZfRlBfRl9SRUcoZlszMV0pLAo+ID4gPiArICAgICBLVk1fUkVH X1JJU0NWIHwgS1ZNX1JFR19TSVpFX1UzMiB8IEtWTV9SRUdfUklTQ1ZfRlBfRiB8IEtWTV9SRUdf UklTQ1ZfRlBfRl9SRUcoZmNzciksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgX191 NjQgZnBfZF9yZWdzW10gPSB7Cj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJ WkVfVTY0IHwgS1ZNX1JFR19SSVNDVl9GUF9EIHwgS1ZNX1JFR19SSVNDVl9GUF9EX1JFRyhmWzBd KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVH X1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMV0pLAo+ID4gPiArICAgICBL Vk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2NCB8IEtWTV9SRUdfUklTQ1ZfRlBfRCB8IEtW TV9SRUdfUklTQ1ZfRlBfRF9SRUcoZlsyXSksCj4gPiA+ICsgICAgIEtWTV9SRUdfUklTQ1YgfCBL Vk1fUkVHX1NJWkVfVTY0IHwgS1ZNX1JFR19SSVNDVl9GUF9EIHwgS1ZNX1JFR19SSVNDVl9GUF9E X1JFRyhmWzNdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQg fCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbNF0pLAo+ID4g PiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2NCB8IEtWTV9SRUdfUklTQ1Zf RlBfRCB8IEtWTV9SRUdfUklTQ1ZfRlBfRF9SRUcoZls1XSksCj4gPiA+ICsgICAgIEtWTV9SRUdf UklTQ1YgfCBLVk1fUkVHX1NJWkVfVTY0IHwgS1ZNX1JFR19SSVNDVl9GUF9EIHwgS1ZNX1JFR19S SVNDVl9GUF9EX1JFRyhmWzZdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdf U0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZb N10pLAo+ID4gPiArICAgICBLVk1fUkVHX1JJU0NWIHwgS1ZNX1JFR19TSVpFX1U2NCB8IEtWTV9S RUdfUklTQ1ZfRlBfRCB8IEtWTV9SRUdfUklTQ1ZfRlBfRF9SRUcoZls4XSksCj4gPiA+ICsgICAg IEtWTV9SRUdfUklTQ1YgfCBLVk1fUkVHX1NJWkVfVTY0IHwgS1ZNX1JFR19SSVNDVl9GUF9EIHwg S1ZNX1JFR19SSVNDVl9GUF9EX1JFRyhmWzldKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8 IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQ X0RfUkVHKGZbMTBdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9V NjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMTFdKSwK PiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJ U0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMTJdKSwKPiA+ID4gKyAgICAgS1ZN X1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1f UkVHX1JJU0NWX0ZQX0RfUkVHKGZbMTNdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtW TV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0Rf UkVHKGZbMTRdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQg fCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMTVdKSwKPiA+ ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NW X0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMTZdKSwKPiA+ID4gKyAgICAgS1ZNX1JF R19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVH X1JJU0NWX0ZQX0RfUkVHKGZbMTddKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9S RUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVH KGZbMThdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBL Vk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMTldKSwKPiA+ID4g KyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQ X0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMjBdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19S SVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJ U0NWX0ZQX0RfUkVHKGZbMjFdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdf U0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZb MjJdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1f UkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMjNdKSwKPiA+ID4gKyAg ICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0Qg fCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMjRdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVND ViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NW X0ZQX0RfUkVHKGZbMjVdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0la RV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMjZd KSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVH X1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMjddKSwKPiA+ID4gKyAgICAg S1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBL Vk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMjhdKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8 IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQ X0RfUkVHKGZbMjldKSwKPiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9V NjQgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMzBdKSwK PiA+ID4gKyAgICAgS1ZNX1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VNjQgfCBLVk1fUkVHX1JJ U0NWX0ZQX0QgfCBLVk1fUkVHX1JJU0NWX0ZQX0RfUkVHKGZbMzFdKSwKPiA+ID4gKyAgICAgS1ZN X1JFR19SSVNDViB8IEtWTV9SRUdfU0laRV9VMzIgfCBLVk1fUkVHX1JJU0NWX0ZQX0QgfCBLVk1f UkVHX1JJU0NWX0ZQX0RfUkVHKGZjc3IpLAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArI2RlZmlu ZSBCQVNFX1NVQkxJU1QgXAo+ID4gPiArICAgICB7ImJhc2UiLCAucmVncyA9IGJhc2VfcmVncywg LnJlZ3NfbiA9IEFSUkFZX1NJWkUoYmFzZV9yZWdzKSwgXAo+ID4gPiArICAgICAgICAgICAgIC5y ZWplY3RzX3NldCA9IGJhc2VfcmVqZWN0c19zZXQsIC5yZWplY3RzX3NldF9uID0gQVJSQVlfU0la RShiYXNlX3JlamVjdHNfc2V0KSx9Cj4gPiA+ICsjZGVmaW5lIFpJQ0JPTV9SRUdTX1NVQkxJU1Qg XAo+ID4gPiArICAgICB7InppY2JvbSIsIC5mZWF0dXJlID0gS1ZNX1JJU0NWX0lTQV9FWFRfWklD Qk9NLCAucmVncyA9IHppY2JvbV9yZWdzLCBcCj4gPiA+ICsgICAgICAgICAgICAgLnJlZ3NfbiA9 IEFSUkFZX1NJWkUoemljYm9tX3JlZ3MpLH0KPiA+ID4gKyNkZWZpbmUgWklDQk9aX1JFR1NfU1VC TElTVCBcCj4gPiA+ICsgICAgIHsiemljYm96IiwgLmZlYXR1cmUgPSBLVk1fUklTQ1ZfSVNBX0VY VF9aSUNCT1osIC5yZWdzID0gemljYm96X3JlZ3MsIFwKPiA+ID4gKyAgICAgICAgICAgICAucmVn c19uID0gQVJSQVlfU0laRSh6aWNib3pfcmVncyksfQo+ID4gPiArI2RlZmluZSBBSUFfUkVHU19T VUJMSVNUIFwKPiA+ID4gKyAgICAgeyJhaWEiLCAuZmVhdHVyZSA9IEtWTV9SSVNDVl9JU0FfRVhU X1NTQUlBLCAucmVncyA9IGFpYV9jc3JfcmVncywgXAo+ID4gPiArICAgICAgICAgICAgIC5yZWdz X24gPSBBUlJBWV9TSVpFKGFpYV9jc3JfcmVncyksfQo+ID4gPiArI2RlZmluZSBGUF9GX1JFR1Nf U1VCTElTVCBcCj4gPiA+ICsgICAgIHsiZnBfZiIsIC5mZWF0dXJlID0gS1ZNX1JJU0NWX0lTQV9F WFRfRiwgLnJlZ3MgPSBmcF9mX3JlZ3MsIFwKPiA+ID4gKyAgICAgICAgICAgICAucmVnc19uID0g QVJSQVlfU0laRShmcF9mX3JlZ3MpLH0KPiA+ID4gKyNkZWZpbmUgRlBfRF9SRUdTX1NVQkxJU1Qg XAo+ID4gPiArICAgICB7ImZwX2QiLCAuZmVhdHVyZSA9IEtWTV9SSVNDVl9JU0FfRVhUX0QsIC5y ZWdzID0gZnBfZF9yZWdzLCBcCj4gPiA+ICsgICAgICAgICAgICAgLnJlZ3NfbiA9IEFSUkFZX1NJ WkUoZnBfZF9yZWdzKSx9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgdmNwdV9yZWdfbGlz dCB6aWNib19jb25maWcgPSB7Cj4gPiA+ICsgICAgIC5zdWJsaXN0cyA9IHsKPiA+ID4gKyAgICAg QkFTRV9TVUJMSVNULAo+ID4gPiArICAgICBaSUNCT01fUkVHU19TVUJMSVNULAo+ID4gPiArICAg ICBaSUNCT1pfUkVHU19TVUJMSVNULAo+ID4KPiA+IEl0J3MgcG9zc2libGUgdG8gaGF2ZSB6aWNi b20gd2l0aG91dCB6aWNib3ogYW5kIHZpY2UtdmVyc2EuIFNpbmNlCj4gPiBmaW5hbGl6ZV92Y3B1 KCkgd2lsbCBza2lwIHRoZSB3aG9sZSB0ZXN0IHdoZW4gaXQgZGV0ZWN0cyBhIG1pc3NpbmcKPiA+ IGZlYXR1cmUgZm9yIGEgY29uZmlnLCB0aGVuIHdlIHdvbid0IGJlIGFibGUgdG8gdGVzdCBvbmUg d2l0aG91dCB0aGUKPiA+IG90aGVyLiBJdCdzIGEgYml0IGFubm95aW5nLCBidXQgSSB0aGluayB3 ZSBtYXkgbmVlZCBhIHNlcGFyYXRlIGNvbmZpZwo+ID4gZm9yIGVhY2ggaW5kZXBlbmRlbnQgZXh0 ZW5zaW9uLgo+ID4KPiAKPiBTdXJlLgo+IAo+ID4gPiArICAgICB7MH0sCj4gPiA+ICsgICAgIH0s Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgc3RydWN0IHZjcHVfcmVnX2xpc3QgYWlh X2NvbmZpZyA9IHsKPiA+ID4gKyAgICAgLnN1Ymxpc3RzID0gewo+ID4gPiArICAgICBCQVNFX1NV QkxJU1QsCj4gPiA+ICsgICAgIEFJQV9SRUdTX1NVQkxJU1QsCj4gPiA+ICsgICAgIHswfSwKPiA+ ID4gKyAgICAgfSwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgdmNwdV9y ZWdfbGlzdCBmcF9mX2RfY29uZmlnID0gewo+ID4gPiArICAgICAuc3VibGlzdHMgPSB7Cj4gPiA+ ICsgICAgIEJBU0VfU1VCTElTVCwKPiA+ID4gKyAgICAgRlBfRl9SRUdTX1NVQkxJU1QsCj4gPiA+ ICsgICAgIEZQX0RfUkVHU19TVUJMSVNULAo+ID4gPiArICAgICB7MH0sCj4gPiA+ICsgICAgIH0s Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgdmNwdV9yZWdfbGlzdCAqdmNwdV9jb25m aWdzW10gPSB7Cj4gPiA+ICsgICAgICZ6aWNib19jb25maWcsCj4gPiA+ICsgICAgICZhaWFfY29u ZmlnLAo+ID4gPiArICAgICAmZnBfZl9kX2NvbmZpZywKPiA+ID4gK307Cj4gPiA+ICtpbnQgdmNw dV9jb25maWdzX24gPSBBUlJBWV9TSVpFKHZjcHVfY29uZmlncyk7Cj4gPiA+IC0tCj4gPiA+IDIu MzQuMQo+ID4gPgo+ID4KPiA+IEkgc2VlIHdlIGhhdmUgYSBiaXQgb2YgYSBwcm9ibGVtIHdpdGgg dGhlIGNvbmZpZ3MgZm9yIHJpc2N2LiBTaW5jZSB3ZQo+ID4gZG9uJ3QgZGlzYWJsZSBhbnl0aGlu ZyB3ZSdyZSBub3QgdGVzdGluZywgdGhlbiBmb3IgYW55IHRlc3QgdGhhdCBpcwo+ID4gbWlzc2lu ZywgZm9yIGV4YW1wbGUsIHRoZSBmIGFuZCBkIHJlZ2lzdGVycywgd2UnbGwgZ2V0IG91dHB1dCBs aWtlCj4gPiAiVGhlcmUgYXJlIDY2IG5ldyByZWdpc3RlcnMuIENvbnNpZGVyIGFkZGluZyB0aGVt IHRvIHRoZSBibGVzc2VkIHJlZwo+ID4gbGlzdCB3aXRoIHRoZSBmb2xsb3dpbmcgbGluZXM6IiBh bmQgdGhlbiBhIGR1bXAgb2YgYWxsIHRoZSBmIGFuZCBkCj4gPiByZWdpc3RlcnMuIFRoZSB0ZXN0 IGRvZXNuJ3QgZmFpbCwgYnV0IGl0J3MgbWVzc3kgYW5kIGNvbmZ1c2luZy4gSWRlYWxseQo+ID4g d2UnZCBkaXNhYmxlIGFsbCByZWdpc3RlcnMgb2YgYWxsIHN1Ymxpc3RzIG5vdCBpbiB0aGUgY29u ZmlnLCBwcm9iYWJseQo+ID4gYnkgc3RhcnRpbmcgYnkgZGlzYWJsaW5nIGV2ZXJ5dGhpbmcgYW5k IHRoZW4gb25seSByZWVuYWJsaW5nIHRoZSBvbmVzCj4gPiBpbiB0aGUgY29uZmlnLgo+ID4KPiA+ IEFueXRoaW5nIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgaXMgZWl0aGVyIGEgS1ZNIGJ1ZywgaS5l LiB3ZSBzaG91bGQKPiA+IGJlIGFibGUgdG8gZGlzYWJsZSBpdCwgYmVjYXVzZSB3ZSBjYW4ndCBl eHBlY3QgZXZlcnkgaG9zdCB0byBoYXZlIGl0LAo+ID4gb3IgaXQgbmVlZHMgdG8gYmUgaW4gdGhl IGJhc2UgcmVnaXN0ZXIgc3VibGlzdCAobWVhbmluZyBldmVyeSBob3N0Cj4gPiB3aWxsIGFsd2F5 cyBoYXZlIGl0KS4KPiA+Cj4gCj4gWWVzLCBhcyBtZW50aW9uZWQgYWJvdmUsIGFsbCB0aGUgZmVh dHVyZXMgd291bGQgYmUgZW5hYmxlZCBmb3IgdkNQVSBieSBkZWZhdWx0Cj4gaWYgaXQncyBhdmFp bGFibGUgb24gdGhlIGhvc3QuIEkgdGhpbmsgd2UgY2FuIGRpc2FibGUgYWxsIHRoZSBmZWF0dXJl Cj4gYml0cyBhdCB0aGUgc3RhcnQgb2YKPiBmaW5hbGl6ZV92Y3B1KCkgYW5kIG9ubHkgZW5hYmxl IHRoZSBmZWF0dXJlIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGUKPiBzcGVjaWZpZWQgY29uZmln Lgo+IAoKWXVwLgoKVGhhbmtzLApkcmV3CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LXJpc2N2Cg==