From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o91.zoho.com [136.143.188.91]) by sourceware.org (Postfix) with ESMTPS id 891E43858D3C; Mon, 17 Jan 2022 22:18:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 891E43858D3C ARC-Seal: i=1; a=rsa-sha256; t=1642457885; cv=none; d=zohomail.com; s=zohoarc; b=mE3oIAzTgU8X8/n2l2isgsu5vqy4mMQEoSltBKHckCeMAGzxBttXKXtZ7gXg4o1A15fR84CeexJES+KyWvZl5y333P/XDTfwaWlj+m4wNVi83UEZYa41JI1wzPxF3cSRpQYi45saZi0wD+HceKjsSTrT7v79ISUPE5X0fQABZi4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1642457885; h=Content-Type:Date:From:MIME-Version:Message-ID:Subject:To; bh=LaA3wxcgNSVYpN96UiVVkNmP+CfvmV70Esmo/c9llPc=; b=B0+MMI1dY5gLPMXr67tUft3CveFU/zob8Qrog10pF/VvEq3uTdVe2FGzjh8wUJV88+HHSzI/tExMahadTLJvBElHkAksFsI1xfh4h5IDbzbBA+Bvvyhm/v/+9+q/vwudN6QEFDwbuJ3l6cVYn0rt3UAkNh8F+f30LqHTHcnpAak= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 1642457882982915.8716720902992; Mon, 17 Jan 2022 14:18:02 -0800 (PST) Message-ID: <13bdd05cfd7006a332ec785ab371356f0354db4d.camel@zoho.com> Subject: [PATCH] libgccjit: Add support for bitcasts [PR104071] From: Antoni Boucher To: gcc-patches@gcc.gnu.org, jit@gcc.gnu.org Date: Mon, 17 Jan 2022 17:18:01 -0500 Content-Type: multipart/mixed; boundary="=-Yn1NNqACPA9sMJdfpgRJ" User-Agent: Evolution 3.42.3 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jan 2022 22:18:11 -0000 --=-Yn1NNqACPA9sMJdfpgRJ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Hi. This patch add support for bitcasts in libgccjit. It passes the JIT tests, but since I added a function in tree.c, I wonder if I should run the whole testsuite. David, you can now disregard my question in my email about 128-bit integers regarding my issue with initialize_sizetypes being called multiple times because this patch fix this issue. I turns out there was a cache of types that needed to be cleared when you initialize the JIT. The check for sizes is pending, because it requires the updates to get_size I made in my patch for 128-bit integers. Thanks for the review! --=-Yn1NNqACPA9sMJdfpgRJ Content-Disposition: attachment; filename="0001-libgccjit-Add-support-for-bitcasts-PR104071.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-libgccjit-Add-support-for-bitcasts-PR104071.patch"; charset="UTF-8" RnJvbSAzNWUxMTNiNTFjNDE2YWYwYzEzYmM3ZWIxNjBmZjZjMGNiY2ZmODEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogV2VkLCA5IEp1biAyMDIxIDE4OjI5OjE0IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gbGliZ2Nj aml0OiBBZGQgc3VwcG9ydCBmb3IgYml0Y2FzdHMgW1BSMTA0MDcxXQoKMjAyMi0wMS0xNyAgQW50 b25pIEJvdWNoZXIgPGJvdWFudG9Aem9oby5jb20+CgpnY2Mvaml0LwoJUFIgdGFyZ2V0LzEwNDA3 MQoJKiBkb2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdCAoTElCR0NDSklUX0FCSV8yMCk6IE5l dyBBQkkgdGFnLgoJKiBkb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3Q6IEFkZCBkb2N1bWVudGF0 aW9uIGZvciB0aGUKCWZ1bmN0aW9uIGdjY19qaXRfY29udGV4dF9uZXdfYml0Y2FzdC4KCSogZHVt bXktZnJvbnRlbmQuYzogY2xlYXIgdGhlIGNhY2hlIG9mIG5vbi1zdGFuZGFyZCBpbnRlZ2VyCgl0 eXBlcyB0byBhdm9pZCBoYXZpbmcgaXNzdWVzIHdpdGggc29tZSBvcHRpbWl6YXRpb25zIG9mCgli aXRjYXN0IHdoZXJlIHRoZSBTU0FfTkFNRSB3aWxsIGhhdmUgYSBzaXplIG9mIGEgY2FjaGVkCglp bnRlZ2VyIHR5cGUgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCBjYXVzaW5nIGEK CWNvbXBhcmlzb24gb2YgaW50ZWdlciBjb25zdGFudCB0byBmYWlsLgoJKiBqaXQtcGxheWJhY2su YzogTmV3IGZ1bmN0aW9uIChuZXdfYml0Y2FzdCkuCgkqIGppdC1wbGF5YmFjay5oOiBOZXcgZnVu Y3Rpb24gKG5ld19iaXRjYXN0KS4KCSogaml0LXJlY29yZGluZy5jOiBOZXcgZnVuY3Rpb25zIChu ZXdfYml0Y2FzdCwKCWJpdGNhc3Q6OnJlcGxheV9pbnRvLCBiaXRjYXN0Ojp2aXNpdF9jaGlsZHJl biwKCWJpdGNhc3Q6Om1ha2VfZGVidWdfc3RyaW5nLCBiaXRjYXN0Ojp3cml0ZV9yZXByb2R1Y2Vy KS4KCSogaml0LXJlY29yZGluZy5oOiBOZXcgY2Fsc3MgKGJpdGNhc3QpIGFuZCBuZXcgZnVuY3Rp b24KCShuZXdfYml0Y2FzdCwgYml0Y2FzdDo6cmVwbGF5X2ludG8sIGJpdGNhc3Q6OnZpc2l0X2No aWxkcmVuLAoJYml0Y2FzdDo6bWFrZV9kZWJ1Z19zdHJpbmcsIGJpdGNhc3Q6OndyaXRlX3JlcHJv ZHVjZXIsCgliaXRjYXN0OjpnZXRfcHJlY2VkZW5jZSkuCgkqIGxpYmdjY2ppdC5jOiBOZXcgZnVu Y3Rpb24gKGdjY19qaXRfY29udGV4dF9uZXdfYml0Y2FzdCkKCSogbGliZ2Njaml0Lmg6IE5ldyBm dW5jdGlvbiAoZ2NjX2ppdF9jb250ZXh0X25ld19iaXRjYXN0KQoJKiBsaWJnY2NqaXQubWFwIChM SUJHQ0NKSVRfQUJJXzIwKTogTmV3IEFCSSB0YWcuCgpnY2MvdGVzdHN1aXRlLwoJUFIgdGFyZ2V0 LzEwNDA3MQoJKiBqaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmg6IEFkZCBuZXcgdGVzdC1i aXRjYXN0LgoJKiBqaXQuZGcvdGVzdC1iaXRjYXN0LmM6IE5ldyB0ZXN0LgoKZ2NjLwoJUFIgdGFy Z2V0LzEwNDA3MQoJKiB0cmVlLmM6IE5ldyBmdW5jdGlvbiAoY2xlYXJfbm9uc3RhbmRhcmRfaW50 ZWdlcl90eXBlX2NhY2hlKS4KCSogdHJlZS5oOiBOZXcgZnVuY3Rpb24gKGNsZWFyX25vbnN0YW5k YXJkX2ludGVnZXJfdHlwZV9jYWNoZSkuCi0tLQogZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRp YmlsaXR5LnJzdCAgICAgICAgfCAgOSArKysKIGdjYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lv bnMucnN0ICAgICAgICAgIHwgMTAgKysrCiBnY2Mvaml0L2R1bW15LWZyb250ZW5kLmMgICAgICAg ICAgICAgICAgICAgICB8ICAyICsKIGdjYy9qaXQvaml0LXBsYXliYWNrLmMgICAgICAgICAgICAg ICAgICAgICAgIHwgMTMgKysrKwogZ2NjL2ppdC9qaXQtcGxheWJhY2suaCAgICAgICAgICAgICAg ICAgICAgICAgfCAgNSArKwogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmMgICAgICAgICAgICAgICAg ICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKwogZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgg ICAgICAgICAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5j ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKwogZ2NjL2ppdC9saWJnY2Nq aXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysKIGdjYy9qaXQvbGliZ2Njaml0 Lm1hcCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysKIGdjYy90ZXN0c3VpdGUvaml0LmRn L2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIHwgMTAgKysrCiBnY2MvdGVzdHN1aXRlL2ppdC5kZy90 ZXN0LWJpdGNhc3QuYyAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysrKwogZ2NjL3RyZWUu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysKIGdjYy90cmVlLmgg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogMTQgZmlsZXMgY2hhbmdl ZCwgMjU5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2pp dC5kZy90ZXN0LWJpdGNhc3QuYwoKZGlmZiAtLWdpdCBhL2djYy9qaXQvZG9jcy90b3BpY3MvY29t cGF0aWJpbGl0eS5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0Cmlu ZGV4IDE2Y2ViZTMxYTEwLi5iNWE2YjcwNGRkYSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2NzL3Rv cGljcy9jb21wYXRpYmlsaXR5LnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGli aWxpdHkucnN0CkBAIC0zMDIsMyArMzAyLDEyIEBAIHRocmVhZC1sb2NhbCBzdG9yYWdlIG1vZGVs IG9mIGEgdmFyaWFibGU6CiBzZWN0aW9uIG9mIGEgdmFyaWFibGU6CiAKICAgKiA6ZnVuYzpgZ2Nj X2ppdF9sdmFsdWVfc2V0X2xpbmtfc2VjdGlvbmAKKworLi4gX0xJQkdDQ0pJVF9BQklfMjA6CisK K2BgTElCR0NDSklUX0FCSV8yMGBgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBMSUJHQ0NK SVRfQUJJXzIwYGAgY292ZXJzIHRoZSBhZGRpdGlvbiBvZiBhbiBBUEkgZW50cnlwb2ludCB0byBi aXRjYXN0IGEKK3ZhbHVlIGZyb20gb25lIHR5cGUgdG8gYW5vdGhlcjoKKworICAqIDpmdW5jOmBn Y2Nfaml0X2NvbnRleHRfbmV3X2JpdGNhc3RgCmRpZmYgLS1naXQgYS9nY2Mvaml0L2RvY3MvdG9w aWNzL2V4cHJlc3Npb25zLnJzdCBiL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0 CmluZGV4IDc5MWEyMDM5OGNhLi42ZTBiNWRiNzc3YiAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2Nz L3RvcGljcy9leHByZXNzaW9ucy5yc3QKKysrIGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNz aW9ucy5yc3QKQEAgLTY0OSw2ICs2NDksMTYgQEAgVHlwZS1jb2VyY2lvbgogICAgICAqIGludCA8 LT4gYm9vbAogICAgICAqIFAqICA8LT4gUSosIGZvciBwb2ludGVyIHR5cGVzIFAgYW5kIFEKIAor Li4gZnVuY3Rpb246OiBnY2Nfaml0X3J2YWx1ZSAqXAorICAgICAgICAgICAgICBnY2Nfaml0X2Nv bnRleHRfbmV3X2JpdGNhc3QgKGdjY19qaXRfY29udGV4dCAqY3R4dCxcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nfaml0X3J2YWx1ZSAq cnZhbHVlLFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2Nf aml0X3R5cGUgKnR5cGUpCisKKyAgIEdpdmVuIGFuIHJ2YWx1ZSBvZiBULCBiaXRjYXN0IGl0IHRv IGFub3RoZXIgdHlwZS4KKworICAgVGhlIHR5cGUgb2YgcnZhbHVlIG11c3QgYmUgdGhlIHNhbWUg c2l6ZSBhcyB0aGUgc2l6ZSBvZiBgYHR5cGVgYC4KKwogTHZhbHVlcwogLS0tLS0tLQogCmRpZmYg LS1naXQgYS9nY2Mvaml0L2R1bW15LWZyb250ZW5kLmMgYi9nY2Mvaml0L2R1bW15LWZyb250ZW5k LmMKaW5kZXggODRmZjM1OWJmZTMuLmMzZGE5NzY0MmUzIDEwMDY0NAotLS0gYS9nY2Mvaml0L2R1 bW15LWZyb250ZW5kLmMKKysrIGIvZ2NjL2ppdC9kdW1teS1mcm9udGVuZC5jCkBAIC01OTIsNiAr NTkyLDggQEAgaml0X2xhbmdob29rX2luaXQgKHZvaWQpCiAgIGdsb2JhbF9kYy0+YmVnaW5fZGlh Z25vc3RpYyA9IGppdF9iZWdpbl9kaWFnbm9zdGljOwogICBnbG9iYWxfZGMtPmVuZF9kaWFnbm9z dGljID0gaml0X2VuZF9kaWFnbm9zdGljOwogCisgIGNsZWFyX25vbnN0YW5kYXJkX2ludGVnZXJf dHlwZV9jYWNoZSAoKTsKKwogICBidWlsZF9jb21tb25fdHJlZV9ub2RlcyAoZmFsc2UpOwogCiAg IC8qIEkgZG9uJ3Qga25vdyB3aHkgdGhpcyBoYXMgdG8gYmUgZG9uZSBleHBsaWNpdGx5LiAgKi8K ZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXBsYXliYWNrLmMgYi9nY2Mvaml0L2ppdC1wbGF5YmFj ay5jCmluZGV4IDFkNjRjYWY0ZTIwLi40YWQyZjZjZTQxZCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9q aXQtcGxheWJhY2suYworKysgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5jCkBAIC0xMzkwLDYgKzEz OTAsMTkgQEAgbmV3X2Nhc3QgKHBsYXliYWNrOjpsb2NhdGlvbiAqbG9jLAogICByZXR1cm4gbmV3 IHJ2YWx1ZSAodGhpcywgdF9jYXN0KTsKIH0KIAorcGxheWJhY2s6OnJ2YWx1ZSAqCitwbGF5YmFj azo6Y29udGV4dDo6CituZXdfYml0Y2FzdCAobG9jYXRpb24gKmxvYywKKwkJICAgICAgIHJ2YWx1 ZSAqZXhwciwKKwkJICAgICAgIHR5cGUgKnR5cGVfKQoreworICB0cmVlIHRfYml0Y2FzdCA9IGJ1 aWxkMSAoVklFV19DT05WRVJUX0VYUFIsCisJCQkgICAgICAgdHlwZV8tPmFzX3RyZWUgKCksIGV4 cHItPmFzX3RyZWUgKCkpOworICBpZiAobG9jKQorICAgIHNldF90cmVlX2xvY2F0aW9uICh0X2Jp dGNhc3QsIGxvYyk7CisgIHJldHVybiBuZXcgcnZhbHVlICh0aGlzLCB0X2JpdGNhc3QpOworfQor CiAvKiBDb25zdHJ1Y3QgYSBwbGF5YmFjazo6bHZhbHVlIGluc3RhbmNlICh3cmFwcGluZyBhIHRy ZWUpIGZvciBhbgogICAgYXJyYXkgYWNjZXNzLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9q aXQtcGxheWJhY2suaCBiL2djYy9qaXQvaml0LXBsYXliYWNrLmgKaW5kZXggYzkzZDcwNTVkNDMu LjViMTA3YmU5ZDY5IDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5oCisrKyBiL2dj Yy9qaXQvaml0LXBsYXliYWNrLmgKQEAgLTE4MCw2ICsxODAsMTEgQEAgcHVibGljOgogCSAgICBy dmFsdWUgKmV4cHIsCiAJICAgIHR5cGUgKnR5cGVfKTsKIAorICBydmFsdWUgKgorICBuZXdfYml0 Y2FzdCAobG9jYXRpb24gKmxvYywKKwkgICAgICAgcnZhbHVlICpleHByLAorCSAgICAgICB0eXBl ICp0eXBlXyk7CisKICAgbHZhbHVlICoKICAgbmV3X2FycmF5X2FjY2VzcyAobG9jYXRpb24gKmxv YywKIAkJICAgIHJ2YWx1ZSAqcHRyLApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5n LmMgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuYwppbmRleCBlZTg5MzQxMzFkMS4uYWUzMzgxYjU4 NmQgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXJlY29yZGluZy5jCisrKyBiL2djYy9qaXQvaml0 LXJlY29yZGluZy5jCkBAIC0xMjQyLDYgKzEyNDIsMjIgQEAgcmVjb3JkaW5nOjpjb250ZXh0Ojpu ZXdfY2FzdCAocmVjb3JkaW5nOjpsb2NhdGlvbiAqbG9jLAogICByZXR1cm4gcmVzdWx0OwogfQog CisvKiBDcmVhdGUgYSByZWNvcmRpbmc6OmJpdGNhc3QgaW5zdGFuY2UgYW5kIGFkZCBpdCB0byB0 aGlzIGNvbnRleHQncyBsaXN0CisgICBvZiBtZW1lbnRvcy4KKworICAgSW1wbGVtZW50cyB0aGUg cG9zdC1lcnJvci1jaGVja2luZyBwYXJ0IG9mCisgICBnY2Nfaml0X2NvbnRleHRfbmV3X2JpdGNh c3QuICAqLworCityZWNvcmRpbmc6OnJ2YWx1ZSAqCityZWNvcmRpbmc6OmNvbnRleHQ6Om5ld19i aXRjYXN0IChsb2NhdGlvbiAqbG9jLAorCQkJCSBydmFsdWUgKmV4cHIsCisJCQkJIHR5cGUgKnR5 cGVfKQoreworICByZWNvcmRpbmc6OnJ2YWx1ZSAqcmVzdWx0ID0gbmV3IGJpdGNhc3QgKHRoaXMs IGxvYywgZXhwciwgdHlwZV8pOworICByZWNvcmQgKHJlc3VsdCk7CisgIHJldHVybiByZXN1bHQ7 Cit9CisKIC8qIENyZWF0ZSBhIHJlY29yZGluZzo6Y2FsbCBpbnN0YW5jZSBhbmQgYWRkIGl0IHRv IHRoaXMgY29udGV4dCdzIGxpc3QKICAgIG9mIG1lbWVudG9zLgogCkBAIC01NzQwLDYgKzU3NTYs NTYgQEAgcmVjb3JkaW5nOjpjYXN0Ojp3cml0ZV9yZXByb2R1Y2VyIChyZXByb2R1Y2VyICZyKQog CSAgIHIuZ2V0X2lkZW50aWZpZXJfYXNfdHlwZSAoZ2V0X3R5cGUgKCkpKTsKIH0KIAorLyogSW1w bGVtZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFsIGhvb2sgcmVjb3JkaW5nOjptZW1lbnRvOjpyZXBs YXlfaW50bworICAgZm9yIHJlY29yZGluZzo6Yml0Y2FzdC4gICovCisKK3ZvaWQKK3JlY29yZGlu Zzo6Yml0Y2FzdDo6cmVwbGF5X2ludG8gKHJlcGxheWVyICpyKQoreworICBzZXRfcGxheWJhY2tf b2JqIChyLT5uZXdfYml0Y2FzdCAocGxheWJhY2tfbG9jYXRpb24gKHIsIG1fbG9jKSwKKwkJCQkg ICAgbV9ydmFsdWUtPnBsYXliYWNrX3J2YWx1ZSAoKSwKKwkJCQkgICAgZ2V0X3R5cGUgKCktPnBs YXliYWNrX3R5cGUgKCkpKTsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFs IGhvb2sgcmVjb3JkaW5nOjpydmFsdWU6OnZpc2l0X2NoaWxkcmVuCisgICBmb3IgcmVjb3JkaW5n OjpiaXRjYXN0LiAgKi8KK3ZvaWQKK3JlY29yZGluZzo6Yml0Y2FzdDo6dmlzaXRfY2hpbGRyZW4g KHJ2YWx1ZV92aXNpdG9yICp2KQoreworICB2LT52aXNpdCAobV9ydmFsdWUpOworfQorCisvKiBJ bXBsZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86Om1ha2VfZGVidWdfc3RyaW5nIGZv cgorICAgY2FzdHMuICAqLworCityZWNvcmRpbmc6OnN0cmluZyAqCityZWNvcmRpbmc6OmJpdGNh c3Q6Om1ha2VfZGVidWdfc3RyaW5nICgpCit7CisgIGVudW0gcHJlY2VkZW5jZSBwcmVjID0gZ2V0 X3ByZWNlZGVuY2UgKCk7CisgIHJldHVybiBzdHJpbmc6OmZyb21fcHJpbnRmIChtX2N0eHQsCisJ CQkgICAgICAiYml0Y2FzdCglcywgJXMpIiwKKwkJCSAgICAgIG1fcnZhbHVlLT5nZXRfZGVidWdf c3RyaW5nX3BhcmVucyAocHJlYyksCisJCQkgICAgICBnZXRfdHlwZSAoKS0+Z2V0X2RlYnVnX3N0 cmluZyAoKSk7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHJlY29yZGluZzo6bWVtZW50bzo6 d3JpdGVfcmVwcm9kdWNlciBmb3IgY2FzdHMuICAqLworCit2b2lkCityZWNvcmRpbmc6OmJpdGNh c3Q6OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCit7CisgIGNvbnN0IGNoYXIgKmlk ID0gci5tYWtlX2lkZW50aWZpZXIgKHRoaXMsICJydmFsdWUiKTsKKyAgci53cml0ZSAoIiAgZ2Nj X2ppdF9ydmFsdWUgKiVzID1cbiIKKwkgICAiICAgIGdjY19qaXRfY29udGV4dF9uZXdfYml0Y2Fz dCAoJXMsXG4iCisJICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzLCAvKiBn Y2Nfaml0X2xvY2F0aW9uICpsb2MgKi9cbiIKKwkgICAiICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJXMsIC8qIGdjY19qaXRfcnZhbHVlICpydmFsdWUgKi9cbiIKKwkgICAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJXMpOyAvKiBnY2Nfaml0X3R5cGUgKnR5cGUgKi9c biIsCisJICAgaWQsCisJICAgci5nZXRfaWRlbnRpZmllciAoZ2V0X2NvbnRleHQgKCkpLAorCSAg IHIuZ2V0X2lkZW50aWZpZXIgKG1fbG9jKSwKKwkgICByLmdldF9pZGVudGlmaWVyX2FzX3J2YWx1 ZSAobV9ydmFsdWUpLAorCSAgIHIuZ2V0X2lkZW50aWZpZXJfYXNfdHlwZSAoZ2V0X3R5cGUgKCkp KTsKK30KKwogLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIGNsYXNzIGdjYzo6aml0OjpyZWNvcmRp bmc6OmJhc2VfY2FsbC4gICovCiAKIC8qIFRoZSBjb25zdHJ1Y3RvciBmb3IgZ2NjOjpqaXQ6OnJl Y29yZGluZzo6YmFzZV9jYWxsLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXJlY29yZGlu Zy5oIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmgKaW5kZXggYjY2M2QwZjIxZjUuLjcxM2FhYzM2 ZWJlIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaAorKysgYi9nY2Mvaml0L2pp dC1yZWNvcmRpbmcuaApAQCAtMjA1LDYgKzIwNSwxMSBAQCBwdWJsaWM6CiAJICAgIHJ2YWx1ZSAq ZXhwciwKIAkgICAgdHlwZSAqdHlwZV8pOwogCisgIHJ2YWx1ZSAqCisgIG5ld19iaXRjYXN0IChs b2NhdGlvbiAqbG9jLAorCSAgICAgICBydmFsdWUgKmV4cHIsCisJICAgICAgIHR5cGUgKnR5cGVf KTsKKwogICBsdmFsdWUgKgogICBuZXdfYXJyYXlfYWNjZXNzIChsb2NhdGlvbiAqbG9jLAogCQkg ICAgcnZhbHVlICpwdHIsCkBAIC0xNjkxLDYgKzE2OTYsMzMgQEAgcHJpdmF0ZToKICAgcnZhbHVl ICptX3J2YWx1ZTsKIH07CiAKK2NsYXNzIGJpdGNhc3QgOiBwdWJsaWMgcnZhbHVlCit7CitwdWJs aWM6CisgIGJpdGNhc3QgKGNvbnRleHQgKmN0eHQsCisJICAgbG9jYXRpb24gKmxvYywKKwkgICBy dmFsdWUgKmEsCisJICAgdHlwZSAqdHlwZV8pCisgIDogcnZhbHVlIChjdHh0LCBsb2MsIHR5cGVf KSwKKyAgICBtX3J2YWx1ZSAoYSkKKyAge30KKworICB2b2lkIHJlcGxheV9pbnRvIChyZXBsYXll ciAqcikgRklOQUwgT1ZFUlJJREU7CisKKyAgdm9pZCB2aXNpdF9jaGlsZHJlbiAocnZhbHVlX3Zp c2l0b3IgKnYpIEZJTkFMIE9WRVJSSURFOworCitwcml2YXRlOgorICBzdHJpbmcgKiBtYWtlX2Rl YnVnX3N0cmluZyAoKSBGSU5BTCBPVkVSUklERTsKKyAgdm9pZCB3cml0ZV9yZXByb2R1Y2VyIChy ZXByb2R1Y2VyICZyKSBGSU5BTCBPVkVSUklERTsKKyAgZW51bSBwcmVjZWRlbmNlIGdldF9wcmVj ZWRlbmNlICgpIGNvbnN0IEZJTkFMIE9WRVJSSURFCisgIHsKKyAgICByZXR1cm4gUFJFQ0VERU5D RV9DQVNUOworICB9CisKK3ByaXZhdGU6CisgIHJ2YWx1ZSAqbV9ydmFsdWU7Cit9OworCiBjbGFz cyBiYXNlX2NhbGwgOiBwdWJsaWMgcnZhbHVlCiB7CiAgcHVibGljOgpkaWZmIC0tZ2l0IGEvZ2Nj L2ppdC9saWJnY2NqaXQuYyBiL2djYy9qaXQvbGliZ2Njaml0LmMKaW5kZXggMDM3MDRlZjEwYjgu LmNkODUxNmQxYzRkIDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5jCisrKyBiL2djYy9q aXQvbGliZ2Njaml0LmMKQEAgLTI0MDUsNiArMjQwNSwzNCBAQCBnY2Nfaml0X2NvbnRleHRfbmV3 X2Nhc3QgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKICAgcmV0dXJuIHN0YXRpY19jYXN0IDxnY2Nf aml0X3J2YWx1ZSAqPiAoY3R4dC0+bmV3X2Nhc3QgKGxvYywgcnZhbHVlLCB0eXBlKSk7CiB9CiAK Ky8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGluIGxpYmdjY2ppdC5oLgor CisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IHRoZQor ICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6Y29udGV4dDo6bmV3X2JpdGNhc3QgbWV0aG9kIGluIGpp dC1yZWNvcmRpbmcuYy4gICovCisKK2djY19qaXRfcnZhbHVlICoKK2djY19qaXRfY29udGV4dF9u ZXdfYml0Y2FzdCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAorCQkJICAgICBnY2Nfaml0X2xvY2F0 aW9uICpsb2MsCisJCQkgICAgIGdjY19qaXRfcnZhbHVlICpydmFsdWUsCisJCQkgICAgIGdjY19q aXRfdHlwZSAqdHlwZSkKK3sKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAoY3R4dCwgTlVMTCwgbG9j LCAiTlVMTCBjb250ZXh0Iik7CisgIEpJVF9MT0dfRlVOQyAoY3R4dC0+Z2V0X2xvZ2dlciAoKSk7 CisgIC8qIExPQyBjYW4gYmUgTlVMTC4gICovCisgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKHJ2YWx1 ZSwgY3R4dCwgbG9jLCAiTlVMTCBydmFsdWUiKTsKKyAgUkVUVVJOX05VTExfSUZfRkFJTCAodHlw ZSwgY3R4dCwgbG9jLCAiTlVMTCB0eXBlIik7CisgIC8vIFRPRE86IGNoZWNrIHRoZSBzaXplcy4K KyAgLypSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjMgKAorICAgIGlzX3ZhbGlkX2Nhc3QgKHJ2 YWx1ZS0+Z2V0X3R5cGUgKCksIHR5cGUpLAorICAgIGN0eHQsIGxvYywKKyAgICAiY2Fubm90IGNh c3QgJXMgZnJvbSB0eXBlOiAlcyB0byB0eXBlOiAlcyIsCisgICAgcnZhbHVlLT5nZXRfZGVidWdf c3RyaW5nICgpLAorICAgIHJ2YWx1ZS0+Z2V0X3R5cGUgKCktPmdldF9kZWJ1Z19zdHJpbmcgKCks CisgICAgdHlwZS0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7Ki8KKworICByZXR1cm4gc3RhdGljX2Nh c3QgPGdjY19qaXRfcnZhbHVlICo+IChjdHh0LT5uZXdfYml0Y2FzdCAobG9jLCBydmFsdWUsIHR5 cGUpKTsKK30KKwogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRpb24gaW4gbGli Z2Njaml0LmguCiAKICAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUgcmVhbCB3b3JrIGlzIGRv bmUgYnkgdGhlCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5oIGIvZ2NjL2ppdC9saWJn Y2NqaXQuaAppbmRleCAyYTVmZmFjYjFmZS4uZGU0ZjlkYWFlYmMgMTAwNjQ0Ci0tLSBhL2djYy9q aXQvbGliZ2Njaml0LmgKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuaApAQCAtMTIwNiw2ICsxMjA2 LDE1IEBAIGdjY19qaXRfY29udGV4dF9uZXdfY2FzdCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAog CQkJICBnY2Nfaml0X3J2YWx1ZSAqcnZhbHVlLAogCQkJICBnY2Nfaml0X3R5cGUgKnR5cGUpOwog CisvKiBSZWludGVycHJldCBhIHZhbHVlIGFzIGFub3RoZXIgdHlwZS4KKworICAgVGhlIHR5cGVz IG11c3QgYmUgb2YgdGhlIHNhbWUgc2l6ZS4gICovCitleHRlcm4gZ2NjX2ppdF9ydmFsdWUgKgor Z2NjX2ppdF9jb250ZXh0X25ld19iaXRjYXN0IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCisJCQkg ICAgIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKwkJCSAgICAgZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1 ZSwKKwkJCSAgICAgZ2NjX2ppdF90eXBlICp0eXBlKTsKKwogZXh0ZXJuIGdjY19qaXRfbHZhbHVl ICoKIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNzIChnY2Nfaml0X2NvbnRleHQgKmN0 eHQsCiAJCQkJICBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xp YmdjY2ppdC5tYXAgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKaW5kZXggZjM3M2ZkMzlhYzcuLjdi NmY0MTVhYzgyIDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKKysrIGIvZ2NjL2pp dC9saWJnY2NqaXQubWFwCkBAIC0yMzgsOCArMjM4LDE0IEBAIExJQkdDQ0pJVF9BQklfMTggewog fSBMSUJHQ0NKSVRfQUJJXzE3OwogCiBMSUJHQ0NKSVRfQUJJXzE5IHsKKyAgZ2xvYmFsOgogICAg IGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfY29uc3RydWN0b3I7CiAgICAgZ2NjX2ppdF9jb250 ZXh0X25ld19zdHJ1Y3RfY29uc3RydWN0b3I7CiAgICAgZ2NjX2ppdF9jb250ZXh0X25ld191bmlv bl9jb25zdHJ1Y3RvcjsKICAgICBnY2Nfaml0X2dsb2JhbF9zZXRfaW5pdGlhbGl6ZXJfcnZhbHVl OwogfSBMSUJHQ0NKSVRfQUJJXzE4OworCitMSUJHQ0NKSVRfQUJJXzIwIHsKKyAgZ2xvYmFsOgor ICAgIGdjY19qaXRfY29udGV4dF9uZXdfYml0Y2FzdDsKK30gTElCR0NDSklUX0FCSV8xOTsKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1ub24tZmFpbGluZy10ZXN0cy5oIGIv Z2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5vbi1mYWlsaW5nLXRlc3RzLmgKaW5kZXggMjlhZmUw NjRkYjYuLjY1NjM1MWVkY2UxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwt bm9uLWZhaWxpbmctdGVzdHMuaAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwtbm9uLWZh aWxpbmctdGVzdHMuaApAQCAtNzcsNiArNzcsMTMgQEAKIC8qIHRlc3QtYnVpbHRpbi11bnJlYWNo YWJsZS5jOiBXZSBkb24ndCBhZGQgdGhpcyBvbmUsIHNpbmNlIGl0IHRvdWNoZXMKICAgIHRoZSBv cHRpbWl6YXRpb24gbGV2ZWwgb2YgdGhlIGNvbnRleHQgYXMgYSB3aG9sZS4gICovCiAKKy8qIHRl c3QtYml0Y2FzdC5jICovCisjZGVmaW5lIGNyZWF0ZV9jb2RlIGNyZWF0ZV9jb2RlX2JpdGNhc3QK KyNkZWZpbmUgdmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVfYml0Y2FzdAorI2luY2x1ZGUgInRlc3Qt Yml0Y2FzdC5jIgorI3VuZGVmIGNyZWF0ZV9jb2RlCisjdW5kZWYgdmVyaWZ5X2NvZGUKKwogLyog dGVzdC1jYWxsaW5nLWV4dGVybmFsLWZ1bmN0aW9uLmMgKi8KICNkZWZpbmUgY3JlYXRlX2NvZGUg Y3JlYXRlX2NvZGVfY2FsbGluZ19leHRlcm5hbF9mdW5jdGlvbgogI2RlZmluZSB2ZXJpZnlfY29k ZSB2ZXJpZnlfY29kZV9jYWxsaW5nX2V4dGVybmFsX2Z1bmN0aW9uCkBAIC00MDAsNiArNDA3LDkg QEAgY29uc3Qgc3RydWN0IHRlc3RjYXNlIHRlc3RjYXNlc1tdID0gewogICB7ImJ1aWx0aW4tbWVt Y3B5IiwKICAgIGNyZWF0ZV9jb2RlX2J1aWx0aW5fbWVtY3B5LAogICAgdmVyaWZ5X2NvZGVfYnVp bHRpbl9tZW1jcHl9LAorICB7ImJpdGNhc3QiLAorICAgY3JlYXRlX2NvZGVfYml0Y2FzdCwKKyAg IHZlcmlmeV9jb2RlX2JpdGNhc3R9LAogICB7ImNhbGxpbmdfZXh0ZXJuYWxfZnVuY3Rpb24iLAog ICAgY3JlYXRlX2NvZGVfY2FsbGluZ19leHRlcm5hbF9mdW5jdGlvbiwKICAgIHZlcmlmeV9jb2Rl X2NhbGxpbmdfZXh0ZXJuYWxfZnVuY3Rpb259LApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9q aXQuZGcvdGVzdC1iaXRjYXN0LmMgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWJpdGNhc3Qu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmQ3MDYyMjA1MWEKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWJpdGNhc3QuYwpAQCAt MCwwICsxLDYwIEBACisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorCisjaW5jbHVkZSAi aGFybmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2 b2lkICp1c2VyX2RhdGEpCit7CisgIC8qIExldCdzIHRyeSB0byBpbmplY3QgdGhlIGVxdWl2YWxl bnQgb2Y6CitpbnQKK215X2JpdGNhc3QgKGRvdWJsZSB4KQoreworICAgcmV0dXJuIGJpdGNhc3Qo eCwgaW50KTsKK30KKyAgICovCisgIGdjY19qaXRfdHlwZSAqaW50X3R5cGUgPQorICAgIGdjY19q aXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJVF9UWVBFX0lOVCk7CisgIGdjY19qaXRf dHlwZSAqZG91YmxlX3R5cGUgPQorICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwg R0NDX0pJVF9UWVBFX0ZMT0FUKTsKKworICBnY2Nfaml0X3BhcmFtICp4ID0KKyAgICBnY2Nfaml0 X2NvbnRleHRfbmV3X3BhcmFtICgKKyAgICAgIGN0eHQsCisgICAgICBOVUxMLAorICAgICAgZG91 YmxlX3R5cGUsICJ4Iik7CisgIGdjY19qaXRfcGFyYW0gKnBhcmFtc1sxXSA9IHt4fTsKKyAgZ2Nj X2ppdF9mdW5jdGlvbiAqZnVuYyA9CisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAo Y3R4dCwKKwkJCQkgIE5VTEwsCisJCQkJICBHQ0NfSklUX0ZVTkNUSU9OX0VYUE9SVEVELAorCQkJ CSAgaW50X3R5cGUsCisJCQkJICAibXlfYml0Y2FzdCIsCisJCQkJICAxLCBwYXJhbXMsIDApOwor CisgIGdjY19qaXRfYmxvY2sgKmluaXRpYWwgPQorICAgIGdjY19qaXRfZnVuY3Rpb25fbmV3X2Js b2NrIChmdW5jLCAiaW5pdGlhbCIpOworCisgIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJu KGluaXRpYWwsIE5VTEwsCisgICAgZ2NjX2ppdF9jb250ZXh0X25ld19iaXRjYXN0KGN0eHQsCisg ICAgICAgIE5VTEwsCisgICAgICAgIGdjY19qaXRfcGFyYW1fYXNfcnZhbHVlKHgpLAorICAgICAg ICBpbnRfdHlwZQorICAgICkpOworfQorCit2b2lkCit2ZXJpZnlfY29kZSAoZ2NjX2ppdF9jb250 ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0KQoreworICB0eXBlZGVmIGludCAoKm15 X2JpdGNhc3RfZm5fdHlwZSkgKGRvdWJsZSk7CisgIENIRUNLX05PTl9OVUxMIChyZXN1bHQpOwor ICBteV9iaXRjYXN0X2ZuX3R5cGUgbXlfYml0Y2FzdCA9CisgICAgKG15X2JpdGNhc3RfZm5fdHlw ZSlnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAibXlfYml0Y2FzdCIpOworICBDSEVD S19OT05fTlVMTCAobXlfYml0Y2FzdCk7CisgIGludCB2YWwgPSBteV9iaXRjYXN0ICgtNS4xMjk4 NzE0KTsKKyAgbm90ZSAoIm15X2JpdGNhc3QgcmV0dXJuZWQ6ICVkIiwgdmFsKTsKKyAgQ0hFQ0tf VkFMVUUgKHZhbCwgMzU1NjkyMDEpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuYyBiL2djYy90 cmVlLmMKaW5kZXggZDk4Yjc3ZGI1MGIuLmU0YmY0ZTg0Njc1IDEwMDY0NAotLS0gYS9nY2MvdHJl ZS5jCisrKyBiL2djYy90cmVlLmMKQEAgLTY5NjMsNiArNjk2MywxNCBAQCBidWlsZF9yZWZlcmVu Y2VfdHlwZSAodHJlZSB0b190eXBlKQogICAoSE9TVF9CSVRTX1BFUl9XSURFX0lOVCA+IDY0ID8g SE9TVF9CSVRTX1BFUl9XSURFX0lOVCA6IDY0KQogc3RhdGljIEdUWSgoKSkgdHJlZSBub25zdGFu ZGFyZF9pbnRlZ2VyX3R5cGVfY2FjaGVbMiAqIE1BWF9JTlRfQ0FDSEVEX1BSRUMgKyAyXTsKIAor dm9pZCBjbGVhcl9ub25zdGFuZGFyZF9pbnRlZ2VyX3R5cGVfY2FjaGUgKHZvaWQpCit7CisgIGZv ciAoc2l6ZV90IGkgPSAwIDsgaSA8IDIgKiBNQVhfSU5UX0NBQ0hFRF9QUkVDICsgMiA7IGkrKykK KyAgeworICAgIG5vbnN0YW5kYXJkX2ludGVnZXJfdHlwZV9jYWNoZVtpXSA9IE5VTEw7CisgIH0K K30KKwogLyogQnVpbGRzIGEgc2lnbmVkIG9yIHVuc2lnbmVkIGludGVnZXIgdHlwZSBvZiBwcmVj aXNpb24gUFJFQ0lTSU9OLgogICAgVXNlZCBmb3IgQyBiaXRmaWVsZHMgd2hvc2UgcHJlY2lzaW9u IGRvZXMgbm90IG1hdGNoIHRoYXQgb2YKICAgIGJ1aWx0LWluIHRhcmdldCB0eXBlcy4gICovCmRp ZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3RyZWUuaAppbmRleCAzMTgwMTljNGRjNS4uNjQw YjQ5MjgwMmMgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLmgKKysrIGIvZ2NjL3RyZWUuaApAQCAtNTM4 NSw2ICs1Mzg1LDcgQEAgZXh0ZXJuIGJvb2wgcmVhbF9taW51c19vbmVwIChjb25zdF90cmVlKTsK IGV4dGVybiB2b2lkIGluaXRfdHRyZWUgKHZvaWQpOwogZXh0ZXJuIHZvaWQgYnVpbGRfY29tbW9u X3RyZWVfbm9kZXMgKGJvb2wpOwogZXh0ZXJuIHZvaWQgYnVpbGRfY29tbW9uX2J1aWx0aW5fbm9k ZXMgKHZvaWQpOworZXh0ZXJuIHZvaWQgY2xlYXJfbm9uc3RhbmRhcmRfaW50ZWdlcl90eXBlX2Nh Y2hlICh2b2lkKTsKIGV4dGVybiB0cmVlIGJ1aWxkX25vbnN0YW5kYXJkX2ludGVnZXJfdHlwZSAo dW5zaWduZWQgSE9TVF9XSURFX0lOVCwgaW50KTsKIGV4dGVybiB0cmVlIGJ1aWxkX25vbnN0YW5k YXJkX2Jvb2xlYW5fdHlwZSAodW5zaWduZWQgSE9TVF9XSURFX0lOVCk7CiBleHRlcm4gdHJlZSBi dWlsZF9yYW5nZV90eXBlICh0cmVlLCB0cmVlLCB0cmVlKTsKLS0gCjIuMjYuMi43LmcxOWRiOWNm YjY4LmRpcnR5Cgo= --=-Yn1NNqACPA9sMJdfpgRJ--