Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:39577 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 80301 invoked from network); 3 Aug 2008 20:24:21 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Aug 2008 20:24:21 -0000 Authentication-Results: pb1.pair.com header.from=rewbs.soal@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=rewbs.soal@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 72.14.220.157 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: rewbs.soal@gmail.com X-Host-Fingerprint: 72.14.220.157 fg-out-1718.google.com Received: from [72.14.220.157] ([72.14.220.157:31707] helo=fg-out-1718.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 8F/C4-50899-3F316984 for ; Sun, 03 Aug 2008 16:24:20 -0400 Received: by fg-out-1718.google.com with SMTP id 16so1233927fgg.23 for ; Sun, 03 Aug 2008 13:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:in-reply-to:mime-version:content-type:references :x-google-sender-auth; bh=ytn2EjVSQ47n5SeOy65kuBle5HYQdFTAPVsSdl+vB/I=; b=JwvtdNhK3KIhHqXx95dMxf2PHvODc5zMA57x5xnQXftIjqliIeISGXZ0Mb1CqGxBwQ 41bpL6DBXpJPXJQarIaI29ww5vKPyTvkaaZJFP0IeMEApWGYNyl5+8aHMWP9hWTfUWkx FIuduYO3ZCHpFGzKKeNamoBvrBCsNxI1AD6Jw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:references:x-google-sender-auth; b=pjPTyNieuZxN6qsGD2WHwxTRZ8OElahv6dy/KRnZQGj5AL2YNNcVGBXJzUnUsvg7a5 oMpvE7Lm+kGF1/Ja8eB7/AzSL7IhUMgpJGvwPBOWvtqZK6hw1BXvxRqZOxyCbt7CgkHo cuA4UCKo82Np6tvxDqwHJvGV7VKxQfdnT/B6w= Received: by 10.86.96.18 with SMTP id t18mr9673715fgb.78.1217795057241; Sun, 03 Aug 2008 13:24:17 -0700 (PDT) Received: by 10.86.23.9 with HTTP; Sun, 3 Aug 2008 13:24:17 -0700 (PDT) Message-ID: <5a8807d10808031324k2f83789ak233d75ec704a6c31@mail.gmail.com> Date: Sun, 3 Aug 2008 21:24:17 +0100 Sender: rewbs.soal@gmail.com To: "Marcus Boerger" Cc: internals In-Reply-To: <93357385.20080803141751@marcus-boerger.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_11526_25812487.1217795057243" References: <5a8807d10808030407j14f51cb6ga7d917d51c6206ac@mail.gmail.com> <93357385.20080803141751@marcus-boerger.de> X-Google-Sender-Auth: bfc8459ef83c0380 Subject: Re: [PHP-DEV] Intended behavior of ArrayObject::exchangeArray() ? From: robinf@php.net ("Robin Fernandes") ------=_Part_11526_25812487.1217795057243 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Marcus! >> 1. What should happen when the argument is an object? > > Seems like an error message is missing there. It allows to take an instance > of another ArrayObject/Iterator and use the array from that. > > In case any other Object is passed it is ignored. What do you feel? Sounds alright to me, but it's inconsistent with __construct(), which in addition to using the storage array from ArrayObject/Iterator instances, can use the properties from any other kind of object. Also, just to be clear, I should point out that it is not the current behaviour. Passing any object to exchangeArray(), even an instance of ArrayObject/Iterator, eradicates the container: exchangeArray($ao2); var_dump($ao1); ?> Output on PHP 5.3.0-dev (cli) (built: Jul 28 2008 00:21:59): object(ArrayObject)#1 (0) { } >> Here's a suggested patch against 5_3 that implements this (and >> includes some tests): http://pastebin.ca/1091668 >> Note that I'm not an internals or SPL expert, so let me know if I >> missed something. > > Seems about right. Can you attach the patch as a text file (I cannot open > the link). Attached. I just naively moved some logic from __construct() into a separate function and called it from both __construct() and exchangeArray(). Thanks! Robin ------=_Part_11526_25812487.1217795057243 Content-Type: text/plain; name=ArrayObject.exchangeArray.patch.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_fjg28y730 Content-Disposition: attachment; filename=ArrayObject.exchangeArray.patch.txt SW5kZXg6IHNwbF9hcnJheS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhw LXNyYy9leHQvc3BsL3NwbF9hcnJheS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS43MS4yLjE3 LjIuMTMuMi4xOQ0KZGlmZiAtdSAtdyAtcCAtcjEuNzEuMi4xNy4yLjEzLjIuMTkgc3BsX2FycmF5 LmMNCi0tLSBzcGxfYXJyYXkuYwkyNiBKdWwgMjAwOCAxMjozNDoxMCAtMDAwMAkxLjcxLjIuMTcu Mi4xMy4yLjE5DQorKysgc3BsX2FycmF5LmMJMyBBdWcgMjAwOCAxOTo0Mjo1MCAtMDAwMA0KQEAg LTg5Miw2ICs4OTIsNTEgQEAgc3RhdGljIHZvaWQgc3BsX2FycmF5X2l0X3Jld2luZCh6ZW5kX29i ag0KIH0NCiAvKiB9fX0gKi8NCiANCisvKiB7e3sgc3BsX2FycmF5X3NldF9hcnJheSAqLw0KK3N0 YXRpYyB2b2lkIHNwbF9hcnJheV9zZXRfYXJyYXkoenZhbCAqb2JqZWN0LCBzcGxfYXJyYXlfb2Jq ZWN0ICppbnRlcm4sIHp2YWwgKiphcnJheSwgbG9uZyBhcl9mbGFncywgaW50IGp1c3RfYXJyYXkg VFNSTUxTX0RDKSB7DQorDQorCWlmIChaX1RZUEVfUFAoYXJyYXkpID09IElTX0FSUkFZKSB7DQor CQlTRVBBUkFURV9aVkFMX0lGX05PVF9SRUYoYXJyYXkpOw0KKwl9DQorDQorCWlmIChaX1RZUEVf UFAoYXJyYXkpID09IElTX09CSkVDVCAmJiAoWl9PQkpfSFRfUFAoYXJyYXkpID09ICZzcGxfaGFu ZGxlcl9BcnJheU9iamVjdCB8fCBaX09CSl9IVF9QUChhcnJheSkgPT0gJnNwbF9oYW5kbGVyX0Fy cmF5SXRlcmF0b3IpKSB7DQorCQl6dmFsX3B0cl9kdG9yKCZpbnRlcm4tPmFycmF5KTsNCisJCWlm IChqdXN0X2FycmF5KQl7DQorCQkJc3BsX2FycmF5X29iamVjdCAqb3RoZXIgPSAoc3BsX2FycmF5 X29iamVjdCopemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdCgqYXJyYXkgVFNSTUxTX0NDKTsN CisJCQlhcl9mbGFncyA9IG90aGVyLT5hcl9mbGFncyAmIH5TUExfQVJSQVlfSU5UX01BU0s7DQor CQl9CQkNCisJCWFyX2ZsYWdzIHw9IFNQTF9BUlJBWV9VU0VfT1RIRVI7DQorCQlpbnRlcm4tPmFy cmF5ID0gKmFycmF5Ow0KKwl9IGVsc2Ugew0KKwkJaWYgKFpfVFlQRV9QUChhcnJheSkgIT0gSVNf T0JKRUNUICYmIFpfVFlQRV9QUChhcnJheSkgIT0gSVNfQVJSQVkpIHsNCisJCQlwaHBfc2V0X2Vy cm9yX2hhbmRsaW5nKEVIX05PUk1BTCwgTlVMTCBUU1JNTFNfQ0MpOw0KKwkJCXplbmRfdGhyb3df ZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sICJQYXNzZWQgdmFyaWFi bGUgaXMgbm90IGFuIGFycmF5IG9yIG9iamVjdCwgdXNpbmcgZW1wdHkgYXJyYXkgaW5zdGVhZCIs IDAgVFNSTUxTX0NDKTsNCisJCQlyZXR1cm47DQorCQl9DQorCQl6dmFsX3B0cl9kdG9yKCZpbnRl cm4tPmFycmF5KTsNCisJCWludGVybi0+YXJyYXkgPSAqYXJyYXk7DQorCX0NCisJaWYgKG9iamVj dCA9PSAqYXJyYXkpIHsNCisJCWludGVybi0+YXJfZmxhZ3MgfD0gU1BMX0FSUkFZX0lTX1NFTEY7 DQorCQlpbnRlcm4tPmFyX2ZsYWdzICY9IH5TUExfQVJSQVlfVVNFX09USEVSOw0KKwl9IGVsc2Ug ew0KKwkJaW50ZXJuLT5hcl9mbGFncyAmPSB+U1BMX0FSUkFZX0lTX1NFTEY7DQorCX0NCisJaW50 ZXJuLT5hcl9mbGFncyB8PSBhcl9mbGFnczsNCisJWl9BRERSRUZfUChpbnRlcm4tPmFycmF5KTsN CisJaWYgKFpfVFlQRV9QUChhcnJheSkgPT0gSVNfT0JKRUNUKSB7DQorCQl6ZW5kX29iamVjdF9n ZXRfcHJvcGVydGllc190IGhhbmRsZXIgPSBaX09CSl9IQU5ETEVSX1BQKGFycmF5LCBnZXRfcHJv cGVydGllcyk7DQorCQlpZiAoKGhhbmRsZXIgIT0gc3RkX29iamVjdF9oYW5kbGVycy5nZXRfcHJv cGVydGllcyAmJiBoYW5kbGVyICE9IHNwbF9hcnJheV9nZXRfcHJvcGVydGllcykNCisJCXx8ICFz cGxfYXJyYXlfZ2V0X2hhc2hfdGFibGUoaW50ZXJuLCAwIFRTUk1MU19DQykpIHsNCisJCQlwaHBf c2V0X2Vycm9yX2hhbmRsaW5nKEVIX05PUk1BTCwgTlVMTCBUU1JNTFNfQ0MpOw0KKwkJCXplbmRf dGhyb3dfZXhjZXB0aW9uX2V4KHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sIDAgVFNS TUxTX0NDLCAiT3ZlcmxvYWRlZCBvYmplY3Qgb2YgdHlwZSAlcyBpcyBub3QgY29tcGF0aWJsZSB3 aXRoICVzIiwgWl9PQkpDRV9QUChhcnJheSktPm5hbWUsIGludGVybi0+c3RkLmNlLT5uYW1lKTsN CisJCX0NCisJfQ0KKw0KKwlzcGxfYXJyYXlfcmV3aW5kKGludGVybiBUU1JNTFNfQ0MpOw0KK30N CisvKiB9fX0gKi8NCisNCiAvKiBpdGVyYXRvciBoYW5kbGVyIHRhYmxlICovDQogemVuZF9vYmpl Y3RfaXRlcmF0b3JfZnVuY3Mgc3BsX2FycmF5X2l0X2Z1bmNzID0gew0KIAlzcGxfYXJyYXlfaXRf ZHRvciwNCkBAIC05NDksMTAgKzk5NCw2IEBAIFNQTF9NRVRIT0QoQXJyYXksIF9fY29uc3RydWN0 KQ0KIAkJcmV0dXJuOw0KIAl9DQogDQotCWlmIChaX1RZUEVfUFAoYXJyYXkpID09IElTX0FSUkFZ KSB7DQotCQlTRVBBUkFURV9aVkFMX0lGX05PVF9SRUYoYXJyYXkpOw0KLQl9DQotDQogCWlmICha RU5EX05VTV9BUkdTKCkgPiAyKSB7DQogCQlpZiAoemVuZF9sb29rdXBfY2xhc3MoY2xhc3NfbmFt ZSwgY2xhc3NfbmFtZV9sZW4sICZwY2VfZ2V0X2l0ZXJhdG9yIFRTUk1MU19DQykgPT0gRkFJTFVS RSkgew0KIAkJCXplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9jZV9JbnZhbGlkQXJndW1lbnRFeGNl cHRpb24sICJBIGNsYXNzIHRoYXQgaW1wbGVtZW50cyBJdGVyYXRvciBtdXN0IGJlIHNwZWNpZmll ZCIsIDAgVFNSTUxTX0NDKTsNCkBAIC05NjQsNDMgKzEwMDUsNyBAQCBTUExfTUVUSE9EKEFycmF5 LCBfX2NvbnN0cnVjdCkNCiANCiAJYXJfZmxhZ3MgJj0gflNQTF9BUlJBWV9JTlRfTUFTSzsNCiAN Ci0JaWYgKFpfVFlQRV9QUChhcnJheSkgPT0gSVNfT0JKRUNUICYmIChaX09CSl9IVF9QUChhcnJh eSkgPT0gJnNwbF9oYW5kbGVyX0FycmF5T2JqZWN0IHx8IFpfT0JKX0hUX1BQKGFycmF5KSA9PSAm c3BsX2hhbmRsZXJfQXJyYXlJdGVyYXRvcikpIHsNCi0JCXp2YWxfcHRyX2R0b3IoJmludGVybi0+ YXJyYXkpOw0KLQkJaWYgKFpFTkRfTlVNX0FSR1MoKSA9PSAxKQ0KLQkJew0KLQkJCXNwbF9hcnJh eV9vYmplY3QgKm90aGVyID0gKHNwbF9hcnJheV9vYmplY3QqKXplbmRfb2JqZWN0X3N0b3JlX2dl dF9vYmplY3QoKmFycmF5IFRTUk1MU19DQyk7DQotCQkJYXJfZmxhZ3MgPSBvdGhlci0+YXJfZmxh Z3MgJiB+U1BMX0FSUkFZX0lOVF9NQVNLOw0KLQkJfQkJDQotCQlhcl9mbGFncyB8PSBTUExfQVJS QVlfVVNFX09USEVSOw0KLQkJaW50ZXJuLT5hcnJheSA9ICphcnJheTsNCi0JfSBlbHNlIHsNCi0J CWlmIChaX1RZUEVfUFAoYXJyYXkpICE9IElTX09CSkVDVCAmJiBaX1RZUEVfUFAoYXJyYXkpICE9 IElTX0FSUkFZKSB7DQotCQkJcGhwX3NldF9lcnJvcl9oYW5kbGluZyhFSF9OT1JNQUwsIE5VTEwg VFNSTUxTX0NDKTsNCi0JCQl6ZW5kX3Rocm93X2V4Y2VwdGlvbihzcGxfY2VfSW52YWxpZEFyZ3Vt ZW50RXhjZXB0aW9uLCAiUGFzc2VkIHZhcmlhYmxlIGlzIG5vdCBhbiBhcnJheSBvciBvYmplY3Qs IHVzaW5nIGVtcHR5IGFycmF5IGluc3RlYWQiLCAwIFRTUk1MU19DQyk7DQotCQkJcmV0dXJuOw0K LQkJfQ0KLQkJenZhbF9wdHJfZHRvcigmaW50ZXJuLT5hcnJheSk7DQotCQlpbnRlcm4tPmFycmF5 ID0gKmFycmF5Ow0KLQl9DQotCWlmIChvYmplY3QgPT0gKmFycmF5KSB7DQotCQlpbnRlcm4tPmFy X2ZsYWdzIHw9IFNQTF9BUlJBWV9JU19TRUxGOw0KLQkJaW50ZXJuLT5hcl9mbGFncyAmPSB+U1BM X0FSUkFZX1VTRV9PVEhFUjsNCi0JfSBlbHNlIHsNCi0JCWludGVybi0+YXJfZmxhZ3MgJj0gflNQ TF9BUlJBWV9JU19TRUxGOw0KLQl9DQotCWludGVybi0+YXJfZmxhZ3MgfD0gYXJfZmxhZ3M7DQot CVpfQUREUkVGX1AoaW50ZXJuLT5hcnJheSk7DQotCWlmIChaX1RZUEVfUFAoYXJyYXkpID09IElT X09CSkVDVCkgew0KLQkJemVuZF9vYmplY3RfZ2V0X3Byb3BlcnRpZXNfdCBoYW5kbGVyID0gWl9P QkpfSEFORExFUl9QUChhcnJheSwgZ2V0X3Byb3BlcnRpZXMpOw0KLQkJaWYgKChoYW5kbGVyICE9 IHN0ZF9vYmplY3RfaGFuZGxlcnMuZ2V0X3Byb3BlcnRpZXMgJiYgaGFuZGxlciAhPSBzcGxfYXJy YXlfZ2V0X3Byb3BlcnRpZXMpDQotCQl8fCAhc3BsX2FycmF5X2dldF9oYXNoX3RhYmxlKGludGVy biwgMCBUU1JNTFNfQ0MpKSB7DQotCQkJcGhwX3NldF9lcnJvcl9oYW5kbGluZyhFSF9OT1JNQUws IE5VTEwgVFNSTUxTX0NDKTsNCi0JCQl6ZW5kX3Rocm93X2V4Y2VwdGlvbl9leChzcGxfY2VfSW52 YWxpZEFyZ3VtZW50RXhjZXB0aW9uLCAwIFRTUk1MU19DQywgIk92ZXJsb2FkZWQgb2JqZWN0IG9m IHR5cGUgJXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCAlcyIsIFpfT0JKQ0VfUFAoYXJyYXkpLT5u YW1lLCBpbnRlcm4tPnN0ZC5jZS0+bmFtZSk7DQotCQkJcmV0dXJuOw0KLQkJfQ0KLQl9DQotDQot CXNwbF9hcnJheV9yZXdpbmQoaW50ZXJuIFRTUk1MU19DQyk7DQorCXNwbF9hcnJheV9zZXRfYXJy YXkob2JqZWN0LCBpbnRlcm4sIGFycmF5LCBhcl9mbGFncywgWkVORF9OVU1fQVJHUygpID09IDEg VFNSTUxTX0NDKTsNCiANCiAJcGhwX3NldF9lcnJvcl9oYW5kbGluZyhFSF9OT1JNQUwsIE5VTEwg VFNSTUxTX0NDKTsNCiB9DQpAQCAtMTA4MSwzMSArMTA4Niw5IEBAIFNQTF9NRVRIT0QoQXJyYXks IGV4Y2hhbmdlQXJyYXkpDQogCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJH UygpIFRTUk1MU19DQywgIloiLCAmYXJyYXkpID09IEZBSUxVUkUpIHsNCiAJCXJldHVybjsNCiAJ fQ0KLQlpZiAoWl9UWVBFX1BQKGFycmF5KSA9PSBJU19PQkpFQ1QgJiYgaW50ZXJuID09IChzcGxf YXJyYXlfb2JqZWN0Kil6ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KG9iamVjdCBUU1JNTFNf Q0MpKSB7DQotCQl6dmFsX3B0cl9kdG9yKCZpbnRlcm4tPmFycmF5KTsNCi0JCWFycmF5ID0gJm9i amVjdDsNCi0JCWludGVybi0+YXJyYXkgPSBvYmplY3Q7DQotCX0gZWxzZSBpZiAoWl9UWVBFX1BQ KGFycmF5KSA9PSBJU19PQkpFQ1QgJiYgKFpfT0JKX0hUX1BQKGFycmF5KSA9PSAmc3BsX2hhbmRs ZXJfQXJyYXlPYmplY3QgfHwgWl9PQkpfSFRfUFAoYXJyYXkpID09ICZzcGxfaGFuZGxlcl9BcnJh eUl0ZXJhdG9yKSkgew0KLQkJc3BsX2FycmF5X29iamVjdCAqb3RoZXIgID0gKHNwbF9hcnJheV9v YmplY3QqKXplbmRfb2JqZWN0X3N0b3JlX2dldF9vYmplY3QoKmFycmF5IFRTUk1MU19DQyk7DQot CQl6dmFsX3B0cl9kdG9yKCZpbnRlcm4tPmFycmF5KTsNCi0JCWludGVybi0+YXJyYXkgPSBvdGhl ci0+YXJyYXk7DQotCX0gZWxzZSB7DQotCQlpZiAoWl9UWVBFX1BQKGFycmF5KSAhPSBJU19PQkpF Q1QgJiYgIUhBU0hfT0YoKmFycmF5KSkgew0KLQkJCXplbmRfdGhyb3dfZXhjZXB0aW9uKHNwbF9j ZV9JbnZhbGlkQXJndW1lbnRFeGNlcHRpb24sICJQYXNzZWQgdmFyaWFibGUgaXMgbm90IGFuIGFy cmF5IG9yIG9iamVjdCwgdXNpbmcgZW1wdHkgYXJyYXkgaW5zdGVhZCIsIDAgVFNSTUxTX0NDKTsN Ci0JCQlyZXR1cm47DQotCQl9DQotCQl6dmFsX3B0cl9kdG9yKCZpbnRlcm4tPmFycmF5KTsNCi0J CWludGVybi0+YXJyYXkgPSAqYXJyYXk7DQotCQlpbnRlcm4tPmFyX2ZsYWdzICY9IH5TUExfQVJS QVlfVVNFX09USEVSOw0KLQl9DQotCWlmIChvYmplY3QgPT0gKmFycmF5KSB7DQotCQlpbnRlcm4t PmFyX2ZsYWdzIHw9IFNQTF9BUlJBWV9JU19TRUxGOw0KLQl9IGVsc2Ugew0KLQkJaW50ZXJuLT5h cl9mbGFncyAmPSB+U1BMX0FSUkFZX0lTX1NFTEY7DQotCX0NCi0JWl9BRERSRUZfUChpbnRlcm4t PmFycmF5KTsNCiANCi0Jc3BsX2FycmF5X3Jld2luZChpbnRlcm4gVFNSTUxTX0NDKTsNCisJc3Bs X2FycmF5X3NldF9hcnJheShvYmplY3QsIGludGVybiwgYXJyYXksIDBMLCAxIFRTUk1MU19DQyk7 DQorDQogfQ0KIC8qIH19fSAqLw0KIA0KSW5kZXg6IHRlc3RzL2FycmF5T2JqZWN0X2V4Y2hhbmdl X2Jhc2ljMS5waHB0DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogdGVzdHMvYXJyYXlPYmplY3RfZXhj aGFuZ2VfYmFzaWMxLnBocHQNCmRpZmYgLU4gdGVzdHMvYXJyYXlPYmplY3RfZXhjaGFuZ2VfYmFz aWMxLnBocHQNCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHRl c3RzL2FycmF5T2JqZWN0X2V4Y2hhbmdlX2Jhc2ljMS5waHB0CTMgQXVnIDIwMDggMDk6NDQ6Mzkg LTAwMDANCkBAIC0wLDAgKzEsNDAgQEANCistLVRFU1QtLQ0KK0FycmF5T2JqZWN0OjpleGNoYW5n ZSgpIGFuZCBjb3B5LW9uLXdyaXRlIHJlZmVyZW5jZXMNCistLUZJTEUtLQ0KKzw/cGhwDQorJGFv ID0gbmV3IEFycmF5T2JqZWN0KCk7DQorJHN3YXBJbiA9IGFycmF5KCk7DQorJGNvd1JlZiA9ICRz d2FwSW47IC8vIGNyZWF0ZSBhIGNvcHktb24td3JpdGUgcmVmIHRvICRzd2FwSW4NCiskYW8tPmV4 Y2hhbmdlQXJyYXkoJHN3YXBJbik7DQorDQorJGFvWydhJ10gPSAnYWRkaW5nIGVsZW1lbnQgdG8g JGFvJzsNCiskc3dhcEluWydiJ10gPSAnYWRkaW5nIGVsZW1lbnQgdG8gJHN3YXBJbic7DQorJGFv WydjJ10gPSAnYWRkaW5nIGFub3RoZXIgZWxlbWVudCB0byAkYW8nOw0KKw0KK2VjaG8gIlxuLS0+ IHN3YXBJbjogICI7DQordmFyX2R1bXAoJHN3YXBJbik7DQorDQorZWNobyAiXG4tLT4gY293UmVm OiAgIjsNCit2YXJfZHVtcCgkY293UmVmKTsNCisNCitlY2hvICJcbi0tPiBhbzogICI7DQordmFy X2R1bXAoJGFvKTsNCis/Pg0KKy0tRVhQRUNURi0tDQorLS0+IHN3YXBJbjogIGFycmF5KDEpIHsN CisgIFsiYiJdPT4NCisgIHN0cmluZygyNSkgImFkZGluZyBlbGVtZW50IHRvICRzd2FwSW4iDQor fQ0KKw0KKy0tPiBjb3dSZWY6ICBhcnJheSgwKSB7DQorfQ0KKw0KKy0tPiBhbzogIG9iamVjdChB cnJheU9iamVjdCkjJWQgKDEpIHsNCisgIFsic3RvcmFnZSI6IkFycmF5T2JqZWN0Ijpwcml2YXRl XT0+DQorICBhcnJheSgyKSB7DQorICAgIFsiYSJdPT4NCisgICAgc3RyaW5nKDIxKSAiYWRkaW5n IGVsZW1lbnQgdG8gJGFvIg0KKyAgICBbImMiXT0+DQorICAgIHN0cmluZygyOSkgImFkZGluZyBh bm90aGVyIGVsZW1lbnQgdG8gJGFvIg0KKyAgfQ0KK30NCkluZGV4OiB0ZXN0cy9hcnJheU9iamVj dF9leGNoYW5nZV9iYXNpYzIucGhwdA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IHRlc3RzL2FycmF5 T2JqZWN0X2V4Y2hhbmdlX2Jhc2ljMi5waHB0DQpkaWZmIC1OIHRlc3RzL2FycmF5T2JqZWN0X2V4 Y2hhbmdlX2Jhc2ljMi5waHB0DQotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw MDANCisrKyB0ZXN0cy9hcnJheU9iamVjdF9leGNoYW5nZV9iYXNpYzIucGhwdAkzIEF1ZyAyMDA4 IDA5OjQ4OjIwIC0wMDAwDQpAQCAtMCwwICsxLDMzIEBADQorLS1URVNULS0NCitBcnJheU9iamVj dDo6ZXhjaGFuZ2VBcnJheShvYmplY3QpDQorLS1GSUxFLS0NCis8P3BocA0KK2VjaG8gIi0tPiBl eGNoYW5nZUFycmF5KGFycmF5KTpcbiI7DQorJGFvID0gbmV3IEFycmF5T2JqZWN0KCk7DQorJGFv LT5leGNoYW5nZUFycmF5KGFycmF5KCdvcmlnaW5hbCcpKTsNCit2YXJfZHVtcCgkYW8pOw0KKw0K K2VjaG8gIlxuLS0+IGV4Y2hhbmdlQXJyYXkob2JqZWN0KTpcbiI7DQorJG9iaiA9IG5ldyBzdGRD bGFzczsNCiskb2JqLT5uZXdQcm9wID0gJ2NoYW5nZWQnOw0KKyRhby0+ZXhjaGFuZ2VBcnJheSgk b2JqKTsNCit2YXJfZHVtcCgkYW8pOw0KKz8+DQorLS1FWFBFQ1RGLS0NCistLT4gZXhjaGFuZ2VB cnJheShhcnJheSk6DQorb2JqZWN0KEFycmF5T2JqZWN0KSMlZCAoMSkgew0KKyAgWyJzdG9yYWdl IjoiQXJyYXlPYmplY3QiOnByaXZhdGVdPT4NCisgIGFycmF5KDEpIHsNCisgICAgWzBdPT4NCisg ICAgc3RyaW5nKDgpICJvcmlnaW5hbCINCisgIH0NCit9DQorDQorLS0+IGV4Y2hhbmdlQXJyYXko b2JqZWN0KToNCitvYmplY3QoQXJyYXlPYmplY3QpIyVkICgxKSB7DQorICBbInN0b3JhZ2UiOiJB cnJheU9iamVjdCI6cHJpdmF0ZV09Pg0KKyAgb2JqZWN0KHN0ZENsYXNzKSMlZCAoMSkgew0KKyAg ICBbIm5ld1Byb3AiXT0+DQorICAgIHN0cmluZyg3KSAiY2hhbmdlZCINCisgIH0NCit9DQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCg== ------=_Part_11526_25812487.1217795057243--