From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 39449 invoked by alias); 17 Jan 2019 00:16:35 -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 39423 invoked by uid 89); 17 Jan 2019 00:16:34 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-6.9 required=5.0 tests=BAYES_00,GIT_PATCH_1,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=FORM, attempted, gfc_expr, boat X-HELO: mail-qt1-f174.google.com Received: from mail-qt1-f174.google.com (HELO mail-qt1-f174.google.com) (209.85.160.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 Jan 2019 00:16:31 +0000 Received: by mail-qt1-f174.google.com with SMTP id u47so9448423qtj.6 for ; Wed, 16 Jan 2019 16:16:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iastate.edu; s=google20150603; h=mime-version:from:date:message-id:subject:to; bh=gApAGs1x4P0mbjV9xKZ2fhZmxGhOsKXcOt6XnAUhv7Y=; b=eORDTnDtAAkfmuhM9nwN5IjVbd5ZFXVROjgR5ytNcVDbtTPLt+/V9l9tzbyGpC+vrz 7nuGHrgYvwJ2tIco+Cb+VO1wBuTqoF5dwjZHKczhVLg8VSjEfNC9pTd5ynAGNzerOC7H A0oIP6XNKFq/kTE437X3od62Lb5vyHu4JQmt4= MIME-Version: 1.0 From: Nathan Weeks Date: Thu, 17 Jan 2019 00:16:00 -0000 Message-ID: Subject: [PATCH,Fortran][RFC] PR 87939, 87326 - STAT= and ERRMSG= specifiers in several image control statements; NEW_INDEX= specifier in FORM TEAM statement To: fortran@gcc.gnu.org, gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000524393057f9c4eeb" X-SW-Source: 2019-01/txt/msg00966.txt.bz2 --000000000000524393057f9c4eeb Content-Type: text/plain; charset="UTF-8" Content-length: 4559 Hi all, To facilitate more complete Fortran 2018 failed images support, I'm particularly interested in interested in seeing PR 87939 eventually resolved (i.e., allow STAT= and ERRMSG= specifiers in FORM TEAM, CHANGE TEAM, SYNC TEAM, END TEAM, and CRITICAL statements). To get the ball rolling (I realize that the boat has been missed for this kind of change in GCC 9 trunk), I've attempted the following patch (which, since it was convenient to do while modifying FORM TEAM-related code, also adds the NEW_INDEX= specifier to the FORM TEAM statement as desired in PR 87326). This is the first gfortran patch I've attempted, and I certainly could have made some noob mistakes, so verbose feedback would be appreciated. A few comments: * In resolve.c, the newly-added functions that type check STAT= and ERRMSG= arguments for FORM TEAM, CHANGE TEAM, and SYNC TEAM also add (previously-absent) type checking for their TEAM_TYPE arguments. If it's more appropriate, I could separate this change into its own PR. * The existing -fcoarray=lib implementation of CRITICAL acquires a LOCK on a lock variable on image 1 (in the current team). However, a CRITICAL statement stat-value of STAT_FAILED_IMAGE (i.e., the image that enter the CRITICAL construct failed) is analogous to the LOCK stat-value of STAT_UNLOCKED_FAILED_IMAGE (i.e., the image that acquired the lock failed---see section 11.6.11 (7 & 10) in Fortran 2018 draft N2146), whereas a LOCK STAT_FAILED_IMAGE means the image on which the lock variable resides has failed (no analog in the CRITICAL statement, which is oblivious to this underlying implementation). So in addition to adding the stat value STAT_UNLOCKED_FAILED_IMAGE to libgfortran.h & libcaf.h, I had CRITICAL swap a LOCK STAT_UNLOCKED_FAILED_IMAGE for STAT_FAILED_IMAGE, and (perhaps unimaginatively) a LOCK STAT_FAILED_IMAGE for STAT_UNLOCKED_FAILED_IMAGE (which, while it has no defined meaning for a CRITICAL statement, fits the definition of a "processor-dependent value other than STAT_FAILED_IMAGE"). * A couple negative tests for syntax errors (coarray_critical_2.f90 & team_end_2.f90) fail due to spurious "Error: Expecting END PROGRAM statement at (1)" errors that are also emitted by gfortran 8.2.0 as well. Thanks, -- Nathan frontend: 2019-01-16 Nathan Weeks PR fortran/87939 PR fortran/87326 * gfortran.h: Add an additional gfc_expr member to struct gfc_code. * libcaf.h: Add support for STAT_UNLOCKED_FAILED_IMAGE. * match.c (gfc_match_critical): Add STAT= and ERRMSG=. (gfc_match_change_team): Likewise. (gfc_match_end_team): Likewise. (gfc_match_sync_team): Likewise. (gfc_match_form_team): Add STAT=, ERRMSG=, and NEW_INDEX=. * resolve.c (resolve_form_team): New. Type check team-variable argument in addition to new STAT= and ERRMSG= arguments. (resolve_change_sync_team): New. Adds type checking for team-value argument. (resolve_end_team): New. (resolve_critical): Add STAT= and ERRMSG=. * trans-decl.c (gfc_build_builtin_function_decls): Additional stat, errmsg, and errmsg_len arguments to _gfortran_caf_form_team(), _gfortran_caf_change_team(), _gfortran_caf_end_team(), and _gfortran_caf_sync_team(), and additional new_index argument to _gfortran_caf_form_team(). * trans-stmt.c (gfc_trans_form_team): Support STAT=, ERRMSG=, and NEW_INDEX=. (gfc_trans_change_team): Support STAT= and ERRMSG=. (gfc_trans_end_team): Likewise. (gfc_trans_sync_team): Likewise. (gfc_trans_critical): Likewise. Also support assigning STAT_FAILED_IMAGE to a stat-variable. libgfortran: 2019-01-16 Nathan Weeks PR fortran/87939 * libgfortran.h: Add support for STAT_UNLOCKED_FAILED_IMAGE testsuite: 2019-01-16 Nathan Weeks PR fortran/87939 PR fortran/87326 * gfortran.dg/coarray_critical_2.f90: New test * gfortran.dg/coarray_critical_3.f90: New test * gfortran.dg/coarray_critical_4.f90: New test * gfortran.dg/team_change_2.f90: New test * gfortran.dg/team_change_3.f90: New test * gfortran.dg/team_end_2.f90: New test * gfortran.dg/team_end_3.f90: New test * gfortran.dg/team_form_2.f90: New test * gfortran.dg/team_form_3.f90: New test * gfortran.dg/team_sync_1.f90: New test * gfortran.dg/team_sync_2.f90: New test --000000000000524393057f9c4eeb Content-Type: application/octet-stream; name="stat-errmsg-new_index.diff" Content-Disposition: attachment; filename="stat-errmsg-new_index.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqzstebm0 Content-length: 58711 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9y dHJhbi9nZm9ydHJhbi5oCmluZGV4IGU3YTliNmY1Njc0Li41ZmM2NjFjMGVm OSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgYi9n Y2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC0yNTc4LDcgKzI1NzgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBnZmNfY29kZQogCiAgIGdmY19zdF9sYWJlbCAqaGVy ZSwgKmxhYmVsMSwgKmxhYmVsMiwgKmxhYmVsMzsKICAgZ2ZjX3N5bXRyZWUg KnN5bXRyZWU7Ci0gIGdmY19leHByICpleHByMSwgKmV4cHIyLCAqZXhwcjMs ICpleHByNDsKKyAgZ2ZjX2V4cHIgKmV4cHIxLCAqZXhwcjIsICpleHByMywg KmV4cHI0LCAqZXhwcjU7CiAgIC8qIEEgbmFtZSBpc24ndCBzdWZmaWNpZW50 IHRvIGlkZW50aWZ5IGEgc3Vicm91dGluZSwgd2UgbmVlZCB0aGUgYWN0dWFs CiAgICAgIHN5bWJvbCBmb3IgdGhlIGludGVyZmFjZSBkZWZpbml0aW9uLgog ICBjb25zdCBjaGFyICpzdWJfbmFtZTsgICovCmRpZmYgLS1naXQgYS9nY2Mv Zm9ydHJhbi9saWJnZm9ydHJhbi5oIGIvZ2NjL2ZvcnRyYW4vbGliZ2ZvcnRy YW4uaAppbmRleCA1ODFiMmY1MjlkYi4uNWZjOGRmNjcyMzAgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL2xpYmdmb3J0cmFuLmgKKysrIGIvZ2NjL2ZvcnRy YW4vbGliZ2ZvcnRyYW4uaApAQCAtMTMzLDcgKzEzMyw4IEBAIHR5cGVkZWYg ZW51bQogICBHRkNfU1RBVF9MT0NLRUQsCiAgIEdGQ19TVEFUX0xPQ0tFRF9P VEhFUl9JTUFHRSwKICAgR0ZDX1NUQVRfU1RPUFBFRF9JTUFHRSA9IDYwMDAs IC8qIFNlZSBMSUJFUlJPUl9JTlFVSVJFX0lOVEVSTkFMX1VOSVQgYWJvdmUu ICovCi0gIEdGQ19TVEFUX0ZBSUxFRF9JTUFHRSAgPSA2MDAxCisgIEdGQ19T VEFUX0ZBSUxFRF9JTUFHRSAgPSA2MDAxLAorICBHRkNfU1RBVF9VTkxPQ0tF RF9GQUlMRURfSU1BR0UgPSA2MDAyCiB9CiBsaWJnZm9ydHJhbl9zdGF0X2Nv ZGVzOwogCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9tYXRjaC5jIGIvZ2Nj L2ZvcnRyYW4vbWF0Y2guYwppbmRleCA5ZmYxYzM1YjJhMC4uOWIwYjYwYTcz MzUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL21hdGNoLmMKKysrIGIvZ2Nj L2ZvcnRyYW4vbWF0Y2guYwpAQCAtMTc5NSw2ICsxNzk1LDEyIEBAIG1hdGNo CiBnZmNfbWF0Y2hfY3JpdGljYWwgKHZvaWQpCiB7CiAgIGdmY19zdF9sYWJl bCAqbGFiZWwgPSBOVUxMOworICBtYXRjaCBtOworICBnZmNfZXhwciAqdG1w LCAqc3RhdCwgKmVycm1zZzsKKyAgYm9vbCBzYXdfc3RhdCwgc2F3X2Vycm1z ZzsKKworICB0bXAgPSBzdGF0ID0gZXJybXNnID0gTlVMTDsKKyAgc2F3X3N0 YXQgPSBzYXdfZXJybXNnID0gZmFsc2U7CiAKICAgaWYgKGdmY19tYXRjaF9s YWJlbCAoKSA9PSBNQVRDSF9FUlJPUikKICAgICByZXR1cm4gTUFUQ0hfRVJS T1I7CkBAIC0xODA1LDEyICsxODExLDYyIEBAIGdmY19tYXRjaF9jcml0aWNh bCAodm9pZCkKICAgaWYgKGdmY19tYXRjaF9zdF9sYWJlbCAoJmxhYmVsKSA9 PSBNQVRDSF9FUlJPUikKICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CiAKLSAg aWYgKGdmY19tYXRjaF9lb3MgKCkgIT0gTUFUQ0hfWUVTKQorICBpZiAoZ2Zj X21hdGNoX2VvcyAoKSA9PSBNQVRDSF9ZRVMpCisgICAgZ290byBkb25lOwor CisgIGlmIChnZmNfbWF0Y2hfY2hhciAoJygnKSAhPSBNQVRDSF9ZRVMpCisg ICAgZ290byBzeW50YXg7CisKKyAgZm9yICg7OykKICAgICB7Ci0gICAgICBn ZmNfc3ludGF4X2Vycm9yIChTVF9DUklUSUNBTCk7Ci0gICAgICByZXR1cm4g TUFUQ0hfRVJST1I7CisgICAgICBtID0gZ2ZjX21hdGNoICgiIHN0YXQgPSAl diIsICZ0bXApOworICAgICAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisJZ290 byBzeW50YXg7CisgICAgICBpZiAobSA9PSBNQVRDSF9ZRVMpCisJeworCSAg aWYgKHNhd19zdGF0KQorCSAgICB7CisJICAgICAgZ2ZjX2Vycm9yICgiUmVk dW5kYW50IFNUQVQgdGFnIGZvdW5kIGF0ICVMIiwgJnRtcC0+d2hlcmUpOwor CSAgICAgIGdvdG8gY2xlYW51cDsKKwkgICAgfQorCSAgc3RhdCA9IHRtcDsK KwkgIHNhd19zdGF0ID0gdHJ1ZTsKKworCSAgaWYgKGdmY19tYXRjaF9jaGFy ICgnLCcpID09IE1BVENIX1lFUykKKwkgICAgY29udGludWU7CisKKwkgIHRt cCA9IE5VTEw7CisJICBicmVhazsKKwl9CisKKyAgICAgIG0gPSBnZmNfbWF0 Y2ggKCIgZXJybXNnID0gJXYiLCAmdG1wKTsKKyAgICAgIGlmIChtID09IE1B VENIX0VSUk9SKQorCWdvdG8gc3ludGF4OworICAgICAgaWYgKG0gPT0gTUFU Q0hfWUVTKQorCXsKKwkgIGlmIChzYXdfZXJybXNnKQorCSAgICB7CisJICAg ICAgZ2ZjX2Vycm9yICgiUmVkdW5kYW50IEVSUk1TRyB0YWcgZm91bmQgYXQg JUwiLCAmdG1wLT53aGVyZSk7CisJICAgICAgZ290byBjbGVhbnVwOworCSAg ICB9CisJICBlcnJtc2cgPSB0bXA7CisJICBzYXdfZXJybXNnID0gdHJ1ZTsK KworCSAgaWYgKGdmY19tYXRjaF9jaGFyICgnLCcpID09IE1BVENIX1lFUykK KwkgICAgY29udGludWU7CisKKwkgIHRtcCA9IE5VTEw7CisJICBicmVhazsK Kwl9CisKKwlicmVhazsKICAgICB9CiAKKyAgaWYgKGdmY19tYXRjaCAoIiAp JXQiKSAhPSBNQVRDSF9ZRVMpCisgICAgZ290byBzeW50YXg7CisKK2RvbmU6 CisKICAgaWYgKGdmY19wdXJlIChOVUxMKSkKICAgICB7CiAgICAgICBnZmNf ZXJyb3IgKCJJbWFnZSBjb250cm9sIHN0YXRlbWVudCBDUklUSUNBTCBhdCAl QyBpbiBQVVJFIHByb2NlZHVyZSIpOwpAQCAtMTg0MywxMiArMTg5OSwyNyBA QCBnZmNfbWF0Y2hfY3JpdGljYWwgKHZvaWQpCiAgICAgfQogCiAgIG5ld19z dC5vcCA9IEVYRUNfQ1JJVElDQUw7CisgIG5ld19zdC5leHByMSA9IHN0YXQ7 CisgIG5ld19zdC5leHByMiA9IGVycm1zZzsKIAogICBpZiAobGFiZWwgIT0g TlVMTAogICAgICAgJiYgIWdmY19yZWZlcmVuY2Vfc3RfbGFiZWwgKGxhYmVs LCBTVF9MQUJFTF9UQVJHRVQpKQotICAgIHJldHVybiBNQVRDSF9FUlJPUjsK KyAgICBnb3RvIGNsZWFudXA7CiAKICAgcmV0dXJuIE1BVENIX1lFUzsKKwor c3ludGF4OgorICBnZmNfc3ludGF4X2Vycm9yIChTVF9DUklUSUNBTCk7CisK K2NsZWFudXA6CisgIGlmIChzdGF0ICE9IHRtcCkKKyAgICBnZmNfZnJlZV9l eHByIChzdGF0KTsKKyAgaWYgKGVycm1zZyAhPSB0bXApCisgICAgZ2ZjX2Zy ZWVfZXhwciAoZXJybXNnKTsKKworICBnZmNfZnJlZV9leHByICh0bXApOwor CisgIHJldHVybiBNQVRDSF9FUlJPUjsKIH0KIAogCkBAIC0zMzg2LDcgKzM0 NTcsMTEgQEAgbWF0Y2gKIGdmY19tYXRjaF9mb3JtX3RlYW0gKHZvaWQpCiB7 CiAgIG1hdGNoIG07Ci0gIGdmY19leHByICp0ZWFtaWQsKnRlYW07CisgIGdm Y19leHByICp0ZWFtaWQsICp0ZWFtLCAqbmV3X2luZGV4LCAqc3RhdCwgKmVy cm1zZywgKnRtcDsKKyAgYm9vbCBzYXdfbmV3X2luZGV4LCBzYXdfc3RhdCwg c2F3X2Vycm1zZzsKKworICB0ZWFtID0gbmV3X2luZGV4ID0gc3RhdCA9IGVy cm1zZyA9IHRtcCA9IE5VTEw7CisgIHNhd19uZXdfaW5kZXggPSBzYXdfc3Rh dCA9IHNhd19lcnJtc2cgPSBmYWxzZTsKIAogICBpZiAoIWdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDE4LCAiRk9STSBURUFNIHN0YXRlbWVudCBhdCAl QyIpKQogICAgIHJldHVybiBNQVRDSF9FUlJPUjsKQEAgLTM0MDQsMTggKzM0 NzksMTE3IEBAIGdmY19tYXRjaF9mb3JtX3RlYW0gKHZvaWQpCiAgIGlmIChn ZmNfbWF0Y2ggKCIlZSIsICZ0ZWFtKSAhPSBNQVRDSF9ZRVMpCiAgICAgZ290 byBzeW50YXg7CiAKLSAgbSA9IGdmY19tYXRjaF9jaGFyICgnKScpOworICBt ID0gZ2ZjX21hdGNoX2NoYXIgKCcsJyk7CisgIGlmIChtID09IE1BVENIX0VS Uk9SKQorICAgIGdvdG8gc3ludGF4OwogICBpZiAobSA9PSBNQVRDSF9OTykK KyAgICB7CisgICAgICBtID0gZ2ZjX21hdGNoX2NoYXIgKCcpJyk7CisgICAg ICBpZiAobSA9PSBNQVRDSF9ZRVMpCisJZ290byBkb25lOworICAgICAgZ290 byBzeW50YXg7CisgICAgfQorCisgIGZvciAoOzspCisgICAgeworICAgICAg bSA9IGdmY19tYXRjaCAoIiBzdGF0ID0gJXYiLCAmdG1wKTsKKyAgICAgIGlm IChtID09IE1BVENIX0VSUk9SKQorCWdvdG8gc3ludGF4OworICAgICAgaWYg KG0gPT0gTUFUQ0hfWUVTKQorCXsKKwkgIGlmIChzYXdfc3RhdCkKKwkgICAg eworCSAgICAgIGdmY19lcnJvciAoIlJlZHVuZGFudCBTVEFUIHRhZyBmb3Vu ZCBhdCAlTCIsICZ0bXAtPndoZXJlKTsKKwkgICAgICBnb3RvIGNsZWFudXA7 CisJICAgIH0KKwkgIHN0YXQgPSB0bXA7CisJICBzYXdfc3RhdCA9IHRydWU7 CisKKwkgIG0gPSBnZmNfbWF0Y2hfY2hhciAoJywnKTsKKwkgIGlmIChtID09 IE1BVENIX1lFUykKKwkgICAgY29udGludWU7CisKKwkgIHRtcCA9IE5VTEw7 CisJICBicmVhazsKKwl9CisKKyAgICAgIG0gPSBnZmNfbWF0Y2ggKCIgZXJy bXNnID0gJXYiLCAmdG1wKTsKKyAgICAgIGlmIChtID09IE1BVENIX0VSUk9S KQorCWdvdG8gc3ludGF4OworICAgICAgaWYgKG0gPT0gTUFUQ0hfWUVTKQor CXsKKwkgIGlmIChzYXdfZXJybXNnKQorCSAgICB7CisJICAgICAgZ2ZjX2Vy cm9yICgiUmVkdW5kYW50IEVSUk1TRyB0YWcgZm91bmQgYXQgJUwiLCAmdG1w LT53aGVyZSk7CisJICAgICAgZ290byBjbGVhbnVwOworCSAgICB9CisJICBl cnJtc2cgPSB0bXA7CisJICBzYXdfZXJybXNnID0gdHJ1ZTsKKworCSAgbSA9 IGdmY19tYXRjaF9jaGFyICgnLCcpOworCSAgaWYgKG0gPT0gTUFUQ0hfWUVT KQorCSAgICBjb250aW51ZTsKKworCSAgdG1wID0gTlVMTDsKKwkgIGJyZWFr OworCX0KKworICAgICAgbSA9IGdmY19tYXRjaCAoIiBuZXdfaW5kZXggPSAl ZSIsICZ0bXApOworICAgICAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisJZ290 byBzeW50YXg7CisgICAgICBpZiAobSA9PSBNQVRDSF9ZRVMpCisJeworCSAg aWYgKHNhd19uZXdfaW5kZXgpCisJICAgIHsKKwkgICAgICBnZmNfZXJyb3Ig KCJSZWR1bmRhbnQgTkVXX0lOREVYIHRhZyBmb3VuZCBhdCAlTCIsCisJCQkg JnRtcC0+d2hlcmUpOworCSAgICAgIGdvdG8gY2xlYW51cDsKKwkgICAgfQor CSAgbmV3X2luZGV4ID0gdG1wOworCSAgc2F3X25ld19pbmRleCA9IHRydWU7 CisKKwkgIG0gPSBnZmNfbWF0Y2hfY2hhciAoJywnKTsKKwkgIGlmIChtID09 IE1BVENIX1lFUykKKwkgICAgY29udGludWU7CisKKwkgIHRtcCA9IE5VTEw7 CisJICBicmVhazsKKwl9CisKKyAgICAgIGJyZWFrOworICAgIH0KKworICBp ZiAobSA9PSBNQVRDSF9FUlJPUikKKyAgICBnb3RvIHN5bnRheDsKKworICBp ZiAoZ2ZjX21hdGNoICgiICkldCIpICE9IE1BVENIX1lFUykKICAgICBnb3Rv IHN5bnRheDsKIAorZG9uZToKKwogICBuZXdfc3QuZXhwcjEgPSB0ZWFtaWQ7 CiAgIG5ld19zdC5leHByMiA9IHRlYW07CisgIG5ld19zdC5leHByMyA9IG5l d19pbmRleDsKKyAgbmV3X3N0LmV4cHI0ID0gc3RhdDsKKyAgbmV3X3N0LmV4 cHI1ID0gZXJybXNnOwogCiAgIHJldHVybiBNQVRDSF9ZRVM7CiAKIHN5bnRh eDoKICAgZ2ZjX3N5bnRheF9lcnJvciAoU1RfRk9STV9URUFNKTsKIAorY2xl YW51cDoKKyAgaWYgKG5ld19pbmRleCAhPSB0bXApCisgICAgZ2ZjX2ZyZWVf ZXhwciAobmV3X2luZGV4KTsKKyAgaWYgKHN0YXQgIT0gdG1wKQorICAgIGdm Y19mcmVlX2V4cHIgKHN0YXQpOworICBpZiAoZXJybXNnICE9IHRtcCkKKyAg ICBnZmNfZnJlZV9leHByIChlcnJtc2cpOworCisgIGdmY19mcmVlX2V4cHIg KHRtcCk7CisgIGdmY19mcmVlX2V4cHIgKHRlYW0pOworICBnZmNfZnJlZV9l eHByICh0ZWFtaWQpOworCiAgIHJldHVybiBNQVRDSF9FUlJPUjsKIH0KIApA QCAtMzQyNSw3ICszNTk5LDExIEBAIG1hdGNoCiBnZmNfbWF0Y2hfY2hhbmdl X3RlYW0gKHZvaWQpCiB7CiAgIG1hdGNoIG07Ci0gIGdmY19leHByICp0ZWFt OworICBnZmNfZXhwciAqdGVhbSwgKnN0YXQsICplcnJtc2csICp0bXA7Cisg IGJvb2wgc2F3X3N0YXQsIHNhd19lcnJtc2c7CisKKyAgdG1wID0gdGVhbSA9 IHN0YXQgPSBlcnJtc2cgPSBOVUxMOworICBzYXdfc3RhdCA9IHNhd19lcnJt c2cgPSBmYWxzZTsKIAogICBpZiAoIWdmY19ub3RpZnlfc3RkIChHRkNfU1RE X0YyMDE4LCAiQ0hBTkdFIFRFQU0gc3RhdGVtZW50IGF0ICVDIikpCiAgICAg cmV0dXJuIE1BVENIX0VSUk9SOwpAQCAtMzQzOCwxNyArMzYxNiw4NSBAQCBn ZmNfbWF0Y2hfY2hhbmdlX3RlYW0gKHZvaWQpCiAgIGlmIChnZmNfbWF0Y2gg KCIlZSIsICZ0ZWFtKSAhPSBNQVRDSF9ZRVMpCiAgICAgZ290byBzeW50YXg7 CiAKLSAgbSA9IGdmY19tYXRjaF9jaGFyICgnKScpOworICBtID0gZ2ZjX21h dGNoX2NoYXIgKCcsJyk7CisgIGlmIChtID09IE1BVENIX0VSUk9SKQorICAg IGdvdG8gc3ludGF4OwogICBpZiAobSA9PSBNQVRDSF9OTykKKyAgICB7Cisg ICAgICBtID0gZ2ZjX21hdGNoX2NoYXIgKCcpJyk7CisgICAgICBpZiAobSA9 PSBNQVRDSF9ZRVMpCisJZ290byBkb25lOworICAgICAgZ290byBzeW50YXg7 CisgICAgfQorCisgIGZvciAoOzspCisgICAgeworICAgICAgbSA9IGdmY19t YXRjaCAoIiBzdGF0ID0gJXYiLCAmdG1wKTsKKyAgICAgIGlmIChtID09IE1B VENIX0VSUk9SKQorCWdvdG8gc3ludGF4OworICAgICAgaWYgKG0gPT0gTUFU Q0hfWUVTKQorCXsKKwkgIGlmIChzYXdfc3RhdCkKKwkgICAgeworCSAgICAg IGdmY19lcnJvciAoIlJlZHVuZGFudCBTVEFUIHRhZyBmb3VuZCBhdCAlTCIs ICZ0bXAtPndoZXJlKTsKKwkgICAgICBnb3RvIGNsZWFudXA7CisJICAgIH0K KwkgIHN0YXQgPSB0bXA7CisJICBzYXdfc3RhdCA9IHRydWU7CisKKwkgIGlm IChnZmNfbWF0Y2hfY2hhciAoJywnKSA9PSBNQVRDSF9ZRVMpCisJICAgIGNv bnRpbnVlOworCisJICB0bXAgPSBOVUxMOworCSAgYnJlYWs7CisJfQorCisg ICAgICBtID0gZ2ZjX21hdGNoICgiIGVycm1zZyA9ICV2IiwgJnRtcCk7Cisg ICAgICBpZiAobSA9PSBNQVRDSF9FUlJPUikKKwlnb3RvIHN5bnRheDsKKyAg ICAgIGlmIChtID09IE1BVENIX1lFUykKKwl7CisJICBpZiAoc2F3X2Vycm1z ZykKKwkgICAgeworCSAgICAgIGdmY19lcnJvciAoIlJlZHVuZGFudCBFUlJN U0cgdGFnIGZvdW5kIGF0ICVMIiwgJnRtcC0+d2hlcmUpOworCSAgICAgIGdv dG8gY2xlYW51cDsKKwkgICAgfQorCSAgZXJybXNnID0gdG1wOworCSAgc2F3 X2Vycm1zZyA9IHRydWU7CisKKwkgIGlmIChnZmNfbWF0Y2hfY2hhciAoJywn KSA9PSBNQVRDSF9ZRVMpCisJICAgIGNvbnRpbnVlOworCisJICB0bXAgPSBO VUxMOworCSAgYnJlYWs7CisJfQorCisJYnJlYWs7CisgICAgfQorCisgIGlm IChnZmNfbWF0Y2ggKCIgKSV0IikgIT0gTUFUQ0hfWUVTKQogICAgIGdvdG8g c3ludGF4OwogCitkb25lOgorCiAgIG5ld19zdC5leHByMSA9IHRlYW07Cisg IG5ld19zdC5leHByMiA9IHN0YXQ7CisgIG5ld19zdC5leHByMyA9IGVycm1z ZzsKIAogICByZXR1cm4gTUFUQ0hfWUVTOwogCiBzeW50YXg6CiAgIGdmY19z eW50YXhfZXJyb3IgKFNUX0NIQU5HRV9URUFNKTsKIAorY2xlYW51cDoKKyAg aWYgKHN0YXQgIT0gdG1wKQorICAgIGdmY19mcmVlX2V4cHIgKHN0YXQpOwor ICBpZiAoZXJybXNnICE9IHRtcCkKKyAgICBnZmNfZnJlZV9leHByIChlcnJt c2cpOworCisgIGdmY19mcmVlX2V4cHIgKHRtcCk7CisgIGdmY19mcmVlX2V4 cHIgKHRlYW0pOworCiAgIHJldHVybiBNQVRDSF9FUlJPUjsKIH0KIApAQCAt MzQ1NywxOSArMzcwMyw4OSBAQCBzeW50YXg6CiBtYXRjaAogZ2ZjX21hdGNo X2VuZF90ZWFtICh2b2lkKQogeworICBtYXRjaCBtOworICBnZmNfZXhwciAq dG1wLCAqc3RhdCwgKmVycm1zZzsKKyAgYm9vbCBzYXdfc3RhdCwgc2F3X2Vy cm1zZzsKKworICB0bXAgPSBzdGF0ID0gZXJybXNnID0gTlVMTDsKKyAgc2F3 X3N0YXQgPSBzYXdfZXJybXNnID0gZmFsc2U7CisKICAgaWYgKCFnZmNfbm90 aWZ5X3N0ZCAoR0ZDX1NURF9GMjAxOCwgIkVORCBURUFNIHN0YXRlbWVudCBh dCAlQyIpKQogICAgIHJldHVybiBNQVRDSF9FUlJPUjsKIAotICBpZiAoZ2Zj X21hdGNoX2NoYXIgKCcoJykgPT0gTUFUQ0hfWUVTKQorICBpZiAoZ2ZjX21h dGNoX2VvcyAoKSA9PSBNQVRDSF9ZRVMpCisgICAgZ290byBkb25lOworCisg IGlmIChnZmNfbWF0Y2hfY2hhciAoJygnKSAhPSBNQVRDSF9ZRVMpCisgICAg Z290byBzeW50YXg7CisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICBtID0g Z2ZjX21hdGNoICgiIHN0YXQgPSAldiIsICZ0bXApOworICAgICAgaWYgKG0g PT0gTUFUQ0hfRVJST1IpCisJZ290byBzeW50YXg7CisgICAgICBpZiAobSA9 PSBNQVRDSF9ZRVMpCisJeworCSAgaWYgKHNhd19zdGF0KQorCSAgICB7CisJ ICAgICAgZ2ZjX2Vycm9yICgiUmVkdW5kYW50IFNUQVQgdGFnIGZvdW5kIGF0 ICVMIiwgJnRtcC0+d2hlcmUpOworCSAgICAgIGdvdG8gY2xlYW51cDsKKwkg ICAgfQorCSAgc3RhdCA9IHRtcDsKKwkgIHNhd19zdGF0ID0gdHJ1ZTsKKwor CSAgaWYgKGdmY19tYXRjaF9jaGFyICgnLCcpID09IE1BVENIX1lFUykKKwkg ICAgY29udGludWU7CisKKwkgIHRtcCA9IE5VTEw7CisJICBicmVhazsKKwl9 CisKKyAgICAgIG0gPSBnZmNfbWF0Y2ggKCIgZXJybXNnID0gJXYiLCAmdG1w KTsKKyAgICAgIGlmIChtID09IE1BVENIX0VSUk9SKQorCWdvdG8gc3ludGF4 OworICAgICAgaWYgKG0gPT0gTUFUQ0hfWUVTKQorCXsKKwkgIGlmIChzYXdf ZXJybXNnKQorCSAgICB7CisJICAgICAgZ2ZjX2Vycm9yICgiUmVkdW5kYW50 IEVSUk1TRyB0YWcgZm91bmQgYXQgJUwiLCAmdG1wLT53aGVyZSk7CisJICAg ICAgZ290byBjbGVhbnVwOworCSAgICB9CisJICBlcnJtc2cgPSB0bXA7CisJ ICBzYXdfZXJybXNnID0gdHJ1ZTsKKworCSAgaWYgKGdmY19tYXRjaF9jaGFy ICgnLCcpID09IE1BVENIX1lFUykKKwkgICAgY29udGludWU7CisKKwkgIHRt cCA9IE5VTEw7CisJICBicmVhazsKKwl9CisKKwlicmVhazsKKyAgICB9CisK KyAgaWYgKGdmY19tYXRjaCAoIiApJXQiKSAhPSBNQVRDSF9ZRVMpCiAgICAg Z290byBzeW50YXg7CiAKK2RvbmU6CisKICAgbmV3X3N0Lm9wID0gRVhFQ19F TkRfVEVBTTsKKyAgbmV3X3N0LmV4cHIxID0gc3RhdDsKKyAgbmV3X3N0LmV4 cHIyID0gZXJybXNnOwogCiAgIHJldHVybiBNQVRDSF9ZRVM7CiAKIHN5bnRh eDoKICAgZ2ZjX3N5bnRheF9lcnJvciAoU1RfRU5EX1RFQU0pOwogCitjbGVh bnVwOgorICBpZiAoc3RhdCAhPSB0bXApCisgICAgZ2ZjX2ZyZWVfZXhwciAo c3RhdCk7CisgIGlmIChlcnJtc2cgIT0gdG1wKQorICAgIGdmY19mcmVlX2V4 cHIgKGVycm1zZyk7CisKKyAgZ2ZjX2ZyZWVfZXhwciAodG1wKTsKKwogICBy ZXR1cm4gTUFUQ0hfRVJST1I7CiB9CiAKQEAgLTM0NzksNyArMzc5NSwxMSBA QCBtYXRjaAogZ2ZjX21hdGNoX3N5bmNfdGVhbSAodm9pZCkKIHsKICAgbWF0 Y2ggbTsKLSAgZ2ZjX2V4cHIgKnRlYW07CisgIGdmY19leHByICp0ZWFtLCAq c3RhdCwgKmVycm1zZywgKnRtcDsKKyAgYm9vbCBzYXdfc3RhdCwgc2F3X2Vy cm1zZzsKKworICB0bXAgPSB0ZWFtID0gc3RhdCA9IGVycm1zZyA9IE5VTEw7 CisgIHNhd19zdGF0ID0gc2F3X2Vycm1zZyA9IGZhbHNlOwogCiAgIGlmICgh Z2ZjX25vdGlmeV9zdGQgKEdGQ19TVERfRjIwMTgsICJTWU5DIFRFQU0gc3Rh dGVtZW50IGF0ICVDIikpCiAgICAgcmV0dXJuIE1BVENIX0VSUk9SOwpAQCAt MzQ5MiwxNyArMzgxMiw4NSBAQCBnZmNfbWF0Y2hfc3luY190ZWFtICh2b2lk KQogICBpZiAoZ2ZjX21hdGNoICgiJWUiLCAmdGVhbSkgIT0gTUFUQ0hfWUVT KQogICAgIGdvdG8gc3ludGF4OwogCi0gIG0gPSBnZmNfbWF0Y2hfY2hhciAo JyknKTsKKyAgbSA9IGdmY19tYXRjaF9jaGFyICgnLCcpOworICBpZiAobSA9 PSBNQVRDSF9FUlJPUikKKyAgICBnb3RvIHN5bnRheDsKICAgaWYgKG0gPT0g TUFUQ0hfTk8pCisgICAgeworICAgICAgbSA9IGdmY19tYXRjaF9jaGFyICgn KScpOworICAgICAgaWYgKG0gPT0gTUFUQ0hfWUVTKQorCWdvdG8gZG9uZTsK KyAgICAgIGdvdG8gc3ludGF4OworICAgIH0KKworICBmb3IgKDs7KQorICAg IHsKKyAgICAgIG0gPSBnZmNfbWF0Y2ggKCIgc3RhdCA9ICV2IiwgJnRtcCk7 CisgICAgICBpZiAobSA9PSBNQVRDSF9FUlJPUikKKwlnb3RvIHN5bnRheDsK KyAgICAgIGlmIChtID09IE1BVENIX1lFUykKKwl7CisJICBpZiAoc2F3X3N0 YXQpCisJICAgIHsKKwkgICAgICBnZmNfZXJyb3IgKCJSZWR1bmRhbnQgU1RB VCB0YWcgZm91bmQgYXQgJUwiLCAmdG1wLT53aGVyZSk7CisJICAgICAgZ290 byBjbGVhbnVwOworCSAgICB9CisJICBzdGF0ID0gdG1wOworCSAgc2F3X3N0 YXQgPSB0cnVlOworCisJICBpZiAoZ2ZjX21hdGNoX2NoYXIgKCcsJykgPT0g TUFUQ0hfWUVTKQorCSAgICBjb250aW51ZTsKKworCSAgdG1wID0gTlVMTDsK KwkgIGJyZWFrOworCX0KKworICAgICAgbSA9IGdmY19tYXRjaCAoIiBlcnJt c2cgPSAldiIsICZ0bXApOworICAgICAgaWYgKG0gPT0gTUFUQ0hfRVJST1Ip CisJZ290byBzeW50YXg7CisgICAgICBpZiAobSA9PSBNQVRDSF9ZRVMpCisJ eworCSAgaWYgKHNhd19lcnJtc2cpCisJICAgIHsKKwkgICAgICBnZmNfZXJy b3IgKCJSZWR1bmRhbnQgRVJSTVNHIHRhZyBmb3VuZCBhdCAlTCIsICZ0bXAt PndoZXJlKTsKKwkgICAgICBnb3RvIGNsZWFudXA7CisJICAgIH0KKwkgIGVy cm1zZyA9IHRtcDsKKwkgIHNhd19lcnJtc2cgPSB0cnVlOworCisJICBpZiAo Z2ZjX21hdGNoX2NoYXIgKCcsJykgPT0gTUFUQ0hfWUVTKQorCSAgICBjb250 aW51ZTsKKworCSAgdG1wID0gTlVMTDsKKwkgIGJyZWFrOworCX0KKworCWJy ZWFrOworICAgIH0KKworICBpZiAoZ2ZjX21hdGNoICgiICkldCIpICE9IE1B VENIX1lFUykKICAgICBnb3RvIHN5bnRheDsKIAorZG9uZToKKwogICBuZXdf c3QuZXhwcjEgPSB0ZWFtOworICBuZXdfc3QuZXhwcjIgPSBzdGF0OworICBu ZXdfc3QuZXhwcjMgPSBlcnJtc2c7CiAKICAgcmV0dXJuIE1BVENIX1lFUzsK IAogc3ludGF4OgogICBnZmNfc3ludGF4X2Vycm9yIChTVF9TWU5DX1RFQU0p OwogCitjbGVhbnVwOgorICBpZiAoc3RhdCAhPSB0bXApCisgICAgZ2ZjX2Zy ZWVfZXhwciAoc3RhdCk7CisgIGlmIChlcnJtc2cgIT0gdG1wKQorICAgIGdm Y19mcmVlX2V4cHIgKGVycm1zZyk7CisKKyAgZ2ZjX2ZyZWVfZXhwciAodG1w KTsKKyAgZ2ZjX2ZyZWVfZXhwciAodGVhbSk7CisKICAgcmV0dXJuIE1BVENI X0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9yZXNvbHZl LmMgYi9nY2MvZm9ydHJhbi9yZXNvbHZlLmMKaW5kZXggYjFjOTI5MjkwMDMu LjgwOTVmYmZhYmNhIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9yZXNvbHZl LmMKKysrIGIvZ2NjL2ZvcnRyYW4vcmVzb2x2ZS5jCkBAIC05NjIzLDYgKzk2 MjMsODkgQEAgcmVzb2x2ZV9sb2NrX3VubG9ja19ldmVudCAoZ2ZjX2NvZGUg KmNvZGUpCiAgICAgfQogfQogCitzdGF0aWMgdm9pZAorcmVzb2x2ZV9mb3Jt X3RlYW0gKGdmY19jb2RlICpjb2RlKQoreworICBpZiAoY29kZS0+ZXhwcjIt PnRzLnR5cGUgIT0gQlRfREVSSVZFRAorCSAgfHwgY29kZS0+ZXhwcjItPmV4 cHJfdHlwZSAhPSBFWFBSX1ZBUklBQkxFCisJICB8fCBjb2RlLT5leHByMi0+ dHMudS5kZXJpdmVkLT5mcm9tX2ludG1vZCAhPSBJTlRNT0RfSVNPX0ZPUlRS QU5fRU5WCisJICB8fCBjb2RlLT5leHByMi0+dHMudS5kZXJpdmVkLT5pbnRt b2Rfc3ltX2lkICE9IElTT0ZPUlRSQU5fVEVBTV9UWVBFCisJICB8fCBjb2Rl LT5leHByMi0+cmFuayAhPSAwKQorICAgIGdmY19lcnJvciAoIlRlYW0gdmFy aWFibGUgYXQgJUwgbXVzdCBiZSBhIHNjYWxhciBvZiB0eXBlIFRFQU1fVFlQ RSIsCisJICAgICAgICZjb2RlLT5leHByMi0+d2hlcmUpOworCisgIC8qIENo ZWNrIE5FV19JTkRFWC4gICovCisgIGlmIChjb2RlLT5leHByMykKKyAgICB7 CisgICAgICBpZiAoIWdmY19yZXNvbHZlX2V4cHIgKGNvZGUtPmV4cHIzKSB8 fCBjb2RlLT5leHByMy0+dHMudHlwZSAhPSBCVF9JTlRFR0VSCisJICB8fCBj b2RlLT5leHByMy0+cmFuayAhPSAwKQorCWdmY19lcnJvciAoIk5FV19JTkRF WD0gYXJndW1lbnQgYXQgJUwgbXVzdCBiZSBhIHNjYWxhciBJTlRFR0VSICIK KwkJICAgImV4cHJlc3Npb24iLCAmY29kZS0+ZXhwcjMtPndoZXJlKTsKKyAg ICB9CisKKyAgLyogQ2hlY2sgU1RBVC4gICovCisgIGdmY19yZXNvbHZlX2V4 cHIgKGNvZGUtPmV4cHI0KTsKKyAgaWYgKGNvZGUtPmV4cHI0CisgICAgICAm JiAoY29kZS0+ZXhwcjQtPnRzLnR5cGUgIT0gQlRfSU5URUdFUiB8fCBjb2Rl LT5leHByNC0+cmFuayAhPSAwCisJICB8fCBjb2RlLT5leHByNC0+ZXhwcl90 eXBlICE9IEVYUFJfVkFSSUFCTEUpKQorICAgIGdmY19lcnJvciAoIlNUQVQ9 IGFyZ3VtZW50IGF0ICVMIG11c3QgYmUgYSBzY2FsYXIgSU5URUdFUiB2YXJp YWJsZSIsCisJICAgICAgICZjb2RlLT5leHByNC0+d2hlcmUpOworCisgIC8q IENoZWNrIEVSUk1TRy4gICovCisgIGdmY19yZXNvbHZlX2V4cHIgKGNvZGUt PmV4cHI1KTsKKyAgaWYgKGNvZGUtPmV4cHI1CisgICAgICAmJiAoY29kZS0+ ZXhwcjUtPnRzLnR5cGUgIT0gQlRfQ0hBUkFDVEVSIHx8IGNvZGUtPmV4cHI1 LT5yYW5rICE9IDAKKwkgIHx8IGNvZGUtPmV4cHI1LT5leHByX3R5cGUgIT0g RVhQUl9WQVJJQUJMRSkpCisgICAgZ2ZjX2Vycm9yICgiRVJSTVNHPSBhcmd1 bWVudCBhdCAlTCBtdXN0IGJlIGEgc2NhbGFyIENIQVJBQ1RFUiB2YXJpYWJs ZSIsCisJICAgICAgICZjb2RlLT5leHByNS0+d2hlcmUpOworfQorCitzdGF0 aWMgdm9pZAorcmVzb2x2ZV9jaGFuZ2Vfc3luY190ZWFtIChnZmNfY29kZSAq Y29kZSkKK3sKKyAgaWYgKGNvZGUtPmV4cHIxLT50cy50eXBlICE9IEJUX0RF UklWRUQKKwkgIHx8IGNvZGUtPmV4cHIxLT50cy51LmRlcml2ZWQtPmZyb21f aW50bW9kICE9IElOVE1PRF9JU09fRk9SVFJBTl9FTlYKKwkgIHx8IGNvZGUt PmV4cHIxLT50cy51LmRlcml2ZWQtPmludG1vZF9zeW1faWQgIT0gSVNPRk9S VFJBTl9URUFNX1RZUEUKKwkgIHx8IGNvZGUtPmV4cHIxLT5yYW5rICE9IDAp CisgICAgZ2ZjX2Vycm9yICgidGVhbS12YWx1ZSBhcmd1bWVudCBhdCAlTCBt dXN0IGJlIGEgc2NhbGFyIFRFQU1fVFlQRSBleHByZXNzaW9uIiwKKwkgICAg ICAgJmNvZGUtPmV4cHIxLT53aGVyZSk7CisKKyAgLyogQ2hlY2sgU1RBVC4g ICovCisgIGdmY19yZXNvbHZlX2V4cHIgKGNvZGUtPmV4cHIyKTsKKyAgaWYg KGNvZGUtPmV4cHIyCisgICAgICAmJiAoY29kZS0+ZXhwcjItPnRzLnR5cGUg IT0gQlRfSU5URUdFUiB8fCBjb2RlLT5leHByMi0+cmFuayAhPSAwCisJICB8 fCBjb2RlLT5leHByMi0+ZXhwcl90eXBlICE9IEVYUFJfVkFSSUFCTEUpKQor ICAgIGdmY19lcnJvciAoIlNUQVQ9IGFyZ3VtZW50IGF0ICVMIG11c3QgYmUg YSBzY2FsYXIgSU5URUdFUiB2YXJpYWJsZSIsCisJICAgICAgICZjb2RlLT5l eHByMi0+d2hlcmUpOworCisgIC8qIENoZWNrIEVSUk1TRy4gICovCisgIGdm Y19yZXNvbHZlX2V4cHIgKGNvZGUtPmV4cHIzKTsKKyAgaWYgKGNvZGUtPmV4 cHIzCisgICAgICAmJiAoY29kZS0+ZXhwcjMtPnRzLnR5cGUgIT0gQlRfQ0hB UkFDVEVSIHx8IGNvZGUtPmV4cHIzLT5yYW5rICE9IDAKKwkgIHx8IGNvZGUt PmV4cHIzLT5leHByX3R5cGUgIT0gRVhQUl9WQVJJQUJMRSkpCisgICAgZ2Zj X2Vycm9yICgiRVJSTVNHPSBhcmd1bWVudCBhdCAlTCBtdXN0IGJlIGEgc2Nh bGFyIENIQVJBQ1RFUiB2YXJpYWJsZSIsCisJICAgICAgICZjb2RlLT5leHBy My0+d2hlcmUpOworfQorCitzdGF0aWMgdm9pZAorcmVzb2x2ZV9lbmRfdGVh bSAoZ2ZjX2NvZGUgKmNvZGUpCit7CisgIC8qIENoZWNrIFNUQVQuICAqLwor ICBnZmNfcmVzb2x2ZV9leHByIChjb2RlLT5leHByMSk7CisgIGlmIChjb2Rl LT5leHByMQorICAgICAgJiYgKGNvZGUtPmV4cHIxLT50cy50eXBlICE9IEJU X0lOVEVHRVIgfHwgY29kZS0+ZXhwcjEtPnJhbmsgIT0gMAorCSAgfHwgY29k ZS0+ZXhwcjEtPmV4cHJfdHlwZSAhPSBFWFBSX1ZBUklBQkxFKSkKKyAgICBn ZmNfZXJyb3IgKCJTVEFUPSBhcmd1bWVudCBhdCAlTCBtdXN0IGJlIGEgc2Nh bGFyIElOVEVHRVIgdmFyaWFibGUiLAorCSAgICAgICAmY29kZS0+ZXhwcjEt PndoZXJlKTsKKworICAvKiBDaGVjayBFUlJNU0cuICAqLworICBnZmNfcmVz b2x2ZV9leHByIChjb2RlLT5leHByMik7CisgIGlmIChjb2RlLT5leHByMgor ICAgICAgJiYgKGNvZGUtPmV4cHIyLT50cy50eXBlICE9IEJUX0NIQVJBQ1RF UiB8fCBjb2RlLT5leHByMi0+cmFuayAhPSAwCisJICB8fCBjb2RlLT5leHBy Mi0+ZXhwcl90eXBlICE9IEVYUFJfVkFSSUFCTEUpKQorICAgIGdmY19lcnJv ciAoIkVSUk1TRz0gYXJndW1lbnQgYXQgJUwgbXVzdCBiZSBhIHNjYWxhciBD SEFSQUNURVIgdmFyaWFibGUiLAorCSAgICAgICAmY29kZS0+ZXhwcjItPndo ZXJlKTsKK30KIAogc3RhdGljIHZvaWQKIHJlc29sdmVfY3JpdGljYWwgKGdm Y19jb2RlICpjb2RlKQpAQCAtOTYzMiw2ICs5NzE1LDIyIEBAIHJlc29sdmVf Y3JpdGljYWwgKGdmY19jb2RlICpjb2RlKQogICBjaGFyIG5hbWVbR0ZDX01B WF9TWU1CT0xfTEVOXTsKICAgc3RhdGljIGludCBzZXJpYWwgPSAwOwogCisg IC8qIENoZWNrIFNUQVQuICAqLworICBnZmNfcmVzb2x2ZV9leHByIChjb2Rl LT5leHByMSk7CisgIGlmIChjb2RlLT5leHByMQorICAgICAgJiYgKGNvZGUt PmV4cHIxLT50cy50eXBlICE9IEJUX0lOVEVHRVIgfHwgY29kZS0+ZXhwcjEt PnJhbmsgIT0gMAorCSAgfHwgY29kZS0+ZXhwcjEtPmV4cHJfdHlwZSAhPSBF WFBSX1ZBUklBQkxFKSkKKyAgICBnZmNfZXJyb3IgKCJTVEFUPSBhcmd1bWVu dCBhdCAlTCBtdXN0IGJlIGEgc2NhbGFyIElOVEVHRVIgdmFyaWFibGUiLAor CSAgICAgICAmY29kZS0+ZXhwcjEtPndoZXJlKTsKKworICAvKiBDaGVjayBF UlJNU0cuICAqLworICBnZmNfcmVzb2x2ZV9leHByIChjb2RlLT5leHByMik7 CisgIGlmIChjb2RlLT5leHByMgorICAgICAgJiYgKGNvZGUtPmV4cHIyLT50 cy50eXBlICE9IEJUX0NIQVJBQ1RFUiB8fCBjb2RlLT5leHByMi0+cmFuayAh PSAwCisJICB8fCBjb2RlLT5leHByMi0+ZXhwcl90eXBlICE9IEVYUFJfVkFS SUFCTEUpKQorICAgIGdmY19lcnJvciAoIkVSUk1TRz0gYXJndW1lbnQgYXQg JUwgbXVzdCBiZSBhIHNjYWxhciBDSEFSQUNURVIgdmFyaWFibGUiLAorCSAg ICAgICAmY29kZS0+ZXhwcjItPndoZXJlKTsKKwogICBpZiAoZmxhZ19jb2Fy cmF5ICE9IEdGQ19GQ09BUlJBWV9MSUIpCiAgICAgcmV0dXJuOwogCkBAIC0x MTMyNCwxMCArMTE0MjMsMTggQEAgc3RhcnQ6CiAJICBicmVhazsKIAogCWNh c2UgRVhFQ19GQUlMX0lNQUdFOgorICAgICAgYnJlYWs7CiAJY2FzZSBFWEVD X0ZPUk1fVEVBTToKKyAgICAgIHJlc29sdmVfZm9ybV90ZWFtIChjb2RlKTsK KyAgICAgIGJyZWFrOworCiAJY2FzZSBFWEVDX0NIQU5HRV9URUFNOgotCWNh c2UgRVhFQ19FTkRfVEVBTToKIAljYXNlIEVYRUNfU1lOQ19URUFNOgorICAg ICAgcmVzb2x2ZV9jaGFuZ2Vfc3luY190ZWFtIChjb2RlKTsKKyAgICAgIGJy ZWFrOworCisJY2FzZSBFWEVDX0VORF9URUFNOgorICAgICAgcmVzb2x2ZV9l bmRfdGVhbSAoY29kZSk7CiAJICBicmVhazsKIAogCWNhc2UgRVhFQ19FTlRS WToKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuYyBiL2dj Yy9mb3J0cmFuL3RyYW5zLWRlY2wuYwppbmRleCBjNGNkY2Q2ODE5My4uZGQz ZWExYTgxYWIgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wu YworKysgYi9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMKQEAgLTM4MDYsMTkg KzM4MDYsMjAgQEAgZ2ZjX2J1aWxkX2J1aWx0aW5fZnVuY3Rpb25fZGVjbHMg KHZvaWQpCiAKICAgICAgIGdmb3JfZm5kZWNsX2NhZl9mb3JtX3RlYW0KIAk9 IGdmY19idWlsZF9saWJyYXJ5X2Z1bmN0aW9uX2RlY2xfd2l0aF9zcGVjICgK LQkgICAgZ2V0X2lkZW50aWZpZXIgKFBSRUZJWCgiY2FmX2Zvcm1fdGVhbSIp KSwgIlJXUiIsCi0JICAgIHZvaWRfdHlwZV9ub2RlLCAzLCBpbnRlZ2VyX3R5 cGVfbm9kZSwgcHB2b2lkX3R5cGVfbm9kZSwKLQkgICAgaW50ZWdlcl90eXBl X25vZGUpOworCSAgICBnZXRfaWRlbnRpZmllciAoUFJFRklYKCJjYWZfZm9y bV90ZWFtIikpLCAiUldSV1dXIiwKKwkgICAgdm9pZF90eXBlX25vZGUsIDYs IGludGVnZXJfdHlwZV9ub2RlLCBwcHZvaWRfdHlwZV9ub2RlLAorCSAgICBp bnRlZ2VyX3R5cGVfbm9kZSwgcGludF90eXBlLCBwY2hhcl90eXBlX25vZGUs IHNpemVfdHlwZV9ub2RlKTsKIAogICAgICAgZ2Zvcl9mbmRlY2xfY2FmX2No YW5nZV90ZWFtCiAJPSBnZmNfYnVpbGRfbGlicmFyeV9mdW5jdGlvbl9kZWNs X3dpdGhfc3BlYyAoCi0JICAgIGdldF9pZGVudGlmaWVyIChQUkVGSVgoImNh Zl9jaGFuZ2VfdGVhbSIpKSwgIlJSIiwKLQkgICAgdm9pZF90eXBlX25vZGUs IDIsIHBwdm9pZF90eXBlX25vZGUsCi0JICAgIGludGVnZXJfdHlwZV9ub2Rl KTsKKwkgICAgZ2V0X2lkZW50aWZpZXIgKFBSRUZJWCgiY2FmX2NoYW5nZV90 ZWFtIikpLCAiUldXVyIsCisJICAgIHZvaWRfdHlwZV9ub2RlLCA0LCBwcHZv aWRfdHlwZV9ub2RlLCBwaW50X3R5cGUsIHBjaGFyX3R5cGVfbm9kZSwKKwkg ICAgc2l6ZV90eXBlX25vZGUpOwogCiAgICAgICBnZm9yX2ZuZGVjbF9jYWZf ZW5kX3RlYW0KLQk9IGdmY19idWlsZF9saWJyYXJ5X2Z1bmN0aW9uX2RlY2wg KAotCSAgICBnZXRfaWRlbnRpZmllciAoUFJFRklYKCJjYWZfZW5kX3RlYW0i KSksIHZvaWRfdHlwZV9ub2RlLCAwKTsKKwk9IGdmY19idWlsZF9saWJyYXJ5 X2Z1bmN0aW9uX2RlY2xfd2l0aF9zcGVjICgKKwkgICAgZ2V0X2lkZW50aWZp ZXIgKFBSRUZJWCgiY2FmX2VuZF90ZWFtIikpLCAiV1dXIiwgdm9pZF90eXBl X25vZGUsIDMsCisJICAgIHBpbnRfdHlwZSwgcGNoYXJfdHlwZV9ub2RlLCBz aXplX3R5cGVfbm9kZSk7CiAKICAgICAgIGdmb3JfZm5kZWNsX2NhZl9nZXRf dGVhbQogCT0gZ2ZjX2J1aWxkX2xpYnJhcnlfZnVuY3Rpb25fZGVjbF93aXRo X3NwZWMgKApAQCAtMzgyNyw5ICszODI4LDkgQEAgZ2ZjX2J1aWxkX2J1aWx0 aW5fZnVuY3Rpb25fZGVjbHMgKHZvaWQpCiAKICAgICAgIGdmb3JfZm5kZWNs X2NhZl9zeW5jX3RlYW0KIAk9IGdmY19idWlsZF9saWJyYXJ5X2Z1bmN0aW9u X2RlY2xfd2l0aF9zcGVjICgKLQkgICAgZ2V0X2lkZW50aWZpZXIgKFBSRUZJ WCgiY2FmX3N5bmNfdGVhbSIpKSwgIlJSIiwKLQkgICAgdm9pZF90eXBlX25v ZGUsIDIsIHBwdm9pZF90eXBlX25vZGUsCi0JICAgIGludGVnZXJfdHlwZV9u b2RlKTsKKwkgICAgZ2V0X2lkZW50aWZpZXIgKFBSRUZJWCgiY2FmX3N5bmNf dGVhbSIpKSwgIlJXV1ciLAorCSAgICB2b2lkX3R5cGVfbm9kZSwgNCwgcHB2 b2lkX3R5cGVfbm9kZSwgcGludF90eXBlLCBwY2hhcl90eXBlX25vZGUsCisJ ICAgIHNpemVfdHlwZV9ub2RlKTsKIAogICAgICAgZ2Zvcl9mbmRlY2xfY2Fm X3RlYW1fbnVtYmVyCiAgICAgICAJPSBnZmNfYnVpbGRfbGlicmFyeV9mdW5j dGlvbl9kZWNsX3dpdGhfc3BlYyAoCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJh bi90cmFucy1zdG10LmMgYi9nY2MvZm9ydHJhbi90cmFucy1zdG10LmMKaW5k ZXggNmI3ODVhNmRiNGUuLjViMGU0OGY0NTU5IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi90cmFucy1zdG10LmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMt c3RtdC5jCkBAIC03MDgsOCArNzA4LDkgQEAgZ2ZjX3RyYW5zX2Zvcm1fdGVh bSAoZ2ZjX2NvZGUgKmNvZGUpCiAgIGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZD X0ZDT0FSUkFZX0xJQikKICAgICB7CiAgICAgICBnZmNfc2Ugc2U7Ci0gICAg ICBnZmNfc2UgYXJnc2UxLCBhcmdzZTI7Ci0gICAgICB0cmVlIHRlYW1faWQs IHRlYW1fdHlwZSwgdG1wOworICAgICAgZ2ZjX3NlIGFyZ3NlMSwgYXJnc2Uy LCBhcmdzZSwgbmV3X2luZGV4c2U7CisgICAgICB0cmVlIHRlYW1faWQsIHRl YW1fdHlwZSwgbmV3X2luZGV4LCBzdGF0LCBlcnJtc2csIGVycm1zZ19sZW4s IHRtcDsKKyAgICAgIHRyZWUgc3RhdDIgPSBOVUxMX1RSRUU7CiAKICAgICAg IGdmY19pbml0X3NlICgmc2UsIE5VTEwpOwogICAgICAgZ2ZjX2luaXRfc2Ug KCZhcmdzZTEsIE5VTEwpOwpAQCAtNzIzLDEzICs3MjQsNjQgQEAgZ2ZjX3Ry YW5zX2Zvcm1fdGVhbSAoZ2ZjX2NvZGUgKmNvZGUpCiAKICAgICAgIGdmY19h ZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUsICZhcmdzZTEucHJlKTsKICAg ICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUsICZhcmdzZTIu cHJlKTsKKworICAgICAgLyogTkVXX0lOREVYPS4gICovCisgICAgICBpZiAo Y29kZS0+ZXhwcjMpCisJeworCSAgZ2ZjX2luaXRfc2UgKCZuZXdfaW5kZXhz ZSwgTlVMTCk7CisJICBnZmNfY29udl9leHByX3ZhbCAoJm5ld19pbmRleHNl LCBjb2RlLT5leHByMyk7CisJICBuZXdfaW5kZXggPSBuZXdfaW5kZXhzZS5l eHByOworCX0KKyAgICAgIGVsc2UKKwluZXdfaW5kZXggPSBudWxsX3BvaW50 ZXJfbm9kZTsKKworICAgICAgLyogU1RBVD0uICAqLworICAgICAgaWYgKGNv ZGUtPmV4cHI0KQorCXsKKwkgIGdjY19hc3NlcnQgKGNvZGUtPmV4cHI0LT5l eHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRSk7CisJICBnZmNfaW5pdF9zZSAo JmFyZ3NlLCBOVUxMKTsKKwkgIGdmY19jb252X2V4cHJfdmFsICgmYXJnc2Us IGNvZGUtPmV4cHI0KTsKKwkgIHN0YXQgPSBhcmdzZS5leHByOworCX0KKyAg ICAgIGVsc2UKKwlzdGF0ID0gbnVsbF9wb2ludGVyX25vZGU7CisKKyAgICAg IC8qIEVSUk1TRz0gb25seSBtYWtlcyBzZW5zZSB3aXRoIFNUQVQ9LiAgKi8K KyAgICAgIGlmIChjb2RlLT5leHByNCAmJiBjb2RlLT5leHByNSkKKwl7CisJ ICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKwkgIGFyZ3NlLndhbnRf cG9pbnRlciA9IDE7CisJICBnZmNfY29udl9leHByICgmYXJnc2UsIGNvZGUt PmV4cHI1KTsKKwkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUs ICZhcmdzZS5wcmUpOworCSAgZXJybXNnID0gYXJnc2UuZXhwcjsKKwkgIGVy cm1zZ19sZW4gPSBmb2xkX2NvbnZlcnQgKHNpemVfdHlwZV9ub2RlLCBhcmdz ZS5zdHJpbmdfbGVuZ3RoKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgZXJy bXNnID0gbnVsbF9wb2ludGVyX25vZGU7CisJICBlcnJtc2dfbGVuID0gYnVp bGRfemVyb19jc3QgKHNpemVfdHlwZV9ub2RlKTsKKwl9CisKKyAgICAgIGlm IChzdGF0ICE9IG51bGxfcG9pbnRlcl9ub2RlICYmIFRSRUVfVFlQRSAoc3Rh dCkgIT0gaW50ZWdlcl90eXBlX25vZGUpCisJeworCSAgc3RhdDIgPSBzdGF0 OworCSAgc3RhdCA9IGdmY19jcmVhdGVfdmFyIChpbnRlZ2VyX3R5cGVfbm9k ZSwgInN0YXQiKTsKKwl9CisKICAgICAgIHRtcCA9IGJ1aWxkX2NhbGxfZXhw cl9sb2MgKGlucHV0X2xvY2F0aW9uLAotCQkJCSBnZm9yX2ZuZGVjbF9jYWZf Zm9ybV90ZWFtLCAzLAotCQkJCSB0ZWFtX2lkLCB0ZWFtX3R5cGUsCi0JCQkJ IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCAwKSk7CisJCQkJ IGdmb3JfZm5kZWNsX2NhZl9mb3JtX3RlYW0sIDYsCisJCQkJIHRlYW1faWQs IHRlYW1fdHlwZSwgbmV3X2luZGV4LAorCQkJCSBzdGF0ICE9IG51bGxfcG9p bnRlcl9ub2RlCisJCQkJID8gZ2ZjX2J1aWxkX2FkZHJfZXhwciAoTlVMTCwg c3RhdCkgOiBzdGF0LAorCQkJCSBlcnJtc2csIGVycm1zZ19sZW4pOwogICAg ICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmc2UucHJlLCB0bXApOwogICAg ICAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoJnNlLnByZSwgJmFyZ3NlMS5w b3N0KTsKICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUs ICZhcmdzZTIucG9zdCk7CisgICAgICBpZiAobmV3X2luZGV4ICE9IG51bGxf cG9pbnRlcl9ub2RlKQorCWdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5w cmUsICZuZXdfaW5kZXhzZS5wb3N0KTsKKyAgICAgIGlmIChzdGF0MiAhPSBO VUxMX1RSRUUpCisJZ2ZjX2FkZF9tb2RpZnkgKCZzZS5wcmUsIHN0YXQyLAor CQkJZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUgKHN0YXQyKSwgc3RhdCkpOwog ICAgICAgcmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZzZS5wcmUpOwogICAg IH0KICAgZWxzZQpAQCAtNzQ4LDE5ICs4MDAsNjMgQEAgZ2ZjX3RyYW5zX2No YW5nZV90ZWFtIChnZmNfY29kZSAqY29kZSkKIHsKICAgaWYgKGZsYWdfY29h cnJheSA9PSBHRkNfRkNPQVJSQVlfTElCKQogICAgIHsKLSAgICAgIGdmY19z ZSBhcmdzZTsKLSAgICAgIHRyZWUgdGVhbV90eXBlLCB0bXA7CisgICAgICBn ZmNfc2UgYXJnc2UsIHNlLCB0ZWFtX3R5cGVzZTsKKyAgICAgIHRyZWUgdGVh bV90eXBlLCBzdGF0LCBlcnJtc2csIGVycm1zZ19sZW4sIHRtcCwgc3RhdDIg PSBOVUxMX1RSRUU7CiAKKyAgICAgIGdmY19pbml0X3NlICgmc2UsIE5VTEwp OwogICAgICAgZ2ZjX2luaXRfc2UgKCZhcmdzZSwgTlVMTCk7Ci0gICAgICBn ZmNfY29udl9leHByX3ZhbCAoJmFyZ3NlLCBjb2RlLT5leHByMSk7Ci0gICAg ICB0ZWFtX3R5cGUgPSBnZmNfYnVpbGRfYWRkcl9leHByIChwcHZvaWRfdHlw ZV9ub2RlLCBhcmdzZS5leHByKTsKKyAgICAgIGdmY19pbml0X3NlICgmdGVh bV90eXBlc2UsIE5VTEwpOworICAgICAgZ2ZjX3N0YXJ0X2Jsb2NrICgmc2Uu cHJlKTsKKworICAgICAgZ2ZjX2NvbnZfZXhwcl92YWwgKCZ0ZWFtX3R5cGVz ZSwgY29kZS0+ZXhwcjEpOworICAgICAgdGVhbV90eXBlID0gZ2ZjX2J1aWxk X2FkZHJfZXhwciAocHB2b2lkX3R5cGVfbm9kZSwgdGVhbV90eXBlc2UuZXhw cik7CisKKyAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUs ICZ0ZWFtX3R5cGVzZS5wcmUpOworCisgICAgICAvKiBTVEFUPS4gICovCisg ICAgICBpZiAoY29kZS0+ZXhwcjIpCisJeworCSAgZ2NjX2Fzc2VydCAoY29k ZS0+ZXhwcjItPmV4cHJfdHlwZSA9PSBFWFBSX1ZBUklBQkxFKTsKKwkgIGdm Y19pbml0X3NlICgmYXJnc2UsIE5VTEwpOworCSAgZ2ZjX2NvbnZfZXhwcl92 YWwgKCZhcmdzZSwgY29kZS0+ZXhwcjIpOworCSAgc3RhdCA9IGFyZ3NlLmV4 cHI7CisJfQorICAgICAgZWxzZQorCXN0YXQgPSBudWxsX3BvaW50ZXJfbm9k ZTsKKworICAgICAgLyogRVJSTVNHPSBvbmx5IG1ha2VzIHNlbnNlIHdpdGgg U1RBVD0uICAqLworICAgICAgaWYgKGNvZGUtPmV4cHIyICYmIGNvZGUtPmV4 cHIzKQorCXsKKwkgIGdmY19pbml0X3NlICgmYXJnc2UsIE5VTEwpOworCSAg YXJnc2Uud2FudF9wb2ludGVyID0gMTsKKwkgIGdmY19jb252X2V4cHIgKCZh cmdzZSwgY29kZS0+ZXhwcjMpOworCSAgZ2ZjX2FkZF9ibG9ja190b19ibG9j ayAoJnNlLnByZSwgJmFyZ3NlLnByZSk7CisJICBlcnJtc2cgPSBhcmdzZS5l eHByOworCSAgZXJybXNnX2xlbiA9IGZvbGRfY29udmVydCAoc2l6ZV90eXBl X25vZGUsIGFyZ3NlLnN0cmluZ19sZW5ndGgpOworCX0KKyAgICAgIGVsc2UK Kwl7CisJICBlcnJtc2cgPSBudWxsX3BvaW50ZXJfbm9kZTsKKwkgIGVycm1z Z19sZW4gPSBidWlsZF96ZXJvX2NzdCAoc2l6ZV90eXBlX25vZGUpOworCX0K KworICAgICAgaWYgKHN0YXQgIT0gbnVsbF9wb2ludGVyX25vZGUgJiYgVFJF RV9UWVBFIChzdGF0KSAhPSBpbnRlZ2VyX3R5cGVfbm9kZSkKKwl7CisJICBz dGF0MiA9IHN0YXQ7CisJICBzdGF0ID0gZ2ZjX2NyZWF0ZV92YXIgKGludGVn ZXJfdHlwZV9ub2RlLCAic3RhdCIpOworCX0KIAogICAgICAgdG1wID0gYnVp bGRfY2FsbF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sCi0JCQkJIGdmb3Jf Zm5kZWNsX2NhZl9jaGFuZ2VfdGVhbSwgMiwgdGVhbV90eXBlLAotCQkJCSBi dWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwgMCkpOwotICAgICAg Z2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmYXJnc2UucHJlLCB0bXApOwotICAg ICAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoJmFyZ3NlLnByZSwgJmFyZ3Nl LnBvc3QpOwotICAgICAgcmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZhcmdz ZS5wcmUpOworCQkJCSBnZm9yX2ZuZGVjbF9jYWZfY2hhbmdlX3RlYW0sIDQs IHRlYW1fdHlwZSwKKwkJCQkgc3RhdCAhPSBudWxsX3BvaW50ZXJfbm9kZQor CQkJCSA/IGdmY19idWlsZF9hZGRyX2V4cHIgKE5VTEwsIHN0YXQpIDogc3Rh dCwKKwkJCQkgZXJybXNnLCBlcnJtc2dfbGVuKTsKKyAgICAgIGdmY19hZGRf ZXhwcl90b19ibG9jayAoJnNlLnByZSwgdG1wKTsKKyAgICAgIGdmY19hZGRf YmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUsICZ0ZWFtX3R5cGVzZS5wb3N0KTsK KyAgICAgIGlmIChzdGF0MiAhPSBOVUxMX1RSRUUpCisJZ2ZjX2FkZF9tb2Rp ZnkgKCZzZS5wcmUsIHN0YXQyLAorCQkJZm9sZF9jb252ZXJ0IChUUkVFX1RZ UEUgKHN0YXQyKSwgc3RhdCkpOworICAgICAgcmV0dXJuIGdmY19maW5pc2hf YmxvY2sgKCZzZS5wcmUpOwogICAgIH0KICAgZWxzZQogICAgIHsKQEAgLTc3 NCwxMyArODcwLDU4IEBAIGdmY190cmFuc19jaGFuZ2VfdGVhbSAoZ2ZjX2Nv ZGUgKmNvZGUpCiAvKiBUcmFuc2xhdGUgdGhlIEVORCBURUFNIHN0YXRlbWVu dC4gICovCiAKIHRyZWUKLWdmY190cmFuc19lbmRfdGVhbSAoZ2ZjX2NvZGUg KmNvZGUgQVRUUklCVVRFX1VOVVNFRCkKK2dmY190cmFuc19lbmRfdGVhbSAo Z2ZjX2NvZGUgKmNvZGUpCiB7CiAgIGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZD X0ZDT0FSUkFZX0xJQikKICAgICB7Ci0gICAgICByZXR1cm4gYnVpbGRfY2Fs bF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sCi0JCQkJICBnZm9yX2ZuZGVj bF9jYWZfZW5kX3RlYW0sIDEsCi0JCQkJICBidWlsZF9pbnRfY3N0IChwY2hh cl90eXBlX25vZGUsIDApKTsKKyAgICAgIGdmY19zZSBhcmdzZSwgc2U7Cisg ICAgICB0cmVlIHN0YXQsIGVycm1zZywgZXJybXNnX2xlbiwgdG1wLCBzdGF0 MiA9IE5VTExfVFJFRTsKKworICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVM TCk7CisgICAgICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKyAgICAg IGdmY19zdGFydF9ibG9jayAoJnNlLnByZSk7CisKKyAgICAgIGlmIChjb2Rl LT5leHByMSkKKwl7CisJICBnY2NfYXNzZXJ0IChjb2RlLT5leHByMS0+ZXhw cl90eXBlID09IEVYUFJfVkFSSUFCTEUpOworCSAgZ2ZjX2luaXRfc2UgKCZh cmdzZSwgTlVMTCk7CisJICBnZmNfY29udl9leHByX3ZhbCAoJmFyZ3NlLCBj b2RlLT5leHByMSk7CisJICBzdGF0ID0gYXJnc2UuZXhwcjsKKwl9CisgICAg ICBlbHNlCisJc3RhdCA9IG51bGxfcG9pbnRlcl9ub2RlOworCisgICAgICBp ZiAoY29kZS0+ZXhwcjIpCisJeworCSAgZ2ZjX2luaXRfc2UgKCZhcmdzZSwg TlVMTCk7CisJICBhcmdzZS53YW50X3BvaW50ZXIgPSAxOworCSAgZ2ZjX2Nv bnZfZXhwciAoJmFyZ3NlLCBjb2RlLT5leHByMik7CisJICBnZmNfYWRkX2Js b2NrX3RvX2Jsb2NrICgmc2UucHJlLCAmYXJnc2UucHJlKTsKKwkgIGVycm1z ZyA9IGFyZ3NlLmV4cHI7CisJICBlcnJtc2dfbGVuID0gZm9sZF9jb252ZXJ0 IChzaXplX3R5cGVfbm9kZSwgYXJnc2Uuc3RyaW5nX2xlbmd0aCk7CisJfQor ICAgICAgZWxzZQorCXsKKwkgIGVycm1zZyA9IG51bGxfcG9pbnRlcl9ub2Rl OworCSAgZXJybXNnX2xlbiA9IGJ1aWxkX3plcm9fY3N0IChzaXplX3R5cGVf bm9kZSk7CisJfQorCisgICAgICBpZiAoc3RhdCAhPSBudWxsX3BvaW50ZXJf bm9kZSAmJiBUUkVFX1RZUEUgKHN0YXQpICE9IGludGVnZXJfdHlwZV9ub2Rl KQorCXsKKwkgIHN0YXQyID0gc3RhdDsKKwkgIHN0YXQgPSBnZmNfY3JlYXRl X3ZhciAoaW50ZWdlcl90eXBlX25vZGUsICJzdGF0Iik7CisJfQorCisgICAg ICB0bXAgPSBidWlsZF9jYWxsX2V4cHJfbG9jIChpbnB1dF9sb2NhdGlvbiwK KwkJCQkgZ2Zvcl9mbmRlY2xfY2FmX2VuZF90ZWFtLCAzLAorCQkJCSBzdGF0 ICE9IG51bGxfcG9pbnRlcl9ub2RlCisJCQkJID8gZ2ZjX2J1aWxkX2FkZHJf ZXhwciAoTlVMTCwgc3RhdCkgOiBzdGF0LAorCQkJCSBlcnJtc2csIGVycm1z Z19sZW4pOworICAgICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmc2UucHJl LCB0bXApOworICAgICAgaWYgKHN0YXQyICE9IE5VTExfVFJFRSkKKwlnZmNf YWRkX21vZGlmeSAoJnNlLnByZSwgc3RhdDIsCisJCQlmb2xkX2NvbnZlcnQg KFRSRUVfVFlQRSAoc3RhdDIpLCBzdGF0KSk7CisgICAgICByZXR1cm4gZ2Zj X2ZpbmlzaF9ibG9jayAoJnNlLnByZSk7CiAgICAgfQogICBlbHNlCiAgICAg ewpAQCAtNzk4LDIwICs5MzksNjMgQEAgZ2ZjX3RyYW5zX3N5bmNfdGVhbSAo Z2ZjX2NvZGUgKmNvZGUpCiB7CiAgIGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZD X0ZDT0FSUkFZX0xJQikKICAgICB7Ci0gICAgICBnZmNfc2UgYXJnc2U7Ci0g ICAgICB0cmVlIHRlYW1fdHlwZSwgdG1wOworICAgICAgZ2ZjX3NlIGFyZ3Nl LCBzZSwgdGVhbV90eXBlc2U7CisgICAgICB0cmVlIHRlYW1fdHlwZSwgc3Rh dCwgZXJybXNnLCBlcnJtc2dfbGVuLCB0bXAsIHN0YXQyID0gTlVMTF9UUkVF OwogCisgICAgICBnZmNfaW5pdF9zZSAoJnNlLCBOVUxMKTsKICAgICAgIGdm Y19pbml0X3NlICgmYXJnc2UsIE5VTEwpOwotICAgICAgZ2ZjX2NvbnZfZXhw cl92YWwgKCZhcmdzZSwgY29kZS0+ZXhwcjEpOwotICAgICAgdGVhbV90eXBl ID0gZ2ZjX2J1aWxkX2FkZHJfZXhwciAocHB2b2lkX3R5cGVfbm9kZSwgYXJn c2UuZXhwcik7CisgICAgICBnZmNfaW5pdF9zZSAoJnRlYW1fdHlwZXNlLCBO VUxMKTsKKyAgICAgIGdmY19zdGFydF9ibG9jayAoJnNlLnByZSk7CisKKyAg ICAgIGdmY19jb252X2V4cHJfdmFsICgmdGVhbV90eXBlc2UsIGNvZGUtPmV4 cHIxKTsKKyAgICAgIHRlYW1fdHlwZSA9IGdmY19idWlsZF9hZGRyX2V4cHIg KHBwdm9pZF90eXBlX25vZGUsIHRlYW1fdHlwZXNlLmV4cHIpOworCisgICAg ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgmc2UucHJlLCAmdGVhbV90eXBl c2UucHJlKTsKKworICAgICAgLyogU1RBVD0uICAqLworICAgICAgaWYgKGNv ZGUtPmV4cHIyKQorCXsKKwkgIGdjY19hc3NlcnQgKGNvZGUtPmV4cHIyLT5l eHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRSk7CisJICBnZmNfaW5pdF9zZSAo JmFyZ3NlLCBOVUxMKTsKKwkgIGdmY19jb252X2V4cHJfdmFsICgmYXJnc2Us IGNvZGUtPmV4cHIyKTsKKwkgIHN0YXQgPSBhcmdzZS5leHByOworCX0KKyAg ICAgIGVsc2UKKwlzdGF0ID0gbnVsbF9wb2ludGVyX25vZGU7CisKKyAgICAg IC8qIEVSUk1TRz0gb25seSBtYWtlcyBzZW5zZSB3aXRoIFNUQVQ9LiAgKi8K KyAgICAgIGlmIChjb2RlLT5leHByMiAmJiBjb2RlLT5leHByMykKKwl7CisJ ICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKwkgIGFyZ3NlLndhbnRf cG9pbnRlciA9IDE7CisJICBnZmNfY29udl9leHByICgmYXJnc2UsIGNvZGUt PmV4cHIzKTsKKwkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKCZzZS5wcmUs ICZhcmdzZS5wcmUpOworCSAgZXJybXNnID0gYXJnc2UuZXhwcjsKKwkgIGVy cm1zZ19sZW4gPSBmb2xkX2NvbnZlcnQgKHNpemVfdHlwZV9ub2RlLCBhcmdz ZS5zdHJpbmdfbGVuZ3RoKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgZXJy bXNnID0gbnVsbF9wb2ludGVyX25vZGU7CisJICBlcnJtc2dfbGVuID0gYnVp bGRfemVyb19jc3QgKHNpemVfdHlwZV9ub2RlKTsKKwl9CisKKyAgICAgIGlm IChzdGF0ICE9IG51bGxfcG9pbnRlcl9ub2RlICYmIFRSRUVfVFlQRSAoc3Rh dCkgIT0gaW50ZWdlcl90eXBlX25vZGUpCisJeworCSAgc3RhdDIgPSBzdGF0 OworCSAgc3RhdCA9IGdmY19jcmVhdGVfdmFyIChpbnRlZ2VyX3R5cGVfbm9k ZSwgInN0YXQiKTsKKwl9CiAKICAgICAgIHRtcCA9IGJ1aWxkX2NhbGxfZXhw cl9sb2MgKGlucHV0X2xvY2F0aW9uLAotCQkJCSBnZm9yX2ZuZGVjbF9jYWZf c3luY190ZWFtLCAyLAotCQkJCSB0ZWFtX3R5cGUsCi0JCQkJIGJ1aWxkX2lu dF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCAwKSk7Ci0gICAgICBnZmNfYWRk X2V4cHJfdG9fYmxvY2sgKCZhcmdzZS5wcmUsIHRtcCk7Ci0gICAgICBnZmNf YWRkX2Jsb2NrX3RvX2Jsb2NrICgmYXJnc2UucHJlLCAmYXJnc2UucG9zdCk7 Ci0gICAgICByZXR1cm4gZ2ZjX2ZpbmlzaF9ibG9jayAoJmFyZ3NlLnByZSk7 CisJCQkJIGdmb3JfZm5kZWNsX2NhZl9zeW5jX3RlYW0sIDQsIHRlYW1fdHlw ZSwKKwkJCQkgc3RhdCAhPSBudWxsX3BvaW50ZXJfbm9kZQorCQkJCSA/IGdm Y19idWlsZF9hZGRyX2V4cHIgKE5VTEwsIHN0YXQpIDogc3RhdCwKKwkJCQkg ZXJybXNnLCBlcnJtc2dfbGVuKTsKKyAgICAgIGdmY19hZGRfZXhwcl90b19i bG9jayAoJnNlLnByZSwgdG1wKTsKKyAgICAgIGdmY19hZGRfYmxvY2tfdG9f YmxvY2sgKCZzZS5wcmUsICZ0ZWFtX3R5cGVzZS5wb3N0KTsKKyAgICAgIGlm IChzdGF0MiAhPSBOVUxMX1RSRUUpCisJZ2ZjX2FkZF9tb2RpZnkgKCZzZS5w cmUsIHN0YXQyLAorCQkJZm9sZF9jb252ZXJ0IChUUkVFX1RZUEUgKHN0YXQy KSwgc3RhdCkpOworICAgICAgcmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZz ZS5wcmUpOwogICAgIH0KICAgZWxzZQogICAgIHsKQEAgLTE1NzEsMTkgKzE3 NTUsOTMgQEAgZ2ZjX3RyYW5zX2NyaXRpY2FsIChnZmNfY29kZSAqY29kZSkK IHsKICAgc3RtdGJsb2NrX3QgYmxvY2s7CiAgIHRyZWUgdG1wLCB0b2tlbiA9 IE5VTExfVFJFRTsKKyAgdHJlZSBjb25kLCBzdGF0ID0gTlVMTF9UUkVFLCBl cnJtc2csIGVycm1zZ19sZW4sIHN0YXQyID0gTlVMTF9UUkVFOworICBnZmNf c2UgYXJnc2U7CiAKICAgZ2ZjX3N0YXJ0X2Jsb2NrICgmYmxvY2spOwogCiAg IGlmIChmbGFnX2NvYXJyYXkgPT0gR0ZDX0ZDT0FSUkFZX0xJQikKICAgICB7 CisgICAgICAvKiBTVEFUPS4gICovCisgICAgICBpZiAoY29kZS0+ZXhwcjEp CisJeworCSAgZ2NjX2Fzc2VydCAoY29kZS0+ZXhwcjEtPmV4cHJfdHlwZSA9 PSBFWFBSX1ZBUklBQkxFKTsKKwkgIGdmY19pbml0X3NlICgmYXJnc2UsIE5V TEwpOworCSAgZ2ZjX2NvbnZfZXhwcl92YWwgKCZhcmdzZSwgY29kZS0+ZXhw cjEpOworCSAgc3RhdCA9IGFyZ3NlLmV4cHI7CisJfQorICAgICAgZWxzZQor CXN0YXQgPSBudWxsX3BvaW50ZXJfbm9kZTsKKworICAgICAgLyogRVJSTVNH PSBvbmx5IG1ha2VzIHNlbnNlIHdpdGggU1RBVD0uICAqLworICAgICAgaWYg KGNvZGUtPmV4cHIxICYmIGNvZGUtPmV4cHIyKQorCXsKKwkgIGdmY19pbml0 X3NlICgmYXJnc2UsIE5VTEwpOworCSAgYXJnc2Uud2FudF9wb2ludGVyID0g MTsKKwkgIGdmY19jb252X2V4cHIgKCZhcmdzZSwgY29kZS0+ZXhwcjIpOwor CSAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAoJmJsb2NrLCAmYXJnc2UucHJl KTsKKwkgIGVycm1zZyA9IGFyZ3NlLmV4cHI7CisJICBlcnJtc2dfbGVuID0g Zm9sZF9jb252ZXJ0IChzaXplX3R5cGVfbm9kZSwgYXJnc2Uuc3RyaW5nX2xl bmd0aCk7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGVycm1zZyA9IG51bGxf cG9pbnRlcl9ub2RlOworCSAgZXJybXNnX2xlbiA9IGJ1aWxkX3plcm9fY3N0 IChzaXplX3R5cGVfbm9kZSk7CisJfQorCisgICAgICBpZiAoc3RhdCAhPSBu dWxsX3BvaW50ZXJfbm9kZSAmJiBUUkVFX1RZUEUgKHN0YXQpICE9IGludGVn ZXJfdHlwZV9ub2RlKQorCXsKKwkgIHN0YXQyID0gc3RhdDsKKwkgIHN0YXQg PSBnZmNfY3JlYXRlX3ZhciAoaW50ZWdlcl90eXBlX25vZGUsICJzdGF0Iik7 CisJfQorCiAgICAgICB0b2tlbiA9IGdmY19nZXRfc3ltYm9sX2RlY2wgKGNv ZGUtPnJlc29sdmVkX3N5bSk7CiAgICAgICB0b2tlbiA9IEdGQ19UWVBFX0FS UkFZX0NBRl9UT0tFTiAoVFJFRV9UWVBFICh0b2tlbikpOwogICAgICAgdG1w ID0gYnVpbGRfY2FsbF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sIGdmb3Jf Zm5kZWNsX2NhZl9sb2NrLCA3LAogCQkJCSB0b2tlbiwgaW50ZWdlcl96ZXJv X25vZGUsIGludGVnZXJfb25lX25vZGUsCi0JCQkJIG51bGxfcG9pbnRlcl9u b2RlLCBudWxsX3BvaW50ZXJfbm9kZSwKLQkJCQkgbnVsbF9wb2ludGVyX25v ZGUsIGludGVnZXJfemVyb19ub2RlKTsKKwkJCQkgbnVsbF9wb2ludGVyX25v ZGUsCisJCQkJIHN0YXQgIT0gbnVsbF9wb2ludGVyX25vZGUKKwkJCQkgPyBn ZmNfYnVpbGRfYWRkcl9leHByIChOVUxMLCBzdGF0KSA6IHN0YXQsCisJCQkJ IGVycm1zZywgZXJybXNnX2xlbik7CiAgICAgICBnZmNfYWRkX2V4cHJfdG9f YmxvY2sgKCZibG9jaywgdG1wKTsKIAorICAgICAgaWYgKHN0YXQgIT0gbnVs bF9wb2ludGVyX25vZGUpCisgICAgICB7CisJLyogSWYgc3RhdCBpcyBzZXQg dG8gb25lIG9mIFNUQVRfVU5MT0NLRURfRkFJTEVEX0lNQUdFIG9yCisJICog U1RBVF9GQUlMRURfSU1BR0UsIHNldCBpdHMgdmFsdWUgdG8gdGhlIG90aGVy LgorCSAqLworCSAvKiAoc3RhdCA9PSBTVEFUX0ZBSUxFRF9JTUFHRSkgKi8K Kwljb25kID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgRVFf RVhQUiwgbG9naWNhbF90eXBlX25vZGUsCisJCQkJc3RhdCwgYnVpbGRfaW50 X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsCisJCQkJCQkgICAgIEdGQ19TVEFU X0ZBSUxFRF9JTUFHRSkpOworCS8qICgoKHN0YXQgPT0gU1RBVF9GQUlMRURf SU1BR0UpID8gU1RBVF9VTkxPQ0tFRF9GQUlMRURfSU1BR0UgOiBzdGF0KSAq LworCXRtcCA9IGZvbGRfYnVpbGQzX2xvYyAoaW5wdXRfbG9jYXRpb24sIENP TkRfRVhQUiwgaW50ZWdlcl90eXBlX25vZGUsCisJCQkgICAgICAgY29uZCwg YnVpbGRfaW50X2NzdCAoaW50ZWdlcl90eXBlX25vZGUsCisJCQkJCSAgICAg IEdGQ19TVEFUX1VOTE9DS0VEX0ZBSUxFRF9JTUFHRSksCisJCQkgICAgICAg c3RhdCk7CisJLyogKHN0YXQgPT0gU1RBVF9VTkxPQ0tFRF9GQUlMRURfSU1B R0UpICovCisJY29uZCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRp b24sIEVRX0VYUFIsIGxvZ2ljYWxfdHlwZV9ub2RlLAorCQkJCXN0YXQsIGJ1 aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAorCQkJCQkgICAgIEdG Q19TVEFUX1VOTE9DS0VEX0ZBSUxFRF9JTUFHRSkpOworCS8qIChzdGF0ID09 IFNUQVRfVU5MT0NLRURfRkFJTEVEX0lNQUdFKSA/IFNUQVRfRkFJTEVEX0lN QUdFIDoKKwkgKiAgKChzdGF0ID09IFNUQVRfRkFJTEVEX0lNQUdFKSA/IFNU QVRfVU5MT0NLRURfRkFJTEVEX0lNQUdFIDogc3RhdCkKKwkgKi8KKwl0bXAg PSBmb2xkX2J1aWxkM19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIs IGludGVnZXJfdHlwZV9ub2RlLAorCQkJICAgICAgIGNvbmQsIGJ1aWxkX2lu dF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAorCQkJCQkJICAgIEdGQ19TVEFU X0ZBSUxFRF9JTUFHRSksCisJCQkgICAgICAgdG1wKTsKKworCS8qIGFzc2ln biByZXN1bHQgdG8gc3RhdC4gICovCisJZ2ZjX2FkZF9tb2RpZnkgKCZibG9j aywgc3RhdCwKKwkJCWZvbGRfY29udmVydCAoVFJFRV9UWVBFIChzdGF0KSwg dG1wKSk7CisKKwlnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZibG9jaywgdG1w KTsKKworCWlmIChzdGF0MiAhPSBOVUxMX1RSRUUpCisJICBnZmNfYWRkX21v ZGlmeSAoJmJsb2NrLCBzdGF0MiwKKwkJCSAgZm9sZF9jb252ZXJ0IChUUkVF X1RZUEUgKHN0YXQyKSwgc3RhdCkpOworICAgICAgfQorCiAgICAgICAvKiBJ dCBndWFyYW50ZWVzIG1lbW9yeSBjb25zaXN0ZW5jeSB3aXRoaW4gdGhlIHNh bWUgc2VnbWVudCAqLwogICAgICAgdG1wID0gZ2ZjX2J1aWxkX3N0cmluZ19j b25zdCAoc3RybGVuICgibWVtb3J5IikrMSwgIm1lbW9yeSIpLAogCXRtcCA9 IGJ1aWxkNV9sb2MgKGlucHV0X2xvY2F0aW9uLCBBU01fRVhQUiwgdm9pZF90 eXBlX25vZGUsCkBAIC0xNjAxLDEwICsxODU5LDE4IEBAIGdmY190cmFuc19j cml0aWNhbCAoZ2ZjX2NvZGUgKmNvZGUpCiAKICAgaWYgKGZsYWdfY29hcnJh eSA9PSBHRkNfRkNPQVJSQVlfTElCKQogICAgIHsKKyAgICAgIC8qIEVORCBD UklUSUNBTCBkb2VzIG5vdCBhY2NlcHQgU1RBVCBvciBFUlJNU0cgYXJndW1l bnRzLgorICAgICAgICogSWYgU1RBVD0gaXMgc3BlY2lmaWVkIGZvciBDUklU SUNBTCwgcGFzcyBhIHN0YXQgYXJndW1lbnQgdG8KKyAgICAgICAqIF9nZm9y dHJhbl9jYWZfbG9ja191bmxvY2sgdG8gcHJldmVudCB0ZXJtaW5hdGlvbiBp biB0aGUgZXZlbnQgb2YgYW4KKyAgICAgICAqIGVycm9yLCBidXQgaWdub3Jl IGFueSB2YWx1ZSBhc3NpZ25lZCB0byBpdC4KKyAgICAgICAqLwogICAgICAg dG1wID0gYnVpbGRfY2FsbF9leHByX2xvYyAoaW5wdXRfbG9jYXRpb24sIGdm b3JfZm5kZWNsX2NhZl91bmxvY2ssIDYsCiAJCQkJIHRva2VuLCBpbnRlZ2Vy X3plcm9fbm9kZSwgaW50ZWdlcl9vbmVfbm9kZSwKLQkJCQkgbnVsbF9wb2lu dGVyX25vZGUsIG51bGxfcG9pbnRlcl9ub2RlLAotCQkJCSBpbnRlZ2VyX3pl cm9fbm9kZSk7CisJCQkJIHN0YXQgIT0gTlVMTF9UUkVFCisJCQkJID8gZ2Zj X2J1aWxkX2FkZHJfZXhwciAoTlVMTCwKKwkJCQkgICAgZ2ZjX2NyZWF0ZV92 YXIgKGludGVnZXJfdHlwZV9ub2RlLCAic3RhdCIpKQorCQkJCSA6IG51bGxf cG9pbnRlcl9ub2RlLAorCQkJCSBudWxsX3BvaW50ZXJfbm9kZSwgaW50ZWdl cl96ZXJvX25vZGUpOwogICAgICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgm YmxvY2ssIHRtcCk7CiAKICAgICAgIC8qIEl0IGd1YXJhbnRlZXMgbWVtb3J5 IGNvbnNpc3RlbmN5IHdpdGhpbiB0aGUgc2FtZSBzZWdtZW50ICovCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXlfY3Jp dGljYWxfMi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJy YXlfY3JpdGljYWxfMi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjFhNjk4ZWFkYWI4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5X2NyaXRpY2FsXzIu ZjkwCkBAIC0wLDAgKzEsMjcgQEAKKyEgUFIgODc5MzkKKyEgeyBkZy1kbyBj b21waWxlIH0KKyEgeyBkZy1vcHRpb25zICItZmNvYXJyYXk9bGliIiB9Cish CishIFRlc3QgY3JpdGljYWwgc3ludGF4IGVycm9ycyB3aXRoIHN0YXQ9IGFu ZCBlcnJtc2c9IHNwZWNpZmllcnMKKyEKKyAgaW1wbGljaXQgbm9uZQorICBp bnRlZ2VyIDo6IGlzdGF0CisgIGNoYXJhY3RlcihsZW49MzApIDo6IGVycgor CisgIGNyaXRpY2FsIChzdGF0PWVycikgISB7IGRnLWVycm9yICJtdXN0IGJl IGEgc2NhbGFyIElOVEVHRVIiIH0KKyAgICBjb250aW51ZQorICBlbmQgY3Jp dGljYWwKKworICBjcml0aWNhbCAoc3RhdD1pc3RhdCwgc3RhdD1pc3RhdCkg ISB7IGRnLWVycm9yICJSZWR1bmRhbnQgU1RBVCIgfQorICAgIGNvbnRpbnVl CisgIGVuZCBjcml0aWNhbAorCisgIGNyaXRpY2FsIChzdGF0PWlzdGF0LCBl cnJtc2c9aXN0YXQpICEgeyBkZy1lcnJvciAibXVzdCBiZSBhIHNjYWxhciBD SEFSQUNURVIgdmFyaWFibGUiIH0KKyAgICBjb250aW51ZQorICBlbmQgY3Jp dGljYWwKKworICBjcml0aWNhbCAoc3RhdD1pc3RhdCwgZXJybXNnPWVyciwg ZXJybXNnPWVycikgISB7IGRnLWVycm9yICJSZWR1bmRhbnQgRVJSTVNHIiB9 CisgICAgY29udGludWUKKyAgZW5kIGNyaXRpY2FsCisKK2VuZApkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5X2NyaXRp Y2FsXzMuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5 X2NyaXRpY2FsXzMuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4yMzM3MTJjYzEyZQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheV9jcml0aWNhbF8zLmY5 MApAQCAtMCwwICsxLDIwIEBACishIFBSIDg3OTM5CishIHsgZGctZG8gY29t cGlsZSB9CishIHsgZGctb3B0aW9ucyAiLWZjb2FycmF5PWxpYiAtZmR1bXAt dHJlZS1vcmlnaW5hbCIgfQorIQorISBUZXN0IGNyaXRpY2FsIGNvbnN0cnVj dCB3aXRoIHN0YXQ9IGFuZCBlcnJtc2c9IHNwZWNpZmllcnMKKyEKKyAgdXNl LCBpbnRyaW5zaWMgOjogaXNvX2ZvcnRyYW5fZW52LCBvbmx5OiBpbnQxNgor ICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogaXN0YXQKKyAgaW50ZWdl cihraW5kPWludDE2KSA6OiBpc3RhdDE2CisgIGNoYXJhY3RlcihsZW49MzAp IDo6IGVycgorCisgIGNyaXRpY2FsIChzdGF0PWlzdGF0LCBlcnJtc2c9ZXJy KQorICAgIGNvbnRpbnVlCisgIGVuZCBjcml0aWNhbAorZW5kCisKKyEgeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfZ2ZvcnRyYW5fY2FmX2xvY2sg XFwoY2FmX3Rva2VuLlxbMC05XF0rLCAwLCAxLCAwQiwgJmlzdGF0LCAmZXJy LCAzMFxcKTsiICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAiaXN0YXQgPSBpc3RhdCAhPSA2MDAyIFxcPyBpc3RhdCAh PSA2MDAxIFxcPyBpc3RhdCA6IDYwMDIgOiA2MDAxOyIgIm9yaWdpbmFsIiB9 IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfZ2ZvcnRyYW5f Y2FmX3VubG9jayBcXChjYWZfdG9rZW4uXFswLTlcXSssIDAsIDEsICZzdGF0 LlxbMC05XF0rLCAwQiwgMFxcKTsiICJvcmlnaW5hbCIgfSB9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXlfY3JpdGlj YWxfNC5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXlf Y3JpdGljYWxfNC5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjJkNzNiOTBiZGUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5X2NyaXRpY2FsXzQuZjkw CkBAIC0wLDAgKzEsMjAgQEAKKyEgUFIgODc5MzkKKyEgeyBkZy1kbyBjb21w aWxlIH0KKyEgeyBkZy1vcHRpb25zICItZmNvYXJyYXk9bGliIC1mZHVtcC10 cmVlLW9yaWdpbmFsIiB9CishCishIFRlc3QgY3JpdGljYWwgY29uc3RydWN0 IHdpdGggKGludDE2KSBzdGF0PSBhbmQgZXJybXNnPSBzcGVjaWZpZXJzCish CisgIHVzZSwgaW50cmluc2ljIDo6IGlzb19mb3J0cmFuX2Vudiwgb25seTog aW50MTYKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyKGtpbmQ9aW50MTYp IDo6IGlzdGF0CisgIGNoYXJhY3RlcihsZW49MzApIDo6IGVycgorCisgIGNy aXRpY2FsIChzdGF0PWlzdGF0LCBlcnJtc2c9ZXJyKQorICAgIGNvbnRpbnVl CisgIGVuZCBjcml0aWNhbAorZW5kCisKKyEgeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJfZ2ZvcnRyYW5fY2FmX2xvY2sgXFwoY2FmX3Rva2VuLlxb MC05XF0rLCAwLCAxLCAwQiwgJnN0YXQuXFswLTlcXSssICZlcnIsIDMwXFwp OyIgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wICJzdGF0LlxbMC05XF0rID0gc3RhdC5cWzAtOVxdKyAhPSA2MDAyIFxc PyBzdGF0LlxbMC05XF0rICE9IDYwMDEgXFw/IHN0YXQuXFswLTlcXSsgOiA2 MDAyIDogNjAwMTsiICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiaXN0YXQgPSBcXChpbnRlZ2VyXFwoa2luZD1cWzAt OVxdK1xcKVxcKSBzdGF0LlxbMC05XF0rIiAib3JpZ2luYWwiIH0gfQorISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9nZm9ydHJhbl9jYWZfdW5s b2NrIFxcKGNhZl90b2tlbi5cWzAtOVxdKywgMCwgMSwgJnN0YXQuXFswLTlc XSssIDBCLCAwXFwpOyIgIm9yaWdpbmFsIiB9IH0KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdGVhbV9jaGFuZ2VfMi5mOTAgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3RlYW1fY2hhbmdlXzIuZjkwCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42ZTg5NzFj ZTMxZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvdGVhbV9jaGFuZ2VfMi5mOTAKQEAgLTAsMCArMSw0MSBAQAorISBQ UiA4NzkzOQorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMg Ii1mY29hcnJheT1saWIiIH0KKyEKKyEgVGVzdHMgY2hhbmdlIHRlYW0gc3lu dGF4CishCisgIHVzZSBpc29fZm9ydHJhbl9lbnYsIG9ubHkgOiB0ZWFtX3R5 cGUKKyAgaW1wbGljaXQgbm9uZQorICB0eXBlKHRlYW1fdHlwZSkgOjogdGVh bQorICBpbnRlZ2VyIDo6IG5ld190ZWFtLCBpc3RhdAorICBjaGFyYWN0ZXIo bGVuPTMwKSA6OiBlcnIKKworICBuZXdfdGVhbSA9IG1vZCh0aGlzX2ltYWdl KCksMikrMQorCisgIGZvcm0gdGVhbSAobmV3X3RlYW0sdGVhbSkKKworICBj aGFuZ2UgdGVhbSAhIHsgZGctZXJyb3IgIlN5bnRheCBlcnJvciBpbiBDSEFO R0UgVEVBTSBzdGF0ZW1lbnQiIH0KKyAgICBjb250aW51ZQorICBlbmQgdGVh bQorCisgIGNoYW5nZSB0ZWFtIChlcnIpICEgeyBkZy1lcnJvciAibXVzdCBi ZSBhIHNjYWxhciBURUFNX1RZUEUgZXhwcmVzc2lvbiIgfQorICAgIGNvbnRp bnVlCisgIGVuZCB0ZWFtCisKKyAgY2hhbmdlIHRlYW0gKHRlYW0sIHN0YXQ9 ZXJyKSAhIHsgZGctZXJyb3IgIm11c3QgYmUgYSBzY2FsYXIgSU5URUdFUiIg fQorICAgIGNvbnRpbnVlCisgIGVuZCB0ZWFtCisKKyAgY2hhbmdlIHRlYW0g KHRlYW0sIHN0YXQ9aXN0YXQsIHN0YXQ9aXN0YXQpICEgeyBkZy1lcnJvciAi UmVkdW5kYW50IFNUQVQiIH0KKyAgICBjb250aW51ZQorICBlbmQgdGVhbQor CisgIGNoYW5nZSB0ZWFtICh0ZWFtLCBzdGF0PWlzdGF0LCBlcnJtc2c9aXN0 YXQpICEgeyBkZy1lcnJvciAibXVzdCBiZSBhIHNjYWxhciBDSEFSQUNURVIg dmFyaWFibGUiIH0KKyAgICBjb250aW51ZQorICBlbmQgdGVhbQorCisgIGNo YW5nZSB0ZWFtICh0ZWFtLCBzdGF0PWlzdGF0LCBlcnJtc2c9c3RyLCBlcnJt c2c9c3RyKSAhIHsgZGctZXJyb3IgIlJlZHVuZGFudCBFUlJNU0ciIH0KKyAg ICBjb250aW51ZQorICBlbmQgdGVhbQorZW5kCisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdGVhbV9jaGFuZ2VfMy5mOTAgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3RlYW1fY2hhbmdlXzMuZjkwCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mODM1Y2Nk YjM1MAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvdGVhbV9jaGFuZ2VfMy5mOTAKQEAgLTAsMCArMSwyOCBAQAorISBQ UiA4NzkzOQorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMg Ii1mY29hcnJheT1saWIgLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKyEKKyEg VGVzdHMgY2hhbmdlIHRlYW0gc3RhdD0gYW5kIGVycm1zZz0gc3BlY2lmaWVy cworIQorICB1c2UgaXNvX2ZvcnRyYW5fZW52LCBvbmx5IDogdGVhbV90eXBl CisgIGltcGxpY2l0IG5vbmUKKyAgdHlwZSh0ZWFtX3R5cGUpIDo6IHRlYW0K KyAgaW50ZWdlciA6OiBuZXdfdGVhbSwgaXN0YXQKKyAgY2hhcmFjdGVyKGxl bj0zMCkgOjogZXJyCisKKyAgbmV3X3RlYW0gPSBtb2QodGhpc19pbWFnZSgp LDIpKzEKKworICBmb3JtIHRlYW0gKG5ld190ZWFtLHRlYW0pCisKKyAgY2hh bmdlIHRlYW0gKHRlYW0sIHN0YXQ9aXN0YXQpCisgICAgY29udGludWUKKyAg ZW5kIHRlYW0KKworICBjaGFuZ2UgdGVhbSAodGVhbSwgc3RhdD1pc3RhdCwg ZXJybXNnPWVycikKKyAgICBjb250aW51ZQorICBlbmQgdGVhbQorCitlbmQK KworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9nZm9ydHJhbl9j YWZfY2hhbmdlX3RlYW0gXFwoJnRlYW0sICZpc3RhdCwgMEIsIDBcXCkiICJv cmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi X2dmb3J0cmFuX2NhZl9jaGFuZ2VfdGVhbSBcXCgmdGVhbSwgJmlzdGF0LCAm ZXJyLCAzMFxcKSIgIm9yaWdpbmFsIiB9IH0KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdGVhbV9lbmRfMi5mOTAgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL3RlYW1fZW5kXzIuZjkwCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTUzZWRiMDU2ZgotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdGVh bV9lbmRfMi5mOTAKQEAgLTAsMCArMSwzMyBAQAorISBQUiA4NzkzOQorISB7 IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1mY29hcnJheT1s aWIiIH0KKyEKKyEgVGVzdHMgY2hhbmdlIHRlYW0gc3ludGF4CishCisgIHVz ZSBpc29fZm9ydHJhbl9lbnYsIG9ubHkgOiB0ZWFtX3R5cGUKKyAgaW1wbGlj aXQgbm9uZQorICB0eXBlKHRlYW1fdHlwZSkgOjogdGVhbQorICBpbnRlZ2Vy IDo6IG5ld190ZWFtLCBpc3RhdAorICBjaGFyYWN0ZXIobGVuPTMwKSA6OiBl cnIKKworICBuZXdfdGVhbSA9IG1vZCh0aGlzX2ltYWdlKCksMikrMQorCisg IGZvcm0gdGVhbSAobmV3X3RlYW0sdGVhbSkKKworICBjaGFuZ2UgdGVhbSAo dGVhbSkKKyAgICBjb250aW51ZQorICBlbmQgdGVhbSAoc3RhdD1lcnIpICEg eyBkZy1lcnJvciAibXVzdCBiZSBhIHNjYWxhciBJTlRFR0VSIiB9CisKKyAg Y2hhbmdlIHRlYW0gKHRlYW0pCisgICAgY29udGludWUKKyAgZW5kIHRlYW0g KHN0YXQ9aXN0YXQsIHN0YXQ9aXN0YXQpICEgeyBkZy1lcnJvciAiUmVkdW5k YW50IFNUQVQiIH0KKworICBjaGFuZ2UgdGVhbSAodGVhbSkKKyAgICBjb250 aW51ZQorICBlbmQgdGVhbSAoc3RhdD1pc3RhdCwgZXJybXNnPWlzdGF0KSAh IHsgZGctZXJyb3IgIm11c3QgYmUgYSBzY2FsYXIgQ0hBUkFDVEVSIHZhcmlh YmxlIiB9CisKKyAgY2hhbmdlIHRlYW0gKHRlYW0pCisgICAgY29udGludWUK KyAgZW5kIHRlYW0gKHN0YXQ9aXN0YXQsIGVycm1zZz1zdHIsIGVycm1zZz1z dHIpICEgeyBkZy1lcnJvciAiUmVkdW5kYW50IEVSUk1TRyIgfQorZW5kCisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdGVhbV9l bmRfMy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3RlYW1fZW5k XzMuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li42NjM4ZjkzMzUxMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvdGVhbV9lbmRfMy5mOTAKQEAgLTAsMCArMSwyOCBA QAorISBQUiA4NzkzOQorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9w dGlvbnMgIi1mY29hcnJheT1saWIgLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0K KyEKKyEgVGVzdHMgZW5kIHRlYW0gc3RhdD0gYW5kIGVycm1zZz0gc3BlY2lm aWVycworIQorICB1c2UgaXNvX2ZvcnRyYW5fZW52LCBvbmx5IDogdGVhbV90 eXBlCisgIGltcGxpY2l0IG5vbmUKKyAgdHlwZSh0ZWFtX3R5cGUpIDo6IHRl YW0KKyAgaW50ZWdlciA6OiBuZXdfdGVhbSwgaXN0YXQKKyAgY2hhcmFjdGVy KGxlbj0zMCkgOjogZXJyCisKKyAgbmV3X3RlYW0gPSBtb2QodGhpc19pbWFn ZSgpLDIpKzEKKworICBmb3JtIHRlYW0gKG5ld190ZWFtLHRlYW0pCisKKyAg Y2hhbmdlIHRlYW0gKHRlYW0pCisgICAgY29udGludWUKKyAgZW5kIHRlYW0g KHN0YXQ9aXN0YXQpCisKKyAgY2hhbmdlIHRlYW0gKHRlYW0pCisgICAgY29u dGludWUKKyAgZW5kIHRlYW0gKHN0YXQ9aXN0YXQsIGVycm1zZz1lcnIpCisK K2VuZAorCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX2dmb3J0 cmFuX2NhZl9lbmRfdGVhbSBcXCgmaXN0YXQsIDBCLCAwXFwpIiAib3JpZ2lu YWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9nZm9y dHJhbl9jYWZfZW5kX3RlYW0gXFwoJmlzdGF0LCAmZXJyLCAzMFxcKSIgIm9y aWdpbmFsIiB9IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvdGVhbV9mb3JtXzIuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy90ZWFtX2Zvcm1fMi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmM0N2MzNzJmMTQzCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy90ZWFtX2Zvcm1fMi5mOTAK QEAgLTAsMCArMSwyNiBAQAorISBQUiA4NzkzOQorISB7IGRnLWRvIGNvbXBp bGUgfQorISB7IGRnLW9wdGlvbnMgIi1mY29hcnJheT1saWIiIH0KKyEKKyEg VGVzdHMgZm9ybSB0ZWFtIHN5bnRheCBlcnJvcnMKKyEKKyAgdXNlIGlzb19m b3J0cmFuX2Vudiwgb25seSA6IHRlYW1fdHlwZQorICBpbXBsaWNpdCBub25l CisgIGludGVnZXIgOjogaXN0YXQsIG5ld190ZWFtCisgIGNoYXJhY3Rlcihs ZW49MzApIDo6IGVycgorICB0eXBlKHRlYW1fdHlwZSkgOjogdGVhbQorCisg ICBuZXdfdGVhbSA9IG1vZCh0aGlzX2ltYWdlKCksMikrMQorCisgIGZvcm0g dGVhbSAhIHsgZGctZXJyb3IgIlN5bnRheCBlcnJvciBpbiBGT1JNIFRFQU0g c3RhdGVtZW50IiB9CisgIGZvcm0gdGVhbSAobmV3X3RlYW0pICEgeyBkZy1l cnJvciAiU3ludGF4IGVycm9yIGluIEZPUk0gVEVBTSBzdGF0ZW1lbnQiIH0K KyAgZm9ybSB0ZWFtIChuZXdfdGVhbSxlcnIpICEgeyBkZy1lcnJvciAibXVz dCBiZSBhIHNjYWxhciBvZiB0eXBlIFRFQU1fVFlQRSIgfQorICBmb3JtIHRl YW0gKG5ld190ZWFtLHRlYW0saXN0YXQpICEgeyBkZy1lcnJvciAiU3ludGF4 IGVycm9yIGluIEZPUk0gVEVBTSBzdGF0ZW1lbnQiIH0KKyAgZm9ybSB0ZWFt IChuZXdfdGVhbSx0ZWFtLHN0YXQ9aXN0YXQsc3RhdD1pc3RhdCkgISB7IGRn LWVycm9yICJSZWR1bmRhbnQgU1RBVCIgfQorICBmb3JtIHRlYW0gKG5ld190 ZWFtLHRlYW0sc3RhdD1pc3RhdCxlcnJtc2c9aXN0YXQpICEgeyBkZy1lcnJv ciAibXVzdCBiZSBhIHNjYWxhciBDSEFSQUNURVIgdmFyaWFibGUiIH0KKyAg Zm9ybSB0ZWFtIChuZXdfdGVhbSx0ZWFtLHN0YXQ9aXN0YXQsZXJybXNnPWVy cixlcnJtc2c9ZXJyKSAhIHsgZGctZXJyb3IgIlJlZHVuZGFudCBFUlJNU0ci IH0KKyAgZm9ybSB0ZWFtIChuZXdfdGVhbSx0ZWFtLG5ld19pbmRleD0xLG5l d19pbmRleD0xKSAhIHsgZGctZXJyb3IgIlJlZHVuZGFudCBORVdfSU5ERVgi IH0KKyAgZm9ybSB0ZWFtIChuZXdfdGVhbSx0ZWFtLG5ld19pbmRleD1lcnIp ICEgeyBkZy1lcnJvciAibXVzdCBiZSBhIHNjYWxhciBJTlRFR0VSIiB9Cisg IGZvcm0gdGVhbSAobmV3X3RlYW0sdGVhbSxuZXdfaW5kZXg9MSxuZXdfaW5k ZXg9MSxzdGF0PWlzdGF0LGVycm1zZz1lcnIpICEgeyBkZy1lcnJvciAiUmVk dW5kYW50IE5FV19JTkRFWCIgfQorCitlbmQKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvdGVhbV9mb3JtXzMuZjkwIGIvZ2NjL3Rl c3RzdWl0ZS9nZm9ydHJhbi5kZy90ZWFtX2Zvcm1fMy5mOTAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ2OTU3OTMxOTA1Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy90 ZWFtX2Zvcm1fMy5mOTAKQEAgLTAsMCArMSwyOCBAQAorISBQUiA4NzkzOQor ISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1mY29hcnJh eT1saWIgLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKyEKKyEgVGVzdHMgZm9y bSB0ZWFtIHdpdGggc3RhdD0gYW5kIGVycm1zZz0KKyEKKyAgdXNlIGlzb19m b3J0cmFuX2Vudiwgb25seSA6IHRlYW1fdHlwZQorICBpbXBsaWNpdCBub25l CisgIGludGVnZXIgOjogaXN0YXQsIG5ld190ZWFtCisgIGNoYXJhY3Rlcihs ZW49MzApIDo6IGVyciA9ICJ1bmNoYW5nZWQiCisgIHR5cGUodGVhbV90eXBl KSA6OiB0ZWFtCisKKyAgbmV3X3RlYW0gPSBtb2QodGhpc19pbWFnZSgpLDIp KzEKKworICBmb3JtIHRlYW0gKG5ld190ZWFtLHRlYW0pCisgIGZvcm0gdGVh bSAobmV3X3RlYW0sdGVhbSxzdGF0PWlzdGF0KQorICBmb3JtIHRlYW0gKG5l d190ZWFtLHRlYW0sc3RhdD1pc3RhdCwgZXJybXNnPWVycikKKyAgZm9ybSB0 ZWFtIChuZXdfdGVhbSx0ZWFtLG5ld19pbmRleD0xKQorICBmb3JtIHRlYW0g KG5ld190ZWFtLHRlYW0sbmV3X2luZGV4PTEsc3RhdD1pc3RhdCkKKyAgZm9y bSB0ZWFtIChuZXdfdGVhbSx0ZWFtLG5ld19pbmRleD0xLHN0YXQ9aXN0YXQs ZXJybXNnPWVycikKK2VuZAorCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAiX2dmb3J0cmFuX2NhZl9mb3JtX3RlYW0gXFwobmV3X3RlYW0sICZ0 ZWFtLCAwQiwgMEIsIDBCLCAwXFwpIiAib3JpZ2luYWwiIH0gfQorISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9nZm9ydHJhbl9jYWZfZm9ybV90 ZWFtIFxcKG5ld190ZWFtLCAmdGVhbSwgMEIsICZpc3RhdCwgMEIsIDBcXCki ICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiX2dmb3J0cmFuX2NhZl9mb3JtX3RlYW0gXFwobmV3X3RlYW0sICZ0ZWFt LCAwQiwgJmlzdGF0LCAmZXJyLCAzMFxcKSIgIm9yaWdpbmFsIiB9IH0KKyEg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfZ2ZvcnRyYW5fY2FmX2Zv cm1fdGVhbSBcXChuZXdfdGVhbSwgJnRlYW0sIDEsIDBCLCAwQiwgMFxcKSIg Im9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJfZ2ZvcnRyYW5fY2FmX2Zvcm1fdGVhbSBcXChuZXdfdGVhbSwgJnRlYW0s IDEsICZpc3RhdCwgMEIsIDBcXCkiICJvcmlnaW5hbCIgfSB9CishIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX2dmb3J0cmFuX2NhZl9mb3JtX3Rl YW0gXFwobmV3X3RlYW0sICZ0ZWFtLCAxLCAmaXN0YXQsICZlcnIsIDMwXFwp IiAib3JpZ2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy90ZWFtX3N5bmNfMS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL3RlYW1fc3luY18xLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNWU0OTY4MTZjYzkKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3RlYW1fc3luY18x LmY5MApAQCAtMCwwICsxLDI0IEBACishIFBSIDg3OTM5CishIHsgZGctZG8g Y29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLWZjb2FycmF5PWxpYiIgfQor IQorISBUZXN0IHN5bmMgdGVhbSBzeW50YXggZXJyb3JzCishCisgIHVzZSBp c29fZm9ydHJhbl9lbnYsIG9ubHkgOiB0ZWFtX3R5cGUKKyAgaW1wbGljaXQg bm9uZQorICBpbnRlZ2VyIDo6IGlzdGF0CisgIGNoYXJhY3RlcihsZW49MzAp IDo6IGVycgorICB0eXBlKHRlYW1fdHlwZSkgOjogdGVhbQorCisgIGZvcm0g dGVhbSAobW9kKHRoaXNfaW1hZ2UoKSwyKSsxLCB0ZWFtKQorCisgIGNoYW5n ZSB0ZWFtICh0ZWFtKQorICAgIHN5bmMgdGVhbSAhIHsgZGctZXJyb3IgIlN5 bnRheCBlcnJvciBpbiBTWU5DIFRFQU0gc3RhdGVtZW50IiB9CisgICAgc3lu YyB0ZWFtIChlcnIpICEgeyBkZy1lcnJvciAibXVzdCBiZSBhIHNjYWxhciBU RUFNX1RZUEUgZXhwcmVzc2lvbiIgfQorICAgIHN5bmMgdGVhbSAodGVhbSwg aXN0YXQpICEgeyBkZy1lcnJvciAiU3ludGF4IGVycm9yIGluIFNZTkMgVEVB TSBzdGF0ZW1lbnQiIH0KKyAgICBzeW5jIHRlYW0gKHRlYW0sIHN0YXQ9ZXJy KSAhIHsgZGctZXJyb3IgIm11c3QgYmUgYSBzY2FsYXIgSU5URUdFUiIgfQor ICAgIHN5bmMgdGVhbSAodGVhbSwgc3RhdD1pc3RhdCwgc3RhdD1pc3RhdCkg ISB7IGRnLWVycm9yICJSZWR1bmRhbnQgU1RBVCIgfQorICAgIHN5bmMgdGVh bSAodGVhbSwgc3RhdD1pc3RhdCwgZXJybXNnPWlzdGF0KSAhIHsgZGctZXJy b3IgIm11c3QgYmUgYSBzY2FsYXIgQ0hBUkFDVEVSIHZhcmlhYmxlIiB9Cisg ICAgc3luYyB0ZWFtICh0ZWFtLCBzdGF0PWlzdGF0LCBlcnJtc2c9ZXJyLCBl cnJtc2c9ZXJyKSAhIHsgZGctZXJyb3IgIlJlZHVuZGFudCBFUlJNU0ciIH0K KyAgZW5kIHRlYW0KK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy90ZWFtX3N5bmNfMi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL3RlYW1fc3luY18yLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOTg4NGU0ZTY4NTcKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3RlYW1fc3luY18y LmY5MApAQCAtMCwwICsxLDI0IEBACishIFBSIDg3OTM5CishIHsgZGctZG8g Y29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLWZjb2FycmF5PWxpYiAtZmR1 bXAtdHJlZS1vcmlnaW5hbCIgfQorIQorISBUZXN0IHN5bmMgdGVhbSBzdGF0 ZW1lbnQKKyEKKyAgdXNlIGlzb19mb3J0cmFuX2Vudiwgb25seSA6IHRlYW1f dHlwZQorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIgOjogaXN0YXQKKyAg dHlwZSh0ZWFtX3R5cGUpIDo6IHRlYW0KKyAgY2hhcmFjdGVyKGxlbj0zMCkg OjogZXJyID0gInVuY2hhbmdlZCIKKworICBmb3JtIHRlYW0gKG1vZCh0aGlz X2ltYWdlKCksMikrMSwgdGVhbSkKKworICBjaGFuZ2UgdGVhbSAodGVhbSkK KyAgICBzeW5jIHRlYW0gKHRlYW0pCisgICAgc3luYyB0ZWFtICh0ZWFtLCBz dGF0PWlzdGF0KQorICAgIHN5bmMgdGVhbSAodGVhbSwgc3RhdD1pc3RhdCwg ZXJybXNnPWVycikKKyAgZW5kIHRlYW0KK2VuZAorCishIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiX2dmb3J0cmFuX2NhZl9zeW5jX3RlYW0gXFwo JnRlYW0sIDBCLCAwQiwgMFxcKSIgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfZ2ZvcnRyYW5fY2FmX3N5bmNfdGVh bSBcXCgmdGVhbSwgJmlzdGF0LCAwQiwgMFxcKSIgIm9yaWdpbmFsIiB9IH0K KyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJfZ2ZvcnRyYW5fY2Fm X3N5bmNfdGVhbSBcXCgmdGVhbSwgJmlzdGF0LCAmZXJyLCAzMFxcKSIgIm9y aWdpbmFsIiB9IH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NhZi9saWJj YWYuaCBiL2xpYmdmb3J0cmFuL2NhZi9saWJjYWYuaAppbmRleCBkMWNmYThk ZDkxNC4uMDlkZWIyODc3M2QgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2Nh Zi9saWJjYWYuaAorKysgYi9saWJnZm9ydHJhbi9jYWYvbGliY2FmLmgKQEAg LTUwLDcgKzUwLDggQEAgdHlwZWRlZiBlbnVtCiAgIENBRl9TVEFUX0xPQ0tF RCwKICAgQ0FGX1NUQVRfTE9DS0VEX09USEVSX0lNQUdFLAogICBDQUZfU1RB VF9TVE9QUEVEX0lNQUdFID0gNjAwMCwKLSAgQ0FGX1NUQVRfRkFJTEVEX0lN QUdFICA9IDYwMDEKKyAgQ0FGX1NUQVRfRkFJTEVEX0lNQUdFICA9IDYwMDEs CisgIENBRl9TVEFUX1VOTE9DS0VEX0ZBSUxFRF9JTUFHRSA9IDYwMDIKIH0K IGNhZl9zdGF0X2NvZGVzX3Q7CiAK --000000000000524393057f9c4eeb--