From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12815 invoked by alias); 9 Feb 2018 12:51:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 12792 invoked by uid 89); 9 Feb 2018 12:51:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.7 required=5.0 tests=AWL,BAYES_00,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=H*c:HHH X-HELO: mga05.intel.com Received: from mga05.intel.com (HELO mga05.intel.com) (192.55.52.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 09 Feb 2018 12:51:02 +0000 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Feb 2018 04:51:00 -0800 X-ExtLoop1: 1 Received: from irsmsx154.ger.corp.intel.com ([163.33.192.96]) by fmsmga007.fm.intel.com with ESMTP; 09 Feb 2018 04:50:59 -0800 Received: from irsmsx102.ger.corp.intel.com ([169.254.2.95]) by IRSMSX154.ger.corp.intel.com ([169.254.12.108]) with mapi id 14.03.0319.002; Fri, 9 Feb 2018 12:50:57 +0000 From: "Tsimbalist, Igor V" To: "gcc-patches@gcc.gnu.org" CC: Uros Bizjak , Sandra Loosemore , "Tsimbalist, Igor V" Subject: PR84239, Reimplement CET intrinsics for rdssp/incssp insn Date: Fri, 09 Feb 2018 12:51:00 -0000 Message-ID: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDY3YTcwOWItNGMyNi00ZTA4LWE5MDgtYjRlMWZmMjg1MWZhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiIyY3crYjRKVEpDK0VMbGVxK1hSY2lJcXd5cmhoRHFjNE5VZUpYb3RVc3hkdzVlVEpIOCt0NGVFNVwvVENqMlhPdiJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action Content-Type: multipart/mixed; boundary="_002_D511F25789BA7F4EBA64C8A63891A00291FB27C0IRSMSX102gercor_" MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2018-02/txt/msg00511.txt.bz2 --_002_D511F25789BA7F4EBA64C8A63891A00291FB27C0IRSMSX102gercor_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 384 Introduce a couple of new CET intrinsics for reading and updating a shadow = stack pointer (_get_ssp and _inc_ssp), which are more user friendly. They replace= the existing _rdssp[d|q] and _incssp[d|q] instrinsics. The _get_ssp intrinsic has more d= eterministic semantic: it returns a value of the shadow stack pointer if HW is CET capab= le and 0 otherwise. Ok for trunk? Igor --_002_D511F25789BA7F4EBA64C8A63891A00291FB27C0IRSMSX102gercor_ Content-Type: application/octet-stream; name="0001-Reimplement-CET-intrinsics-for-rdssp-incssp-insn.patch" Content-Description: 0001-Reimplement-CET-intrinsics-for-rdssp-incssp-insn.patch Content-Disposition: attachment; filename="0001-Reimplement-CET-intrinsics-for-rdssp-incssp-insn.patch"; size=14601; creation-date="Fri, 09 Feb 2018 11:29:58 GMT"; modification-date="Fri, 09 Feb 2018 11:25:24 GMT" Content-Transfer-Encoding: base64 Content-length: 19793 RnJvbSBiMjYyOGEwOGNhN2QwYTc3ZjYzMWZmMWQ5M2Q2MWVlNGNjMjQ4YWIx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIFRzaW1iYWxp c3QgPGlnb3Iudi50c2ltYmFsaXN0QGludGVsLmNvbT4KRGF0ZTogV2VkLCA3 IEZlYiAyMDE4IDE5OjMxOjMyICswMzAwClN1YmplY3Q6IFtQQVRDSF0gUmVp bXBsZW1lbnQgQ0VUIGludHJpbnNpY3MgZm9yIHJkc3NwL2luY3NzcCBpbnNu CgoJUFIgdGFyZ2V0Lzg0MjM5Ci0tLQogZ2NjL0NoYW5nZUxvZyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysrCiBnY2MvY29u ZmlnL2kzODYvY2V0aW50cmluLmggICAgICAgICAgICAgICAgICB8IDMxICsr KysrKy0tLS0tLS0tCiBnY2MvY29uZmlnL2kzODYvaTM4Ni1idWlsdGluLXR5 cGVzLmRlZiAgICAgICB8ICAxICsKIGdjYy9jb25maWcvaTM4Ni9pMzg2LWJ1 aWx0aW4uZGVmICAgICAgICAgICAgIHwgIDQgKy0KIGdjYy9jb25maWcvaTM4 Ni9pMzg2LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIGdjYy9j b25maWcvaTM4Ni9pMzg2Lm1kICAgICAgICAgICAgICAgICAgICAgIHwgMTYg KysrKy0tLQogZ2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBn Y2MvdGVzdHN1aXRlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICB8 ICA5ICsrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NldC1p bnRyaW4tMy5jIHwgMTAgKystLS0KIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2NldC1pbnRyaW4tNC5jIHwgMjUgKy0tLS0tLS0tLS0KIGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NldC1yZHNzcC0xLmMgIHwgIDgg KystLQogbGliZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNiArKysKIGxpYmdjYy9jb25maWcvaTM4Ni9zaGFkb3ctc3Rh Y2stdW53aW5kLmggICAgIHwgMTcgKysrLS0tLS0KIDEzIGZpbGVzIGNoYW5n ZWQsIDEyNiBpbnNlcnRpb25zKCspLCA4MiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9nY2MvQ2hhbmdlTG9nIGIvZ2NjL0NoYW5nZUxvZwppbmRleCA1 MWM0NWMwLi45MzdhNDc0IDEwMDY0NAotLS0gYS9nY2MvQ2hhbmdlTG9nCisr KyBiL2djYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMi0w OCAgSWdvciBUc2ltYmFsaXN0ICA8aWdvci52LnRzaW1iYWxpc3RAaW50ZWwu Y29tPgorCisJUFIgdGFyZ2V0Lzg0MjM5CisJKiBjb25maWcvaTM4Ni9jZXRp bnRyaW4uaDogUmVtb3ZlIF9yZHNzcFtkfHFdIGFuZAorCWFkZCBfZ2V0X3Nz cCBpbnRyaW5zaWNzLiBSZW1vdmUgYXJndW1lbnQgZnJvbQorCV9fYnVpbHRp bl9pYTMyX3Jkc3NwW2R8cV0uCisJKiBjb25maWcvaTM4Ni9pMzg2LWJ1aWx0 aW4tdHlwZXMuZGVmOiBBZGQgVUlOVF9GVFlQRV9WT0lELgorCSogY29uZmln L2kzODYvaTM4Ni1idWlsdGluLmRlZjogUmVtb3ZlIGFyZ3VtZW50IGZyb20K KwlfX2J1aWx0aW5faWEzMl9yZHNzcFtkfHFdLgorCSogY29uZmlnL2kzODYv aTM4Ni5jOiBVc2UgVUlOVF9GVFlQRV9WT0lELiBVc2UKKwlpeDg2X2V4cGFu ZF9zcGVjaWFsX2FyZ3NfYnVpbHRpbiBmb3IgX3Jkc3NwW2R8cV0uCisJKiBj b25maWcvaTM4Ni9pMzg2Lm1kOiBSZW1vdmUgYXJndW1lbnQgZnJvbSByZHNz cFtzaXxkaV0gaW5zbi4KKwlDbGVhciByZWdpc3RlciBiZWZvcmUgdXNhZ2Uu CisJKiBkb2MvZXh0ZW5kLnRleGk6IFJlbW92ZSBhcmd1bWVudCBmcm9tIF9f YnVpbHRpbl9pYTMyX3Jkc3NwW2R8cV0uCisJQWRkIGRvY3VtZW50YXRpb24g Zm9yIG5ldyBfZ2V0X3NzcCBhbmQgX2luY19zc3AgaW50cmluc2ljcy4KKwog MjAxOC0wMi0wNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgog CiAJUFIgdGFyZ2V0Lzg0MjQ4CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kz ODYvY2V0aW50cmluLmggYi9nY2MvY29uZmlnL2kzODYvY2V0aW50cmluLmgK aW5kZXggN2E0YjRkOC4uZTlhYmNmMyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9pMzg2L2NldGludHJpbi5oCisrKyBiL2djYy9jb25maWcvaTM4Ni9jZXRp bnRyaW4uaApAQCAtMzQsMzcgKzM0LDMyIEBACiAjZGVmaW5lIF9fRElTQUJM RV9TSFNUS19fCiAjZW5kaWYgLyogX19TSFNUS19fICovCiAKLWV4dGVybiBf X2lubGluZSB1bnNpZ25lZCBpbnQKLV9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot X3Jkc3NwZCAodW5zaWduZWQgaW50IF9fQikKLXsKLSAgcmV0dXJuIF9fYnVp bHRpbl9pYTMyX3Jkc3NwZCAoX19CKTsKLX0KLQogI2lmZGVmIF9feDg2XzY0 X18KIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcKIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotX3Jkc3NwcSAodW5zaWduZWQgbG9uZyBsb25n IF9fQikKK19nZXRfc3NwICh2b2lkKQogewotICByZXR1cm4gX19idWlsdGlu X2lhMzJfcmRzc3BxIChfX0IpOworICByZXR1cm4gX19idWlsdGluX2lhMzJf cmRzc3BxICgpOwogfQotI2VuZGlmCi0KLWV4dGVybiBfX2lubGluZSB2b2lk CisjZWxzZQorZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGludAogX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi1faW5jc3NwZCAodW5zaWduZWQgaW50IF9fQikK K19nZXRfc3NwICh2b2lkKQogewotICBfX2J1aWx0aW5faWEzMl9pbmNzc3Bk IChfX0IpOworICByZXR1cm4gX19idWlsdGluX2lhMzJfcmRzc3BkICgpOwog fQorI2VuZGlmCiAKLSNpZmRlZiBfX3g4Nl82NF9fCiBleHRlcm4gX19pbmxp bmUgdm9pZAogX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi1faW5jc3NwcSAodW5z aWduZWQgbG9uZyBsb25nIF9fQikKK19pbmNfc3NwICh1bnNpZ25lZCBpbnQg X19CKQogewotICBfX2J1aWx0aW5faWEzMl9pbmNzc3BxIChfX0IpOwotfQor I2lmZGVmIF9feDg2XzY0X18KKyAgX19idWlsdGluX2lhMzJfaW5jc3NwcSAo KHVuc2lnbmVkIGxvbmcgbG9uZykgX19CKTsKKyNlbHNlCisgIF9fYnVpbHRp bl9pYTMyX2luY3NzcGQgKF9fQik7CiAjZW5kaWYKK30KIAogZXh0ZXJuIF9f aW5saW5lIHZvaWQKIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQpkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtYnVpbHRpbi10eXBlcy5kZWYgYi9n Y2MvY29uZmlnL2kzODYvaTM4Ni1idWlsdGluLXR5cGVzLmRlZgppbmRleCBi YTMzNTQ5Li4wODM2MGQyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYv aTM4Ni1idWlsdGluLXR5cGVzLmRlZgorKysgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni1idWlsdGluLXR5cGVzLmRlZgpAQCAtMTkyLDYgKzE5Miw3IEBAIERF Rl9QT0lOVEVSX1RZUEUgKFBDVjY0UUksIFY2NFFJLCBDT05TVCkKIERFRl9G VU5DVElPTl9UWVBFIChGTE9BVDEyOCkKIERFRl9GVU5DVElPTl9UWVBFIChV SU5UNjQpCiBERUZfRlVOQ1RJT05fVFlQRSAoVU5TSUdORUQpCitERUZfRlVO Q1RJT05fVFlQRSAoVUlOVCkKIERFRl9GVU5DVElPTl9UWVBFIChVU0hPUlQp CiBERUZfRlVOQ1RJT05fVFlQRSAoSU5UKQogREVGX0ZVTkNUSU9OX1RZUEUg KFZPSUQpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1idWls dGluLmRlZiBiL2djYy9jb25maWcvaTM4Ni9pMzg2LWJ1aWx0aW4uZGVmCmlu ZGV4IDJjYWFjODguLmE1MTAxOTYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv aTM4Ni9pMzg2LWJ1aWx0aW4uZGVmCisrKyBiL2djYy9jb25maWcvaTM4Ni9p Mzg2LWJ1aWx0aW4uZGVmCkBAIC0zMDQzLDcgKzMwNDMsNyBAQCBCREVTQyAo T1BUSU9OX01BU0tfSVNBX1NIU1RLLCBDT0RFX0ZPUl9jbHJzc2JzeSwgIl9f YnVpbHRpbl9pYTMyX2NscnNzYnN5IiwgSVg4NgogQkRFU0NfRU5EIChDRVQs IENFVF9OT1JNQUwpCiAKIEJERVNDX0ZJUlNUIChjZXRfcmRzc3AsIENFVF9O T1JNQUwsCi0gICAgICAgT1BUSU9OX01BU0tfSVNBX1NIU1RLLCBDT0RFX0ZP Ul9yZHNzcHNpLCAiX19idWlsdGluX2lhMzJfcmRzc3BkIiwgSVg4Nl9CVUlM VElOX1JEU1NQRCwgVU5LTk9XTiwgKGludCkgVUlOVF9GVFlQRV9VSU5UKQot QkRFU0MgKE9QVElPTl9NQVNLX0lTQV9TSFNUSyB8IE9QVElPTl9NQVNLX0lT QV82NEJJVCwgQ09ERV9GT1JfcmRzc3BkaSwgIl9fYnVpbHRpbl9pYTMyX3Jk c3NwcSIsIElYODZfQlVJTFRJTl9SRFNTUFEsIFVOS05PV04sIChpbnQpIFVJ TlQ2NF9GVFlQRV9VSU5UNjQpCisgICAgICAgT1BUSU9OX01BU0tfSVNBX1NI U1RLLCBDT0RFX0ZPUl9yZHNzcHNpLCAiX19idWlsdGluX2lhMzJfcmRzc3Bk IiwgSVg4Nl9CVUlMVElOX1JEU1NQRCwgVU5LTk9XTiwgKGludCkgVUlOVF9G VFlQRV9WT0lEKQorQkRFU0MgKE9QVElPTl9NQVNLX0lTQV9TSFNUSyB8IE9Q VElPTl9NQVNLX0lTQV82NEJJVCwgQ09ERV9GT1JfcmRzc3BkaSwgIl9fYnVp bHRpbl9pYTMyX3Jkc3NwcSIsIElYODZfQlVJTFRJTl9SRFNTUFEsIFVOS05P V04sIChpbnQpIFVJTlQ2NF9GVFlQRV9WT0lEKQogCiBCREVTQ19FTkQgKENF VF9OT1JNQUwsIE1BWCkKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9p Mzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCmluZGV4IGZjM2Q2ZjAu LjUzZjljYWUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMK KysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwpAQCAtMzU3MDEsNiArMzU3 MDEsNyBAQCBpeDg2X2V4cGFuZF9zcGVjaWFsX2FyZ3NfYnVpbHRpbiAoY29u c3Qgc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24gKmQsCiAgICAgY2FzZSBJ TlRfRlRZUEVfVk9JRDoKICAgICBjYXNlIFVTSE9SVF9GVFlQRV9WT0lEOgog ICAgIGNhc2UgVUlOVDY0X0ZUWVBFX1ZPSUQ6CisgICAgY2FzZSBVSU5UX0ZU WVBFX1ZPSUQ6CiAgICAgY2FzZSBVTlNJR05FRF9GVFlQRV9WT0lEOgogICAg ICAgbmFyZ3MgPSAwOwogICAgICAga2xhc3MgPSBsb2FkOwpAQCAtMzg0OTAs NyArMzg0OTEsNyBAQCBzNGZtYV9leHBhbmQ6CiAgICAgICAmJiBmY29kZSA8 PSBJWDg2X0JVSUxUSU5fX0JERVNDX0NFVF9OT1JNQUxfTEFTVCkKICAgICB7 CiAgICAgICBpID0gZmNvZGUgLSBJWDg2X0JVSUxUSU5fX0JERVNDX0NFVF9O T1JNQUxfRklSU1Q7Ci0gICAgICByZXR1cm4gaXg4Nl9leHBhbmRfYXJnc19i dWlsdGluIChiZGVzY19jZXRfcmRzc3AgKyBpLCBleHAsCisgICAgICByZXR1 cm4gaXg4Nl9leHBhbmRfc3BlY2lhbF9hcmdzX2J1aWx0aW4gKGJkZXNjX2Nl dF9yZHNzcCArIGksIGV4cCwKIAkJCQkgICAgICAgdGFyZ2V0KTsKICAgICB9 CiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2Nj L2NvbmZpZy9pMzg2L2kzODYubWQKaW5kZXggYTQ4MzJiZi4uMzk5ODA1MyAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKKysrIGIvZ2Nj L2NvbmZpZy9pMzg2L2kzODYubWQKQEAgLTE4MzkxLDggKzE4MzkxLDggQEAK ICAgICAgIHJlZ19zc3AgPSBnZW5fcmVnX3J0eCAod29yZF9tb2RlKTsKICAg ICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKHJlZ19zc3AsIGNvbnN0MF9y dHgpKTsKICAgICAgIGVtaXRfaW5zbiAoKHdvcmRfbW9kZSA9PSBTSW1vZGUp Ci0JCSA/IGdlbl9yZHNzcHNpIChyZWdfc3NwLCByZWdfc3NwKQotCQkgOiBn ZW5fcmRzc3BkaSAocmVnX3NzcCwgcmVnX3NzcCkpOworCQkgPyBnZW5fcmRz c3BzaSAocmVnX3NzcCkKKwkJIDogZ2VuX3Jkc3NwZGkgKHJlZ19zc3ApKTsK ICAgICAgIGVtaXRfbW92ZV9pbnNuIChtZW0sIHJlZ19zc3ApOwogICAgIH0K ICAgRE9ORTsKQEAgLTE4NDM3LDggKzE4NDM3LDggQEAKICAgICAgIHJlZ19z c3AgPSBnZW5fcmVnX3J0eCAod29yZF9tb2RlKTsKICAgICAgIGVtaXRfaW5z biAoZ2VuX3J0eF9TRVQgKHJlZ19zc3AsIGNvbnN0MF9ydHgpKTsKICAgICAg IGVtaXRfaW5zbiAoKHdvcmRfbW9kZSA9PSBTSW1vZGUpCi0JCSA/IGdlbl9y ZHNzcHNpIChyZWdfc3NwLCByZWdfc3NwKQotCQkgOiBnZW5fcmRzc3BkaSAo cmVnX3NzcCwgcmVnX3NzcCkpOworCQkgPyBnZW5fcmRzc3BzaSAocmVnX3Nz cCkKKwkJIDogZ2VuX3Jkc3NwZGkgKHJlZ19zc3ApKTsKICAgICAgIG1lbV9i dWYgPSBnZW5fcnR4X01FTSAod29yZF9tb2RlLAogCQkJICAgICBwbHVzX2Nv bnN0YW50IChQbW9kZSwgb3BlcmFuZHNbMF0sCiAJCQkJCSAgICAzICogR0VU X01PREVfU0laRSAocHRyX21vZGUpKSk7CkBAIC0yMDE2NywxMiArMjAxNjcs MTAgQEAKIDs7IENFVCBpbnN0cnVjdGlvbnMKIChkZWZpbmVfaW5zbiAicmRz c3A8bW9kZT4iCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNXSTQ4eCAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotCSh1bnNwZWNfdm9sYXRpbGU6U1dJ NDh4Ci0JICBbKG1hdGNoX29wZXJhbmQ6U1dJNDh4IDEgInJlZ2lzdGVyX29w ZXJhbmQiICIwIildCi0JICBVTlNQRUNWX05PUF9SRFNTUCkpXQorCSh1bnNw ZWNfdm9sYXRpbGU6U1dJNDh4IFsoY29uc3RfaW50IDApXSBVTlNQRUNWX05P UF9SRFNTUCkpXQogICAiVEFSR0VUX1NIU1RLIgotICAicmRzc3A8bXNrbW9k ZXN1ZmZpeD5cdCUwIgotICBbKHNldF9hdHRyICJsZW5ndGgiICI0IikKKyAg InhvcntsfVx0JWswLCAlazBcblx0cmRzc3A8bXNrbW9kZXN1ZmZpeD5cdCUw IgorICBbKHNldF9hdHRyICJsZW5ndGgiICI2IikKICAgIChzZXRfYXR0ciAi dHlwZSIgIm90aGVyIildKQogCiAoZGVmaW5lX2luc24gImluY3NzcDxtb2Rl PiIKZGlmZiAtLWdpdCBhL2djYy9kb2MvZXh0ZW5kLnRleGkgYi9nY2MvZG9j L2V4dGVuZC50ZXhpCmluZGV4IGNiOWRmOTcuLjlmMjVkZDkgMTAwNjQ0Ci0t LSBhL2djYy9kb2MvZXh0ZW5kLnRleGkKKysrIGIvZ2NjL2RvYy9leHRlbmQu dGV4aQpAQCAtMTI0NjEsNiArMTI0NjEsNyBAQCBpbnN0cnVjdGlvbnMsIGJ1 dCBhbGxvdyB0aGUgY29tcGlsZXIgdG8gc2NoZWR1bGUgdGhvc2UgY2FsbHMu CiAqIFRJTEVQcm8gQnVpbHQtaW4gRnVuY3Rpb25zOjoKICogeDg2IEJ1aWx0 LWluIEZ1bmN0aW9uczo6CiAqIHg4NiB0cmFuc2FjdGlvbmFsIG1lbW9yeSBp bnRyaW5zaWNzOjoKKyogeDg2IGNvbnRyb2wtZmxvdyBwcm90ZWN0aW9uIGlu dHJpbnNpY3M6OgogQGVuZCBtZW51CiAKIEBub2RlIEFBcmNoNjQgQnVpbHQt aW4gRnVuY3Rpb25zCkBAIC0yMTc3MiwxMyArMjE3NzMsMTcgQEAgdm9pZCBf X2J1aWx0aW5faWEzMl93cnBrcnUgKHVuc2lnbmVkIGludCkKIHVuc2lnbmVk IGludCBfX2J1aWx0aW5faWEzMl9yZHBrcnUgKCkKIEBlbmQgc21hbGxleGFt cGxlCiAKLVRoZSBmb2xsb3dpbmcgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSBh dmFpbGFibGUgd2hlbiBAb3B0aW9uey1tY2V0fSBpcyB1c2VkLgotVGhleSBh cmUgdXNlZCB0byBzdXBwb3J0IEludGVsIENvbnRyb2wtZmxvdyBFbmZvcmNt ZW50IFRlY2hub2xvZ3kgKENFVCkuCi1FYWNoIGJ1aWx0LWluIGZ1bmN0aW9u IGdlbmVyYXRlcyB0aGUgIG1hY2hpbmUgaW5zdHJ1Y3Rpb24gdGhhdCBpcyBw YXJ0IG9mIHRoZQotZnVuY3Rpb24ncyBuYW1lLgorVGhlIGZvbGxvd2luZyBi dWlsdC1pbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aGVuIEBvcHRpb257 LW1jZXR9IG9yCitAb3B0aW9uey1tc2hzdGt9IG9wdGlvbiBpcyB1c2VkLiAg VGhleSBzdXBwb3J0IHNoYWRvdyBzdGFjaworbWFjaGluZSBpbnN0cnVjdGlv bnMgZnJvbSBJbnRlbCBDb250cm9sLWZsb3cgRW5mb3JjbWVudCBUZWNobm9s b2d5IChDRVQpLgorRWFjaCBidWlsdC1pbiBmdW5jdGlvbiBnZW5lcmF0ZXMg dGhlICBtYWNoaW5lIGluc3RydWN0aW9uIHRoYXQgaXMgcGFydAorb2YgdGhl IGZ1bmN0aW9uJ3MgbmFtZS4gIFRoZXNlIGFyZSB0aGUgaW50ZXJuYWwgbG93 IGxldmVsIGZ1bmN0aW9ucy4KK05vcm1hbGx5IHRoZSBmdW5jdGlvbnMgaW4g QHJlZnt4ODYgY29udHJvbC1mbG93IHByb3RlY3Rpb24gaW50cmluc2ljc30K K3Nob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKIEBzbWFsbGV4YW1wbGUKLXVu c2lnbmVkIGludCBfX2J1aWx0aW5faWEzMl9yZHNzcGQgKHVuc2lnbmVkIGlu dCkKLXVuc2lnbmVkIGxvbmcgbG9uZyBfX2J1aWx0aW5faWEzMl9yZHNzcHEg KHVuc2lnbmVkIGxvbmcgbG9uZykKK3Vuc2lnbmVkIGludCBfX2J1aWx0aW5f aWEzMl9yZHNzcGQgKHZvaWQpCit1bnNpZ25lZCBsb25nIGxvbmcgX19idWls dGluX2lhMzJfcmRzc3BxICh2b2lkKQogdm9pZCBfX2J1aWx0aW5faWEzMl9p bmNzc3BkICh1bnNpZ25lZCBpbnQpCiB2b2lkIF9fYnVpbHRpbl9pYTMyX2lu Y3NzcHEgKHVuc2lnbmVkIGxvbmcgbG9uZykKIHZvaWQgX19idWlsdGluX2lh MzJfc2F2ZXByZXZzc3Aodm9pZCk7CkBAIC0yMTg4NSw2ICsyMTg5MCw1MSBA QCBlbHNlCiBOb3RlIHRoYXQsIGluIG1vc3QgY2FzZXMsIHRoZSB0cmFuc2Fj dGlvbmFsIGFuZCBub24tdHJhbnNhY3Rpb25hbCBjb2RlCiBtdXN0IHN5bmNo cm9uaXplIHRvZ2V0aGVyIHRvIGVuc3VyZSBjb25zaXN0ZW5jeS4KIAorQG5v ZGUgeDg2IGNvbnRyb2wtZmxvdyBwcm90ZWN0aW9uIGludHJpbnNpY3MKK0Bz dWJzZWN0aW9uIHg4NiBDb250cm9sLUZsb3cgUHJvdGVjdGlvbiBJbnRyaW5z aWNzCisKK0BkZWZ0eXBlZm4ge0NFVCBGdW5jdGlvbn0ge3JldF90eXBlfSBf Z2V0X3NzcCAodm9pZCkKK1RoZSBAY29kZXtyZXRfdHlwZX0gaXMgQGNvZGV7 dW5zaWduZWQgbG9uZyBsb25nfSBmb3IgeDg2LTY0IHBsYXRmb3JtCithbmQg QGNvZGV7dW5zaWduZWQgaW50fSBmb3IgeDg2IHBsdGZvcm0uCitHZXQgdGhl IGN1cnJlbnQgdmFsdWUgb2Ygc2hhZG93IHN0YWNrIHBvaW50ZXIgaWYgc2hh ZG93IHN0YWNrIHN1cHBvcnQKK2Zyb20gSW50ZWwgQ0VUIGlzIGVuYWJsZWQg aW4gdGhlIEhXIG9yIEBjb2RlezB9IG90aGVyd2lzZS4KK0BlbmQgZGVmdHlw ZWZuCisKK0BkZWZ0eXBlZm4ge0NFVCBGdW5jdGlvbn0gdm9pZCBfaW5jX3Nz cCAodW5zaWduZWQgaW50KQorSW5jcmVtZW50IHRoZSBjdXJyZW50IHNoYWRv dyBzdGFjayBwb2ludGVyIGJ5IHRoZSBzaXplIHNwZWNpZmllZCBieSB0aGUK K2Z1bmN0aW9uIGFyZ3VtZW50LiAgRm9yIHNlY3VyaXR5IHJlYXNvbiBvbmx5 IHVuc2lnbmVkIGJ5dGUgdmFsdWUgaXMgdXNlZAorZnJvbSB0aGUgYXJndW1l bnQuICBUaGVyZWZvcmUgZm9yIHRoZSBzaXplIGdyZWF0ZXIgdGhhbiBAY29k ZXsyNTV9IHRoZQorZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBzZXZlcmFs IHRpbWVzLgorQGVuZCBkZWZ0eXBlZm4KKworVGhlIHNoYWRvdyBzdGFjayB1 bndpbmQgY29kZSBsb29rcyBsaWtlOgorCitAc21hbGxleGFtcGxlCisjaW5j bHVkZSA8aW1taW50cmluLmg+CisKKy8qIFVud2luZCB0aGUgc2hhZG93IHN0 YWNrIGZvciBFSC4gICovCisjZGVmaW5lIF9VbndpbmRfRnJhbWVzX0V4dHJh KHgpCQlcCisgIGRvCQkJCQlcCisgICAgQHsJCQkJCVwKKyAgICAgIF9Vbndp bmRfV29yZCBzc3AgPSBfZ2V0X3NzcCAoKTsJXAorICAgICAgaWYgKHNzcCAh PSAwKQkJCVwKKwlAewkJCQlcCisJICBfVW53aW5kX1dvcmQgdG1wID0gKHgp OwlcCisJICB3aGlsZSAodG1wID4gMjU1KQkJXAorCSAgICBAewkJCQlcCisJ ICAgICAgX2luY19zc3AgKHRtcCk7CQlcCisJICAgICAgdG1wIC09IDI1NTsJ CVwKKwkgICAgQH0JCQkJXAorCSAgX2luY19zc3AgKHRtcCk7CQlcCisJQH0J CQkJXAorICAgIEB9CQkJCQlcCisgICAgd2hpbGUgKDApCitAZW5kIHNtYWxs ZXhhbXBsZQorCitAbm9pbmRlbnQKK1RoaXMgY29kZSBydW5zIHVuY29uZGl0 aW9uYWxseSBvbiBhbGwgeDg2LTY0IHByb2Nlc3NvcnMgYW5kIGFsbCB4ODYK K3Byb2Nlc3NvcnMgdGhhdCBzdXBwb3J0IG11bHRpLWJ5dGUgTk9QIGluc3Ry dWN0aW9ucy4KKwogQG5vZGUgVGFyZ2V0IEZvcm1hdCBDaGVja3MKIEBzZWN0 aW9uIEZvcm1hdCBDaGVja3MgU3BlY2lmaWMgdG8gUGFydGljdWxhciBUYXJn ZXQgTWFjaGluZXMKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cgYi9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZwppbmRleCBjOTBkYzg4 Li4zZmEyNmNjIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL0NoYW5nZUxv ZworKysgYi9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy IEBACisyMDE4LTAyLTA4ICBJZ29yIFRzaW1iYWxpc3QgIDxpZ29yLnYudHNp bWJhbGlzdEBpbnRlbC5jb20+CisKKwlQUiB0YXJnZXQvODQyMzkKKwkqIHRl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvY2V0LWludHJpbi0zLmM6IFVzZSBu ZXcgX2dldF9zc3AgYW5kCisJX2luY19zc3AgaW50cmluc2ljcy4KKwkqIHRl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvY2V0LWludHJpbi00LmM6IExpa2V3 aXNlLgorCSogdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jZXQtcmRzc3At MS5jOiBSZW1vdmUgYXJndW1lbnQgZnJvbQorCV9fYnVpbHRpbl9pYTMyX3Jk c3NwW2R8cV0uCisKIDIwMTgtMDItMDcgIFRvbSBkZSBWcmllcyAgPHRvbUBj b2Rlc291cmNlcnkuY29tPgogCiAJKiBnY2MuZGcvcHI4Mzg0NC5jOiBSZXF1 aXJlIGVmZmVjdGl2ZSB0YXJnZXQgYWxsb2NhLgpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvY2V0LWludHJpbi0zLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jZXQtaW50cmluLTMuYwpp bmRleCBiY2Q3MjAzLi5iOThjMWU5IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9jZXQtaW50cmluLTMuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jZXQtaW50cmluLTMuYwpAQCAt MTAsMjQgKzEwLDIyIEBACiAKIHVuc2lnbmVkIGludCBmMSAoKQogewotICB1 bnNpZ25lZCBpbnQgeCA9IDA7Ci0gIHJldHVybiBfcmRzc3BkICh4KTsKKyAg cmV0dXJuIF9nZXRfc3NwICgpOwogfQogCiB2b2lkIGYzICh1bnNpZ25lZCBp bnQgX2EpCiB7Ci0gIF9pbmNzc3BkIChfYSk7CisgIF9pbmNfc3NwIChfYSk7 CiB9CiAKICNpZmRlZiBfX3g4Nl82NF9fCiB1bnNpZ25lZCBsb25nIGxvbmcg ZjIgKCkKIHsKLSAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwotICByZXR1 cm4gX3Jkc3NwcSAoeCk7CisgIHJldHVybiBfZ2V0X3NzcCAoKTsKIH0KIAog dm9pZCBmNCAodW5zaWduZWQgaW50IF9hKQogewotICBfaW5jc3NwcSAoX2Ep OworICBfaW5jX3NzcCAoX2EpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jZXQtaW50cmluLTQuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NldC1pbnRyaW4tNC5j CmluZGV4IDQzN2E0Y2QuLjg2OTU3YjIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NldC1pbnRyaW4tNC5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2NldC1pbnRyaW4tNC5jCkBA IC01LDI3ICs1LDQgQEAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiaW5jc3NwXFtkcV1cWyBcdF0rKCV8KVxbcmVdZGkiIHsgdGFyZ2V0IHsg ISBpYTMyIH0gfSB9IH0gKi8KIAogI2luY2x1ZGUgPGltbWludHJpbi5oPgot Ci11bnNpZ25lZCBpbnQgZjEgKCkKLXsKLSAgdW5zaWduZWQgaW50IHggPSAw OwotICByZXR1cm4gX3Jkc3NwZCAoeCk7Ci19Ci0KLXZvaWQgZjMgKHVuc2ln bmVkIGludCBfYSkKLXsKLSAgX2luY3NzcGQgKF9hKTsKLX0KLQotI2lmZGVm IF9feDg2XzY0X18KLXVuc2lnbmVkIGxvbmcgbG9uZyBmMiAoKQotewotICB1 bnNpZ25lZCBsb25nIGxvbmcgeCA9IDA7Ci0gIHJldHVybiBfcmRzc3BxICh4 KTsKLX0KLQotdm9pZCBmNCAodW5zaWduZWQgaW50IF9hKQotewotICBfaW5j c3NwcSAoX2EpOwotfQotI2VuZGlmCisjaW5jbHVkZSAiY2V0LWludHJpbi0z LmMiCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9jZXQtcmRzc3AtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvY2V0LXJkc3NwLTEuYwppbmRleCBmYjUwZmY0Li42Y2QyNGY2IDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9jZXQtcmRz c3AtMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Nl dC1yZHNzcC0xLmMKQEAgLTUsMTggKzUsMTggQEAgdm9pZCBfZXhpdChpbnQg c3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiAKICNp ZmRlZiBfX3g4Nl82NF9fCiAjIGRlZmluZSBpbmNzc3AoeCkgX19idWlsdGlu X2lhMzJfaW5jc3NwcSAoeCkKLSMgZGVmaW5lIHJkc3NwKHgpIF9fYnVpbHRp bl9pYTMyX3Jkc3NwcSAoeCkKKyMgZGVmaW5lIHJkc3NwKCkgX19idWlsdGlu X2lhMzJfcmRzc3BxICgpCiAjZWxzZQogIyBkZWZpbmUgaW5jc3NwKHgpIF9f YnVpbHRpbl9pYTMyX2luY3NzcGQgKHgpCi0jIGRlZmluZSByZHNzcCh4KSBf X2J1aWx0aW5faWEzMl9yZHNzcGQgKHgpCisjIGRlZmluZSByZHNzcCgpIF9f YnVpbHRpbl9pYTMyX3Jkc3NwZCAoKQogI2VuZGlmCiAKIHN0YXRpYyB2b2lk CiBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsIG5vY2xvbmUpKQogdGVzdCAo dW5zaWduZWQgbG9uZyBmcmFtZXMpCiB7Ci0gIHVuc2lnbmVkIGxvbmcgc3Nw ID0gMDsKLSAgc3NwID0gcmRzc3AgKHNzcCk7CisgIHVuc2lnbmVkIGxvbmcg c3NwOworICBzc3AgPSByZHNzcCAoKTsKICAgaWYgKHNzcCAhPSAwKQogICAg IHsKICAgICAgIHVuc2lnbmVkIGxvbmcgdG1wID0gZnJhbWVzOwpkaWZmIC0t Z2l0IGEvbGliZ2NjL0NoYW5nZUxvZyBiL2xpYmdjYy9DaGFuZ2VMb2cKaW5k ZXggMWViMTY2My4uNjkyNzczZCAxMDA2NDQKLS0tIGEvbGliZ2NjL0NoYW5n ZUxvZworKysgYi9saWJnY2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOSBAQAor MjAxOC0wMi0wOCAgSWdvciBUc2ltYmFsaXN0ICA8aWdvci52LnRzaW1iYWxp c3RAaW50ZWwuY29tPgorCisJUFIgdGFyZ2V0Lzg0MjM5CisJKiBjb25maWcv aTM4Ni9zaGFkb3ctc3RhY2stdW53aW5kLmhpIChfVW53aW5kX0ZyYW1lc19F eHRyYSk6CisJVXNlIG5ldyBfZ2V0X3NzcCBhbmQgX2luY19zc3AgaW50cmlu c2ljcy4KKwogMjAxOC0wMi0wMiAgSnVsaWEgS292YWwgIDxqdWxpYS5rb3Zh bEBpbnRlbC5jb20+CiAKIAkqIGNvbmZpZy9pMzg2L2NwdWluZm8uaCAocHJv Y2Vzc29yX3N1YnR5cGVzKTogQWRkIElOVEVMX0NPUkVJN19JQ0VMQUtFLgpk aWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3NoYWRvdy1zdGFjay11 bndpbmQuaCBiL2xpYmdjYy9jb25maWcvaTM4Ni9zaGFkb3ctc3RhY2stdW53 aW5kLmgKaW5kZXggZWY3NWQ5Ny4uNDE2ZTA2MSAxMDA2NDQKLS0tIGEvbGli Z2NjL2NvbmZpZy9pMzg2L3NoYWRvdy1zdGFjay11bndpbmQuaAorKysgYi9s aWJnY2MvY29uZmlnL2kzODYvc2hhZG93LXN0YWNrLXVud2luZC5oCkBAIC0y MiwzMCArMjIsMjMgQEAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJy YXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKIHNlZSB0 aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0 aXZlbHkuICBJZiBub3QsIHNlZQogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KIAotI2lmZGVmIF9feDg2XzY0X18KLSMgZGVmaW5lIGlu Y3NzcCh4KSBfX2J1aWx0aW5faWEzMl9pbmNzc3BxICgoeCkpCi0jIGRlZmlu ZSByZHNzcCh4KSBfX2J1aWx0aW5faWEzMl9yZHNzcHEgKHgpCi0jZWxzZQot IyBkZWZpbmUgaW5jc3NwKHgpIF9fYnVpbHRpbl9pYTMyX2luY3NzcGQgKCh4 KSkKLSMgZGVmaW5lIHJkc3NwKHgpIF9fYnVpbHRpbl9pYTMyX3Jkc3NwZCAo eCkKLSNlbmRpZgorI2luY2x1ZGUgPHg4NmludHJpbi5oPgogCiAvKiBVbndp bmQgdGhlIHNoYWRvdyBzdGFjayBmb3IgRUguICAqLwogI3VuZGVmIF9Vbndp bmRfRnJhbWVzX0V4dHJhCiAjZGVmaW5lIF9VbndpbmRfRnJhbWVzX0V4dHJh KHgpCQkJXAogICBkbwkJCQkJCVwKICAgICB7CQkJCQkJXAotICAgICAgdW5z aWduZWQgbG9uZyBzc3AgPSAwOwkJCVwKLSAgICAgIHNzcCA9IHJkc3NwIChz c3ApOwkJCVwKKyAgICAgIF9VbndpbmRfV29yZCBzc3AgPSBfZ2V0X3NzcCAo KTsJCVwKICAgICAgIGlmIChzc3AgIT0gMCkJCQkJXAogCXsJCQkJCVwKLQkg IHVuc2lnbmVkIGxvbmcgdG1wID0gKHgpOwkJXAorCSAgX1Vud2luZF9Xb3Jk IHRtcCA9ICh4KTsJCVwKIAkgIHdoaWxlICh0bXAgPiAyNTUpCQkJXAogCSAg ICB7CQkJCQlcCi0JICAgICAgaW5jc3NwICh0bXApOwkJCVwKKwkgICAgICBf aW5jX3NzcCAodG1wKTsJCQlcCiAJICAgICAgdG1wIC09IDI1NTsJCQlcCiAJ ICAgIH0JCQkJCVwKLQkgIGluY3NzcCAodG1wKTsJCQkJXAorCSAgX2luY19z c3AgKHRtcCk7CQkJXAogCX0JCQkJCVwKICAgICB9CQkJCQkJXAogICAgIHdo aWxlICgwKQotLSAKMS44LjMuMQoK --_002_D511F25789BA7F4EBA64C8A63891A00291FB27C0IRSMSX102gercor_--