From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13416 invoked by alias); 18 Oct 2014 20:18:18 -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 13391 invoked by uid 89); 18 Oct 2014 20:18:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-oi0-f54.google.com Received: from mail-oi0-f54.google.com (HELO mail-oi0-f54.google.com) (209.85.218.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sat, 18 Oct 2014 20:18:14 +0000 Received: by mail-oi0-f54.google.com with SMTP id v63so2052113oia.13 for ; Sat, 18 Oct 2014 13:18:12 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.182.55.74 with SMTP id q10mr14465450obp.26.1413663492345; Sat, 18 Oct 2014 13:18:12 -0700 (PDT) Received: by 10.76.151.36 with HTTP; Sat, 18 Oct 2014 13:18:12 -0700 (PDT) Date: Sat, 18 Oct 2014 20:23:00 -0000 Message-ID: Subject: [libstdc++ PATCH] More Fundamentals v1 variable templates From: Ville Voutilainen To: "gcc-patches@gcc.gnu.org" , libstdc++@gcc.gnu.org Content-Type: multipart/mixed; boundary=089e01537a124b42980505b82e46 X-SW-Source: 2014-10/txt/msg01823.txt.bz2 --089e01537a124b42980505b82e46 Content-Type: text/plain; charset=UTF-8 Content-length: 657 Tested on Linux-x64. 2014-10-18 Ville Voutilainen Implement more Library Fundamentals v1 variable templates for type traits. * include/Makefile.am: Add ratio, chrono and system_error. * include/experimental/chrono: New. * include/experimental/ratio: Likewise. * include/experimental/system_error: Likewise. * include/experimental/tuple (tuple_size_v): Likewise. * testsuite/experimental/chrono/value.cc: Likewise. * testsuite/experimental/ratio/value.cc: Likewise. * testsuite/experimental/system_error/value.cc: Likewise. * testsuite/experimental/tuple/tuple_size.cc: Likewise. --089e01537a124b42980505b82e46 Content-Type: text/plain; charset=UTF-8; name="fundamentals-more-traits.diff" Content-Disposition: attachment; filename="fundamentals-more-traits.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i1feq82q0 Content-length: 21395 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL01ha2VmaWxlLmFt IGIvbGlic3RkYysrLXYzL2luY2x1ZGUvTWFrZWZpbGUuYW0KaW5kZXggMWVl OGRkYy4uYzc5NzI0NiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1 ZGUvTWFrZWZpbGUuYW0KKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvTWFr ZWZpbGUuYW0KQEAgLTY0NCw3ICs2NDQsMTAgQEAgZXhwZXJpbWVudGFsX2hl YWRlcnMgPSBcCiAJJHtleHBlcmltZW50YWxfc3JjZGlyfS9zdHJpbmdfdmll dyBcCiAJJHtleHBlcmltZW50YWxfc3JjZGlyfS9zdHJpbmdfdmlldy50Y2Mg XAogCSR7ZXhwZXJpbWVudGFsX3NyY2Rpcn0vdHVwbGUgXAotCSR7ZXhwZXJp bWVudGFsX3NyY2Rpcn0vdHlwZV90cmFpdHMKKwkke2V4cGVyaW1lbnRhbF9z cmNkaXJ9L3R5cGVfdHJhaXRzIFwKKwkke2V4cGVyaW1lbnRhbF9zcmNkaXJ9 L3JhdGlvIFwKKwkke2V4cGVyaW1lbnRhbF9zcmNkaXJ9L2Nocm9ubyBcCisJ JHtleHBlcmltZW50YWxfc3JjZGlyfS9zeXN0ZW1fZXJyb3IgXAogCiAjIFRo aXMgaXMgdGhlIGNvbW1vbiBzdWJzZXQgb2YgQysrIGZpbGVzIHRoYXQgYWxs IHRocmVlICJDIiBoZWFkZXIgbW9kZWxzIHVzZS4KIGNfYmFzZV9zcmNkaXIg PSAkKENfSU5DTFVERV9ESVIpCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv aW5jbHVkZS9leHBlcmltZW50YWwvY2hyb25vIGIvbGlic3RkYysrLXYzL2lu Y2x1ZGUvZXhwZXJpbWVudGFsL2Nocm9ubwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kODE3ZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIv bGlic3RkYysrLXYzL2luY2x1ZGUvZXhwZXJpbWVudGFsL2Nocm9ubwpAQCAt MCwwICsxLDY1IEBACisvLyBWYXJpYWJsZSBUZW1wbGF0ZXMgRm9yIGNocm9u byAtKi0gQysrIC0qLQorCisvLyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJh cnkgaXMgZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVy c2lvbi4KKworLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworLy8gVW5kZXIg U2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBh ZGRpdGlvbmFsCisvLyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisvLyAzLjEs IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LgorCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKy8vIGEgY29weSBv ZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07CisvLyBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFu ZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUK Ky8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworLyoqIEBm aWxlIGV4cGVyaW1lbnRhbC9jaHJvbm8KKyAqICBUaGlzIGlzIGEgVFMgQysr IExpYnJhcnkgaGVhZGVyLgorICovCisKKy8vCisvLyBOMzkzMiBWYXJpYWJs ZSBUZW1wbGF0ZXMgRm9yIFR5cGUgVHJhaXRzIChSZXZpc2lvbiAxKQorLy8K KworI2lmbmRlZiBfR0xJQkNYWF9FWFBFUklNRU5UQUxfQ0hST05PCisjZGVm aW5lIF9HTElCQ1hYX0VYUEVSSU1FTlRBTF9DSFJPTk8gMQorCisjcHJhZ21h IEdDQyBzeXN0ZW1faGVhZGVyCisKKyNpZiBfX2NwbHVzcGx1cyA8PSAyMDEx MDNMCisjIGluY2x1ZGUgPGJpdHMvYysrMTRfd2FybmluZy5oPgorI2Vsc2UK KworI2luY2x1ZGUgPGNocm9ubz4KKworCituYW1lc3BhY2Ugc3RkIF9HTElC Q1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKK3sKK25hbWVzcGFjZSBjaHJvbm8g eworbmFtZXNwYWNlIGV4cGVyaW1lbnRhbAoreworaW5saW5lIG5hbWVzcGFj ZSBmdW5kYW1lbnRhbHNfdjEKK3sKK19HTElCQ1hYX0JFR0lOX05BTUVTUEFD RV9WRVJTSU9OCisvLyBTZWUgQysrMTQgwqcyMC4xMi40LCBjdXN0b21pemF0 aW9uIHRyYWl0cwordGVtcGxhdGUgPGNsYXNzIF9SZXA+CisgICBjb25zdGV4 cHIgYm9vbCB0cmVhdF9hc19mbG9hdGluZ19wb2ludF92ID0KKyAgICAgdHJl YXRfYXNfZmxvYXRpbmdfcG9pbnQ8X1JlcD46OnZhbHVlOworX0dMSUJDWFhf RU5EX05BTUVTUEFDRV9WRVJTSU9OCit9IC8vIG5hbWVzcGFjZSBmdW5kYW1l bnRhbHNfdjEKK30gLy8gbmFtZXNwYWNlIGV4cGVyaW1lbnRhbAorfSAvLyBu YW1lc3BhY2UgY2hyb25vCit9IC8vIG5hbWVzcGFjZSBzdGQKKworI2VuZGlm IC8vIF9fY3BsdXNwbHVzIDw9IDIwMTEwM0wKKworI2VuZGlmIC8vIF9HTElC Q1hYX0VYUEVSSU1FTlRBTF9DSFJPTk8KZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9pbmNsdWRlL2V4cGVyaW1lbnRhbC9yYXRpbyBiL2xpYnN0ZGMrKy12 My9pbmNsdWRlL2V4cGVyaW1lbnRhbC9yYXRpbwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kYmJlMzNmCi0tLSAvZGV2L251bGwKKysr IGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZXhwZXJpbWVudGFsL3JhdGlvCkBA IC0wLDAgKzEsNzMgQEAKKy8vIFZhcmlhYmxlIFRlbXBsYXRlcyBGb3IgcmF0 aW8gLSotIEMrKyAtKi0KKworLy8gQ29weXJpZ2h0IChDKSAyMDE0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJy YXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8gdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZl cnNpb24uCisKKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKy8vIFVuZGVy IFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQg YWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBH Q0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4x LCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisvLyBhIGNvcHkg b2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBh bmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2Vl CisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKy8qKiBA ZmlsZSBleHBlcmltZW50YWwvcmF0aW8KKyAqICBUaGlzIGlzIGEgVFMgQysr IExpYnJhcnkgaGVhZGVyLgorICovCisKKy8vCisvLyBOMzkzMiBWYXJpYWJs ZSBUZW1wbGF0ZXMgRm9yIFR5cGUgVHJhaXRzIChSZXZpc2lvbiAxKQorLy8K KworI2lmbmRlZiBfR0xJQkNYWF9FWFBFUklNRU5UQUxfUkFUSU8KKyNkZWZp bmUgX0dMSUJDWFhfRVhQRVJJTUVOVEFMX1JBVElPIDEKKworI3ByYWdtYSBH Q0Mgc3lzdGVtX2hlYWRlcgorCisjaWYgX19jcGx1c3BsdXMgPD0gMjAxMTAz TAorIyBpbmNsdWRlIDxiaXRzL2MrKzE0X3dhcm5pbmcuaD4KKyNlbHNlCisK KyNpbmNsdWRlIDxyYXRpbz4KKworCituYW1lc3BhY2Ugc3RkIF9HTElCQ1hY X1ZJU0lCSUxJVFkoZGVmYXVsdCkKK3sKK25hbWVzcGFjZSBleHBlcmltZW50 YWwKK3sKK2lubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3YxCit7Citf R0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorLy8gU2VlIEMrKzE0 IMKnMjAuMTEuNSwgcmF0aW8gY29tcGFyaXNvbgordGVtcGxhdGUgPGNsYXNz IF9SMSwgY2xhc3MgX1IyPgorICBjb25zdGV4cHIgYm9vbCByYXRpb19lcXVh bF92ID0gcmF0aW9fZXF1YWw8X1IxLCBfUjI+Ojp2YWx1ZTsKK3RlbXBsYXRl IDxjbGFzcyBfUjEsIGNsYXNzIF9SMj4KKyAgY29uc3RleHByIGJvb2wgcmF0 aW9fbm90X2VxdWFsX3YgPSByYXRpb19ub3RfZXF1YWw8X1IxLCBfUjI+Ojp2 YWx1ZTsKK3RlbXBsYXRlIDxjbGFzcyBfUjEsIGNsYXNzIF9SMj4KKyAgY29u c3RleHByIGJvb2wgcmF0aW9fbGVzc192ID0gcmF0aW9fbGVzczxfUjEsIF9S Mj46OnZhbHVlOwordGVtcGxhdGUgPGNsYXNzIF9SMSwgY2xhc3MgX1IyPgor ICBjb25zdGV4cHIgYm9vbCByYXRpb19sZXNzX2VxdWFsX3YgPSByYXRpb19s ZXNzX2VxdWFsPF9SMSwgX1IyPjo6dmFsdWU7Cit0ZW1wbGF0ZSA8Y2xhc3Mg X1IxLCBjbGFzcyBfUjI+CisgIGNvbnN0ZXhwciBib29sIHJhdGlvX2dyZWF0 ZXJfdiA9IHJhdGlvX2dyZWF0ZXI8X1IxLCBfUjI+Ojp2YWx1ZTsKK3RlbXBs YXRlIDxjbGFzcyBfUjEsIGNsYXNzIF9SMj4KKyAgY29uc3RleHByIGJvb2wg cmF0aW9fZ3JlYXRlcl9lcXVhbF92ID0gcmF0aW9fZ3JlYXRlcl9lcXVhbDxf UjEsIF9SMj46OnZhbHVlOworCitfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZF UlNJT04KK30gLy8gbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MQorfSAvLyBu YW1lc3BhY2UgZXhwZXJpbWVudGFsCit9IC8vIG5hbWVzcGFjZSBzdGQKKwor I2VuZGlmIC8vIF9fY3BsdXNwbHVzIDw9IDIwMTEwM0wKKworI2VuZGlmIC8v IF9HTElCQ1hYX0VYUEVSSU1FTlRBTF9SQVRJTwpkaWZmIC0tZ2l0IGEvbGli c3RkYysrLXYzL2luY2x1ZGUvZXhwZXJpbWVudGFsL3N5c3RlbV9lcnJvciBi L2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4cGVyaW1lbnRhbC9zeXN0ZW1fZXJy b3IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyYTRl YQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2V4 cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3IKQEAgLTAsMCArMSw2NCBAQAorLy8g VmFyaWFibGUgVGVtcGxhdGVzIEZvciBzeXN0ZW1fZXJyb3IgLSotIEMrKyAt Ki0KKworLy8gQ29weXJpZ2h0IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUK Ky8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisKKy8v IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8v IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKy8vIFVuZGVyIFNlY3Rpb24gNyBv ZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAor Ly8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBM aWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdDQyBS dW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5S VU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKy8qKiBAZmlsZSBleHBlcmlt ZW50YWwvc3lzdGVtX2Vycm9yCisgKiAgVGhpcyBpcyBhIFRTIEMrKyBMaWJy YXJ5IGhlYWRlci4KKyAqLworCisvLworLy8gTjM5MzIgVmFyaWFibGUgVGVt cGxhdGVzIEZvciBUeXBlIFRyYWl0cyAoUmV2aXNpb24gMSkKKy8vCisKKyNp Zm5kZWYgX0dMSUJDWFhfRVhQRVJJTUVOVEFMX1NZU1RFTV9FUlJPUgorI2Rl ZmluZSBfR0xJQkNYWF9FWFBFUklNRU5UQUxfQ0hST05PIDEKKworI3ByYWdt YSBHQ0Mgc3lzdGVtX2hlYWRlcgorCisjaWYgX19jcGx1c3BsdXMgPD0gMjAx MTAzTAorIyBpbmNsdWRlIDxiaXRzL2MrKzE0X3dhcm5pbmcuaD4KKyNlbHNl CisKKyNpbmNsdWRlIDxzeXN0ZW1fZXJyb3I+CisKKworbmFtZXNwYWNlIHN0 ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCit7CituYW1lc3BhY2Ug ZXhwZXJpbWVudGFsCit7CitpbmxpbmUgbmFtZXNwYWNlIGZ1bmRhbWVudGFs c192MQoreworX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KKy8v IFNlZSBDKysxNCDCpzE5LjUsIFN5c3RlbSBlcnJvciBzdXBwb3J0Cit0ZW1w bGF0ZSA8Y2xhc3MgVD4KKyAgY29uc3RleHByIGJvb2wgaXNfZXJyb3JfY29k ZV9lbnVtX3YgPSBpc19lcnJvcl9jb2RlX2VudW08VD46OnZhbHVlOwordGVt cGxhdGUgPGNsYXNzIFQ+CisgIGNvbnN0ZXhwciBib29sIGlzX2Vycm9yX2Nv bmRpdGlvbl9lbnVtX3YgPSBpc19lcnJvcl9jb25kaXRpb25fZW51bTxUPjo6 dmFsdWU7CitfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KK30gLy8g bmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MQorfSAvLyBuYW1lc3BhY2UgZXhw ZXJpbWVudGFsCit9IC8vIG5hbWVzcGFjZSBzdGQKKworI2VuZGlmIC8vIF9f Y3BsdXNwbHVzIDw9IDIwMTEwM0wKKworI2VuZGlmIC8vIF9HTElCQ1hYX0VY UEVSSU1FTlRBTF9TWVNURU1fRVJST1IKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9pbmNsdWRlL2V4cGVyaW1lbnRhbC90dXBsZSBiL2xpYnN0ZGMrKy12 My9pbmNsdWRlL2V4cGVyaW1lbnRhbC90dXBsZQppbmRleCBiYmZiZGZhLi41 Nzk0ZTkxIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9leHBl cmltZW50YWwvdHVwbGUKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvZXhw ZXJpbWVudGFsL3R1cGxlCkBAIC00NCw2ICs0NCw5IEBAIG5hbWVzcGFjZSBl eHBlcmltZW50YWwKIGlubGluZSBuYW1lc3BhY2UgZnVuZGFtZW50YWxzX3Yx CiB7CiBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorICAvLyBT ZWUgQysrMTQgwqcyMC40LjIuNSwgdHVwbGUgaGVscGVyIGNsYXNzZXMKKyAg dGVtcGxhdGUgPGNsYXNzIF9UcD4KKyAgICBjb25zdGV4cHIgc2l6ZV90IHR1 cGxlX3NpemVfdiA9IHR1cGxlX3NpemU8X1RwPjo6dmFsdWU7CiAKICAgdGVt cGxhdGUgPHR5cGVuYW1lIF9GbiwgdHlwZW5hbWUgX1R1cGxlLCBzdGQ6OnNp emVfdC4uLiBfSWR4PgogICAgIGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKQpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9leHBlcmltZW50 YWwvY2hyb25vL3ZhbHVlLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9l eHBlcmltZW50YWwvY2hyb25vL3ZhbHVlLmNjCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmMwNmMxMmEKLS0tIC9kZXYvbnVsbAorKysg Yi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4cGVyaW1lbnRhbC9jaHJvbm8v dmFsdWUuY2MKQEAgLTAsMCArMSwzNCBAQAorLy8geyBkZy1vcHRpb25zICIt c3RkPWdudSsrMTQiIH0KKy8vIHsgZGctZG8gY29tcGlsZSB9CisKKy8vIENv cHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBD KysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9w dGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorCisvLyBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBt b3ZlZF90byBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyNpbmNsdWRlIDxleHBlcmltZW50YWwvY2hyb25vPgorCit1 c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87Cit1c2luZyBuYW1lc3BhY2Ug c3RkOjpjaHJvbm86OmV4cGVyaW1lbnRhbDsKKworLy8gVGhlc2UgdGVzdHMg YXJlIHJhdGhlciBzaW1wbGUsIHRoZSBmcm9udC1lbmQgdGVzdHMgYWxyZWFk eSB0ZXN0CisvLyB2YXJpYWJsZSB0ZW1wbGF0ZXMsIGFuZCB0aGUgbGlicmFy eSB0ZXN0cyBmb3IgdGhlIHVuZGVybHlpbmcKKy8vIHRyYWl0cyBhcmUgbW9y ZSBlbGFib3JhdGUuIFRoZXNlIGFyZSBqdXN0IHNpbXBsZSBzYW5pdHkgdGVz dHMuCisKK3N0YXRpY19hc3NlcnQoIXRyZWF0X2FzX2Zsb2F0aW5nX3BvaW50 X3Y8aW50PgorCSAgICAgICYmICF0cmVhdF9hc19mbG9hdGluZ19wb2ludDxp bnQ+Ojp2YWx1ZSwgIiIpOworCitzdGF0aWNfYXNzZXJ0KHRyZWF0X2FzX2Zs b2F0aW5nX3BvaW50X3Y8ZG91YmxlPgorCSAgICAgICYmIHRyZWF0X2FzX2Zs b2F0aW5nX3BvaW50PGRvdWJsZT46OnZhbHVlLCAiIik7CmRpZmYgLS1naXQg YS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4cGVyaW1lbnRhbC9yYXRpby92 YWx1ZS5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvZXhwZXJpbWVudGFs L3JhdGlvL3ZhbHVlLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjRjOGJkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKyst djMvdGVzdHN1aXRlL2V4cGVyaW1lbnRhbC9yYXRpby92YWx1ZS5jYwpAQCAt MCwwICsxLDUwIEBACisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysxNCIg fQorLy8geyBkZy1kbyBjb21waWxlIH0KKworLy8gQ29weXJpZ2h0IChDKSAy MDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAg VGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8g dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55 IGxhdGVyIHZlcnNpb24uCisKKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8g YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK Ky8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIG1vdmVkX3RvIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworLy8gd2l0aCB0 aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBz ZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworI2lu Y2x1ZGUgPGV4cGVyaW1lbnRhbC9yYXRpbz4KKwordXNpbmcgbmFtZXNwYWNl IHN0ZDsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDsKKwor Ly8gVGhlc2UgdGVzdHMgYXJlIHJhdGhlciBzaW1wbGUsIHRoZSBmcm9udC1l bmQgdGVzdHMgYWxyZWFkeSB0ZXN0CisvLyB2YXJpYWJsZSB0ZW1wbGF0ZXMs IGFuZCB0aGUgbGlicmFyeSB0ZXN0cyBmb3IgdGhlIHVuZGVybHlpbmcKKy8v IHRyYWl0cyBhcmUgbW9yZSBlbGFib3JhdGUuIFRoZXNlIGFyZSBqdXN0IHNp bXBsZSBzYW5pdHkgdGVzdHMuCisKK3N0YXRpY19hc3NlcnQocmF0aW9fZXF1 YWxfdjxyYXRpbzwxLCAzPiwgcmF0aW88MiwgNj4+CisJICAgICAgJiYgcmF0 aW9fZXF1YWw8cmF0aW88MSwgMz4sIHJhdGlvPDIsIDY+Pjo6dmFsdWUsICIi KTsKKworc3RhdGljX2Fzc2VydChyYXRpb19ub3RfZXF1YWxfdjxyYXRpbzwx LCAzPiwgcmF0aW88MiwgNT4+CisJICAgICAgJiYgcmF0aW9fbm90X2VxdWFs PHJhdGlvPDEsIDM+LCByYXRpbzwyLCA1Pj46OnZhbHVlLCAiIik7CisKK3N0 YXRpY19hc3NlcnQocmF0aW9fbGVzc192PHJhdGlvPDEsIDQ+LCByYXRpbzwx LCAzPj4KKwkgICAgICAmJiByYXRpb19sZXNzPHJhdGlvPDEsIDQ+LCByYXRp bzwxLCAzPj46OnZhbHVlLCAiIik7CisKK3N0YXRpY19hc3NlcnQocmF0aW9f bGVzc19lcXVhbF92PHJhdGlvPDEsIDQ+LCByYXRpbzwxLCA0Pj4KKwkgICAg ICAmJiByYXRpb19sZXNzX2VxdWFsX3Y8cmF0aW88MSwgND4sIHJhdGlvPDEs IDM+PgorCSAgICAgICYmIHJhdGlvX2xlc3NfZXF1YWw8cmF0aW88MSwgND4s IHJhdGlvPDEsIDQ+Pjo6dmFsdWUKKwkgICAgICAmJiByYXRpb19sZXNzX2Vx dWFsPHJhdGlvPDEsIDQ+LCByYXRpbzwxLCAzPj46OnZhbHVlLCAiIik7CisK K3N0YXRpY19hc3NlcnQocmF0aW9fZ3JlYXRlcl92PHJhdGlvPDEsIDM+LCBy YXRpbzwxLCA0Pj4KKwkgICAgICAmJiByYXRpb19ncmVhdGVyPHJhdGlvPDEs IDM+LCByYXRpbzwxLCA0Pj46OnZhbHVlLCAiIik7CisKK3N0YXRpY19hc3Nl cnQocmF0aW9fZ3JlYXRlcl9lcXVhbF92PHJhdGlvPDEsIDQ+LCByYXRpbzwx LCA0Pj4KKwkgICAgICAmJiByYXRpb19ncmVhdGVyX2VxdWFsX3Y8cmF0aW88 MSwgMz4sIHJhdGlvPDEsIDQ+PgorCSAgICAgICYmIHJhdGlvX2dyZWF0ZXJf ZXF1YWw8cmF0aW88MSwgND4sIHJhdGlvPDEsIDQ+Pjo6dmFsdWUKKwkgICAg ICAmJiByYXRpb19ncmVhdGVyX2VxdWFsPHJhdGlvPDEsIDM+LCByYXRpbzwx LCA0Pj46OnZhbHVlLCAiIik7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv dGVzdHN1aXRlL2V4cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3IvdmFsdWUuY2Mg Yi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4cGVyaW1lbnRhbC9zeXN0ZW1f ZXJyb3IvdmFsdWUuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNjZiNDBmYgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvZXhwZXJpbWVudGFsL3N5c3RlbV9lcnJvci92YWx1ZS5j YwpAQCAtMCwwICsxLDQwIEBACisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251 KysxNCIgfQorLy8geyBkZy1kbyBjb21waWxlIH0KKworLy8gQ29weXJpZ2h0 IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8K Ky8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJy YXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRo ZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQor Ly8gYW55IGxhdGVyIHZlcnNpb24uCisKKy8vIFRoaXMgbGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Ky8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIG1vdmVkX3Rv IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworLy8g d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KworI2luY2x1ZGUgPGV4cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3I+CisjaW5j bHVkZSA8ZnV0dXJlPgordXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIG5h bWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDsKKworLy8gVGhlc2UgdGVzdHMg YXJlIHJhdGhlciBzaW1wbGUsIHRoZSBmcm9udC1lbmQgdGVzdHMgYWxyZWFk eSB0ZXN0CisvLyB2YXJpYWJsZSB0ZW1wbGF0ZXMsIGFuZCB0aGUgbGlicmFy eSB0ZXN0cyBmb3IgdGhlIHVuZGVybHlpbmcKKy8vIHRyYWl0cyBhcmUgbW9y ZSBlbGFib3JhdGUuIFRoZXNlIGFyZSBqdXN0IHNpbXBsZSBzYW5pdHkgdGVz dHMuCisKK3N0YXRpY19hc3NlcnQoaXNfZXJyb3JfY29kZV9lbnVtX3Y8ZnV0 dXJlX2VycmM+CisJICAgICAgJiYgaXNfZXJyb3JfY29kZV9lbnVtPGZ1dHVy ZV9lcnJjPjo6dmFsdWUsICIiKTsKKworc3RhdGljX2Fzc2VydCghaXNfZXJy b3JfY29kZV9lbnVtX3Y8aW50PgorCSAgICAgICYmICFpc19lcnJvcl9jb2Rl X2VudW08aW50Pjo6dmFsdWUsICIiKTsKKworc3RhdGljX2Fzc2VydChpc19l cnJvcl9jb25kaXRpb25fZW51bV92PGVycmM+CisJICAgICAgJiYgaXNfZXJy b3JfY29uZGl0aW9uX2VudW08ZXJyYz46OnZhbHVlLCAiIik7CisKK3N0YXRp Y19hc3NlcnQoIWlzX2Vycm9yX2NvbmRpdGlvbl9lbnVtX3Y8aW50PgorCSAg ICAgICYmICFpc19lcnJvcl9jb25kaXRpb25fZW51bTxpbnQ+Ojp2YWx1ZSwg IiIpOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9leHBl cmltZW50YWwvdHVwbGUvdHVwbGVfc2l6ZS5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvZXhwZXJpbWVudGFsL3R1cGxlL3R1cGxlX3NpemUuY2MKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA0ZTJjOQotLS0g L2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvZXhwZXJp bWVudGFsL3R1cGxlL3R1cGxlX3NpemUuY2MKQEAgLTAsMCArMSwzNCBAQAor Ly8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMTQiIH0KKy8vIHsgZGctZG8g Y29tcGlsZSB9CisKKy8vIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBp cyBmcmVlCisvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl CisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9u LgorCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisvLyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBtb3ZlZF90byBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYWxvbmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBz ZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisvLyA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDxleHBlcmlt ZW50YWwvdHVwbGU+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBu YW1lc3BhY2Ugc3RkOjpleHBlcmltZW50YWw7CisKKy8vIFRoZXNlIHRlc3Rz IGFyZSByYXRoZXIgc2ltcGxlLCB0aGUgZnJvbnQtZW5kIHRlc3RzIGFscmVh ZHkgdGVzdAorLy8gdmFyaWFibGUgdGVtcGxhdGVzLCBhbmQgdGhlIGxpYnJh cnkgdGVzdHMgZm9yIHRoZSB1bmRlcmx5aW5nCisvLyB0cmFpdHMgYXJlIG1v cmUgZWxhYm9yYXRlLiBUaGVzZSBhcmUganVzdCBzaW1wbGUgc2FuaXR5IHRl c3RzLgorCitzdGF0aWNfYXNzZXJ0KHR1cGxlX3NpemVfdjx0dXBsZTxpbnQ+ PiA9PSAxCisJICAgICAgJiYgdHVwbGVfc2l6ZTx0dXBsZTxpbnQ+Pjo6dmFs dWUgPT0gMSwgIiIpOworCitzdGF0aWNfYXNzZXJ0KHR1cGxlX3NpemVfdjx0 dXBsZTxpbnQsIGludD4+ID09IDIKKwkgICAgICAmJiB0dXBsZV9zaXplPHR1 cGxlPGludCwgaW50Pj46OnZhbHVlID09IDIsICIiKTsK --089e01537a124b42980505b82e46--