From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 93271 invoked by alias); 10 Aug 2016 21:58:03 -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 93248 invoked by uid 89); 10 Aug 2016 21:58:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=Outside, 1,14, EXPR_LOCATION, dgmessage X-HELO: mail-oi0-f51.google.com Received: from mail-oi0-f51.google.com (HELO mail-oi0-f51.google.com) (209.85.218.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 10 Aug 2016 21:58:00 +0000 Received: by mail-oi0-f51.google.com with SMTP id f189so77708598oig.3 for ; Wed, 10 Aug 2016 14:58:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=743LpsJPSFv3DNAS7tebLHZnJH50k21r4jhI/vE1lFg=; b=IchNzD5PNZaU7GisCOFUkU56aKwRcdyWjcbYH4pYJ1RS7wzpDhLX8TqtXhsGiD6mP5 2ARoNrxniCf0P5a2xdB5P6aW3GpogTCNoyMyQBRaJBd2+3QiMRxPpmi59J3at9mkVbhU x9CdcBcWpwN1gMg7zoKHJcQ4MFLpZe8tPn1537dIEqEergd5XiAcJlMbrAku5RpJPCdA iyHGJtsAVXnMDjPD1QRrHzB4sdeBVNjCmYbJYCnD3OM2XJM+uKY6SeckjjrEXLKivXcR aPjM8kC0rl7VwBBBVh3uxyZ9gjuHtxzgeAkT1+PasiN7Re9pim3xuWJouCKGj8pr5xht W3/g== X-Gm-Message-State: AEkoousWnjC5dr9BAX1f+iC/xjuFxgbbgZbsP8Lhwm5p1Ltn5IU0FuFf7SyoYb72NTg/Q4D1qf747wQwYOGE+saH X-Received: by 10.157.16.100 with SMTP id o33mr56297oto.90.1470866278829; Wed, 10 Aug 2016 14:57:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.105.169 with HTTP; Wed, 10 Aug 2016 14:57:38 -0700 (PDT) From: Jason Merrill Date: Wed, 10 Aug 2016 21:58:00 -0000 Message-ID: Subject: C++ PATCH for C++17 constexpr if To: gcc-patches List Cc: Ville Voutilainen Content-Type: multipart/mixed; boundary=001a1134fd2610094f0539bebe72 X-IsSubscribed: yes X-SW-Source: 2016-08/txt/msg00870.txt.bz2 --001a1134fd2610094f0539bebe72 Content-Type: text/plain; charset=UTF-8 Content-length: 442 This patch implements the C++17 constexpr if feature. The primary use is in templates, where the non-taken branch of the constexpr if-statement is not instantiated. But it can also be used outside of templates, where the branches are parsed and discarded, and discarded return statements are not used for return type deduction. constexpr if is also active with a pedwarn in C++11 and C++14. Tested x86_64-pc-linux-gnu, applying to trunk. --001a1134fd2610094f0539bebe72 Content-Type: text/plain; charset=US-ASCII; name="cx-if.diff" Content-Disposition: attachment; filename="cx-if.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_irpf8g880 Content-length: 21416 Y29tbWl0IDUwNGE4YzcwNDE1M2VkYzU1OWU3MTA4MzIxODkyZTc4MDljZGNj MmYKQXV0aG9yOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpE YXRlOiAgIFdlZCBBdWcgMTAgMTQ6MjY6MDEgMjAxNiAtMDQwMAoKICAgIAlJ bXBsZW1lbnQgQysrMTcgY29uc3RleHByIGlmLgogICAgCiAgICAJKiBjcC10 cmVlLmggKElGX1NUTVRfQ09OU1RFWFBSX1ApOiBOZXcuCiAgICAJKiBuYW1l LWxvb2t1cC5jIChwdXNoX3RvX3RvcF9sZXZlbCwgcG9wX2Zyb21fdG9wX2xl dmVsXzEpOiBIYW5kbGUgaXQuCiAgICAJKiBwYXJzZXIuaCAoc3RydWN0IGNw X3BhcnNlcik6IEFkZCBpbl9kaXNjYXJkZWRfc3RtdCBmaWVsZC4KICAgIAkq IHBhcnNlci5jIChjcF9wYXJzZXJfc2VsZWN0aW9uX3N0YXRlbWVudCk6IEhh bmRsZSAnaWYgY29uc3RleHByJy4KICAgIAkoY3BfcGFyc2VyX2p1bXBfc3Rh dGVtZW50KTogQXZvaWQgZGVkdWNpbmcgZnJvbSBhIGRpc2NhcmRlZCByZXR1 cm4uCiAgICAJKiBwdC5jICh0c3Vic3RfZXhwcik6IE9ubHkgaW5zdGFudGlh dGUgdGFrZW4gYnJhbmNoIG9mIGNvbnN0ZXhwciBpZi4KICAgIAkqIHNlbWFu dGljcy5jIChiZWdpbl9pZl9zdG10KTogU2V0IHRoZSBiaW5kaW5nIGxldmVs IHRoaXNfZW50aXR5LgogICAgCShmaW5pc2hfaWZfc3RtdF9jb25kKTogUmVx dWlyZSB0aGUgY29uZGl0aW9uIG9mIGEKICAgIAljb25zdGV4cHIgaWYgdG8g YmUgY29uc3RhbnQuCiAgICAJKiBkZWNsLmMgKGxldmVsX2Zvcl9jb25zdGV4 cHJfaWYpOiBOZXcuCiAgICAJKG5hbWVkX2xhYmVsX2VudHJ5KTogQWRkIGlu X2NvbnN0ZXhwcl9pZiBmaWVsZC4KICAgIAkocG9wbGV2ZWxfbmFtZWRfbGFi ZWxfMSk6IFNldCBpdC4KICAgIAkoY2hlY2tfZ290byk6IENoZWNrIGl0Lgog ICAgCShjaGVja19wcmV2aW91c19nb3RvXzEpOiBDaGVjayBsZXZlbF9mb3Jf Y29uc3RleHByX2lmLgoKZGlmZiAtLWdpdCBhL2djYy9jcC9jcC10cmVlLmgg Yi9nY2MvY3AvY3AtdHJlZS5oCmluZGV4IGY5OGIxYzQuLjhhMzJmMTcgMTAw NjQ0Ci0tLSBhL2djYy9jcC9jcC10cmVlLmgKKysrIGIvZ2NjL2NwL2NwLXRy ZWUuaApAQCAtMTQ1LDYgKzE0NSw3IEBAIG9wZXJhdG9yID09IChjb25zdCBj cF9leHByICZsaHMsIHRyZWUgcmhzKQogICAgICAgV0lMRENBUkRfUEFDS19Q IChpbiBXSUxEQ0FSRF9ERUNMKQogICAgICAgQkxPQ0tfT1VURVJfQ1VSTFlf QlJBQ0VfUCAoaW4gQkxPQ0spCiAgICAgICBGT0xEX0VYUFJfTU9ET1BfUCAo Kl9GT0xEX0VYUFIpCisgICAgICBJRl9TVE1UX0NPTlNURVhQUl9QIChJRl9T VE1UKQogICAgMTogSURFTlRJRklFUl9WSVJUVUFMX1AgKGluIElERU5USUZJ RVJfTk9ERSkKICAgICAgIFRJX1BFTkRJTkdfVEVNUExBVEVfRkxBRy4KICAg ICAgIFRFTVBMQVRFX1BBUk1TX0ZPUl9JTkxJTkUuCkBAIC00NTMwLDYgKzQ1 MzEsNyBAQCBtb3JlX2FnZ3JfaW5pdF9leHByX2FyZ3NfcCAoY29uc3QgYWdn cl9pbml0X2V4cHJfYXJnX2l0ZXJhdG9yICppdGVyKQogI2RlZmluZSBUSEVO X0NMQVVTRShOT0RFKQlUUkVFX09QRVJBTkQgKElGX1NUTVRfQ0hFQ0sgKE5P REUpLCAxKQogI2RlZmluZSBFTFNFX0NMQVVTRShOT0RFKQlUUkVFX09QRVJB TkQgKElGX1NUTVRfQ0hFQ0sgKE5PREUpLCAyKQogI2RlZmluZSBJRl9TQ09Q RShOT0RFKQkJVFJFRV9PUEVSQU5EIChJRl9TVE1UX0NIRUNLIChOT0RFKSwg MykKKyNkZWZpbmUgSUZfU1RNVF9DT05TVEVYUFJfUChOT0RFKSBUUkVFX0xB TkdfRkxBR18wIChJRl9TVE1UX0NIRUNLIChOT0RFKSkKIAogLyogV0hJTEVf U1RNVCBhY2Nlc3NvcnMuIFRoZXNlIGdpdmUgYWNjZXNzIHRvIHRoZSBjb25k aXRpb24gb2YgdGhlCiAgICB3aGlsZSBzdGF0ZW1lbnQgYW5kIHRoZSBib2R5 IG9mIHRoZSB3aGlsZSBzdGF0ZW1lbnQsIHJlc3BlY3RpdmVseS4gICovCkBA IC02MzAzLDcgKzYzMDUsNyBAQCBleHRlcm4gdm9pZCBhZGRfZGVjbF9leHBy CQkJKHRyZWUpOwogZXh0ZXJuIHRyZWUgbWF5YmVfY2xlYW51cF9wb2ludF9l eHByX3ZvaWQJKHRyZWUpOwogZXh0ZXJuIHRyZWUgZmluaXNoX2V4cHJfc3Rt dAkJCSh0cmVlKTsKIGV4dGVybiB0cmVlIGJlZ2luX2lmX3N0bXQJCQkodm9p ZCk7Ci1leHRlcm4gdm9pZCBmaW5pc2hfaWZfc3RtdF9jb25kCQkJKHRyZWUs IHRyZWUpOworZXh0ZXJuIHRyZWUgZmluaXNoX2lmX3N0bXRfY29uZAkJCSh0 cmVlLCB0cmVlKTsKIGV4dGVybiB0cmVlIGZpbmlzaF90aGVuX2NsYXVzZQkJ CSh0cmVlKTsKIGV4dGVybiB2b2lkIGJlZ2luX2Vsc2VfY2xhdXNlCQkJKHRy ZWUpOwogZXh0ZXJuIHZvaWQgZmluaXNoX2Vsc2VfY2xhdXNlCQkJKHRyZWUp OwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2RlY2wuYyBiL2djYy9jcC9kZWNsLmMK aW5kZXggNDUyODZkMC4uNDNjZjNkZiAxMDA2NDQKLS0tIGEvZ2NjL2NwL2Rl Y2wuYworKysgYi9nY2MvY3AvZGVjbC5jCkBAIC0yMTgsNiArMjE4LDcgQEAg c3RydWN0IEdUWSgoZm9yX3VzZXIpKSBuYW1lZF9sYWJlbF9lbnRyeSB7CiAg IGJvb2wgaW5fY2F0Y2hfc2NvcGU7CiAgIGJvb2wgaW5fb21wX3Njb3BlOwog ICBib29sIGluX3RyYW5zYWN0aW9uX3Njb3BlOworICBib29sIGluX2NvbnN0 ZXhwcl9pZjsKIH07CiAKICNkZWZpbmUgbmFtZWRfbGFiZWxzIGNwX2Z1bmN0 aW9uX2NoYWluLT54X25hbWVkX2xhYmVscwpAQCAtNDc2LDYgKzQ3NywxNiBA QCBvYmpjX21hcmtfbG9jYWxzX3ZvbGF0aWxlICh2b2lkICplbmNsb3Npbmdf YmxrKQogICAgIH0KIH0KIAorLyogVHJ1ZSBpZiBCIGlzIHRoZSBsZXZlbCBm b3IgdGhlIGNvbmRpdGlvbiBvZiBhIGNvbnN0ZXhwciBpZi4gICovCisKK3N0 YXRpYyBib29sCitsZXZlbF9mb3JfY29uc3RleHByX2lmIChjcF9iaW5kaW5n X2xldmVsICpiKQoreworICByZXR1cm4gKGItPmtpbmQgPT0gc2tfY29uZCAm JiBiLT50aGlzX2VudGl0eQorCSAgJiYgVFJFRV9DT0RFIChiLT50aGlzX2Vu dGl0eSkgPT0gSUZfU1RNVAorCSAgJiYgSUZfU1RNVF9DT05TVEVYUFJfUCAo Yi0+dGhpc19lbnRpdHkpKTsKK30KKwogLyogVXBkYXRlIGRhdGEgZm9yIGRl ZmluZWQgYW5kIHVuZGVmaW5lZCBsYWJlbHMgd2hlbiBsZWF2aW5nIGEgc2Nv cGUuICAqLwogCiBpbnQKQEAgLTUxMiw2ICs1MjMsMTAgQEAgcG9wbGV2ZWxf bmFtZWRfbGFiZWxfMSAobmFtZWRfbGFiZWxfZW50cnkgKipzbG90LCBjcF9i aW5kaW5nX2xldmVsICpibCkKIAljYXNlIHNrX3RyYW5zYWN0aW9uOgogCSAg ZW50LT5pbl90cmFuc2FjdGlvbl9zY29wZSA9IHRydWU7CiAJICBicmVhazsK KwljYXNlIHNrX2Jsb2NrOgorCSAgaWYgKGxldmVsX2Zvcl9jb25zdGV4cHJf aWYgKGJsLT5sZXZlbF9jaGFpbikpCisJICAgIGVudC0+aW5fY29uc3RleHBy X2lmID0gdHJ1ZTsKKwkgIGJyZWFrOwogCWRlZmF1bHQ6CiAJICBicmVhazsK IAl9CkBAIC0zMDQ3LDcgKzMwNjIsNyBAQCBjaGVja19wcmV2aW91c19nb3Rv XzEgKHRyZWUgZGVjbCwgY3BfYmluZGluZ19sZXZlbCogbGV2ZWwsIHRyZWUg bmFtZXMsCiAgIGNwX2JpbmRpbmdfbGV2ZWwgKmI7CiAgIGJvb2wgY29tcGxh aW5lZCA9IGZhbHNlOwogICBpbnQgaWRlbnRpZmllZCA9IDA7Ci0gIGJvb2wg c2F3X2VoID0gZmFsc2UsIHNhd19vbXAgPSBmYWxzZSwgc2F3X3RtID0gZmFs c2U7CisgIGJvb2wgc2F3X2VoID0gZmFsc2UsIHNhd19vbXAgPSBmYWxzZSwg c2F3X3RtID0gZmFsc2UsIHNhd19jeGlmID0gZmFsc2U7CiAKICAgaWYgKGV4 aXRlZF9vbXApCiAgICAgewpAQCAtMzEzMiw2ICszMTQ3LDIwIEBAIGNoZWNr X3ByZXZpb3VzX2dvdG9fMSAodHJlZSBkZWNsLCBjcF9iaW5kaW5nX2xldmVs KiBsZXZlbCwgdHJlZSBuYW1lcywKIAkJICAgICIgIGVudGVycyBzeW5jaHJv bml6ZWQgb3IgYXRvbWljIHN0YXRlbWVudCIpOwogCSAgc2F3X3RtID0gdHJ1 ZTsKIAl9CisgICAgICBpZiAoIXNhd19jeGlmICYmIGItPmtpbmQgPT0gc2tf YmxvY2sKKwkgICYmIGxldmVsX2Zvcl9jb25zdGV4cHJfaWYgKGItPmxldmVs X2NoYWluKSkKKwl7CisJICBpZiAoaWRlbnRpZmllZCA8IDIpCisJICAgIHsK KwkgICAgICBjb21wbGFpbmVkID0gaWRlbnRpZnlfZ290byAoZGVjbCwgaW5w dXRfbG9jYXRpb24sIGxvY3VzLAorCQkJCQkgIERLX0VSUk9SKTsKKwkgICAg ICBpZGVudGlmaWVkID0gMjsKKwkgICAgfQorCSAgaWYgKGNvbXBsYWluZWQp CisJICAgIGluZm9ybSAoRVhQUl9MT0NBVElPTiAoYi0+bGV2ZWxfY2hhaW4t PnRoaXNfZW50aXR5KSwKKwkJICAgICIgIGVudGVycyBjb25zdGV4cHIgaWYg c3RhdGVtZW50Iik7CisJICBzYXdfY3hpZiA9IHRydWU7CisJfQogICAgIH0K IAogICByZXR1cm4gIWlkZW50aWZpZWQ7CkBAIC0zMjAwLDEwICszMjI5LDEx IEBAIGNoZWNrX2dvdG8gKHRyZWUgZGVjbCkKICAgICB9CiAKICAgaWYgKGVu dC0+aW5fdHJ5X3Njb3BlIHx8IGVudC0+aW5fY2F0Y2hfc2NvcGUgfHwgZW50 LT5pbl90cmFuc2FjdGlvbl9zY29wZQorICAgICAgfHwgZW50LT5pbl9jb25z dGV4cHJfaWYKICAgICAgIHx8IGVudC0+aW5fb21wX3Njb3BlIHx8ICF2ZWNf c2FmZV9pc19lbXB0eSAoZW50LT5iYWRfZGVjbHMpKQogICAgIHsKICAgICAg IGRpYWdub3N0aWNfdCBkaWFnX2tpbmQgPSBES19QRVJNRVJST1I7Ci0gICAg ICBpZiAoZW50LT5pbl90cnlfc2NvcGUgfHwgZW50LT5pbl9jYXRjaF9zY29w ZQorICAgICAgaWYgKGVudC0+aW5fdHJ5X3Njb3BlIHx8IGVudC0+aW5fY2F0 Y2hfc2NvcGUgfHwgZW50LT5pbl9jb25zdGV4cHJfaWYKIAkgIHx8IGVudC0+ aW5fdHJhbnNhY3Rpb25fc2NvcGUgfHwgZW50LT5pbl9vbXBfc2NvcGUpCiAJ ZGlhZ19raW5kID0gREtfRVJST1I7CiAgICAgICBjb21wbGFpbmVkID0gaWRl bnRpZnlfZ290byAoZGVjbCwgREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wp LApAQCAtMzI0OCw2ICszMjc4LDggQEAgY2hlY2tfZ290byAodHJlZSBkZWNs KQogCWluZm9ybSAoaW5wdXRfbG9jYXRpb24sICIgIGVudGVycyBjYXRjaCBi bG9jayIpOwogICAgICAgZWxzZSBpZiAoZW50LT5pbl90cmFuc2FjdGlvbl9z Y29wZSkKIAlpbmZvcm0gKGlucHV0X2xvY2F0aW9uLCAiICBlbnRlcnMgc3lu Y2hyb25pemVkIG9yIGF0b21pYyBzdGF0ZW1lbnQiKTsKKyAgICAgIGVsc2Ug aWYgKGVudC0+aW5fY29uc3RleHByX2lmKQorCWluZm9ybSAoaW5wdXRfbG9j YXRpb24sICIgIGVudGVycyBjb25zdGV4cHIgaWYgc3RhdGVtZW50Iik7CiAg ICAgfQogCiAgIGlmIChlbnQtPmluX29tcF9zY29wZSkKZGlmZiAtLWdpdCBh L2djYy9jcC9wYXJzZXIuYyBiL2djYy9jcC9wYXJzZXIuYwppbmRleCA2ZGI1 ZTg0Li4xYjkzNTllIDEwMDY0NAotLS0gYS9nY2MvY3AvcGFyc2VyLmMKKysr IGIvZ2NjL2NwL3BhcnNlci5jCkBAIC0xMDg5OSw2ICsxMDg5OSwxOCBAQCBj cF9wYXJzZXJfc2VsZWN0aW9uX3N0YXRlbWVudCAoY3BfcGFyc2VyKiBwYXJz ZXIsIGJvb2wgKmlmX3AsCiAJdHJlZSBzdGF0ZW1lbnQ7CiAJdHJlZSBjb25k aXRpb247CiAKKwlib29sIGN4ID0gZmFsc2U7CisJaWYgKGtleXdvcmQgPT0g UklEX0lGCisJICAgICYmIGNwX2xleGVyX25leHRfdG9rZW5faXNfa2V5d29y ZCAocGFyc2VyLT5sZXhlciwKKwkJCQkJICAgICAgIFJJRF9DT05TVEVYUFIp KQorCSAgeworCSAgICBjeCA9IHRydWU7CisJICAgIGNwX3Rva2VuICp0b2sg PSBjcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKwkg ICAgaWYgKGN4eF9kaWFsZWN0IDwgY3h4MXogJiYgIWluX3N5c3RlbV9oZWFk ZXJfYXQgKHRvay0+bG9jYXRpb24pKQorCSAgICAgIHBlZHdhcm4gKHRvay0+ bG9jYXRpb24sIDAsICIlPGlmIGNvbnN0ZXhwciU+IG9ubHkgYXZhaWxhYmxl ICIKKwkJICAgICAgICJ3aXRoIC1zdGQ9YysrMXogb3IgLXN0ZD1nbnUrKzF6 Iik7CisJICB9CisKIAkvKiBMb29rIGZvciB0aGUgYCgnLiAgKi8KIAlpZiAo IWNwX3BhcnNlcl9yZXF1aXJlIChwYXJzZXIsIENQUF9PUEVOX1BBUkVOLCBS VF9PUEVOX1BBUkVOKSkKIAkgIHsKQEAgLTEwOTA4LDcgKzEwOTIwLDEwIEBA IGNwX3BhcnNlcl9zZWxlY3Rpb25fc3RhdGVtZW50IChjcF9wYXJzZXIqIHBh cnNlciwgYm9vbCAqaWZfcCwKIAogCS8qIEJlZ2luIHRoZSBzZWxlY3Rpb24t c3RhdGVtZW50LiAgKi8KIAlpZiAoa2V5d29yZCA9PSBSSURfSUYpCi0JICBz dGF0ZW1lbnQgPSBiZWdpbl9pZl9zdG10ICgpOworCSAgeworCSAgICBzdGF0 ZW1lbnQgPSBiZWdpbl9pZl9zdG10ICgpOworCSAgICBJRl9TVE1UX0NPTlNU RVhQUl9QIChzdGF0ZW1lbnQpID0gY3g7CisJICB9CiAJZWxzZQogCSAgc3Rh dGVtZW50ID0gYmVnaW5fc3dpdGNoX3N0bXQgKCk7CiAKQEAgLTEwOTI1LDcg KzEwOTQwLDcgQEAgY3BfcGFyc2VyX3NlbGVjdGlvbl9zdGF0ZW1lbnQgKGNw X3BhcnNlciogcGFyc2VyLCBib29sICppZl9wLAogCSAgICB1bnNpZ25lZCBj aGFyIGluX3N0YXRlbWVudDsKIAogCSAgICAvKiBBZGQgdGhlIGNvbmRpdGlv bi4gICovCi0JICAgIGZpbmlzaF9pZl9zdG10X2NvbmQgKGNvbmRpdGlvbiwg c3RhdGVtZW50KTsKKwkgICAgY29uZGl0aW9uID0gZmluaXNoX2lmX3N0bXRf Y29uZCAoY29uZGl0aW9uLCBzdGF0ZW1lbnQpOwogCiAJICAgIGlmICh3YXJu X2R1cGxpY2F0ZWRfY29uZCkKIAkgICAgICB3YXJuX2R1cGxpY2F0ZWRfY29u ZF9hZGRfb3Jfd2FybiAodG9rZW4tPmxvY2F0aW9uLCBjb25kaXRpb24sCkBA IC0xMDkzNCwxNiArMTA5NDksNDQgQEAgY3BfcGFyc2VyX3NlbGVjdGlvbl9z dGF0ZW1lbnQgKGNwX3BhcnNlciogcGFyc2VyLCBib29sICppZl9wLAogCSAg ICAvKiBQYXJzZSB0aGUgdGhlbi1jbGF1c2UuICAqLwogCSAgICBpbl9zdGF0 ZW1lbnQgPSBwYXJzZXItPmluX3N0YXRlbWVudDsKIAkgICAgcGFyc2VyLT5p bl9zdGF0ZW1lbnQgfD0gSU5fSUZfU1RNVDsKKworCSAgICAvKiBPdXRzaWRl IGEgdGVtcGxhdGUsIHRoZSBub24tc2VsZWN0ZWQgYnJhbmNoIG9mIGEgY29u c3RleHByCisJICAgICAgIGlmIGlzIGEgJ2Rpc2NhcmRlZCBzdGF0ZW1lbnQn LCBpLmUuIHVuZXZhbHVhdGVkLiAgKi8KKwkgICAgYm9vbCB3YXNfZGlzY2Fy ZGVkID0gcGFyc2VyLT5pbl9kaXNjYXJkZWRfc3RtdDsKKwkgICAgYm9vbCBk aXNjYXJkX3RoZW4gPSAoY3ggJiYgIXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVj bAorCQkJCSAmJiBpbnRlZ2VyX3plcm9wIChjb25kaXRpb24pKTsKKwkgICAg aWYgKGRpc2NhcmRfdGhlbikKKwkgICAgICB7CisJCXBhcnNlci0+aW5fZGlz Y2FyZGVkX3N0bXQgPSB0cnVlOworCQkrK2NfaW5oaWJpdF9ldmFsdWF0aW9u X3dhcm5pbmdzOworCSAgICAgIH0KKwogCSAgICBjcF9wYXJzZXJfaW1wbGlj aXRseV9zY29wZWRfc3RhdGVtZW50IChwYXJzZXIsICZuZXN0ZWRfaWYsCiAJ CQkJCQkgICBndWFyZF90aW5mbyk7CisKIAkgICAgcGFyc2VyLT5pbl9zdGF0 ZW1lbnQgPSBpbl9zdGF0ZW1lbnQ7CiAKIAkgICAgZmluaXNoX3RoZW5fY2xh dXNlIChzdGF0ZW1lbnQpOwogCisJICAgIGlmIChkaXNjYXJkX3RoZW4pCisJ ICAgICAgeworCQlUSEVOX0NMQVVTRSAoc3RhdGVtZW50KSA9IE5VTExfVFJF RTsKKwkJcGFyc2VyLT5pbl9kaXNjYXJkZWRfc3RtdCA9IHdhc19kaXNjYXJk ZWQ7CisJCS0tY19pbmhpYml0X2V2YWx1YXRpb25fd2FybmluZ3M7CisJICAg ICAgfQorCiAJICAgIC8qIElmIHRoZSBuZXh0IHRva2VuIGlzIGBlbHNlJywg cGFyc2UgdGhlIGVsc2UtY2xhdXNlLiAgKi8KIAkgICAgaWYgKGNwX2xleGVy X25leHRfdG9rZW5faXNfa2V5d29yZCAocGFyc2VyLT5sZXhlciwKIAkJCQkJ CVJJRF9FTFNFKSkKIAkgICAgICB7CisJCWJvb2wgZGlzY2FyZF9lbHNlID0g KGN4ICYmICFwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wKKwkJCQkgICAgICYm IGludGVnZXJfbm9uemVyb3AgKGNvbmRpdGlvbikpOworCQlpZiAoZGlzY2Fy ZF9lbHNlKQorCQkgIHsKKwkJICAgIHBhcnNlci0+aW5fZGlzY2FyZGVkX3N0 bXQgPSB0cnVlOworCQkgICAgKytjX2luaGliaXRfZXZhbHVhdGlvbl93YXJu aW5nczsKKwkJICB9CisKIAkJZ3VhcmRfdGluZm8KIAkJICA9IGdldF90b2tl bl9pbmRlbnRfaW5mbyAoY3BfbGV4ZXJfcGVla190b2tlbiAocGFyc2VyLT5s ZXhlcikpOwogCQkvKiBDb25zdW1lIHRoZSBgZWxzZScga2V5d29yZC4gICov CkBAIC0xMDk5Myw2ICsxMTAzNiwxMyBAQCBjcF9wYXJzZXJfc2VsZWN0aW9u X3N0YXRlbWVudCAoY3BfcGFyc2VyKiBwYXJzZXIsIGJvb2wgKmlmX3AsCiAJ CSAgIHdoZW4gd2UgZ2V0IGJhY2sgdXAgdG8gdGhlIHBhcmVudCBpZiBzdGF0 ZW1lbnQuICAqLwogCQlpZiAoaWZfcCAhPSBOVUxMKQogCQkgICppZl9wID0g dHJ1ZTsKKworCQlpZiAoZGlzY2FyZF9lbHNlKQorCQkgIHsKKwkJICAgIEVM U0VfQ0xBVVNFIChzdGF0ZW1lbnQpID0gTlVMTF9UUkVFOworCQkgICAgcGFy c2VyLT5pbl9kaXNjYXJkZWRfc3RtdCA9IHdhc19kaXNjYXJkZWQ7CisJCSAg ICAtLWNfaW5oaWJpdF9ldmFsdWF0aW9uX3dhcm5pbmdzOworCQkgIH0KIAkg ICAgICB9CiAJICAgIGVsc2UKIAkgICAgICB7CkBAIC0xMTg2NCw3ICsxMTkx NCwxMCBAQCBjcF9wYXJzZXJfanVtcF9zdGF0ZW1lbnQgKGNwX3BhcnNlciog cGFyc2VyKQogCSAgICAgZXhwcmVzc2lvbi4gICovCiAJICBleHByID0gTlVM TF9UUkVFOwogCS8qIEJ1aWxkIHRoZSByZXR1cm4tc3RhdGVtZW50LiAgKi8K LQlzdGF0ZW1lbnQgPSBmaW5pc2hfcmV0dXJuX3N0bXQgKGV4cHIpOworCWlm IChjdXJyZW50X2Z1bmN0aW9uX2F1dG9fcmV0dXJuX3BhdHRlcm4gJiYgcGFy c2VyLT5pbl9kaXNjYXJkZWRfc3RtdCkKKwkgIC8qIERvbid0IGRlZHVjZSBm cm9tIGEgZGlzY2FyZGVkIHJldHVybiBzdGF0ZW1lbnQuICAqLzsKKwllbHNl CisJICBzdGF0ZW1lbnQgPSBmaW5pc2hfcmV0dXJuX3N0bXQgKGV4cHIpOwog CS8qIExvb2sgZm9yIHRoZSBmaW5hbCBgOycuICAqLwogCWNwX3BhcnNlcl9y ZXF1aXJlIChwYXJzZXIsIENQUF9TRU1JQ09MT04sIFJUX1NFTUlDT0xPTik7 CiAgICAgICB9CmRpZmYgLS1naXQgYS9nY2MvY3AvcGFyc2VyLmggYi9nY2Mv Y3AvcGFyc2VyLmgKaW5kZXggMmQzZmViNi4uNmE1MmIxMiAxMDA2NDQKLS0t IGEvZ2NjL2NwL3BhcnNlci5oCisrKyBiL2djYy9jcC9wYXJzZXIuaApAQCAt MzM2LDYgKzMzNiwxMCBAQCBzdHJ1Y3QgR1RZKCgpKSBjcF9wYXJzZXIgewog ICAgICBhIGxvY2FsIGNsYXNzLiAgKi8KICAgYm9vbCBpbl9mdW5jdGlvbl9i b2R5OwogCisgIC8qIFRSVUUgaWYgd2UgYXJlIHBhcnNpbmcgYSBDKysxNyBk aXNjYXJkZWQgc3RhdGVtZW50ICh0aGUgbm9uLXRha2VuIGJyYW5jaAorICAg ICBvZiBhbiBpZiBjb25zdGV4cHIpLiAgKi8KKyAgYm9vbCBpbl9kaXNjYXJk ZWRfc3RtdDsKKwogICAvKiBOb256ZXJvIGlmIHdlJ3JlIHByb2Nlc3Npbmcg YSBfX3RyYW5zYWN0aW9uX2F0b21pYyBvcgogICAgICBfX3RyYW5zYWN0aW9u X3JlbGF4ZWQgc3RhdGVtZW50LiAgKi8KICAgdW5zaWduZWQgY2hhciBpbl90 cmFuc2FjdGlvbjsKZGlmZiAtLWdpdCBhL2djYy9jcC9wdC5jIGIvZ2NjL2Nw L3B0LmMKaW5kZXggMjYzODU2NC4uMWVlNWZkNCAxMDA2NDQKLS0tIGEvZ2Nj L2NwL3B0LmMKKysrIGIvZ2NjL2NwL3B0LmMKQEAgLTE1Mzg3LDEyICsxNTM4 NywxOCBAQCB0c3Vic3RfZXhwciAodHJlZSB0LCB0cmVlIGFyZ3MsIHRzdWJz dF9mbGFnc190IGNvbXBsYWluLCB0cmVlIGluX2RlY2wsCiAKICAgICBjYXNl IElGX1NUTVQ6CiAgICAgICBzdG10ID0gYmVnaW5faWZfc3RtdCAoKTsKKyAg ICAgIElGX1NUTVRfQ09OU1RFWFBSX1AgKHN0bXQpID0gSUZfU1RNVF9DT05T VEVYUFJfUCAodCk7CiAgICAgICB0bXAgPSBSRUNVUiAoSUZfQ09ORCAodCkp OwotICAgICAgZmluaXNoX2lmX3N0bXRfY29uZCAodG1wLCBzdG10KTsKLSAg ICAgIFJFQ1VSIChUSEVOX0NMQVVTRSAodCkpOworICAgICAgdG1wID0gZmlu aXNoX2lmX3N0bXRfY29uZCAodG1wLCBzdG10KTsKKyAgICAgIGlmIChJRl9T VE1UX0NPTlNURVhQUl9QICh0KSAmJiBpbnRlZ2VyX3plcm9wICh0bXApKQor CS8qIERvbid0IGluc3RhbnRpYXRlIHRoZSBUSEVOX0NMQVVTRS4gKi87Cisg ICAgICBlbHNlCisJUkVDVVIgKFRIRU5fQ0xBVVNFICh0KSk7CiAgICAgICBm aW5pc2hfdGhlbl9jbGF1c2UgKHN0bXQpOwogCi0gICAgICBpZiAoRUxTRV9D TEFVU0UgKHQpKQorICAgICAgaWYgKElGX1NUTVRfQ09OU1RFWFBSX1AgKHQp ICYmIGludGVnZXJfbm9uemVyb3AgKHRtcCkpCisJLyogRG9uJ3QgaW5zdGFu dGlhdGUgdGhlIEVMU0VfQ0xBVVNFLiAqLzsKKyAgICAgIGVsc2UgaWYgKEVM U0VfQ0xBVVNFICh0KSkKIAl7CiAJICBiZWdpbl9lbHNlX2NsYXVzZSAoc3Rt dCk7CiAJICBSRUNVUiAoRUxTRV9DTEFVU0UgKHQpKTsKZGlmZiAtLWdpdCBh L2djYy9jcC9zZW1hbnRpY3MuYyBiL2djYy9jcC9zZW1hbnRpY3MuYwppbmRl eCBiZmZkZGRiLi5hMmUwNGY2IDEwMDY0NAotLS0gYS9nY2MvY3Avc2VtYW50 aWNzLmMKKysrIGIvZ2NjL2NwL3NlbWFudGljcy5jCkBAIC03MTUsNiArNzE1 LDcgQEAgYmVnaW5faWZfc3RtdCAodm9pZCkKICAgc2NvcGUgPSBkb19wdXNo bGV2ZWwgKHNrX2NvbmQpOwogICByID0gYnVpbGRfc3RtdCAoaW5wdXRfbG9j YXRpb24sIElGX1NUTVQsIE5VTExfVFJFRSwKIAkJICBOVUxMX1RSRUUsIE5V TExfVFJFRSwgc2NvcGUpOworICBjdXJyZW50X2JpbmRpbmdfbGV2ZWwtPnRo aXNfZW50aXR5ID0gcjsKICAgYmVnaW5fY29uZCAoJklGX0NPTkQgKHIpKTsK ICAgcmV0dXJuIHI7CiB9CkBAIC03MjIsMTIgKzcyMywxOCBAQCBiZWdpbl9p Zl9zdG10ICh2b2lkKQogLyogUHJvY2VzcyB0aGUgQ09ORCBvZiBhbiBpZi1z dGF0ZW1lbnQsIHdoaWNoIG1heSBiZSBnaXZlbiBieQogICAgSUZfU1RNVC4g ICovCiAKLXZvaWQKK3RyZWUKIGZpbmlzaF9pZl9zdG10X2NvbmQgKHRyZWUg Y29uZCwgdHJlZSBpZl9zdG10KQogewotICBmaW5pc2hfY29uZCAoJklGX0NP TkQgKGlmX3N0bXQpLCBtYXliZV9jb252ZXJ0X2NvbmQgKGNvbmQpKTsKKyAg Y29uZCA9IG1heWJlX2NvbnZlcnRfY29uZCAoY29uZCk7CisgIGlmIChJRl9T VE1UX0NPTlNURVhQUl9QIChpZl9zdG10KQorICAgICAgJiYgcmVxdWlyZV9w b3RlbnRpYWxfcnZhbHVlX2NvbnN0YW50X2V4cHJlc3Npb24gKGNvbmQpCisg ICAgICAmJiAhdmFsdWVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCAoY29uZCkp CisgICAgY29uZCA9IGN4eF9jb25zdGFudF92YWx1ZSAoY29uZCwgTlVMTF9U UkVFKTsKKyAgZmluaXNoX2NvbmQgKCZJRl9DT05EIChpZl9zdG10KSwgY29u ZCk7CiAgIGFkZF9zdG10IChpZl9zdG10KTsKICAgVEhFTl9DTEFVU0UgKGlm X3N0bXQpID0gcHVzaF9zdG10X2xpc3QgKCk7CisgIHJldHVybiBjb25kOwog fQogCiAvKiBGaW5pc2ggdGhlIHRoZW4tY2xhdXNlIG9mIGFuIGlmLXN0YXRl bWVudCwgd2hpY2ggbWF5IGJlIGdpdmVuIGJ5CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25zdGV4cHItaWYxLkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25zdGV4cHItaWYxLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2ZDllYwotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2NvbnN0 ZXhwci1pZjEuQwpAQCAtMCwwICsxLDE0IEBACisvLyBUZXN0Y2FzZSBmcm9t IFAwMjkyUjIKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysxMSB9 IH0KKy8vIHsgZGctb3B0aW9ucyAiIiB9CisKK3RlbXBsYXRlPHR5cGVuYW1l IFQsIHR5cGVuYW1lIC4uLiBSZXN0PiB2b2lkIGcoVCYmIHAsIFJlc3QmJiAu Li5ycykgeworICAvLyAuLi4gaGFuZGxlIHAKKyAgaWYgY29uc3RleHByIChz aXplb2YuLi4ocnMpID4gMCkgLy8geyBkZy13YXJuaW5nICJjb25zdGV4cHIi ICIiIHsgdGFyZ2V0IGMrKzE0X2Rvd24gfSB9CisgICAgZyhycy4uLik7ICAv LyBuZXZlciBpbnN0YW50aWF0ZWQgd2l0aCBhbiBlbXB0eSBhcmd1bWVudCBs aXN0LgorfQorCitpbnQgbWFpbigpCit7CisgIGcoMSwyLDMpOworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHBy LWlmMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHBy LWlmMi5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdm M2E1NzcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAxei9jb25zdGV4cHItaWYyLkMKQEAgLTAsMCArMSwxNSBAQAorLy8g eyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzE0IH0gfQorLy8geyBkZy1v cHRpb25zICIiIH0KKwordGVtcGxhdGUgPGNsYXNzLGNsYXNzPiBzdHJ1Y3Qg U2FtZTsKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgU2FtZTxULFQ+IHt9 OworCithdXRvIGYoKQoreworICBpZiBjb25zdGV4cHIgKHNpemVvZihpbnQp PT0zKSAvLyB7IGRnLXdhcm5pbmcgImNvbnN0ZXhwciIgIiIgeyB0YXJnZXQg YysrMTRfb25seSB9IH0KKyAgICByZXR1cm4gNDI7CisgIGVsc2UKKyAgICBy ZXR1cm4gNDJMOworfQorCitTYW1lPGRlY2x0eXBlKGYoKSksIGxvbmc+IHM7 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25z dGV4cHItaWYzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25z dGV4cHItaWYzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMWNjNTc4MAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDF6L2NvbnN0ZXhwci1pZjMuQwpAQCAtMCwwICsxLDEzIEBA CisvLyBUZXN0Y2FzZSBmcm9tIFAwMjkyUjIKKy8vIHsgZGctZG8gbGluayB7 IHRhcmdldCBjKysxMSB9IH0KKy8vIHsgZGctb3B0aW9ucyAiIiB9CisKK2V4 dGVybiBpbnQgeDsgICAvLyBubyBkZWZpbml0aW9uIG9mIHggcmVxdWlyZWQK K2ludCBtYWluKCkgeworICBpZiBjb25zdGV4cHIgKHRydWUpIC8vIHsgZGct d2FybmluZyAiY29uc3RleHByIiAiIiB7IHRhcmdldCBjKysxNF9kb3duIH0g fQorICAgIHJldHVybiAwOworICBlbHNlIGlmICh4KQorICAgIHJldHVybiB4 OworICBlbHNlCisgICAgcmV0dXJuIC14OworfQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHByLWlmNC5DIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHByLWlmNC5DCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMmVmZjgKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25z dGV4cHItaWY0LkMKQEAgLTAsMCArMSwxMSBAQAorLy8geyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0IGMrKzExIH0gfQorLy8geyBkZy1vcHRpb25zICItdyIg fQorCit2b2lkIGYoKQoreworICBnb3RvIGw7CQkJLy8geyBkZy1tZXNzYWdl ICJmcm9tIGhlcmUiIH0KKyAgaWYgY29uc3RleHByIChmYWxzZSkJCS8vIHsg ZGctbWVzc2FnZSAiZW50ZXJzIGNvbnN0ZXhwciBpZiIgfQorICAgIHsKKyAg ICBsOjsJCQkJLy8geyBkZy1lcnJvciAianVtcCB0byBsYWJlbCIgfQorICAg IH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6 L2NvbnN0ZXhwci1pZjUuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6 L2NvbnN0ZXhwci1pZjUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42OWQwM2UzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHByLWlmNS5DCkBAIC0wLDAgKzEs MTQgQEAKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysxMSB9IH0K Ky8vIHsgZGctb3B0aW9ucyAiLXciIH0KKwordm9pZCBmKCkKK3sKKyAgaWYg Y29uc3RleHByIChmYWxzZSkJCS8vIHsgZGctbWVzc2FnZSAiZW50ZXJzIGNv bnN0ZXhwciBpZiIgfQorICAgIHsKKyAgICAgIGdvdG8gbDsJCQkvLyB7IGRn LW1lc3NhZ2UgImZyb20gaGVyZSIgfQorICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICBsOjsJCQkJLy8geyBkZy1lcnJvciAianVtcCB0byBsYWJlbCIgfQor ICAgIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDF6L2NvbnN0ZXhwci1pZjYuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDF6L2NvbnN0ZXhwci1pZjYuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi44N2FlYWJjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHByLWlmNi5DCkBAIC0wLDAg KzEsMTQgQEAKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysxMSB9 IH0KKy8vIHsgZGctb3B0aW9ucyAiLXciIH0KKwordm9pZCBmKCkKK3sKKyAg aWYgY29uc3RleHByIChmYWxzZSkKKyAgICB7CisgICAgICBnb3RvIGw7Cisg ICAgbDo7CisgICAgfQorICBlbHNlCisgICAgeworICAgIH0KK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2NvbnN0ZXhwci1p ZjcuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2NvbnN0ZXhwci1p ZjcuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDgy OWNjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMXovY29uc3RleHByLWlmNy5DCkBAIC0wLDAgKzEsMTQgQEAKKy8vIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysxMSB9IH0KKy8vIHsgZGctb3B0 aW9ucyAiLXciIH0KKwordm9pZCBmKCkKK3sKKyAgaWYgY29uc3RleHByIChm YWxzZSkKKyAgICB7CisgICAgbDo7CisgICAgICBnb3RvIGw7CisgICAgfQor ICBlbHNlCisgICAgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDF6L2NvbnN0ZXhwci1pZjguQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDF6L2NvbnN0ZXhwci1pZjguQwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWZkYzQ3Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovY29uc3RleHBy LWlmOC5DCkBAIC0wLDAgKzEsMTQgQEAKKy8vIHsgZGctZG8gY29tcGlsZSB7 IHRhcmdldCBjKysxMSB9IH0KKy8vIHsgZGctb3B0aW9ucyAiLXciIH0KKwor dm9pZCBmKCkKK3sKKyAgaWYgY29uc3RleHByIChmYWxzZSkKKyAgICB7Cisg ICAgbDo7CQkJCS8vIHsgZGctZXJyb3IgImp1bXAgdG8gbGFiZWwiIH0KKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICBnb3RvIGw7CQkJLy8geyBkZy1t ZXNzYWdlICJmcm9tIGhlcmUiIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25zdGV4cHItaWY5LkMgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9jb25zdGV4cHItaWY5LkMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ4Mjc4YQotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2Nv bnN0ZXhwci1pZjkuQwpAQCAtMCwwICsxLDExIEBACisvLyB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgYysrMTEgfSB9CisvLyB7IGRnLW9wdGlvbnMgIi13 IiB9CisKK3ZvaWQgZihpbnQgaSkKK3sKKyAgc3dpdGNoIChpKQorICAgIGlm IGNvbnN0ZXhwciAoZmFsc2UpCS8vIHsgZGctbWVzc2FnZSAiZW50ZXJzIGNv bnN0ZXhwciBpZiIgfQorICAgICAgeworICAgICAgY2FzZSA0Mjo7CQkJLy8g eyBkZy1lcnJvciAianVtcCB0byBjYXNlIGxhYmVsIiB9CisgICAgICB9Cit9 Cg== --001a1134fd2610094f0539bebe72--