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 BA2EDC0218A for ; Tue, 28 Jan 2025 09:08:40 +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:To:References:Message-Id:Cc:Date: In-Reply-To:From:Subject:Mime-Version:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8BUKI8KE89cwCK11LVSG2U1ACdX9cuVJMz4Esdvw2BU=; b=nRuLGHzXq+U4SX iQ17pLzG12f55jNG2I+KRrKk/GqVKmdEMEh5Nm55Nvsg3d3l86josRTBRWNK1/KbcJtkC/2x4uEgV DtCzF0GPTOF9Ld6BUIDOkgk5/VGfH9mutJtwF3Ytw3sV2LerfJNs4ZRm8wAyQunC/gpGcjaovgxeS HNmklaMmFv8sZAtMrB4k33Nppg34gXAeVjAub2p2S6aRRHkktBNIw/ur5rSGw6ssm1ytu7/j6fX6m VCAUmDtzhRw/lEAOVJiFFaNeYafrH1jj3EzKLQ69Cwv7lKGmdD9OQcSkd5esrLyfTzM6BzdHGcIC0 QT9fA2c/J/SFY8JFF01Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tchaD-00000004Sv8-2n9j; Tue, 28 Jan 2025 09:08:33 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tchYo-00000004SX2-2s1X; Tue, 28 Jan 2025 09:07:09 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-5d3d0205bd5so7963794a12.3; Tue, 28 Jan 2025 01:07:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738055224; x=1738660024; darn=lists.infradead.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=2yuVSU2pplv74m0wItr+/5mCiQNLify1e1rJ5aaAbr4=; b=C4F98iSyoNFBDp9lzBSIePaco1hE2jeDjA+gBHgeD57hlPrvLIQYA8QLl4ymH3T8ax zP0Xx2Cpj7Dudvfc+VnatPjPQsujDRiosSYFdobgNcTbnoI4nJ0vU99j8n7VMb57EXBQ BQ1dGrvmbaEOXv0up6VYZJaebSCTdEk2gCnLukJAF8/YWj9lNqeQh7t0zWJehob7JoXB X4SnzQljAM7mqOVL8i+cKagzHF7jxj48MZRG0aEXaKWyGYglFG27BiZDROywUhWPVTMc gErKMqFow0+ga5FRm8J186Xr1vLR9LmFuZ3654+uv67fo1XFKgTmljvDt5LIBymiKG6D jHeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738055224; x=1738660024; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2yuVSU2pplv74m0wItr+/5mCiQNLify1e1rJ5aaAbr4=; b=Dv3Q988g45iEKQzTyL17AuYsA5Rutpca+xqS9hEiwYHS6OUB7fiIsez/UENkXE3dxd MCeksk5hzDK9F3mchwCHILdqFNoXWHp2iNBFoPfSMoESiUUHy5YKzkfpR389h4G+T371 AiZxQFTh/9RU0dseNelsWMIzs8HnjCQDRxa1h7KeaLeXB8OL0ZQsbmtl6mp7G3TU1WSe Hetzw0OTN/qXzABO/XLrFP6Tp5mXiVgOlwLA3fkgmMJhRaUW9vzjAJ+1PAp1PVBj9LU5 N+EoXzmj06Pb6KzDri5Xbj0rviGhnqBzYbpEjykgy0/+KqznSga+emCtFMIKSA3nIGl+ nLrQ== X-Forwarded-Encrypted: i=1; AJvYcCU0nWft/69vUo9Jh7T3aGR14rLdgHDv91u5/spYLMZPx9AI2NsbV6v5Pyfwr0ScGeFa1Ol1Eeqo3Q94@lists.infradead.org, AJvYcCUOc7Kwz1YPo28LwS39ykqP4JYmmLqxEgoaGCiP+ulqKAlbH+NySFzjNlL1kbeIfhIUAFykAX6JRCceK3w=@lists.infradead.org, AJvYcCWi+cyf9JwMwKdsdQfDaHmrwNNd6HEhApKYLyDIPH4L77PAtNB5bCzI4twoZA0NGhkyFdBWkCKLZqcdrpOzdpBq@lists.infradead.org X-Gm-Message-State: AOJu0YxdVFSEiIl32cXv8hUZErpp8d9Qo/Kk2/bT4yihbi7pl13o+sRU 7UCjBaz9EHlSjCni51wcaliFwoQB6snJJ6KYrpSzcATYggbMy88c X-Gm-Gg: ASbGnct0llNk2zlZIIzTGA4noZDSbulIgYvOnK0DIemaOQ9ZdAgZAwrxMl8ETHlUbyV wwHrn7jy8jpifH4aH26CDp7rWWtM8zPdwGftUhEKIHB0kvkW1RBFhGd0i0ELEsvRQ1VVJ4Ydusr p8Priw0Qd7HKrWPwZlAr/OFcWBlgZb87evD/ia8VlFlOzL1rQk01l2sYgslCseQqdpuaKYwflfT 0QOzOSG9MBq/aQ7Zt4Ej3XVLt/gKdL6T9U6o87gFtpa0VYEeBizMFvUiXcJrCwasaLRUMin+Vnd buNAUvYN+TwLnj1u8qiedC6Jrq/WSwHA1PgSJAL+HlxRt4dwOujwHg== X-Google-Smtp-Source: AGHT+IHoC2oW1tqSxN9OQa4ZmZI1HcLp4IEA1dv7f4q2+c2674UoIc77tNzY51cYorRfeXSoBNZfmQ== X-Received: by 2002:a05:6402:3487:b0:5d4:1ac2:277f with SMTP id 4fb4d7f45d1cf-5db7d2f5efdmr34092630a12.9.1738055223631; Tue, 28 Jan 2025 01:07:03 -0800 (PST) Received: from smtpclient.apple (185.174.17.62.zt.hu. [185.174.17.62]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc186d8945sm6834317a12.67.2025.01.28.01.07.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jan 2025 01:07:02 -0800 (PST) Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3776.700.51\)) Subject: Re: [PATCH 05/12] clk: sunxi-ng: add CCU drivers for V853 From: =?utf-8?B?QW5kcsOhcyBTemVtesWR?= In-Reply-To: <20250128004211.5c6f0158@minigeek.lan> Date: Tue, 28 Jan 2025 10:06:50 +0100 Cc: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Linus Walleij , Philipp Zabel , Maxime Ripard , Vinod Koul , Kishon Vijay Abraham I , Ulf Hansson , Paul Walmsley , Palmer Dabbelt , Albert Ou , =?utf-8?Q?Uwe_Kleine-K=C3=B6nig?= , Florian Fainelli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-gpio@vger.kernel.org, linux-pm@vger.kernel.org, linux-riscv@lists.infradead.org Message-Id: References: <20250110123923.270626-1-szemzo.andras@gmail.com> <20250110123923.270626-6-szemzo.andras@gmail.com> <20250128004211.5c6f0158@minigeek.lan> To: Andre Przywara X-Mailer: Apple Mail (2.3776.700.51) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250128_010706_753721_745F63AB X-CRM114-Status: GOOD ( 41.64 ) 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 SGkgQW5kcmUsCgo+IE9uIDI4IEphbiAyMDI1LCBhdCAwMTo0MiwgQW5kcmUgUHJ6eXdhcmEgPGFu ZHJlLnByenl3YXJhQGFybS5jb20+IHdyb3RlOgo+IAo+IE9uIEZyaSwgMTAgSmFuIDIwMjUgMTM6 Mzk6MTYgKzAxMDAKPiBBbmRyYXMgU3plbXpvIDxzemVtem8uYW5kcmFzQGdtYWlsLmNvbT4gd3Jv dGU6Cj4gCj4gSGkgQW5kcmFzLAo+IAo+IG9oIGRlYXIsIHRoYXQncyBhIGNvZGUgbGluZSBhbmQg YSBoYWxmIQo+IAo+IEZpcnN0IHZlcnkgbXVjaCBmb3Igc2VuZGluZyB0aGlzLCBJIGtub3cgZnJv bSAocmVjZW50KSBleHBlcmllbmNlIHRoYXQKPiB0aG9zZSBjbG9jayBkcml2ZXJzIGNhbiBiZSB2 ZXJ5IGRhdW50aW5nIGFuZCB0ZWRpb3VzIHRvIHdyaXRlCj4gLi4ud2hpY2ggaXMgdW5mb3J0dW5h dGVseSB0cnVlIGZvciB0aGUgcmV2aWV3IGFzIHdlbGwgOy0pCj4gCj4gU28gdGhpcyBpcyB0aGUg Zmlyc3Qgcm91bmQsIGFzIEkgd2FzIGtlZXBpbmcgYW5kIHVwZGF0aW5nIHRoaXMgaW4gbXkKPiBE cmFmdHMgZm9sZGVyIGZvciBhbG1vc3QgdHdvIHdlZWtzIG5vdy4KPiAKPj4gVjg1MyBoYXMgc2lt aWxhciBnYXRlcy9yZXNldHMgbGlrZSBleGlzdGluZyBBbGx3aW5uZXIgU09Dcy4gQWRkIHN1cHBv cnQgZm9yIGl0J3MgQ0NVIGFuZCBQUkNNIENDVS4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJh cyBTemVtem8gPHN6ZW16by5hbmRyYXNAZ21haWwuY29tPgo+PiAtLS0KPj4gZHJpdmVycy9jbGsv c3VueGktbmcvS2NvbmZpZyAgICAgICAgICAgIHwgICAxMCArCj4+IGRyaXZlcnMvY2xrL3N1bnhp LW5nL01ha2VmaWxlICAgICAgICAgICB8ICAgIDQgKwo+PiBkcml2ZXJzL2Nsay9zdW54aS1uZy9j Y3Utc3VuOGktdjg1My1yLmMgfCAgIDk1ICsrCj4+IGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1z dW44aS12ODUzLXIuaCB8ICAgMTUgKwo+PiBkcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGkt djg1My5jICAgfCAxMTQ1ICsrKysrKysrKysrKysrKysrKysrKysrCj4+IGRyaXZlcnMvY2xrL3N1 bnhpLW5nL2NjdS1zdW44aS12ODUzLmggICB8ICAgMTQgKwo+PiA2IGZpbGVzIGNoYW5nZWQsIDEy ODMgaW5zZXJ0aW9ucygrKQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsvc3VueGkt bmcvY2N1LXN1bjhpLXY4NTMtci5jCj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9z dW54aS1uZy9jY3Utc3VuOGktdjg1My1yLmgKPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Y2xrL3N1bnhpLW5nL2NjdS1zdW44aS12ODUzLmMKPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aS12ODUzLmgKPj4gCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2Nsay9zdW54aS1uZy9LY29uZmlnIGIvZHJpdmVycy9jbGsvc3VueGktbmcvS2NvbmZpZwo+ PiBpbmRleCBiNTQ3MTk4YTJjNjUuLmM0MzAwMjI0NmIyMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9jbGsvc3VueGktbmcvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9LY29u ZmlnCj4+IEBAIC0yMiw2ICsyMiwxNiBAQCBjb25maWcgU1VOMjBJX0QxX1JfQ0NVCj4+IGRlZmF1 bHQgeQo+PiBkZXBlbmRzIG9uIE1BQ0hfU1VOOEkgfHwgUklTQ1YgfHwgQ09NUElMRV9URVNUCj4+ IAo+PiArY29uZmlnIFNVTjhJX1Y4NTNfQ0NVCj4+ICsgdHJpc3RhdGUgIlN1cHBvcnQgZm9yIHRo ZSBBbGx3aW5uZXIgVjg1MyBDQ1UiCj4+ICsgZGVmYXVsdCBNQUNIX1NVTjhJCj4+ICsgZGVwZW5k cyBvbiBNQUNIX1NVTjhJIHx8IENPTVBJTEVfVEVTVAo+PiArCj4+ICtjb25maWcgU1VOOElfVjg1 M19SX0NDVQo+PiArIHRyaXN0YXRlICJTdXBwb3J0IGZvciB0aGUgQWxsd2lubmVyIFY4NTMgUFJD TSBDQ1UiCj4+ICsgZGVmYXVsdCBNQUNIX1NVTjhJCj4+ICsgZGVwZW5kcyBvbiBNQUNIX1NVTjhJ IHx8IENPTVBJTEVfVEVTVAo+PiArCj4+IGNvbmZpZyBTVU41MElfQTY0X0NDVQo+PiB0cmlzdGF0 ZSAiU3VwcG9ydCBmb3IgdGhlIEFsbHdpbm5lciBBNjQgQ0NVIgo+PiBkZWZhdWx0IHkKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL01ha2VmaWxlIGIvZHJpdmVycy9jbGsvc3Vu eGktbmcvTWFrZWZpbGUKPj4gaW5kZXggNmIzYWUyYjYyMGRiLi5jMzI0MzBkODc0ZWEgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMv Y2xrL3N1bnhpLW5nL01ha2VmaWxlCj4+IEBAIC0yNyw2ICsyNyw4IEBAIHN1bnhpLWNjdS15ICs9 IGNjdV9tcC5vCj4+IG9iai0kKENPTkZJR19TVU5JVl9GMUMxMDBTX0NDVSkgKz0gc3VuaXYtZjFj MTAwcy1jY3Uubwo+PiBvYmotJChDT05GSUdfU1VOMjBJX0QxX0NDVSkgKz0gc3VuMjBpLWQxLWNj dS5vCj4+IG9iai0kKENPTkZJR19TVU4yMElfRDFfUl9DQ1UpICs9IHN1bjIwaS1kMS1yLWNjdS5v Cj4+ICtvYmotJChDT05GSUdfU1VOOElfVjg1M19DQ1UpICs9IHN1bjhpLXY4NTMtY2N1Lm8KPj4g K29iai0kKENPTkZJR19TVU44SV9WODUzX1JfQ0NVKSArPSBzdW44aS12ODUzLXItY2N1Lm8KPj4g b2JqLSQoQ09ORklHX1NVTjUwSV9BNjRfQ0NVKSArPSBzdW41MGktYTY0LWNjdS5vCj4+IG9iai0k KENPTkZJR19TVU41MElfQTEwMF9DQ1UpICs9IHN1bjUwaS1hMTAwLWNjdS5vCj4+IG9iai0kKENP TkZJR19TVU41MElfQTEwMF9SX0NDVSkgKz0gc3VuNTBpLWExMDAtci1jY3Uubwo+PiBAQCAtNTAs NiArNTIsOCBAQCBvYmotJChDT05GSUdfU1VOOUlfQTgwX0NDVSkgKz0gc3VuOWktYTgwLWRlLWNj dS5vCj4+IG9iai0kKENPTkZJR19TVU45SV9BODBfQ0NVKSArPSBzdW45aS1hODAtdXNiLWNjdS5v Cj4+IAo+PiBzdW5pdi1mMWMxMDBzLWNjdS15ICs9IGNjdS1zdW5pdi1mMWMxMDBzLm8KPj4gK3N1 bjhpLXY4NTMtY2N1LXkgKz0gY2N1LXN1bjhpLXY4NTMubwo+PiArc3VuOGktdjg1My1yLWNjdS15 ICs9IGNjdS1zdW44aS12ODUzLXIubwo+PiBzdW4yMGktZDEtY2N1LXkgKz0gY2N1LXN1bjIwaS1k MS5vCj4+IHN1bjIwaS1kMS1yLWNjdS15ICs9IGNjdS1zdW4yMGktZDEtci5vCj4+IHN1bjUwaS1h NjQtY2N1LXkgKz0gY2N1LXN1bjUwaS1hNjQubwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsv c3VueGktbmcvY2N1LXN1bjhpLXY4NTMtci5jIGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1 bjhpLXY4NTMtci5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAw MC4uMTlhOGJhNTg3NzkzCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9jbGsvc3Vu eGktbmcvY2N1LXN1bjhpLXY4NTMtci5jCj4+IEBAIC0wLDAgKzEsOTUgQEAKPj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMy4wCj4+ICsvKiBDb3B5cmlnaHQoYykgMjAyMCAtIDIw MjMgQWxsd2lubmVyIFRlY2hub2xvZ3kgQ28uLEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAK PiBTbyBkb2VzIHRoYXQgbWVhbiB5b3UgY29waWVkIHRoYXQgZnJvbSB0aGUgQlNQPyBIb3cgbXVj aCBpcyB5b3VyIG93bgo+IHdvcmsgdGhlbj8gU2hvdWxkICJyZW5nYW9taW4iIGJlIHRoZW4gdGhl IGF1dGhvcj8KPiAKPiBCdXQgbW9yZSBpbXBvcnRhbnRseTogQXMgZmFyIGFzIEkga25vdywgR1BM LTMgaXMgTk9UIGNvbXBhdGlibGUgd2l0aAo+IHRoZSBrZXJuZWwuIFlvdSBkZWZpbml0ZWx5IGNh bm5vdCBhZGQgY29kZSB3aXRoIHRoYXQgbGljZW5zZSwgYW5kIGZyb20KPiBteSB1bmRlcnN0YW5k aW5nIGNhbm5vdCBjb3B5IEdQTC0zIGNvZGUgd2l0aG91dCBrZWVwaW5nIHRoZSBsaWNlbnNlLAo+ IHdoaWNoIG1lYW5zIGNvcHlpbmcgaXMgYSBuby1nby4KPiBZb3Ugd291bGQgbmVlZCB0byBhc2sg dGhlIG9yaWdpbmFsIGF1dGhvciB0byBjaGFuZ2UgdGhlIGxpY2Vuc2UuIEkgaGF2ZQo+IHNlZW4g bGljZW5zZSBjaGFuZ2VzIGluIGdpdGh1YiByZXBvcyBtaXJyb3JpbmcgQWxsd2lubmVyJ3MgU0RL IGluIHRoZQo+IGxhc3QgZmV3IG1vbnRocyAoc29tZW9uZSBtdXN0IGhhdmUgdG9sZCB0aGVtPyks IHNvIGl0J3Mgd29ydGggY2hlY2tpbmcKPiBiYWNrIHRoZXJlIHRvIHNlZSBpZiB0aGUgbGljZW5z ZSBoYXMgY2hhbmdlZC4KPiAKPiBCdXQgd2l0aCB0aGF0IGhlYWRlciwgYW5kIHdpdGggdGhhdCBz b3VyY2UgKHN1YmplY3QgdG8gY2xhcmlmaWNhdGlvbikKPiB0aGlzIGNhbm5vdCBiZSBtZXJnZWQg YXMgc3VjaC4KPiAKCkluIHRoZSBkYXRhc2hlZXQgd2hhdCBJIGhhdmUsIGFsbCB0aGlzIFJfUFJD TSBibG9jayBpcyBtZW50aW9uZWQgb25seSBhdCB0aGUgbWVtb3J5IG1hcHBpbmcuCkkgZGlkJ3Qg Zm91bmQgYW55IG90aGVyIGRvY3VtZW50YXRpb24gYWJvdXQgdGhpcyBJUC4gCgpUaGVyZSBpcyBh IGRyaXZlciBbMV0gYmFzZWQgb24gdGhlIG1vcmUgb3IgbGVzcyBtYWlubGluZSdpc2ggc3VueGkt bmcgY2xrIApmcmFtZXdvcmssIHNvIEkgdG9vayB0aGF0IGFuZCBtYWRlIGl0IHdvcmsgd2l0aCB0 aGlzIHY4NTMtY2N1IGRyaXZlci4gCgpJIGRvbuKAmXQga25vdyB3aGF0IHNob3VsZC9jYW4gSSBk byB3aXRoIHRoZSBMaWNlbmNlIG9yIGhvdyBzaG91bGQgaXQgZG9uZSBwcm9wZXJseSwKYXMgaXTi gJlzIGJhc2ljYWxseSBhIGZldyByZWdpc3RlcnMvYml0cywgYnV0IHdpdGhvdXQgZG9jdW1lbnRh dGlvbiBpdOKAmXMgaGFyZCB0byB3cml0ZSBpdCBmcm9tIHNjcmF0Y2guCgpbMV06IGh0dHBzOi8v Z2l0aHViLmNvbS9ZdXp1a2lIRC9UaW55VmlzaW9uL2Jsb2IvbWFpbi9rZXJuZWwvYnNwL2RyaXZl cnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aXcyMS1yLmMKCj4+ICsgKgo+PiArICogQ29weXJpZ2h0 IChjKSAyMDIzIHJlbmdhb21pbkBhbGx3aW5uZXJ0ZWNoLmNvbQo+PiArICovCj4+ICsKPj4gKyNp bmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJl c3MuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPj4gKwo+PiArI2lu Y2x1ZGUgImNjdV9jb21tb24uaCIKPj4gKyNpbmNsdWRlICJjY3VfcmVzZXQuaCIKPj4gKwo+PiAr I2luY2x1ZGUgImNjdV9kaXYuaCIKPj4gKyNpbmNsdWRlICJjY3VfZ2F0ZS5oIgo+PiArI2luY2x1 ZGUgImNjdV9tcC5oIgo+PiArI2luY2x1ZGUgImNjdV9tdWx0LmgiCj4+ICsjaW5jbHVkZSAiY2N1 X25rLmgiCj4+ICsjaW5jbHVkZSAiY2N1X25rbS5oIgo+PiArI2luY2x1ZGUgImNjdV9ua21wLmgi Cj4+ICsjaW5jbHVkZSAiY2N1X25tLmgiCj4+ICsKPj4gKyNpbmNsdWRlICJjY3Utc3VuOGktdjg1 My1yLmgiCj4+ICsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfdHdkX2NsaywgInIt dHdkIiwgIm9zYzI0TSIsIDB4MDEyQywgQklUKDApLCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf R0FURShyX3BwdV9jbGssICJyLXBwdSIsICJvc2MyNE0iLCAweDAxQUMsIEJJVCgwKSwgMCk7Cj4+ ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEUocl9ydGNfY2xrLCAici1ydGMiLCAib3NjMjRNIiwgMHgw MjBDLCBCSVQoMCksIDApOwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfY3B1Y2ZnX2Nsaywg InItY3B1Y2ZnIiwgIm9zYzI0TSIsCj4+ICsgMHgwMjJDLCBCSVQoMCksIDApOwo+PiArCj4+ICtz dGF0aWMgc3RydWN0IGNjdV9yZXNldF9tYXAgc3VuOGlfdjg1M19yX2NjdV9yZXNldHNbXSA9IHsK Pj4gKyBbUlNUX0JVU19SX1BQVV0gPSB7IDB4MDFhYywgQklUKDE2KSB9LAo+PiArIFtSU1RfQlVT X1JfUlRDXSA9IHsgMHgwMjBjLCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNfUl9DUFVDRkddID0g eyAweDAyMmMsIEJJVCgxNikgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgY2xrX2h3 X29uZWNlbGxfZGF0YSBzdW44aV92ODUzX3JfaHdfY2xrcyA9IHsKPj4gKyAuaHdzICAgID0gewo+ PiArIFtDTEtfUl9UV0RdID0gJnJfdHdkX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19SX1BQVV0g PSAmcl9wcHVfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX1JfUlRDXSA9ICZyX3J0Y19jbGsuY29t bW9uLmh3LAo+PiArIFtDTEtfUl9DUFVDRkddID0gJnJfY3B1Y2ZnX2Nsay5jb21tb24uaHcsCj4+ ICsgfSwKPj4gKyAubnVtID0gQ0xLX05VTUJFUiwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1 Y3QgY2N1X2NvbW1vbiAqc3VuOGlfdjg1M19yX2NjdV9jbGtzW10gPSB7Cj4+ICsgJnJfdHdkX2Ns ay5jb21tb24sCj4+ICsgJnJfcHB1X2Nsay5jb21tb24sCj4+ICsgJnJfcnRjX2Nsay5jb21tb24s Cj4+ICsgJnJfY3B1Y2ZnX2Nsay5jb21tb24sCj4+ICt9Owo+PiArCj4+ICsKPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3VueGlfY2N1X2Rlc2Mgc3VuOGlfdjg1M19yX2NjdV9kZXNjID0gewo+PiAr IC5jY3VfY2xrcyA9IHN1bjhpX3Y4NTNfcl9jY3VfY2xrcywKPj4gKyAubnVtX2NjdV9jbGtzID0g QVJSQVlfU0laRShzdW44aV92ODUzX3JfY2N1X2Nsa3MpLAo+PiArCj4+ICsgLmh3X2Nsa3MgPSAm c3VuOGlfdjg1M19yX2h3X2Nsa3MsCj4+ICsKPj4gKyAucmVzZXRzID0gc3VuOGlfdjg1M19yX2Nj dV9yZXNldHMsCj4+ICsgLm51bV9yZXNldHMgPSBBUlJBWV9TSVpFKHN1bjhpX3Y4NTNfcl9jY3Vf cmVzZXRzKSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc3VuOGlfdjg1M19yX2NjdV9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiArIHZvaWQgX19pb21lbSAq cmVnOwo+PiArCj4+ICsgcmVnID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYs IDApOwo+PiArIGlmIChJU19FUlIocmVnKSkKPj4gKyByZXR1cm4gUFRSX0VSUihyZWcpOwo+PiAr Cj4+ICsgcmV0dXJuIGRldm1fc3VueGlfY2N1X3Byb2JlKCZwZGV2LT5kZXYsIHJlZywgJnN1bjhp X3Y4NTNfcl9jY3VfZGVzYyk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIHN1bjhpX3Y4NTNfcl9jY3VfaWRzW10gPSB7Cj4+ICsgeyAuY29tcGF0aWJsZSA9 ICJhbGx3aW5uZXIsc3VuOGktdjg1My1yLWNjdSIgfSwKPj4gKyB7IH0KPj4gK307Cj4+ICsKPj4g K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX3Y4NTNfcl9jY3VfZHJpdmVyID0g ewo+PiArIC5wcm9iZSA9IHN1bjhpX3Y4NTNfcl9jY3VfcHJvYmUsCj4+ICsgLmRyaXZlciA9IHsK Pj4gKyAubmFtZSA9ICJzdW44aS12ODUzLXItY2N1IiwKPj4gKyAuc3VwcHJlc3NfYmluZF9hdHRy cyA9IHRydWUsCj4+ICsgLm9mX21hdGNoX3RhYmxlID0gc3VuOGlfdjg1M19yX2NjdV9pZHMsCj4+ ICsgfSwKPj4gK307Cj4+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjhpX3Y4NTNfcl9jY3Vf ZHJpdmVyKTsKPj4gKwo+PiArTU9EVUxFX0lNUE9SVF9OUygiU1VOWElfQ0NVIik7Cj4+ICtNT0RV TEVfTElDRU5TRSgiR1BMIik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9j Y3Utc3VuOGktdjg1My1yLmggYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My1y LmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xNTZjYTE1 ZTgyMDgKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Ut c3VuOGktdjg1My1yLmgKPj4gQEAgLTAsMCArMSwxNSBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAgKi8KPiAKPiBIZXJlIHRoZSBsaWNlbnNlIGxvb2tzIHJpZ2h0LCBi dXQgdGhlIGF1dGhvcnNoaXAgYW5kIHNvdXJjZSBhcmUgc3RpbGwKPiBpbiBxdWVzdGlvbi4gTG9v a3MgbGlrZSB0aGUgb25seSByZWFsIGNvZGUgaW4gaGVyZSBpcyBDTEtfTlVNQkVSLCBzbyBpZgo+ IHRoYXQgaXMgeW91ciBsaW5lLCBkcm9wIGFsbCB0aG9zZSBib2d1cyBjb3B5cmlnaHRzLCBhbmQg cHV0IGluIHlvdXIgb3duLgoKT2ssIEnigJlsbC4KCj4gCj4+ICsvKiBDb3B5cmlnaHQoYykgMjAy MCAtIDIwMjMgQWxsd2lubmVyIFRlY2hub2xvZ3kgQ28uLEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjMgcmVuZ2FvbWluQGFsbHdpbm5lcnRl Y2guY29tCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfQ0NVX1NVTjhJX1Y4NTNfUl9ICj4+ICsj ZGVmaW5lIF9DQ1VfU1VOOElfVjg1M19SX0gKPj4gKwo+PiArI2luY2x1ZGUgPGR0LWJpbmRpbmdz L2Nsb2NrL3N1bjhpLXY4NTMtci1jY3UuaD4KPj4gKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9yZXNl dC9zdW44aS12ODUzLXItY2N1Lmg+Cj4+ICsKPj4gKyNkZWZpbmUgQ0xLX05VTUJFUiBDTEtfUl9N QVhfTk8KPiAKPiBXaGF0J3MgIkNMS19SX01BWF9OTyI/IEkgdGhpbmsgd2UgcHV0IGluIHRoZSBh Y3R1YWwgbGFzdCBjbG9jayBuYW1lIGluLAo+IHRyYWRpdGlvbmFsbHk/Cj4gCgpZZXMsIHlvdSBh cmUgcmlnaHQuCgo+PiArCj4+ICsjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3N1 bnhpLW5nL2NjdS1zdW44aS12ODUzLmMgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGkt djg1My5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTE5 NDczNTdhMDhlCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9jbGsvc3VueGktbmcv Y2N1LXN1bjhpLXY4NTMuYwo+PiBAQCAtMCwwICsxLDExNDUgQEAKPj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjQgQW5kcmFzIFN6ZW16byA8c3plbXpvLmFuZHJhc0BnbWFpbC5jb20+Cj4+ICsgKgo+PiArICog QmFzZWQgb24gY2N1LXN1bjIwaS1kMS5jLCB3aGljaCBpczoKPj4gKyAqIENvcHlyaWdodCAoQykg MjAyMSBTYW11ZWwgSG9sbGFuZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAKPiBBbGwgcmlnaHRz IHJlc2VydmVkPyBXaGVyZSBkb2VzIHRoYXQgY29tZSBmcm9tPyBQbGVhc2UgcmVtb3ZlIHRoYXQu Cj4gCgpTdGFydGluZyB0byB3cml0ZSB0aGUgZmlyc3QgY2N1IGRyaXZlciB3aXRob3V0IHByaW9y IGtub3dsZWRnZSBpcyBub3QgYW4gZWFzeSB0YXNrLCBzbyBJIHN0YXJ0ZWQgZnJvbSB0aGUgZDEg Y2N1IGRyaXZlci4gSSBkb27igJl0IGtub3cKaG93IG11Y2ggZnJvbSB0aGF0IHJlbWFpbnMgYWN0 dWFsbHksIGJ1dCBJIGRvbuKAmXQgd2FudGVkIHRvIHJlbW92ZSB0aGF0IGNvbW1lbnQuIEkgbG9v a2VkIGFyb3VuZCBob3cgc2hvdWxkIGl0IGJlIGRvbmUKY29ycmVjdGx5LCBhbmQgY29waWVkIHRo ZSByZW1hcmsgZnJvbSB0aGUgY2N1LXN1bjhpLXYzcy5jCgpJdCBoYXMgZXhhY3RseSB0aGUgc2Ft ZSBjb3B5cmlnaHQuIAouLgogKiBCYXNlZCBvbiBjY3Utc3VuOGktaDMuYywgd2hpY2ggaXM6CiAq IENvcHlyaWdodCAoYykgMjAxNiBNYXhpbWUgUmlwYXJkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgou LgoKSeKAmWxsIHJlbW92ZSB0aGF0LiAKCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4 L2Nsay1wcm92aWRlci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4+ICsjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ ICsKPj4gKyNpbmNsdWRlICIuLi9jbGsuaCIKPj4gKwo+PiArI2luY2x1ZGUgImNjdV9jb21tb24u aCIKPj4gKyNpbmNsdWRlICJjY3VfcmVzZXQuaCIKPj4gKwo+PiArI2luY2x1ZGUgImNjdV9kaXYu aCIKPj4gKyNpbmNsdWRlICJjY3VfZ2F0ZS5oIgo+PiArI2luY2x1ZGUgImNjdV9tcC5oIgo+PiAr I2luY2x1ZGUgImNjdV9tdWx0LmgiCj4+ICsjaW5jbHVkZSAiY2N1X25rLmgiCj4+ICsjaW5jbHVk ZSAiY2N1X25rbS5oIgo+PiArI2luY2x1ZGUgImNjdV9ua21wLmgiCj4+ICsjaW5jbHVkZSAiY2N1 X25tLmgiCj4+ICsKPj4gKyNpbmNsdWRlICJjY3Utc3VuOGktdjg1My5oIgo+PiArCj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBvc2MyNE1bXSA9IHsKPj4gKyB7IC5md19u YW1lID0gImhvc2MiIH0KPj4gK307Cj4+ICsKPj4gKy8qCj4+ICsgKiBGb3IgdGhlIENQVSBQTEws IHRoZSBvdXRwdXQgZGl2aWRlciBpcyBkZXNjcmliZWQgYXMgIm9ubHkgZm9yIHRlc3RpbmciCj4+ ICsgKiBpbiB0aGUgdXNlciBtYW51YWwuIFNvIGl0J3Mgbm90IG1vZGVsbGVkIGFuZCBmb3JjZWQg dG8gMC4KPj4gKyAqLwo+PiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9DUFVfUkVHIDB4MDAwCj4+ ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X211bHQgcGxsX2NwdV9jbGsgPSB7Cj4+ICsgLmVuYWJs ZSA9IEJJVCgyNykgfCBCSVQoMzApIHwgQklUKDMxKSwKPiAKPiBCdXQgYml0IDMwIGFuZCAzMSBh cmUgc2V0IGFscmVhZHkgYnkgdGhlIFBMTCBsb29wIGluIHRoZSBwcm9iZSByb3V0aW5lCj4gYmVs b3csIHNvIHdlIGp1c3QgbmVlZCBiaXQgMjcgdG8gZ2F0ZSB0aGUgb3V0cHV0Lgo+IAo+PiArIC5s b2NrID0gQklUKDI4KSwKPj4gKyAubXVsdCA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIp LAo+IAo+IHRlY2huaWNhbGx5IHRoZSBtYW51YWwgc2F5cyB0aGUgbWluaW11bSBpcyAxMSwgdGhv dWdoIHRoaXMgZG9lc24ndAo+IHJlYWxseSBtYXR0ZXIsIGFzIHdlIHdpbGwgbmV2ZXIgZ28gdGhh dCBsb3cgYW55d2F5Lgo+IAo+PiArIC5jb21tb24gPSB7Cj4+ICsgLnJlZyA9IDB4MDAwLAo+PiAr IC5ody5pbml0ID0gQ0xLX0hXX0lOSVRfUEFSRU5UU19EQVRBKCJwbGwtY3B1Iiwgb3NjMjRNLAo+ PiArICAgICZjY3VfbXVsdF9vcHMsCj4+ICsgICAgQ0xLX1NFVF9SQVRFX1VOR0FURSksCj4gCj4g VGhpcyBtdXN0IGJlIENMS19TRVRfUkFURV9HQVRFLCBhcyB3ZSBmaWd1cmVkIHNvbWUgd2Vla3Mg YWdvLiBUaGUgbWFudWFsCj4gc2F5cyB0aGF0IGZvciBjaGFuZ2luZyB0aGUgZnJlcXVlbmN5IHlv dSBtdXN0IGxlYXZlIHRoZSBQTEwgZW5hYmxlZAo+IChiaXRzIDMxIGFuZCAzMCA9IDEpLCBidXQg Z2F0ZSB0aGUgb3V0cHV0IChiaXQgMjcgPSAwKS4gVGhlICJHQVRFIiBpbgo+IHRoYXQgZmxhZyBu YW1lIGhlcmUgcmVmZXJzIHRvIHRoZSAuZW5hYmxlIG1hc2sgYWJvdmUuCj4gU28gQ0xLX1NFVF9S QVRFX1VOR0FURSB3b3VsZCBtZWFuOiBkb24ndCB0b3VjaCB0aGUgZW5hYmxlIGJpdCwgYnV0IGtl ZXAKPiBpdCBydW5uaW5nLCB3aGljaCB3b3VsZCBiZSBjb3JyZWN0IGlmIHRoZSBlbmFibGUgYml0 IHdvdWxkIGJlIGFib3V0IHRoZQo+IHJlYWwgZW5hYmxlIGJpdCAoYml0IDMxKS4gQnV0IHNpbmNl IHdlIG1vZGVsIHRoaXMgbGlrZSAiZW5hYmxlIG1lYW5zIG5vdAo+IGdhdGVkIiwgd2UgbXVzdCBn YXRlIHRoZSBvdXRwdXQsIGJ5IHNldHRpbmcgdGhlIGVuYWJsZSBiaXQgdG8gMC4KPiBDTEtfU0VU X1JBVEVfR0FURSBkb2VzIGV4YWN0bHkgdGhhdC4KPiAKCkFsbCB0aGlzIEJJVCAoMzAsIDMxLCAy NykgYW5kIE1VTFRfTUlOIDEyIGFyZSBjb21lcyBmcm9tIHRoZSBtaXN0YWtlIHRoYXQgSSB0cmll ZCB0byBmb2xsb3cgdGhlIEJTUApkcml2ZXIgWzJdIHRvbyBjbG9zZWx5LgpBcyB0aGUgY3B1IGZy ZXEuIHNjYWxpbmcgYXJlIHdvcmtpbmcgWzNdIHdpdGggdGhpcyBzZXR0aW5ncyB0b28sIEkgbWlz c2VkIHRoYXQuCgpJ4oCZbGwgZml4IGl0LgoKWzJdOiBodHRwczovL2dpdGh1Yi5jb20vWXV6dWtp SEQvVGlueVZpc2lvbi9ibG9iL21haW4va2VybmVsL2JzcC9kcml2ZXJzL2Nsay9zdW54aS1uZy9j Y3Utc3VuOGl3MjEuYwoKWzNdOiB2ODUxczp+IyBjYXQgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUv Y3B1MC9jcHVmcmVxL3N0YXRzL3RpbWVfaW5fc3RhdGUgCjQwODAwMCAxNzc2MjAKNjAwMDAwIDEw MDk5CjcyMDAwMCAyNTkzCjkxMjAwMCAzMzgKMTAwODAwMCAzCjEyMDAwMDAgNTY3NTYxNwp2ODUx czp+IyAKCj4+ICsgfSwKPj4gK307Cj4+ICsKPj4gKy8qIFNvbWUgUExMcyBhcmUgaW5wdXQgKiBO IC8gZGl2MSAvIFAuIE1vZGVsIHRoZW0gYXMgTktNUCB3aXRoIG5vIEsgKi8KPj4gKyNkZWZpbmUg U1VOOElfVjg1M19QTExfRERSX1JFRyAweDAxMAo+PiArc3RhdGljIHN0cnVjdCBjY3VfbmttcCBw bGxfZGRyX2NsayA9IHsKPj4gKyAuZW5hYmxlID0gQklUKDI3KSB8IEJJVCgzMCkgfCBCSVQoMzEp LAo+IAo+IHNhbWUgaGVyZSwgb25seSBiaXQgMjcgcGxlYXNlLgo+IAo+PiArIC5sb2NrID0gQklU KDI4KSwKPj4gKyAubiA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIpLAo+PiArIC5tID0g X1NVTlhJX0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIgKi8KPj4gKyAucCA9IF9TVU5Y SV9DQ1VfRElWKDAsIDEpLCAvKiBvdXRwdXQgZGl2aWRlciAqLwo+PiArIC5jb21tb24gPSB7Cj4+ ICsgLnJlZyA9IDB4MDEwLAo+PiArIC5ody5pbml0ID0gQ0xLX0hXX0lOSVRfUEFSRU5UU19EQVRB KCJwbGwtZGRyIiwgb3NjMjRNLAo+PiArICAgICZjY3VfbmttcF9vcHMsCj4+ICsgICAgQ0xLX1NF VF9SQVRFX1VOR0FURSksCj4gCj4gQ0xLX1NFVF9SQVRFX0dBVEUsIGFzIGFib3ZlLgo+IAo+PiAr IH0sCj4+ICt9Owo+PiArCj4+ICsjZGVmaW5lIFNVTjhJX1Y4NTNfUExMX1BFUklQSF9SRUcgMHgw MjAKPj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X25tIHBsbF9wZXJpcGhfNHhfY2xrID0gewo+PiArIC5l bmFibGUgPSBCSVQoMjcpIHwgQklUKDMwKSB8IEJJVCgzMSksCj4gCj4gQklUKDI3KSwgYXMgYWJv dmUsIGFuZCBmdXJ0aGVyIGRvd24gYXMgd2VsbAo+IAo+PiArIC5sb2NrID0gQklUKDI4KSwKPj4g KyAubiA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIpLAo+PiArIC5tID0gX1NVTlhJX0ND VV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIgKi8KPj4gKyAuY29tbW9uID0gewo+PiArIC5y ZWcgPSAweDAyMCwKPj4gKyAuaHcuaW5pdCA9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgicGxs LXBlcmlwaC00eCIsIG9zYzI0TSwKPj4gKyAgICAmY2N1X25tX29wcywKPj4gKyAgICBDTEtfU0VU X1JBVEVfVU5HQVRFKSwKPiAKPiB5b3UgZ3Vlc3NlZCBpdDogQ0xLX1NFVF9SQVRFX0dBVEUsIGhl cmUgYW5kIGZ1cnRoZXIgYmVsb3csIHBsZWFzZQo+IAo+PiArIH0sCj4+ICt9Owo+PiArCj4+ICtz dGF0aWMgU1VOWElfQ0NVX00ocGxsX3BlcmlwaF8yeF9jbGssICJwbGwtcGVyaXBoLTJ4IiwgInBs bC1wZXJpcGgtNHgiLAo+PiArICAgICAgICAweDAyMCwgMTYsIDMsIDApOwo+IAo+IFNvIGlzIHRo ZXJlIGEgcmVjb21tZW5kYXRpb24gYWJvdXQgaG93IHdlIHJlZmVyZW5jZSBvdGhlciBjbG9ja3M/ IFRoaXMKPiBvbmUgaGVyZSBpcyB1c2luZyB0aGUgY2xvY2sgbmFtZSwgd2hpY2ggcmVxdWlyZXMg YSBsb29rLXVwLCB3aGVyZSB3ZQo+IGNvdWxkIHVzZSB0aGUgcG9pbnRlciBkaXJlY3RseSBhcyB3 ZWxsLCBhcyBkb25lIGRvd24gYmVsb3cuCj4gCj4gc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcg KnBsbF9wZXJpcGgwXzR4X2h3c1tdID0gewo+ICZwbGxfcGVyaXBoMF80eF9jbGsuY29tbW9uLmh3 Cj4gfTsKPiBzdGF0aWMgU1VOWElfQ0NVX01fSFdTKHBsbF9wZXJpcGgwXzJ4X2NsaywgInBsbC1w ZXJpcGgwLTJ4IiwKPiAgICAgICAgcGxsX3BlcmlwaDBfNHhfaHdzLCAweDAyMCwgMTYsIDMsIDAp Owo+IAo+IEkgaGF2ZSBzZWVuIGJvdGgsIHN1bjIwaS1kMSBmb3IgaW5zdGFuY2UgdXNlcyB0aGlz LCBhbmQgSSBjb3BpZWQgZnJvbQo+IHRoZXJlIGZvciB0aGUgQTUyMyBjbG9jayBjb2RlLgo+IAo+ IFdvdWxkIGJlIGdsYWQgdG8gaGVhciBzb21lIG1haW50YWluZXIncyBvcGluaW9uLgo+IAo+PiAr Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX00ocGxsX3BlcmlwaF84MDBNX2NsaywgInBsbC1wZXJpcGgt ODAwTSIsICJwbGwtcGVyaXBoLTR4IiwKPj4gKyAgICAgICAgMHgwMjAsIDIwLCAzLCAwKTsKPj4g Kwo+PiArc3RhdGljIFNVTlhJX0NDVV9NKHBsbF9wZXJpcGhfNDgwTV9jbGssICJwbGwtcGVyaXBo LTQ4ME0iLCAicGxsLXBlcmlwaC00eCIsCj4+ICsgICAgICAgIDB4MDIwLCAyLCAzLCAwKTsKPj4g Kwo+PiArc3RhdGljIENMS19GSVhFRF9GQUNUT1JfSFcocGxsX3BlcmlwaF82MDBNX2NsaywgInBs bC1wZXJpcGgtNjAwTSIsCj4+ICsgJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5odywgMiwgMSwg MCk7Cj4+ICsKPj4gK3N0YXRpYyBDTEtfRklYRURfRkFDVE9SX0hXKHBsbF9wZXJpcGhfNDAwTV9j bGssICJwbGwtcGVyaXBoLTQwME0iLAo+PiArICZwbGxfcGVyaXBoXzJ4X2Nsay5jb21tb24uaHcs IDMsIDEsIDApOwo+PiArCj4+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IVyhwbGxfcGVyaXBo XzMwME1fY2xrLCAicGxsLXBlcmlwaC0zMDBNIiwKPj4gKyAgICAgJnBsbF9wZXJpcGhfNjAwTV9j bGsuaHcsIDIsIDEsIDApOwo+PiArCj4+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IVyhwbGxf cGVyaXBoXzIwME1fY2xrLCAicGxsLXBlcmlwaC0yMDBNIiwKPj4gKyAgICAgJnBsbF9wZXJpcGhf NDAwTV9jbGsuaHcsIDIsIDEsIDApOwo+PiArCj4+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9I VyhwbGxfcGVyaXBoXzE2ME1fY2xrLCAicGxsLXBlcmlwaC0xNjBNIiwKPj4gKyAgICAgJnBsbF9w ZXJpcGhfNDgwTV9jbGsuY29tbW9uLmh3LCAzLCAxLCAwKTsKPj4gKwo+PiArc3RhdGljIENMS19G SVhFRF9GQUNUT1JfSFcocGxsX3BlcmlwaF8xNTBNX2NsaywgInBsbC1wZXJpcGgtMTUwTSIsCj4+ ICsgICAgICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCAyLCAxLCAwKTsKPj4gKwo+PiArCj4+ICsv Kgo+PiArICogRm9yIFZpZGVvIFBMTHMsIHRoZSBvdXRwdXQgZGl2aWRlciBpcyBkZXNjcmliZWQg YXMgIm9ubHkgZm9yIHRlc3RpbmciCj4+ICsgKiBpbiB0aGUgdXNlciBtYW51YWwuIFNvIGl0J3Mg bm90IG1vZGVsbGVkIGFuZCBmb3JjZWQgdG8gMC4KPiAKPiBUaGF0J3MgYSBiaXQgY29uZnVzaW5n OiB0aGUgbWFudWFsIHNheXMgdGhhdCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYml0IDAKPiBpcyAw eDEsIGFuZCB0aGF0IGl0J3MgIm9ubHkgZm9yIHRlc3RpbmciLCB3aGljaCB3b3VsZCBtZWFuIHdl IHNob3VsZAo+IGxlYXZlIGl0IGxpa2UgdGhpcywgYWx3YXlzIGRpdmlkaW5nIGJ5IDI/IEluIHRo ZSBtYWluIGRlc2NyaXB0aW9uIChiaXQKPiAzMSkgaXQgc2F5czoKPiBWSURFT1BMTDRYID0gSW5w dXRGcmVxKk4vTQo+IGJ1dCBiZWxvdyAoYml0IDApIGl0J3MKPiBWSURFT1BMTDRYID0gMjRNSHoq Ti9NL0QKPiAod2l0aCBEIGJlaW5nICJQTExfT1VUUFVUX0RJVl9EICsgMSIsIHNvIDIgaW4gb3Vy IGNhc2UpCj4gCj4gRG8geW91IGhhdmUgYW55IGluZGljYXRpb24gaG93IGZhc3QgdGhlIHZpZGVv IFBMTCByZWFsbHkgaXM/IElmIGl0IGlzCj4gZGl2aWRlZCBieSAyIChhcyB3ZSBmb3JjZSB0aGF0 IGJpdCB0byAxIGRvd24gaW4gdGhlIHByb2JlIHJvdXRpbmUpLCB0aGVuCj4gd2Ugd291bGQgbmVl ZCB0byBtb2RlbCB0aGlzIHdpdGggdGhhdCBDQ1VfRkVBVFVSRV9GSVhFRF9QT1NURElWIGZsYWcs Cj4gYW5kIGVpdGhlciBsZWF2ZSB0aGF0IGJpdCBhbG9uZSBvciBmb3JjZSBpdCB0byAxIGluc3Rl YWQuCj4gQWxzbyB3b3VsZCBiZSBnb29kIHRvIHNlZSB3aGF0IHRoZSBCU1AgZG9lcy4KPiAKClRo ZSBbMl0gQlNQIGRyaXZlciBtb2RlbCBpdCBhcyBhIGNjdV9ua21wIHR5cGUsIHNvIGnigJlsbCBk b3VibGUgY2hlY2sgaXQuCgo+PiArICovCj4+ICsjZGVmaW5lIFNVTjhJX1Y4NTNfUExMX1ZJREVP X1JFRyAweDA0MAo+PiArc3RhdGljIHN0cnVjdCBjY3Vfbm0gcGxsX3ZpZGVvXzR4X2NsayA9IHsK Pj4gKyAuZW5hYmxlID0gQklUKDI3KSB8IEJJVCgzMCkgfCBCSVQoMzEpLAo+PiArIC5sb2NrID0g QklUKDI4KSwKPj4gKyAubiA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIpLAo+IAo+IFRo ZSBtYW51YWwgc2F5cyAxMSAoYnV0IGFnYWluIGRvZXNuJ3QgbWF0dGVyKS4KPiAKPj4gKyAubSA9 IF9TVU5YSV9DQ1VfRElWKDEsIDEpLCAvKiBpbnB1dCBkaXZpZGVyICovCj4+ICsgLmNvbW1vbiA9 IHsKPj4gKyAucmVnID0gMHgwNDAsCj4+ICsgLmh3LmluaXQgPSBDTEtfSFdfSU5JVF9QQVJFTlRT X0RBVEEoInBsbC12aWRlby00eCIsIG9zYzI0TSwKPj4gKyAgICAmY2N1X25tX29wcywKPj4gKyAg ICBDTEtfU0VUX1JBVEVfVU5HQVRFKSwKPj4gKyB9LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNv bnN0IHN0cnVjdCBjbGtfaHcgKnBsbF92aWRlb180eF9od3NbXSA9IHsKPj4gKyAmcGxsX3ZpZGVv XzR4X2Nsay5jb21tb24uaHcKPj4gK307Cj4+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IV1Mo cGxsX3ZpZGVvXzJ4X2NsaywgInBsbC12aWRlby0yeCIsCj4+ICsgICAgIHBsbF92aWRlb180eF9o d3MsIDIsIDEsIENMS19TRVRfUkFURV9QQVJFTlQpOwo+PiArc3RhdGljIENMS19GSVhFRF9GQUNU T1JfSFdTKHBsbF92aWRlb18xeF9jbGssICJwbGwtdmlkZW8tMXgiLAo+PiArICAgICBwbGxfdmlk ZW9fNHhfaHdzLCA0LCAxLCBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPiAKPiBBaCwgaGVyZSB5b3Ug YXJlIHVzaW5nIHRoZSBwb2ludGVyIHJlZmVyZW5jZSB0byB0aGUgYmFzZSBjbG9jaywgbm90IHRo ZQo+IHN0cmluZywgYXMgYWJvdmUuIEkgdGhpbmsgd2Ugc2hvdWxkIHN0aWNrIHRvIG9uZSBtZXRo b2Q/CgpPay4KCj4gCj4+ICsvKgo+PiArICogRm9yIENTSSBQTExzLCB0aGUgb3V0cHV0IGRpdmlk ZXIgaXMgZGVzY3JpYmVkIGFzICJvbmx5IGZvciB0ZXN0aW5nIgo+PiArICogaW4gdGhlIHVzZXIg bWFudWFsLiBTbyBpdCdzIG5vdCBtb2RlbGxlZCBhbmQgZm9yY2VkIHRvIDAuCj4gCj4gU2FtZSBz aXR1YXRpb24gYXMgZm9yIHRoZSB2aWRlbyBQTEw6IHdoYXQgaXMgdGhlIHJlY29tbWVuZGVkIHNl dHRpbmcgb2YKPiBiaXQgMCwgcmVhbGx5Pwo+IAoKU2FtZSBhcyB3aXRoIHRoZSBQTExfVklERU8u IEnigJlsbCBjaGVjayBpdCBhZ2FpbiwgYW5kIG1vZGlmeSBib3RoLgoKPj4gKyAqLwo+PiArI2Rl ZmluZSBTVU44SV9WODUzX1BMTF9DU0lfUkVHIDB4MDQ4Cj4+ICtzdGF0aWMgc3RydWN0IGNjdV9u bSBwbGxfY3NpXzR4X2NsayA9IHsKPj4gKyAuZW5hYmxlID0gQklUKDI3KSB8IEJJVCgzMCkgfCBC SVQoMzEpLAo+PiArIC5sb2NrID0gQklUKDI4KSwKPj4gKyAubiA9IF9TVU5YSV9DQ1VfTVVMVF9N SU4oOCwgOCwgMTIpLAo+PiArIC5tID0gX1NVTlhJX0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRp dmlkZXIgKi8KPj4gKyAuY29tbW9uID0gewo+PiArIC5yZWcgPSAweDA0OCwKPj4gKyAuaHcuaW5p dCA9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgicGxsLWNzaS00eCIsIG9zYzI0TSwKPj4gKyAg ICAmY2N1X25tX29wcywKPj4gKyAgICBDTEtfU0VUX1JBVEVfVU5HQVRFKSwKPj4gKyB9LAo+PiAr fTsKPj4gKwo+PiArc3RhdGljIENMS19GSVhFRF9GQUNUT1JfSFcocGxsX2NzaV9jbGssICJwbGwt Y3NpIiwKPj4gKyAgICAgJnBsbF9jc2lfNHhfY2xrLmNvbW1vbi5odywgNCwgMSwgQ0xLX1NFVF9S QVRFX1BBUkVOVCk7Cj4+ICsKPj4gKwo+PiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9BVURJT19S RUcgMHg3OAo+PiArc3RhdGljIHN0cnVjdCBjY3Vfc2RtX3NldHRpbmcgcGxsX2F1ZGlvX2RpdjVf c2RtX3RhYmxlW10gPSB7Cj4+ICsgeyAucmF0ZSA9IDE5NjYwODAwMCwgLnBhdHRlcm4gPSAweGMw MDFlYjg1LCAubSA9IDUsIC5uID0gNDAgfSwgLyogMjQuNTc2ICovCj4+ICsgeyAucmF0ZSA9IDY3 NzM3NjAwLCAucGF0dGVybiA9IDB4YzAwMTI4OGQsIC5tID0gOCwgLm4gPSAyMiB9LCAvKiAyMi41 NzkyICovCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGNjdV9ubSBwbGxfYXVkaW9fZGl2 NV9jbGsgPSB7Cj4+ICsgLmVuYWJsZSA9IEJJVCgyNykgfCBCSVQoMzApIHwgQklUKDMxKSwKPj4g KyAubG9jayAgICAgICAgICAgPSBCSVQoMjgpLAo+PiArIC5uICAgICAgICAgICAgICA9IF9TVU5Y SV9DQ1VfTVVMVCg4LCA4KSwKPj4gKyAubSAgICAgICAgICAgICAgPSBfU1VOWElfQ0NVX0RJVigy MCwgMyksCj4+ICsgLnNkbSAgICAgICAgICAgID0gX1NVTlhJX0NDVV9TRE0ocGxsX2F1ZGlvX2Rp djVfc2RtX3RhYmxlLAo+PiArICAgICBCSVQoMjQpLCAweDAxNzgsIEJJVCgzMSkpLAo+PiArIC5j b21tb24gICAgICAgICA9IHsKPj4gKyAucmVnICAgICAgICAgICAgPSAweDAwNzgsCj4+ICsgLmZl YXR1cmVzICAgICAgID0gQ0NVX0ZFQVRVUkVfU0lHTUFfREVMVEFfTU9ELAo+PiArIC5ody5pbml0 ICAgICAgICA9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgicGxsLWF1ZGlvLWRpdjUiLCBvc2My NE0sCj4+ICsgICAgJmNjdV9ubV9vcHMsCj4+ICsgICAgQ0xLX1NFVF9SQVRFX1VOR0FURSksCj4+ ICsgfSwKPj4gK307Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX00ocGxsX2F1ZGlvXzF4X2NsaywgInBs bC1hdWRpby0xeCIsICJwbGwtYXVkaW8tZGl2NSIsCj4+ICsgMHhlMDAsIDAsIDUsIENMS19TRVRf UkFURV9QQVJFTlQpOwo+PiArCj4+ICsvKiBwbGwtYXVkaW8tZGl2MiBhbmQgcGxsLWFkdWlvLTR4 IG5vdCB1c2VkLCBiZWNhdXNlIGF1ZGlvLTF4IGNhbiBjb3ZlciAyMi41NzkyTSBhbmQgMjQuNTc2 TSAqLwo+PiArc3RhdGljIFNVTlhJX0NDVV9NKHBsbF9hdWRpb19kaXYyX2NsaywgInBsbC1hdWRp by1kaXYyIiwgInBsbC1hdWRpbyIsCj4+ICsgMHgwNzgsIDE2LCAzLCAwKTsKPj4gK3N0YXRpYyBT VU5YSV9DQ1VfTShwbGxfYXVkaW9fNHhfY2xrLCAicGxsLWF1ZGlvLTR4IiwgInBsbC1hdWRpby1k aXYyIiwKPj4gKyAweGUwMCwgNSwgNSwgMCk7Cj4+ICsKPj4gKy8qCj4+ICsgKiBGb3IgdGhlIE5Q VSBQTEwsIHRoZSBvdXRwdXQgZGl2aWRlciBpcyBkZXNjcmliZWQgYXMgIm9ubHkgZm9yIHRlc3Rp bmciCj4+ICsgKiBpbiB0aGUgdXNlciBtYW51YWwuIFNvIGl0J3Mgbm90IG1vZGVsbGVkIGFuZCBm b3JjZWQgdG8gMC4KPj4gKyAqLwo+PiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9OUFVfUkVHIDB4 MDgwCj4+ICtzdGF0aWMgc3RydWN0IGNjdV9ubSBwbGxfbnB1XzR4X2NsayA9IHsKPj4gKyAuZW5h YmxlID0gQklUKDI3KSB8IEJJVCgzMCkgfCBCSVQoMzEpLAo+PiArIC5sb2NrID0gQklUKDI4KSwK Pj4gKyAubiA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIpLAo+PiArIC5tID0gX1NVTlhJ X0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIgKi8KPj4gKyAuY29tbW9uID0gewo+PiAr IC5yZWcgPSAweDA4MCwKPj4gKyAuaHcuaW5pdCA9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgi cGxsLW5wdS00eCIsIG9zYzI0TSwKPj4gKyAgICAmY2N1X25tX29wcywKPj4gKyAgICBDTEtfU0VU X1JBVEVfVU5HQVRFKSwKPj4gKyB9LAo+PiArfTsKPj4gKwo+PiArLyoKPj4gKyAqIFRoZSBDUFUg Z2F0ZSBpcyBub3QgbW9kZWxsZWQgLSBpdCBpcyBpbiBhIHNlcGFyYXRlIHJlZ2lzdGVyICgweDUw NCkKPj4gKyAqIGFuZCBoYXMgYSBzcGVjaWFsIGtleSBmaWVsZC4gVGhlIGNsb2NrIGRvZXMgbm90 IG5lZWQgdG8gYmUgdW5nYXRlZCBhbnl3YXkuCj4gCj4gSSB3b3VsZCBiZWxpZXZlIGl0IHNob3Vs ZCByZWFkOiAiVGhlIGNsb2NrIG11c3Qgbm90IGJlIGdhdGVkIGFueXdheSBieQo+IHRoZSBrZXJu ZWwiLiAoQXMgaXQgd291bGQgc3RvcCBleGVjdXRpb24gb24gdGhlIEFybSBjb3Jlcywgc28gaXQn cyBvbmx5Cj4gc29tZXRoaW5nIGZvciB0aGUgbWFuYWdlbWVudCBjb3JlKS4KPiAKCm9rLgoKPj4g KyAqLwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgY3B1X3BhcmVudHNb XSA9IHsKPj4gKyB7IC5md19uYW1lID0gImhvc2MiIH0sCj4+ICsgeyAuZndfbmFtZSA9ICJsb3Nj IiB9LAo+PiArIHsgLmZ3X25hbWUgPSAiaW9zYyIgfSwKPj4gKyB7IC5odyA9ICZwbGxfY3B1X2Ns ay5jb21tb24uaHcgfSwKPiAKPiBUaGUgbWFudWFsIHNheXMgdGhlcmUgaXMgYSBkaXZpZGVyIChQ TExfQ1BVX09VVF9FWFRfRElWUFsxNzoxNl0pLAo+IHRob3VnaCB0aGUgZGVzY3JpcHRpb24gc3Vn Z2VzdHMgaXQgc2hvdWxkIHN0YXkgYXMgMC4gSSBndWVzcyB0aGlzIGlzCj4gdGhlIGludGVudGlv biBoZXJlLCBidXQgY2FuIHlvdSBwbGVhc2UgYWRkIGNvbW1lbnQgaGVyZT8KPiAKCm9rLgoKPj4g KyB7IC5odyA9ICZwbGxfcGVyaXBoXzYwME1fY2xrLmh3IH0sCj4+ICsgeyAuaHcgPSAmcGxsX3Bl cmlwaF84MDBNX2Nsay5jb21tb24uaHcgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9D Q1VfTVVYX0RBVEEoY3B1X2NsaywgImNwdSIsIGNwdV9wYXJlbnRzLAo+PiArICAgMHg1MDAsIDI0 LCAzLCBDTEtfU0VUX1JBVEVfUEFSRU5UIHwgQ0xLX0lTX0NSSVRJQ0FMKTsKPj4gKwo+PiArc3Rh dGljIFNVTlhJX0NDVV9NKGNwdV9heGlfY2xrLCAiY3B1LWF4aSIsICJjcHUiLAo+IAo+IEkgd29u ZGVyIGlmIGl0J3MgbW9yZSBlZmZpY2llbnQgdG8gdXNlIGEgcG9pbnRlciB0byB0aGUgQ1BVIGNs b2NrLCBhbmQKPiBub3QgYSBzdHJpbmc/Cj4gCgpJ4oCZbGwgZml4IHRoYXQuCgo+PiArICAgICAg ICAweDUwMCwgMCwgMiwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX00oY3B1X2FwYl9jbGssICJj cHUtYXBiIiwgImNwdSIsCj4+ICsgICAgICAgIDB4NTAwLCA4LCAyLCAwKTsKPj4gKwo+PiArc3Rh dGljIGNvbnN0IHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgYWhiX3BhcmVudHNbXSA9IHsKPj4gKyB7 IC5md19uYW1lID0gImhvc2MiIH0sCj4+ICsgeyAuZndfbmFtZSA9ICJsb3NjIiB9LAo+PiArIHsg LmZ3X25hbWUgPSAiaW9zYyIgfSwKPj4gKyB7IC5odyA9ICZwbGxfcGVyaXBoXzYwME1fY2xrLmh3 IH0sCj4+ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYKGFoYl9jbGss ICJhaGIiLCBhaGJfcGFyZW50cywgMHg1MTAsCj4+ICsgICAwLCA1LCAvKiBNICovCj4+ICsgICA4 LCAyLCAvKiBQICovCj4+ICsgICAyNCwgMiwgLyogbXV4ICovCj4+ICsgICAwKTsKPj4gKwo+PiAr c3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYKGFwYjBfY2xrLCAiYXBiMCIsIGFoYl9w YXJlbnRzLCAweDUyMCwKPj4gKyAgIDAsIDUsIC8qIE0gKi8KPj4gKyAgIDgsIDIsIC8qIFAgKi8K Pj4gKyAgIDI0LCAyLCAvKiBtdXggKi8KPj4gKyAgIDApOwo+PiArCj4+ICtzdGF0aWMgU1VOWElf Q0NVX01QX0RBVEFfV0lUSF9NVVgoYXBiMV9jbGssICJhcGIxIiwgYWhiX3BhcmVudHMsIDB4NTI0 LAo+PiArICAgMCwgNSwgLyogTSAqLwo+PiArICAgOCwgMiwgLyogUCAqLwo+PiArICAgMjQsIDIs IC8qIG11eCAqLwo+PiArICAgMCk7Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3 ICphaGJfaHdzW10gPSB7ICZhaGJfY2xrLmNvbW1vbi5odyB9Owo+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBjbGtfaHcgKmFwYjBfaHdzW10gPSB7ICZhcGIwX2Nsay5jb21tb24uaHcgfTsKPj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICphcGIxX2h3c1tdID0geyAmYXBiMV9jbGsuY29tbW9u Lmh3IH07Cj4+ICsKPj4gKwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19odyAqZGVf ZzJkX3BhcmVudHNbXSA9IHsKPj4gKyAmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywKPj4gKyAmcGxs X3ZpZGVvXzF4X2Nsay5odywKPj4gK307Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX01fSFdfV0lUSF9N VVhfR0FURShkZV9jbGssICJkZSIsIGRlX2cyZF9wYXJlbnRzLCAweDYwMCwKPj4gKyAgICAgMCwg NSwgLyogTSAqLwo+PiArICAgICAyNCwgMSwgLyogbXV4ICovCj4+ICsgICAgIEJJVCgzMSksIC8q IGdhdGUgKi8KPj4gKyAgICAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4+ICsKPj4gK3N0YXRpYyBT VU5YSV9DQ1VfR0FURV9IV1MoYnVzX2RlX2NsaywgImJ1cy1kZSIsIGFoYl9od3MsCj4+ICsgICAw eDYwYywgQklUKDApLCAwKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVY X0dBVEUoZzJkX2NsaywgImcyZCIsIGRlX2cyZF9wYXJlbnRzLCAweDYzMCwKPj4gKyAgICAgMCwg NSwgLyogTSAqLwo+PiArICAgICAyNCwgMSwgLyogbXV4ICovCj4+ICsgICAgIEJJVCgzMSksIC8q IGdhdGUgKi8KPj4gKyAgICAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4+ICsKPj4gK3N0YXRpYyBT VU5YSV9DQ1VfR0FURV9IV1MoYnVzX2cyZF9jbGssICJidXMtZzJkIiwgYWhiX2h3cywKPj4gKyAg IDB4NjNjLCBCSVQoMCksIDApOwo+PiArCj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xr X3BhcmVudF9kYXRhIGNlX3BhcmVudHNbXSA9IHsKPj4gKyB7IC5md19uYW1lID0gImhvc2MiIH0s Cj4gCj4gVGhhdCBwYXJlbnQgaXMgbm90IG1lbnRpb25lZCBpbiB0aGUgbWFudWFsLCB0aG91Z2gg aXQgbG9va3MgbGlrZSBhbgo+IG9taXNzaW9uLiBEaWQgeW91IGZpbmQgdGhlIEhPU0MgbWVudGlv bmVkIHNvbWV3aGVyZSBlbHNlPwoKVGhlIFsyXSBCU1AgZHJpdmVyIGRlY2xhcmVzIHRoZSBDRSBw YXJlbnRzIGluIHRoZSBzYW1lIHdheS4gCgo+IAo+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNDAw TV9jbGsuaHcsIH0sCj4+ICsgeyAuaHcgPSAmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywgfQo+PiAr fTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9EQVRBX1dJVEhfTVVYX0dBVEUoY2VfY2xrLCAiY2Ui LCBjZV9wYXJlbnRzLCAweDY4MCwKPj4gKyAgICAgICAgMCwgNCwgLyogTSAqLwo+IAo+IGxvb2tz IGxpa2UgdGhlIGluZGVudGF0aW9uIGhlcmUgaXMgYSBiaXQgb2ZmLCBjYW4geW91IGNoZWNrIHRo aXM/IEFuZAo+IGZvciB0aGUgb3RoZXIgY2xvY2tzIGFzIHdlbGw/Cj4gCgpTdXJlLgoKPj4gKyAg ICAgICAgMjQsIDMsIC8qIG11eCAqLwo+PiArICAgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ ICsgICAgICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NV X0dBVEVfSFdTKGJ1c19jZV9jbGssICJidXMtY2UiLCBhaGJfaHdzLAo+PiArICAgMHg2OGMsIEJJ VCgwKSB8IEJJVCgxKSwgMCk7Cj4gCj4gCj4gKHJldmlld2VkIHRpbGwgaGVyZSwgZm9yIG5vdywg dG8ga2VlcCBteSBzYW5pdHkuIFNraXBwaW5nIGRvd24gdG8KPiBiZWxvdywgd2hlcmUgdGhlcmUg YXJlIG1vcmUgbG93LWhhbmdpbmcgZnJ1aXRzIGFuZCBiaXRzIHRoYXQgY2FuIGJlCj4gY2hlY2tl ZCBtb3JlIHN5c3RlbWF0aWNhbGx5KQo+IAo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNs a19odyAqdmVfcGFyZW50c1tdID0gewo+PiArICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LAo+PiAr ICZwbGxfcGVyaXBoXzQwME1fY2xrLmh3LAo+PiArICZwbGxfcGVyaXBoXzQ4ME1fY2xrLmNvbW1v bi5odywKPj4gKyAmcGxsX25wdV80eF9jbGsuY29tbW9uLmh3LAo+PiArICZwbGxfdmlkZW9fNHhf Y2xrLmNvbW1vbi5odywKPj4gKyAmcGxsX2NzaV80eF9jbGsuY29tbW9uLmh3LAo+PiArfTsKPj4g K3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKHZlX2NsaywgInZlIiwgdmVfcGFy ZW50cywgMHg2OTAsCj4+ICsgICAgIDAsIDUsIC8qIE0gKi8KPj4gKyAgICAgMjQsIDMsIC8qIG11 eCAqLwo+PiArICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAgIENMS19TRVRfUkFURV9Q QVJFTlQpOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c192ZV9jbGssICJi dXMtdmUiLCBhaGJfaHdzLAo+PiArICAgMHg2OWMsIEJJVCgwKSwgMCk7Cj4+ICsKPj4gKwo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKm5wdV9wYXJlbnRzW10gPSB7Cj4+ICsgJnBsbF9w ZXJpcGhfNDgwTV9jbGsuY29tbW9uLmh3LAo+PiArICZwbGxfcGVyaXBoXzYwME1fY2xrLmh3LAo+ PiArICZwbGxfcGVyaXBoXzgwME1fY2xrLmNvbW1vbi5odywKPj4gKyAmcGxsX25wdV80eF9jbGsu Y29tbW9uLmh3LAo+PiArfTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRF KG5wdV9jbGssICJucHUiLCBucHVfcGFyZW50cywgMHg2ZTAsCj4+ICsgICAgIDAsIDUsIC8qIE0g Ki8KPj4gKyAgICAgMjQsIDMsIC8qIG11eCAqLwo+PiArICAgICBCSVQoMzEpLCAvKiBnYXRlICov Cj4+ICsgICAgIDApOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19ucHVf Y2xrLCAiYnVzLW5wdSIsIGFoYl9od3MsCj4+ICsgICAweDZlYywgQklUKDApLCAwKTsKPj4gKwo+ PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfZG1hX2NsaywgImJ1cy1kbWEiLCBhaGJf aHdzLAo+PiArICAgMHg3MGMsIEJJVCgwKSwgMCk7Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf R0FURV9IV1MoYnVzX21zZ2JveDBfY2xrLCAiYnVzLW1zZ2JveDAiLCBhaGJfaHdzLAo+PiArICAg MHg3MWMsIEJJVCgwKSwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19tc2di b3gxX2NsaywgImJ1cy1tc2dib3gxIiwgYWhiX2h3cywKPj4gKyAgIDB4NzFjLCBCSVQoMSksIDAp Owo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19zcGlubG9ja19jbGssICJi dXMtc3BpbmxvY2siLCBhaGJfaHdzLAo+PiArICAgMHg3MmMsIEJJVCgwKSwgMCk7Cj4+ICsKPj4g K3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2hzdGltZXJfY2xrLCAiYnVzLWhzdGltZXIi LCBhaGJfaHdzLAo+PiArICAgMHg3M2MsIEJJVCgwKSwgMCk7Cj4+ICsKPj4gK3N0YXRpYyBTVU5Y SV9DQ1VfR0FURV9EQVRBKGF2c19jbGssICJhdnMiLCBvc2MyNE0sCj4+ICsgICAgMHg3NDAsIEJJ VCgzMSksIDApOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19kYmdfY2xr LCAiYnVzLWRiZyIsIGFoYl9od3MsCj4+ICsgICAweDc4YywgQklUKDApLCAwKTsKPj4gKwo+PiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfcHdtX2NsaywgImJ1cy1wd20iLCBhcGIwX2h3 cywKPj4gKyAgIDB4N2FjLCBCSVQoMCksIDApOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dB VEVfSFdTKGJ1c19pb21tdV9jbGssICJidXMtaW9tbXUiLCBhaGJfaHdzLAo+PiArICAgMHg3YmMs IEJJVCgwKSwgMCk7Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpkcmFtX3Bh cmVudHNbXSA9IHsKPj4gKyAmcGxsX2Rkcl9jbGsuY29tbW9uLmh3LAo+PiArICZwbGxfcGVyaXBo XzJ4X2Nsay5jb21tb24uaHcsCj4+ICsgJnBsbF9wZXJpcGhfODAwTV9jbGsuY29tbW9uLmh3LAo+ PiArfTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfSFdfV0lUSF9NVVhfR0FURShkcmFtX2Nsaywg ImRyYW0iLCBkcmFtX3BhcmVudHMsIDB4ODAwLAo+PiArICAgICAgMCwgNSwgLyogTSAqLwo+PiAr ICAgICAgOCwgMiwgLyogUCAqLwo+PiArICAgICAgMjQsIDMsIC8qIG11eCAqLwo+PiArICAgICAg QklUKDMxKSwgQ0xLX0lTX0NSSVRJQ0FMKTsKPj4gKwo+PiArc3RhdGljIENMS19GSVhFRF9GQUNU T1JfSFcobWJ1c19jbGssICJtYnVzIiwKPj4gKyAgICAmZHJhbV9jbGsuY29tbW9uLmh3LCA0LCAx LCAwKTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKm1idXNfaHdzW10gPSB7 ICZtYnVzX2Nsay5odyB9Owo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKG1idXNf ZG1hX2NsaywgIm1idXMtZG1hIiwgbWJ1c19od3MsCj4+ICsgICAweDgwNCwgQklUKDApLCAwKTsK Pj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MobWJ1c192ZV9jbGssICJtYnVzLXZlIiwgbWJ1 c19od3MsCj4+ICsgICAweDgwNCwgQklUKDEpLCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FU RV9IV1MobWJ1c19jZV9jbGssICJtYnVzLWNlIiwgbWJ1c19od3MsCj4+ICsgICAweDgwNCwgQklU KDIpLCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MobWJ1c19jc2lfY2xrLCAibWJ1 cy1jc2kiLCBtYnVzX2h3cywKPj4gKyAgIDB4ODA0LCBCSVQoOCksIDApOwo+PiArc3RhdGljIFNV TlhJX0NDVV9HQVRFX0hXUyhtYnVzX2lzcF9jbGssICJtYnVzLWlzcCIsIG1idXNfaHdzLAo+PiAr ICAgMHg4MDQsIEJJVCg5KSwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKG1idXNf ZzJkX2NsaywgIm1idXMtZzJkIiwgbWJ1c19od3MsCj4+ICsgICAweDgwNCwgQklUKDEwKSwgMCk7 Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2RyYW1fY2xrLCAiYnVzLWRy YW0iLCBhaGJfaHdzLAo+PiArICAgMHg4MGMsIEJJVCgwKSwgQ0xLX0lTX0NSSVRJQ0FMKTsKPj4g Kwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBtbWMwX21tYzFf cGFyZW50c1tdID0gewo+PiArIHsgLmZ3X25hbWUgPSAiaG9zYyIgfSwKPj4gKyB7IC5odyA9ICZw bGxfcGVyaXBoXzQwME1fY2xrLmh3LCB9LAo+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfMzAwTV9j bGsuaHcsIH0sCj4+ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dB VEUobW1jMF9jbGssICJtbWMwIiwgbW1jMF9tbWMxX3BhcmVudHMsIDB4ODMwLAo+PiArICAgICAg ICAwLCA0LCAvKiBNICovCj4+ICsgICAgICAgIDgsIDIsIC8qIFAgKi8KPj4gKyAgICAgICAgMjQs IDMsIC8qIG11eCAqLwo+PiArICAgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAgICAg IDApOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURShtbWMx X2NsaywgIm1tYzEiLCBtbWMwX21tYzFfcGFyZW50cywgMHg4MzQsCj4+ICsgICAgICAgIDAsIDQs IC8qIE0gKi8KPj4gKyAgICAgICAgOCwgMiwgLyogUCAqLwo+PiArICAgICAgICAyNCwgMywgLyog bXV4ICovCj4+ICsgICAgICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPj4gKyAgICAgICAgMCk7Cj4+ ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIG1tYzJfcGFyZW50c1td ID0gewo+PiArIHsgLmZ3X25hbWUgPSAiaG9zYyIgfSwKPj4gKyB7IC5odyA9ICZwbGxfcGVyaXBo XzYwME1fY2xrLmh3LCB9LAo+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNDAwTV9jbGsuaHcsIH0s Cj4+ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dBVEUobW1jMl9j bGssICJtbWMyIiwgbW1jMl9wYXJlbnRzLCAweDgzOCwKPj4gKyAgICAgICAgMCwgNCwgLyogTSAq Lwo+PiArICAgICAgICA4LCAyLCAvKiBQICovCj4+ICsgICAgICAgIDI0LCAzLCAvKiBtdXggKi8K Pj4gKyAgICAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+PiArICAgICAgICAwKTsKPj4gKwo+PiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfbW1jMF9jbGssICJidXMtbW1jMCIsIGFoYl9o d3MsCj4+ICsgICAweDg0YywgQklUKDApLCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9I V1MoYnVzX21tYzFfY2xrLCAiYnVzLW1tYzEiLCBhaGJfaHdzLAo+PiArICAgMHg4NGMsIEJJVCgx KSwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19tbWMyX2NsaywgImJ1cy1t bWMyIiwgYWhiX2h3cywKPj4gKyAgIDB4ODRjLCBCSVQoMiksIDApOwo+PiArCj4+ICtzdGF0aWMg U1VOWElfQ0NVX0dBVEVfSFdTKGJ1c191YXJ0MF9jbGssICJidXMtdWFydDAiLCBhcGIxX2h3cywK Pj4gKyAgIDB4OTBjLCBCSVQoMCksIDApOwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhi dXNfdWFydDFfY2xrLCAiYnVzLXVhcnQxIiwgYXBiMV9od3MsCj4+ICsgICAweDkwYywgQklUKDEp LCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3VhcnQyX2NsaywgImJ1cy11 YXJ0MiIsIGFwYjFfaHdzLAo+PiArICAgMHg5MGMsIEJJVCgyKSwgMCk7Cj4+ICtzdGF0aWMgU1VO WElfQ0NVX0dBVEVfSFdTKGJ1c191YXJ0M19jbGssICJidXMtdWFydDMiLCBhcGIxX2h3cywKPj4g KyAgIDB4OTBjLCBCSVQoMyksIDApOwo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdT KGJ1c19pMmMwX2NsaywgImJ1cy1pMmMwIiwgYXBiMV9od3MsCj4+ICsgICAweDkxYywgQklUKDAp LCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2kyYzFfY2xrLCAiYnVzLWky YzEiLCBhcGIxX2h3cywKPj4gKyAgIDB4OTFjLCBCSVQoMSksIDApOwo+PiArc3RhdGljIFNVTlhJ X0NDVV9HQVRFX0hXUyhidXNfaTJjMl9jbGssICJidXMtaTJjMiIsIGFwYjFfaHdzLAo+PiArICAg MHg5MWMsIEJJVCgyKSwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19pMmMz X2NsaywgImJ1cy1pMmMzIiwgYXBiMV9od3MsCj4+ICsgICAweDkxYywgQklUKDMpLCAwKTsKPj4g K3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2kyYzRfY2xrLCAiYnVzLWkyYzQiLCBhcGIx X2h3cywKPj4gKyAgIDB4OTFjLCBCSVQoNCksIDApOwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNsa19wYXJlbnRfZGF0YSBzcGlfcGFyZW50c1tdID0gewo+PiArIHsgLmZ3X25hbWUgPSAi aG9zYyIgfSwKPj4gKyB7IC5odyA9ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9LAo+PiArIHsg Lmh3ID0gJnBsbF9wZXJpcGhfMjAwTV9jbGsuaHcsIH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMg U1VOWElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURShzcGkwX2NsaywgInNwaTAiLCBzcGlfcGFy ZW50cywgMHg5NDAsCj4+ICsgICAgICAgIDAsIDQsIC8qIE0gKi8KPj4gKyAgICAgICAgOCwgMiwg LyogUCAqLwo+PiArICAgICAgICAyNCwgMywgLyogbXV4ICovCj4+ICsgICAgICAgIEJJVCgzMSks IC8qIGdhdGUgKi8KPj4gKyAgICAgICAgMCk7Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBf REFUQV9XSVRIX01VWF9HQVRFKHNwaTFfY2xrLCAic3BpMSIsIHNwaV9wYXJlbnRzLCAweDk0NCwK Pj4gKyAgICAgICAgMCwgNCwgLyogTSAqLwo+PiArICAgICAgICA4LCAyLCAvKiBQICovCj4+ICsg ICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPj4gKyAgICAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ PiArICAgICAgICAwKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVY X0dBVEUoc3BpMl9jbGssICJzcGkyIiwgc3BpX3BhcmVudHMsIDB4OTQ4LAo+PiArICAgICAgICAw LCA0LCAvKiBNICovCj4+ICsgICAgICAgIDgsIDIsIC8qIFAgKi8KPj4gKyAgICAgICAgMjQsIDMs IC8qIG11eCAqLwo+PiArICAgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAgICAgIDAp Owo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURShzcGkzX2Ns aywgInNwaTMiLCBzcGlfcGFyZW50cywgMHg5NGMsCj4+ICsgICAgICAgIDAsIDQsIC8qIE0gKi8K Pj4gKyAgICAgICAgOCwgMiwgLyogUCAqLwo+PiArICAgICAgICAyNCwgMywgLyogbXV4ICovCj4+ ICsgICAgICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPj4gKyAgICAgICAgMCk7Cj4+ICsKPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3NwaTBfY2xrLCAiYnVzLXNwaTAiLCBhaGJfaHdz LAo+PiArICAgMHg5NmMsIEJJVCgwKSwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdT KGJ1c19zcGkxX2NsaywgImJ1cy1zcGkxIiwgYWhiX2h3cywKPj4gKyAgIDB4OTZjLCBCSVQoMSks IDApOwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfc3BpMl9jbGssICJidXMtc3Bp MiIsIGFoYl9od3MsCj4+ICsgICAweDk2YywgQklUKDIpLCAwKTsKPj4gK3N0YXRpYyBTVU5YSV9D Q1VfR0FURV9IV1MoYnVzX3NwaTNfY2xrLCAiYnVzLXNwaTMiLCBhaGJfaHdzLAo+PiArICAgMHg5 NmMsIEJJVCgzKSwgMCk7Cj4+ICsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFy ZW50X2RhdGEgc3BpZl9wYXJlbnRzW10gPSB7Cj4+ICsgeyAuZndfbmFtZSA9ICJob3NjIiB9LAo+ PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNDAwTV9jbGsuaHcsIH0sCj4+ICsgeyAuaHcgPSAmcGxs X3BlcmlwaF8zMDBNX2Nsay5odywgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf TV9EQVRBX1dJVEhfTVVYX0dBVEUoc3BpZl9jbGssICJzcGlmIiwgc3BpZl9wYXJlbnRzLCAweDA5 NTAsCj4+ICsgMCwgNCwgIC8qIE0gKi8KPj4gKyAyNCwgMywgIC8qIG11eCAqLwo+PiArIEJJVCgz MSksIC8qIGdhdGUgKi8KPj4gKyBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+PiArc3RhdGlj IFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfc3BpZl9jbGssICJidXMtc3BpZiIsIGFoYl9od3MsCj4+ ICsgICAgIDB4MDk2YywgQklUKDQpLCAwKTsKPj4gKwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNsa19odyAqcGxsX3BlcmlwaF8xNTBNX2h3c1tdID0geyAmcGxsX3BlcmlwaF8xNTBNX2Ns ay5odyB9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXU19XSVRIX1BSRURJVihlbWFjXzI1 TV9jbGssICJlbWFjLTI1TSIsIHBsbF9wZXJpcGhfMTUwTV9od3MsCj4+ICsgICAgICAgMHg5NzAs IEJJVCgzMSkgfCBCSVQoMzApLCA2LCAwKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRF X0hXUyhidXNfZW1hY19jbGssICJidXMtZW1hYyIsIGFoYl9od3MsCj4+ICsgICAweDk3YywgQklU KDApLCAwKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfZ3BhZGNfY2xr LCAiYnVzLWdwYWRjIiwgYXBiMF9od3MsCj4+ICsgICAweDllYywgQklUKDApLCAwKTsKPj4gKwo+ PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfdGhzX2NsaywgImJ1cy10aHMiLCBhaGJf aHdzLAo+PiArICAgMHg5ZmMsIEJJVCgwKSwgMCk7Cj4+ICsKPj4gKwo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBjbGtfaHcgKmF1ZGlvX3BhcmVudHNbXSA9IHsKPj4gKyAmcGxsX2F1ZGlvXzF4X2Ns ay5jb21tb24uaHcsCj4+ICsgJnBsbF9hdWRpb180eF9jbGsuY29tbW9uLmh3LAo+PiArfTsKPj4g Kwo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoaTJzMF9jbGssICJpMnMw IiwgYXVkaW9fcGFyZW50cywgMHhhMTAsCj4+ICsgICAgICAwLCA0LCAvKiBNICovCj4+ICsgICAg ICAyNCwgMSwgLyogbXV4ICovCj4+ICsgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAg ICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJ VEhfTVVYX0dBVEUoaTJzMV9jbGssICJpMnMxIiwgYXVkaW9fcGFyZW50cywgMHhhMTQsCj4+ICsg ICAgICAwLCA0LCAvKiBNICovCj4+ICsgICAgICAyNCwgMSwgLyogbXV4ICovCj4+ICsgICAgICBC SVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAgICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+ PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfaTJzMV9jbGssICJidXMtaTJzMSIsIGFo Yl9od3MsCj4+ICsgICAweGEyMCwgQklUKDEpLCAwKTsKPj4gKwo+IAo+IEp1c3QgYSBuaXQsIGJ1 dCB0aG9zZSB0d28gaGVyZSAgdiAgYW5kIF4gIHNlZW0gdG8gYmUgc3dhcHBlZC4KPiAKClRoYW5r cy4KCj4gRm9yIHRoZSByZWNvcmRzOiBJIGV4dHJhY3RlZCB0aGUgYnVzIGdhdGVzIGFuZCBtYXNz YWdlZCB0aGVtIHdpdGggc29tZQo+IHJlZ2V4cHMgdG8gYnJpbmcgdGhlbSBpbnRvIGEgc2hhcGUg d2hlcmUgcmV2aWV3IGlzIG1vcmUgZmVhc2libGUuCj4gVGhleSBsb29rIGFscmlnaHQgdG8gbWUu IEkgZGlkbid0IGxvb2sgYXQgdGhlIHJlc3BlY3RpdmUgbW9kIGNsb2NrcyBpbgo+IGRldGFpbCwg dGhvdWdoLgo+IAo+IAo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfaTJzMF9jbGss ICJidXMtaTJzMCIsIGFoYl9od3MsCj4+ICsgICAweGEyMCwgQklUKDApLCAwKTsKPj4gKwo+PiAr c3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoZG1pY19jbGssICJkbWljIiwgYXVk aW9fcGFyZW50cywgMHhhNDAsCj4+ICsgICAgICAwLCA0LCAvKiBNICovCj4+ICsgICAgICAyNCwg MSwgLyogbXV4ICovCj4+ICsgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAgICBDTEtf U0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNf ZG1pY19jbGssICJidXMtZG1pYyIsIGFoYl9od3MsCj4+ICsgICAweGE0YywgQklUKDApLCAwKTsK Pj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoYXVkaW9fY29kZWNf ZGFjX2NsaywgImF1ZGlvLWNvZGVjLWRhYyIsIGF1ZGlvX3BhcmVudHMsIDB4YTUwLAo+IAo+IEkg dGhpbmsgeW91IHNob3VsZCBicmVhayB0aGUgbGluZSBhYm92ZSwgdG8gc3RheSB3aXRoaW4gdGhl IDgwIGNoYXIKPiBsaW1pdC4KPiAKCk9rLgoKPiBGYXN0IGZvcndhcmRpbmcgdG8gdGhlIGNjdV9y ZXNldHMgYXJyYXkgLi4uCj4gCj4+ICsgICAgICAwLCA0LCAvKiBNICovCj4+ICsgICAgICAyNCwg MSwgLyogbXV4ICovCj4+ICsgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ICsgICAgICBDTEtf U0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVY X0dBVEUoYXVkaW9fY29kZWNfYWRjX2NsaywgImF1ZGlvLWNvZGVjLWFkYyIsIGF1ZGlvX3BhcmVu dHMsIDB4YTU0LAo+PiArICAgICAgMCwgNCwgLyogTSAqLwo+PiArICAgICAgMjQsIDEsIC8qIG11 eCAqLwo+PiArICAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+PiArICAgICAgQ0xLX1NFVF9SQVRF X1BBUkVOVCk7Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2F1ZGlvX2Nv ZGVjX2NsaywgImJ1cy1hdWRpby1jb2RlYyIsIGFwYjBfaHdzLAo+PiArICAgMHhhNWMsIEJJVCgw KSwgMCk7Cj4+ICsKPj4gKy8qCj4+ICsgKiBUaGVyZSBhcmUgT0hDSSAxMk0gY2xvY2sgc291cmNl IHNlbGVjdGlvbiBiaXRzIGZvciB0aGUgVVNCIDIuMCBwb3J0Lgo+PiArICogV2Ugd2lsbCBmb3Jj ZSB0aGVtIHRvIDAgKDEyTSBkaXZpZGVkIGZyb20gNDhNKS4KPj4gKyAqLwo+PiArc3RhdGljIENM S19GSVhFRF9GQUNUT1JfRldfTkFNRShvc2MxMk1fY2xrLCAib3NjMTJNIiwgImhvc2MiLCAyLCAx LCAwKTsKPj4gKwo+PiArI2RlZmluZSBTVU44SV9WODUzX1VTQl9DTEtfUkVHIDB4YTcwCj4+ICsK Pj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURSh1c2Jfb2hjaV9jbGssICJ1c2IiLCAib3NjMTJNIiwg MHgwYTcwLCBCSVQoMzEpLCAwKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhi dXNfb2hjaV9jbGssICJidXMtb2hjaSIsIGFoYl9od3MsIDB4YThjLCBCSVQoMCksIDApOwo+PiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfZWhjaV9jbGssICJidXMtZWhjaSIsIGFoYl9o d3MsIDB4YThjLCBCSVQoNCksIDApOwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNf b3RnX2NsaywgImJ1cy1vdGciLCBhaGJfaHdzLCAweGE4YywgQklUKDgpLCAwKTsKPj4gKwo+PiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfZHBzc190b3BfY2xrLCAiYnVzLWRwc3MtdG9w IiwgYWhiX2h3cywKPj4gKyAgIDB4YWJjLCBCSVQoMCksIDApOwo+PiArCj4+ICsKPj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIG1pcGlfZHNpX3BhcmVudHNbXSA9IHsKPj4g KyB7IC5md19uYW1lID0gImhvc2MiIH0sCj4+ICsgeyAuaHcgPSAmcGxsX3BlcmlwaF8yMDBNX2Ns ay5odyB9LAo+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfMTUwTV9jbGsuaHcgfSwKPj4gK307Cj4+ ICtzdGF0aWMgU1VOWElfQ0NVX01fREFUQV9XSVRIX01VWF9HQVRFKG1pcGlfZHNpX2NsaywgIm1p cGktZHNpIiwgbWlwaV9kc2lfcGFyZW50cywgMHhiMjQsCj4+ICsgICAgICAgMCwgNCwgLyogTSAq Lwo+PiArICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPj4gKyAgICAgICBCSVQoMzEpLCAvKiBnYXRl ICovCj4+ICsgICAgICAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4+ICsKPj4gK3N0YXRpYyBTVU5Y SV9DQ1VfR0FURV9IV1MoYnVzX21pcGlfZHNpX2NsaywgImJ1cy1taXBpLWRzaSIsIGFoYl9od3Ms Cj4+ICsgICAweGI0YywgQklUKDApLCAwKTsKPj4gKwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNsa19odyAqdGNvbl9sY2RfcGFyZW50c1tdID0gewo+PiArICZwbGxfdmlkZW9fNHhfY2xr LmNvbW1vbi5odywKPj4gKyAmcGxsX3BlcmlwaF8yeF9jbGsuY29tbW9uLmh3LAo+PiArICZwbGxf Y3NpXzR4X2Nsay5jb21tb24uaHcsCj4+ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NUF9IV19X SVRIX01VWF9HQVRFKHRjb25fbGNkX2NsaywgInRjb24tbGNkIiwgdGNvbl9sY2RfcGFyZW50cywg MHhiNjAsCj4+ICsgICAgICAwLCA0LCAvKiBNICovCj4+ICsgICAgICA4LCAyLCAvKiBQICovCj4+ ICsgICAgICAyNCwgMywgLyogbXV4ICovCj4+ICsgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4+ ICsgICAgICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9H QVRFX0hXUyhidXNfdGNvbl9sY2RfY2xrLCAiYnVzLXRjb24tbGNkIiwgYWhiX2h3cywKPj4gKyAg IDB4YjdjLCBCSVQoMCksIDApOwo+PiArCj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xr X2h3ICpjc2lfdG9wX3BhcmVudHNbXSA9IHsKPj4gKyAmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywK Pj4gKyAmcGxsX3BlcmlwaF80MDBNX2Nsay5odywKPj4gKyAmcGxsX3ZpZGVvXzR4X2Nsay5jb21t b24uaHcsCj4+ICsgJnBsbF9jc2lfNHhfY2xrLmNvbW1vbi5odywKPj4gK307Cj4+ICtzdGF0aWMg U1VOWElfQ0NVX01fSFdfV0lUSF9NVVhfR0FURShjc2lfdG9wX2NsaywgImNzaS10b3AiLCBjc2lf dG9wX3BhcmVudHMsIDB4YzA0LAo+PiArICAgICAwLCA1LCAvKiBNICovCj4+ICsgICAgIDI0LCAz LCAvKiBtdXggKi8KPj4gKyAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+PiArICAgICAwKTsKPj4g Kwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBjc2lfbWNsa19w YXJlbnRzW10gPSB7Cj4+ICsgeyAuZndfbmFtZSA9ICJob3NjIiB9LAo+PiArIHsgLmh3ID0gJnBs bF9jc2lfNHhfY2xrLmNvbW1vbi5odyB9LAo+PiArIHsgLmh3ID0gJnBsbF92aWRlb180eF9jbGsu Y29tbW9uLmh3IH0sCj4+ICsgeyAuaHcgPSAmcGxsX3BlcmlwaF8yeF9jbGsuY29tbW9uLmh3IH0s Cj4+ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0RBVEFfV0lUSF9NVVhfR0FURShjc2lfbWNs azBfY2xrLCAiY3NpLW1jbGswIiwgY3NpX21jbGtfcGFyZW50cywgMHhjMDgsCj4+ICsgICAgICAg MCwgNSwgLyogTSAqLwo+PiArICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPj4gKyAgICAgICBCSVQo MzEpLCAvKiBnYXRlICovCj4+ICsgICAgICAgMCk7Cj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf TV9EQVRBX1dJVEhfTVVYX0dBVEUoY3NpX21jbGsxX2NsaywgImNzaS1tY2xrMSIsIGNzaV9tY2xr X3BhcmVudHMsIDB4YzBjLAo+PiArICAgICAgIDAsIDUsIC8qIE0gKi8KPj4gKyAgICAgICAyNCwg MywgLyogbXV4ICovCj4+ICsgICAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+PiArICAgICAgIDAp Owo+PiArCj4+ICtzdGF0aWMgU1VOWElfQ0NVX01fREFUQV9XSVRIX01VWF9HQVRFKGNzaV9tY2xr Ml9jbGssICJjc2ktbWNsazIiLCBjc2lfbWNsa19wYXJlbnRzLCAweGMxMCwKPj4gKyAgICAgICAw LCA1LCAvKiBNICovCj4+ICsgICAgICAgMjQsIDMsIC8qIG11eCAqLwo+PiArICAgICAgIEJJVCgz MSksIC8qIGdhdGUgKi8KPj4gKyAgICAgICAwKTsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9H QVRFX0hXUyhidXNfY3NpX2NsaywgImJ1cy1jc2kiLCBhaGJfaHdzLAo+PiArICAgMHhjMmMsIEJJ VCgwKSwgMCk7Cj4+ICsKPj4gKwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfd2ll Z2FuZF9jbGssICJidXMtd2llZ2FuZCIsIGFoYl9od3MsCj4+ICsgICAweGM3YywgQklUKDApLCAw KTsKPj4gKwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSByaXNj dl9wYXJlbnRzW10gPSB7Cj4+ICsgeyAuZndfbmFtZSA9ICJob3NjIiB9LAo+PiArIHsgLmZ3X25h bWUgPSAibG9zYyIgfSwKPj4gKyB7IC5md19uYW1lID0gImlvc2MiIH0sCj4+ICsgeyAuaHcgPSAm cGxsX3BlcmlwaF82MDBNX2Nsay5odyB9LAo+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNDgwTV9j bGsuY29tbW9uLmh3IH0sCj4+ICsgeyAuaHcgPSAmcGxsX2NwdV9jbGsuY29tbW9uLmh3IH0sCj4+ ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0RBVEFfV0lUSF9NVVgocmlzY3ZfY2xrLCAicmlz Y3YtY3B1IiwgcmlzY3ZfcGFyZW50cywgMHhkMDAsCj4+ICsgIDAsIDUsIC8qIE0gKi8KPj4gKyAg MjQsIDMsIC8qIG11eCAqLwo+PiArICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPj4gKwo+PiArLyog VGhlIHJpc2N2LWF4aSBjbGsgbXVzdCBiZSBkaXZpZGVkIGJ5IGF0IGxlYXN0IDIuICovCj4+ICtz dGF0aWMgc3RydWN0IGNsa19kaXZfdGFibGUgcmlzY3ZfYXhpX3RhYmxlW10gPSB7Cj4+ICsgeyAu dmFsID0gMSwgLmRpdiA9IDIgfSwKPj4gKyB7IC52YWwgPSAyLCAuZGl2ID0gMyB9LAo+PiArIHsg LnZhbCA9IDMsIC5kaXYgPSA0IH0sCj4+ICsgeyAvKiBTZW50aW5lbCAqLyB9Cj4+ICt9Owo+PiAr c3RhdGljIFNVTlhJX0NDVV9ESVZfVEFCTEVfSFcocmlzY3ZfYXhpX2NsaywgInJpc2N2LWF4aSIs ICZyaXNjdl9jbGsuY29tbW9uLmh3LAo+PiArICAgICAgIDB4ZDAwLCA4LCAyLCByaXNjdl9heGlf dGFibGUsIDApOwo+PiArCj4+ICsKPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MocmlzY3Zf Y2ZnLCAicmlzY3YtY2ZnIiwgYWhiX2h3cywKPj4gKyAgMHhkMGMsIEJJVCgwKSwgMCk7Cj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpwbGxfcGVyaXBoXzE2ME1faHdzW10gPSB7 Cj4+ICsgJnBsbF9wZXJpcGhfMTYwTV9jbGsuaHcsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgU1VO WElfQ0NVX0dBVEVfREFUQShmYW5vdXRfMjRNX2NsaywgImZhbm91dC0yNE0iLCBvc2MyNE0sCj4+ ICsgMHhmMzAsIEJJVCgwKSwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfREFUQV9XSVRI X1BSRURJVihmYW5vdXRfMTJNX2NsaywgImZhbm91dC0xMk0iLCBvc2MyNE0sCj4+ICsgMHhmMzAs IEJJVCgxKSwgMiwgMCk7Cj4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTX1dJVEhfUFJFRElW KGZhbm91dF8xNk1fY2xrLCAiZmFub3V0LTE2TSIsIHBsbF9wZXJpcGhfMTYwTV9od3MsCj4+ICsg MHhmMzAsIEJJVCgyKSwgMTAsIDApOwo+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXU19XSVRI X1BSRURJVihmYW5vdXRfMjVNX2NsaywgImZhbm91dC0yNU0iLCBwbGxfcGVyaXBoXzE1ME1faHdz LAo+PiArIDB4ZjMwLCBCSVQoMyksIDYsIDApOwo+PiArCj4+ICsKPj4gKwo+PiArLyogVGhpcyBj bG9jayBoYXMgYSBzZWNvbmQgZGl2aWRlciB0aGF0IGlzIG5vdCBtb2RlbGxlZCBhbmQgZm9yY2Vk IHRvIDAuICovCj4+ICsjZGVmaW5lIFNVTjhJX1Y4NTNfRkFOT1VUXzI3TV9SRUcgMHhmMzQKPj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpmYW5vdXRfMjdNX3BhcmVudHNbXSA9IHsKPj4g KyAmcGxsX3ZpZGVvXzF4X2Nsay5odywKPj4gKyAmcGxsX2NzaV9jbGsuaHcsCj4+ICsgJnBsbF9w ZXJpcGhfMzAwTV9jbGsuaHcsCj4+ICt9Owo+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhf TVVYX0dBVEUoZmFub3V0XzI3TV9jbGssICJmYW5vdXQtMjdNIiwgZmFub3V0XzI3TV9wYXJlbnRz LCAweGYzNCwKPj4gKyAgICAgMCwgNSwgLyogTSAqLwo+PiArICAgICAyNCwgMiwgLyogbXV4ICov Cj4+ICsgICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPj4gKyAgICAgMCk7Cj4+ICtzdGF0aWMgU1VO WElfQ0NVX01fSFdTX1dJVEhfR0FURShmYW5vdXRfcGNsa19jbGssICJmYW5vdXQtcGNsayIsIGFw YjBfaHdzLCAweGYzOCwKPj4gKyAgICAgMCwgNSwgLyogTSAqLwo+PiArICAgICBCSVQoMzEpLCAv KiBnYXRlICovCj4+ICsgICAgIDApOwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19w YXJlbnRfZGF0YSBmYW5vdXRfcGFyZW50c1tdID0gewo+PiArIHsgLmZ3X25hbWUgPSAibG9zYyIg fSwKPj4gKyB7IC5odyA9ICZmYW5vdXRfMTJNX2Nsay5jb21tb24uaHcgfSwKPj4gKyB7IC5odyA9 ICZmYW5vdXRfMTZNX2Nsay5jb21tb24uaHcgfSwKPj4gKyB7IC5odyA9ICZmYW5vdXRfMjRNX2Ns ay5jb21tb24uaHcgfSwKPj4gKyB7IC5odyA9ICZmYW5vdXRfMjVNX2Nsay5jb21tb24uaHcgfSwK Pj4gKyB7IC5odyA9ICZmYW5vdXRfMjdNX2Nsay5jb21tb24uaHcgfSwKPj4gKyB7IC5odyA9ICZm YW5vdXRfcGNsa19jbGsuY29tbW9uLmh3IH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgU1VOWElf Q0NVX01VWF9EQVRBX1dJVEhfR0FURShmYW5vdXQwX2NsaywgImZhbm91dDAiLCBmYW5vdXRfcGFy ZW50cywgMHhmM2MsCj4+ICsgICAwLCAzLCAvKiBtdXggKi8KPj4gKyAgIEJJVCgyMSksIC8qIGdh dGUgKi8KPj4gKyAgIDApOwo+PiArc3RhdGljIFNVTlhJX0NDVV9NVVhfREFUQV9XSVRIX0dBVEUo ZmFub3V0MV9jbGssICJmYW5vdXQxIiwgZmFub3V0X3BhcmVudHMsIDB4ZjNjLAo+PiArICAgMywg MywgLyogbXV4ICovCj4+ICsgICBCSVQoMjIpLCAvKiBnYXRlICovCj4+ICsgICAwKTsKPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfTVVYX0RBVEFfV0lUSF9HQVRFKGZhbm91dDJfY2xrLCAiZmFub3V0MiIs IGZhbm91dF9wYXJlbnRzLCAweGYzYywKPj4gKyAgIDYsIDMsIC8qIG11eCAqLwo+PiArICAgQklU KDIzKSwgLyogZ2F0ZSAqLwo+PiArICAgMCk7Cj4+ICsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBj Y3VfY29tbW9uICpzdW44aV92ODUzX2NjdV9jbGtzW10gPSB7Cj4+ICsgJnBsbF9jcHVfY2xrLmNv bW1vbiwKPj4gKyAmcGxsX2Rkcl9jbGsuY29tbW9uLAo+PiArICZwbGxfcGVyaXBoXzR4X2Nsay5j b21tb24sCj4+ICsgJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbiwKPj4gKyAmcGxsX3BlcmlwaF84 MDBNX2Nsay5jb21tb24sCj4+ICsgJnBsbF9wZXJpcGhfNDgwTV9jbGsuY29tbW9uLAo+PiArICZw bGxfdmlkZW9fNHhfY2xrLmNvbW1vbiwKPj4gKyAmcGxsX2NzaV80eF9jbGsuY29tbW9uLAo+PiAr ICZwbGxfYXVkaW9fZGl2Ml9jbGsuY29tbW9uLAo+PiArICZwbGxfYXVkaW9fZGl2NV9jbGsuY29t bW9uLAo+PiArICZwbGxfYXVkaW9fNHhfY2xrLmNvbW1vbiwKPj4gKyAmcGxsX2F1ZGlvXzF4X2Ns ay5jb21tb24sCj4+ICsgJnBsbF9ucHVfNHhfY2xrLmNvbW1vbiwKPj4gKyAmY3B1X2Nsay5jb21t b24sCj4+ICsgJmNwdV9heGlfY2xrLmNvbW1vbiwKPj4gKyAmY3B1X2FwYl9jbGsuY29tbW9uLAo+ PiArICZhaGJfY2xrLmNvbW1vbiwKPj4gKyAmYXBiMF9jbGsuY29tbW9uLAo+PiArICZhcGIxX2Ns ay5jb21tb24sCj4+ICsgJmRlX2Nsay5jb21tb24sCj4+ICsgJmJ1c19kZV9jbGsuY29tbW9uLAo+ PiArICZnMmRfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX2cyZF9jbGsuY29tbW9uLAo+PiArICZjZV9j bGsuY29tbW9uLAo+PiArICZidXNfY2VfY2xrLmNvbW1vbiwKPj4gKyAmdmVfY2xrLmNvbW1vbiwK Pj4gKyAmYnVzX3ZlX2Nsay5jb21tb24sCj4+ICsgJm5wdV9jbGsuY29tbW9uLAo+PiArICZidXNf bnB1X2Nsay5jb21tb24sCj4+ICsgJmJ1c19kbWFfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX21zZ2Jv eDBfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX21zZ2JveDFfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX3Nw aW5sb2NrX2Nsay5jb21tb24sCj4+ICsgJmJ1c19oc3RpbWVyX2Nsay5jb21tb24sCj4+ICsgJmF2 c19jbGsuY29tbW9uLAo+PiArICZidXNfZGJnX2Nsay5jb21tb24sCj4+ICsgJmJ1c19wd21fY2xr LmNvbW1vbiwKPj4gKyAmYnVzX2lvbW11X2Nsay5jb21tb24sCj4+ICsgJmRyYW1fY2xrLmNvbW1v biwKPj4gKyAmbWJ1c19kbWFfY2xrLmNvbW1vbiwKPj4gKyAmbWJ1c192ZV9jbGsuY29tbW9uLAo+ PiArICZtYnVzX2NlX2Nsay5jb21tb24sCj4+ICsgJm1idXNfY3NpX2Nsay5jb21tb24sCj4+ICsg Jm1idXNfaXNwX2Nsay5jb21tb24sCj4+ICsgJm1idXNfZzJkX2Nsay5jb21tb24sCj4+ICsgJmJ1 c19kcmFtX2Nsay5jb21tb24sCj4+ICsgJm1tYzBfY2xrLmNvbW1vbiwKPj4gKyAmbW1jMV9jbGsu Y29tbW9uLAo+PiArICZtbWMyX2Nsay5jb21tb24sCj4+ICsgJmJ1c19tbWMwX2Nsay5jb21tb24s Cj4+ICsgJmJ1c19tbWMxX2Nsay5jb21tb24sCj4+ICsgJmJ1c19tbWMyX2Nsay5jb21tb24sCj4+ ICsgJmJ1c191YXJ0MF9jbGsuY29tbW9uLAo+PiArICZidXNfdWFydDFfY2xrLmNvbW1vbiwKPj4g KyAmYnVzX3VhcnQyX2Nsay5jb21tb24sCj4+ICsgJmJ1c191YXJ0M19jbGsuY29tbW9uLAo+PiAr ICZidXNfaTJjMF9jbGsuY29tbW9uLAo+PiArICZidXNfaTJjMV9jbGsuY29tbW9uLAo+PiArICZi dXNfaTJjMl9jbGsuY29tbW9uLAo+PiArICZidXNfaTJjM19jbGsuY29tbW9uLAo+PiArICZidXNf aTJjNF9jbGsuY29tbW9uLAo+PiArICZzcGkwX2Nsay5jb21tb24sCj4+ICsgJnNwaTFfY2xrLmNv bW1vbiwKPj4gKyAmc3BpMl9jbGsuY29tbW9uLAo+PiArICZzcGkzX2Nsay5jb21tb24sCj4+ICsg JmJ1c19zcGkwX2Nsay5jb21tb24sCj4+ICsgJmJ1c19zcGkxX2Nsay5jb21tb24sCj4+ICsgJmJ1 c19zcGkyX2Nsay5jb21tb24sCj4+ICsgJmJ1c19zcGkzX2Nsay5jb21tb24sCj4+ICsgJnNwaWZf Y2xrLmNvbW1vbiwKPj4gKyAmYnVzX3NwaWZfY2xrLmNvbW1vbiwKPj4gKyAmZW1hY18yNU1fY2xr LmNvbW1vbiwKPj4gKyAmYnVzX2VtYWNfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX2dwYWRjX2Nsay5j b21tb24sCj4+ICsgJmJ1c190aHNfY2xrLmNvbW1vbiwKPj4gKyAmdXNiX29oY2lfY2xrLmNvbW1v biwKPj4gKyAmYnVzX29oY2lfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX2VoY2lfY2xrLmNvbW1vbiwK Pj4gKyAmYnVzX290Z19jbGsuY29tbW9uLAo+PiArICZpMnMwX2Nsay5jb21tb24sCj4+ICsgJmky czFfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX2kyczBfY2xrLmNvbW1vbiwKPj4gKyAmYnVzX2kyczFf Y2xrLmNvbW1vbiwKPj4gKyAmZG1pY19jbGsuY29tbW9uLAo+PiArICZidXNfZG1pY19jbGsuY29t bW9uLAo+PiArICZhdWRpb19jb2RlY19kYWNfY2xrLmNvbW1vbiwKPj4gKyAmYXVkaW9fY29kZWNf YWRjX2Nsay5jb21tb24sCj4+ICsgJmJ1c19hdWRpb19jb2RlY19jbGsuY29tbW9uLAo+PiArICZi dXNfZHBzc190b3BfY2xrLmNvbW1vbiwKPj4gKyAmbWlwaV9kc2lfY2xrLmNvbW1vbiwKPj4gKyAm YnVzX21pcGlfZHNpX2Nsay5jb21tb24sCj4+ICsgJnRjb25fbGNkX2Nsay5jb21tb24sCj4+ICsg JmJ1c190Y29uX2xjZF9jbGsuY29tbW9uLAo+PiArICZjc2lfdG9wX2Nsay5jb21tb24sCj4+ICsg JmNzaV9tY2xrMF9jbGsuY29tbW9uLAo+PiArICZjc2lfbWNsazFfY2xrLmNvbW1vbiwKPj4gKyAm Y3NpX21jbGsyX2Nsay5jb21tb24sCj4+ICsgJmJ1c19jc2lfY2xrLmNvbW1vbiwKPj4gKyAmYnVz X3dpZWdhbmRfY2xrLmNvbW1vbiwKPj4gKyAmcmlzY3ZfY2xrLmNvbW1vbiwKPj4gKyAmcmlzY3Zf YXhpX2Nsay5jb21tb24sCj4+ICsgJnJpc2N2X2NmZy5jb21tb24sCj4+ICsgJmZhbm91dF8yNE1f Y2xrLmNvbW1vbiwKPj4gKyAmZmFub3V0XzEyTV9jbGsuY29tbW9uLAo+PiArICZmYW5vdXRfMTZN X2Nsay5jb21tb24sCj4+ICsgJmZhbm91dF8yNU1fY2xrLmNvbW1vbiwKPj4gKyAmZmFub3V0XzI3 TV9jbGsuY29tbW9uLAo+PiArICZmYW5vdXRfcGNsa19jbGsuY29tbW9uLAo+PiArICZmYW5vdXQw X2Nsay5jb21tb24sCj4+ICsgJmZhbm91dDFfY2xrLmNvbW1vbiwKPj4gKyAmZmFub3V0Ml9jbGsu Y29tbW9uLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBjbGtfaHdfb25lY2VsbF9kYXRh IHN1bjhpX3Y4NTNfaHdfY2xrcyA9IHsKPj4gKyAubnVtID0gQ0xLX05VTUJFUiwKPj4gKyAuaHdz ID0gewo+PiArIFtDTEtfT1NDMTJNXSAgICAgICAgICAgID0gJm9zYzEyTV9jbGsuaHcsCj4+ICsg W0NMS19QTExfQ1BVXSA9ICZwbGxfY3B1X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19QTExfRERS XSA9ICZwbGxfZGRyX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19QTExfUEVSSVBIXzRYXSA9ICZw bGxfcGVyaXBoXzR4X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19QTExfUEVSSVBIXzJYXSA9ICZw bGxfcGVyaXBoXzJ4X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19QTExfUEVSSVBIXzgwME1dID0g JnBsbF9wZXJpcGhfODAwTV9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfUExMX1BFUklQSF80ODBN XSA9ICZwbGxfcGVyaXBoXzQ4ME1fY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX1BMTF9QRVJJUEhf NjAwTV0gPSAmcGxsX3BlcmlwaF82MDBNX2Nsay5odywKPj4gKyBbQ0xLX1BMTF9QRVJJUEhfNDAw TV0gPSAmcGxsX3BlcmlwaF80MDBNX2Nsay5odywKPj4gKyBbQ0xLX1BMTF9QRVJJUEhfMzAwTV0g PSAmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywKPj4gKyBbQ0xLX1BMTF9QRVJJUEhfMjAwTV0gPSAm cGxsX3BlcmlwaF8yMDBNX2Nsay5odywKPj4gKyBbQ0xLX1BMTF9QRVJJUEhfMTYwTV0gPSAmcGxs X3BlcmlwaF8xNjBNX2Nsay5odywKPj4gKyBbQ0xLX1BMTF9QRVJJUEhfMTUwTV0gPSAmcGxsX3Bl cmlwaF8xNTBNX2Nsay5odywKPj4gKyBbQ0xLX1BMTF9WSURFT180WF0gPSAmcGxsX3ZpZGVvXzR4 X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19QTExfVklERU9fMlhdID0gJnBsbF92aWRlb18yeF9j bGsuaHcsCj4+ICsgW0NMS19QTExfVklERU9fMVhdID0gJnBsbF92aWRlb18xeF9jbGsuaHcsCj4+ ICsgW0NMS19QTExfQ1NJXzRYXSA9ICZwbGxfY3NpXzR4X2Nsay5jb21tb24uaHcsCj4+ICsgW0NM S19QTExfQVVESU9fRElWMl0gPSAmcGxsX2F1ZGlvX2RpdjJfY2xrLmNvbW1vbi5odywKPj4gKyBb Q0xLX1BMTF9BVURJT19ESVY1XSA9ICZwbGxfYXVkaW9fZGl2NV9jbGsuY29tbW9uLmh3LAo+PiAr IFtDTEtfUExMX0FVRElPXzRYXSA9ICZwbGxfYXVkaW9fNHhfY2xrLmNvbW1vbi5odywKPj4gKyBb Q0xLX1BMTF9BVURJT18xWF0gPSAmcGxsX2F1ZGlvXzF4X2Nsay5jb21tb24uaHcsCj4+ICsgW0NM S19QTExfTlBVXzRYXSA9ICZwbGxfbnB1XzR4X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19DUFVd ID0gJmNwdV9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfQ1BVX0FYSV0gPSAmY3B1X2F4aV9jbGsu Y29tbW9uLmh3LAo+PiArIFtDTEtfQ1BVX0FQQl0gPSAmY3B1X2FwYl9jbGsuY29tbW9uLmh3LAo+ PiArIFtDTEtfQUhCXSA9ICZhaGJfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0FQQjBdID0gJmFw YjBfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0FQQjFdID0gJmFwYjFfY2xrLmNvbW1vbi5odywK Pj4gKyBbQ0xLX01CVVNdID0gJm1idXNfY2xrLmh3LAo+PiArIFtDTEtfREVdID0gJmRlX2Nsay5j b21tb24uaHcsCj4+ICsgW0NMS19CVVNfREVdID0gJmJ1c19kZV9jbGsuY29tbW9uLmh3LAo+PiAr IFtDTEtfRzJEXSA9ICZnMmRfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19HMkRdID0gJmJ1 c19nMmRfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0NFXSA9ICZjZV9jbGsuY29tbW9uLmh3LAo+ PiArIFtDTEtfQlVTX0NFXSA9ICZidXNfY2VfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX1ZFXSA9 ICZ2ZV9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX1ZFXSA9ICZidXNfdmVfY2xrLmNvbW1v bi5odywKPj4gKyBbQ0xLX05QVV0gPSAmbnB1X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNf TlBVXSA9ICZidXNfbnB1X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfRE1BXSA9ICZidXNf ZG1hX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfTVNHQk9YMF0gPSAmYnVzX21zZ2JveDBf Y2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19NU0dCT1gxXSA9ICZidXNfbXNnYm94MV9jbGsu Y29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX1NQSU5MT0NLXSA9ICZidXNfc3BpbmxvY2tfY2xrLmNv bW1vbi5odywKPj4gKyBbQ0xLX0JVU19IU1RJTUVSXSA9ICZidXNfaHN0aW1lcl9jbGsuY29tbW9u Lmh3LAo+PiArIFtDTEtfQVZTXSA9ICZhdnNfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19E QkddID0gJmJ1c19kYmdfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19QV01dID0gJmJ1c19w d21fY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19JT01NVV0gPSAmYnVzX2lvbW11X2Nsay5j b21tb24uaHcsCj4+ICsgW0NMS19EUkFNXSA9ICZkcmFtX2Nsay5jb21tb24uaHcsCj4+ICsgW0NM S19NQlVTX0RNQV0gPSAmbWJ1c19kbWFfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX01CVVNfVkVd ID0gJm1idXNfdmVfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX01CVVNfQ0VdID0gJm1idXNfY2Vf Y2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX01CVVNfQ1NJXSA9ICZtYnVzX2NzaV9jbGsuY29tbW9u Lmh3LAo+PiArIFtDTEtfTUJVU19JU1BdID0gJm1idXNfaXNwX2Nsay5jb21tb24uaHcsCj4+ICsg W0NMS19NQlVTX0cyRF0gPSAmbWJ1c19nMmRfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19E UkFNXSA9ICZidXNfZHJhbV9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfTU1DMF0gPSAmbW1jMF9j bGsuY29tbW9uLmh3LAo+PiArIFtDTEtfTU1DMV0gPSAmbW1jMV9jbGsuY29tbW9uLmh3LAo+PiAr IFtDTEtfTU1DMl0gPSAmbW1jMl9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX01NQzBdID0g JmJ1c19tbWMwX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfTU1DMV0gPSAmYnVzX21tYzFf Y2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19NTUMyXSA9ICZidXNfbW1jMl9jbGsuY29tbW9u Lmh3LAo+PiArIFtDTEtfQlVTX1VBUlQwXSA9ICZidXNfdWFydDBfY2xrLmNvbW1vbi5odywKPj4g KyBbQ0xLX0JVU19VQVJUMV0gPSAmYnVzX3VhcnQxX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19C VVNfVUFSVDJdID0gJmJ1c191YXJ0Ml9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX1VBUlQz XSA9ICZidXNfdWFydDNfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19JMkMwXSA9ICZidXNf aTJjMF9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX0kyQzFdID0gJmJ1c19pMmMxX2Nsay5j b21tb24uaHcsCj4+ICsgW0NMS19CVVNfSTJDMl0gPSAmYnVzX2kyYzJfY2xrLmNvbW1vbi5odywK Pj4gKyBbQ0xLX0JVU19JMkMzXSA9ICZidXNfaTJjM19jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtf QlVTX0kyQzRdID0gJmJ1c19pMmM0X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19TUEkwXSA9ICZz cGkwX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19TUEkxXSA9ICZzcGkxX2Nsay5jb21tb24uaHcs Cj4+ICsgW0NMS19TUEkyXSA9ICZzcGkyX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19TUEkzXSA9 ICZzcGkzX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfU1BJMF0gPSAmYnVzX3NwaTBfY2xr LmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19TUEkxXSA9ICZidXNfc3BpMV9jbGsuY29tbW9uLmh3 LAo+PiArIFtDTEtfQlVTX1NQSTJdID0gJmJ1c19zcGkyX2Nsay5jb21tb24uaHcsCj4+ICsgW0NM S19CVVNfU1BJM10gPSAmYnVzX3NwaTNfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX1NQSUZdID0g JnNwaWZfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19TUElGXSA9ICZidXNfc3BpZl9jbGsu Y29tbW9uLmh3LAo+PiArIFtDTEtfRU1BQ18yNU1dID0gJmVtYWNfMjVNX2Nsay5jb21tb24uaHcs Cj4+ICsgW0NMS19CVVNfRU1BQ10gPSAmYnVzX2VtYWNfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xL X0JVU19HUEFEQ10gPSAmYnVzX2dwYWRjX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfVEhT XSA9ICZidXNfdGhzX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19JMlMwXSA9ICZpMnMwX2Nsay5j b21tb24uaHcsCj4+ICsgW0NMS19JMlMxXSA9ICZpMnMxX2Nsay5jb21tb24uaHcsCj4+ICsgW0NM S19CVVNfSTJTMF0gPSAmYnVzX2kyczBfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0JVU19JMlMx XSA9ICZidXNfaTJzMV9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfRE1JQ10gPSAmZG1pY19jbGsu Y29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX0RNSUNdID0gJmJ1c19kbWljX2Nsay5jb21tb24uaHcs Cj4+ICsgW0NMS19BVURJT19DT0RFQ19EQUNdID0gJmF1ZGlvX2NvZGVjX2RhY19jbGsuY29tbW9u Lmh3LAo+PiArIFtDTEtfQVVESU9fQ09ERUNfQURDXSA9ICZhdWRpb19jb2RlY19hZGNfY2xrLmNv bW1vbi5odywKPj4gKyBbQ0xLX0JVU19BVURJT19DT0RFQ10gPSAmYnVzX2F1ZGlvX2NvZGVjX2Ns ay5jb21tb24uaHcsCj4+ICsgW0NMS19VU0JfT0hDSV0gPSAmdXNiX29oY2lfY2xrLmNvbW1vbi5o dywKPj4gKyBbQ0xLX0JVU19PSENJXSA9ICZidXNfb2hjaV9jbGsuY29tbW9uLmh3LAo+PiArIFtD TEtfQlVTX0VIQ0ldID0gJmJ1c19laGNpX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfT1RH XSA9ICZidXNfb3RnX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfRFBTU19UT1BdID0gJmJ1 c19kcHNzX3RvcF9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfTUlQSV9EU0ldID0gJm1pcGlfZHNp X2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19CVVNfTUlQSV9EU0ldID0gJmJ1c19taXBpX2RzaV9j bGsuY29tbW9uLmh3LAo+PiArIFtDTEtfVENPTl9MQ0RdID0gJnRjb25fbGNkX2Nsay5jb21tb24u aHcsCj4+ICsgW0NMS19CVVNfVENPTl9MQ0RdID0gJmJ1c190Y29uX2xjZF9jbGsuY29tbW9uLmh3 LAo+PiArIFtDTEtfQ1NJX1RPUF0gPSAmY3NpX3RvcF9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtf Q1NJX01DTEswXSA9ICZjc2lfbWNsazBfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0NTSV9NQ0xL MV0gPSAmY3NpX21jbGsxX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19DU0lfTUNMSzJdID0gJmNz aV9tY2xrMl9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX0NTSV0gPSAmYnVzX2NzaV9jbGsu Y29tbW9uLmh3LAo+PiArIFtDTEtfQlVTX1dJRUdBTkRdID0gJmJ1c193aWVnYW5kX2Nsay5jb21t b24uaHcsCj4+ICsgW0NMS19SSVNDVl0gPSAmcmlzY3ZfY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xL X1JJU0NWX0FYSV0gPSAmcmlzY3ZfYXhpX2Nsay5jb21tb24uaHcsCj4+ICsgW0NMS19SSVNDVl9D RkddICAgICAgICAgPSAmcmlzY3ZfY2ZnLmNvbW1vbi5odywKPj4gKyBbQ0xLX0ZBTk9VVF8yNE1d ID0gJmZhbm91dF8yNE1fY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0ZBTk9VVF8xNk1dID0gJmZh bm91dF8xNk1fY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0ZBTk9VVF8xMk1dID0gJmZhbm91dF8x Mk1fY2xrLmNvbW1vbi5odywKPj4gKyBbQ0xLX0ZBTk9VVF8yNU1dID0gJmZhbm91dF8yNU1fY2xr LmNvbW1vbi5odywKPj4gKyBbQ0xLX0ZBTk9VVF8yN01dID0gJmZhbm91dF8yN01fY2xrLmNvbW1v bi5odywKPj4gKyBbQ0xLX0ZBTk9VVF9QQ0xLXSA9ICZmYW5vdXRfcGNsa19jbGsuY29tbW9uLmh3 LAo+PiArIFtDTEtfRkFOT1VUMF0gPSAmZmFub3V0MF9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtf RkFOT1VUMV0gPSAmZmFub3V0MV9jbGsuY29tbW9uLmh3LAo+PiArIFtDTEtfRkFOT1VUMl0gPSAm ZmFub3V0Ml9jbGsuY29tbW9uLmh3LAo+PiArIH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3Ry dWN0IGNjdV9yZXNldF9tYXAgc3VuOGlfdjg1M19jY3VfcmVzZXRzW10gPSB7Cj4+ICsgW1JTVF9N QlVTXSA9IHsgMHg1NDAsIEJJVCgzMCkgfSwKPj4gKyBbUlNUX0JVU19ERV0gPSB7IDB4NjBjLCBC SVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNfRzJEXSA9IHsgMHg2M2MsIEJJVCgxNikgfSwKPj4gKyBb UlNUX0JVU19DRV0gPSB7IDB4NjhjLCBCSVQoMTYpIHwgQklUKDE3KX0sCj4+ICsgW1JTVF9CVVNf VkVdID0geyAweDY5YywgQklUKDE2KSB9LAo+PiArIFtSU1RfQlVTX05QVV0gPSB7IDB4NmVjLCBC SVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNfRE1BXSA9IHsgMHg3MGMsIEJJVCgxNikgfSwKPj4gKyBb UlNUX0JVU19NU0dCT1gwXSA9IHsgMHg3MWMsIEJJVCgxNikgfSwKPj4gKyBbUlNUX0JVU19NU0dC T1gxXSA9IHsgMHg3MWMsIEJJVCgxNykgfSwKPj4gKyBbUlNUX0JVU19TUElOTE9DS10gPSB7IDB4 NzJjLCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNfSFNUSU1FUl0gPSB7IDB4NzNjLCBCSVQoMTYp IH0sCj4+ICsgW1JTVF9CVVNfREJHXSA9IHsgMHg3OGMsIEJJVCgxNikgfSwKPj4gKyBbUlNUX0JV U19QV01dID0geyAweDdhYywgQklUKDE2KSB9LAo+PiArIFtSU1RfQlVTX0RSQU1dID0geyAweDgw YywgQklUKDE2KSB9LAo+PiArIFtSU1RfQlVTX01NQzBdID0geyAweDg0YywgQklUKDE2KSB9LAo+ PiArIFtSU1RfQlVTX01NQzFdID0geyAweDg0YywgQklUKDE3KSB9LAo+PiArIFtSU1RfQlVTX01N QzJdID0geyAweDg0YywgQklUKDE4KSB9LAo+PiArIFtSU1RfQlVTX1VBUlQwXSA9IHsgMHg5MGMs IEJJVCgxNikgfSwKPj4gKyBbUlNUX0JVU19VQVJUMV0gPSB7IDB4OTBjLCBCSVQoMTcpIH0sCj4+ ICsgW1JTVF9CVVNfVUFSVDJdID0geyAweDkwYywgQklUKDE4KSB9LAo+PiArIFtSU1RfQlVTX1VB UlQzXSA9IHsgMHg5MGMsIEJJVCgxOSkgfSwKPj4gKyBbUlNUX0JVU19JMkMwXSA9IHsgMHg5MWMs IEJJVCgxNikgfSwKPj4gKyBbUlNUX0JVU19JMkMxXSA9IHsgMHg5MWMsIEJJVCgxNykgfSwKPj4g KyBbUlNUX0JVU19JMkMyXSA9IHsgMHg5MWMsIEJJVCgxOCkgfSwKPj4gKyBbUlNUX0JVU19JMkMz XSA9IHsgMHg5MWMsIEJJVCgxOSkgfSwKPj4gKyBbUlNUX0JVU19JMkM0XSA9IHsgMHg5MWMsIEJJ VCgyMCkgfSwKPj4gKyBbUlNUX0JVU19TUElGXSA9IHsgMHg5NmMsIEJJVCgyMCkgfSwKPiAKPiBU aGF0IGVudHJ5IF5eXl4gc2VlbXMgb3V0IG9mIG9yZGVyLgoKT3BwcywgSeKAmWxsIGZpeCBpdC4K Cj4gCj4+ICsgW1JTVF9CVVNfU1BJMF0gPSB7IDB4OTZjLCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9C VVNfU1BJMV0gPSB7IDB4OTZjLCBCSVQoMTcpIH0sCj4+ICsgW1JTVF9CVVNfU1BJMl0gPSB7IDB4 OTZjLCBCSVQoMTgpIH0sCj4+ICsgW1JTVF9CVVNfU1BJM10gPSB7IDB4OTZjLCBCSVQoMTkpIH0s Cj4+ICsgW1JTVF9CVVNfRU1BQ10gPSB7IDB4OTdjLCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNf R1BBRENdID0geyAweDllYywgQklUKDE2KSB9LAo+PiArIFtSU1RfQlVTX1RIU10gPSB7IDB4OWZj LCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNfSTJTMF0gPSB7IDB4YTIwLCBCSVQoMTYpIH0sCj4+ ICsgW1JTVF9CVVNfSTJTMV0gPSB7IDB4YTIwLCBCSVQoMTcpIH0sCj4+ICsgW1JTVF9CVVNfRE1J Q10gPSB7IDB4YTRjLCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNfQVVESU9fQ09ERUNdID0geyAw eGE1YywgQklUKDE2KSB9LAo+PiArIFtSU1RfVVNCX1BIWV0gPSB7IDB4YTcwLCBCSVQoMzApIH0s Cj4+ICsgW1JTVF9CVVNfT0hDSV0gPSB7IDB4YThjLCBCSVQoMTYpIH0sCj4+ICsgW1JTVF9CVVNf RUhDSV0gPSB7IDB4YThjLCBCSVQoMjApIH0sCj4+ICsgW1JTVF9CVVNfT1RHXSA9IHsgMHhhOGMs IEJJVCgyNCkgfSwKPj4gKyBbUlNUX0JVU19EUFNTX1RPUF0gPSB7IDB4YWJjLCBCSVQoMTYpIH0s Cj4+ICsgW1JTVF9CVVNfTUlQSV9EU0ldID0geyAweGI0YywgQklUKDE2KSB9LAo+PiArIFtSU1Rf QlVTX1RDT05fTENEXSA9IHsgMHhiN2MsIEJJVCgxNikgfSwKPj4gKyBbUlNUX0JVU19DU0ldID0g eyAweGMyYywgQklUKDE2KSB9LAo+PiArIFtSU1RfQlVTX1dJRUdBTkRdID0geyAweGM3YywgQklU KDE2KSB9LAo+PiArIFtSU1RfUklTQ1ZfU1lTX0FQQl0gPSB7IDB4ZDA0LCBCSVQoMiksIENDVV9G RUFUVVJFX0tFWV9GSUVMRCB9LAo+PiArIFtSU1RfUklTQ1ZfU09GVF0gPSB7IDB4ZDA0LCBCSVQo MSksIENDVV9GRUFUVVJFX0tFWV9GSUVMRCB9LAo+PiArIFtSU1RfUklTQ1ZfQ0xLX0dBVElOR10g PSB7IDB4ZDA0LCBCSVQoMCksIENDVV9GRUFUVVJFX0tFWV9GSUVMRCB9LAo+IAo+IEJ1dCB0aGF0 J3MgYSBjbG9jayBnYXRlLCBub3QgYSByZXNldCwgcmlnaHQ/CgpZZXMsIEkgZm9yZ2V0IHRvIGZp eCB0aGF0LiBNb2RlbGxpbmcgdGhpcyB3YXkgKGJlY2F1c2Ugb2YgdGhlIEtFWV9GSUVMRCkgd2Fz IGZhc3Rlcgp3aGVuIEkgd3JvdGUgdGhlIHJlbW90ZXByb2MgZHJpdmVyLiAKCj4gCj4+ICsgW1JT VF9SSVNDVl9DRkddID0geyAweGQwYywgQklUKDE2KSB9Cj4gCj4gVGhlIHJlc3Qgb2YgdGhlIHJl c2V0IGJpdHMgbWF0Y2ggdGhlIG1hbnVhbC4KPiAKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgc3VueGlfY2N1X2Rlc2Mgc3VuOGlfdjg1M19jY3VfZGVzYyA9IHsKPj4gKyAuY2N1 X2Nsa3MgPSBzdW44aV92ODUzX2NjdV9jbGtzLAo+PiArIC5udW1fY2N1X2Nsa3MgPSBBUlJBWV9T SVpFKHN1bjhpX3Y4NTNfY2N1X2Nsa3MpLAo+PiArCj4+ICsgLmh3X2Nsa3MgPSAmc3VuOGlfdjg1 M19od19jbGtzLAo+PiArCj4+ICsgLnJlc2V0cyA9IHN1bjhpX3Y4NTNfY2N1X3Jlc2V0cywKPj4g KyAubnVtX3Jlc2V0cyA9IEFSUkFZX1NJWkUoc3VuOGlfdjg1M19jY3VfcmVzZXRzKSwKPj4gK307 Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCB1MzIgcGxsX3JlZ3NbXSA9IHsKPj4gKyBTVU44SV9WODUz X1BMTF9DUFVfUkVHLAo+PiArIFNVTjhJX1Y4NTNfUExMX0REUl9SRUcsCj4+ICsgU1VOOElfVjg1 M19QTExfUEVSSVBIX1JFRywKPj4gKyBTVU44SV9WODUzX1BMTF9WSURFT19SRUcsCj4+ICsgU1VO OElfVjg1M19QTExfQ1NJX1JFRywKPj4gKyBTVU44SV9WODUzX1BMTF9BVURJT19SRUcsCj4+ICsg U1VOOElfVjg1M19QTExfTlBVX1JFRywKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc3VuOGlf djg1M19jY3VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gKyB2 b2lkIF9faW9tZW0gKnJlZzsKPj4gKyB1MzIgdmFsOwo+PiArIGludCBpLCByZXQ7Cj4+ICsKPj4g KyByZWcgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7Cj4+ICsgaWYg KElTX0VSUihyZWcpKQo+PiArIHJldHVybiBQVFJfRVJSKHJlZyk7Cj4+ICsKPj4gKyAvKiBFbmFi bGUgdGhlIGVuYWJsZSwgTERPLCBhbmQgbG9jayBiaXRzIG9uIGFsbCBQTExzLiAqLwo+PiArIGZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBsbF9yZWdzKTsgaSsrKSB7Cj4+ICsgdmFsID0gcmVh ZGwocmVnICsgcGxsX3JlZ3NbaV0pOwo+PiArIHZhbCB8PSBCSVQoMzEpIHwgQklUKDMwKSB8IEJJ VCgyOSk7Cj4+ICsgd3JpdGVsKHZhbCwgcmVnICsgcGxsX3JlZ3NbaV0pOwo+PiArIH0KPj4gKwo+ PiArIC8qIEZvcmNlIFBMTF9DUFUgZmFjdG9yIE0gdG8gMC4gKi8KPj4gKyB2YWwgPSByZWFkbChy ZWcgKyBTVU44SV9WODUzX1BMTF9DUFVfUkVHKTsKPj4gKyB2YWwgJj0gfkdFTk1BU0soMSwgMCk7 Cj4+ICsgd3JpdGVsKHZhbCwgcmVnICsgU1VOOElfVjg1M19QTExfQ1BVX1JFRyk7Cj4gCj4gTGV0 J3MganVzdCBob3BlIGl0IHdhcyAwIGFscmVhZHksIGFzIEkgZ3Vlc3MgYSBzdWRkZW4ganVtcCBv Zgo+IENQVSBmcmVxdWVuY3kgbWlnaHQgbm90IGJlIHRvbyBoZWFsdGh5Lgo+IApJ4oCZbGwgZG91 YmxlIGNoZWNrIHRoYXQuCgo+PiArIC8qCj4+ICsgICogRm9yY2UgdGhlIG91dHB1dCBkaXZpZGVy IG9mIHZpZGVvIFBMTCB0byAwLgo+IAo+IEp1c3QgYSBuaXQsIGJ1dCBhICJkaXZpZGVyIG9mIDAi IGRvZXMgbm90IHNvdW5kIHRvbyBoZWFsdGh5LiBNYXliZToKPiAiRm9yY2UgdGhlIG91dHB1dCBk aXZpZGVyIHRvIDEsIGJ5IGNsZWFyaW5nIGJpdCAwLiIKPiAKClRoYW5rcy4KCj4gQ2hlZXJzLAo+ IEFuZHJlCj4gCj4+ICsgICoKPj4gKyAgKiBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlIHBsbC12aWRl bzAgZGVmaW5pdGlvbiBmb3IgdGhlIHJlYXNvbi4KPj4gKyAgKi8KPj4gKyB2YWwgPSByZWFkbChy ZWcgKyBTVU44SV9WODUzX1BMTF9WSURFT19SRUcpOwo+PiArIHZhbCAmPSB+QklUKDApOwo+PiAr IHdyaXRlbCh2YWwsIHJlZyArIFNVTjhJX1Y4NTNfUExMX1ZJREVPX1JFRyk7Cj4+ICsKPj4gKyAv Kgo+PiArICAqIEZvcmNlIHRoZSBvdXRwdXQgZGl2aWRlciBvZiBDU0kgUExMIHRvIDAuCj4+ICsg ICoKPj4gKyAgKiBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlIHBsbC1jc2kgZGVmaW5pdGlvbiBmb3Ig dGhlIHJlYXNvbi4KPj4gKyAgKi8KPj4gKyB2YWwgPSByZWFkbChyZWcgKyBTVU44SV9WODUzX1BM TF9DU0lfUkVHKTsKPj4gKyB2YWwgJj0gfkJJVCgwKTsKPj4gKyB3cml0ZWwodmFsLCByZWcgKyBT VU44SV9WODUzX1BMTF9DU0lfUkVHKTsKPj4gKwo+PiArIC8qCj4+ICsgICogRm9yY2UgdGhlIG91 dHB1dCBkaXZpZGVyIG9mIE5QVSBQTEwgdG8gMC4KPj4gKyAgKgo+PiArICAqIFNlZSB0aGUgY29t bWVudCBiZWZvcmUgcGxsLW5wdSBkZWZpbml0aW9uIGZvciB0aGUgcmVhc29uLgo+PiArICAqLwo+ PiArIHZhbCA9IHJlYWRsKHJlZyArIFNVTjhJX1Y4NTNfUExMX05QVV9SRUcpOwo+PiArIHZhbCAm PSB+QklUKDApOwo+PiArIHdyaXRlbCh2YWwsIHJlZyArIFNVTjhJX1Y4NTNfUExMX05QVV9SRUcp Owo+PiArCj4+ICsgLyoKPj4gKyAgKiBGb3JjZSBPSENJIDEyTSBjbG9jayBzb3VyY2UgdG8gMDAg KDEyTUh6IGRpdmlkZWQgZnJvbSA0OE1IeikKPj4gKyAgKgo+PiArICAqIFRoaXMgY2xvY2sgbXV4 IGlzIHN0aWxsIG15c3RlcmlvdXMsIGFuZCB0aGUgY29kZSBqdXN0IGVuZm9yY2VzCj4+ICsgICog aXQgdG8gaGF2ZSBhIHZhbGlkIGNsb2NrIHBhcmVudC4KPj4gKyAgKi8KPj4gKyB2YWwgPSByZWFk bChyZWcgKyBTVU44SV9WODUzX1VTQl9DTEtfUkVHKTsKPj4gKyB2YWwgJj0gfkdFTk1BU0soMjUs IDI0KTsKPj4gKyB3cml0ZWwodmFsLCByZWcgKyBTVU44SV9WODUzX1VTQl9DTEtfUkVHKTsKPj4g Kwo+PiArIC8qIEZvcmNlIGZhbm91dC0yN00gZmFjdG9yIE4gdG8gMC4gKi8KPj4gKyB2YWwgPSBy ZWFkbChyZWcgKyBTVU44SV9WODUzX0ZBTk9VVF8yN01fUkVHKTsKPj4gKyB2YWwgJj0gfkdFTk1B U0soOSwgOCk7Cj4+ICsgd3JpdGVsKHZhbCwgcmVnICsgU1VOOElfVjg1M19GQU5PVVRfMjdNX1JF Ryk7Cj4+ICsKPj4gKyByZXQgPSBkZXZtX3N1bnhpX2NjdV9wcm9iZSgmcGRldi0+ZGV2LCByZWcs ICZzdW44aV92ODUzX2NjdV9kZXNjKTsKPj4gKyBpZiAocmV0KQo+PiArIHJldHVybiByZXQ7Cj4+ ICsKPj4gKyByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgc3VuOGlfdjg1M19jY3VfaWRzW10gPSB7Cj4+ICsgeyAuY29tcGF0aWJsZSA9ICJh bGx3aW5uZXIsc3VuOGktdjg1My1jY3UiIH0sCj4+ICsgeyB9Cj4+ICt9Owo+PiArCj4+ICtzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW44aV92ODUzX2NjdV9kcml2ZXIgPSB7Cj4+ICsg LnByb2JlID0gc3VuOGlfdjg1M19jY3VfcHJvYmUsCj4+ICsgLmRyaXZlciA9IHsKPj4gKyAubmFt ZSA9ICJzdW44aS12ODUzLWNjdSIsCj4+ICsgLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLAo+ PiArIC5vZl9tYXRjaF90YWJsZSA9IHN1bjhpX3Y4NTNfY2N1X2lkcywKPj4gKyB9LAo+PiArfTsK Pj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfdjg1M19jY3VfZHJpdmVyKTsKPj4gKwo+ PiArTU9EVUxFX0lNUE9SVF9OUygiU1VOWElfQ0NVIik7Cj4+ICtNT0RVTEVfTElDRU5TRSgiR1BM Iik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5o IGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuaAo+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmI2ZWUxNzY0ZmU1ZQo+PiAtLS0gL2Rldi9u dWxsCj4+ICsrKyBiL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aS12ODUzLmgKPj4gQEAg LTAsMCArMSwxNCBAQAo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8K Pj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjQgQW5kcmFzIFN6ZW16byA8c3plbXpvLmFu ZHJhc0BnbWFpbC5jb20+Cj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfQ0NVX1NVTjhJX1Y4NTNf SF8KPj4gKyNkZWZpbmUgX0NDVV9TVU44SV9WODUzX0hfCj4+ICsKPj4gKyNpbmNsdWRlIDxkdC1i aW5kaW5ncy9jbG9jay9zdW44aS12ODUzLWNjdS5oPgo+PiArI2luY2x1ZGUgPGR0LWJpbmRpbmdz L3Jlc2V0L3N1bjhpLXY4NTMtY2N1Lmg+Cj4+ICsKPj4gKyNkZWZpbmUgQ0xLX05VTUJFUiAoQ0xL X0ZBTk9VVDIgKyAxKQo+PiArCj4+ICsjZW5kaWYgLyogX0NDVV9TVU44SV9WODUzX0hfICovCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNj diBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==