From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8828 invoked by alias); 28 May 2011 00:44:13 -0000 Received: (qmail 8808 invoked by uid 22791); 28 May 2011 00:44:12 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_CX,TW_XX X-Spam-Check-By: sourceware.org Received: from mail-pz0-f47.google.com (HELO mail-pz0-f47.google.com) (209.85.210.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 28 May 2011 00:43:57 +0000 Received: by pzk36 with SMTP id 36so1051562pzk.20 for ; Fri, 27 May 2011 17:43:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.127.20 with SMTP id z20mr395352wfc.305.1306543436907; Fri, 27 May 2011 17:43:56 -0700 (PDT) Received: by 10.142.69.21 with HTTP; Fri, 27 May 2011 17:43:56 -0700 (PDT) Date: Sat, 28 May 2011 12:50:00 -0000 Message-ID: Subject: [v3] define std::thread::hardware_concurrency() From: Jonathan Wakely To: "libstdc++" , gcc-patches Content-Type: multipart/mixed; boundary=000e0cd32cce70c46204a44b59bb 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 X-SW-Source: 2011-05/txt/msg02225.txt.bz2 --000e0cd32cce70c46204a44b59bb Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1064 This patch uses glibc's get_nprocs() or the non-standard but widely available _SC_NPROCESSORS_ONLN sysconf variable to determine the number of processors. 2011-05-28 Jonathan Wakely * acinclude.m4: Define GLIBCXX_CHECK_GET_NPROCS and GLIBCXX_CHECK_SC_NPROCESSORS_ONLN. * configure.ac: Use them. Increase minor version. * configure: Regenerate. * config.h.in: Regenerate. * include/std/thread (thread::hardware_concurrency): Remove inline definition. * src/thread.cc (thread::hardware_concurrency): Define. * config/abi/pre/gnu.ver: Export new symbol @3.4.17 * testsuite/util/testsuite_abi.cc: Add new version. * testsuite/lib/libstdc++.exp (check_v3_target_nprocs): Add. * testsuite/lib/dg-options.exp (dg-require-nprocs): Add. * testsuite/30_threads/thread/members/hardware_concurrency.cc: Use dg-require-nprocs and verify hardware_concurrency returns non-zero. Tested x86_64-linux, I intend to commit to trunk tomorrow. --000e0cd32cce70c46204a44b59bb Content-Type: text/plain; charset=US-ASCII; name="hwconc.txt" Content-Disposition: attachment; filename="hwconc.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_go7u614p0 Content-length: 11517 SW5kZXg6IGFjaW5jbHVkZS5tNAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBhY2luY2x1ZGUubTQJKHJldmlzaW9uIDE3NDMwNykKKysrIGFjaW5jbHVk ZS5tNAkod29ya2luZyBjb3B5KQpAQCAtMzIwNCw2ICszMjA0LDYxIEBACiAg IF0pCiBdKQogCitkbmwKK2RubCBDaGVjayB3aGV0aGVyIGdldF9ucHJvY3Mg aXMgYXZhaWxhYmxlIGluIDxzeXMvc3lzaW5mby5oPiwgYW5kIGRlZmluZSBf R0xJQkNYWF9VU0VfR0VUX05QUk9DUy4KK2RubAorQUNfREVGVU4oW0dMSUJD WFhfQ0hFQ0tfR0VUX05QUk9DU10sIFsKKworICBBQ19MQU5HX1NBVkUKKyAg QUNfTEFOR19DUExVU1BMVVMKKyAgYWNfc2F2ZV9DWFhGTEFHUz0iJENYWEZM QUdTIgorICBDWFhGTEFHUz0iJENYWEZMQUdTIC1mbm8tZXhjZXB0aW9ucyIK KworICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnZXRfbnByb2NzXSkKKyAgQUNf Q0FDSEVfVkFMKGdsaWJjeHhfY3ZfR0VUX05QUk9DUywgWworICAgIEdDQ19U UllfQ09NUElMRV9PUl9MSU5LKAorICAgICAgWyNpbmNsdWRlIDxzeXMvc3lz aW5mby5oPl0sCisgICAgICBbaW50IG4gPSBnZXRfbnByb2NzKCk7XSwKKyAg ICAgIFtnbGliY3h4X2N2X0dFVF9OUFJPQ1M9eWVzXSwKKyAgICAgIFtnbGli Y3h4X2N2X0dFVF9OUFJPQ1M9bm9dKQorICBdKQorICBpZiB0ZXN0ICRnbGli Y3h4X2N2X0dFVF9OUFJPQ1MgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUo X0dMSUJDWFhfVVNFX0dFVF9OUFJPQ1MsIDEsIFtEZWZpbmUgaWYgZ2V0X25w cm9jcyBpcyBhdmFpbGFibGUgaW4gPHN5cy9zeXNpbmZvLmg+Ll0pCisgIGZp CisgIEFDX01TR19SRVNVTFQoJGdsaWJjeHhfY3ZfR0VUX05QUk9DUykKKwor ICBDWFhGTEFHUz0iJGFjX3NhdmVfQ1hYRkxBR1MiCisgIEFDX0xBTkdfUkVT VE9SRQorXSkKKworZG5sCitkbmwgQ2hlY2sgd2hldGhlciBzeXNjb25mIGlz IGF2YWlsYWJsZSBpbiA8dW5pc3RkLmg+LCBhbmQgZGVmaW5lIF9HTElCQ1hY X1VTRV9TWVNDT05GLgorZG5sCitBQ19ERUZVTihbR0xJQkNYWF9DSEVDS19T WVNDT05GXSwgWworCisgIEFDX0xBTkdfU0FWRQorICBBQ19MQU5HX0NQTFVT UExVUworICBhY19zYXZlX0NYWEZMQUdTPSIkQ1hYRkxBR1MiCisgIENYWEZM QUdTPSIkQ1hYRkxBR1MgLWZuby1leGNlcHRpb25zIgorCisgIEFDX01TR19D SEVDS0lORyhbZm9yIHN5c2NvbmZdKQorICBBQ19DQUNIRV9WQUwoZ2xpYmN4 eF9jdl9TWVNDT05GLCBbCisgICAgR0NDX1RSWV9DT01QSUxFX09SX0xJTkso CisgICAgICBbI2luY2x1ZGUgPHVuaXN0ZC5oPl0sCisgICAgICBbaW50IG4g PSBzeXNjb25mKF9TQ19BUkdfTUFYKTtdLAorICAgICAgW2dsaWJjeHhfY3Zf U1lTQ09ORj15ZXNdLAorICAgICAgW2dsaWJjeHhfY3ZfU1lTQ09ORj1ub10p CisgIF0pCisgIGlmIHRlc3QgJGdsaWJjeHhfY3ZfU1lTQ09ORiA9IHllczsg dGhlbgorICAgIEFDX0RFRklORShfR0xJQkNYWF9VU0VfU1lTQ09ORiwgMSwg W0RlZmluZSBpZiBzeXNjb25mIGlzIGF2YWlsYWJsZSBpbiA8dW5pc3RkLmg+ Ll0pCisgIGZpCisgIEFDX01TR19SRVNVTFQoJGdsaWJjeHhfY3ZfU1lTQ09O RikKKworICBDWFhGTEFHUz0iJGFjX3NhdmVfQ1hYRkxBR1MiCisgIEFDX0xB TkdfUkVTVE9SRQorXSkKKworCiAjIE1hY3JvcyBmcm9tIHRoZSB0b3AtbGV2 ZWwgZ2NjIGRpcmVjdG9yeS4KIG00X2luY2x1ZGUoWy4uL2NvbmZpZy9nYysr ZmlsdC5tNF0pCiBtNF9pbmNsdWRlKFsuLi9jb25maWcvdGxzLm00XSkKSW5k ZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj b25maWd1cmUuYWMJKHJldmlzaW9uIDE3NDMwNykKKysrIGNvbmZpZ3VyZS5h Ywkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsNyBAQAogIyMjIGFtIGhh bmRsZXMgdGhpcyBub3c/ICBPUklHSU5BTF9MRF9GT1JfTVVMVElMSUJTPSRM RAogCiAjIEZvciBsaWJ0b29sIHZlcnNpb25pbmcgaW5mbywgZm9ybWF0IGlz IENVUlJFTlQ6UkVWSVNJT046QUdFCi1saWJ0b29sX1ZFUlNJT049NjoxNjow CitsaWJ0b29sX1ZFUlNJT049NjoxNzowCiBBQ19TVUJTVChsaWJ0b29sX1ZF UlNJT04pCiAKICMgRmluZCB0aGUgcmVzdCBvZiB0aGUgc291cmNlIHRyZWUg ZnJhbWV3b3JrLgpAQCAtMTcwLDYgKzE3MCwxMCBAQAogCiBBQ19MQ19NRVNT QUdFUwogCisjIEZvciBoYXJkd2FyZV9jb25jdXJyZW5jeQorR0xJQkNYWF9D SEVDS19HRVRfTlBST0NTCitHTElCQ1hYX0NIRUNLX1NZU0NPTkYKKwogIyBD aGVjayBmb3IgYXZhaWxhYmxlIGhlYWRlcnMuCiBBQ19DSEVDS19IRUFERVJT KFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBp bnR0eXBlcy5oIFwKIGxvY2FsZS5oIG1hY2hpbmUvZW5kaWFuLmggbWFjaGlu ZS9wYXJhbS5oIG5hbi5oIHN0ZGludC5oIHN0ZGxpYi5oIHN0cmluZy5oIFwK SW5kZXg6IGluY2x1ZGUvc3RkL3RocmVhZAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBpbmNsdWRlL3N0ZC90aHJlYWQJKHJldmlzaW9uIDE3NDMwNykK KysrIGluY2x1ZGUvc3RkL3RocmVhZAkod29ya2luZyBjb3B5KQpAQCAtMTc5 LDggKzE3OSw3IEBACiAKICAgICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBo aW50cyBhdCB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIHRocmVhZCBjb250ZXh0 cy4KICAgICBzdGF0aWMgdW5zaWduZWQgaW50Ci0gICAgaGFyZHdhcmVfY29u Y3VycmVuY3koKSBub2V4Y2VwdAotICAgIHsgcmV0dXJuIDA7IH0KKyAgICBo YXJkd2FyZV9jb25jdXJyZW5jeSgpIG5vZXhjZXB0OwogCiAgIHByaXZhdGU6 CiAgICAgdm9pZApJbmRleDogc3JjL3RocmVhZC5jYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBzcmMvdGhyZWFkLmNjCShyZXZpc2lvbiAxNzQzMDcp CisrKyBzcmMvdGhyZWFkLmNjCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy NiwxNiBAQAogI2luY2x1ZGUgPHRocmVhZD4KICNpbmNsdWRlIDxjZXJybm8+ CiAKKyNpZiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9HRVRfTlBST0NTKQorIyBp bmNsdWRlIDxzeXMvc3lzaW5mby5oPgorIyBkZWZpbmUgX0dMSUJDWFhfTlBS T0NTIGdldF9ucHJvY3MoKQorI2VsaWYgZGVmaW5lZChfR0xJQkNYWF9VU0Vf U1lTQ09ORikgJiYgZGVmaW5lZChfU0NfTlBST0NFU1NPUlNfT05MTikKKyMg aW5jbHVkZSA8dW5pc3RkLmg+CisjIGRlZmluZSBfR0xJQkNYWF9OUFJPQ1Mg c3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTikKKyNlbHNlCisjIGRlZmlu ZSBfR0xJQkNYWF9OUFJPQ1MgMAorI2VuZGlmCisKICNpZiBkZWZpbmVkKF9H TElCQ1hYX0hBU19HVEhSRUFEUykgJiYgZGVmaW5lZChfR0xJQkNYWF9VU0Vf Qzk5X1NURElOVF9UUjEpCiAKIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklT SUJJTElUWShkZWZhdWx0KQpAQCAtOTgsNiArMTA4LDE1IEBACiAgICAgfQog ICB9CiAKKyAgdW5zaWduZWQgaW50CisgIHRocmVhZDo6aGFyZHdhcmVfY29u Y3VycmVuY3koKSBub2V4Y2VwdAorICB7CisgICAgaW50IF9fbiA9IF9HTElC Q1hYX05QUk9DUzsKKyAgICBpZiAoX19uIDwgMCkKKyAgICAgIF9fbiA9IDA7 CisgICAgcmV0dXJuIF9fbjsKKyAgfQorCiBfR0xJQkNYWF9FTkRfTkFNRVNQ QUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlIHN0ZAogCkluZGV4OiBjb25m aWcvYWJpL3ByZS9nbnUudmVyCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGNvbmZpZy9hYmkvcHJlL2dudS52ZXIJKHJldmlzaW9uIDE3NDMwNykKKysr IGNvbmZpZy9hYmkvcHJlL2dudS52ZXIJKHdvcmtpbmcgY29weSkKQEAgLTEy NzksNiArMTI3OSwxMyBAQAogCiB9IEdMSUJDWFhfMy40LjE1OwogCitHTElC Q1hYXzMuNC4xNyB7CisKKyAgICAjIHN0ZDo6dGhyZWFkOjpoYXJkd2FyZV9j b25jdXJyZW5jeQorICAgIF9aTlN0NnRocmVhZDIwaGFyZHdhcmVfY29uY3Vy cmVuY3lFdjsKKworfSBHTElCQ1hYXzMuNC4xNjsKKwogIyBTeW1ib2xzIGlu IHRoZSBzdXBwb3J0IGxpYnJhcnkgKGxpYnN1cGMrKykgaGF2ZSB0aGVpciBv d24gdGFnLgogQ1hYQUJJXzEuMyB7CiAKSW5kZXg6IHRlc3RzdWl0ZS9saWIv bGlic3RkYysrLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0 c3VpdGUvbGliL2xpYnN0ZGMrKy5leHAJKHJldmlzaW9uIDE3NDMwNykKKysr IHRlc3RzdWl0ZS9saWIvbGlic3RkYysrLmV4cAkod29ya2luZyBjb3B5KQpA QCAtMTU3OSw0ICsxNTc5LDY3IEBACiAgICAgcmV0dXJuICRldF9iaW5hcnlf aW8KIH0KIAorcHJvYyBjaGVja192M190YXJnZXRfbnByb2NzIHsgfSB7Cisg ICAgZ2xvYmFsIGN4eGZsYWdzCisgICAgZ2xvYmFsIERFRkFVTFRfQ1hYRkxB R1MKKyAgICBnbG9iYWwgZXRfbnByb2NzCisKKyAgICBnbG9iYWwgdG9vbAor CisgICAgaWYgeyAhW2luZm8gZXhpc3RzIGV0X25wcm9jc190YXJnZXRfbmFt ZV0gfSB7CisJc2V0IGV0X25wcm9jc190YXJnZXRfbmFtZSAiIgorICAgIH0K KworICAgICMgSWYgdGhlIHRhcmdldCBoYXMgY2hhbmdlZCBzaW5jZSB3ZSBz ZXQgdGhlIGNhY2hlZCB2YWx1ZSwgY2xlYXIgaXQuCisgICAgc2V0IGN1cnJl bnRfdGFyZ2V0IFtjdXJyZW50X3RhcmdldF9uYW1lXQorICAgIGlmIHsgJGN1 cnJlbnRfdGFyZ2V0ICE9ICRldF9ucHJvY3NfdGFyZ2V0X25hbWUgfSB7CisJ dmVyYm9zZSAiY2hlY2tfdjNfdGFyZ2V0X25wcm9jczogYCRldF9ucHJvY3Nf dGFyZ2V0X25hbWUnIiAyCisJc2V0IGV0X25wcm9jc190YXJnZXRfbmFtZSAk Y3VycmVudF90YXJnZXQKKwlpZiBbaW5mbyBleGlzdHMgZXRfbnByb2NzXSB7 CisJICAgIHZlcmJvc2UgImNoZWNrX3YzX3RhcmdldF9ucHJvY3M6IHJlbW92 aW5nIGNhY2hlZCByZXN1bHQiIDIKKwkgICAgdW5zZXQgZXRfbnByb2NzCisJ fQorICAgIH0KKworICAgIGlmIFtpbmZvIGV4aXN0cyBldF9ucHJvY3NdIHsK Kwl2ZXJib3NlICJjaGVja192M190YXJnZXRfbnByb2NzOiB1c2luZyBjYWNo ZWQgcmVzdWx0IiAyCisgICAgfSBlbHNlIHsKKwlzZXQgZXRfbnByb2NzIDAK KworCSMgU2V0IHVwIGFuZCBwcmVwcm9jZXNzIGEgQysrMHggdGVzdCBwcm9n cmFtIHRoYXQgZGVwZW5kcworCSMgb24gZWl0aGVyIGdldF9ucHJvY3Mgb3Ig c3lzY29uZiB0byBiZSBhdmFpbGFibGUuCisJc2V0IHNyYyBucHJvY3NbcGlk XS5jYworCisJc2V0IGYgW29wZW4gJHNyYyAidyJdCisgICAgICAgIHB1dHMg JGYgIiNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPiIKKwlwdXRzICRmICIj aWYgZGVmaW5lZChfR0xJQkNYWF9VU0VfR0VUX05QUk9DUykiCisJcHV0cyAk ZiAiI2VsaWYgZGVmaW5lZChfR0xJQkNYWF9VU0VfU1lTQ09ORikiCisgICAg ICAgIHB1dHMgJGYgIiMgaW5jbHVkZSA8dW5pc3RkLmg+IgorCXB1dHMgJGYg IiMgaWYgIWRlZmluZWQoX1NDX05QUk9DRVNTT1JTX09OTE4pIgorCXB1dHMg JGYgIiMgIGVycm9yIE5vIHN5c2NvbmYgb3B0aW9uIgorCXB1dHMgJGYgIiMg ZW5kaWYiCisJcHV0cyAkZiAiI2Vsc2UiCisJcHV0cyAkZiAiIyAgZXJyb3Ig Tm8gZ2V0X25wcm9jcyBvciBzeXNjb25mIgorCXB1dHMgJGYgIiNlbmRpZiIK KwljbG9zZSAkZgorCisJc2V0IGN4eGZsYWdzX3NhdmVkICRjeHhmbGFncwor CXNldCBjeHhmbGFncyAiJGN4eGZsYWdzICRERUZBVUxUX0NYWEZMQUdTIC1X ZXJyb3IiCisKKwlzZXQgbGluZXMgW3YzX3RhcmdldF9jb21waWxlICRzcmMg L2Rldi9udWxsIHByZXByb2Nlc3MgIiJdCisJc2V0IGN4eGZsYWdzICRjeHhm bGFnc19zYXZlZAorCWZpbGUgZGVsZXRlICRzcmMKKworCWlmIFtzdHJpbmcg bWF0Y2ggIiIgJGxpbmVzXSB7CisJICAgICMgTm8gZXJyb3IgbWVzc2FnZSwg cHJlcHJvY2VzcyBzdWNjZWVkZWQuCisJICAgIHNldCBldF9ucHJvY3MgMQor CX0gZWxzZSB7CisJICAgIHZlcmJvc2UgImNoZWNrX3YzX3RhcmdldF9ucHJv Y3M6IGNvbXBpbGF0aW9uIGZhaWxlZCIgMgorCX0KKyAgICB9CisgICAgdmVy Ym9zZSAiY2hlY2tfdjNfdGFyZ2V0X25wcm9jczogJGV0X25wcm9jcyIgMgor ICAgIHJldHVybiAkZXRfbnByb2NzCit9CisKKwogc2V0IGFkZGl0aW9uYWxf cHJ1bmVzICIiCkluZGV4OiB0ZXN0c3VpdGUvbGliL2RnLW9wdGlvbnMuZXhw Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9saWIvZGct b3B0aW9ucy5leHAJKHJldmlzaW9uIDE3NDMwNykKKysrIHRlc3RzdWl0ZS9s aWIvZGctb3B0aW9ucy5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2ICsx NzksMTUgQEAKICAgICByZXR1cm4KIH0KIAorcHJvYyBkZy1yZXF1aXJlLW5w cm9jcyB7IGFyZ3MgfSB7CisgICAgaWYgeyAhWyBjaGVja192M190YXJnZXRf bnByb2NzIF0gfSB7CisgICAgICAgIHVwdmFyIGRnLWRvLXdoYXQgZGctZG8t d2hhdAorICAgICAgICBzZXQgZGctZG8td2hhdCBbbGlzdCBbbGluZGV4ICR7 ZGctZG8td2hhdH0gMF0gIk4iICJQIl0KKyAgICAgICAgcmV0dXJuCisgICAg fQorICAgIHJldHVybgorfQorCiBwcm9jIGFkZF9vcHRpb25zX2Zvcl9ub19w Y2ggeyBmbGFncyB9IHsKICAgICAjIFRoaXMgZm9yY2VzIGFueSBnZW5lcmF0 ZWQgYW5kIHBvc3NpYmx5IGluY2x1ZGVkIFBDSCB0byBiZSBpbnZhbGlkLgog ICAgIHJldHVybiAiLURfX0dMSUJDWFhfXz05OTk5OTk5OSIKSW5kZXg6IHRl c3RzdWl0ZS91dGlsL3Rlc3RzdWl0ZV9hYmkuY2MKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gdGVzdHN1aXRlL3V0aWwvdGVzdHN1aXRlX2FiaS5jYwko cmV2aXNpb24gMTc0MzA3KQorKysgdGVzdHN1aXRlL3V0aWwvdGVzdHN1aXRl X2FiaS5jYwkod29ya2luZyBjb3B5KQpAQCAtMTk0LDYgKzE5NCw3IEBACiAg ICAgICBrbm93bl92ZXJzaW9ucy5wdXNoX2JhY2soIkdMSUJDWFhfMy40LjE0 Iik7CiAgICAgICBrbm93bl92ZXJzaW9ucy5wdXNoX2JhY2soIkdMSUJDWFhf My40LjE1Iik7CiAgICAgICBrbm93bl92ZXJzaW9ucy5wdXNoX2JhY2soIkdM SUJDWFhfMy40LjE2Iik7CisgICAgICBrbm93bl92ZXJzaW9ucy5wdXNoX2Jh Y2soIkdMSUJDWFhfMy40LjE3Iik7CiAgICAgICBrbm93bl92ZXJzaW9ucy5w dXNoX2JhY2soIkdMSUJDWFhfTERCTF8zLjQiKTsKICAgICAgIGtub3duX3Zl cnNpb25zLnB1c2hfYmFjaygiR0xJQkNYWF9MREJMXzMuNC43Iik7CiAgICAg ICBrbm93bl92ZXJzaW9ucy5wdXNoX2JhY2soIkdMSUJDWFhfTERCTF8zLjQu MTAiKTsKSW5kZXg6IHRlc3RzdWl0ZS8zMF90aHJlYWRzL3RocmVhZC9tZW1i ZXJzL2hhcmR3YXJlX2NvbmN1cnJlbmN5LmNjCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHRlc3RzdWl0ZS8zMF90aHJlYWRzL3RocmVhZC9tZW1iZXJz L2hhcmR3YXJlX2NvbmN1cnJlbmN5LmNjCShyZXZpc2lvbiAxNzQzMDcpCisr KyB0ZXN0c3VpdGUvMzBfdGhyZWFkcy90aHJlYWQvbWVtYmVycy9oYXJkd2Fy ZV9jb25jdXJyZW5jeS5jYwkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDkg QEAKIC8vIHsgZGctb3B0aW9ucyAiIC1zdGQ9Z251KysweCAiIHsgdGFyZ2V0 ICotKi1jeWd3aW4gKi0qLWRhcndpbiogfSB9CiAvLyB7IGRnLXJlcXVpcmUt Y3N0ZGludCAiIiB9CiAvLyB7IGRnLXJlcXVpcmUtZ3RocmVhZHMgIiIgfQor Ly8geyBkZy1yZXF1aXJlLW5wcm9jcyAiIiB9CiAKLS8vIENvcHlyaWdodCAo QykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vIENv cHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KIC8vCiAvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVl CiAvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUKQEAgLTI5LDggKzMwLDcgQEAKIHsKICAg Ym9vbCB0ZXN0IF9fYXR0cmlidXRlX18oKHVudXNlZCkpID0gdHJ1ZTsKIAot ICAvLyBDdXJyZW50IGltcGxlbWVudGF0aW9uIHB1bnRzIG9uIHRoaXMuCi0g IFZFUklGWSggc3RkOjp0aHJlYWQ6OmhhcmR3YXJlX2NvbmN1cnJlbmN5KCkg PT0gMCApOworICBWRVJJRlkoIHN0ZDo6dGhyZWFkOjpoYXJkd2FyZV9jb25j dXJyZW5jeSgpID49IDEgKTsKIAogICByZXR1cm4gMDsKIH0K --000e0cd32cce70c46204a44b59bb--