From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6554 invoked by alias); 25 Mar 2009 07:19:14 -0000 Received: (qmail 6536 invoked by uid 22791); 25 Mar 2009 07:19:05 -0000 X-SWARE-Spam-Status: No, hits=0.1 required=5.0 tests=AWL,BAYES_50,J_CHICKENPOX_93,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.184) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 25 Mar 2009 07:18:56 +0000 Received: by ti-out-0910.google.com with SMTP id a1so1934766tib.12 for ; Wed, 25 Mar 2009 00:18:52 -0700 (PDT) MIME-Version: 1.0 Received: by 10.110.50.19 with SMTP id x19mr9613773tix.42.1237965532713; Wed, 25 Mar 2009 00:18:52 -0700 (PDT) In-Reply-To: References: Date: Wed, 25 Mar 2009 07:22:00 -0000 Message-ID: Subject: Re: [RFA] Submit process record and replay fourth time, 4/8 From: Hui Zhu To: "gdb-patches@sourceware.org" Cc: Pedro Alves , Marc Khouzam , Michael Snyder , Thiago Jung Bauermann , Eli Zaretskii , paawan1982@yahoo.com Content-Type: multipart/mixed; boundary=001485f01ad4d25b470465ec4ff1 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-03/txt/msg00543.txt.bz2 --001485f01ad4d25b470465ec4ff1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1389 Update follow "3-record_target.txt". Thanks, Hui On Sun, Mar 22, 2009 at 00:01, Hui Zhu wrote: > This patch add process record and replay for Linux support file. The > main function is "record_linux_system_call" will be called by > architecture record function. It is used to record the system call > execute log. > > 2009-03-21 =A0Hui Zhu =A0 > > =A0 =A0 =A0 =A0Process record and replay target. > > =A0 =A0 =A0 =A0* Makefile.in (linux-record.c): New file. > =A0 =A0 =A0 =A0* configure.tgt (linux-record.c): New file. > =A0 =A0 =A0 =A0* linux-record.c, linux-record.h: New file. > > =A0 =A0 =A0 =A02008-12-28 =A0Michael Snyder =A0 > =A0 =A0 =A0 =A0* Comments, spelling, white space clean-ups. > > =A0 =A0 =A0 =A02008-10-04 =A0Michael Snyder =A0 > =A0 =A0 =A0 =A0* configure.tgt: Add linux-record.o here instead of in > =A0 =A0 =A0 =A0NATDEPFILES. > =A0 =A0 =A0 =A0* config/i386/linux.mh: Remove linux-record.o from NATDEPF= ILES. > > =A0 =A0 =A0 =A02008-10-03 =A0Michael Snyder =A0 > =A0 =A0 =A0 =A0* linux-record.c (record_linux_system_call): Cast sizeof to > =A0 =A0 =A0 =A0int in printf calls, avoid compiler warnings on 64 bit hos= ts. > > =A0 =A0 =A0 =A02008-09-06 =A0Michael Snyder =A0 > =A0 =A0 =A0 =A0* linux-record.c: Comment and message string cleanup. > --001485f01ad4d25b470465ec4ff1 Content-Type: text/plain; charset=US-ASCII; name="4-linux-record.txt" Content-Disposition: attachment; filename="4-linux-record.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fspp46x71 Content-length: 87897 LS0tCiBNYWtlZmlsZS5pbiAgICB8ICAgIDQgCiBjb25maWd1cmUudGd0ICB8 ICAgIDYgCiBsaW51eC1yZWNvcmQuYyB8IDIxOTQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBs aW51eC1yZWNvcmQuaCB8ICAxNzIgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAy MzczIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgotLS0gYS9NYWtl ZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtNTE4LDcgKzUxOCw4IEBA IEFMTF9UQVJHRVRfT0JTID0gXAogCXByb2xvZ3VlLXZhbHVlLm8gXAogCXN5 bWZpbGUtbWVtLm8gXAogCWNvcmVsb3cubyBcCi0Jd2luZG93cy10ZGVwLm8K Kwl3aW5kb3dzLXRkZXAubyBcCisJbGludXgtcmVjb3JkLm8KIAogIyBIb3N0 LWRlcGVuZGVudCBtYWtlZmlsZSBmcmFnbWVudCBjb21lcyBpbiBoZXJlLgog QGhvc3RfbWFrZWZpbGVfZnJhZ0AKQEAgLTEzMDcsNiArMTMwOCw3IEBAIEFM TERFUEZJTEVTID0gXAogCWxpYnVud2luZC1mcmFtZS5jIFwKIAlsaW51eC1m b3JrLmMgXAogCWxpbnV4LXRkZXAuYyBcCisJbGludXgtcmVjb3JkLmMgXAog CW02OGhjMTEtdGRlcC5jIFwKIAltMzJyLXRkZXAuYyBcCiAJbTMyci1saW51 eC1uYXQuYyBtMzJyLWxpbnV4LXRkZXAuYyBcCi0tLSBhL2NvbmZpZ3VyZS50 Z3QKKysrIGIvY29uZmlndXJlLnRndApAQCAtMTkwLDcgKzE5MCw4IEBAIGlb MzQ1NjddODYtKi1zb2xhcmlzKikKIGlbMzQ1NjddODYtKi1saW51eCopCiAJ IyBUYXJnZXQ6IEludGVsIDM4NiBydW5uaW5nIEdOVS9MaW51eAogCWdkYl90 YXJnZXRfb2JzPSJpMzg2LXRkZXAubyBpMzg2LWxpbnV4LXRkZXAubyBnbGli Yy10ZGVwLm8gaTM4Ny10ZGVwLm8gXAotCQkJc29saWIubyBzb2xpYi1zdnI0 Lm8gc3ltZmlsZS1tZW0ubyBjb3JlbG93Lm8gbGludXgtdGRlcC5vIgorCQkJ c29saWIubyBzb2xpYi1zdnI0Lm8gc3ltZmlsZS1tZW0ubyBjb3JlbG93Lm8g bGludXgtdGRlcC5vIFwKKwkJCWxpbnV4LXJlY29yZC5vIgogCWJ1aWxkX2dk YnNlcnZlcj15ZXMKIAk7OwogaVszNDU2N104Ni0qLWdudSopCkBAIC01MTMs NyArNTE0LDggQEAgeDg2XzY0LSotbGludXgqKQogCSMgVGFyZ2V0OiBHTlUv TGludXggeDg2LTY0CiAJZ2RiX3RhcmdldF9vYnM9ImFtZDY0LXRkZXAubyBh bWQ2NC1saW51eC10ZGVwLm8gaTM4Ni10ZGVwLm8gXAogCQkJaTM4Ny10ZGVw Lm8gaTM4Ni1saW51eC10ZGVwLm8gZ2xpYmMtdGRlcC5vIFwKLQkJCXNvbGli Lm8gc29saWItc3ZyNC5vIGNvcmVsb3cubyBzeW1maWxlLW1lbS5vIGxpbnV4 LXRkZXAubyIKKwkJCXNvbGliLm8gc29saWItc3ZyNC5vIGNvcmVsb3cubyBz eW1maWxlLW1lbS5vIGxpbnV4LXRkZXAubyBcCisJCQlsaW51eC1yZWNvcmQu byIKIAlidWlsZF9nZGJzZXJ2ZXI9eWVzCiAJOzsKIHg4Nl82NC0qLWZyZWVi c2QqIHwgeDg2XzY0LSota2ZyZWVic2QqLWdudSkKLS0tIC9kZXYvbnVsbAor KysgYi9saW51eC1yZWNvcmQuYwpAQCAtMCwwICsxLDIxOTQgQEAKKy8qIFBy b2Nlc3MgcmVjb3JkIGFuZCByZXBsYXkgdGFyZ2V0IGNvZGUgZm9yIEdOVS9M aW51eC4KKworICAgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBH REIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRl ICJkZWZzLmgiCisjaW5jbHVkZSAidGFyZ2V0LmgiCisjaW5jbHVkZSAicmVn Y2FjaGUuaCIKKyNpbmNsdWRlICJyZWNvcmQuaCIKKyNpbmNsdWRlICJsaW51 eC1yZWNvcmQuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworLyogVGhlc2Ug bWFjcm9zIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBv ZiBzeXN0ZW0gY2FsbAorICAgInN5c19wdHJhY2UiLiAgVGhlIHZhbHVlcyBv ZiB0aGVzZSBtYWNyb3Mgd2VyZSBvYnRhaW5lZCBmcm9tIExpbnV4CisgICBL ZXJuZWwgc291cmNlLiAgKi8KKworI2RlZmluZSBSRUNPUkRfUFRSQUNFX1BF RUtURVhUCTEKKyNkZWZpbmUgUkVDT1JEX1BUUkFDRV9QRUVLREFUQQkyCisj ZGVmaW5lIFJFQ09SRF9QVFJBQ0VfUEVFS1VTUgkzCisKKy8qIFRoZXNlIG1h Y3JvcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgZmlyc3QgYXJndW1lbnQgb2Yg c3lzdGVtIGNhbGwKKyAgICJzeXNfc29ja2V0Y2FsbCIuICBUaGUgdmFsdWVz IG9mIHRoZXNlIG1hY3JvcyB3ZXJlIG9idGFpbmVkIGZyb20KKyAgIExpbnV4 IEtlcm5lbCBzb3VyY2UuICAqLworCisjZGVmaW5lIFJFQ09SRF9TWVNfU09D S0VUCTEKKyNkZWZpbmUgUkVDT1JEX1NZU19CSU5ECQkyCisjZGVmaW5lIFJF Q09SRF9TWVNfQ09OTkVDVAkzCisjZGVmaW5lIFJFQ09SRF9TWVNfTElTVEVO CTQKKyNkZWZpbmUgUkVDT1JEX1NZU19BQ0NFUFQJNQorI2RlZmluZSBSRUNP UkRfU1lTX0dFVFNPQ0tOQU1FCTYKKyNkZWZpbmUgUkVDT1JEX1NZU19HRVRQ RUVSTkFNRQk3CisjZGVmaW5lIFJFQ09SRF9TWVNfU09DS0VUUEFJUgk4Cisj ZGVmaW5lIFJFQ09SRF9TWVNfU0VORAkJOQorI2RlZmluZSBSRUNPUkRfU1lT X1JFQ1YJCTEwCisjZGVmaW5lIFJFQ09SRF9TWVNfU0VORFRPCTExCisjZGVm aW5lIFJFQ09SRF9TWVNfUkVDVkZST00JMTIKKyNkZWZpbmUgUkVDT1JEX1NZ U19TSFVURE9XTgkxMworI2RlZmluZSBSRUNPUkRfU1lTX1NFVFNPQ0tPUFQJ MTQKKyNkZWZpbmUgUkVDT1JEX1NZU19HRVRTT0NLT1BUCTE1CisjZGVmaW5l IFJFQ09SRF9TWVNfU0VORE1TRwkxNgorI2RlZmluZSBSRUNPUkRfU1lTX1JF Q1ZNU0cJMTcKKworLyogVGhlc2UgbWFjcm9zIGFyZSB0aGUgdmFsdWVzIG9m IHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzeXN0ZW0gY2FsbAorICAgInN5c19p cGMiLiAgVGhlIHZhbHVlcyBvZiB0aGVzZSBtYWNyb3Mgd2VyZSBvYnRhaW5l ZCBmcm9tIExpbnV4CisgICBLZXJuZWwgc291cmNlLiAgKi8KKworI2RlZmlu ZSBSRUNPUkRfU0VNT1AJCTEKKyNkZWZpbmUgUkVDT1JEX1NFTUdFVAkJMgor I2RlZmluZSBSRUNPUkRfU0VNQ1RMCQkzCisjZGVmaW5lIFJFQ09SRF9TRU1U SU1FRE9QCTQKKyNkZWZpbmUgUkVDT1JEX01TR1NORAkJMTEKKyNkZWZpbmUg UkVDT1JEX01TR1JDVgkJMTIKKyNkZWZpbmUgUkVDT1JEX01TR0dFVAkJMTMK KyNkZWZpbmUgUkVDT1JEX01TR0NUTAkJMTQKKyNkZWZpbmUgUkVDT1JEX1NI TUFUCQkyMQorI2RlZmluZSBSRUNPUkRfU0hNRFQJCTIyCisjZGVmaW5lIFJF Q09SRF9TSE1HRVQJCTIzCisjZGVmaW5lIFJFQ09SRF9TSE1DVEwJCTI0CisK Ky8qIFRoZXNlIG1hY3JvcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgZmlyc3Qg YXJndW1lbnQgb2Ygc3lzdGVtIGNhbGwKKyAgICJzeXNfcXVvdGFjdGwiLiAg VGhlIHZhbHVlcyBvZiB0aGVzZSBtYWNyb3Mgd2VyZSBvYnRhaW5lZCBmcm9t IExpbnV4CisgICBLZXJuZWwgc291cmNlLiAgKi8KKworI2RlZmluZSBSRUNP UkRfUV9HRVRGTVQJCTB4ODAwMDA0CisjZGVmaW5lIFJFQ09SRF9RX0dFVElO Rk8JMHg4MDAwMDUKKyNkZWZpbmUgUkVDT1JEX1FfR0VUUVVPVEEJMHg4MDAw MDcKKyNkZWZpbmUgUkVDT1JEX1FfWEdFVFFTVEFUCSgoJzUnIDw8IDgpICsg NSkKKyNkZWZpbmUgUkVDT1JEX1FfWEdFVFFVT1RBCSgoJzMnIDw8IDgpICsg MykKKworLyogV2hlbiB0aGUgYXJjaGl0ZWN0dXJlIHByb2Nlc3MgcmVjb3Jk IGdldCBhIExpbnV4IHN5c2NhbGwKKyAgIGluc3RydWN0aW9uLCBpdCB3aWxs IGdldCBhIExpbnV4IHN5c2NhbGwgbnVtYmVyIG9mIHRoaXMKKyAgIGFyY2hp dGVjdHVyZSBhbmQgY29udmVydCBpdCB0byB0aGUgTGludXggc3lzY2FsbCBu dW1iZXIgIm51bSIgd2hpY2gKKyAgIGlzIGludGVybmFsIHRvIEdEQi4gIE1v c3QgTGludXggc3lzY2FsbHMgYWNyb3NzIGFyY2hpdGVjdHVyZXMgaW4KKyAg IExpbnV4IHdvdWxkIGJlIHNpbWlsYXIgYW5kIG1vc3RseSBkaWZmZXIgYnkg c2l6ZXMgb2YgdHlwZXMgYW5kCisgICBzdHJ1Y3R1cmVzLiAgVGhpcyBzaXpl cyBhcmUgcHV0IHRvICJ0ZGVwIi4KKworICAgUmVjb3JkIHRoZSB2YWx1ZXMg b2YgdGhlIHJlZ2lzdGVycyBhbmQgbWVtb3J5IHRoYXQgd2lsbCBiZSBjaGFu Z2VkCisgICBpbiBjdXJyZW50IHN5c3RlbSBjYWxsLgorCisgICBSZXR1cm4g LTEgaWYgc29tZXRoaW5nIHdyb25nLiAgKi8KKworaW50CityZWNvcmRfbGlu dXhfc3lzdGVtX2NhbGwgKGludCBudW0sIGxpbnV4X3JlY29yZF90ZGVwX3Qg KiB0ZGVwKQoreworICB1aW50MzJfdCB0bXB1MzI7CisKKyAgc3dpdGNoIChu dW0pCisgICAgeworICAgICAgLyogc3lzX3Jlc3RhcnRfc3lzY2FsbCAqLwor ICAgIGNhc2UgMDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZXhp dCAqLworICAgIGNhc2UgMToKKyAgICAgIHsKKwlpbnQgcTsKKwl0YXJnZXRf dGVybWluYWxfb3VycyAoKTsKKwlxID0KKwkgIHlxdWVyeSAoXyAoIlRoZSBu ZXh0IGluc3RydWN0aW9uIGlzIHN5c2NhbGwgZXhpdC4gICIKKwkJICAgICAi SXQgd2lsbCBtYWtlIHRoZSBwcm9ncmFtIGV4aXQuICAiCisJCSAgICAgIkRv IHlvdSB3YW50IHRvIHN0b3AgdGhlIHByb2dyYW0/IikpOworCXRhcmdldF90 ZXJtaW5hbF9pbmZlcmlvciAoKTsKKwlpZiAocSkKKwkgIHJldHVybiAxOwor ICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19mb3JrICov CisgICAgY2FzZSAyOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19y ZWFkICovCisgICAgY2FzZSAzOgorICAgICAgeworCXVpbnQzMl90IGFkZHIs IGNvdW50OworCXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIGFkZHIpOworCXJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJf Ynl0ZSAqKSAmIGNvdW50KTsKKwlpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtIChhZGRyLCBjb3VudCkpCisJICByZXR1cm4gLTE7CisgICAgICB9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX3dyaXRlICovCisgICAgY2Fz ZSA0OgorICAgICAgLyogc3lzX29wZW4gKi8KKyAgICBjYXNlIDU6CisgICAg ICAvKiBzeXNfY2xvc2UgKi8KKyAgICBjYXNlIDY6CisgICAgICAvKiBzeXNf d2FpdHBpZCAqLworICAgIGNhc2UgNzoKKyAgICAgIC8qIHN5c19jcmVhdCAq LworICAgIGNhc2UgODoKKyAgICAgIC8qIHN5c19saW5rICovCisgICAgY2Fz ZSA5OgorICAgICAgLyogc3lzX3VubGluayAqLworICAgIGNhc2UgMTA6Cisg ICAgICAvKiBzeXNfZXhlY3ZlICovCisgICAgY2FzZSAxMToKKyAgICAgIC8q IHN5c19jaGRpciAqLworICAgIGNhc2UgMTI6CisgICAgICAvKiBzeXNfdGlt ZSAqLworICAgIGNhc2UgMTM6CisgICAgICAvKiBzeXNfbWtub2QgKi8KKyAg ICBjYXNlIDE0OgorICAgICAgLyogc3lzX2NobW9kICovCisgICAgY2FzZSAx NToKKyAgICAgIC8qIHN5c19sY2hvd24xNiAqLworICAgIGNhc2UgMTY6Cisg ICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMTc6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3N0YXQgKi8KKyAgICBjYXNlIDE4 OgorICAgICAgLyogc3lzX2ZzdGF0ICovCisgICAgY2FzZSAyODoKKyAgICAg IC8qIHN5c19sc3RhdCAqLworICAgIGNhc2UgODQ6CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX19vbGRfa2VybmVsX3N0 YXQpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfbHNlZWsgKi8KKyAgICBjYXNlIDE5OgorICAgICAgLyogc3lzX2dldHBp ZCAqLworICAgIGNhc2UgMjA6CisgICAgICAvKiBzeXNfbW91bnQgKi8KKyAg ICBjYXNlIDIxOgorICAgICAgLyogc3lzX29sZHVtb3VudCAqLworICAgIGNh c2UgMjI6CisgICAgICAvKiBzeXNfc2V0dWlkMTYgKi8KKyAgICBjYXNlIDIz OgorICAgICAgLyogc3lzX2dldHVpZDE2ICovCisgICAgY2FzZSAyNDoKKyAg ICAgIC8qIHN5c19zdGltZSAqLworICAgIGNhc2UgMjU6CisgICAgICBicmVh azsKKworICAgICAgLyogc3lzX3B0cmFjZSAqLworICAgIGNhc2UgMjY6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRt cHUzMiA9PSBSRUNPUkRfUFRSQUNFX1BFRUtURVhUCisJICB8fCB0bXB1MzIg PT0gUkVDT1JEX1BUUkFDRV9QRUVLREFUQQorCSAgfHwgdG1wdTMyID09IFJF Q09SRF9QVFJBQ0VfUEVFS1VTUikKKwl7CisJICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc0LAorCQkJICAgICAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCA0KSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfYWxhcm0gKi8KKyAgICBjYXNl IDI3OgorICAgICAgLyogc3lzX3BhdXNlICovCisgICAgY2FzZSAyOToKKyAg ICAgIC8qIHN5c191dGltZSAgICAqLworICAgIGNhc2UgMzA6CisgICAgICAv KiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMzE6CisgICAgICAvKiBz eXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMzI6CisgICAgICAvKiBzeXNf YWNjZXNzICovCisgICAgY2FzZSAzMzoKKyAgICAgIC8qIHN5c19uaWNlICov CisgICAgY2FzZSAzNDoKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisg ICAgY2FzZSAzNToKKyAgICAgIC8qIHN5c19zeW5jICovCisgICAgY2FzZSAz NjoKKyAgICAgIC8qIHN5c19raWxsICovCisgICAgY2FzZSAzNzoKKyAgICAg IC8qIHN5c19yZW5hbWUgKi8KKyAgICBjYXNlIDM4OgorICAgICAgLyogc3lz X21rZGlyICovCisgICAgY2FzZSAzOToKKyAgICAgIC8qIHN5c19ybWRpciAq LworICAgIGNhc2UgNDA6CisgICAgICAvKiBzeXNfZHVwICovCisgICAgY2Fz ZSA0MToKKyAgICAgIC8qIHN5c19waXBlICovCisgICAgY2FzZSA0MjoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfdGltZXMgKi8KKyAgICBjYXNl IDQzOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+ c2l6ZV90bXMpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgNDQ6CisgICAgICAv KiBzeXNfYnJrICovCisgICAgY2FzZSA0NToKKyAgICAgIC8qIHN5c19zZXRn aWQxNiAqLworICAgIGNhc2UgNDY6CisgICAgICAvKiBzeXNfZ2V0Z2lkMTYg Ki8KKyAgICBjYXNlIDQ3OgorICAgICAgLyogc3lzX3NpZ25hbCAqLworICAg IGNhc2UgNDg6CisgICAgICAvKiBzeXNfZ2V0ZXVpZDE2ICovCisgICAgY2Fz ZSA0OToKKyAgICAgIC8qIHN5c19nZXRlZ2lkMTYgKi8KKyAgICBjYXNlIDUw OgorICAgICAgLyogc3lzX2FjY3QgKi8KKyAgICBjYXNlIDUxOgorICAgICAg Lyogc3lzX3Vtb3VudCAqLworICAgIGNhc2UgNTI6CisgICAgICAvKiBzeXNf bmlfc3lzY2FsbCAqLworICAgIGNhc2UgNTM6CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX2lvY3RsICovCisgICAgY2FzZSA1NDoKKyAgICAgIC8q IFhYWCBOZWVkIHRvIGFkZCBhIGxvdCBvZiBzdXBwb3J0IG9mIG90aGVyIGlv Y3RsIHJlcXVlc3RzLiAgKi8KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAodG1wdTMyID09IHRkZXAtPmlvY3RsX0ZJT0NM RVggfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX0ZJT05DTEVYCisJICB8fCB0 bXB1MzIgPT0gdGRlcC0+aW9jdGxfRklPTkJJTyB8fCB0bXB1MzIgPT0gdGRl cC0+aW9jdGxfRklPQVNZTkMKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0 bF9UQ1NFVFMgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RDU0VUU1cKKwkg IHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9UQ1NFVFNGIHx8IHRtcHUzMiA9 PSB0ZGVwLT5pb2N0bF9UQ1NFVEEKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5p b2N0bF9UQ1NFVEFXIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9UQ1NFVEFG CisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVENTQlJLIHx8IHRtcHUz MiA9PSB0ZGVwLT5pb2N0bF9UQ1hPTkMKKwkgIHx8IHRtcHUzMiA9PSB0ZGVw LT5pb2N0bF9UQ0ZMU0ggfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NF WENMCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ05YQ0wKKwkg IHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9USU9DU0NUVFkKKwkgIHx8IHRt cHUzMiA9PSB0ZGVwLT5pb2N0bF9USU9DU1BHUlAgfHwgdG1wdTMyID09IHRk ZXAtPmlvY3RsX1RJT0NTVEkKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0 bF9USU9DU1dJTlNaCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElP Q01CSVMgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NNQklDCisJICB8 fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ01TRVQKKwkgIHx8IHRtcHUz MiA9PSB0ZGVwLT5pb2N0bF9USU9DU1NPRlRDQVIKKwkgIHx8IHRtcHUzMiA9 PSB0ZGVwLT5pb2N0bF9USU9DQ09OUworCSAgfHwgdG1wdTMyID09IHRkZXAt PmlvY3RsX1RJT0NTU0VSSUFMCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9j dGxfVElPQ1BLVCB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ05PVFRZ CisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ1NFVEQgfHwgdG1w dTMyID09IHRkZXAtPmlvY3RsX1RDU0JSS1AKKwkgIHx8IHRtcHUzMiA9PSB0 ZGVwLT5pb2N0bF9USU9DVFRZR1NUUlVDVAorCSAgfHwgdG1wdTMyID09IHRk ZXAtPmlvY3RsX1RJT0NTQlJLIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9U SU9DQ0JSSworCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RDU0VUUzIg fHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RDU0VUU1cyCisJICB8fCB0bXB1 MzIgPT0gdGRlcC0+aW9jdGxfVENTRVRTRjIKKwkgIHx8IHRtcHUzMiA9PSB0 ZGVwLT5pb2N0bF9USU9DU1BUTENLCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+ aW9jdGxfVElPQ1NFUkNPTkZJRworCSAgfHwgdG1wdTMyID09IHRkZXAtPmlv Y3RsX1RJT0NTRVJHV0lMRAorCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3Rs X1RJT0NTRVJTV0lMRAorCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJ T0NTTENLVFJNSU9TCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElP Q1NFUkdFVE1VTFRJCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElP Q1NFUlNFVE1VTFRJCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElP Q01JV0FJVAorCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NTSEFZ RVNFU1ApCisJeworCSAgLyogTm90aGluZyB0byBkby4gICovCisJfQorICAg ICAgZWxzZSBpZiAodG1wdTMyID09IHRkZXAtPmlvY3RsX1RDR0VUUyB8fCB0 bXB1MzIgPT0gdGRlcC0+aW9jdGxfVENHRVRBCisJICAgICAgIHx8IHRtcHUz MiA9PSB0ZGVwLT5pb2N0bF9USU9DR0xDS1RSTUlPUykKKwl7CisJICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLAor CQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3Rlcm1p b3MpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAgZWxzZSBpZiAodG1w dTMyID09IHRkZXAtPmlvY3RsX1RJT0NHUEdSUAorCSAgICAgICB8fCB0bXB1 MzIgPT0gdGRlcC0+aW9jdGxfVElPQ0dTSUQpCisJeworCSAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAg ICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9waWRfdCkpCisJ ICAgIHJldHVybiAtMTsKKwl9CisgICAgICBlbHNlIGlmICh0bXB1MzIgPT0g dGRlcC0+aW9jdGxfVElPQ09VVFEKKwkgICAgICAgfHwgdG1wdTMyID09IHRk ZXAtPmlvY3RsX1RJT0NNR0VUCisJICAgICAgIHx8IHRtcHUzMiA9PSB0ZGVw LT5pb2N0bF9USU9DR1NPRlRDQVIKKwkgICAgICAgfHwgdG1wdTMyID09IHRk ZXAtPmlvY3RsX0ZJT05SRUFECisJICAgICAgIHx8IHRtcHUzMiA9PSB0ZGVw LT5pb2N0bF9USU9DSU5RCisJICAgICAgIHx8IHRtcHUzMiA9PSB0ZGVwLT5p b2N0bF9USU9DR0VURAorCSAgICAgICB8fCB0bXB1MzIgPT0gdGRlcC0+aW9j dGxfVElPQ0dQVE4KKwkgICAgICAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3Rs X1RJT0NTRVJHRVRMU1IpCisJeworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQorCSAgICByZXR1cm4gLTE7 CisJfQorICAgICAgZWxzZSBpZiAodG1wdTMyID09IHRkZXAtPmlvY3RsX1RJ T0NHV0lOU1opCisJeworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRt cHUzMiwgdGRlcC0+c2l6ZV93aW5zaXplKSkKKwkgICAgcmV0dXJuIC0xOwor CX0KKyAgICAgIGVsc2UgaWYgKHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9USU9D TElOVVgpCisJeworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV9jaGFyKSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAg ICAgIGVsc2UgaWYgKHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9USU9DR1NFUklB TCkKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0 ZGVwLT5zaXplX3NlcmlhbF9zdHJ1Y3QpKQorCSAgICByZXR1cm4gLTE7CisJ fQorICAgICAgZWxzZSBpZiAodG1wdTMyID09IHRkZXAtPmlvY3RsX1RDR0VU UzIpCisJeworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg dGRlcC0+c2l6ZV90ZXJtaW9zMikpCisJICAgIHJldHVybiAtMTsKKwl9Cisg ICAgICBlbHNlIGlmICh0bXB1MzIgPT0gdGRlcC0+aW9jdGxfRklPUVNJWkUp CisJeworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV9sb2ZmX3QpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAg ZWxzZSBpZiAodG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NHSUNPVU5UKQor CXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJ ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAgICAgKHRtcHUz MiwgdGRlcC0+c2l6ZV9zZXJpYWxfaWNvdW50ZXJfc3RydWN0KSkKKwkgICAg cmV0dXJuIC0xOworCX0KKyAgICAgIGVsc2UgaWYgKHRtcHUzMiA9PSB0ZGVw LT5pb2N0bF9USU9DR0hBWUVTRVNQKQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfaGF5ZXNfZXNwX2NvbmZp ZykpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBlbHNlIGlmICh0bXB1 MzIgPT0gdGRlcC0+aW9jdGxfVElPQ1NFUkdTVFJVQ1QpCisJeworCSAgcHJp bnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGFuZCByZXBsYXkg dGFyZ2V0IGRvZXNuJ3QgIgorCQkJICAgICAgICJzdXBwb3J0IGlvY3RsIHJl cXVlc3QgVElPQ1NFUkdTVFJVQ1RcbiIpKTsKKwkgIHJldHVybiAxOworCX0K KyAgICAgIGVsc2UKKwl7CisJICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJv Y2VzcyByZWNvcmQgYW5kIHJlcGxheSB0YXJnZXQgZG9lc24ndCAiCisJCQkg ICAgICAgInN1cHBvcnQgaW9jdGwgcmVxdWVzdCAweCUwOHguXG4iKSwKKwkJ CSAgICAgdG1wdTMyKTsKKwkgIHJldHVybiAxOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfZmNudGwgKi8KKyAgICBjYXNlIDU1OgorICAg ICAgLyogWFhYICovCisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgIHN5c19mY250bDoKKyAgICAgIGlmICh0bXB1MzIgPT0gRl9HRVRM SykKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0 ZGVwLT5zaXplX2Zsb2NrKSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNh c2UgNTY6CisgICAgICAvKiBzeXNfc2V0cGdpZCAqLworICAgIGNhc2UgNTc6 CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgNTg6Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX29sZHVuYW1lICovCisgICAg Y2FzZSA1OToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRk ZXAtPnNpemVfb2xkb2xkX3V0c25hbWUpKQorCXJldHVybiAtMTsKKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfdW1hc2sgKi8KKyAgICBjYXNlIDYw OgorICAgICAgLyogc3lzX2Nocm9vdCAqLworICAgIGNhc2UgNjE6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3VzdGF0ICovCisgICAgY2FzZSA2 MjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNp emVfdXN0YXQpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfZHVwMiAqLworICAgIGNhc2UgNjM6CisgICAgICAvKiBzeXNf Z2V0cHBpZCAqLworICAgIGNhc2UgNjQ6CisgICAgICAvKiBzeXNfZ2V0cGdy cCAqLworICAgIGNhc2UgNjU6CisgICAgICAvKiBzeXNfc2V0c2lkICovCisg ICAgY2FzZSA2NjoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2ln YWN0aW9uICovCisgICAgY2FzZSA2NzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2xkX3NpZ2FjdGlvbikpCisJcmV0 dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zZ2V0bWFz ayAqLworICAgIGNhc2UgNjg6CisgICAgICAvKiBzeXNfc3NldG1hc2sgKi8K KyAgICBjYXNlIDY5OgorICAgICAgLyogc3lzX3NldHJldWlkMTYgKi8KKyAg ICBjYXNlIDcwOgorICAgICAgLyogc3lzX3NldHJlZ2lkMTYgKi8KKyAgICBj YXNlIDcxOgorICAgICAgLyogc3lzX3NpZ3N1c3BlbmQgKi8KKyAgICBjYXNl IDcyOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zaWdwZW5kaW5n ICovCisgICAgY2FzZSA3MzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIHRkZXAtPnNpemVfb2xkX3NpZ3NldF90KSkKKwlyZXR1cm4gLTE7 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NldGhvc3RuYW1lICov CisgICAgY2FzZSA3NDoKKyAgICAgIC8qIHN5c19zZXRybGltaXQgKi8KKyAg ICBjYXNlIDc1OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19vbGRf Z2V0cmxpbWl0ICovCisgICAgY2FzZSA3NjoKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfcmxpbWl0KSkKKwlyZXR1cm4g LTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2dldHJ1c2FnZSAq LworICAgIGNhc2UgNzc6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCB0ZGVwLT5zaXplX3J1c2FnZSkpCisJcmV0dXJuIC0xOworICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXR0aW1lb2ZkYXkgKi8KKyAgICBj YXNlIDc4OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV90aW1ldmFsKSkKKwlyZXR1cm4gLTE7CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3RpbWV6b25lKSkKKwly ZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NldHRp bWVvZmRheSAqLworICAgIGNhc2UgNzk6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX2dldGdyb3VwczE2ICovCisgICAgY2FzZSA4MDoKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2xkX2dp ZF90KSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX3NldGdyb3VwczE2ICovCisgICAgY2FzZSA4MToKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2xkX2dpZF90KSkK KwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogb2xkX3Nl bGVjdCAqLworICAgIGNhc2UgODI6CisgICAgICB7CisJc3RydWN0IHNlbF9h cmdfc3RydWN0CisJeworCSAgQ09SRV9BRERSIG47CisJICBDT1JFX0FERFIg aW5wOworCSAgQ09SRV9BRERSIG91dHA7CisJICBDT1JFX0FERFIgZXhwOwor CSAgQ09SRV9BRERSIHR2cDsKKwl9IHNlbDsKKworCXJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsCisJCQkgICAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworCWlmICh0bXB1MzIpCisJICB7CisJICAg IGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRtcHUzMiwgKGdkYl9ieXRlICop ICYgc2VsLCBzaXplb2YgKHNlbCkpKQorCSAgICAgIHsKKwkJaWYgKHJlY29y ZF9kZWJ1ZykKKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs CisJCQkJICAgICAgIlByb2Nlc3MgcmVjb3JkOiBlcnJvciByZWFkaW5nIG1l bW9yeSAiCisJCQkJICAgICAgImF0IGFkZHIgPSAweCVzIGxlbiA9ICVkLlxu IiwKKwkJCQkgICAgICBwYWRkcl9ueiAodG1wdTMyKSwgc2l6ZW9mIChzZWwp KTsKKwkJcmV0dXJuIC0xOworCSAgICAgIH0KKwkgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAoc2VsLmlucCwgdGRlcC0+c2l6ZV9mZF9zZXQp KQorCSAgICAgIHJldHVybiAtMTsKKwkgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAoc2VsLm91dHAsIHRkZXAtPnNpemVfZmRfc2V0KSkKKwkg ICAgICByZXR1cm4gLTE7CisJICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0gKHNlbC5leHAsIHRkZXAtPnNpemVfZmRfc2V0KSkKKwkgICAgICBy ZXR1cm4gLTE7CisJICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHNlbC50dnAsIHRkZXAtPnNpemVfdGltZXZhbCkpCisJICAgICAgcmV0dXJu IC0xOworCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19zeW1saW5rICovCisgICAgY2FzZSA4MzoKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBzeXNfcmVhZGxpbmsgKi8KKyAgICBjYXNlIDg1OgorICAg ICAgeworCXVpbnQzMl90IGxlbjsKKwlyZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKwlyZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiBsZW4pOworCWlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgbGVuKSkKKwkgIHJl dHVybiAtMTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfdXNlbGliICovCisgICAgY2FzZSA4NjoKKyAgICAgIC8qIHN5c19zd2Fw b24gKi8KKyAgICBjYXNlIDg3OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19yZWJvb3QgKi8KKyAgICBjYXNlIDg4OgorICAgICAgeworCWludCBx OworCXRhcmdldF90ZXJtaW5hbF9vdXJzICgpOworCXEgPQorCSAgeXF1ZXJ5 IChfKCJUaGUgbmV4dCBpbnN0cnVjdGlvbiBpcyBzeXNjYWxsIHJlYm9vdC4g ICIKKwkJICAgICJJdCB3aWxsIHJlc3RhcnQgdGhlIGNvbXB1dGVyLiAgIgor CQkgICAgIkRvIHlvdSB3YW50IHRvIHN0b3AgdGhlIHByb2dyYW0/IikpOwor CXRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKwlpZiAocSkKKwkgIHJl dHVybiAxOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIG9s ZF9yZWFkZGlyICovCisgICAgY2FzZSA4OToKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfZGlyZW50KSkKKwlyZXR1cm4g LTE7CisgICAgICBicmVhazsKKworICAgICAgLyogb2xkX21tYXAgKi8KKyAg ICBjYXNlIDkwOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19tdW5t YXAgKi8KKyAgICBjYXNlIDkxOgorICAgICAgeworCWludCBxOworCXVpbnQz Ml90IGxlbjsKKworCXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzEsCisJCQkgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworCXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzIsIChnZGJfYnl0ZSAqKSAmIGxlbik7CisJdGFyZ2V0X3Rlcm1pbmFs X291cnMgKCk7CisJcSA9CisJICB5cXVlcnkgKF8oIlRoZSBuZXh0IGluc3Ry dWN0aW9uIGlzIHN5c2NhbGwgbXVubWFwLiAgIgorCQkgICAgIkl0IHdpbGwg ZnJlZSB0aGUgbWVtb3J5IGFkZHIgPSAweCVzIGxlbiA9ICVkLiAgIgorCQkg ICAgIkl0IHdpbGwgbWFrZSByZWNvcmQgdGFyZ2V0IGdldCBlcnJvci4gICIK KwkJICAgICJEbyB5b3Ugd2FudCB0byBzdG9wIHRoZSBwcm9ncmFtPyIpLAor CQkgIHBhZGRyX256ICh0bXB1MzIpLCBsZW4pOworCXRhcmdldF90ZXJtaW5h bF9pbmZlcmlvciAoKTsKKwlpZiAocSkKKwkgIHJldHVybiAxOworICAgICAg fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c190cnVuY2F0ZSAqLwor ICAgIGNhc2UgOTI6CisgICAgICAvKiBzeXNfZnRydW5jYXRlICovCisgICAg Y2FzZSA5MzoKKyAgICAgIC8qIHN5c19mY2htb2QgKi8KKyAgICBjYXNlIDk0 OgorICAgICAgLyogc3lzX2ZjaG93bjE2ICovCisgICAgY2FzZSA5NToKKyAg ICAgIC8qIHN5c19nZXRwcmlvcml0eSAqLworICAgIGNhc2UgOTY6CisgICAg ICAvKiBzeXNfc2V0cHJpb3JpdHkgKi8KKyAgICBjYXNlIDk3OgorICAgICAg Lyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDk4OgorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c19zdGF0ZnMgKi8KKyAgICBjYXNlIDk5Ogor ICAgICAgLyogc3lzX2ZzdGF0ZnMgKi8KKyAgICBjYXNlIDEwMDoKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfc3RhdGZz KSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X2lvcGVybSAqLworICAgIGNhc2UgMTAxOgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19zb2NrZXRjYWxsICovCisgICAgY2FzZSAxMDI6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgc3dpdGNoICh0 bXB1MzIpCisJeworCWNhc2UgUkVDT1JEX1NZU19TT0NLRVQ6CisJY2FzZSBS RUNPUkRfU1lTX0JJTkQ6CisJY2FzZSBSRUNPUkRfU1lTX0NPTk5FQ1Q6CisJ Y2FzZSBSRUNPUkRfU1lTX0xJU1RFTjoKKwkgIGJyZWFrOworCWNhc2UgUkVD T1JEX1NZU19BQ0NFUFQ6CisJY2FzZSBSRUNPUkRfU1lTX0dFVFNPQ0tOQU1F OgorCWNhc2UgUkVDT1JEX1NZU19HRVRQRUVSTkFNRToKKwkgIHsKKwkgICAg dWludDMyX3QgYVszXTsKKwkgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAgICAgICAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworCSAgICBpZiAodG1wdTMyKQorCSAgICAgIHsKKwkJ aWYgKHRhcmdldF9yZWFkX21lbW9yeSAodG1wdTMyLCAoZ2RiX2J5dGUgKikg YSwgc2l6ZW9mIChhKSkpCisJCSAgeworCQkgICAgaWYgKHJlY29yZF9kZWJ1 ZykKKwkJICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAor CQkJCQkgICJQcm9jZXNzIHJlY29yZDogZXJyb3IgcmVhZGluZyAiCisJCQkJ CSAgIm1lbW9yeSBhdCBhZGRyID0gMHglcyBsZW4gPSAlZC5cbiIsCisJCQkJ CSAgcGFkZHJfbnogKHRtcHUzMiksIHNpemVvZiAoYSkpOworCQkgICAgcmV0 dXJuIC0xOworCQkgIH0KKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAoYVsxXSwgdGRlcC0+c2l6ZV9zb2NrYWRkcikpCisJCSAgcmV0dXJuIC0x OworCQlpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhWzJdLCB0ZGVw LT5zaXplX2ludCkpCisJCSAgcmV0dXJuIC0xOworCSAgICAgIH0KKwkgIH0K KwkgIGJyZWFrOworCisJY2FzZSBSRUNPUkRfU1lTX1NPQ0tFVFBBSVI6CisJ ICB7CisJICAgIHVpbnQzMl90IGFbNF07CisJICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJCQkgICAgICAg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICAgaWYgKHRtcHUzMikKKwkg ICAgICB7CisJCWlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRtcHUzMiwgKGdk Yl9ieXRlICopIGEsIHNpemVvZiAoYSkpKQorCQkgIHsKKwkJICAgIGlmIChy ZWNvcmRfZGVidWcpCisJCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKKwkJCQkJICAiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJlYWRp bmcgIgorCQkJCQkgICJtZW1vcnkgYXQgYWRkciA9IDB4JXMgbGVuID0gJWQu XG4iLAorCQkJCQkgIHBhZGRyX256ICh0bXB1MzIpLCBzaXplb2YgKGEpKTsK KwkJICAgIHJldHVybiAtMTsKKwkJICB9CisJCWlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKGFbM10sIHRkZXAtPnNpemVfaW50KSkKKwkJICByZXR1 cm4gLTE7CisJICAgICAgfQorCSAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNP UkRfU1lTX1NFTkQ6CisJY2FzZSBSRUNPUkRfU1lTX1NFTkRUTzoKKwkgIGJy ZWFrOworCWNhc2UgUkVDT1JEX1NZU19SRUNWOgorCSAgeworCSAgICB1aW50 MzJfdCBhWzNdOworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgICAgIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisJICAgIGlmICh0bXB1MzIpCisJICAgICAgeworCQlpZiAo dGFyZ2V0X3JlYWRfbWVtb3J5ICh0bXB1MzIsIChnZGJfYnl0ZSAqKSBhLCBz aXplb2YgKGEpKSkKKwkJICB7CisJCSAgICBpZiAocmVjb3JkX2RlYnVnKQor CQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJ CSAgIlByb2Nlc3MgcmVjb3JkOiBlcnJvciByZWFkaW5nICIKKwkJCQkJICAi bWVtb3J5IGF0IGFkZHIgPSAweCVzIGxlbiA9ICVkLlxuIiwKKwkJCQkJICBw YWRkcl9ueiAodG1wdTMyKSwgc2l6ZW9mIChhKSk7CisJCSAgICByZXR1cm4g LTE7CisJCSAgfQorCQlpZiAoYVsyXSkKKwkJICB7CisJCSAgICBpZiAodGFy Z2V0X3JlYWRfbWVtb3J5CisJCQkoYVsyXSwgKGdkYl9ieXRlICopICYgKGFb Ml0pLCBzaXplb2YgKGFbMl0pKSkKKwkJICAgICAgeworCQkJaWYgKHJlY29y ZF9kZWJ1ZykKKwkJCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAorCQkJCQkgICAgICAiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJlYWRpbmcg IgorCQkJCQkgICAgICAibWVtb3J5IGF0IGFkZHIgPSAweCVzICIKKwkJCQkJ ICAgICAgImxlbiA9ICVkLlxuIiwKKwkJCQkJICAgICAgcGFkZHJfbnogKGFb Ml0pLCBzaXplb2YgKGFbMl0pKTsKKwkJCXJldHVybiAtMTsKKwkJICAgICAg fQorCQkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYVsxXSwg YVsyXSkpCisJCSAgICAgIHJldHVybiAtMTsKKwkJICB9CisJICAgICAgfQor CSAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfU1lTX1JFQ1ZGUk9NOgor CSAgeworCSAgICB1aW50MzJfdCBhWzZdOworCSAgICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgICAg IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICAgIGlmICh0bXB1MzIpCisJ ICAgICAgeworCQlpZiAodGFyZ2V0X3JlYWRfbWVtb3J5ICh0bXB1MzIsIChn ZGJfYnl0ZSAqKSBhLCBzaXplb2YgKGEpKSkKKwkJICB7CisJCSAgICBpZiAo cmVjb3JkX2RlYnVnKQorCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCisJCQkJCSAgIlByb2Nlc3MgcmVjb3JkOiBlcnJvciByZWFk aW5nICIKKwkJCQkJICAibWVtb3J5IGF0IGFkZHIgPSAweCVzIGxlbiA9ICVk LlxuIiwKKwkJCQkJICBwYWRkcl9ueiAodG1wdTMyKSwgc2l6ZW9mIChhKSk7 CisJCSAgICByZXR1cm4gLTE7CisJCSAgfQorCQlpZiAoYVsyXSkKKwkJICB7 CisJCSAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5CisJCQkoYVsyXSwgKGdk Yl9ieXRlICopICYgKGFbMl0pLCBzaXplb2YgKGFbMl0pKSkKKwkJICAgICAg eworCQkJaWYgKHJlY29yZF9kZWJ1ZykKKwkJCSAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorCQkJCQkgICAgICAiUHJvY2VzcyByZWNvcmQ6 IGVycm9yIHJlYWRpbmcgIgorCQkJCQkgICAgICAibWVtb3J5IGF0IGFkZHIg PSAweCVzICIKKwkJCQkJICAgICAgImxlbiA9ICVkLlxuIiwKKwkJCQkJICAg ICAgcGFkZHJfbnogKGFbMl0pLCBzaXplb2YgKGFbMl0pKTsKKwkJCXJldHVy biAtMTsKKwkJICAgICAgfQorCQkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAoYVsxXSwgYVsyXSkpCisJCSAgICAgIHJldHVybiAtMTsKKwkJ ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFbNF0sIHRkZXAt PnNpemVfc29ja2FkZHIpKQorCQkgICAgICByZXR1cm4gLTE7CisJCSAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhWzVdLCB0ZGVwLT5zaXpl X2ludCkpCisJCSAgICAgIHJldHVybiAtMTsKKwkJICB9CisJICAgICAgfQor CSAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfU1lTX1NIVVRET1dOOgor CWNhc2UgUkVDT1JEX1NZU19TRVRTT0NLT1BUOgorCSAgYnJlYWs7CisJY2Fz ZSBSRUNPUkRfU1lTX0dFVFNPQ0tPUFQ6CisJICB7CisJICAgIHVpbnQzMl90 IGFbNV07CisJICAgIHVpbnQzMl90IGF2OworCisJICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJCQkgICAg ICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICAgaWYgKHRtcHUzMikK KwkgICAgICB7CisJCWlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRtcHUzMiwg KGdkYl9ieXRlICopIGEsIHNpemVvZiAoYSkpKQorCQkgIHsKKwkJICAgIGlm IChyZWNvcmRfZGVidWcpCisJCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKKwkJCQkJICAiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHJl YWRpbmcgIgorCQkJCQkgICJtZW1vcnkgYXQgYWRkciA9IDB4JXMgbGVuID0g JWQuXG4iLAorCQkJCQkgIHBhZGRyX256ICh0bXB1MzIpLCBzaXplb2YgKGEp KTsKKwkJICAgIHJldHVybiAtMTsKKwkJICB9CisJCWlmIChhWzRdKQorCQkg IHsKKwkJICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkJCShhWzRdLCAo Z2RiX2J5dGUgKikgJiBhdiwgc2l6ZW9mIChhdikpKQorCQkgICAgICB7CisJ CQlpZiAocmVjb3JkX2RlYnVnKQorCQkJICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCisJCQkJCSAgICAgICJQcm9jZXNzIHJlY29yZDogZXJy b3IgcmVhZGluZyAiCisJCQkJCSAgICAgICJtZW1vcnkgYXQgYWRkciA9IDB4 JXMgIgorCQkJCQkgICAgICAibGVuID0gJWQuXG4iLAorCQkJCQkgICAgICBw YWRkcl9ueiAoYVs0XSksIHNpemVvZiAoYXYpKTsKKwkJCXJldHVybiAtMTsK KwkJICAgICAgfQorCQkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAoYVszXSwgYXYpKQorCQkgICAgICByZXR1cm4gLTE7CisJCSAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhWzRdLCB0ZGVwLT5zaXplX2lu dCkpCisJCSAgICAgIHJldHVybiAtMTsKKwkJICB9CisJICAgICAgfQorCSAg fQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfU1lTX1NFTkRNU0c6CisJICBi cmVhazsKKwljYXNlIFJFQ09SRF9TWVNfUkVDVk1TRzoKKwkgIHsKKwkgICAg dWludDMyX3QgYVsyXSwgaTsKKwkgICAgc3RydWN0IHJlY29yZF9tc2doZHIK KwkgICAgeworCSAgICAgIHVpbnQzMl90IG1zZ19uYW1lOworCSAgICAgIHVp bnQzMl90IG1zZ19uYW1lbGVuOworCSAgICAgIHVpbnQzMl90IG1zZ19pb3Y7 CisJICAgICAgdWludDMyX3QgbXNnX2lvdmxlbjsKKwkgICAgICB1aW50MzJf dCBtc2dfY29udHJvbDsKKwkgICAgICB1aW50MzJfdCBtc2dfY29udHJvbGxl bjsKKwkgICAgICB1aW50MzJfdCBtc2dfZmxhZ3M7CisJICAgIH0gcmVjOwor CSAgICBzdHJ1Y3QgcmVjb3JkX2lvdmVjCisJICAgIHsKKwkgICAgICB1aW50 MzJfdCBpb3ZfYmFzZTsKKwkgICAgICB1aW50MzJfdCBpb3ZfbGVuOworCSAg ICB9IGlvdjsKKworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgICAgIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisJICAgIGlmICh0bXB1MzIpCisJICAgICAgeworCQlpZiAo dGFyZ2V0X3JlYWRfbWVtb3J5ICh0bXB1MzIsIChnZGJfYnl0ZSAqKSBhLCBz aXplb2YgKGEpKSkKKwkJICB7CisJCSAgICBpZiAocmVjb3JkX2RlYnVnKQor CQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJ CSAgIlByb2Nlc3MgcmVjb3JkOiBlcnJvciByZWFkaW5nICIKKwkJCQkJICAi bWVtb3J5IGF0IGFkZHIgPSAweCVzIGxlbiA9ICVkLlxuIiwKKwkJCQkJICBw YWRkcl9ueiAodG1wdTMyKSwgc2l6ZW9mIChhKSk7CisJCSAgICByZXR1cm4g LTE7CisJCSAgfQorCQlpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChh WzFdLCB0ZGVwLT5zaXplX21zZ2hkcikpCisJCSAgcmV0dXJuIC0xOworCQlp ZiAoYVsxXSkKKwkJICB7CisJCSAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5 CisJCQkoYVsxXSwgKGdkYl9ieXRlICopICYgcmVjLCBzaXplb2YgKHJlYykp KQorCQkgICAgICB7CisJCQlpZiAocmVjb3JkX2RlYnVnKQorCQkJICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCSAgICAgICJQcm9j ZXNzIHJlY29yZDogZXJyb3IgcmVhZGluZyAiCisJCQkJCSAgICAgICJtZW1v cnkgYXQgYWRkciA9IDB4JXMgIgorCQkJCQkgICAgICAibGVuID0gJWQuXG4i LAorCQkJCQkgICAgICBwYWRkcl9ueiAoYVsxXSksIHNpemVvZiAocmVjKSk7 CisJCQlyZXR1cm4gLTE7CisJCSAgICAgIH0KKwkJICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0KKwkJCShyZWMubXNnX25hbWUsIHJlYy5tc2df bmFtZWxlbikpCisJCSAgICAgIHJldHVybiAtMTsKKwkJICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0KKwkJCShyZWMubXNnX2NvbnRyb2wsIHJl Yy5tc2dfY29udHJvbGxlbikpCisJCSAgICAgIHJldHVybiAtMTsKKwkJICAg IGlmIChyZWMubXNnX2lvdikKKwkJICAgICAgeworCQkJZm9yIChpID0gMDsg aSA8IHJlYy5tc2dfaW92bGVuOyBpKyspCisJCQkgIHsKKwkJCSAgICBpZiAo dGFyZ2V0X3JlYWRfbWVtb3J5CisJCQkJKHJlYy5tc2dfaW92LCAoZ2RiX2J5 dGUgKikgJiBpb3YsCisJCQkJIHNpemVvZiAoaW92KSkpCisJCQkgICAgICB7 CisJCQkJaWYgKHJlY29yZF9kZWJ1ZykKKwkJCQkgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkJCSAgICAgICJQcm9jZXNzIHJlY29y ZDogZXJyb3IgIgorCQkJCQkJICAgICAgInJlYWRpbmcgbWVtb3J5IGF0ICIK KwkJCQkJCSAgICAgICJhZGRyID0gMHglcyAiCisJCQkJCQkgICAgICAibGVu ID0gJWQuXG4iLAorCQkJCQkJICAgICAgcGFkZHJfbnogKHJlYy4KKwkJCQkJ CQkJbXNnX2lvdiksCisJCQkJCQkgICAgICBzaXplb2YgKGlvdikpOworCQkJ CXJldHVybiAtMTsKKwkJCSAgICAgIH0KKwkJCSAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtCisJCQkJKGlvdi5pb3ZfYmFzZSwgaW92Lmlvdl9s ZW4pKQorCQkJICAgICAgcmV0dXJuIC0xOworCQkJICAgIHJlYy5tc2dfaW92 ICs9IHNpemVvZiAoc3RydWN0IHJlY29yZF9pb3ZlYyk7CisJCQkgIH0KKwkJ ICAgICAgfQorCQkgIH0KKwkgICAgICB9CisJICB9CisJICBicmVhazsKKwlk ZWZhdWx0OgorCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVj b3JkIGFuZCByZXBsYXkgdGFyZ2V0ICIKKwkJCSAgICAgICAiZG9lc24ndCBz dXBwb3J0IHNvY2tldGNhbGwgY2FsbCAweCUwOHhcbiIpLAorCQkJICAgICB0 bXB1MzIpOworCSAgcmV0dXJuIC0xOworCSAgYnJlYWs7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19zeXNsb2cgKi8KKyAgICBjYXNlIDEw MzoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2V0aXRpbWVyICov CisgICAgY2FzZSAxMDQ6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCB0ZGVwLT5zaXplX2l0aW1lcnZhbCkpCisJcmV0dXJuIC0xOworICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRpdGltZXIgKi8KKyAgICBj YXNlIDEwNToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRk ZXAtPnNpemVfaXRpbWVydmFsKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVh azsKKworICAgICAgLyogc3lzX25ld3N0YXQgKi8KKyAgICBjYXNlIDEwNjoK KyAgICAgIC8qIHN5c19uZXdsc3RhdCAqLworICAgIGNhc2UgMTA3OgorICAg ICAgLyogc3lzX25ld2ZzdGF0ICovCisgICAgY2FzZSAxMDg6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcy LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3N0YXQpKQor CXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfdW5h bWUgKi8KKyAgICBjYXNlIDEwOToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt ICh0bXB1MzIsIHRkZXAtPnNpemVfb2xkX3V0c25hbWUpKQorCXJldHVybiAt MTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfaW9wbCAqLworICAg IGNhc2UgMTEwOgorICAgICAgLyogc3lzX3ZoYW5ndXAgKi8KKyAgICBjYXNl IDExMToKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSAx MTI6CisgICAgICAvKiBzeXNfdm04Nm9sZCAqLworICAgIGNhc2UgMTEzOgor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c193YWl0NCAqLworICAgIGNh c2UgMTE0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV9pbnQpKQorCXJldHVybiAtMTsKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzQsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfcnVzYWdlKSkKKwlyZXR1cm4g LTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3N3YXBvZmYgKi8K KyAgICBjYXNlIDExNToKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf c3lzaW5mbyAqLworICAgIGNhc2UgMTE2OgorICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9zeXNpbmZvKSkKKwlyZXR1cm4g LTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2lwYyAqLworICAg IGNhc2UgMTE3OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIHN3aXRjaCAodG1wdTMyKQorCXsKKwljYXNlIFJFQ09SRF9NU0dS Q1Y6CisJICB7CisJICAgIGludDMyX3Qgc2Vjb25kOworCSAgICB1aW50MzJf dCBwdHI7CisJICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzMsCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgc2Vj b25kKTsKKwkgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnNSwKKwkJCSAgICAgICAoZ2RiX2J5dGUgKikgJiBwdHIp OworCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChwdHIsIHNl Y29uZCArIHRkZXAtPnNpemVfbG9uZykpCisJICAgICAgcmV0dXJuIC0xOwor CSAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfTVNHQ1RMOgorCSAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNSwK KwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9tc3Fp ZF9kcykpCisJICAgIHJldHVybiAtMTsKKwkgIGJyZWFrOworCWNhc2UgUkVD T1JEX1NITUFUOgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnNCwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV91bG9uZykpCisJICAgIHJldHVybiAtMTsKKwkgIGJy ZWFrOworCWNhc2UgUkVDT1JEX1NITUNUTDoKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzUsCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfc2htaWRfZHMpKQorCSAg ICByZXR1cm4gLTE7CisJICBicmVhazsKKwl9CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX2ZzeW5jICovCisgICAgY2FzZSAxMTg6CisgICAgICAv KiBzeXNfc2lncmV0dXJuICovCisgICAgY2FzZSAxMTk6CisgICAgICAvKiBz eXNfY2xvbmUgKi8KKyAgICBjYXNlIDEyMDoKKyAgICAgIC8qIHN5c19zZXRk b21haW5uYW1lICovCisgICAgY2FzZSAxMjE6CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX25ld3VuYW1lICovCisgICAgY2FzZSAxMjI6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX25ld191 dHNuYW1lKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX21vZGlmeV9sZHQgKi8KKyAgICBjYXNlIDEyMzoKKyAgICAgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEs IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyID09 IDAgfHwgdG1wdTMyID09IDIpCisJeworCSAgdWludDMyX3QgcHRyLCBieXRl Y291bnQ7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiBwdHIpOworCSAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJ CSAgICAgKGdkYl9ieXRlICopICYgYnl0ZWNvdW50KTsKKwkgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKHB0ciwgYnl0ZWNvdW50KSkKKwkgICAg cmV0dXJuIC0xOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf YWRqdGltZXggKi8KKyAgICBjYXNlIDEyNDoKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfdGltZXgpKQorCXJldHVybiAt MTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbXByb3RlY3QgKi8K KyAgICBjYXNlIDEyNToKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf c2lncHJvY21hc2sgKi8KKyAgICBjYXNlIDEyNjoKKyAgICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2xkX3NpZ3NldF90KSkK KwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX25p X3N5c2NhbGwgKi8KKyAgICBjYXNlIDEyNzoKKyAgICAgIC8qIHN5c19pbml0 X21vZHVsZSAqLworICAgIGNhc2UgMTI4OgorICAgICAgLyogc3lzX2RlbGV0 ZV9tb2R1bGUgKi8KKyAgICBjYXNlIDEyOToKKyAgICAgIC8qIHN5c19uaV9z eXNjYWxsICovCisgICAgY2FzZSAxMzA6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX3F1b3RhY3RsICovCisgICAgY2FzZSAxMzE6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcx LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgc3dpdGNoICh0bXB1 MzIpCisJeworCWNhc2UgUkVDT1JEX1FfR0VURk1UOgorCSAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwKKwkJCSAg ICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgNCkpCisJICAgIHJldHVybiAtMTsK KwkgIGJyZWFrOworCWNhc2UgUkVDT1JEX1FfR0VUSU5GTzoKKwkgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzQsCisJ CQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfbWVtX2Rx aW5mbykpCisJICAgIHJldHVybiAtMTsKKwkgIGJyZWFrOworCWNhc2UgUkVD T1JEX1FfR0VUUVVPVEE6CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmc0LAorCQkJICAgICAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX2lmX2RxYmxrKSkKKwkgICAgcmV0dXJuIC0x OworCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfUV9YR0VUUVNUQVQ6CisJY2Fz ZSBSRUNPUkRfUV9YR0VUUVVPVEE6CisJICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc0LAorCQkJICAgICAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2ZzX3F1b3RhX3N0YXQpKQorCSAg ICByZXR1cm4gLTE7CisJICBicmVhazsKKwl9CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX2dldHBnaWQgKi8KKyAgICBjYXNlIDEzMjoKKyAgICAg IC8qIHN5c19mY2hkaXIgKi8KKyAgICBjYXNlIDEzMzoKKyAgICAgIC8qIHN5 c19iZGZsdXNoICovCisgICAgY2FzZSAxMzQ6CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX3N5c2ZzICovCisgICAgY2FzZSAxMzU6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcx LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMiA9 PSAyKQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisJICAvKlhYWCB0aGUgc2l6ZSBvZiBtZW1vcnkgaXMgbm90IHZlcnkg Y2xlYXIuICAqLworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCAxMCkpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBicmVh azsKKworICAgICAgLyogc3lzX3BlcnNvbmFsaXR5ICovCisgICAgY2FzZSAx MzY6CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMTM3 OgorICAgICAgLyogc3lzX3NldGZzdWlkMTYgKi8KKyAgICBjYXNlIDEzODoK KyAgICAgIC8qIHN5c19zZXRmc2dpZDE2ICovCisgICAgY2FzZSAxMzk6Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX2xsc2VlayAqLworICAgIGNh c2UgMTQwOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnNCwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV9sb2ZmX3QpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBzeXNfZ2V0ZGVudHMgKi8KKyAgICBjYXNlIDE0MToKKyAg ICAgIHsKKwl1aW50MzJfdCBjb3VudDsKKwlyZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKwlyZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiBjb3VudCk7CisJ aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX2RpcmVudCAqIGNvdW50KSkKKwkgIHJldHVybiAtMTsKKyAgICAgIH0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2VsZWN0ICovCisgICAg Y2FzZSAxNDI6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0 ZGVwLT5zaXplX2ZkX3NldCkpCisJcmV0dXJuIC0xOworICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9mZF9zZXQpKQorCXJl dHVybiAtMTsKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzQsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRk ZXAtPnNpemVfZmRfc2V0KSkKKwlyZXR1cm4gLTE7CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc1LCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3RpbWV2YWwpKQorCXJl dHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZmxvY2sg Ki8KKyAgICBjYXNlIDE0MzoKKyAgICAgIC8qIHN5c19tc3luYyAqLworICAg IGNhc2UgMTQ0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19yZWFk diAqLworICAgIGNhc2UgMTQ1OgorICAgICAgeworCXVpbnQzMl90IHZlYzsK Kwl1aW50MzJfdCB2bGVuOworCXN0cnVjdCByZWNvcmRfaW92ZWMKKwl7CisJ ICB1aW50MzJfdCBpb3ZfYmFzZTsKKwkgIHVpbnQzMl90IGlvdl9sZW47CisJ fSBpb3Y7CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdmVjKTsKKwlpZiAodmVjKQor CSAgeworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmczLAorCQkJICAgICAgIChnZGJfYnl0ZSAqKSAmIHZsZW4p OworCSAgICBmb3IgKHRtcHUzMiA9IDA7IHRtcHUzMiA8IHZsZW47IHRtcHUz MisrKQorCSAgICAgIHsKKwkJaWYgKHRhcmdldF9yZWFkX21lbW9yeQorCQkg ICAgKHZlYywgKGdkYl9ieXRlICopICYgaW92LCBzaXplb2YgKHN0cnVjdCBy ZWNvcmRfaW92ZWMpKSkKKwkJICB7CisJCSAgICBpZiAocmVjb3JkX2RlYnVn KQorCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJ CQkJCSAgIlByb2Nlc3MgcmVjb3JkOiBlcnJvciByZWFkaW5nICIKKwkJCQkJ ICAibWVtb3J5IGF0IGFkZHIgPSAweCVzIGxlbiA9ICVkLlxuIiwKKwkJCQkJ ICBwYWRkcl9ueiAodmVjKSwKKwkJCQkJICBzaXplb2YgKHN0cnVjdCByZWNv cmRfaW92ZWMpKTsKKwkJICAgIHJldHVybiAtMTsKKwkJICB9CisJCWlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGlvdi5pb3ZfYmFzZSwgaW92Lmlv dl9sZW4pKQorCQkgIHJldHVybiAtMTsKKwkJdmVjICs9IHNpemVvZiAoc3Ry dWN0IHJlY29yZF9pb3ZlYyk7CisJICAgICAgfQorCSAgfQorICAgICAgfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c193cml0ZXYgKi8KKyAgICBj YXNlIDE0NjoKKyAgICAgIC8qIHN5c19nZXRzaWQgKi8KKyAgICBjYXNlIDE0 NzoKKyAgICAgIC8qIHN5c19mZGF0YXN5bmMgKi8KKyAgICBjYXNlIDE0ODoK KyAgICAgIC8qIHN5c19zeXNjdGwgKi8KKyAgICBjYXNlIDE0OToKKyAgICAg IC8qIHN5c19tbG9jayAqLworICAgIGNhc2UgMTUwOgorICAgICAgLyogc3lz X211bmxvY2sgKi8KKyAgICBjYXNlIDE1MToKKyAgICAgIC8qIHN5c19tbG9j a2FsbCAqLworICAgIGNhc2UgMTUyOgorICAgICAgLyogc3lzX211bmxvY2th bGwgKi8KKyAgICBjYXNlIDE1MzoKKyAgICAgIC8qIHN5c19zY2hlZF9zZXRw YXJhbSAqLworICAgIGNhc2UgMTU0OgorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19zY2hlZF9nZXRwYXJhbSAqLworICAgIGNhc2UgMTU1OgorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+ YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQp KQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf c2NoZWRfc2V0c2NoZWR1bGVyICovCisgICAgY2FzZSAxNTY6CisgICAgICAv KiBzeXNfc2NoZWRfZ2V0c2NoZWR1bGVyICovCisgICAgY2FzZSAxNTc6Cisg ICAgICAvKiBzeXNfc2NoZWRfeWllbGQgKi8KKyAgICBjYXNlIDE1ODoKKyAg ICAgIC8qIHN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4ICovCisgICAgY2Fz ZSAxNTk6CisgICAgICAvKiBzeXNfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAq LworICAgIGNhc2UgMTYwOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgKi8KKyAgICBjYXNlIDE2MToKKyAg ICAgIC8qIHN5c19uYW5vc2xlZXAgKi8KKyAgICBjYXNlIDE2MjoKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfdGltZXNw ZWMpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfbXJlbWFwICovCisgICAgY2FzZSAxNjM6CisgICAgICAvKiBzeXNfc2V0 cmVzdWlkMTYgKi8KKyAgICBjYXNlIDE2NDoKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfZ2V0cmVzdWlkMTYgKi8KKyAgICBjYXNlIDE2NToKKyAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2xk X3VpZF90KSkKKwlyZXR1cm4gLTE7CisgICAgICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAodG1wdTMyLCB0ZGVwLT5zaXplX29sZF91aWRfdCkpCisJcmV0dXJuIC0x OworICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6 ZV9vbGRfdWlkX3QpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfdm04NiAqLworICAgIGNhc2UgMTY2OgorICAgICAgLyog c3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDE2NzoKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfcG9sbCAqLworICAgIGNhc2UgMTY4OgorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+ YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1 MzIpCisJeworCSAgdWludDMyX3QgbmZkczsKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIG5mZHMpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3BvbGxmZCAqIG5mZHMpKQor CSAgICByZXR1cm4gLTE7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19uZnNzZXJ2Y3RsICovCisgICAgY2FzZSAxNjk6CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMiA9PSA3 IHx8IHRtcHUzMiA9PSA4KQorCXsKKwkgIHVpbnQzMl90IHJzaXplOworCSAg aWYgKHRtcHUzMiA9PSA3KQorCSAgICByc2l6ZSA9IHRkZXAtPnNpemVfTkZT X0ZIU0laRTsKKwkgIGVsc2UKKwkgICAgcnNpemUgPSB0ZGVwLT5zaXplX2tu ZnNkX2ZoOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg cnNpemUpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19zZXRyZXNnaWQxNiAqLworICAgIGNhc2UgMTcwOgor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRyZXNnaWQxNiAqLwor ICAgIGNhc2UgMTcxOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV9vbGRfZ2lkX3QpKQorCXJldHVybiAtMTsKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2xkX2dp ZF90KSkKKwlyZXR1cm4gLTE7CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX29sZF9naWRfdCkpCisJcmV0dXJuIC0xOwor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19wcmN0bCAqLworICAgIGNh c2UgMTcyOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIHN3aXRjaCAodG1wdTMyKQorCXsKKwljYXNlIDI6CisJICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJ ICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2ludCkpCisJ ICAgIHJldHVybiAtMTsKKwkgIGJyZWFrOworCWNhc2UgMTY6CisJICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAor CQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX1RBU0tf Q09NTV9MRU4pKQorCSAgICByZXR1cm4gLTE7CisJICBicmVhazsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX3J0X3NpZ3JldHVybiAqLwor ICAgIGNhc2UgMTczOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19y dF9zaWdhY3Rpb24gKi8KKyAgICBjYXNlIDE3NDoKKyAgICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfc2lnYWN0aW9uKSkKKwly ZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3J0X3Np Z3Byb2NtYXNrICovCisgICAgY2FzZSAxNzU6CisgICAgICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3NpZ3NldF90KSkKKwlyZXR1 cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3J0X3NpZ3Bl bmRpbmcgKi8KKyAgICBjYXNlIDE3NjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIHVpbnQz Ml90IHNpZ3NldHNpemU7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgICAoZ2RiX2J5dGUgKikg JiBzaWdzZXRzaXplKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgc2lnc2V0c2l6ZSkpCisJICAgIHJldHVybiAtMTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3J0X3NpZ3RpbWVkd2Fp dCAqLworICAgIGNhc2UgMTc3OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgdGRlcC0+c2l6ZV9zaWdpbmZvX3QpKQorCXJldHVybiAtMTsK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcnRfc2lncXVldWVpbmZv ICovCisgICAgY2FzZSAxNzg6CisgICAgICAvKiBzeXNfcnRfc2lnc3VzcGVu ZCAqLworICAgIGNhc2UgMTc5OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19wcmVhZDY0ICovCisgICAgY2FzZSAxODA6CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMikKKwl7CisJ ICB1aW50MzJfdCBjb3VudDsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAq KSAmIGNvdW50KTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgY291bnQpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19wd3JpdGU2NCAqLworICAgIGNhc2Ug MTgxOgorICAgICAgLyogc3lzX2Nob3duMTYgKi8KKyAgICBjYXNlIDE4MjoK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0Y3dkICovCisgICAg Y2FzZSAxODM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHRtcHUzMikKKwl7CisJICB1aW50MzJfdCBzaXplOworCSAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MiwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgc2l6ZSk7CisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHNpemUpKQorCSAgICBy ZXR1cm4gLTE7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19j YXBnZXQgKi8KKyAgICBjYXNlIDE4NDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfY2FwX3VzZXJfZGF0YV90KSkKKwly ZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2NhcHNl dCAqLworICAgIGNhc2UgMTg1OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19zaWdhbHRzdGFjayAqLworICAgIGNhc2UgMTg2OgorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9zdGFja190KSkK KwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3Nl bmRmaWxlICovCisgICAgY2FzZSAxODc6CisgICAgICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX29mZl90KSkKKwlyZXR1cm4gLTE7 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8K KyAgICBjYXNlIDE4ODoKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisg ICAgY2FzZSAxODk6CisgICAgICAvKiBzeXNfdmZvcmsgKi8KKyAgICBjYXNl IDE5MDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0cmxpbWl0 ICovCisgICAgY2FzZSAxOTE6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX3JsaW1pdCkpCisJcmV0dXJuIC0xOworICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19tbWFwMiAqLworICAgIGNhc2Ug MTkyOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c190cnVuY2F0ZTY0 ICovCisgICAgY2FzZSAxOTM6CisgICAgICAvKiBzeXNfZnRydW5jYXRlNjQg Ki8KKyAgICBjYXNlIDE5NDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfc3RhdDY0ICovCisgICAgY2FzZSAxOTU6CisgICAgICAvKiBzeXNfbHN0 YXQ2NCAqLworICAgIGNhc2UgMTk2OgorICAgICAgLyogc3lzX2ZzdGF0NjQg Ki8KKyAgICBjYXNlIDE5NzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIHRkZXAtPnNpemVfc3RhdDY0KSkKKwlyZXR1cm4gLTE7CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX2xjaG93biAqLworICAgIGNhc2Ug MTk4OgorICAgICAgLyogc3lzX2dldHVpZCAqLworICAgIGNhc2UgMTk5Ogor ICAgICAgLyogc3lzX2dldGdpZCAqLworICAgIGNhc2UgMjAwOgorICAgICAg Lyogc3lzX2dldGV1aWQgKi8KKyAgICBjYXNlIDIwMToKKyAgICAgIC8qIHN5 c19nZXRlZ2lkICovCisgICAgY2FzZSAyMDI6CisgICAgICAvKiBzeXNfc2V0 cmV1aWQgKi8KKyAgICBjYXNlIDIwMzoKKyAgICAgIC8qIHN5c19zZXRyZWdp ZCAqLworICAgIGNhc2UgMjA0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19nZXRncm91cHMgKi8KKyAgICBjYXNlIDIwNToKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQorCXsK KwkgIGludCBnaWRzZXRzaXplOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMSwKKwkJCSAgICAgKGdkYl9ieXRl ICopICYgZ2lkc2V0c2l6ZSk7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtCisJICAgICAgKHRtcHUzMiwgdGRlcC0+c2l6ZV9naWRfdCAqIGdp ZHNldHNpemUpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19zZXRncm91cHMgKi8KKyAgICBjYXNlIDIwNjoK KyAgICAgIC8qIHN5c19mY2hvd24gKi8KKyAgICBjYXNlIDIwNzoKKyAgICAg IC8qIHN5c19zZXRyZXN1aWQgKi8KKyAgICBjYXNlIDIwODoKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfZ2V0cmVzdWlkICovCisgICAgY2FzZSAy MDk6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX3VpZF90KSkKKwlyZXR1cm4gLTE7CisgICAgICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3VpZF90KSkKKwlyZXR1cm4gLTE7 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0 ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXpl X3VpZF90KSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX3NldHJlc2dpZCAqLworICAgIGNhc2UgMjEwOgorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c19nZXRyZXNnaWQgKi8KKyAgICBjYXNlIDIx MToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNp emVfZ2lkX3QpKQorCXJldHVybiAtMTsKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfZ2lkX3QpKQorCXJldHVybiAtMTsK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf Z2lkX3QpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfY2hvd24gKi8KKyAgICBjYXNlIDIxMjoKKyAgICAgIC8qIHN5c19z ZXR1aWQgKi8KKyAgICBjYXNlIDIxMzoKKyAgICAgIC8qIHN5c19zZXRnaWQg Ki8KKyAgICBjYXNlIDIxNDoKKyAgICAgIC8qIHN5c19zZXRmc3VpZCAqLwor ICAgIGNhc2UgMjE1OgorICAgICAgLyogc3lzX3NldGZzZ2lkICovCisgICAg Y2FzZSAyMTY6CisgICAgICAvKiBzeXNfcGl2b3Rfcm9vdCAqLworICAgIGNh c2UgMjE3OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19taW5jb3Jl ICovCisgICAgY2FzZSAyMTg6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX1BBR0VfU0laRSkpCisJcmV0dXJuIC0xOwor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19tYWR2aXNlICovCisgICAg Y2FzZSAyMTk6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2dldGRl bnRzNjQgKi8KKyAgICBjYXNlIDIyMDoKKyAgICAgIHsKKwl1aW50MzJfdCBj b3VudDsKKwlyZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0 ZGVwLT5hcmcyLAorCQkJICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwly ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcz LCAoZ2RiX2J5dGUgKikgJiBjb3VudCk7CisJaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2RpcmVudDY0ICogY291 bnQpKQorCSAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19mY250bDY0ICovCisgICAgY2FzZSAyMjE6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgc3dpdGNoICh0 bXB1MzIpCisJeworCWNhc2UgRl9HRVRMSzY0OgorCSAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9mbG9jazY0KSkKKwkg ICAgcmV0dXJuIC0xOworCSAgYnJlYWs7CisJY2FzZSBGX1NFVExLNjQ6CisJ Y2FzZSBGX1NFVExLVzY0OgorCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIGdv dG8gc3lzX2ZjbnRsOworCSAgYnJlYWs7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSAyMjI6Cisg ICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMjIzOgorICAg ICAgLyogc3lzX2dldHRpZCAqLworICAgIGNhc2UgMjI0OgorICAgICAgLyog c3lzX3JlYWRhaGVhZCAqLworICAgIGNhc2UgMjI1OgorICAgICAgLyogc3lz X3NldHhhdHRyICovCisgICAgY2FzZSAyMjY6CisgICAgICAvKiBzeXNfbHNl dHhhdHRyICovCisgICAgY2FzZSAyMjc6CisgICAgICAvKiBzeXNfZnNldHhh dHRyICovCisgICAgY2FzZSAyMjg6CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2dldHhhdHRyICovCisgICAgY2FzZSAyMjk6CisgICAgICAvKiBz eXNfbGdldHhhdHRyICovCisgICAgY2FzZSAyMzA6CisgICAgICAvKiBzeXNf ZmdldHhhdHRyICovCisgICAgY2FzZSAyMzE6CisgICAgICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMikKKwl7CisJICB1 aW50MzJfdCBzaXplOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgdGRlcC0+YXJnNCwKKwkJCSAgICAgKGdkYl9ieXRlICopICYg c2l6ZSk7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1 MzIsIHNpemUpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19saXN0eGF0dHIgKi8KKyAgICBjYXNlIDIzMjoK KyAgICAgIC8qIHN5c19sbGlzdHhhdHRyICovCisgICAgY2FzZSAyMzM6Cisg ICAgICAvKiBzeXNfZmxpc3R4YXR0ciAqLworICAgIGNhc2UgMjM0OgorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+ YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1 MzIpCisJeworCSAgdWludDMyX3Qgc2l6ZTsKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIHNpemUpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCBzaXplKSkKKwkgICAgcmV0dXJuIC0xOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcmVtb3ZleGF0dHIgKi8K KyAgICBjYXNlIDIzNToKKyAgICAgIC8qIHN5c19scmVtb3ZleGF0dHIgKi8K KyAgICBjYXNlIDIzNjoKKyAgICAgIC8qIHN5c19mcmVtb3ZleGF0dHIgKi8K KyAgICBjYXNlIDIzNzoKKyAgICAgIC8qIHN5c190a2lsbCAqLworICAgIGNh c2UgMjM4OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zZW5kZmls ZTY0ICovCisgICAgY2FzZSAyMzk6CisgICAgICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAodG1wdTMyLCB0ZGVwLT5zaXplX2xvZmZfdCkpCisJcmV0dXJuIC0xOwor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19mdXRleCAqLworICAgIGNh c2UgMjQwOgorICAgICAgLyogc3lzX3NjaGVkX3NldGFmZmluaXR5ICovCisg ICAgY2FzZSAyNDE6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3Nj aGVkX2dldGFmZmluaXR5ICovCisgICAgY2FzZSAyNDI6CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMikKKwl7 CisJICB1aW50MzJfdCBsZW47CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiBsZW4p OworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBs ZW4pKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19zZXRfdGhyZWFkX2FyZWEgKi8KKyAgICBjYXNlIDI0MzoK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf aW50KSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX2dldF90aHJlYWRfYXJlYSAqLworICAgIGNhc2UgMjQ0OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV91c2VyX2Rl c2MpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfaW9fc2V0dXAgKi8KKyAgICBjYXNlIDI0NToKKyAgICAgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfbG9uZykpCisJcmV0dXJu IC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19pb19kZXN0cm95 ICovCisgICAgY2FzZSAyNDY6CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX2lvX2dldGV2ZW50cyAqLworICAgIGNhc2UgMjQ3OgorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJ eworCSAgaW50MzJfdCBucjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIG5yKTsK KwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgbnIg KiB0ZGVwLT5zaXplX2lvX2V2ZW50KSkKKwkgICAgcmV0dXJuIC0xOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfaW9fc3VibWl0ICovCisg ICAgY2FzZSAyNDg6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHRtcHUzMikKKwl7CisJICBpbnQzMl90IGksIG5yOwor CSAgdWludDMyX3QgKmlvY2JwOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgbnIp OworCSAgaW9jYnAgPSAodWludDMyX3QgKikgYWxsb2NhIChuciAqIHRkZXAt PnNpemVfaW50KTsKKwkgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkgICAg ICAodG1wdTMyLCAoZ2RiX2J5dGUgKikgaW9jYnAsIG5yICogdGRlcC0+c2l6 ZV9pbnQpKQorCSAgICB7CisJICAgICAgaWYgKHJlY29yZF9kZWJ1ZykKKwkJ ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCSAgICAiUHJv Y2VzcyByZWNvcmQ6IGVycm9yIHJlYWRpbmcgbWVtb3J5ICIKKwkJCQkgICAg ImF0IGFkZHIgPSAweCVzIGxlbiA9ICVkLlxuIiwKKwkJCQkgICAgcGFkZHJf bnogKHRtcHUzMiksIG5yICogdGRlcC0+c2l6ZV9pbnQpOworCSAgICAgIHJl dHVybiAtMTsKKwkgICAgfQorCSAgZm9yIChpID0gMDsgaSA8IG5yOyBpKysp CisJICAgIHsKKwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt IChpb2NicFtpXSwgdGRlcC0+c2l6ZV9pb2NiKSkKKwkJcmV0dXJuIC0xOwor CSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19pb19j YW5jZWwgKi8KKyAgICBjYXNlIDI0OToKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfaW9fZXZlbnQpKQorCXJldHVybiAt MTsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZmFkdmlzZTY0ICov CisgICAgY2FzZSAyNTA6CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLwor ICAgIGNhc2UgMjUxOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19l eGl0X2dyb3VwICovCisgICAgY2FzZSAyNTI6CisgICAgICB7CisJaW50IHE7 CisJdGFyZ2V0X3Rlcm1pbmFsX291cnMgKCk7CisJcSA9CisJICB5cXVlcnkg KF8oIlRoZSBuZXh0IGluc3RydWN0aW9uIGlzIHN5c2NhbGwgZXhpdF9ncm91 cC4gICIKKwkJICAgICJJdCB3aWxsIG1ha2UgdGhlIHByb2dyYW0gZXhpdC4g ICIKKwkJICAgICJEbyB5b3Ugd2FudCB0byBzdG9wIHRoZSBwcm9ncmFtPyIp KTsKKwl0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7CisJaWYgKHEpCisJ ICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfbG9va3VwX2Rjb29raWUgKi8KKyAgICBjYXNlIDI1MzoKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMy KQorCXsKKwkgIHVpbnQzMl90IGxlbjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAm IGxlbik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1 MzIsIGxlbikpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX2Vwb2xsX2NyZWF0ZSAqLworICAgIGNhc2UgMjU0 OgorICAgICAgLyogc3lzX2Vwb2xsX2N0bCAqLworICAgIGNhc2UgMjU1Ogor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19lcG9sbF93YWl0ICovCisg ICAgY2FzZSAyNTY6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHRtcHUzMikKKwl7CisJICBpbnQzMl90IG1heGV2ZW50 czsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIG1heGV2ZW50cyk7 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAgICAgKHRt cHUzMiwgbWF4ZXZlbnRzICogdGRlcC0+c2l6ZV9lcG9sbF9ldmVudCkpCisJ ICAgIHJldHVybiAtMTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX3JlbWFwX2ZpbGVfcGFnZXMgKi8KKyAgICBjYXNlIDI1NzoKKyAgICAg IC8qIHN5c19zZXRfdGlkX2FkZHJlc3MgKi8KKyAgICBjYXNlIDI1ODoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfdGltZXJfY3JlYXRlICovCisg ICAgY2FzZSAyNTk6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMy LCB0ZGVwLT5zaXplX2ludCkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c190aW1lcl9zZXR0aW1lICovCisgICAgY2FzZSAy NjA6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmc0LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX2l0aW1lcnNwZWMpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBzeXNfdGltZXJfZ2V0dGltZSAqLworICAgIGNhc2UgMjYx OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6 ZV9pdGltZXJzcGVjKSkKKwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX3RpbWVyX2dldG92ZXJydW4gKi8KKyAgICBjYXNlIDI2 MjoKKyAgICAgIC8qIHN5c190aW1lcl9kZWxldGUgKi8KKyAgICBjYXNlIDI2 MzoKKyAgICAgIC8qIHN5c19jbG9ja19zZXR0aW1lICovCisgICAgY2FzZSAy NjQ6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2Nsb2NrX2dldHRp bWUgKi8KKyAgICBjYXNlIDI2NToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt ICh0bXB1MzIsIHRkZXAtPnNpemVfdGltZXNwZWMpKQorCXJldHVybiAtMTsK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfY2xvY2tfZ2V0cmVzICov CisgICAgY2FzZSAyNjY6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCB0ZGVwLT5zaXplX3RpbWVzcGVjKSkKKwlyZXR1cm4gLTE7CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX2Nsb2NrX25hbm9zbGVlcCAqLwor ICAgIGNhc2UgMjY3OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV90aW1lc3BlYykpCisJcmV0dXJuIC0xOworICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19zdGF0ZnM2NCAqLworICAgIGNhc2Ug MjY4OgorICAgICAgLyogc3lzX2ZzdGF0ZnM2NCAqLworICAgIGNhc2UgMjY5 OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm IChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6 ZV9zdGF0ZnM2NCkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c190Z2tpbGwgKi8KKyAgICBjYXNlIDI3MDoKKyAgICAgIC8q IHN5c191dGltZXMgKi8KKyAgICBjYXNlIDI3MToKKyAgICAgIC8qIHN5c19m YWR2aXNlNjRfNjQgKi8KKyAgICBjYXNlIDI3MjoKKyAgICAgIC8qIHN5c19u aV9zeXNjYWxsICovCisgICAgY2FzZSAyNzM6CisgICAgICAvKiBzeXNfbWJp bmQgKi8KKyAgICBjYXNlIDI3NDoKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfZ2V0X21lbXBvbGljeSAqLworICAgIGNhc2UgMjc1OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQor CXJldHVybiAtMTsKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IG1heG5vZGU7 CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiBtYXhub2RlKTsKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgbWF4bm9k ZSAqIHRkZXAtPnNpemVfbG9uZykpCisJICAgIHJldHVybiAtMTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NldF9tZW1wb2xpY3kgKi8K KyAgICBjYXNlIDI3NjoKKyAgICAgIC8qIHN5c19tcV9vcGVuICovCisgICAg Y2FzZSAyNzc6CisgICAgICAvKiBzeXNfbXFfdW5saW5rICovCisgICAgY2Fz ZSAyNzg6CisgICAgICAvKiBzeXNfbXFfdGltZWRzZW5kICovCisgICAgY2Fz ZSAyNzk6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21xX3RpbWVk cmVjZWl2ZSAqLworICAgIGNhc2UgMjgwOgorICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWlu dDMyX3QgbXNnX2xlbjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAm IG1zZ19sZW4pOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCBtc2dfbGVuKSkKKwkgICAgcmV0dXJuIC0xOworCX0KKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzQsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfaW50KSkK KwlyZXR1cm4gLTE7CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21x X25vdGlmeSAqLworICAgIGNhc2UgMjgxOgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19tcV9nZXRzZXRhdHRyICovCisgICAgY2FzZSAyODI6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX21x X2F0dHIpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfa2V4ZWNfbG9hZCAqLworICAgIGNhc2UgMjgzOgorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c193YWl0aWQgKi8KKyAgICBjYXNlIDI4NDoK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf c2lnaW5mbykpCisJcmV0dXJuIC0xOworICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNSwgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9ydXNhZ2UpKQorCXJldHVybiAtMTsK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLwor ICAgIGNhc2UgMjg1OgorICAgICAgLyogc3lzX2FkZF9rZXkgKi8KKyAgICBj YXNlIDI4NjoKKyAgICAgIC8qIHN5c19yZXF1ZXN0X2tleSAqLworICAgIGNh c2UgMjg3OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19rZXljdGwg Ki8KKyAgICBjYXNlIDI4ODoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAodG1wdTMyID09IDYgfHwgdG1wdTMyID09IDEx KQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisJICBpZiAodG1wdTMyKQorCSAgICB7CisJICAgICAgdWludDMyX3QgYnVm bGVuOworCSAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzQsCisJCQkJIChnZGJfYnl0ZSAqKSAmIGJ1Zmxlbik7 CisJICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMy LCBidWZsZW4pKQorCQlyZXR1cm4gLTE7CisJICAgIH0KKwl9CisgICAgICBi cmVhazsKKworICAgICAgLyogc3lzX2lvcHJpb19zZXQgKi8KKyAgICBjYXNl IDI4OToKKyAgICAgIC8qIHN5c19pb3ByaW9fZ2V0ICovCisgICAgY2FzZSAy OTA6CisgICAgICAvKiBzeXNfaW5vdGlmeV9pbml0ICovCisgICAgY2FzZSAy OTE6CisgICAgICAvKiBzeXNfaW5vdGlmeV9hZGRfd2F0Y2ggKi8KKyAgICBj YXNlIDI5MjoKKyAgICAgIC8qIHN5c19pbm90aWZ5X3JtX3dhdGNoICovCisg ICAgY2FzZSAyOTM6CisgICAgICAvKiBzeXNfbWlncmF0ZV9wYWdlcyAqLwor ICAgIGNhc2UgMjk0OgorICAgICAgLyogc3lzX29wZW5hdCAqLworICAgIGNh c2UgMjk1OgorICAgICAgLyogc3lzX21rZGlyYXQgKi8KKyAgICBjYXNlIDI5 NjoKKyAgICAgIC8qIHN5c19ta25vZGF0ICovCisgICAgY2FzZSAyOTc6Cisg ICAgICAvKiBzeXNfZmNob3duYXQgKi8KKyAgICBjYXNlIDI5ODoKKyAgICAg IC8qIHN5c19mdXRpbWVzYXQgKi8KKyAgICBjYXNlIDI5OToKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfZnN0YXRhdDY0ICovCisgICAgY2FzZSAz MDA6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX3N0YXQ2NCkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c191bmxpbmthdCAqLworICAgIGNhc2UgMzAxOgorICAgICAg Lyogc3lzX3JlbmFtZWF0ICovCisgICAgY2FzZSAzMDI6CisgICAgICAvKiBz eXNfbGlua2F0ICovCisgICAgY2FzZSAzMDM6CisgICAgICAvKiBzeXNfc3lt bGlua2F0ICovCisgICAgY2FzZSAzMDQ6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX3JlYWRsaW5rYXQgKi8KKyAgICBjYXNlIDMwNToKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzMsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMy KQorCXsKKwkgIGludDMyX3QgYnVmc2l6OworCSAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwKKwkJCSAgICAgKGdk Yl9ieXRlICopICYgYnVmc2l6KTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9tZW0gKHRtcHUzMiwgYnVmc2l6KSkKKwkgICAgcmV0dXJuIC0xOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZmNobW9kYXQgKi8K KyAgICBjYXNlIDMwNjoKKyAgICAgIC8qIHN5c19mYWNjZXNzYXQgKi8KKyAg ICBjYXNlIDMwNzoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcHNl bGVjdDYgKi8KKyAgICBjYXNlIDMwODoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfZmRfc2V0KSkKKwlyZXR1cm4gLTE7 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0 ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXpl X2ZkX3NldCkpCisJcmV0dXJuIC0xOworICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9mZF9zZXQpKQorCXJldHVybiAtMTsK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzUsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf dGltZXNwZWMpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfcHBvbGwgKi8KKyAgICBjYXNlIDMwOToKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyKQorCXsK KwkgIHVpbnQzMl90IG5mZHM7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgICAoZ2RiX2J5dGUg KikgJiBuZmRzKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgdGRlcC0+c2l6ZV9wb2xsZmQgKiBuZmRzKSkKKwkgICAgcmV0 dXJuIC0xOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIs IHRkZXAtPnNpemVfdGltZXNwZWMpKQorCXJldHVybiAtMTsKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfdW5zaGFyZSAqLworICAgIGNhc2UgMzEw OgorICAgICAgLyogc3lzX3NldF9yb2J1c3RfbGlzdCAqLworICAgIGNhc2Ug MzExOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRfcm9idXN0 X2xpc3QgKi8KKyAgICBjYXNlIDMxMjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfaW50KSkKKwlyZXR1cm4gLTE7Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2lu dCkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19zcGxpY2UgKi8KKyAgICBjYXNlIDMxMzoKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfbG9mZl90KSkKKwlyZXR1cm4g LTE7CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmc0LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX2xvZmZfdCkpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19zeW5jX2ZpbGVfcmFuZ2UgKi8KKyAgICBjYXNlIDMxNDoK KyAgICAgIC8qIHN5c190ZWUgKi8KKyAgICBjYXNlIDMxNToKKyAgICAgIC8q IHN5c192bXNwbGljZSAqLworICAgIGNhc2UgMzE2OgorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19tb3ZlX3BhZ2VzICovCisgICAgY2FzZSAzMTc6 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0 ZGVwLT5hcmc1LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYg KHRtcHUzMikKKwl7CisJICB1aW50MzJfdCBucl9wYWdlczsKKwkgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJ CQkgICAgIChnZGJfYnl0ZSAqKSAmIG5yX3BhZ2VzKTsKKwkgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgbnJfcGFnZXMgKiB0ZGVw LT5zaXplX2ludCkpCisJICAgIHJldHVybiAtMTsKKwl9CisgICAgICBicmVh azsKKworICAgICAgLyogc3lzX2dldGNwdSAqLworICAgIGNhc2UgMzE4Ogor ICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRl cC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9p bnQpKQorCXJldHVybiAtMTsKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIHRkZXAtPnNpemVfaW50KSkKKwlyZXR1cm4gLTE7CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcz LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3Vsb25nICog MikpCisJcmV0dXJuIC0xOworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19lcG9sbF9wd2FpdCAqLworICAgIGNhc2UgMzE5OgorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJewor CSAgaW50MzJfdCBtYXhldmVudHM7CisJICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2RiX2J5 dGUgKikgJiBtYXhldmVudHMpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbQorCSAgICAgICh0bXB1MzIsIG1heGV2ZW50cyAqIHRkZXAtPnNp emVfZXBvbGxfZXZlbnQpKQorCSAgICByZXR1cm4gLTE7CisJfQorICAgICAg YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGFuZCByZXBsYXkgdGFyZ2V0IGRvZXNu J3QgIgorCQkJICAgInN1cHBvcnQgc3lzY2FsbCBudW1iZXIgMHglMDh4XG4i KSwKKwkJCSB0bXB1MzIpOworICAgICAgcmV0dXJuIC0xOworICAgICAgYnJl YWs7CisgICAgfQorCisgIHJldHVybiAwOworfQotLS0gL2Rldi9udWxsCisr KyBiL2xpbnV4LXJlY29yZC5oCkBAIC0wLDAgKzEsMTcyIEBACisvKiBQcm9j ZXNzIHJlY29yZCBhbmQgcmVwbGF5IHRhcmdldCBjb2RlIGZvciBHTlUvTGlu dXguCisKKyAgIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWZuZGVmIF9M SU5VWF9SRUNPUkRfSF8KKyNkZWZpbmUgX0xJTlVYX1JFQ09SRF9IXworCit0 eXBlZGVmIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcF9zCit7CisgIC8qIFRo ZSBzaXplIG9mIHRoZSB0eXBlIHRoYXQgd2lsbCBiZSB1c2VkIGluIGEgc3lz dGVtIGNhbGwuICAqLworICBpbnQgc2l6ZV9fb2xkX2tlcm5lbF9zdGF0Owor ICBpbnQgc2l6ZV90bXM7CisgIGludCBzaXplX2xvZmZfdDsKKyAgaW50IHNp emVfZmxvY2s7CisgIGludCBzaXplX29sZG9sZF91dHNuYW1lOworICBpbnQg c2l6ZV91c3RhdDsKKyAgaW50IHNpemVfb2xkX3NpZ2FjdGlvbjsKKyAgaW50 IHNpemVfb2xkX3NpZ3NldF90OworICBpbnQgc2l6ZV9ybGltaXQ7CisgIGlu dCBzaXplX3J1c2FnZTsKKyAgaW50IHNpemVfdGltZXZhbDsKKyAgaW50IHNp emVfdGltZXpvbmU7CisgIGludCBzaXplX29sZF9naWRfdDsKKyAgaW50IHNp emVfb2xkX3VpZF90OworICBpbnQgc2l6ZV9mZF9zZXQ7CisgIGludCBzaXpl X2RpcmVudDsKKyAgaW50IHNpemVfZGlyZW50NjQ7CisgIGludCBzaXplX3N0 YXRmczsKKyAgaW50IHNpemVfc3RhdGZzNjQ7CisgIGludCBzaXplX3NvY2th ZGRyOworICBpbnQgc2l6ZV9pbnQ7CisgIGludCBzaXplX2xvbmc7CisgIGlu dCBzaXplX3Vsb25nOworICBpbnQgc2l6ZV9tc2doZHI7CisgIGludCBzaXpl X2l0aW1lcnZhbDsKKyAgaW50IHNpemVfc3RhdDsKKyAgaW50IHNpemVfb2xk X3V0c25hbWU7CisgIGludCBzaXplX3N5c2luZm87CisgIGludCBzaXplX21z cWlkX2RzOworICBpbnQgc2l6ZV9zaG1pZF9kczsKKyAgaW50IHNpemVfbmV3 X3V0c25hbWU7CisgIGludCBzaXplX3RpbWV4OworICBpbnQgc2l6ZV9tZW1f ZHFpbmZvOworICBpbnQgc2l6ZV9pZl9kcWJsazsKKyAgaW50IHNpemVfZnNf cXVvdGFfc3RhdDsKKyAgaW50IHNpemVfdGltZXNwZWM7CisgIGludCBzaXpl X3BvbGxmZDsKKyAgaW50IHNpemVfTkZTX0ZIU0laRTsKKyAgaW50IHNpemVf a25mc2RfZmg7CisgIGludCBzaXplX1RBU0tfQ09NTV9MRU47CisgIGludCBz aXplX3NpZ2FjdGlvbjsKKyAgaW50IHNpemVfc2lnc2V0X3Q7CisgIGludCBz aXplX3NpZ2luZm9fdDsKKyAgaW50IHNpemVfY2FwX3VzZXJfZGF0YV90Owor ICBpbnQgc2l6ZV9zdGFja190OworICBpbnQgc2l6ZV9vZmZfdDsKKyAgaW50 IHNpemVfc3RhdDY0OworICBpbnQgc2l6ZV9naWRfdDsKKyAgaW50IHNpemVf dWlkX3Q7CisgIGludCBzaXplX1BBR0VfU0laRTsKKyAgaW50IHNpemVfZmxv Y2s2NDsKKyAgaW50IHNpemVfdXNlcl9kZXNjOworICBpbnQgc2l6ZV9pb19l dmVudDsKKyAgaW50IHNpemVfaW9jYjsKKyAgaW50IHNpemVfZXBvbGxfZXZl bnQ7CisgIGludCBzaXplX2l0aW1lcnNwZWM7CisgIGludCBzaXplX21xX2F0 dHI7CisgIGludCBzaXplX3NpZ2luZm87CisKKyAgaW50IHNpemVfdGVybWlv czsKKyAgaW50IHNpemVfdGVybWlvczI7CisgIGludCBzaXplX3BpZF90Owor ICBpbnQgc2l6ZV93aW5zaXplOworICBpbnQgc2l6ZV9jaGFyOworICBpbnQg c2l6ZV9zZXJpYWxfc3RydWN0OworICBpbnQgc2l6ZV9zZXJpYWxfaWNvdW50 ZXJfc3RydWN0OworICBpbnQgc2l6ZV9oYXllc19lc3BfY29uZmlnOworCisg IC8qIFRoZSB2YWx1ZXMgb2YgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBzeXN0 ZW0gY2FsbCAic3lzX2lvY3RsIi4gICovCisgIGludCBpb2N0bF9UQ0dFVFM7 CisgIGludCBpb2N0bF9UQ1NFVFM7CisgIGludCBpb2N0bF9UQ1NFVFNXOwor ICBpbnQgaW9jdGxfVENTRVRTRjsKKyAgaW50IGlvY3RsX1RDR0VUQTsKKyAg aW50IGlvY3RsX1RDU0VUQTsKKyAgaW50IGlvY3RsX1RDU0VUQVc7CisgIGlu dCBpb2N0bF9UQ1NFVEFGOworICBpbnQgaW9jdGxfVENTQlJLOworICBpbnQg aW9jdGxfVENYT05DOworICBpbnQgaW9jdGxfVENGTFNIOworICBpbnQgaW9j dGxfVElPQ0VYQ0w7CisgIGludCBpb2N0bF9USU9DTlhDTDsKKyAgaW50IGlv Y3RsX1RJT0NTQ1RUWTsKKyAgaW50IGlvY3RsX1RJT0NHUEdSUDsKKyAgaW50 IGlvY3RsX1RJT0NTUEdSUDsKKyAgaW50IGlvY3RsX1RJT0NPVVRROworICBp bnQgaW9jdGxfVElPQ1NUSTsKKyAgaW50IGlvY3RsX1RJT0NHV0lOU1o7Cisg IGludCBpb2N0bF9USU9DU1dJTlNaOworICBpbnQgaW9jdGxfVElPQ01HRVQ7 CisgIGludCBpb2N0bF9USU9DTUJJUzsKKyAgaW50IGlvY3RsX1RJT0NNQklD OworICBpbnQgaW9jdGxfVElPQ01TRVQ7CisgIGludCBpb2N0bF9USU9DR1NP RlRDQVI7CisgIGludCBpb2N0bF9USU9DU1NPRlRDQVI7CisgIGludCBpb2N0 bF9GSU9OUkVBRDsKKyAgaW50IGlvY3RsX1RJT0NJTlE7CisgIGludCBpb2N0 bF9USU9DTElOVVg7CisgIGludCBpb2N0bF9USU9DQ09OUzsKKyAgaW50IGlv Y3RsX1RJT0NHU0VSSUFMOworICBpbnQgaW9jdGxfVElPQ1NTRVJJQUw7Cisg IGludCBpb2N0bF9USU9DUEtUOworICBpbnQgaW9jdGxfRklPTkJJTzsKKyAg aW50IGlvY3RsX1RJT0NOT1RUWTsKKyAgaW50IGlvY3RsX1RJT0NTRVREOwor ICBpbnQgaW9jdGxfVElPQ0dFVEQ7CisgIGludCBpb2N0bF9UQ1NCUktQOwor ICBpbnQgaW9jdGxfVElPQ1RUWUdTVFJVQ1Q7CisgIGludCBpb2N0bF9USU9D U0JSSzsKKyAgaW50IGlvY3RsX1RJT0NDQlJLOworICBpbnQgaW9jdGxfVElP Q0dTSUQ7CisgIGludCBpb2N0bF9UQ0dFVFMyOworICBpbnQgaW9jdGxfVENT RVRTMjsKKyAgaW50IGlvY3RsX1RDU0VUU1cyOworICBpbnQgaW9jdGxfVENT RVRTRjI7CisgIGludCBpb2N0bF9USU9DR1BUTjsKKyAgaW50IGlvY3RsX1RJ T0NTUFRMQ0s7CisgIGludCBpb2N0bF9GSU9OQ0xFWDsKKyAgaW50IGlvY3Rs X0ZJT0NMRVg7CisgIGludCBpb2N0bF9GSU9BU1lOQzsKKyAgaW50IGlvY3Rs X1RJT0NTRVJDT05GSUc7CisgIGludCBpb2N0bF9USU9DU0VSR1dJTEQ7Cisg IGludCBpb2N0bF9USU9DU0VSU1dJTEQ7CisgIGludCBpb2N0bF9USU9DR0xD S1RSTUlPUzsKKyAgaW50IGlvY3RsX1RJT0NTTENLVFJNSU9TOworICBpbnQg aW9jdGxfVElPQ1NFUkdTVFJVQ1Q7CisgIGludCBpb2N0bF9USU9DU0VSR0VU TFNSOworICBpbnQgaW9jdGxfVElPQ1NFUkdFVE1VTFRJOworICBpbnQgaW9j dGxfVElPQ1NFUlNFVE1VTFRJOworICBpbnQgaW9jdGxfVElPQ01JV0FJVDsK KyAgaW50IGlvY3RsX1RJT0NHSUNPVU5UOworICBpbnQgaW9jdGxfVElPQ0dI QVlFU0VTUDsKKyAgaW50IGlvY3RsX1RJT0NTSEFZRVNFU1A7CisgIGludCBp b2N0bF9GSU9RU0laRTsKKworICAvKiBUaGUgbnVtYmVyIG9mIHRoZSByZWdp c3RlcnMgdGhhdCBhcmUgdXNlZCBhcyB0aGUgYXJndW1lbnRzIG9mCisgICAg IGEgc3lzdGVtIGNhbGwuICAqLworICBpbnQgYXJnMTsKKyAgaW50IGFyZzI7 CisgIGludCBhcmczOworICBpbnQgYXJnNDsKKyAgaW50IGFyZzU7Cit9IGxp bnV4X3JlY29yZF90ZGVwX3Q7CisKK2V4dGVybiBpbnQgcmVjb3JkX2xpbnV4 X3N5c3RlbV9jYWxsIChpbnQgbnVtLCBsaW51eF9yZWNvcmRfdGRlcF90ICog dGRlcCk7CisKKyNlbmRpZiAvKiBfTElOVVhfUkVDT1JEX0hfICovCg== --001485f01ad4d25b470465ec4ff1--