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 3C149C5DF81 for ; Thu, 20 Aug 2026 09:18:34 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jNIHdONfQr5zI86FJG+VUDf57zGd8d6MosaGHXRjJwM=; b=AmRExLdWsZYvtZ Y0ylRdjKXAni3hKZxlyZMp9bEMu0S3LRXsc2cUDtRcioqX92Qn9VX0+IxhQ9UGsF2VycFSxE25+YS upCbl8JBMgtsCnWJB+7aqyTxJGiFUfTc9v4hWL7Q9AOGqylZQIPjWlazaqhn6ic2WfaqDRcnrmM2B baLwCR/5QoqrqLcJYnm/BSAjEXSRxj5CzNt/2IV0GQA0EdwtwRAjBgKaYaJMJ+oz3Cq/pJlThAqsy fY9kO0EMlcy60T7u1wjEwTF52Bm+a4ayVzt7+O7L0Qpw3/nXHIt7shybAoxn2amT/5QopmPeAldOp hK8dKUrulT4qPve+PcVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwyup-0000000BFiA-2P1r; Thu, 20 Aug 2026 09:18:27 +0000 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wwyum-0000000BFgJ-40xB for opensbi@lists.infradead.org; Thu, 20 Aug 2026 09:18:26 +0000 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-38e58034d05so1661359a91.2 for ; Thu, 20 Aug 2026 02:18:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787217504; x=1787822304; darn=lists.infradead.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=l7bA+dX4pVCToOPyiHl8JQeC4MOKm5IAlz7dRW2sM5o=; b=PiYcDPYOnH0HBcD7ZgwkoS3pcV8a+qpBjQSKYftNm6TsqL+GQPYfU+w4pH6wc/Z9XQ eakrBXCUQwMFRjwTc0N4NLCRKvXgEqxX6S7y/j50YorMviELlC8lF0eSSz88rSBfK9uu iJKlpwynF4hXqiQ2l7fhD4aKVVZn+jX49DBc4LDaWVHgX91YQIyAmvKAfDBQlhXpR1II +lQ3AG1qN2OIzvO2GScgdBLEv+fNekL0tk4FudQOnD6+Jd12UAa04ScBBh/Yz/LAts0z Ay3cfsHCNfe0pFDRjpnqhYVCVGL2PslOO2KxZRDUx1bXMFf/OeF2W2elzghcV/yuKwWR Z0kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787217504; x=1787822304; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=l7bA+dX4pVCToOPyiHl8JQeC4MOKm5IAlz7dRW2sM5o=; b=fNwFtaU+mCom0VuNI+5YeV6mooRF0SdrqSEN9YfcR0HMxGj1lMr0z/ZMhxJ+/JU3b3 sViNhuxF8LTChYYrQm1ekyb64+RgYl7wvG5ubMFST7VNvVw6MlwWCtfXnSjVSI2XbdiK VYVLO9wWKmLh76UEFzrMIhAwoF/QMHReupBReP62ceg1d13uANH3667TIMKC96/Xq7E+ quEKuwwufEfh3rEvORV2R+qt9hmazw75d8aUpRyk/zfUfdNrv6BXpUogZloUKXQAt8f8 Gq3kq9a1aMSfgzRIHV8+3tQxo/XiNoaZDFDhbd/Fs6YVvbNLFZVCoONjUrgFuo8FV9bK amSQ== X-Forwarded-Encrypted: i=1; AHgh+RrnNjgMDWlJ5UDFJFMA5/0fJbAPlXNZKr8Efqnk32gI/hH2EJ/Jcgpgdwy/o86O7LhSE0Gy6DjW@lists.infradead.org X-Gm-Message-State: AFuF++m+2hCQTvMtyC09oMu5UGzDlVGEkz7N5aNuziCcpaBpujj73IIq zViFp9D8m+qHCTv+hnZr8Fpq5pHJ0FOH9PLl65nQ1iumsqDt1n6/S65s X-Gm-Gg: AR+sD117sP2wbXZ/wl3QOn+G8H3xOzXaLsZPo1udxuBsjb+JdwI3Sc979/XiCEEGJrv 0aG3cMLs+1rKnZSQUaQYl84eynfX5uVkn2QnJ4o8wA5Ioxz4vdrc0X+IpHMS2sHn19QyM8zNS6g PQ8MYvZuaTk0JZvw9YfeWQri0xsEHtNvtPXpsVoRO7kqInZO3XryZoeLOq3nVX12A6BboBZWpXO 0SeLVL5bBxVDBi1nMQt4rc5Jy2MgyhuXwlHs5/aN/b6nT+n9bvmTOclFyAe6TSRiy9W5PEiJW62 OpRllZTHC9/NNLX7NB960iaCoL/6Oj67oRCzggTIDtkWz3zJIGltPSZBfmSN9OfXxuBHkcvazUT RTkFqDxgEUEGciAg5LxMgKb3c+2885i+wiX8osrn1t6/fvlG5UJYSWjlUH/EhuB1GYTuFcnsjQH 0OlZA++JwKKz3/3iXskR3nIIElWdE7R+t51Y+7cC8r66r1q42pILYak1RTqlex1A== X-Received: by 2002:a17:90b:1f8f:b0:38d:f5bb:e0f4 with SMTP id 98e67ed59e1d1-39580840520mr22458880a91.1.1787217503930; Thu, 20 Aug 2026 02:18:23 -0700 (PDT) Received: from [192.168.0.13] ([172.92.174.155]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3957fb3069csm7240347a91.15.2026.08.20.02.18.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Aug 2026 02:18:23 -0700 (PDT) Message-ID: Date: Thu, 20 Aug 2026 02:18:22 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 5/5] platform: generic: spacemit: k3: add platform support To: Troy Mitchell , opensbi@lists.infradead.org Cc: Xianbin Zhu , Anup Patel , Bo Gan References: <20260818-spacemit-k3-v2-0-84cb7773a481@linux.spacemit.com> <20260818-spacemit-k3-v2-5-84cb7773a481@linux.spacemit.com> Content-Language: en-US From: Bo Gan In-Reply-To: <20260818-spacemit-k3-v2-5-84cb7773a481@linux.spacemit.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260820_021825_041990_E203F9D6 X-CRM114-Status: GOOD ( 28.36 ) X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "opensbi" Errors-To: opensbi-bounces+opensbi=archiver.kernel.org@lists.infradead.org SGkgVHJveSwgWGlhbmJpbiwKClNlZSBteSBjb21tZW50cyBiZWxvdzoKCk9uIDgvMTcvMjYgMTg6 MTQsIFRyb3kgTWl0Y2hlbGwgd3JvdGU6Cj4gRnJvbTogWGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1 QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiAKPiBBZGQgaW5pdGlhbCBPcGVuU0JJIHBsYXRmb3JtIHN1 cHBvcnQgZm9yIHRoZSBTcGFjZW1pVCBLMyBTb0MsIHdoaWNoIGhhcwo+IDE2IGhhcnRzOiBlaWdo dCBYMTAwIGhhcnRzIGluIGNsdXN0ZXJzIEMwL0MxIGFuZCBlaWdodCBBMTAwIGhhcnRzIGluCj4g QzIvQzMuCj4gCj4gRHVyaW5nIGNvbGQgYm9vdCwgdGhlIGJvb3QgaGFydCBzZXRzIHdhcm0tYm9v dCBlbnRyeSB2ZWN0b3JzIGZvciBhbGwKPiBmb3VyIGNsdXN0ZXJzLCBlbmFibGVzIENDSSBzbm9v cGluZywgY2xlYXJzIFBNVSBwb3dlci1kb3duIHZvdGUgYml0cyBmb3IKPiBhbGwgaGFydHMgc28g V0ZJIGRvZXMgbm90IHRyaWdnZXIgcG93ZXItZG93biwgYW5kIHdha2VzIGFsbCBub24tYm9vdAo+ IGhhcnRzICgxLTE1KS4gV2FpdCB1cCB0byAxMDAgbXMgZm9yIGVhY2ggc2Vjb25kYXJ5IGhhcnQg dG8gZW50ZXIgV0ZJLAo+IHRoZW4gd2FybiBhbmQgY29udGludWUgc28gb25lIGZhaWxlZCBoYXJ0 IGNhbm5vdCBzdGFsbCBib290IGluZGVmaW5pdGVseS4KPiAKPiBSdW4gcGVyLWhhcnQgaW5pdGlh bGl6YXRpb24gZnJvbSB0aGUgbmFzY2VudCBob29rIG9uIGJvdGggY29sZC0gYW5kCj4gd2FybS1i b290IHBhdGhzLiBQcm9ncmFtIFBNQSBhdHRyaWJ1dGVzLCBlbmFibGUgdGhlIEQtY2FjaGUgYW5k IEktY2FjaGUKPiB0aHJvdWdoIE1TRVRVUCwgc2V0IHNtcGVuW3hdIGluIE1MMlNFVFVQIHRvIGVu YWJsZSBMMSBELWNhY2hlIHNub29waW5nCj4gYW5kIHByZWZldGNoLCBhbmQgZW5hYmxlIHRoZSBI IGV4dGVuc2lvbiBpbiBNSVNBIGZvciBYMTAwIGhhcnRzLiBNSVNBLkgKPiBpcyB3cml0YWJsZSBv biBLMyBYMTAwIGNvcmVzLCBhbmQgTS1tb2RlIG11c3Qgc2V0IGl0IGV4cGxpY2l0bHkgdG8KPiBh Y3RpdmF0ZSBoeXBlcnZpc29yIHN1cHBvcnQuCj4gCj4gU3RhcnQgc2Vjb25kYXJ5IGhhcnRzIHRo cm91Z2ggYW4gYXNzZW1ibHkgc3R1YiB0aGF0IGVuYWJsZXMgY2FjaGVzIGFuZAo+IHNldHMgc21w ZW5beF0gYmVmb3JlIGVudGVyaW5nIGNvbW1vbiB3YXJtLWJvb3QgY29kZS4gVGhpcyBsZXRzIHRo ZW0KPiBvYnNlcnZlIHNoYXJlZC1kYXRhIHdyaXRlcyBtYWRlIGJ5IHRoZSBib290IGhhcnQgZHVy aW5nIGNvbGQtYm9vdAo+IGluaXRpYWxpemF0aW9uLiBFbmFibGUgZ2xvYmFsIENDSS01NTAgc25v b3AgYW5kIERWTSByZXF1ZXN0cyBvbiB0aGUgYm9vdAo+IGhhcnQgYmVmb3JlIHdha2luZyB0aGUg c2Vjb25kYXJ5IGhhcnRzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFhpYW5iaW4gWmh1IDx4aWFuYmlu LnpodUBsaW51eC5zcGFjZW1pdC5jb20+Cj4gQ28tZGV2ZWxvcGVkLWJ5OiBUcm95IE1pdGNoZWxs IDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBUcm95 IE1pdGNoZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiAtLS0KPiAgIHBs YXRmb3JtL2dlbmVyaWMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gICBwbGF0 Zm9ybS9nZW5lcmljL2NvbmZpZ3MvZGVmY29uZmlnICAgICAgICAgfCAgIDEgKwo+ICAgcGxhdGZv cm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2NvbW1vbi5oIHwgICA0ICstCj4gICBwbGF0Zm9y bS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazMuaCAgICAgfCAxNDQgKysrKysrKysrKysrKysr Kwo+ICAgcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szX2FzbS5oIHwgIDE2ICsr Cj4gICBwbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szLmMgICAgICAgICAgICAgfCAyNjYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQv azNfYXNtLlMgICAgICAgICB8ICAzMyArKysrCj4gICBwbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0 L29iamVjdHMubWsgICAgICAgfCAgIDIgKwo+ICAgOCBmaWxlcyBjaGFuZ2VkLCA0NzAgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmlj L0tjb25maWcgYi9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcKPiBpbmRleCA5NTg2MTBkMy4uMDMw MmVkYTYgMTAwNjQ0Cj4gLS0tIGEvcGxhdGZvcm0vZ2VuZXJpYy9LY29uZmlnCj4gKysrIGIvcGxh dGZvcm0vZ2VuZXJpYy9LY29uZmlnCj4gQEAgLTEwOSw2ICsxMDksMTEgQEAgY29uZmlnIFBMQVRG T1JNX1NQQUNFTUlUX0sxCj4gICAJc2VsZWN0IFBMQVRGT1JNX1NQQUNFTUlUCj4gICAJZGVmYXVs dCBuCj4gICAKPiArY29uZmlnIFBMQVRGT1JNX1NQQUNFTUlUX0szCj4gKwlib29sICJTcGFjZW1p dCBLMyBzdXBwb3J0Igo+ICsJc2VsZWN0IFBMQVRGT1JNX1NQQUNFTUlUCj4gKwlkZWZhdWx0IG4K PiArCj4gICBjb25maWcgQ1BVX01JUFNfUDg3MDAKPiAgIAlib29sCj4gICAJZGVmYXVsdCBuCj4g ZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcgYi9wbGF0Zm9y bS9nZW5lcmljL2NvbmZpZ3MvZGVmY29uZmlnCj4gaW5kZXggMzQxZjZiMjUuLjU4ZDQwODk4IDEw MDY0NAo+IC0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcKPiArKysgYi9w bGF0Zm9ybS9nZW5lcmljL2NvbmZpZ3MvZGVmY29uZmlnCj4gQEAgLTE1LDYgKzE1LDcgQEAgQ09O RklHX1BMQVRGT1JNX1RIRUFEPXkKPiAgIENPTkZJR19QTEFURk9STV9NSVBTX1A4NzAwX0VZRVE3 SD15Cj4gICBDT05GSUdfUExBVEZPUk1fTUlQU19QODcwMF9CT1NUT049eQo+ICAgQ09ORklHX1BM QVRGT1JNX1NQQUNFTUlUX0sxPXkKPiArQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szPXkKPiAg IENPTkZJR19GRFRfQ0FDSEU9eQo+ICAgQ09ORklHX0ZEVF9DQUNIRV9BTkRFU19MTENBQ0hFPXkK PiAgIENPTkZJR19GRFRfQ0FDSEVfU0lGSVZFX0NDQUNIRT15Cj4gZGlmZiAtLWdpdCBhL3BsYXRm b3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9jb21tb24uaCBiL3BsYXRmb3JtL2dlbmVyaWMv aW5jbHVkZS9zcGFjZW1pdC9jb21tb24uaAo+IGluZGV4IDMxN2JiM2U5Li43YjUwY2M0ZiAxMDA2 NDQKPiAtLS0gYS9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvY29tbW9uLmgKPiAr KysgYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvY29tbW9uLmgKPiBAQCAtOSw3 ICs5LDkgQEAKPiAgICNpZm5kZWYgX19SSVNDVl9TUEFDRU1JVF9DT01NT05fSF9fCj4gICAjZGVm aW5lIF9fUklTQ1ZfU1BBQ0VNSVRfQ09NTU9OX0hfXwo+ICAgCj4gKyNpZm5kZWYgX19BU1NFTUJM WV9fCj4gICAjaW5jbHVkZSA8c2JpL3NiaV9iaXRvcHMuaD4KPiArI2VuZGlmCj4gICAKPiAgICNk ZWZpbmUgQ1NSX01TRVRVUAkJCQkweDdjMAo+ICAgI2RlZmluZSBDU1JfTUwyU0VUVVAJCQkJMHg3 ZjAKPiBAQCAtNzQsNyArNzYsNyBAQAo+ICAgI2RlZmluZSBQTVVfQVBfSURMRV9DT1JFX0lETEUJ CQlCSVQoMCkKPiAgIC8qIGJpdCAxOiBDT1JFX1BXUkRXTiAtIHBvd2VyIG9mZiBjb3JlIG9uIFdG SSAocmVxdWlyZXMgQ09SRV9JRExFIHNldCkgKi8KPiAgICNkZWZpbmUgUE1VX0FQX0lETEVfQ09S RV9QV1JEV04JCQlCSVQoMSkKPiAtLyogYml0IDI6IENvcmUgTDEgU1JBTSBQb3dlciBEb3duIC0g cmVzZXJ2ZWQvbm90IHVzZWQgaW4gSzEgYW5kIEszICovCj4gKy8qIGJpdCAyOiBDb3JlIEwxIFNS QU0gUG93ZXIgRG93biAtIHJlc2VydmVkIGluIEsxLCB1c2VkIGluIEszICovCj4gICAjZGVmaW5l IFBNVV9BUF9JRExFX0NPUkVfTDFfU1JBTV9QV1JEV04JCUJJVCgyKQo+ICAgLyogYml0IDM6IE1B U0tfR0lDX05JUlFfVE9fQ09SRSAtIG1hc2sgbklSUSBmcm9tIEdJQywgYXV0by1jbGVhcmVkIGJ5 IEhXIG9uIHBvd2VyLWRvd24gZW50cnkgKi8KPiAgICNkZWZpbmUgUE1VX0FQX0lETEVfTUFTS19H SUNfTklSUQkJQklUKDMpCj4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9z cGFjZW1pdC9rMy5oIGIvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szLmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5lNDg0ZDY3Ygo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazMuaAo+IEBA IC0wLDAgKzEsMTQ0IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhv cnM6Cj4gKyAqICAgWGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4K PiArICogICBUcm95IE1pdGNoZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4K PiArICovCj4gKwo+ICsjaWZuZGVmIF9fUklTQ1ZfU1BBQ0VNSVRfSzNfSF9fCj4gKyNkZWZpbmUg X19SSVNDVl9TUEFDRU1JVF9LM19IX18KPiArCj4gKyNpbmNsdWRlIDxzcGFjZW1pdC9jb21tb24u aD4KPiArCj4gKy8qIFBNQSBjb25maWd1cmF0aW9uIENTUiAqLwo+ICsjZGVmaW5lIENTUl9QTUFD RkcwCQkJCTB4N2RlCj4gKwo+ICsvKgo+ICsgKiBQTUFDRkcwIGF1ZGlvIGJ1ZmZlciByZWdpb24g ZmllbGQ6IGJpdHMgWzU1OjQ4XS4KPiArICogTWFzayBhbmQgYXR0cmlidXRlIGFyZSBhcHBsaWVk IGFmdGVyIGEgNDgtYml0IHNoaWZ0IGJlY2F1c2UKPiArICogY3NyYy9jc3JzIG9ubHkgYWNjZXB0 IGEgMTItYml0IGltbWVkaWF0ZSBvciBhIHJlZ2lzdGVyLgo+ICsgKi8KPiArI2RlZmluZSBQTUFD RkcwX0FVRElPX0JVRl9GSUVMRF9NQVNLCQkweGZmCj4gKyNkZWZpbmUgUE1BQ0ZHMF9BVURJT19C VUZfRklFTERfU0hJRlQJCTQ4Cj4gKyNkZWZpbmUgUE1BQ0ZHMF9BVURJT19CVUZfQVRUUl9DQUNI RUFCTEUJMHgyMAo+ICsKPiArLyoKPiArICogUE1BQ0ZHMCBYSVAgcmVnaW9uIGZpZWxkOiBiaXRz IFsyMzoxNl0uCj4gKyAqIExvd2VyIDEyIGJpdHMgYXJlIHplcm8gc28gR0FTIGVtaXRzIGEgc2lu Z2xlIGx1aSBpbnN0cnVjdGlvbi4KPiArICovCj4gKyNkZWZpbmUgUE1BQ0ZHMF9YSVBfRklFTERf Q0xFQVIJCQkweDAwZmYwMDAwVUwKPiArI2RlZmluZSBQTUFDRkcwX1hJUF9BVFRSX0lPCQkJMHgw MDIyMDAwMFVMCj4gKwo+ICsjZGVmaW5lIENTUl9NTDJISU5UCQkJCTB4N2Y3Cj4gKwo+ICsvKiBF bmFibGUgaW5zdHJ1Y3Rpb24gcHJlZmV0Y2ggaW4gTDIgY2FjaGUgb24gbWlzcyAqLwo+ICsjZGVm aW5lIE1MMlNFVFVQX0lQUkYJCQkJQklUKDE2KQo+ICsvKiBFbmFibGUgVExCIHByZWZldGNoIGlu IEwyIGNhY2hlICovCj4gKyNkZWZpbmUgTUwyU0VUVVBfVFBSRgkJCQlCSVQoMTgpCj4gKy8qIEVu YWJsZSB0b3Atb2YtY2xrIG9mIHRyYWNlICovCj4gKyNkZWZpbmUgTUwySElOVF9UUkFDRV9UT1Bf SUNHRU4JCQlCSVQoMjYpCj4gKwo+ICsvKgo+ICsgKiBDb21iaW5lZCBNU0VUVVAgZmxhZ3MgZW5h YmxlZCBhdCBib290IHRpbWU6IERFfElFfEJQRXxQRkV8TU1FfEVDQ0UuCj4gKyAqIEV4cHJlc3Nl ZCBhcyBhIHBsYWluIGhleCBjb25zdGFudCBzbyBpdCBjYW4gYmUgdXNlZCBpbiBhc3NlbWJseSAo QklUKCkKPiArICogZXhwYW5kcyB0byAxVUw8PG4gd2hpY2ggR0FTIGNhbm5vdCBldmFsdWF0ZSku Cj4gKyAqLwoKVXNlIF9CSVRVTC9VTEw/IFRoZXkgc2hvdWxkIHRha2UgY2FyZSBvZiBvbWl0dGlu ZyB0aGUgIlVMIiBpZiBfX0FTU0VNQkxFUl9fCgo+ICsjZGVmaW5lIE1TRVRVUF9CT09UX0ZMQUdT CQkJMHgxMDA3Mwo+ICsKPiArLyogQTEwMCBjb3JlczogaGFydCA4LTExIGJlbG9uZyB0byBDMiBj bHVzdGVyLCBoYXJ0IDEyLTE1IHRvIEMzIGNsdXN0ZXIgKi8KPiArI2RlZmluZSBQTVVfQ0FQX0NP UkU4X1dBS0VVUAkJCShQTVVfQVBfQkFTRSArIDB4MzYwKQo+ICsjZGVmaW5lIFBNVV9DQVBfQ09S RTlfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgzNjQpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JF MTBfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgzNjgpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JF MTFfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgzNmMpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JF MTJfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgyMmMpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JF MTNfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgyMzApCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JF MTRfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgyMzQpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JF MTVfV0FLRVVQCQkJKFBNVV9BUF9CQVNFICsgMHgyMzgpCj4gKwo+ICsvKiBBMTAwIHBlci1jb3Jl IGlkbGUgY29uZmlnIHJlZ2lzdGVycyAoaGFydHMgOC0xNSkgKi8KPiArI2RlZmluZSBQTVVfQ0FQ X0NPUkU4X0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgzNDApCj4gKyNkZWZpbmUgUE1VX0NB UF9DT1JFOV9JRExFX0NGRwkJCShQTVVfQVBfQkFTRSArIDB4MzQ0KQo+ICsjZGVmaW5lIFBNVV9D QVBfQ09SRTEwX0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgzNDgpCj4gKyNkZWZpbmUgUE1V X0NBUF9DT1JFMTFfSURMRV9DRkcJCQkoUE1VX0FQX0JBU0UgKyAweDM0YykKPiArI2RlZmluZSBQ TVVfQ0FQX0NPUkUxMl9JRExFX0NGRwkJCShQTVVfQVBfQkFTRSArIDB4MjBjKQo+ICsjZGVmaW5l IFBNVV9DQVBfQ09SRTEzX0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMTApCj4gKyNkZWZp bmUgUE1VX0NBUF9DT1JFMTRfSURMRV9DRkcJCQkoUE1VX0FQX0JBU0UgKyAweDIxNCkKPiArI2Rl ZmluZSBQTVVfQ0FQX0NPUkUxNV9JRExFX0NGRwkJCShQTVVfQVBfQkFTRSArIDB4MjE4KQo+ICsK PiArLyogQ1ggQ0FQTVAgY2x1c3RlciBpZGxlIGNvbmZpZyByZWdpc3RlcnMgKi8KPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcwCQkoUE1VX0FQX0JBU0UgKyAweDEyMCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxCQkoUE1VX0FQX0JBU0UgKyAweDBlNCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcyCQkoUE1VX0FQX0JBU0UgKyAweDE1MCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkczCQkoUE1VX0FQX0JBU0UgKyAweDE1NCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc0CQkoUE1VX0FQX0JBU0UgKyAweDMxNCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc1CQkoUE1VX0FQX0JBU0UgKyAweDMxOCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc2CQkoUE1VX0FQX0JBU0UgKyAweDMxYykKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc3CQkoUE1VX0FQX0JBU0UgKyAweDMyMCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc4CQkoUE1VX0FQX0JBU0UgKyAweDM1MCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc5CQkoUE1VX0FQX0JBU0UgKyAweDM1NCkKPiArI2RlZmlu ZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMAkJKFBNVV9BUF9CQVNFICsgMHgzNTgpCj4gKyNkZWZp bmUgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMTEJCShQTVVfQVBfQkFTRSArIDB4MzVjKQo+ICsjZGVm aW5lIFBNVV9DWF9DQVBNUF9JRExFX0NGRzEyCQkoUE1VX0FQX0JBU0UgKyAweDIxYykKPiArI2Rl ZmluZSBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMwkJKFBNVV9BUF9CQVNFICsgMHgyMjApCj4gKyNk ZWZpbmUgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMTQJCShQTVVfQVBfQkFTRSArIDB4MjI0KQo+ICsj ZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExFX0NGRzE1CQkoUE1VX0FQX0JBU0UgKyAweDIyOCkKPiAr Cj4gKyNkZWZpbmUgUE1VX0FQX0lETEVfUFdSRE9XTl9LM19NQVNLCQkoUE1VX0FQX0lETEVfQ09S RV9JRExFIHwJCVwKPiArCQkJCQkJIFBNVV9BUF9JRExFX0NPUkVfUFdSRFdOIHwJCVwKPiArCQkJ CQkJIFBNVV9BUF9JRExFX0NPUkVfTDFfU1JBTV9QV1JEV04gfAlcCj4gKwkJCQkJCSBQTVVfQVBf SURMRV9NQVNLX0dJQ19OSVJRIHwJCVwKPiArCQkJCQkJIFBNVV9BUF9JRExFX01BU0tfR0lDX05G SVEpCj4gKwo+ICsvKgo+ICsgKiBQTVUgQ1ggcGVyLWNsdXN0ZXIgaWRsZSBjb250cm9sIGJpdHMg KFBNVV9DWF9DQVBNUG5fSURMRV9DRkcpLgo+ICsgKi8KPiArLyogYml0IDA6IE1QIElkbGUgLSBn YXRlIGNsdXN0ZXIgY2xvY2tzIGV4dGVybmFsbHkgb24gV0ZJICovCj4gKyNkZWZpbmUgUE1VX0NY X0lETEVfTVBfSURMRQkJCUJJVCgwKQo+ICsvKiBiaXQgMTogTVAgUG93ZXIgRG93biAtIHBvd2Vy IG9mZiBjbHVzdGVyIGxvZ2ljIHdoZW4gaWRsZSAqLwo+ICsjZGVmaW5lIFBNVV9DWF9JRExFX01Q X1BXUkRXTgkJCUJJVCgxKQo+ICsvKiBiaXQgMjogTDIgQ2FjaGUgU1JBTSBQb3dlciBEb3duICov Cj4gKyNkZWZpbmUgUE1VX0NYX0lETEVfTDJfU1JBTV9QV1JEV04JCUJJVCgyKQo+ICsvKiBiaXQg MzogU0NVIFNSQU0gUG93ZXIgRG93biAtIG5vdCB1c2VkLCBTQ1UgU1JBTSBkb2VzIG5vdCBzdXBw b3J0IHJldGVudGlvbiAqLwo+ICsjZGVmaW5lIFBNVV9DWF9JRExFX01QX1NDVV9TUkFNX1BXUkRX TgkJQklUKDMpCj4gKy8qIGJpdCA3OiBBQ05BQ1RNIEhhcmR3YXJlIENvbnRyb2wgLSBIVyBjb250 cm9scyBBQ05BQ1RNIHBvcnQgb24gTVAgbG93IHBvd2VyIGVudHJ5ICovCj4gKyNkZWZpbmUgUE1V X0NYX0lETEVfQUNOQUNUTV9IV19DVFJMCQlCSVQoNykKPiArCj4gKyNkZWZpbmUgQ0xVU1RFUl9Q V1JfRE9XTl9WQUxVRQkJCShQTVVfQ1hfSURMRV9NUF9JRExFIHwJCVwKPiArCQkJCQkJIFBNVV9D WF9JRExFX01QX1BXUkRXTiB8CVwKPiArCQkJCQkJIFBNVV9DWF9JRExFX0wyX1NSQU1fUFdSRFdO IHwJXAo+ICsJCQkJCQkgUE1VX0NYX0lETEVfTVBfU0NVX1NSQU1fUFdSRFdOIHwgXAo+ICsJCQkJ CQkgUE1VX0NYX0lETEVfQUNOQUNUTV9IV19DVFJMKQo+ICsKPiArLyogYm9vdCBlbnRyeSBmb3Ig QTEwMCBjbHVzdGVycyAqLwo+ICsjZGVmaW5lIEMyX1JWQkFERFJfTE9fQUREUgkJCSgweGQ0Mjgy YzAwICsgMHgzZTgpCj4gKyNkZWZpbmUgQzJfUlZCQUREUl9ISV9BRERSCQkJKDB4ZDQyODJjMDAg KyAweDNlYykKPiArI2RlZmluZSBDM19SVkJBRERSX0xPX0FERFIJCQkoMHhkNDI4MmMwMCArIDB4 MjYwKQo+ICsjZGVmaW5lIEMzX1JWQkFERFJfSElfQUREUgkJCSgweGQ0MjgyYzAwICsgMHgyNjQp Cj4gKwo+ICsvKgo+ICsgKiBQTVUgQVAgY29yZSBXRkkgc3RhdHVzIHJlZ2lzdGVycy4gIEVhY2gg Yml0IGluZGljYXRlcyB0aGUgY29ycmVzcG9uZGluZwo+ICsgKiBjb3JlIGhhcyBlbnRlcmVkIFdG SSBpZGxlIHN0YXRlLgo+ICsgKgo+ICsgKiBYMTAwIGhhcnRzICgwLTcpOiBQTVVfQVBfWDEwMF9J RExFX1NUQVRVUwo+ICsgKiAgIGNsdXN0ZXIgMCAoaGFydHMgMC0zKTogYml0cyA0LCA3LCAxMCwg MTMKPiArICogICBjbHVzdGVyIDEgKGhhcnRzIDQtNyk6IGJpdHMgMjAsIDIzLCAyNiwgMjkKPiAr ICogQTEwMCBoYXJ0cyAoOC0xNSk6IFBNVV9BUF9BMTAwX0lETEVfU1RBVFVTCj4gKyAqICAgY2x1 c3RlciAyIChoYXJ0cyA4LTExKTogIGJpdHMgNCwgNywgMTAsIDEzCj4gKyAqICAgY2x1c3RlciAz IChoYXJ0cyAxMi0xNSk6IGJpdHMgMjAsIDIzLCAyNiwgMjkKPiArICovCj4gKyNkZWZpbmUgUE1V X0FQX1gxMDBfSURMRV9TVEFUVVMJCQkweGQ0MjgyODkwCj4gKyNkZWZpbmUgUE1VX0FQX0ExMDBf SURMRV9TVEFUVVMJCQkweGQ0MjgyODgwCj4gKwo+ICsjZGVmaW5lIFBMQVRGT1JNX0ExMDBfRklS U1RfSUQJCQk4Cj4gKyNkZWZpbmUgUExBVEZPUk1fQTEwMF9MQVNUX0lECQkJMTUKPiArCj4gKyNk ZWZpbmUgUExBVF9DQ0lfSzNfQUlETUFfSUZBQ0VfSVgJCTAKPiArI2RlZmluZSBQTEFUX0NDSV9L M19DTFVTVEVSMF9JRkFDRV9JWAkJMQo+ICsjZGVmaW5lIFBMQVRfQ0NJX0szX0NMVVNURVIxX0lG QUNFX0lYCQkyCj4gKyNkZWZpbmUgUExBVF9DQ0lfSzNfQ0xVU1RFUjJfMF9JRkFDRV9JWAkzCj4g KyNkZWZpbmUgUExBVF9DQ0lfSzNfQ0xVU1RFUjJfMV9JRkFDRV9JWAk0Cj4gKyNkZWZpbmUgUExB VF9DQ0lfSzNfQ0xVU1RFUjNfMF9JRkFDRV9JWAk1Cj4gKyNkZWZpbmUgUExBVF9DQ0lfSzNfQ0xV U1RFUjNfMV9JRkFDRV9JWAk2Cj4gKwo+ICsjZW5kaWYgLyogX19SSVNDVl9TUEFDRU1JVF9LM19I X18gKi8KPiBkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2sz X2FzbS5oIGIvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szX2FzbS5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uNzBjMDA0NzgKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szX2FzbS5oCj4g QEAgLTAsMCArMSwxNiBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNiBTcGFjZW1pVAo+ICsgKiBBdXRo b3JzOgo+ICsgKiAgIFhpYW5iaW4gWmh1IDx4aWFuYmluLnpodUBsaW51eC5zcGFjZW1pdC5jb20+ Cj4gKyAqICAgVHJveSBNaXRjaGVsbCA8dHJveS5taXRjaGVsbEBsaW51eC5zcGFjZW1pdC5jb20+ Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1JJU0NWX1NQQUNFTUlUX0szX0FTTV9IX18KPiArI2Rl ZmluZSBfX1JJU0NWX1NQQUNFTUlUX0szX0FTTV9IX18KPiArCj4gKyNpZm5kZWYgX19BU1NFTUJM WV9fCj4gK3ZvaWQgX3NwYWNlbWl0X2szX3dhcm1fc3RhcnQodm9pZCk7Cj4gKyNlbmRpZgo+ICsK PiArI2VuZGlmIC8qIF9fUklTQ1ZfU1BBQ0VNSVRfSzNfQVNNX0hfXyAqLwo+IGRpZmYgLS1naXQg YS9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szLmMgYi9wbGF0Zm9ybS9nZW5lcmljL3NwYWNl bWl0L2szLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4xZThkOGM5 Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szLmMK PiBAQCAtMCwwICsxLDI2NiBAQAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNiBTcGFjZW1pVAo+ICsg KiBBdXRob3JzOgo+ICsgKiAgIFhpYW5iaW4gWmh1IDx4aWFuYmluLnpodUBsaW51eC5zcGFjZW1p dC5jb20+Cj4gKyAqICAgVHJveSBNaXRjaGVsbCA8dHJveS5taXRjaGVsbEBsaW51eC5zcGFjZW1p dC5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHBsYXRmb3JtX292ZXJyaWRlLmg+Cj4gKyNp bmNsdWRlIDxzYmkvcmlzY3ZfYXNtLmg+Cj4gKyNpbmNsdWRlIDxzYmkvcmlzY3ZfaW8uaD4KPiAr I2luY2x1ZGUgPHNiaS9zYmlfY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8c2JpL3NiaV90aW1lci5o Pgo+ICsjaW5jbHVkZSA8c3BhY2VtaXQvazMuaD4KPiArI2luY2x1ZGUgPHNwYWNlbWl0L2szX2Fz bS5oPgo+ICsjaW5jbHVkZSA8c3BhY2VtaXQvc3BhY2VtaXQuaD4KPiArCj4gKyNkZWZpbmUgUExB VEZPUk1fTUFYX0NQVVMJCQkxNgo+ICsKPiArLyoKPiArICogTWF4aW11bSB0aW1lIHRvIHdhaXQg Zm9yIGVhY2ggc2Vjb25kYXJ5IGhhcnQgdG8gZW50ZXIgV0ZJIGFmdGVyIGl0IGlzCj4gKyAqIHdv a2VuIGR1cmluZyBjb2xkIGJvb3QuIFVzZSB0aGUgcGxhdGZvcm0gdGltZXIgc28gdGhlIHRpbWVv dXQgZG9lcyBub3QKPiArICogZGVwZW5kIG9uIENQVSBmcmVxdWVuY3kgb3IgTU1JTyBsYXRlbmN5 Lgo+ICsgKi8KPiArI2RlZmluZSBIQVJUX1dGSV9USU1FT1VUX01TCQkJMTAwCj4gKwo+ICtzdGF0 aWMgY29uc3QgaW50IGNjaV9tYXBbXSA9IHsKPiArCVBMQVRfQ0NJX0szX0FJRE1BX0lGQUNFX0lY LAo+ICsJUExBVF9DQ0lfSzNfQ0xVU1RFUjBfSUZBQ0VfSVgsCj4gKwlQTEFUX0NDSV9LM19DTFVT VEVSMV9JRkFDRV9JWCwKPiArCVBMQVRfQ0NJX0szX0NMVVNURVIyXzBfSUZBQ0VfSVgsCj4gKwlQ TEFUX0NDSV9LM19DTFVTVEVSMl8xX0lGQUNFX0lYLAo+ICsJUExBVF9DQ0lfSzNfQ0xVU1RFUjNf MF9JRkFDRV9JWCwKPiArCVBMQVRfQ0NJX0szX0NMVVNURVIzXzFfSUZBQ0VfSVgsCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBjeF9jYXBtcF9pZGxlX2NmZ1tdID0gewo+ ICsJUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMCwgIFBNVV9DWF9DQVBNUF9JRExFX0NGRzEsCj4gKwlQ TVVfQ1hfQ0FQTVBfSURMRV9DRkcyLCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHMywKPiArCVBNVV9D WF9DQVBNUF9JRExFX0NGRzQsICBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc1LAo+ICsJUE1VX0NYX0NB UE1QX0lETEVfQ0ZHNiwgIFBNVV9DWF9DQVBNUF9JRExFX0NGRzcsCj4gKwlQTVVfQ1hfQ0FQTVBf SURMRV9DRkc4LCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHOSwKPiArCVBNVV9DWF9DQVBNUF9JRExF X0NGRzEwLCBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMSwKPiArCVBNVV9DWF9DQVBNUF9JRExFX0NG RzEyLCBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxMywKPiArCVBNVV9DWF9DQVBNUF9JRExFX0NGRzE0 LCBQTVVfQ1hfQ0FQTVBfSURMRV9DRkcxNSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1bnNp Z25lZCBsb25nIGNvcmVfcHdyZG93bl9yZWdbXSA9IHsKPiArCVBNVV9BUF9DT1JFMF9JRExFX0NG RywgICBQTVVfQVBfQ09SRTFfSURMRV9DRkcsCj4gKwlQTVVfQVBfQ09SRTJfSURMRV9DRkcsICAg UE1VX0FQX0NPUkUzX0lETEVfQ0ZHLAo+ICsJUE1VX0FQX0NPUkU0X0lETEVfQ0ZHLCAgIFBNVV9B UF9DT1JFNV9JRExFX0NGRywKPiArCVBNVV9BUF9DT1JFNl9JRExFX0NGRywgICBQTVVfQVBfQ09S RTdfSURMRV9DRkcsCj4gKwlQTVVfQ0FQX0NPUkU4X0lETEVfQ0ZHLCAgUE1VX0NBUF9DT1JFOV9J RExFX0NGRywKPiArCVBNVV9DQVBfQ09SRTEwX0lETEVfQ0ZHLCBQTVVfQ0FQX0NPUkUxMV9JRExF X0NGRywKPiArCVBNVV9DQVBfQ09SRTEyX0lETEVfQ0ZHLCBQTVVfQ0FQX0NPUkUxM19JRExFX0NG RywKPiArCVBNVV9DQVBfQ09SRTE0X0lETEVfQ0ZHLCBQTVVfQ0FQX0NPUkUxNV9JRExFX0NGRywK PiArfTsKPiArCj4gKy8qIFdha2V1cCByZWdpc3RlcnMgaW5kZXhlZCBieSBoYXJ0IElEICgwLTE1 KS4gKi8KPiArc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgY29yZV93YWtldXBfcmVnW10gPSB7 Cj4gKwlQTVVfQVBfQ09SRTBfV0FLRVVQLCAgICAgUE1VX0FQX0NPUkUxX1dBS0VVUCwKPiArCVBN VV9BUF9DT1JFMl9XQUtFVVAsICAgICBQTVVfQVBfQ09SRTNfV0FLRVVQLAo+ICsJUE1VX0FQX0NP UkU0X1dBS0VVUCwgICAgIFBNVV9BUF9DT1JFNV9XQUtFVVAsCj4gKwlQTVVfQVBfQ09SRTZfV0FL RVVQLCAgICAgUE1VX0FQX0NPUkU3X1dBS0VVUCwKPiArCVBNVV9DQVBfQ09SRThfV0FLRVVQLCAg ICBQTVVfQ0FQX0NPUkU5X1dBS0VVUCwKPiArCVBNVV9DQVBfQ09SRTEwX1dBS0VVUCwgICBQTVVf Q0FQX0NPUkUxMV9XQUtFVVAsCj4gKwlQTVVfQ0FQX0NPUkUxMl9XQUtFVVAsICAgUE1VX0NBUF9D T1JFMTNfV0FLRVVQLAo+ICsJUE1VX0NBUF9DT1JFMTRfV0FLRVVQLCAgIFBNVV9DQVBfQ09SRTE1 X1dBS0VVUCwKPiArfTsKPiArCj4gKy8qCj4gKyAqIFdGSSBpZGxlIHN0YXR1cyByZWdpc3RlcnMg YW5kIHBlci1oYXJ0IG1hc2sgYml0cy4gIEVhY2ggaGFydCBoYXMgYQo+ICsgKiBkZWRpY2F0ZWQg Yml0IGluIG9uZSBvZiB0d28gc3RhdHVzIHJlZ2lzdGVycyAoWDEwMCBoYXJ0cyAwLTcgaW4KPiAr ICogUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsIEExMDAgaGFydHMgOC0xNSBpbiBQTVVfQVBfQTEw MF9JRExFX1NUQVRVUykuCj4gKyAqIEluZGV4IDAgaXMgdW51c2VkIOKAlCB0aGUgYm9vdCBoYXJ0 IG5ldmVyIHdhaXRzIG9uIGl0c2VsZi4KPiArICovCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBs b25nIHdmaV9zdGF0dXNfcmVnW10gPSB7Cj4gKwkwLAoKV2h5IG5vdCBqdXN0IFBNVV9BUF9YMTAw X0lETEVfU1RBVFVTPyBZb3UgZG9uJ3QgbmVlZCB0byB1c2UgaXQsIGJ1dCBmb3IKdGhlIHNha2Ug b2YgZmFpdGhmdWxseSBkZXNjcmliaW5nIHRoZSBIVz8KCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NU QVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NUQVRV UywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NUQVRVUywg UE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NUQVRVUywKPiAr CVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArCVBN VV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArCVBNVV9B UF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArCVBNVV9BUF9B MTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHdmaV9zdGF0dXNfbWFza1tdID0gewo+ICsJMCwKClNh bWUgaXNzdWUgYXMgYWJvdmUuIEp1c3QgZG8gQklUKDQpCgo+ICsJQklUKDcpLCAgQklUKDEwKSwg QklUKDEzKSwgQklUKDIwKSwKPiArCUJJVCgyMyksIEJJVCgyNiksIEJJVCgyOSksCj4gKwlCSVQo NCksICBCSVQoNyksICBCSVQoMTApLCBCSVQoMTMpLAo+ICsJQklUKDIwKSwgQklUKDIzKSwgQklU KDI2KSwgQklUKDI5KSwKPiArfTsKPiArCj4gKy8qCj4gKyAqIENsZWFyIHRoZSBwb3dlci1kb3du IGJpdHMgZm9yIGJvdGggdGhlIGNvcmUgYW5kIGl0cyBjbHVzdGVyIHNvIHRoYXQKPiArICogdGhl IGhhcnQgZG9lcyBub3QgdHJpZ2dlciBhIHBvd2VyLWRvd24gc2VxdWVuY2Ugb24gV0ZJLiAgQ2Fs bGVkIGR1cmluZwo+ICsgKiBjb2xkIGJvb3QgdG8gZW5zdXJlIGNvcmVzIGFuZCBjbHVzdGVycyBz dGF5IHBvd2VyZWQgd2hpbGUgU0JJIGluaXRpYWxpemVzLgo+ICsgKi8KPiArc3RhdGljIHZvaWQg c3BhY2VtaXRfZGlzYWJsZV9wd3Jkb3duX2NvcmUodTMyIGhhcnRpZCkKPiArewo+ICsJdW5zaWdu ZWQgaW50IHZhbHVlOwo+ICsKPiArCWlmIChoYXJ0aWQgPj0gYXJyYXlfc2l6ZShjeF9jYXBtcF9p ZGxlX2NmZykpCj4gKwkJcmV0dXJuOwoKVGhpcyBjb25kaXRpb24gd2lsbCBuZXZlciBiZSB0cnVl LgoKPiArCj4gKwl2YWx1ZSA9IHJlYWRsKCh2b2lkICopKHVuc2lnbmVkIGxvbmcpY3hfY2FwbXBf aWRsZV9jZmdbaGFydGlkXSk7Cj4gKwl2YWx1ZSAmPSB+Q0xVU1RFUl9QV1JfRE9XTl9WQUxVRTsK PiArCXdyaXRlbCh2YWx1ZSwgKHZvaWQgKikodW5zaWduZWQgbG9uZyljeF9jYXBtcF9pZGxlX2Nm Z1toYXJ0aWRdKTsKPiArCj4gKwl2YWx1ZSA9IHJlYWRsKCh2b2lkICopKHVuc2lnbmVkIGxvbmcp Y29yZV9wd3Jkb3duX3JlZ1toYXJ0aWRdKTsKPiArCXZhbHVlICY9IH5QTVVfQVBfSURMRV9QV1JE T1dOX0szX01BU0s7Cj4gKwl3cml0ZWwodmFsdWUsICh2b2lkICopKHVuc2lnbmVkIGxvbmcpY29y ZV9wd3Jkb3duX3JlZ1toYXJ0aWRdKTsKPiArfQo+ICsKPiArLyoKPiArICogUGVyLWhhcnQgaGFy ZHdhcmUgaW5pdGlhbGl6YXRpb24sIG1pcnJvcmluZyB3aGF0IHdhcm0tYm9vdCBoYXJ0cyBwcmV2 aW91c2x5Cj4gKyAqIGRpZCBpbiBhc3NlbWJseSBiZWZvcmUgZW50ZXJpbmcgQyBjb2RlLiAgQ2Fs bGVkIG9uIGV2ZXJ5IGhhcnQgb24gYm90aCBjb2xkCj4gKyAqIGFuZCB3YXJtIGJvb3QgcGF0aHMu Cj4gKyAqCj4gKyAqIDEuIFBNQTogc2V0IGF1ZGlvIGJ1ZmZlciAoYml0cyBbNTU6NDhdKSBjYWNo ZWFibGUgYW5kIFhJUAo+ICsgKiAgICByZWdpb24gKGJpdHMgWzIzOjE2XSkgYXMgSU8gYmVmb3Jl IGVuYWJsaW5nIGRjYWNoZS4KPiArICogMi4gRW5hYmxlIGRjYWNoZS9pY2FjaGUgYW5kIG90aGVy IENQVSBmZWF0dXJlcyAoTVNFVFVQKS4KPiArICogMy4gU2V0IHNtcGVuW3hdIGluIE1MMlNFVFVQ IHRvIGVuYWJsZSBMMSBELWNhY2hlIHNub29waW5nIGFuZCBwcmVmZXRjaC4KCkknbSBjb25mdXNl ZCBieSB0aGlzLiBBcmUgd2UgZG9pbmcgc29tZSBkdXBsaWNhdGUgd29yaz8gSGFzbid0Cl9zcGFj ZW1pdF9rM193YXJtX3N0YXJ0IGFscmVhZHkgZG9uZSB0aG9zZT8gV2hhdCdzIHRoZSBhdWRpbyBi dWZmZXIgdXNlZApmb3I/IEl0IHNheXMgc2V0IGF1ZGlvIGJ1ZmZlciBhdHRyaWJ1dGVzIGJlZm9y ZSBlbmFibGluZyBkY2FjaGUsIGJ1dAppc24ndCBkY2FjaGUgYWxyZWFkeSBlbmFibGVkIGJ5IHRo ZSBhc20gY29kZT8KCgo+ICsgKiA0LiBFbmFibGUgSCBleHRlbnNpb24gaW4gTUlTQSAoWDEwMCBv bmx5OyBub3QgaW1wbGVtZW50ZWQgb24gQTEwMCkuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBzcGFj ZW1pdF9rM19oYXJ0X2luaXQodTMyIGhhcnRpZCkKPiArewo+ICsJY3NyX2NsZWFyKENTUl9QTUFD RkcwLAo+ICsJCSAgKHVuc2lnbmVkIGxvbmcpUE1BQ0ZHMF9BVURJT19CVUZfRklFTERfTUFTSwo+ ICsJCSAgPDwgUE1BQ0ZHMF9BVURJT19CVUZfRklFTERfU0hJRlQpOwo+ICsJY3NyX3NldChDU1Jf UE1BQ0ZHMCwKPiArCQkodW5zaWduZWQgbG9uZylQTUFDRkcwX0FVRElPX0JVRl9BVFRSX0NBQ0hF QUJMRQo+ICsJCTw8IFBNQUNGRzBfQVVESU9fQlVGX0ZJRUxEX1NISUZUKTsKPiArCWNzcl9jbGVh cihDU1JfUE1BQ0ZHMCwgUE1BQ0ZHMF9YSVBfRklFTERfQ0xFQVIpOwo+ICsJY3NyX3NldChDU1Jf UE1BQ0ZHMCwgUE1BQ0ZHMF9YSVBfQVRUUl9JTyk7Cj4gKwlhc20gdm9sYXRpbGUoInNmZW5jZS52 bWEiIDogOiA6ICJtZW1vcnkiKTsKCkJldHRlciB1c2UgX19zYmlfc2ZlbmNlX3ZtYV9hbGwoKT8g QWxzbyBpcyBfX3NiaV9oZmVuY2VfZ3ZtYV9hbGwoKSBuZWVkZWQKZm9yIFgxMDA/Cgo+ICsKPiAr CWNzcl9zZXQoQ1NSX01TRVRVUCwgTVNFVFVQX0RFIHwgTVNFVFVQX0lFIHwgTVNFVFVQX0JQRSB8 Cj4gKwkJTVNFVFVQX1BGRSB8IE1TRVRVUF9NTUUgfCBNU0VUVVBfRUNDRSk7Cj4gKwljc3Jfc2V0 KENTUl9NTDJTRVRVUCwgMSA8PCAoaGFydGlkICUgUExBVEZPUk1fTUFYX0NQVVNfUEVSX0NMVVNU RVIpKTsKPiArCWNzcl9zZXQoQ1NSX01MMlNFVFVQLCBNTDJTRVRVUF9JUFJGIHwgTUwyU0VUVVBf VFBSRik7Cj4gKwljc3Jfc2V0KENTUl9NTDJISU5ULCBNTDJISU5UX1RSQUNFX1RPUF9JQ0dFTik7 Cj4gKwo+ICsJaWYgKGhhcnRpZCA8IFBMQVRGT1JNX0ExMDBfRklSU1RfSUQpIHsKPiArCQl1bnNp Z25lZCBsb25nIG1pc2EgPSBjc3JfcmVhZChDU1JfTUlTQSk7Cj4gKwo+ICsJCS8qCj4gKwkJICog TUlTQS5IIGlzIHdyaXRhYmxlIG9uIEszIFgxMDAgY29yZXM6IHRoZSBIIGV4dGVuc2lvbiBpcwo+ ICsJCSAqIGltcGxlbWVudGVkIGJ1dCBkaXNhYmxlZCBvdXQgb2YgcmVzZXQsIGFuZCBNLW1vZGUg bXVzdAo+ICsJCSAqIGV4cGxpY2l0bHkgc2V0IHRoaXMgYml0IHRvIGVuYWJsZSBoeXBlcnZpc29y IHN1cHBvcnQuCj4gKwkJICogQTEwMCBjb3JlcyBkbyBub3QgaW1wbGVtZW50IEgsIHNvIHRoaXMg d3JpdGUgaXMgWDEwMC1vbmx5Lgo+ICsJCSAqLwo+ICsJCW1pc2EgfD0gMVVMIDw8ICgnSCcgLSAn QScpOwo+ICsJCWNzcl93cml0ZShDU1JfTUlTQSwgbWlzYSk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgc3BhY2VtaXRfazNfbmFzY2VudF9pbml0KHZvaWQpCj4gK3sKPiArCXNwYWNlbWl0 X2szX2hhcnRfaW5pdChjdXJyZW50X2hhcnRpZCgpKTsKPiArCj4gKwlyZXR1cm4gZ2VuZXJpY19u YXNjZW50X2luaXQoKTsKPiArfQo+ICsKPiArLyoKPiArICogT25lLXRpbWUgcGxhdGZvcm0gc2V0 dXAgcnVuIGJ5IHRoZSBib290IGhhcnQgZHVyaW5nIGNvbGQgYm9vdDoKPiArICogc2V0IHdhcm0t Ym9vdCBlbnRyeSBmb3IgYWxsIGZvdXIgY2x1c3RlcnMsIGVuYWJsZSBDQ0kgc25vb3BpbmcsCj4g KyAqIGFuZCB3YWtlIGFsbCBub24tYm9vdCBoYXJ0cyAoMS0xNSkgc28gdGhleSBlbnRlciBXRkkg YW5kIHdhaXQKPiArICogZm9yIHRoZSBrZXJuZWwgdG8gYnJpbmcgdGhlbSBvbmxpbmUuCj4gKyAq Lwo+ICtzdGF0aWMgdm9pZCBzcGFjZW1pdF9rM19wcmVfaW5pdCh2b2lkKQo+ICt7Cj4gKwl1bnNp Z25lZCBsb25nIGVudHJ5ID0gKHVuc2lnbmVkIGxvbmcpJl9zcGFjZW1pdF9rM193YXJtX3N0YXJ0 Owo+ICsJaW50IGk7Cj4gKwo+ICsJd3JpdGVsKCh1MzIpZW50cnksICh2b2lkICopKHVuc2lnbmVk IGxvbmcpQzBfUlZCQUREUl9MT19BRERSKTsKPiArCXdyaXRlbCgodTMyKShlbnRyeSA+PiAzMiks ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzBfUlZCQUREUl9ISV9BRERSKTsKPiArCj4gKwl3cml0 ZWwoKHUzMillbnRyeSwgKHZvaWQgKikodW5zaWduZWQgbG9uZylDMV9SVkJBRERSX0xPX0FERFIp Owo+ICsJd3JpdGVsKCh1MzIpKGVudHJ5ID4+IDMyKSwgKHZvaWQgKikodW5zaWduZWQgbG9uZylD MV9SVkJBRERSX0hJX0FERFIpOwo+ICsKPiArCXdyaXRlbCgodTMyKWVudHJ5LCAodm9pZCAqKSh1 bnNpZ25lZCBsb25nKUMyX1JWQkFERFJfTE9fQUREUik7Cj4gKwl3cml0ZWwoKHUzMikoZW50cnkg Pj4gMzIpLCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKUMyX1JWQkFERFJfSElfQUREUik7Cj4gKwo+ ICsJd3JpdGVsKCh1MzIpZW50cnksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzNfUlZCQUREUl9M T19BRERSKTsKPiArCXdyaXRlbCgodTMyKShlbnRyeSA+PiAzMiksICh2b2lkICopKHVuc2lnbmVk IGxvbmcpQzNfUlZCQUREUl9ISV9BRERSKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgYXJyYXlf c2l6ZShjY2lfbWFwKTsgaSsrKQo+ICsJCWNjaV9lbmFibGVfc25vb3BfZHZtX3JlcXMoY2NpX21h cCwgaSk7Cj4gKwo+ICsJLyogQ2xlYXIgY29yZSBhbmQgY2x1c3RlciBwb3dlci1kb3duIHZvdGVz IHNvIFdGSSBkb2VzIG5vdCB0cmlnZ2VyIHBvd2VyLWRvd24uICovCj4gKwlmb3IgKGkgPSAwOyBp IDwgUExBVEZPUk1fTUFYX0NQVVM7IGkrKykKPiArCQlzcGFjZW1pdF9kaXNhYmxlX3B3cmRvd25f Y29yZShpKTsKPiArCj4gKwkvKgo+ICsJICogV2FrZSB1cCBhbGwgbm9uLWJvb3QgaGFydHMgKDEt MTUpLiAgRWFjaCBoYXJ0IE4gaGFzIGEgZGVkaWNhdGVkIFBNVQo+ICsJICogd2FrZXVwIHJlZ2lz dGVyIChQTVVfQVAvQ0FQX0NPUkVuX1dBS0VVUCkuICBXcml0aW5nIEJJVChOKSB0byBoYXJ0IE4n cwo+ICsJICogcmVnaXN0ZXIgdHJpZ2dlcnMgdGhlIHdha2V1cCBwdWxzZSBmb3IgdGhhdCBoYXJ0 LiAgVGhpcyBpcyBjb25maXJtZWQgYnkKPiArCSAqIGhhcmR3YXJlOiB0aGUgcmVnaXN0ZXIgYWRk cmVzcyBzZWxlY3RzIHRoZSB0YXJnZXQgaGFydCwgYW5kIHRoZSB2YWx1ZQo+ICsJICogd3JpdHRl biBtdXN0IGhhdmUgYml0IE4gc2V0IChub3QgYSBmaXhlZCB0cmlnZ2VyIGJpdCkuCj4gKwkgKiBT ZWUgSzMgVXNlciBNYW51YWwsICIxNiBQZXJpcGhlcmFscyAvIFBvd2VyIE1hbmFnZW1lbnQgLyBX YWtldXAgQ29yZSIuCj4gKwkgKi8KPiArCWZvciAoaSA9IDE7IGkgPCBhcnJheV9zaXplKGNvcmVf d2FrZXVwX3JlZyk7IGkrKykKPiArCQl3cml0ZWwoMSA8PCBpLCAodm9pZCAqKSh1bnNpZ25lZCBs b25nKWNvcmVfd2FrZXVwX3JlZ1tpXSk7Cj4gKwo+ICsJLyoKPiArCSAqIFdhaXQgZm9yIGVhY2gg bm9uLWJvb3QgaGFydCB0byBlbnRlciBXRkkuICBTdGF0dXMgYml0IHBvc2l0aW9ucyBhcmUKPiAr CSAqIG5vbi11bmlmb3JtIChzZWUgazMuaCksIHNvIHVzZSB0aGUgZmlsZS1zY29wZSBsb29rdXAg dGFibGVzLgo+ICsJICovCj4gKwlmb3IgKGkgPSAxOyBpIDwgUExBVEZPUk1fTUFYX0NQVVM7IGkr Kykgewo+ICsJCXU2NCBkZWFkbGluZSA9IHNiaV90aW1lcl92YWx1ZV9hZnRlcl9tc2VjcyhIQVJU X1dGSV9USU1FT1VUX01TKTsKPiArCj4gKwkJd2hpbGUgKCEocmVhZGwoKHZvaWQgKikodW5zaWdu ZWQgbG9uZyl3Zmlfc3RhdHVzX3JlZ1tpXSkgJiB3Zmlfc3RhdHVzX21hc2tbaV0pKSB7Cj4gKwkJ CWlmIChzYmlfdGltZXJfdmFsdWUoKSA+PSBkZWFkbGluZSkgewo+ICsJCQkJc2JpX3ByaW50Zigi d2FybjogaGFydCAlZCBkaWQgbm90IGVudGVyIFdGSVxuIiwgaSk7Cj4gKwkJCQlicmVhazsKPiAr CQkJfQo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArLyoKPiArICogUGxhdGZvcm0gZWFybHkgaW5p dGlhbGl6YXRpb24uCj4gKyAqLwo+ICtzdGF0aWMgaW50IHNwYWNlbWl0X2szX2Vhcmx5X2luaXQo Ym9vbCBjb2xkX2Jvb3QpCj4gK3sKPiArCWludCByYzsKPiArCj4gKwlpZiAoY29sZF9ib290KQo+ ICsJCXNwYWNlbWl0X2szX3ByZV9pbml0KCk7Cj4gKwo+ICsJcmMgPSBnZW5lcmljX2Vhcmx5X2lu aXQoY29sZF9ib290KTsKPiArCWlmIChyYykKPiArCQlyZXR1cm4gcmM7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHNwYWNlbWl0X2NvbGRfYm9vdF9hbGxvd2VkKHUz MiBoYXJ0aWQpCj4gK3sKPiArCXJldHVybiAhaGFydGlkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHNwYWNlbWl0X2szX3BsYXRmb3JtX2luaXQoY29uc3Qgdm9pZCAqZmR0LCBpbnQgbm9kZW9mZiwK PiArCQkJCSAgICAgY29uc3Qgc3RydWN0IGZkdF9tYXRjaCAqbWF0Y2gpCj4gK3sKPiArCWdlbmVy aWNfcGxhdGZvcm1fb3BzLm5hc2NlbnRfaW5pdCA9IHNwYWNlbWl0X2szX25hc2NlbnRfaW5pdDsK PiArCWdlbmVyaWNfcGxhdGZvcm1fb3BzLmVhcmx5X2luaXQgPSBzcGFjZW1pdF9rM19lYXJseV9p bml0Owo+ICsJZ2VuZXJpY19wbGF0Zm9ybV9vcHMuY29sZF9ib290X2FsbG93ZWQgPSBzcGFjZW1p dF9jb2xkX2Jvb3RfYWxsb3dlZDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBmZHRfbWF0Y2ggc3BhY2VtaXRfazNfbWF0Y2hbXSA9IHsKPiArCXsgLmNv bXBhdGlibGUgPSAic3BhY2VtaXQsazMiIH0sCj4gKwl7IC8qIHNlbnRpbmVsICovIH0KPiArfTsK PiArCj4gK2NvbnN0IHN0cnVjdCBmZHRfZHJpdmVyIHNwYWNlbWl0X2szID0gewo+ICsJLm1hdGNo X3RhYmxlID0gc3BhY2VtaXRfazNfbWF0Y2gsCj4gKwkuaW5pdCA9IHNwYWNlbWl0X2szX3BsYXRm b3JtX2luaXQsCj4gK307Cj4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQv azNfYXNtLlMgYi9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szX2FzbS5TCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZmU0NWNjYTYKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rM19hc20uUwo+IEBAIC0wLDAgKzEsMzMg QEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZSAqLwo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjYgU3BhY2VtaVQKPiArICogQXV0aG9yczoKPiArICogICBY aWFuYmluIFpodSA8eGlhbmJpbi56aHVAbGludXguc3BhY2VtaXQuY29tPgo+ICsgKiAgIFRyb3kg TWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29tPgo+ICsgKi8KPiArCj4g KyNkZWZpbmUgX19BU1NFTUJMWV9fCj4gKyNpbmNsdWRlIDxzcGFjZW1pdC9jb21tb24uaD4KPiAr I2luY2x1ZGUgPHNwYWNlbWl0L2szLmg+Cj4gKwo+ICsJLnNlY3Rpb24gLmVudHJ5LCAiYXgiLCAl cHJvZ2JpdHMKPiArCS5hbGlnbiAzCj4gKwkuZ2xvYmwgX3NwYWNlbWl0X2szX3dhcm1fc3RhcnQK PiArX3NwYWNlbWl0X2szX3dhcm1fc3RhcnQ6Cj4gKwkvKiBFbmFibGUgZGNhY2hlLCBpY2FjaGUs IGFuZCBDUFUgZmVhdHVyZXMgKi8KPiArCWxpCXQwLCBNU0VUVVBfQk9PVF9GTEFHUwo+ICsJY3Ny cwlDU1JfTVNFVFVQLCB0MAo+ICsKPiArCS8qCj4gKwkgKiBTZXQgc21wZW5beF0gaW4gTUwyU0VU VVAgdG8gZW5hYmxlIEwxIEQtY2FjaGUgc25vb3BpbmcgZm9yIHRoaXMKPiArCSAqIGNvcmUsIHNv IHRoZSBoYXJkd2FyZSBtYWludGFpbnMgY29oZXJlbmN5IGJldHdlZW4gdGhpcyBjb3JlJ3MgTDEK PiArCSAqIEQtY2FjaGUgYW5kIGFsbCBvdGhlciBjYWNoZXMgaW4gdGhlIHN5c3RlbS4KPiArCSAq IFRoZSBiaXQgcG9zaXRpb24gaXMgMSA8PCAoaGFydGlkICUgUExBVEZPUk1fTUFYX0NQVVNfUEVS X0NMVVNURVIpLgo+ICsJICovCj4gKwljc3JyCXQwLCBtaGFydGlkCj4gKwlhbmRpCXQwLCB0MCwg KFBMQVRGT1JNX01BWF9DUFVTX1BFUl9DTFVTVEVSIC0gMSkKPiArCWxpCXQxLCAxCj4gKwlzbGwJ dDEsIHQxLCB0MAo+ICsJY3NycwlDU1JfTUwyU0VUVVAsIHQxCj4gKwo+ICsJaglfc3RhcnRfd2Fy bQo+IGRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L29iamVjdHMubWsgYi9w bGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L29iamVjdHMubWsKPiBpbmRleCA4MzA5YWQxZi4uMjgy NTQzYjUgMTAwNjQ0Cj4gLS0tIGEvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9vYmplY3RzLm1r Cj4gKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9vYmplY3RzLm1rCj4gQEAgLTUsMyAr NSw1IEBACj4gICBwbGF0Zm9ybS1vYmpzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUKSArPSBz cGFjZW1pdC9zcGFjZW1pdC5vCj4gICBjYXJyYXktcGxhdGZvcm1fb3ZlcnJpZGVfbW9kdWxlcy0k KENPTkZJR19QTEFURk9STV9TUEFDRU1JVF9LMSkgKz0gc3BhY2VtaXRfazEKPiAgIHBsYXRmb3Jt LW9ianMtJChDT05GSUdfUExBVEZPUk1fU1BBQ0VNSVRfSzEpICs9IHNwYWNlbWl0L2sxLm8KPiAr Y2FycmF5LXBsYXRmb3JtX292ZXJyaWRlX21vZHVsZXMtJChDT05GSUdfUExBVEZPUk1fU1BBQ0VN SVRfSzMpICs9IHNwYWNlbWl0X2szCj4gK3BsYXRmb3JtLW9ianMtJChDT05GSUdfUExBVEZPUk1f U1BBQ0VNSVRfSzMpICs9IHNwYWNlbWl0L2szLm8gc3BhY2VtaXQvazNfYXNtLm8KPiAKClBlcmhh cHMgaW4gb2JqZWN0cy5taywgeW91IHNob3VsZCBza2lwIHRoZSBidWlsZCBmb3IgcnYzMi4gSSBi ZXQgeW91J2xsIGdldAp3YXJuaW5ncyBvciBldmVuIGVycm9ycyB0YXJnZXRpbmcgcnYzMi4gTm8g cG9pbnQgb2YgZG9pbmcgdGhhdCBhbnl3YXkuCgpCbwoKCi0tIApvcGVuc2JpIG1haWxpbmcgbGlz dApvcGVuc2JpQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9vcGVuc2JpCg==