From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 105957 invoked by alias); 8 Aug 2017 16:54:12 -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 105909 invoked by uid 89); 8 Aug 2017 16:54:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-15.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=6000 X-HELO: mail-ua0-f173.google.com Received: from mail-ua0-f173.google.com (HELO mail-ua0-f173.google.com) (209.85.217.173) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 08 Aug 2017 16:54:09 +0000 Received: by mail-ua0-f173.google.com with SMTP id d29so17692011uai.2 for ; Tue, 08 Aug 2017 09:54:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=K37uuENG1yNDfIdgI1rO3R0dFl+x1+tOK7YCv83r8no=; b=ilLMxlHW8Ha/jP9b6xB+OQIJHCNzVV3qzOfE6H58+wjXI5p/xzE5aka1dhADJBASQ/ N5MZQ1zsBPjW84H4tdONqfLuvgEoF9kDt3TKYBveZGwY9EyrwNxc47PzQviqg/aOGCf+ 4JTU0v6DKYWmu5eDxmbPbziJB3XGsrV4tDoCts5DD3nOHJZ7wDrDLjkJhPJRxh0cN0TA xHdTQqdwqdOu6Vx99ML70v3bL+roW+89YRlFjspu9jslZZGningZzDvw9cigmyWCLL+p ve823Hq8RDXw1MFx/2sLy0513oMRA6mgGxEEAwFfsTsnYC5hZScvsB49Und/gwgICcs6 31Cg== X-Gm-Message-State: AHYfb5i1O/xp7k5/0T+iPp8kDidNvdvv62oNavimgPxd7zHlPPIgyG4C fLEVVUCmO+29cxp96snLCijG11I6u7d3 X-Received: by 10.176.24.97 with SMTP id j33mr3029546uag.125.1502211247433; Tue, 08 Aug 2017 09:54:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.68.218 with HTTP; Tue, 8 Aug 2017 09:54:06 -0700 (PDT) From: Uros Bizjak Date: Tue, 08 Aug 2017 16:54:00 -0000 Message-ID: Subject: [PATCH, i386]: Make stack canary location customizable (PR target/81708) To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="f403043c4260c82193055640cf70" X-SW-Source: 2017-08/txt/msg00607.txt.bz2 --f403043c4260c82193055640cf70 Content-Type: text/plain; charset="UTF-8" Content-length: 1100 Hello! Attached patch introduces -mstack-protector-guard-reg= and -mstack-protector-guard-offset= options to make stack canary location customizable. These are the same options powerpc has. 2017-08-08 Uros Bizjak PR target/81708 * config/i386/i386.opt (mstack-protector-guard-reg=): New option (mstack-protector-guard-offset=): Ditto. * config/i386/i386.c (ix86_option_override): Handle -mstack-protector-guard-reg= and -mstack-protector-guard-offset= options. (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and ix86_stack_protect_guard_offset variables. (TARGET_STACK_PROTECT_GUARD): Always define. * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg= and -mstack-protector-guard-offset= options. testsuite/ChangeLog: 2017-08-08 Uros Bizjak PR target/81708 * gcc.target/i386/stack-prot-guard.c: New test. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Committed to mainline SVN. I will mention new options in gcc-8 changes webpage later. Uros. --f403043c4260c82193055640cf70 Content-Type: text/plain; charset="US-ASCII"; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j63try110 Content-length: 9968 SW5kZXg6IGNvbmZpZy9pMzg2L2kzODYuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBjb25maWcvaTM4Ni9pMzg2LmMJKHJldmlzaW9uIDI1MDk2MCkK KysrIGNvbmZpZy9pMzg2L2kzODYuYwkod29ya2luZyBjb3B5KQpAQCAtNjY2 Miw2ICs2NjYyLDY5IEBAIGl4ODZfb3B0aW9uX292ZXJyaWRlX2ludGVybmFs IChib29sIG1haW5fYXJnc19wLAogICAgIG9wdHMtPnhfaXg4Nl9zdGFja19w cm90ZWN0b3JfZ3VhcmQKICAgICAgID0gVEFSR0VUX0hBU19CSU9OSUMgPyBT U1BfR0xPQkFMIDogU1NQX1RMUzsKIAorI2lmZGVmIFRBUkdFVF9USFJFQURf U1NQX09GRlNFVAorICBpeDg2X3N0YWNrX3Byb3RlY3Rvcl9ndWFyZF9vZmZz ZXQgPSBUQVJHRVRfVEhSRUFEX1NTUF9PRkZTRVQ7CisjZW5kaWYKKworICBp ZiAoZ2xvYmFsX29wdGlvbnNfc2V0LnhfaXg4Nl9zdGFja19wcm90ZWN0b3Jf Z3VhcmRfb2Zmc2V0X3N0cikKKyAgICB7CisgICAgICBjaGFyICplbmRwOwor ICAgICAgY29uc3QgY2hhciAqc3RyID0gaXg4Nl9zdGFja19wcm90ZWN0b3Jf Z3VhcmRfb2Zmc2V0X3N0cjsKKworICAgICAgZXJybm8gPSAwOworICAgICAg aW50NjRfdCBvZmZzZXQ7CisKKyNpZiBkZWZpbmVkKElOVDY0X1RfSVNfTE9O RykKKyAgICAgIG9mZnNldCA9IHN0cnRvbCAoc3RyLCAmZW5kcCwgMCk7Cisj ZWxzZQorICAgICAgb2Zmc2V0ID0gc3RydG9sbCAoc3RyLCAmZW5kcCwgMCk7 CisjZW5kaWYKKworICAgICAgaWYgKCEqc3RyIHx8ICplbmRwIHx8IGVycm5v KQorCWVycm9yICgiJXFzIGlzIG5vdCBhIHZhbGlkIG51bWJlciAiCisJICAg ICAgICJpbiAtbXN0YWNrLXByb3RlY3Rvci1ndWFyZC1vZmZzZXQ9Iiwgc3Ry KTsKKworICAgICAgaWYgKCFJTl9SQU5HRSAob2Zmc2V0LCBIT1NUX1dJREVf SU5UX0MgKC0weDgwMDAwMDAwKSwKKwkJICAgICBIT1NUX1dJREVfSU5UX0Mg KDB4N2ZmZmZmZmYpKSkKKwllcnJvciAoIiVxcyBpcyBub3QgYSB2YWxpZCBv ZmZzZXQgIgorCSAgICAgICAiaW4gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQt b2Zmc2V0PSIsIHN0cik7CisKKyAgICAgIGl4ODZfc3RhY2tfcHJvdGVjdG9y X2d1YXJkX29mZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyAgaXg4Nl9zdGFj a19wcm90ZWN0b3JfZ3VhcmRfcmVnID0gREVGQVVMVF9UTFNfU0VHX1JFRzsK KworICAvKiBUaGUga2VybmVsIHVzZXMgYSBkaWZmZXJlbnQgc2VnbWVudCBy ZWdpc3RlciBmb3IgcGVyZm9ybWFuY2UKKyAgICAgcmVhc29uczsgYSBzeXN0 ZW0gY2FsbCB3b3VsZCBub3QgaGF2ZSB0byB0cmFzaCB0aGUgdXNlcnNwYWNl CisgICAgIHNlZ21lbnQgcmVnaXN0ZXIsIHdoaWNoIHdvdWxkIGJlIGV4cGVu c2l2ZS4gICovCisgIGlmIChpeDg2X2Ntb2RlbCA9PSBDTV9LRVJORUwpCisg ICAgaXg4Nl9zdGFja19wcm90ZWN0b3JfZ3VhcmRfcmVnID0gQUREUl9TUEFD RV9TRUdfR1M7CisKKyAgaWYgKGdsb2JhbF9vcHRpb25zX3NldC54X2l4ODZf c3RhY2tfcHJvdGVjdG9yX2d1YXJkX3JlZ19zdHIpCisgICAgeworICAgICAg Y29uc3QgY2hhciAqc3RyID0gaXg4Nl9zdGFja19wcm90ZWN0b3JfZ3VhcmRf cmVnX3N0cjsKKyAgICAgIGFkZHJfc3BhY2VfdCBzZWcgPSBBRERSX1NQQUNF X0dFTkVSSUM7CisKKyAgICAgIC8qIERpc2NhcmQgb3B0aW9uYWwgcmVnaXN0 ZXIgcHJlZml4LiAgKi8KKyAgICAgIGlmIChzdHJbMF0gPT0gJyUnKQorCXN0 cisrOworCisgICAgICBpZiAoc3RybGVuIChzdHIpID09IDIgJiYgc3RyWzFd ID09ICdzJykKKwl7CisJICBpZiAoc3RyWzBdID09ICdmJykKKwkgICAgc2Vn ID0gQUREUl9TUEFDRV9TRUdfRlM7CisJICBlbHNlIGlmIChzdHJbMF0gPT0g J2cnKQorCSAgICBzZWcgPSBBRERSX1NQQUNFX1NFR19HUzsKKwl9CisKKyAg ICAgIGlmIChzZWcgPT0gQUREUl9TUEFDRV9HRU5FUklDKQorCWVycm9yICgi JXFzIGlzIG5vdCBhIHZhbGlkIGJhc2UgcmVnaXN0ZXIgIgorCSAgICAgICAi aW4gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcmVnPSIsCisJICAgICAgIGl4 ODZfc3RhY2tfcHJvdGVjdG9yX2d1YXJkX3JlZ19zdHIpOworCisgICAgICBp eDg2X3N0YWNrX3Byb3RlY3Rvcl9ndWFyZF9yZWcgPSBzZWc7CisgICAgfQor CiAgIC8qIEhhbmRsZSAtbW1lbWNweS1zdHJhdGVneT0gYW5kIC1tbWVtc2V0 LXN0cmF0ZWd5PSAgKi8KICAgaWYgKG9wdHMtPnhfaXg4Nl90dW5lX21lbWNw eV9zdHJhdGVneSkKICAgICB7CkBAIC00NTc5NSw3ICs0NTg1OCw2IEBAIGl4 ODZfbWFuZ2xlX3R5cGUgKGNvbnN0X3RyZWUgdHlwZSkKICAgICB9CiB9CiAK LSNpZmRlZiBUQVJHRVRfVEhSRUFEX1NTUF9PRkZTRVQKIHN0YXRpYyB0cmVl CiBpeDg2X3N0YWNrX3Byb3RlY3RfZ3VhcmQgKHZvaWQpCiB7CkBAIC00NTgw MiwyMCArNDU4NjQsMTMgQEAgaXg4Nl9zdGFja19wcm90ZWN0X2d1YXJkICh2 b2lkKQogICBpZiAoVEFSR0VUX1NTUF9UTFNfR1VBUkQpCiAgICAgewogICAg ICAgdHJlZSB0eXBlX25vZGUgPSBsYW5nX2hvb2tzLnR5cGVzLnR5cGVfZm9y X21vZGUgKHB0cl9tb2RlLCAxKTsKLSAgICAgIGFkZHJfc3BhY2VfdCBhcyA9 IERFRkFVTFRfVExTX1NFR19SRUc7CiAKLSAgICAgIC8qIFRoZSBrZXJuZWwg dXNlcyBhIGRpZmZlcmVudCBzZWdtZW50IHJlZ2lzdGVyIGZvciBwZXJmb3Jt YW5jZQotCSByZWFzb25zOyBhIHN5c3RlbSBjYWxsIHdvdWxkIG5vdCBoYXZl IHRvIHRyYXNoIHRoZSB1c2Vyc3BhY2UKLQkgc2VnbWVudCByZWdpc3Rlciwg d2hpY2ggd291bGQgYmUgZXhwZW5zaXZlLiAgKi8KLSAgICAgIGlmIChpeDg2 X2Ntb2RlbCA9PSBDTV9LRVJORUwpCi0JYXMgPSBBRERSX1NQQUNFX1NFR19H UzsKKyAgICAgIGludCBxdWFsID0gRU5DT0RFX1FVQUxfQUREUl9TUEFDRSAo aXg4Nl9zdGFja19wcm90ZWN0b3JfZ3VhcmRfcmVnKTsKIAotICAgICAgaW50 IHF1YWwgPSBFTkNPREVfUVVBTF9BRERSX1NQQUNFIChhcyk7Ci0KICAgICAg IHRyZWUgdHlwZSA9IGJ1aWxkX3F1YWxpZmllZF90eXBlICh0eXBlX25vZGUs IHF1YWwpOwogICAgICAgdHJlZSBhc3B0cnR5cGUgPSBidWlsZF9wb2ludGVy X3R5cGUgKHR5cGUpOwotICAgICAgdHJlZSBzc3BvZmYgPSBidWlsZF9pbnRf Y3N0IChhc3B0cnR5cGUsIFRBUkdFVF9USFJFQURfU1NQX09GRlNFVCk7Ci0K KyAgICAgIHRyZWUgc3Nwb2ZmID0gYnVpbGRfaW50X2NzdCAoYXNwdHJ0eXBl LAorCQkJCSAgIGl4ODZfc3RhY2tfcHJvdGVjdG9yX2d1YXJkX29mZnNldCk7 CiAgICAgICB0cmVlIHQgPSBidWlsZDIgKE1FTV9SRUYsIGFzcHRydHlwZSwg c3Nwb2ZmLAogCQkgICAgICAgYnVpbGRfaW50X2NzdCAoYXNwdHJ0eXBlLCAw KSk7CiAgICAgICByZXR1cm4gdDsKQEAgLTQ1ODIzLDcgKzQ1ODc4LDYgQEAg aXg4Nl9zdGFja19wcm90ZWN0X2d1YXJkICh2b2lkKQogCiAgIHJldHVybiBk ZWZhdWx0X3N0YWNrX3Byb3RlY3RfZ3VhcmQgKCk7CiB9Ci0jZW5kaWYKIAog LyogRm9yIDMyLWJpdCBjb2RlIHdlIGNhbiBzYXZlIFBJQyByZWdpc3RlciBz ZXR1cCBieSB1c2luZwogICAgX19zdGFja19jaGtfZmFpbF9sb2NhbCBoaWRk ZW4gZnVuY3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5nCkBAIC01MjgzMSwxMCAr NTI4ODUsOCBAQCBpeDg2X3J1bl9zZWxmdGVzdHMgKHZvaWQpCiAjdW5kZWYg VEFSR0VUX01BTkdMRV9UWVBFCiAjZGVmaW5lIFRBUkdFVF9NQU5HTEVfVFlQ RSBpeDg2X21hbmdsZV90eXBlCiAKLSNpZmRlZiBUQVJHRVRfVEhSRUFEX1NT UF9PRkZTRVQKICN1bmRlZiBUQVJHRVRfU1RBQ0tfUFJPVEVDVF9HVUFSRAog I2RlZmluZSBUQVJHRVRfU1RBQ0tfUFJPVEVDVF9HVUFSRCBpeDg2X3N0YWNr X3Byb3RlY3RfZ3VhcmQKLSNlbmRpZgogCiAjaWYgIVRBUkdFVF9NQUNITwog I3VuZGVmIFRBUkdFVF9TVEFDS19QUk9URUNUX0ZBSUwKSW5kZXg6IGNvbmZp Zy9pMzg2L2kzODYub3B0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNv bmZpZy9pMzg2L2kzODYub3B0CShyZXZpc2lvbiAyNTA5NjApCisrKyBjb25m aWcvaTM4Ni9pMzg2Lm9wdAkod29ya2luZyBjb3B5KQpAQCAtOTI0LDYgKzky NCwyMCBAQCBFbnVtKHN0YWNrX3Byb3RlY3Rvcl9ndWFyZCkgU3RyaW5nKHRs cykgVmFsdWUoU1NQXwogRW51bVZhbHVlCiBFbnVtKHN0YWNrX3Byb3RlY3Rv cl9ndWFyZCkgU3RyaW5nKGdsb2JhbCkgVmFsdWUoU1NQX0dMT0JBTCkKIAor bXN0YWNrLXByb3RlY3Rvci1ndWFyZC1yZWc9CitUYXJnZXQgUmVqZWN0TmVn YXRpdmUgSm9pbmVkIFZhcihpeDg2X3N0YWNrX3Byb3RlY3Rvcl9ndWFyZF9y ZWdfc3RyKQorVXNlIHRoZSBnaXZlbiBiYXNlIHJlZ2lzdGVyIGZvciBhZGRy ZXNzaW5nIHRoZSBzdGFjay1wcm90ZWN0b3IgZ3VhcmQuCisKK1RhcmdldFZh cmlhYmxlCithZGRyX3NwYWNlX3QgaXg4Nl9zdGFja19wcm90ZWN0b3JfZ3Vh cmRfcmVnID0gQUREUl9TUEFDRV9HRU5FUklDCisKK21zdGFjay1wcm90ZWN0 b3ItZ3VhcmQtb2Zmc2V0PQorVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5l ZCBJbnRlZ2VyIFZhcihpeDg2X3N0YWNrX3Byb3RlY3Rvcl9ndWFyZF9vZmZz ZXRfc3RyKQorVXNlIHRoZSBnaXZlbiBvZmZzZXQgZm9yIGFkZHJlc3Npbmcg dGhlIHN0YWNrLXByb3RlY3RvciBndWFyZC4KKworVGFyZ2V0VmFyaWFibGUK K0hPU1RfV0lERV9JTlQgaXg4Nl9zdGFja19wcm90ZWN0b3JfZ3VhcmRfb2Zm c2V0ID0gMAorCiBtbWl0aWdhdGUtcm9wCiBUYXJnZXQgVmFyKGZsYWdfbWl0 aWdhdGVfcm9wKSBJbml0KDApCiBBdHRlbXB0IHRvIGF2b2lkIGdlbmVyYXRp bmcgaW5zdHJ1Y3Rpb24gc2VxdWVuY2VzIGNvbnRhaW5pbmcgcmV0IGJ5dGVz LgpJbmRleDogZG9jL2ludm9rZS50ZXhpCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGRvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMjUwOTYwKQorKysg ZG9jL2ludm9rZS50ZXhpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE1LDcgKzEy MTUsOSBAQCBTZWUgUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zLgogLW1z c2UyYXZ4ICAtbWZlbnRyeSAgLW1yZWNvcmQtbWNvdW50ICAtbW5vcC1tY291 bnQgIC1tOGJpdC1pZGl2IEBnb2wKIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25l ZC1sb2FkICAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtc3RvcmUgQGdvbAog LW1hbGlnbi1kYXRhPUB2YXJ7dHlwZX0gIC1tc3RhY2stcHJvdGVjdG9yLWd1 YXJkPUB2YXJ7Z3VhcmR9IEBnb2wKLS1tbWl0aWdhdGUtcm9wICAtbWdlbmVy YWwtcmVncy1vbmx5ICAtbWNhbGwtbXMyc3lzdi14bG9ndWVzfQorLW1zdGFj ay1wcm90ZWN0b3ItZ3VhcmQtcmVnPUB2YXJ7cmVnfSBAZ29sCistbXN0YWNr LXByb3RlY3Rvci1ndWFyZC1vZmZzZXQ9QHZhcntvZmZzZXR9ICAtbW1pdGln YXRlLXJvcCBAZ29sCistbWdlbmVyYWwtcmVncy1vbmx5ICAtbWNhbGwtbXMy c3lzdi14bG9ndWVzfQogCiBAZW1waHt4ODYgV2luZG93cyBPcHRpb25zfQog QGdjY29wdGxpc3R7LW1jb25zb2xlICAtbWN5Z3dpbiAgLW1uby1jeWd3aW4g IC1tZGxsIEBnb2wKQEAgLTI2MTQ3LDEyICsyNjE0OSwyMyBAQCB0byAyNTUs IDgtYml0IHVuc2lnbmVkIGludGVnZXIgZGl2aWRlIGlzIHVzZWQgaW5zdAog U3BsaXQgMzItYnl0ZSBBVlggdW5hbGlnbmVkIGxvYWQgYW5kIHN0b3JlLgog CiBAaXRlbSAtbXN0YWNrLXByb3RlY3Rvci1ndWFyZD1AdmFye2d1YXJkfQot QG9waW5kZXggbXN0YWNrLXByb3RlY3Rvci1ndWFyZD1AdmFye2d1YXJkfQor QGl0ZW14IC1tc3RhY2stcHJvdGVjdG9yLWd1YXJkLXJlZz1AdmFye3JlZ30K K0BpdGVteCAtbXN0YWNrLXByb3RlY3Rvci1ndWFyZC1vZmZzZXQ9QHZhcntv ZmZzZXR9CitAb3BpbmRleCBtc3RhY2stcHJvdGVjdG9yLWd1YXJkCitAb3Bp bmRleCBtc3RhY2stcHJvdGVjdG9yLWd1YXJkLXJlZworQG9waW5kZXggbXN0 YWNrLXByb3RlY3Rvci1ndWFyZC1vZmZzZXQKIEdlbmVyYXRlIHN0YWNrIHBy b3RlY3Rpb24gY29kZSB1c2luZyBjYW5hcnkgYXQgQHZhcntndWFyZH0uICBT dXBwb3J0ZWQKIGxvY2F0aW9ucyBhcmUgQHNhbXB7Z2xvYmFsfSBmb3IgZ2xv YmFsIGNhbmFyeSBvciBAc2FtcHt0bHN9IGZvciBwZXItdGhyZWFkCiBjYW5h cnkgaW4gdGhlIFRMUyBibG9jayAodGhlIGRlZmF1bHQpLiAgVGhpcyBvcHRp b24gaGFzIGVmZmVjdCBvbmx5IHdoZW4KIEBvcHRpb257LWZzdGFjay1wcm90 ZWN0b3J9IG9yIEBvcHRpb257LWZzdGFjay1wcm90ZWN0b3ItYWxsfSBpcyBz cGVjaWZpZWQuCiAKK1dpdGggdGhlIGxhdHRlciBjaG9pY2UgdGhlIG9wdGlv bnMKK0BvcHRpb257LW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcmVnPUB2YXJ7 cmVnfX0gYW5kCitAb3B0aW9uey1tc3RhY2stcHJvdGVjdG9yLWd1YXJkLW9m ZnNldD1AdmFye29mZnNldH19IGZ1cnRoZXJtb3JlIHNwZWNpZnkKK3doaWNo IHNlZ21lbnQgcmVnaXN0ZXIgKEBjb2RleyVmc30gb3IgQGNvZGV7JWdzfSkg dG8gdXNlIGFzIGJhc2UgcmVnaXN0ZXIKK2ZvciByZWFkaW5nIHRoZSBjYW5h cnksIGFuZCBmcm9tIHdoYXQgb2Zmc2V0IGZyb20gdGhhdCBiYXNlIHJlZ2lz dGVyLgorVGhlIGRlZmF1bHQgZm9yIHRob3NlIGlzIGFzIHNwZWNpZmllZCBp biB0aGUgcmVsZXZhbnQgQUJJLgorCiBAaXRlbSAtbW1pdGlnYXRlLXJvcAog QG9waW5kZXggbW1pdGlnYXRlLXJvcAogVHJ5IHRvIGF2b2lkIGdlbmVyYXRp bmcgY29kZSBzZXF1ZW5jZXMgdGhhdCBjb250YWluIHVuaW50ZW5kZWQgcmV0 dXJuCkluZGV4OiB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3N0YWNrLXBy b3QtZ3VhcmQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3N0YWNrLXByb3QtZ3VhcmQuYwkobm9uZXhp c3RlbnQpCisrKyB0ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3N0YWNrLXBy b3QtZ3VhcmQuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAt ZnN0YWNrLXByb3RlY3Rvci1hbGwgLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQ9 dGxzIC1tc3RhY2stcHJvdGVjdG9yLWd1YXJkLXJlZz1ncyAtbXN0YWNrLXBy b3RlY3Rvci1ndWFyZC1vZmZzZXQ9MHgzMDM4IiB9ICovCisKK3ZvaWQgZih2 b2lkKSB7IH0KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJn czoxMjM0NCIgfSB9ICovCg== --f403043c4260c82193055640cf70--