From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [RFC PATCH 06/20] lib: Add video format information library Date: Tue, 19 Mar 2019 22:57:11 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B94689B96 for ; Tue, 19 Mar 2019 21:57:49 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , David Airlie , Maarten Lankhorst , Sean Paul , Maxime Ripard , Mauro Carvalho Chehab Cc: Sakari Ailus , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Paul Kocialkowski , Hans Verkuil , Laurent Pinchart , Thomas Petazzoni , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org TW92ZSB0aGUgRFJNIGZvcm1hdHMgQVBJIHRvIHR1cm4gdGhpcyBpbnRvIGEgbW9yZSBnZW5lcmlj IGltYWdlIGZvcm1hdHMgQVBJCnRvIGJlIGFibGUgdG8gbGV2ZXJhZ2UgaXQgaW50byBzb21lIG90 aGVyIHBsYWNlcyBvZiB0aGUga2VybmVsLCBzdWNoIGFzCnY0bDIgZHJpdmVycy4KClNpZ25lZC1v ZmYtYnk6IE1heGltZSBSaXBhcmQgPG1heGltZS5yaXBhcmRAYm9vdGxpbi5jb20+Ci0tLQogaW5j bHVkZS9saW51eC9pbWFnZS1mb3JtYXRzLmggfCAyNDAgKysrKysrKysrKystCiBsaWIvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogbGliL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgfCAgIDMgKy0KIGxpYi9pbWFnZS1mb3JtYXRzLXNlbGZ0ZXN0cy5jIHwgMzI2ICsrKysrKysr KysrKysrKy0KIGxpYi9pbWFnZS1mb3JtYXRzLmMgICAgICAgICAgIHwgNzYwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogNSBmaWxlcyBjaGFuZ2VkLCAxMzM2IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2ltYWdlLWZvcm1hdHMuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbWFnZS1mb3JtYXRzLXNlbGZ0ZXN0cy5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliL2ltYWdlLWZvcm1hdHMuYwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvaW1hZ2UtZm9ybWF0cy5oIGIvaW5jbHVkZS9saW51eC9pbWFnZS1mb3JtYXRzLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41M2ZkNzNhNzFiM2QKLS0tIC9kZXYv bnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2ltYWdlLWZvcm1hdHMuaApAQCAtMCwwICsxLDI0MCBA QAorI2lmbmRlZiBfSU1BR0VfRk9STUFUU19IXworI2RlZmluZSBfSU1BR0VfRk9STUFUU19IXwor CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworLyoqCisgKiBzdHJ1Y3QgaW1hZ2VfZm9ybWF0 X2luZm8gLSBpbmZvcm1hdGlvbiBhYm91dCBhIGltYWdlIGZvcm1hdAorICovCitzdHJ1Y3QgaW1h Z2VfZm9ybWF0X2luZm8geworCXVuaW9uIHsKKwkJLyoqCisJCSAqIEBkcm1fZm10OgorCQkgKgor CQkgKiBEUk0gNENDIGZvcm1hdCBpZGVudGlmaWVyIChEUk1fRk9STUFUXyopCisJCSAqLworCQl1 MzIgZHJtX2ZtdDsKKworCQkvKioKKwkJICogQGZvcm1hdDoKKwkJICoKKwkJICogRFJNIDRDQyBm b3JtYXQgaWRlbnRpZmllciAoRFJNX0ZPUk1BVF8qKS4gS2VwdAorCQkgKiBhcm91bmQgZm9yIGNv bXBhdGliaWxpdHkgcmVhc29ucyB3aXRoIHRoZSBjdXJyZW50CisJCSAqIERSTSBkcml2ZXJzLgor CQkgKi8KKwkJdTMyIGZvcm1hdDsKKwl9OworCisJLyoqCisJICogQGRlcHRoOgorCSAqCisJICog Q29sb3IgZGVwdGggKG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBleGNsdWRpbmcgcGFkZGluZyBi aXRzKSwKKwkgKiB2YWxpZCBmb3IgYSBzdWJzZXQgb2YgUkdCIGZvcm1hdHMgb25seS4gVGhpcyBp cyBhIGxlZ2FjeSBmaWVsZCwgZG8KKwkgKiBub3QgdXNlIGluIG5ldyBjb2RlIGFuZCBzZXQgdG8g MCBmb3IgbmV3IGZvcm1hdHMuCisJICovCisJdTggZGVwdGg7CisKKwkvKiogQG51bV9wbGFuZXM6 IE51bWJlciBvZiBjb2xvciBwbGFuZXMgKDEgdG8gMykgKi8KKwl1OCBudW1fcGxhbmVzOworCisJ dW5pb24geworCQkvKioKKwkJICogQGNwcDoKKwkJICoKKwkJICogTnVtYmVyIG9mIGJ5dGVzIHBl ciBwaXhlbCAocGVyIHBsYW5lKSwgdGhpcyBpcyBhbGlhc2VkIHdpdGgKKwkJICogQGNoYXJfcGVy X2Jsb2NrLiBJdCBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiB1c2luZyB0aGUKKwkJICogdHJp cGxldCBAY2hhcl9wZXJfYmxvY2ssIEBibG9ja193LCBAYmxvY2tfaCBmb3IgYmV0dGVyCisJCSAq IGRlc2NyaWJpbmcgdGhlIHBpeGVsIGZvcm1hdC4KKwkJICovCisJCXU4IGNwcFszXTsKKworCQkv KioKKwkJICogQGNoYXJfcGVyX2Jsb2NrOgorCQkgKgorCQkgKiBOdW1iZXIgb2YgYnl0ZXMgcGVy IGJsb2NrIChwZXIgcGxhbmUpLCB3aGVyZSBibG9ja3MgYXJlCisJCSAqIGRlZmluZWQgYXMgYSBy ZWN0YW5nbGUgb2YgcGl4ZWxzIHdoaWNoIGFyZSBzdG9yZWQgbmV4dCB0bworCQkgKiBlYWNoIG90 aGVyIGluIGEgYnl0ZSBhbGlnbmVkIG1lbW9yeSByZWdpb24uIFRvZ2V0aGVyIHdpdGgKKwkJICog QGJsb2NrX3cgYW5kIEBibG9ja19oIHRoaXMgaXMgdXNlZCB0byBwcm9wZXJseSBkZXNjcmliZSB0 aWxlcworCQkgKiBpbiB0aWxlZCBmb3JtYXRzIG9yIHRvIGRlc2NyaWJlIGdyb3VwcyBvZiBwaXhl bHMgaW4gcGFja2VkCisJCSAqIGZvcm1hdHMgZm9yIHdoaWNoIHRoZSBtZW1vcnkgbmVlZGVkIGZv ciBhIHNpbmdsZSBwaXhlbCBpcyBub3QKKwkJICogYnl0ZSBhbGlnbmVkLgorCQkgKgorCQkgKiBA Y3BwIGhhcyBiZWVuIGtlcHQgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBiZWNhdXNlIHRoZXJlIGFy ZQorCQkgKiBhIGxvdCBvZiBwbGFjZXMgaW4gZHJpdmVycyB3aGVyZSBpdCdzIHVzZWQuIEluIGRy bSBjb3JlIGZvcgorCQkgKiBnZW5lcmljIGNvZGUgcGF0aHMgdGhlIHByZWZlcnJlZCB3YXkgaXMg dG8gdXNlCisJCSAqIEBjaGFyX3Blcl9ibG9jaywgaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKCkg YW5kCisJCSAqIGltYWdlX2Zvcm1hdF9ibG9ja19oZWlnaHQoKSB3aGljaCBhbGxvd3MgaGFuZGxp bmcgYm90aAorCQkgKiBibG9jayBhbmQgbm9uLWJsb2NrIGZvcm1hdHMgaW4gdGhlIHNhbWUgd2F5 LgorCQkgKgorCQkgKiBGb3IgZm9ybWF0cyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIG9u bHkgd2l0aCBub24tbGluZWFyCisJCSAqIG1vZGlmaWVycyBib3RoIEBjcHAgYW5kIEBjaGFyX3Bl cl9ibG9jayBtdXN0IGJlIDAgaW4gdGhlCisJCSAqIGdlbmVyaWMgZm9ybWF0IHRhYmxlLiBEcml2 ZXJzIGNvdWxkIHN1cHBseSBhY2N1cmF0ZQorCQkgKiBpbmZvcm1hdGlvbiBmcm9tIHRoZWlyIGRy bV9tb2RlX2NvbmZpZy5nZXRfZm9ybWF0X2luZm8gaG9vaworCQkgKiBpZiB0aGV5IHdhbnQgdGhl IGNvcmUgdG8gYmUgdmFsaWRhdGluZyB0aGUgcGl0Y2guCisJCSAqLworCQl1OCBjaGFyX3Blcl9i bG9ja1szXTsKKwl9OworCisJLyoqCisJICogQGJsb2NrX3c6CisJICoKKwkgKiBCbG9jayB3aWR0 aCBpbiBwaXhlbHMsIHRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgYWNjZXNzZWQgdGhyb3VnaAorCSAq IGltYWdlX2Zvcm1hdF9ibG9ja193aWR0aCgpCisJICovCisJdTggYmxvY2tfd1szXTsKKworCS8q KgorCSAqIEBibG9ja19oOgorCSAqCisJICogQmxvY2sgaGVpZ2h0IGluIHBpeGVscywgdGhpcyBp cyBpbnRlbmRlZCB0byBiZSBhY2Nlc3NlZCB0aHJvdWdoCisJICogaW1hZ2VfZm9ybWF0X2Jsb2Nr X2hlaWdodCgpCisJICovCisJdTggYmxvY2tfaFszXTsKKworCS8qKiBAaHN1YjogSG9yaXpvbnRh bCBjaHJvbWEgc3Vic2FtcGxpbmcgZmFjdG9yICovCisJdTggaHN1YjsKKwkvKiogQHZzdWI6IFZl cnRpY2FsIGNocm9tYSBzdWJzYW1wbGluZyBmYWN0b3IgKi8KKwl1OCB2c3ViOworCisJLyoqIEBo YXNfYWxwaGE6IERvZXMgdGhlIGZvcm1hdCBlbWJlZHMgYW4gYWxwaGEgY29tcG9uZW50PyAqLwor CWJvb2wgaGFzX2FscGhhOworCisJLyoqIEBpc195dXY6IElzIGl0IGEgWVVWIGZvcm1hdD8gKi8K Kwlib29sIGlzX3l1djsKK307CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3Bh Y2tlZCAtIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYKKyAqIGZvcm1h dCB3aXRoIGRhdGEgbGFpZCBpbiBhIHNpbmdsZSBwbGFuZQorICogQGluZm86IGZvcm1hdCBpbmZv CisgKgorICogUmV0dXJuczoKKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZv cm1hdCBpbmZvIG1hdGNoZXMgYSBwYWNrZWQgWVVWIGZvcm1hdC4KKyAqLworc3RhdGljIGlubGlu ZSBib29sCitpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfcGFja2VkKGNvbnN0IHN0cnVjdCBpbWFn ZV9mb3JtYXRfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPm51 bV9wbGFuZXMgPT0gMTsKK30KKworLyoqCisgKiBpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2Vt aXBsYW5hciAtIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYKKyAqIGZv cm1hdCB3aXRoIGRhdGEgbGFpZCBpbiB0d28gcGxhbmVzIChsdW1pbmFuY2UgYW5kIGNocm9taW5h bmNlKQorICogQGluZm86IGZvcm1hdCBpbmZvCisgKgorICogUmV0dXJuczoKKyAqIEEgYm9vbGVh biBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBzZW1pcGxhbmFy IFlVViBmb3JtYXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAoraW1hZ2VfZm9ybWF0X2luZm9f aXNfeXV2X3NlbWlwbGFuYXIoY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbmZvKQor eworCXJldHVybiBpbmZvLT5pc195dXYgJiYgaW5mby0+bnVtX3BsYW5lcyA9PSAyOworfQorCisv KioKKyAqIGltYWdlX2Zvcm1hdF9pbmZvX2lzX3l1dl9wbGFuYXIgLSBjaGVjayB0aGF0IHRoZSBm b3JtYXQgaW5mbyBtYXRjaGVzIGEgWVVWCisgKiBmb3JtYXQgd2l0aCBkYXRhIGxhaWQgaW4gdGhy ZWUgcGxhbmVzIChvbmUgZm9yIGVhY2ggWVVWIGNvbXBvbmVudCkKKyAqIEBpbmZvOiBmb3JtYXQg aW5mbworICoKKyAqIFJldHVybnM6CisgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRo ZSBmb3JtYXQgaW5mbyBtYXRjaGVzIGEgcGxhbmFyIFlVViBmb3JtYXQuCisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAoraW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3BsYW5hcihjb25zdCBzdHJ1Y3Qg aW1hZ2VfZm9ybWF0X2luZm8gKmluZm8pCit7CisJcmV0dXJuIGluZm8tPmlzX3l1diAmJiBpbmZv LT5udW1fcGxhbmVzID09IDM7Cit9CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2 X3NhbXBsaW5nXzQxMCAtIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYQorICog WVVWIGZvcm1hdCB3aXRoIDQ6MTowIHN1Yi1zYW1wbGluZworICogQGluZm86IGZvcm1hdCBpbmZv CisgKgorICogUmV0dXJuczoKKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZv cm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYgZm9ybWF0IHdpdGggNDoxOjAKKyAqIHN1Yi1zYW1wbGlu Zy4KKyAqLworc3RhdGljIGlubGluZSBib29sCitpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2Ft cGxpbmdfNDEwKGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqaW5mbykKK3sKKwlyZXR1 cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhzdWIgPT0gNCAmJiBpbmZvLT52c3ViID09IDQ7Cit9 CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3NhbXBsaW5nXzQxMSAtIGNoZWNr IHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYQorICogWVVWIGZvcm1hdCB3aXRoIDQ6MTox IHN1Yi1zYW1wbGluZworICogQGluZm86IGZvcm1hdCBpbmZvCisgKgorICogUmV0dXJuczoKKyAq IEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZ VVYgZm9ybWF0IHdpdGggNDoxOjEKKyAqIHN1Yi1zYW1wbGluZy4KKyAqLworc3RhdGljIGlubGlu ZSBib29sCitpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2FtcGxpbmdfNDExKGNvbnN0IHN0cnVj dCBpbWFnZV9mb3JtYXRfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGlu Zm8tPmhzdWIgPT0gNCAmJiBpbmZvLT52c3ViID09IDE7Cit9CisKKy8qKgorICogaW1hZ2VfZm9y bWF0X2luZm9faXNfeXV2X3NhbXBsaW5nXzQyMCAtIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBpbmZv IG1hdGNoZXMgYQorICogWVVWIGZvcm1hdCB3aXRoIDQ6MjowIHN1Yi1zYW1wbGluZworICogQGlu Zm86IGZvcm1hdCBpbmZvCisgKgorICogUmV0dXJuczoKKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5n IHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYgZm9ybWF0IHdpdGggNDoyOjAK KyAqIHN1Yi1zYW1wbGluZy4KKyAqLworc3RhdGljIGlubGluZSBib29sCitpbWFnZV9mb3JtYXRf aW5mb19pc195dXZfc2FtcGxpbmdfNDIwKGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAq aW5mbykKK3sKKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhzdWIgPT0gMiAmJiBpbmZv LT52c3ViID09IDI7Cit9CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3NhbXBs aW5nXzQyMiAtIGNoZWNrIHRoYXQgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYQorICogWVVWIGZv cm1hdCB3aXRoIDQ6MjoyIHN1Yi1zYW1wbGluZworICogQGluZm86IGZvcm1hdCBpbmZvCisgKgor ICogUmV0dXJuczoKKyAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBp bmZvIG1hdGNoZXMgYSBZVVYgZm9ybWF0IHdpdGggNDoyOjIKKyAqIHN1Yi1zYW1wbGluZy4KKyAq Lworc3RhdGljIGlubGluZSBib29sCitpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2FtcGxpbmdf NDIyKGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5m by0+aXNfeXV2ICYmIGluZm8tPmhzdWIgPT0gMiAmJiBpbmZvLT52c3ViID09IDE7Cit9CisKKy8q KgorICogaW1hZ2VfZm9ybWF0X2luZm9faXNfeXV2X3NhbXBsaW5nXzQ0NCAtIGNoZWNrIHRoYXQg dGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYQorICogWVVWIGZvcm1hdCB3aXRoIDQ6NDo0IHN1Yi1z YW1wbGluZworICogQGluZm86IGZvcm1hdCBpbmZvCisgKgorICogUmV0dXJuczoKKyAqIEEgYm9v bGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvcm1hdCBpbmZvIG1hdGNoZXMgYSBZVVYgZm9y bWF0IHdpdGggNDo0OjQKKyAqIHN1Yi1zYW1wbGluZy4KKyAqLworc3RhdGljIGlubGluZSBib29s CitpbWFnZV9mb3JtYXRfaW5mb19pc195dXZfc2FtcGxpbmdfNDQ0KGNvbnN0IHN0cnVjdCBpbWFn ZV9mb3JtYXRfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5mby0+aXNfeXV2ICYmIGluZm8tPmhz dWIgPT0gMSAmJiBpbmZvLT52c3ViID09IDE7Cit9CisKK2NvbnN0IHN0cnVjdCBpbWFnZV9mb3Jt YXRfaW5mbyAqX19pbWFnZV9mb3JtYXRfZHJtX2xvb2t1cCh1MzIgZHJtKTsKK2NvbnN0IHN0cnVj dCBpbWFnZV9mb3JtYXRfaW5mbyAqaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAodTMyIGRybSk7Cit1 bnNpZ25lZCBpbnQgaW1hZ2VfZm9ybWF0X3BsYW5lX2NwcChjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9y bWF0X2luZm8gKmZvcm1hdCwKKwkJCQkgICAgaW50IHBsYW5lKTsKK3Vuc2lnbmVkIGludCBpbWFn ZV9mb3JtYXRfcGxhbmVfd2lkdGgoaW50IHdpZHRoLAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBp bWFnZV9mb3JtYXRfaW5mbyAqZm9ybWF0LAorCQkJCSAgICAgIGludCBwbGFuZSk7Cit1bnNpZ25l ZCBpbnQgaW1hZ2VfZm9ybWF0X3BsYW5lX2hlaWdodChpbnQgaGVpZ2h0LAorCQkJCSAgICAgICBj b25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmZvcm1hdCwKKwkJCQkgICAgICAgaW50IHBs YW5lKTsKK3Vuc2lnbmVkIGludCBpbWFnZV9mb3JtYXRfYmxvY2tfd2lkdGgoY29uc3Qgc3RydWN0 IGltYWdlX2Zvcm1hdF9pbmZvICpmb3JtYXQsCisJCQkJICAgICAgaW50IHBsYW5lKTsKK3Vuc2ln bmVkIGludCBpbWFnZV9mb3JtYXRfYmxvY2tfaGVpZ2h0KGNvbnN0IHN0cnVjdCBpbWFnZV9mb3Jt YXRfaW5mbyAqZm9ybWF0LAorCQkJCSAgICAgICBpbnQgcGxhbmUpOwordWludDY0X3QgaW1hZ2Vf Zm9ybWF0X21pbl9waXRjaChjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmluZm8sCisJ CQkJaW50IHBsYW5lLCB1bnNpZ25lZCBpbnQgYnVmZmVyX3dpZHRoKTsKKworI2VuZGlmIC8qIF9J TUFHRV9GT1JNQVRTX0hfICovCmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmln CmluZGV4IGE5ZTU2NTM5YmQxMS4uNDIxYWNhYzgzYjEzIDEwMDY0NAotLS0gYS9saWIvS2NvbmZp ZworKysgYi9saWIvS2NvbmZpZwpAQCAtNjM1LDMgKzYzNSwxMCBAQCBjb25maWcgR0VORVJJQ19M SUJfVUNNUERJMgogCiBjb25maWcgT0JKQUdHCiAJdHJpc3RhdGUgIm9iamFnZyIgaWYgQ09NUElM RV9URVNUCisKK2NvbmZpZyBJTUFHRV9GT1JNQVRTCisJYm9vbAorCitjb25maWcgSU1BR0VfRk9S TUFUU19TRUxGVEVTVFMKKwl0cmlzdGF0ZSAiVGVzdCBpbWFnZSBmb3JtYXQgZnVuY3Rpb25zIgor CWRlcGVuZHMgb24gSU1BR0VfRk9STUFUUwpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGli L01ha2VmaWxlCmluZGV4IGUxYjU5ZGE3MTQxOC4uYjE5MTZlNmQzMGRhIDEwMDY0NAotLS0gYS9s aWIvTWFrZWZpbGUKKysrIGIvbGliL01ha2VmaWxlCkBAIC0yNzYsMyArMjc2LDYgQEAgb2JqLSQo Q09ORklHX0dFTkVSSUNfTElCX01VTERJMykgKz0gbXVsZGkzLm8KIG9iai0kKENPTkZJR19HRU5F UklDX0xJQl9DTVBESTIpICs9IGNtcGRpMi5vCiBvYmotJChDT05GSUdfR0VORVJJQ19MSUJfVUNN UERJMikgKz0gdWNtcGRpMi5vCiBvYmotJChDT05GSUdfT0JKQUdHKSArPSBvYmphZ2cubworCitv YmotJChDT05GSUdfSU1BR0VfRk9STUFUUykgKz0gaW1hZ2UtZm9ybWF0cy5vCitvYmotJChDT05G SUdfSU1BR0VfRk9STUFUU19TRUxGVEVTVFMpICs9IGltYWdlLWZvcm1hdHMtc2VsZnRlc3RzLm8K ZGlmZiAtLWdpdCBhL2xpYi9pbWFnZS1mb3JtYXRzLXNlbGZ0ZXN0cy5jIGIvbGliL2ltYWdlLWZv cm1hdHMtc2VsZnRlc3RzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li44ZmRjNTBiMTVkY2MKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaW1hZ2UtZm9ybWF0cy1zZWxm dGVzdHMuYwpAQCAtMCwwICsxLDMyNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAKKy8qCisgKiBUZXN0IGNhc2VzIGZvciB0aGUgaW1hZ2VfZm9ybWF0IGZ1bmN0aW9ucwor ICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkgImltYWdlX2Zvcm1hdDogIiBmbXQKKworI2luY2x1 ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvaW1hZ2UtZm9ybWF0cy5oPgorI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5j bHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KKworI2RlZmluZSBGQUlMKHRlc3QsIG1zZywgLi4uKSBc CisJZG8geyBcCisJCWlmICh0ZXN0KSB7IFwKKwkJCXByX2VycigiJXMvJXU6ICIgbXNnLCBfX0ZV TkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKTsgXAorCQkJcmV0dXJuIC1FSU5WQUw7 IFwKKwkJfSBcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBGQUlMX09OKHgpIEZBSUwoKHgpLCAi JXMiLCAiRkFJTF9PTigiIF9fc3RyaW5naWZ5KHgpICIpXG4iKQorCitzdGF0aWMgaW50IHRlc3Rf aW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKHZvaWQpCit7CisJY29uc3Qgc3RydWN0IGltYWdlX2Zv cm1hdF9pbmZvICppbmZvID0gTlVMTDsKKworCS8qIFRlc3QgaW52YWxpZCBhcmd1bWVudHMgKi8K KwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja193aWR0aChpbmZvLCAwKSAhPSAwKTsKKwlGQUlM X09OKGltYWdlX2Zvcm1hdF9ibG9ja193aWR0aChpbmZvLCAtMSkgIT0gMCk7CisJRkFJTF9PTihp bWFnZV9mb3JtYXRfYmxvY2tfd2lkdGgoaW5mbywgMSkgIT0gMCk7CisKKwkvKiBUZXN0IDEgcGxh bmUgZm9ybWF0ICovCisJaW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRf WFJHQjQ0NDQpOworCUZBSUxfT04oIWluZm8pOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2Nr X3dpZHRoKGluZm8sIDApICE9IDEpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRo KGluZm8sIDEpICE9IDApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKGluZm8s IC0xKSAhPSAwKTsKKworCS8qIFRlc3QgMiBwbGFuZXMgZm9ybWF0ICovCisJaW5mbyA9IGltYWdl X2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRfTlYxMik7CisJRkFJTF9PTighaW5mbyk7CisJ RkFJTF9PTihpbWFnZV9mb3JtYXRfYmxvY2tfd2lkdGgoaW5mbywgMCkgIT0gMSk7CisJRkFJTF9P TihpbWFnZV9mb3JtYXRfYmxvY2tfd2lkdGgoaW5mbywgMSkgIT0gMSk7CisJRkFJTF9PTihpbWFn ZV9mb3JtYXRfYmxvY2tfd2lkdGgoaW5mbywgMikgIT0gMCk7CisJRkFJTF9PTihpbWFnZV9mb3Jt YXRfYmxvY2tfd2lkdGgoaW5mbywgLTEpICE9IDApOworCisJLyogVGVzdCAzIHBsYW5lcyBmb3Jt YXQgKi8KKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9ZVVY0MjIp OworCUZBSUxfT04oIWluZm8pOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKGlu Zm8sIDApICE9IDEpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKGluZm8sIDEp ICE9IDEpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKGluZm8sIDIpICE9IDEp OworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKGluZm8sIDMpICE9IDApOworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKGluZm8sIC0xKSAhPSAwKTsKKworCS8qIFRl c3QgYSB0aWxlZCBmb3JtYXQgKi8KKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJN X0ZPUk1BVF9YMEwwKTsKKwlGQUlMX09OKCFpbmZvKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9i bG9ja193aWR0aChpbmZvLCAwKSAhPSAyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja193 aWR0aChpbmZvLCAxKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja193aWR0aChp bmZvLCAtMSkgIT0gMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0ZXN0X2ltYWdl X2Zvcm1hdF9ibG9ja19oZWlnaHQodm9pZCkKK3sKKwljb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0 X2luZm8gKmluZm8gPSBOVUxMOworCisJLyogVGVzdCBpbnZhbGlkIGFyZ3VtZW50cyAqLworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX2hlaWdodChpbmZvLCAwKSAhPSAwKTsKKwlGQUlMX09O KGltYWdlX2Zvcm1hdF9ibG9ja19oZWlnaHQoaW5mbywgLTEpICE9IDApOworCUZBSUxfT04oaW1h Z2VfZm9ybWF0X2Jsb2NrX2hlaWdodChpbmZvLCAxKSAhPSAwKTsKKworCS8qIFRlc3QgMSBwbGFu ZSBmb3JtYXQgKi8KKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9Y UkdCNDQ0NCk7CisJRkFJTF9PTighaW5mbyk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfYmxvY2tf aGVpZ2h0KGluZm8sIDApICE9IDEpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX2hlaWdo dChpbmZvLCAxKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja19oZWlnaHQoaW5m bywgLTEpICE9IDApOworCisJLyogVGVzdCAyIHBsYW5lcyBmb3JtYXQgKi8KKwlpbmZvID0gaW1h Z2VfZm9ybWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9OVjEyKTsKKwlGQUlMX09OKCFpbmZvKTsK KwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja19oZWlnaHQoaW5mbywgMCkgIT0gMSk7CisJRkFJ TF9PTihpbWFnZV9mb3JtYXRfYmxvY2tfaGVpZ2h0KGluZm8sIDEpICE9IDEpOworCUZBSUxfT04o aW1hZ2VfZm9ybWF0X2Jsb2NrX2hlaWdodChpbmZvLCAyKSAhPSAwKTsKKwlGQUlMX09OKGltYWdl X2Zvcm1hdF9ibG9ja19oZWlnaHQoaW5mbywgLTEpICE9IDApOworCisJLyogVGVzdCAzIHBsYW5l cyBmb3JtYXQgKi8KKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAoRFJNX0ZPUk1BVF9Z VVY0MjIpOworCUZBSUxfT04oIWluZm8pOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX2hl aWdodChpbmZvLCAwKSAhPSAxKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja19oZWlnaHQo aW5mbywgMSkgIT0gMSk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfYmxvY2tfaGVpZ2h0KGluZm8s IDIpICE9IDEpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X2Jsb2NrX2hlaWdodChpbmZvLCAzKSAh PSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9ibG9ja19oZWlnaHQoaW5mbywgLTEpICE9IDAp OworCisJLyogVGVzdCBhIHRpbGVkIGZvcm1hdCAqLworCWluZm8gPSBpbWFnZV9mb3JtYXRfZHJt X2xvb2t1cChEUk1fRk9STUFUX1gwTDApOworCUZBSUxfT04oIWluZm8pOworCUZBSUxfT04oaW1h Z2VfZm9ybWF0X2Jsb2NrX2hlaWdodChpbmZvLCAwKSAhPSAyKTsKKwlGQUlMX09OKGltYWdlX2Zv cm1hdF9ibG9ja19oZWlnaHQoaW5mbywgMSkgIT0gMCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRf YmxvY2tfaGVpZ2h0KGluZm8sIC0xKSAhPSAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IHRlc3RfaW1hZ2VfZm9ybWF0X21pbl9waXRjaCh2b2lkKQoreworCWNvbnN0IHN0cnVjdCBp bWFnZV9mb3JtYXRfaW5mbyAqaW5mbyA9IE5VTEw7CisKKwkvKiBUZXN0IGludmFsaWQgYXJndW1l bnRzICovCisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAsIDApICE9IDAp OworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAtMSwgMCkgIT0gMCk7CisJ RkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDEsIDApICE9IDApOworCisJLyog VGVzdCAxIHBsYW5lIDggYml0cyBwZXIgcGl4ZWwgZm9ybWF0ICovCisJaW5mbyA9IGltYWdlX2Zv cm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRfUkdCMzMyKTsKKwlGQUlMX09OKCFpbmZvKTsKKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgMCkgIT0gMCk7CisJRkFJTF9P TihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIC0xLCAwKSAhPSAwKTsKKwlGQUlMX09OKGlt YWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMSwgMCkgIT0gMCk7CisKKwlGQUlMX09OKGltYWdl X2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgMSkgIT0gMSk7CisJRkFJTF9PTihpbWFnZV9mb3Jt YXRfbWluX3BpdGNoKGluZm8sIDAsIDIpICE9IDIpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21p bl9waXRjaChpbmZvLCAwLCA2NDApICE9IDY0MCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWlu X3BpdGNoKGluZm8sIDAsIDEwMjQpICE9IDEwMjQpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21p bl9waXRjaChpbmZvLCAwLCAxOTIwKSAhPSAxOTIwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9t aW5fcGl0Y2goaW5mbywgMCwgNDA5NikgIT0gNDA5Nik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRf bWluX3BpdGNoKGluZm8sIDAsIDY3MSkgIT0gNjcxKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9t aW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVgpICE9CisJCQkodWludDY0X3QpVUlOVF9NQVgpOwor CUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAoVUlOVF9NQVggLSAxKSkg IT0KKwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSk7CisKKwkvKiBUZXN0IDEgcGxhbmUgMTYg Yml0cyBwZXIgcGl4ZWwgZm9ybWF0ICovCisJaW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3Vw KERSTV9GT1JNQVRfWFJHQjQ0NDQpOworCUZBSUxfT04oIWluZm8pOworCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21p bl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKKworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9w aXRjaChpbmZvLCAwLCAxKSAhPSAyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2go aW5mbywgMCwgMikgIT0gNCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8s IDAsIDY0MCkgIT0gMTI4MCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8s IDAsIDEwMjQpICE9IDIwNDgpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZv LCAwLCAxOTIwKSAhPSAzODQwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5m bywgMCwgNDA5NikgIT0gODE5Mik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGlu Zm8sIDAsIDY3MSkgIT0gMTM0Mik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGlu Zm8sIDAsIFVJTlRfTUFYKSAhPQorCQkJKHVpbnQ2NF90KVVJTlRfTUFYICogMik7CisJRkFJTF9P TihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAsIChVSU5UX01BWCAtIDEpKSAhPQorCQkJ KHVpbnQ2NF90KShVSU5UX01BWCAtIDEpICogMik7CisKKwkvKiBUZXN0IDEgcGxhbmUgMjQgYml0 cyBwZXIgcGl4ZWwgZm9ybWF0ICovCisJaW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERS TV9GT1JNQVRfUkdCODg4KTsKKwlGQUlMX09OKCFpbmZvKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9taW5fcGl0Y2goaW5mbywgMCwgMCkgIT0gMCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWlu X3BpdGNoKGluZm8sIC0xLCAwKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgMSwgMCkgIT0gMCk7CisKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2go aW5mbywgMCwgMSkgIT0gMyk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8s IDAsIDIpICE9IDYpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCA2 NDApICE9IDE5MjApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAx MDI0KSAhPSAzMDcyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwg MTkyMCkgIT0gNTc2MCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAs IDQwOTYpICE9IDEyMjg4KTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywg MCwgNjcxKSAhPSAyMDEzKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywg MCwgVUlOVF9NQVgpICE9CisJCQkodWludDY0X3QpVUlOVF9NQVggKiAzKTsKKwlGQUlMX09OKGlt YWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVggLSAxKSAhPQorCQkJKHVpbnQ2 NF90KShVSU5UX01BWCAtIDEpICogMyk7CisKKwkvKiBUZXN0IDEgcGxhbmUgMzIgYml0cyBwZXIg cGl4ZWwgZm9ybWF0ICovCisJaW5mbyA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JN QVRfQUJHUjg4ODgpOworCUZBSUxfT04oIWluZm8pOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21p bl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgLTEsIDApICE9IDApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChp bmZvLCAxLCAwKSAhPSAwKTsKKworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZv LCAwLCAxKSAhPSA0KTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwg MikgIT0gOCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAsIDY0MCkg IT0gMjU2MCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAsIDEwMjQp ICE9IDQwOTYpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAxOTIw KSAhPSA3NjgwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgNDA5 NikgIT0gMTYzODQpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCA2 NzEpICE9IDI2ODQpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCBV SU5UX01BWCkgIT0KKwkJCSh1aW50NjRfdClVSU5UX01BWCAqIDQpOworCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCBVSU5UX01BWCAtIDEpICE9CisJCQkodWludDY0X3Qp KFVJTlRfTUFYIC0gMSkgKiA0KTsKKworCS8qIFRlc3QgMiBwbGFuZXMgZm9ybWF0ICovCisJaW5m byA9IGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwKERSTV9GT1JNQVRfTlYxMik7CisJRkFJTF9PTigh aW5mbyk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAsIDApICE9IDAp OworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOworCUZBSUxf T04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAyLCAwKSAhPSAwKTsKKworCUZBSUxfT04o aW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAxKSAhPSAxKTsKKwlGQUlMX09OKGltYWdl X2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMSwgMSkgIT0gMik7CisJRkFJTF9PTihpbWFnZV9mb3Jt YXRfbWluX3BpdGNoKGluZm8sIDAsIDIpICE9IDIpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21p bl9waXRjaChpbmZvLCAxLCAxKSAhPSAyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgMCwgNjQwKSAhPSA2NDApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRj aChpbmZvLCAxLCAzMjApICE9IDY0MCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNo KGluZm8sIDAsIDEwMjQpICE9IDEwMjQpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRj aChpbmZvLCAxLCA1MTIpICE9IDEwMjQpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRj aChpbmZvLCAwLCAxOTIwKSAhPSAxOTIwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgMSwgOTYwKSAhPSAxOTIwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgMCwgNDA5NikgIT0gNDA5Nik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3Bp dGNoKGluZm8sIDEsIDIwNDgpICE9IDQwOTYpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9w aXRjaChpbmZvLCAwLCA2NzEpICE9IDY3MSk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3Bp dGNoKGluZm8sIDEsIDMzNikgIT0gNjcyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgMCwgVUlOVF9NQVgpICE9CisJCQkodWludDY0X3QpVUlOVF9NQVgpOworCUZBSUxf T04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAxLCBVSU5UX01BWCAvIDIgKyAxKSAhPQor CQkJKHVpbnQ2NF90KVVJTlRfTUFYICsgMSk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3Bp dGNoKGluZm8sIDAsIChVSU5UX01BWCAtIDEpKSAhPQorCQkJKHVpbnQ2NF90KShVSU5UX01BWCAt IDEpKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMSwgKFVJTlRfTUFY IC0gMSkgLyAgMikgIT0KKwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSk7CisKKwkvKiBUZXN0 IDMgcGxhbmVzIDggYml0cyBwZXIgcGl4ZWwgZm9ybWF0ICovCisJaW5mbyA9IGltYWdlX2Zvcm1h dF9kcm1fbG9va3VwKERSTV9GT1JNQVRfWVVWNDIyKTsKKwlGQUlMX09OKCFpbmZvKTsKKwlGQUlM X09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgMCkgIT0gMCk7CisJRkFJTF9PTihp bWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDEsIDApICE9IDApOworCUZBSUxfT04oaW1hZ2Vf Zm9ybWF0X21pbl9waXRjaChpbmZvLCAyLCAwKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21p bl9waXRjaChpbmZvLCAzLCAwKSAhPSAwKTsKKworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9w aXRjaChpbmZvLCAwLCAxKSAhPSAxKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2go aW5mbywgMSwgMSkgIT0gMSk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8s IDIsIDEpICE9IDEpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAy KSAhPSAyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMSwgMikgIT0g Mik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDIsIDIpICE9IDIpOwor CUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCA2NDApICE9IDY0MCk7CisJ RkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDEsIDMyMCkgIT0gMzIwKTsKKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMiwgMzIwKSAhPSAzMjApOworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAxMDI0KSAhPSAxMDI0KTsKKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMSwgNTEyKSAhPSA1MTIpOworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAyLCA1MTIpICE9IDUxMik7CisJRkFJ TF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAsIDE5MjApICE9IDE5MjApOworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAxLCA5NjApICE9IDk2MCk7CisJRkFJ TF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDIsIDk2MCkgIT0gOTYwKTsKKwlGQUlM X09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgNDA5NikgIT0gNDA5Nik7CisJRkFJ TF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDEsIDIwNDgpICE9IDIwNDgpOworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAyLCAyMDQ4KSAhPSAyMDQ4KTsKKwlG QUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgNjcxKSAhPSA2NzEpOworCUZB SUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAxLCAzMzYpICE9IDMzNik7CisJRkFJ TF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDIsIDMzNikgIT0gMzM2KTsKKwlGQUlM X09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVgpICE9CisJCQkodWlu dDY0X3QpVUlOVF9NQVgpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAx LCBVSU5UX01BWCAvIDIgKyAxKSAhPQorCQkJKHVpbnQ2NF90KVVJTlRfTUFYIC8gMiArIDEpOwor CUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAyLCBVSU5UX01BWCAvIDIgKyAx KSAhPQorCQkJKHVpbnQ2NF90KVVJTlRfTUFYIC8gMiArIDEpOworCUZBSUxfT04oaW1hZ2VfZm9y bWF0X21pbl9waXRjaChpbmZvLCAwLCAoVUlOVF9NQVggLSAxKSAvIDIpICE9CisJCQkodWludDY0 X3QpKFVJTlRfTUFYIC0gMSkgLyAyKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2go aW5mbywgMSwgKFVJTlRfTUFYIC0gMSkgLyAyKSAhPQorCQkJKHVpbnQ2NF90KShVSU5UX01BWCAt IDEpIC8gMik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDIsIChVSU5U X01BWCAtIDEpIC8gMikgIT0KKwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSAvIDIpOworCisJ LyogVGVzdCB0aWxlZCBmb3JtYXQgKi8KKwlpbmZvID0gaW1hZ2VfZm9ybWF0X2RybV9sb29rdXAo RFJNX0ZPUk1BVF9YMEwyKTsKKwlGQUlMX09OKCFpbmZvKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1h dF9taW5fcGl0Y2goaW5mbywgMCwgMCkgIT0gMCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWlu X3BpdGNoKGluZm8sIC0xLCAwKSAhPSAwKTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0 Y2goaW5mbywgMSwgMCkgIT0gMCk7CisKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2go aW5mbywgMCwgMSkgIT0gMik7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8s IDAsIDIpICE9IDQpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCA2 NDApICE9IDEyODApOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCAx MDI0KSAhPSAyMDQ4KTsKKwlGQUlMX09OKGltYWdlX2Zvcm1hdF9taW5fcGl0Y2goaW5mbywgMCwg MTkyMCkgIT0gMzg0MCk7CisJRkFJTF9PTihpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGluZm8sIDAs IDQwOTYpICE9IDgxOTIpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAw LCA2NzEpICE9IDEzNDIpOworCUZBSUxfT04oaW1hZ2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAw LCBVSU5UX01BWCkgIT0KKwkJCSh1aW50NjRfdClVSU5UX01BWCAqIDIpOworCUZBSUxfT04oaW1h Z2VfZm9ybWF0X21pbl9waXRjaChpbmZvLCAwLCBVSU5UX01BWCAtIDEpICE9CisJCQkodWludDY0 X3QpKFVJTlRfTUFYIC0gMSkgKiAyKTsKKworCXJldHVybiAwOworfQorCisjZGVmaW5lIHNlbGZ0 ZXN0KHRlc3QpCXsgLm5hbWUgPSAjdGVzdCwgLmZ1bmMgPSB0ZXN0LCB9CisKK3N0YXRpYyBzdHJ1 Y3QgaW1hZ2VfZm9ybWF0X3Rlc3QgeworCWNoYXIJKm5hbWU7CisJaW50CSgqZnVuYykodm9pZCk7 Cit9IHRlc3RzW10gPSB7CisJc2VsZnRlc3QodGVzdF9pbWFnZV9mb3JtYXRfYmxvY2tfaGVpZ2h0 KSwKKwlzZWxmdGVzdCh0ZXN0X2ltYWdlX2Zvcm1hdF9ibG9ja193aWR0aCksCisJc2VsZnRlc3Qo dGVzdF9pbWFnZV9mb3JtYXRfbWluX3BpdGNoKSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGlt YWdlX2Zvcm1hdF90ZXN0X2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRlc3RzKTsgaSsrKSB7CisJCXN0cnVjdCBpbWFnZV9mb3Jt YXRfdGVzdCAqdGVzdCA9ICZ0ZXN0c1tpXTsKKwkJaW50IHJldDsKKworCQlyZXQgPSB0ZXN0LT5m dW5jKCk7CisJCWlmIChyZXQpIHsKKwkJCXByX2VycigiRmFpbGVkIHRlc3QgJXNcbiIsIHRlc3Qt Pm5hbWUpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKworCXByX2luZm8oIkFsbCB0ZXN0cyBl eGVjdXRlZCBwcm9wZXJseS5cbiIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBfX2V4 aXQgaW1hZ2VfZm9ybWF0X3Rlc3RfZXhpdCh2b2lkKQoreworfQorbW9kdWxlX2luaXQoaW1hZ2Vf Zm9ybWF0X3Rlc3RfaW5pdCk7Cittb2R1bGVfZXhpdChpbWFnZV9mb3JtYXRfdGVzdF9leGl0KTsK ZGlmZiAtLWdpdCBhL2xpYi9pbWFnZS1mb3JtYXRzLmMgYi9saWIvaW1hZ2UtZm9ybWF0cy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWI5YTczMjIwYzVkCi0tLSAv ZGV2L251bGwKKysrIGIvbGliL2ltYWdlLWZvcm1hdHMuYwpAQCAtMCwwICsxLDc2MCBAQAorI2lu Y2x1ZGUgPGxpbnV4L2J1Zy5oPgorI2luY2x1ZGUgPGxpbnV4L2ltYWdlLWZvcm1hdHMuaD4KKyNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tYXRoNjQuaD4KKworI2lu Y2x1ZGUgPHVhcGkvZHJtL2RybV9mb3VyY2MuaD4KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpbWFn ZV9mb3JtYXRfaW5mbyBmb3JtYXRzW10gPSB7CisJeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRf QzgsCisJCS5kZXB0aCA9IDgsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNwcCA9IHsgMSwgMCwg MCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJN X0ZPUk1BVF9SR0IzMzIsCisJCS5kZXB0aCA9IDgsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNw cCA9IHsgMSwgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwl9LCB7CisJCS5k cm1fZm10ID0gRFJNX0ZPUk1BVF9CR1IyMzMsCisJCS5kZXB0aCA9IDgsCisJCS5udW1fcGxhbmVz ID0gMSwKKwkJLmNwcCA9IHsgMSwgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwK Kwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9YUkdCNDQ0NCwKKwkJLmRlcHRoID0gMCwK KwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMSwK KwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1hCR1I0NDQ0LAor CQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwK KwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JN QVRfUkdCWDQ0NDQsCisJCS5kZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNwcCA9 IHsgMiwgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwl9LCB7CisJCS5kcm1f Zm10ID0gRFJNX0ZPUk1BVF9CR1JYNDQ0NCwKKwkJLmRlcHRoID0gMCwKKwkJLm51bV9wbGFuZXMg PSAxLAorCQkuY3BwID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAor CX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0FSR0I0NDQ0LAorCQkuZGVwdGggPSAwLAor CQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAor CQkudnN1YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBE Uk1fRk9STUFUX0FCR1I0NDQ0LAorCQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJ CS5jcHAgPSB7IDIsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJCS5oYXNf YWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQkE0NDQ0LAor CQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwK KwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsK KwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0JHUkE0NDQ0LAorCQkuZGVwdGggPSAwLAorCQkubnVt X3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1 YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9S TUFUX1hSR0IxNTU1LAorCQkuZGVwdGggPSAxNSwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3Bw ID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRy bV9mbXQgPSBEUk1fRk9STUFUX1hCR1IxNTU1LAorCQkuZGVwdGggPSAxNSwKKwkJLm51bV9wbGFu ZXMgPSAxLAorCQkuY3BwID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAx LAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQlg1NTUxLAorCQkuZGVwdGggPSAx NSwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0g MSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0JHUlg1NTUx LAorCQkuZGVwdGggPSAxNSwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyAyLCAwLCAw IH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1f Rk9STUFUX0FSR0IxNTU1LAorCQkuZGVwdGggPSAxNSwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQku Y3BwID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaGFzX2Fs cGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9BQkdSMTU1NSwKKwkJ LmRlcHRoID0gMTUsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAor CQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmhhc19hbHBoYSA9IHRydWUsCisJfSwgewor CQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCQTU1NTEsCisJCS5kZXB0aCA9IDE1LAorCQkubnVt X3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1 YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9S TUFUX0JHUkE1NTUxLAorCQkuZGVwdGggPSAxNSwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3Bw ID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaGFzX2FscGhh ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9SR0I1NjUsCisJCS5kZXB0 aCA9IDE2LAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwKKwkJLmhz dWIgPSAxLAorCQkudnN1YiA9IDEsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQkdS NTY1LAorCQkuZGVwdGggPSAxNiwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyAyLCAw LCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRybV9mbXQgPSBE Uk1fRk9STUFUX1JHQjg4OCwKKwkJLmRlcHRoID0gMjQsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJ LmNwcCA9IHsgMywgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwl9LCB7CisJ CS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9CR1I4ODgsCisJCS5kZXB0aCA9IDI0LAorCQkubnVtX3Bs YW5lcyA9IDEsCisJCS5jcHAgPSB7IDMsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9 IDEsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCS5kZXB0aCA9 IDI0LAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDQsIDAsIDAgfSwKKwkJLmhzdWIg PSAxLAorCQkudnN1YiA9IDEsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWEJHUjg4 ODgsCisJCS5kZXB0aCA9IDI0LAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDQsIDAs IDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJfSwgeworCQkuZHJtX2ZtdCA9IERS TV9GT1JNQVRfUkdCWDg4ODgsCisJCS5kZXB0aCA9IDI0LAorCQkubnVtX3BsYW5lcyA9IDEsCisJ CS5jcHAgPSB7IDQsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJfSwgewor CQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQkdSWDg4ODgsCisJCS5kZXB0aCA9IDI0LAorCQkubnVt X3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDQsIDAsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1 YiA9IDEsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCNTY1X0E4LAorCQkuZGVw dGggPSAyNCwKKwkJLm51bV9wbGFuZXMgPSAyLAorCQkuY3BwID0geyAyLCAxLCAwIH0sCisJCS5o c3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaGFzX2FscGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5k cm1fZm10ID0gRFJNX0ZPUk1BVF9CR1I1NjVfQTgsCisJCS5kZXB0aCA9IDI0LAorCQkubnVtX3Bs YW5lcyA9IDIsCisJCS5jcHAgPSB7IDIsIDEsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9 IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFU X1hSR0IyMTAxMDEwLAorCQkuZGVwdGggPSAzMCwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3Bw ID0geyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRy bV9mbXQgPSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwLAorCQkuZGVwdGggPSAzMCwKKwkJLm51bV9w bGFuZXMgPSAxLAorCQkuY3BwID0geyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIg PSAxLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQlgxMDEwMTAyLAorCQkuZGVw dGggPSAzMCwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyA0LCAwLCAwIH0sCisJCS5o c3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX0JH UlgxMDEwMTAyLAorCQkuZGVwdGggPSAzMCwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0g eyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCX0sIHsKKwkJLmRybV9m bXQgPSBEUk1fRk9STUFUX0FSR0IyMTAxMDEwLAorCQkuZGVwdGggPSAzMCwKKwkJLm51bV9wbGFu ZXMgPSAxLAorCQkuY3BwID0geyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAx LAorCQkuaGFzX2FscGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9B QkdSMjEwMTAxMCwKKwkJLmRlcHRoID0gMzAsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNwcCA9 IHsgNCwgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmhhc19hbHBoYSA9 IHRydWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCQTEwMTAxMDIsCisJCS5k ZXB0aCA9IDMwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDQsIDAsIDAgfSwKKwkJ LmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJ LmRybV9mbXQgPSBEUk1fRk9STUFUX0JHUkExMDEwMTAyLAorCQkuZGVwdGggPSAzMCwKKwkJLm51 bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZz dWIgPSAxLAorCQkuaGFzX2FscGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZP Uk1BVF9BUkdCODg4OCwKKwkJLmRlcHRoID0gMzIsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNw cCA9IHsgNCwgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmhhc19hbHBo YSA9IHRydWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfQUJHUjg4ODgsCisJCS5k ZXB0aCA9IDMyLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDQsIDAsIDAgfSwKKwkJ LmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJ LmRybV9mbXQgPSBEUk1fRk9STUFUX1JHQkE4ODg4LAorCQkuZGVwdGggPSAzMiwKKwkJLm51bV9w bGFuZXMgPSAxLAorCQkuY3BwID0geyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIg PSAxLAorCQkuaGFzX2FscGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1B VF9CR1JBODg4OCwKKwkJLmRlcHRoID0gMzIsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNwcCA9 IHsgNCwgMCwgMCB9LAorCQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmhhc19hbHBoYSA9 IHRydWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCODg4X0E4LAorCQkuZGVw dGggPSAzMiwKKwkJLm51bV9wbGFuZXMgPSAyLAorCQkuY3BwID0geyAzLCAxLCAwIH0sCisJCS5o c3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaGFzX2FscGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5k cm1fZm10ID0gRFJNX0ZPUk1BVF9CR1I4ODhfQTgsCisJCS5kZXB0aCA9IDMyLAorCQkubnVtX3Bs YW5lcyA9IDIsCisJCS5jcHAgPSB7IDMsIDEsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9 IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFU X1hSR0I4ODg4X0E4LAorCQkuZGVwdGggPSAzMiwKKwkJLm51bV9wbGFuZXMgPSAyLAorCQkuY3Bw ID0geyA0LCAxLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaGFzX2FscGhh ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9YQkdSODg4OF9BOCwKKwkJ LmRlcHRoID0gMzIsCisJCS5udW1fcGxhbmVzID0gMiwKKwkJLmNwcCA9IHsgNCwgMSwgMCB9LAor CQkuaHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmhhc19hbHBoYSA9IHRydWUsCisJfSwgewor CQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfUkdCWDg4ODhfQTgsCisJCS5kZXB0aCA9IDMyLAorCQku bnVtX3BsYW5lcyA9IDIsCisJCS5jcHAgPSB7IDQsIDEsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQku dnN1YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1f Rk9STUFUX0JHUlg4ODg4X0E4LAorCQkuZGVwdGggPSAzMiwKKwkJLm51bV9wbGFuZXMgPSAyLAor CQkuY3BwID0geyA0LCAxLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaGFz X2FscGhhID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVVY0MTAsCisJ CS5kZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMywKKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAor CQkuaHN1YiA9IDQsCisJCS52c3ViID0gNCwKKwkJLmlzX3l1diA9IHRydWUsCisJfSwgeworCQku ZHJtX2ZtdCA9IERSTV9GT1JNQVRfWVZVNDEwLAorCQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5l cyA9IDMsCisJCS5jcHAgPSB7IDEsIDEsIDEgfSwKKwkJLmhzdWIgPSA0LAorCQkudnN1YiA9IDQs CisJCS5pc195dXYgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1lVVjQx MSwKKwkJLmRlcHRoID0gMCwKKwkJLm51bV9wbGFuZXMgPSAzLAorCQkuY3BwID0geyAxLCAxLCAx IH0sCisJCS5oc3ViID0gNCwKKwkJLnZzdWIgPSAxLAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9LCB7 CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVlU0MTEsCisJCS5kZXB0aCA9IDAsCisJCS5udW1f cGxhbmVzID0gMywKKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAorCQkuaHN1YiA9IDQsCisJCS52c3Vi ID0gMSwKKwkJLmlzX3l1diA9IHRydWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRf WVVWNDIwLAorCQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDMsCisJCS5jcHAgPSB7IDEs IDEsIDEgfSwKKwkJLmhzdWIgPSAyLAorCQkudnN1YiA9IDIsCisJCS5pc195dXYgPSB0cnVlLAor CX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1lWVTQyMCwKKwkJLmRlcHRoID0gMCwKKwkJ Lm51bV9wbGFuZXMgPSAzLAorCQkuY3BwID0geyAxLCAxLCAxIH0sCisJCS5oc3ViID0gMiwKKwkJ LnZzdWIgPSAyLAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZP Uk1BVF9ZVVY0MjIsCisJCS5kZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMywKKwkJLmNwcCA9 IHsgMSwgMSwgMSB9LAorCQkuaHN1YiA9IDIsCisJCS52c3ViID0gMSwKKwkJLmlzX3l1diA9IHRy dWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfWVZVNDIyLAorCQkuZGVwdGggPSAw LAorCQkubnVtX3BsYW5lcyA9IDMsCisJCS5jcHAgPSB7IDEsIDEsIDEgfSwKKwkJLmhzdWIgPSAy LAorCQkudnN1YiA9IDEsCisJCS5pc195dXYgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBE Uk1fRk9STUFUX1lVVjQ0NCwKKwkJLmRlcHRoID0gMCwKKwkJLm51bV9wbGFuZXMgPSAzLAorCQku Y3BwID0geyAxLCAxLCAxIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAxLAorCQkuaXNfeXV2 ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVlU0NDQsCisJCS5kZXB0 aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMywKKwkJLmNwcCA9IHsgMSwgMSwgMSB9LAorCQkuaHN1 YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmlzX3l1diA9IHRydWUsCisJfSwgeworCQkuZHJtX2Zt dCA9IERSTV9GT1JNQVRfTlYxMiwKKwkJLmRlcHRoID0gMCwKKwkJLm51bV9wbGFuZXMgPSAyLAor CQkuY3BwID0geyAxLCAyLCAwIH0sCisJCS5oc3ViID0gMiwKKwkJLnZzdWIgPSAyLAorCQkuaXNf eXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9OVjIxLAorCQkuZGVw dGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDIsCisJCS5jcHAgPSB7IDEsIDIsIDAgfSwKKwkJLmhz dWIgPSAyLAorCQkudnN1YiA9IDIsCisJCS5pc195dXYgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9m bXQgPSBEUk1fRk9STUFUX05WMTYsCisJCS5kZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMiwK KwkJLmNwcCA9IHsgMSwgMiwgMCB9LAorCQkuaHN1YiA9IDIsCisJCS52c3ViID0gMSwKKwkJLmlz X3l1diA9IHRydWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfTlY2MSwKKwkJLmRl cHRoID0gMCwKKwkJLm51bV9wbGFuZXMgPSAyLAorCQkuY3BwID0geyAxLCAyLCAwIH0sCisJCS5o c3ViID0gMiwKKwkJLnZzdWIgPSAxLAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1f Zm10ID0gRFJNX0ZPUk1BVF9OVjI0LAorCQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDIs CisJCS5jcHAgPSB7IDEsIDIsIDAgfSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJCS5p c195dXYgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX05WNDIsCisJCS5k ZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMiwKKwkJLmNwcCA9IHsgMSwgMiwgMCB9LAorCQku aHN1YiA9IDEsCisJCS52c3ViID0gMSwKKwkJLmlzX3l1diA9IHRydWUsCisJfSwgeworCQkuZHJt X2ZtdCA9IERSTV9GT1JNQVRfWVVZViwKKwkJLmRlcHRoID0gMCwKKwkJLm51bV9wbGFuZXMgPSAx LAorCQkuY3BwID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0gMiwKKwkJLnZzdWIgPSAxLAorCQku aXNfeXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZVllVLAorCQku ZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDIsIDAsIDAgfSwKKwkJ LmhzdWIgPSAyLAorCQkudnN1YiA9IDEsCisJCS5pc195dXYgPSB0cnVlLAorCX0sIHsKKwkJLmRy bV9mbXQgPSBEUk1fRk9STUFUX1VZVlksCisJCS5kZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0g MSwKKwkJLmNwcCA9IHsgMiwgMCwgMCB9LAorCQkuaHN1YiA9IDIsCisJCS52c3ViID0gMSwKKwkJ LmlzX3l1diA9IHRydWUsCisJfSwgeworCQkuZHJtX2ZtdCA9IERSTV9GT1JNQVRfVllVWSwKKwkJ LmRlcHRoID0gMCwKKwkJLm51bV9wbGFuZXMgPSAxLAorCQkuY3BwID0geyAyLCAwLCAwIH0sCisJ CS5oc3ViID0gMiwKKwkJLnZzdWIgPSAxLAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5k cm1fZm10ID0gRFJNX0ZPUk1BVF9YWVVWODg4OCwKKwkJLmRlcHRoID0gMCwKKwkJLm51bV9wbGFu ZXMgPSAxLAorCQkuY3BwID0geyA0LCAwLCAwIH0sCisJCS5oc3ViID0gMSwKKwkJLnZzdWIgPSAx LAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9BWVVW LAorCQkuZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jcHAgPSB7IDQsIDAsIDAg fSwKKwkJLmhzdWIgPSAxLAorCQkudnN1YiA9IDEsCisJCS5oYXNfYWxwaGEgPSB0cnVlLAorCQku aXNfeXV2ID0gdHJ1ZSwKKwl9LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZMEwwLAorCQku ZGVwdGggPSAwLAorCQkubnVtX3BsYW5lcyA9IDEsCisJCS5jaGFyX3Blcl9ibG9jayA9IHsgOCwg MCwgMCB9LAorCQkuYmxvY2tfdyA9IHsgMiwgMCwgMCB9LAorCQkuYmxvY2tfaCA9IHsgMiwgMCwg MCB9LAorCQkuaHN1YiA9IDIsCisJCS52c3ViID0gMiwKKwkJLmhhc19hbHBoYSA9IHRydWUsCisJ CS5pc195dXYgPSB0cnVlLAorCX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1gwTDAsCisJ CS5kZXB0aCA9IDAsCisJCS5udW1fcGxhbmVzID0gMSwKKwkJLmNoYXJfcGVyX2Jsb2NrID0geyA4 LCAwLCAwIH0sCisJCS5ibG9ja193ID0geyAyLCAwLCAwIH0sCisJCS5ibG9ja19oID0geyAyLCAw LCAwIH0sCisJCS5oc3ViID0gMiwKKwkJLnZzdWIgPSAyLAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9 LCB7CisJCS5kcm1fZm10ID0gRFJNX0ZPUk1BVF9ZMEwyLAorCQkuZGVwdGggPSAwLAorCQkubnVt X3BsYW5lcyA9IDEsCisJCS5jaGFyX3Blcl9ibG9jayA9IHsgOCwgMCwgMCB9LAorCQkuYmxvY2tf dyA9IHsgMiwgMCwgMCB9LAorCQkuYmxvY2tfaCA9IHsgMiwgMCwgMCB9LAorCQkuaHN1YiA9IDIs CisJCS52c3ViID0gMiwKKwkJLmhhc19hbHBoYSA9IHRydWUsCisJCS5pc195dXYgPSB0cnVlLAor CX0sIHsKKwkJLmRybV9mbXQgPSBEUk1fRk9STUFUX1gwTDIsCisJCS5kZXB0aCA9IDAsCisJCS5u dW1fcGxhbmVzID0gMSwKKwkJLmNoYXJfcGVyX2Jsb2NrID0geyA4LCAwLCAwIH0sCisJCS5ibG9j a193ID0geyAyLCAwLCAwIH0sCisJCS5ibG9ja19oID0geyAyLCAwLCAwIH0sCisJCS5oc3ViID0g MiwKKwkJLnZzdWIgPSAyLAorCQkuaXNfeXV2ID0gdHJ1ZSwKKwl9LAorfTsKKworI2RlZmluZSBf X2ltYWdlX2Zvcm1hdF9sb29rdXAoX2ZpZWxkLCBfZm10KQkJCVwKKwkoewkJCQkJCQlcCisJCWNv bnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqZm9ybWF0ID0gTlVMTDsJXAorCQl1bnNpZ25l ZCBpOwkJCQkJXAorCQkJCQkJCQlcCisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZvcm1h dHMpOyBpKyspCVwKKwkJCWlmIChmb3JtYXRzW2ldLl9maWVsZCA9PSBfZm10KQkJXAorCQkJCWZv cm1hdCA9ICZmb3JtYXRzW2ldOwkJXAorCQkJCQkJCQlcCisJCWZvcm1hdDsJCQkJCQlcCisJfSkK KworLyoqCisgKiBfX2ltYWdlX2Zvcm1hdF9kcm1fbG9va3VwIC0gcXVlcnkgaW5mb3JtYXRpb24g Zm9yIGEgZ2l2ZW4gZm9ybWF0CisgKiBAZHJtOiBEUk0gZm91cmNjIHBpeGVsIGZvcm1hdCAoRFJN X0ZPUk1BVF8qKQorICoKKyAqIFRoZSBjYWxsZXIgc2hvdWxkIG9ubHkgcGFzcyBhIHN1cHBvcnRl ZCBwaXhlbCBmb3JtYXQgdG8gdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBSZXR1cm5zOgorICogVGhl IGluc3RhbmNlIG9mIHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyB0aGF0IGRlc2NyaWJlcyB0aGUg cGl4ZWwgZm9ybWF0LCBvcgorICogTlVMTCBpZiB0aGUgZm9ybWF0IGlzIHVuc3VwcG9ydGVkLgor ICovCitjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKl9faW1hZ2VfZm9ybWF0X2RybV9s b29rdXAodTMyIGRybSkKK3sKKwlyZXR1cm4gX19pbWFnZV9mb3JtYXRfbG9va3VwKGRybV9mbXQs IGRybSk7Cit9CitFWFBPUlRfU1lNQk9MKF9faW1hZ2VfZm9ybWF0X2RybV9sb29rdXApOworCisv KioKKyAqIGltYWdlX2Zvcm1hdF9kcm1fbG9va3VwIC0gcXVlcnkgaW5mb3JtYXRpb24gZm9yIGEg Z2l2ZW4gZm9ybWF0CisgKiBAZHJtOiBEUk0gZm91cmNjIHBpeGVsIGZvcm1hdCAoRFJNX0ZPUk1B VF8qKQorICoKKyAqIFRoZSBjYWxsZXIgc2hvdWxkIG9ubHkgcGFzcyBhIHN1cHBvcnRlZCBwaXhl bCBmb3JtYXQgdG8gdGhpcyBmdW5jdGlvbi4KKyAqIFVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdHMg d2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcgaW4gdGhlIGtlcm5lbCBsb2cuCisgKgorICogUmV0dXJu czoKKyAqIFRoZSBpbnN0YW5jZSBvZiBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gdGhhdCBkZXNj cmliZXMgdGhlIHBpeGVsIGZvcm1hdCwgb3IKKyAqIE5VTEwgaWYgdGhlIGZvcm1hdCBpcyB1bnN1 cHBvcnRlZC4KKyAqLworY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1hdF9pbmZvICppbWFnZV9mb3Jt YXRfZHJtX2xvb2t1cCh1MzIgZHJtKQoreworCWNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5m byAqZm9ybWF0OworCisJZm9ybWF0ID0gX19pbWFnZV9mb3JtYXRfZHJtX2xvb2t1cChkcm0pOwor CisJV0FSTl9PTighZm9ybWF0KTsKKwlyZXR1cm4gZm9ybWF0OworfQorRVhQT1JUX1NZTUJPTChp bWFnZV9mb3JtYXRfZHJtX2xvb2t1cCk7CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X3BsYW5lX2Nw cCAtIGRldGVybWluZSB0aGUgYnl0ZXMgcGVyIHBpeGVsIHZhbHVlCisgKiBAZm9ybWF0OiBwb2lu dGVyIHRvIHRoZSBpbWFnZV9mb3JtYXQKKyAqIEBwbGFuZTogcGxhbmUgaW5kZXgKKyAqCisgKiBS ZXR1cm5zOgorICogVGhlIGJ5dGVzIHBlciBwaXhlbCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBw bGFuZS4KKyAqLwordW5zaWduZWQgaW50IGltYWdlX2Zvcm1hdF9wbGFuZV9jcHAoY29uc3Qgc3Ry dWN0IGltYWdlX2Zvcm1hdF9pbmZvICpmb3JtYXQsCisJCQkJICAgIGludCBwbGFuZSkKK3sKKwlp ZiAoIWZvcm1hdCB8fCBwbGFuZSA+PSBmb3JtYXQtPm51bV9wbGFuZXMpCisJCXJldHVybiAwOwor CisJcmV0dXJuIGZvcm1hdC0+Y3BwW3BsYW5lXTsKK30KK0VYUE9SVF9TWU1CT0woaW1hZ2VfZm9y bWF0X3BsYW5lX2NwcCk7CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X3BsYW5lX3dpZHRoIC0gd2lk dGggb2YgdGhlIHBsYW5lIGdpdmVuIHRoZSBmaXJzdCBwbGFuZQorICogQGZvcm1hdDogcG9pbnRl ciB0byB0aGUgaW1hZ2VfZm9ybWF0CisgKiBAd2lkdGg6IHdpZHRoIG9mIHRoZSBmaXJzdCBwbGFu ZQorICogQHBsYW5lOiBwbGFuZSBpbmRleAorICoKKyAqIFJldHVybnM6CisgKiBUaGUgd2lkdGgg b2YgQHBsYW5lLCBnaXZlbiB0aGF0IHRoZSB3aWR0aCBvZiB0aGUgZmlyc3QgcGxhbmUgaXMgQHdp ZHRoLgorICovCit1bnNpZ25lZCBpbnQgaW1hZ2VfZm9ybWF0X3BsYW5lX3dpZHRoKGludCB3aWR0 aCwKKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW1hZ2VfZm9ybWF0X2luZm8gKmZvcm1hdCwKKwkJ CQkgICAgICBpbnQgcGxhbmUpCit7CisJaWYgKCFmb3JtYXQgfHwgcGxhbmUgPj0gZm9ybWF0LT5u dW1fcGxhbmVzKQorCQlyZXR1cm4gMDsKKworCWlmIChwbGFuZSA9PSAwKQorCQlyZXR1cm4gd2lk dGg7CisKKwlyZXR1cm4gd2lkdGggLyBmb3JtYXQtPmhzdWI7Cit9CitFWFBPUlRfU1lNQk9MKGlt YWdlX2Zvcm1hdF9wbGFuZV93aWR0aCk7CisKKy8qKgorICogaW1hZ2VfZm9ybWF0X3BsYW5lX2hl aWdodCAtIGhlaWdodCBvZiB0aGUgcGxhbmUgZ2l2ZW4gdGhlIGZpcnN0IHBsYW5lCisgKiBAZm9y bWF0OiBwb2ludGVyIHRvIHRoZSBpbWFnZV9mb3JtYXQKKyAqIEBoZWlnaHQ6IGhlaWdodCBvZiB0 aGUgZmlyc3QgcGxhbmUKKyAqIEBwbGFuZTogcGxhbmUgaW5kZXgKKyAqCisgKiBSZXR1cm5zOgor ICogVGhlIGhlaWdodCBvZiBAcGxhbmUsIGdpdmVuIHRoYXQgdGhlIGhlaWdodCBvZiB0aGUgZmly c3QgcGxhbmUgaXMgQGhlaWdodC4KKyAqLwordW5zaWduZWQgaW50IGltYWdlX2Zvcm1hdF9wbGFu ZV9oZWlnaHQoaW50IGhlaWdodCwKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGltYWdlX2Zvcm1h dF9pbmZvICpmb3JtYXQsCisJCQkJICAgICAgIGludCBwbGFuZSkKK3sKKwlpZiAoIWZvcm1hdCB8 fCBwbGFuZSA+PSBmb3JtYXQtPm51bV9wbGFuZXMpCisJCXJldHVybiAwOworCisJaWYgKHBsYW5l ID09IDApCisJCXJldHVybiBoZWlnaHQ7CisKKwlyZXR1cm4gaGVpZ2h0IC8gZm9ybWF0LT52c3Vi OworfQorRVhQT1JUX1NZTUJPTChpbWFnZV9mb3JtYXRfcGxhbmVfaGVpZ2h0KTsKKworLyoqCisg KiBpbWFnZV9mb3JtYXRfYmxvY2tfd2lkdGggLSB3aWR0aCBpbiBwaXhlbHMgb2YgYmxvY2suCisg KiBAZm9ybWF0OiBwb2ludGVyIHRvIHRoZSBpbWFnZV9mb3JtYXQKKyAqIEBwbGFuZTogcGxhbmUg aW5kZXgKKyAqCisgKiBSZXR1cm5zOgorICogVGhlIHdpZHRoIGluIHBpeGVscyBvZiBhIGJsb2Nr LCBkZXBlbmRpbmcgb24gdGhlIHBsYW5lIGluZGV4LgorICovCit1bnNpZ25lZCBpbnQgaW1hZ2Vf Zm9ybWF0X2Jsb2NrX3dpZHRoKGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5mbyAqZm9ybWF0 LAorCQkJCSAgICAgIGludCBwbGFuZSkKK3sKKwlpZiAoIWZvcm1hdCB8fCBwbGFuZSA8IDAgfHwg cGxhbmUgPj0gZm9ybWF0LT5udW1fcGxhbmVzKQorCQlyZXR1cm4gMDsKKworCWlmICghZm9ybWF0 LT5ibG9ja193W3BsYW5lXSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gZm9ybWF0LT5ibG9ja193 W3BsYW5lXTsKK30KK0VYUE9SVF9TWU1CT0woaW1hZ2VfZm9ybWF0X2Jsb2NrX3dpZHRoKTsKKwor LyoqCisgKiBpbWFnZV9mb3JtYXRfYmxvY2tfaGVpZ2h0IC0gaGVpZ2h0IGluIHBpeGVscyBvZiBh IGJsb2NrCisgKiBAaW5mbzogcG9pbnRlciB0byB0aGUgaW1hZ2VfZm9ybWF0CisgKiBAcGxhbmU6 IHBsYW5lIGluZGV4CisgKgorICogUmV0dXJuczoKKyAqIFRoZSBoZWlnaHQgaW4gcGl4ZWxzIG9m IGEgYmxvY2ssIGRlcGVuZGluZyBvbiB0aGUgcGxhbmUgaW5kZXguCisgKi8KK3Vuc2lnbmVkIGlu dCBpbWFnZV9mb3JtYXRfYmxvY2tfaGVpZ2h0KGNvbnN0IHN0cnVjdCBpbWFnZV9mb3JtYXRfaW5m byAqZm9ybWF0LAorCQkJCSAgICAgICBpbnQgcGxhbmUpCit7CisJaWYgKCFmb3JtYXQgfHwgcGxh bmUgPCAwIHx8IHBsYW5lID49IGZvcm1hdC0+bnVtX3BsYW5lcykKKwkJcmV0dXJuIDA7CisKKwlp ZiAoIWZvcm1hdC0+YmxvY2tfaFtwbGFuZV0pCisJCXJldHVybiAxOworCisJcmV0dXJuIGZvcm1h dC0+YmxvY2tfaFtwbGFuZV07Cit9CitFWFBPUlRfU1lNQk9MKGltYWdlX2Zvcm1hdF9ibG9ja19o ZWlnaHQpOworCisvKioKKyAqIGltYWdlX2Zvcm1hdF9taW5fcGl0Y2ggLSBjb21wdXRlcyB0aGUg bWluaW11bSByZXF1aXJlZCBwaXRjaCBpbiBieXRlcworICogQGluZm86IHBpeGVsIGZvcm1hdCBp bmZvCisgKiBAcGxhbmU6IHBsYW5lIGluZGV4CisgKiBAYnVmZmVyX3dpZHRoOiBidWZmZXIgd2lk dGggaW4gcGl4ZWxzCisgKgorICogUmV0dXJuczoKKyAqIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHBp dGNoIGluIGJ5dGVzIGZvciBhIGJ1ZmZlciBieSB0YWtpbmcgaW50byBjb25zaWRlcmF0aW9uCisg KiB0aGUgcGl4ZWwgZm9ybWF0IGluZm9ybWF0aW9uIGFuZCB0aGUgYnVmZmVyIHdpZHRoLgorICov Cit1aW50NjRfdCBpbWFnZV9mb3JtYXRfbWluX3BpdGNoKGNvbnN0IHN0cnVjdCBpbWFnZV9mb3Jt YXRfaW5mbyAqaW5mbywKKwkJCQlpbnQgcGxhbmUsIHVuc2lnbmVkIGludCBidWZmZXJfd2lkdGgp Cit7CisJaWYgKCFpbmZvIHx8IHBsYW5lIDwgMCB8fCBwbGFuZSA+PSBpbmZvLT5udW1fcGxhbmVz KQorCQlyZXR1cm4gMDsKKworCXJldHVybiBESVZfUk9VTkRfVVBfVUxMKCh1NjQpYnVmZmVyX3dp ZHRoICogaW5mby0+Y2hhcl9wZXJfYmxvY2tbcGxhbmVdLAorCQkJICAgIGltYWdlX2Zvcm1hdF9i bG9ja193aWR0aChpbmZvLCBwbGFuZSkgKgorCQkJICAgIGltYWdlX2Zvcm1hdF9ibG9ja19oZWln aHQoaW5mbywgcGxhbmUpKTsKK30KK0VYUE9SVF9TWU1CT0woaW1hZ2VfZm9ybWF0X21pbl9waXRj aCk7Ci0tIApnaXQtc2VyaWVzIDAuOS4xCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbA==