Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1abtaa-0003Ho-MK for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Mar 2016 17:32:33 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1abtaa-0007FO-7P for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Mar 2016 17:32:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1abtaE-0006Go-WC for pgsql-hackers@postgresql.org; Fri, 04 Mar 2016 17:32:11 +0000 Received: from jiboia.ensmp.fr ([194.214.158.137]) by magus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1abtaA-000771-DE for pgsql-hackers@postgresql.org; Fri, 04 Mar 2016 17:32:10 +0000 Received: from cri.ensmp.fr (152.200.219.88.rev.sfr.net [88.219.200.152]) (authenticated bits=0) by jiboia.ensmp.fr (8.15.2/8.15.1/JMMC-22/Oct/2013) with ESMTPSA id u24HVxAu021955 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 4 Mar 2016 18:32:03 +0100 Date: Fri, 4 Mar 2016 18:31:59 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@sto To: Alvaro Herrera cc: Michael Paquier , "pgsql-hackers@postgresql.org" Subject: Re: pgbench stats per script & other stuff In-Reply-To: <20160303222640.GA667644@alvherre.pgsql> Message-ID: References: <20160303222640.GA667644@alvherre.pgsql> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-1560440084-1457112723=:11128" X-Miltered: at jiboia.ensmp.fr with ID 56D9C68F.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Auth: USER-ID fabien.coelho X-j-chkmail-Enveloppe: 56D9C68F.000 from 152.200.219.88.rev.sfr.net/152.200.219.88.rev.sfr.net/88.219.200.152/cri.ensmp.fr/ X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-1560440084-1457112723=:11128 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Hello Alvaro, > I looked at 19.d and I think the design has gotten pretty convoluted. I > think we could simplify with the following changes: > > struct script_t gets a new member, of type Command **, which is > initially null. > > function process_builtin receives the complete script_t (not individual > memebers of it) constructs the Command ** array and puts it in > script_t's new member; return value is the same script_t struct it got > (except it's now augmented with the Command **array). > > function process_file constructs a new script_t from the string list, > creates its Command **array just like process_builtin and returns the > constructed struct. > > function addScript receives script_t instead of individual members of > it, and does the appropriate thing. Why not. Here are two versions: *-20.patch is the initial rebased version *-21.patch does what you suggested above, some hidden awkwardness but much less that the previous one. -- Fabien --8323329-1560440084-1457112723=:11128 Content-Type: TEXT/x-diff; name=pgbench-script-stats-20.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-20.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IGNjODBiM2Yu LmRkM2ZiMWQgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC0yNjIsMTEgKzI2MiwxMyBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJl cGxhY2VhYmxlPm9wdGlvbnM8Lz4gPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxl PmRibmFtZTwvPg0KIA0KICAgICA8dmFyaWFibGVsaXN0Pg0KICAgICAgPHZh cmxpc3RlbnRyeT4NCi0gICAgICA8dGVybT48b3B0aW9uPi1iPC8+IDxyZXBs YWNlYWJsZT5zY3JpcHRuYW1lPC8+PC90ZXJtPg0KLSAgICAgIDx0ZXJtPjxv cHRpb24+LS1idWlsdGluPC8+IDxyZXBsYWNlYWJsZT5zY3JpcHRuYW1lPC8+ PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LWI8Lz4gPHJlcGxhY2Vh YmxlPnNjcmlwdG5hbWVbQHdlaWdodF08Lz48L3Rlcm0+DQorICAgICAgPHRl cm0+PG9wdGlvbj4tLWJ1aWx0aW48Lz49PHJlcGxhY2VhYmxlPnNjcmlwdG5h bWVbQHdlaWdodF08Lz48L3Rlcm0+DQogICAgICAgPGxpc3RpdGVtPg0KICAg ICAgICA8cGFyYT4NCiAgICAgICAgIEFkZCB0aGUgc3BlY2lmaWVkIGJ1aWx0 aW4gc2NyaXB0IHRvIHRoZSBsaXN0IG9mIGV4ZWN1dGVkIHNjcmlwdHMuDQor ICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdodCBhZnRlciA8bGl0 ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQorICAgICAgICBwcm9i YWJpbGl0eSBvZiBkcmF3aW5nIHRoZSBzY3JpcHQuICBJZiBub3Qgc3BlY2lm aWVkLCBpdCBpcyBzZXQgdG8gMS4NCiAgICAgICAgIEF2YWlsYWJsZSBidWls dGluIHNjcmlwdHMgYXJlOiA8bGl0ZXJhbD50cGNiLWxpa2U8Lz4sDQogICAg ICAgICA8bGl0ZXJhbD5zaW1wbGUtdXBkYXRlPC8+IGFuZCA8bGl0ZXJhbD5z ZWxlY3Qtb25seTwvPi4NCiAgICAgICAgIFVuYW1iaWd1b3VzIHByZWZpeGVz IG9mIGJ1aWx0aW4gbmFtZXMgYXJlIGFjY2VwdGVkLg0KQEAgLTMyMiwxMiAr MzI0LDE0IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0 aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQog ICAgICA8L3Zhcmxpc3RlbnRyeT4NCiANCiAgICAgIDx2YXJsaXN0ZW50cnk+ DQotICAgICAgPHRlcm0+PG9wdGlvbj4tZjwvPiA8cmVwbGFjZWFibGU+Zmls ZW5hbWU8Lz48L3Rlcm0+DQotICAgICAgPHRlcm0+PG9wdGlvbj4tLWZpbGU9 PC8+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC8+PC90ZXJtPg0KKyAgICAgIDx0 ZXJtPjxvcHRpb24+LWY8Lz4gPHJlcGxhY2VhYmxlPmZpbGVuYW1lW0B3ZWln aHRdPC8+PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1maWxlPTwv PjxyZXBsYWNlYWJsZT5maWxlbmFtZVtAd2VpZ2h0XTwvPjwvdGVybT4NCiAg ICAgICA8bGlzdGl0ZW0+DQogICAgICAgIDxwYXJhPg0KICAgICAgICAgQWRk IGEgdHJhbnNhY3Rpb24gc2NyaXB0IHJlYWQgZnJvbSA8cmVwbGFjZWFibGU+ ZmlsZW5hbWU8Lz4gdG8NCiAgICAgICAgIHRoZSBsaXN0IG9mIGV4ZWN1dGVk IHNjcmlwdHMuDQorICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdo dCBhZnRlciA8bGl0ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQor ICAgICAgICBwcm9iYWJpbGl0eSBvZiBkcmF3aW5nIHRoZSB0ZXN0Lg0KICAg ICAgICAgU2VlIGJlbG93IGZvciBkZXRhaWxzLg0KICAgICAgICA8L3BhcmE+ DQogICAgICAgPC9saXN0aXRlbT4NCkBAIC02ODcsOSArNjkxLDEzIEBAIHBn YmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvPiA8L29w dGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQogICA8dGl0bGU+V2hh dCBpcyB0aGUgPHF1b3RlPlRyYW5zYWN0aW9uPC8+IEFjdHVhbGx5IFBlcmZv cm1lZCBpbiA8YXBwbGljYXRpb24+cGdiZW5jaDwvYXBwbGljYXRpb24+Pzwv dGl0bGU+DQogDQogICA8cGFyYT4NCi0gICBQZ2JlbmNoIGV4ZWN1dGVzIHRl c3Qgc2NyaXB0cyBjaG9zZW4gcmFuZG9tbHkgZnJvbSBhIHNwZWNpZmllZCBs aXN0Lg0KKyAgIDxhcHBsaWNhdGlvbj5wZ2JlbmNoPC8+IGV4ZWN1dGVzIHRl c3Qgc2NyaXB0cyBjaG9zZW4gcmFuZG9tbHkNCisgICBmcm9tIGEgc3BlY2lm aWVkIGxpc3QuDQogICAgVGhleSBpbmNsdWRlIGJ1aWx0LWluIHNjcmlwdHMg d2l0aCA8b3B0aW9uPi1iPC8+IGFuZA0KICAgIHVzZXItcHJvdmlkZWQgY3Vz dG9tIHNjcmlwdHMgd2l0aCA8b3B0aW9uPi1mPC8+Lg0KKyAgIEVhY2ggc2Ny aXB0IG1heSBiZSBnaXZlbiBhIHJlbGF0aXZlIHdlaWdodCBzcGVjaWZpZWQg YWZ0ZXIgYQ0KKyAgIDxsaXRlcmFsPkA8Lz4gc28gYXMgdG8gY2hhbmdlIGl0 cyBkcmF3aW5nIHByb2JhYmlsaXR5Lg0KKyAgIFRoZSBkZWZhdWx0IHdlaWdo dCBpcyA8bGl0ZXJhbD4xPC8+Lg0KICA8L3BhcmE+DQogDQogICA8cGFyYT4N CkBAIC0xMTk0LDEyICsxMjAyLDExIEBAIG51bWJlciBvZiBjbGllbnRzOiAx MA0KIG51bWJlciBvZiB0aHJlYWRzOiAxDQogbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBwZXIgY2xpZW50OiAxMDAwDQogbnVtYmVyIG9mIHRyYW5zYWN0aW9u cyBhY3R1YWxseSBwcm9jZXNzZWQ6IDEwMDAwLzEwMDAwDQorbGF0ZW5jeSBh dmVyYWdlID0gMTUuODQ0IG1zDQorbGF0ZW5jeSBzdGRkZXYgPSAyLjcxNSBt cw0KIHRwcyA9IDYxOC43NjQ1NTUgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBl c3RhYmxpc2hpbmcpDQogdHBzID0gNjIyLjk3NzY5OCAoZXhjbHVkaW5nIGNv bm5lY3Rpb25zIGVzdGFibGlzaGluZykNCi1TUUwgc2NyaXB0IDE6ICZsdDti dWlsdGluOiBUUEMtQiAoc29ydCBvZikmZ3Q7DQotIC0gMTAwMDAgdHJhbnNh Y3Rpb25zICgxMDAuMCUgb2YgdG90YWwsIHRwcyA9IDYxOC43NjQ1NTUpDQot IC0gbGF0ZW5jeSBhdmVyYWdlID0gMTUuODQ0IG1zDQotIC0gbGF0ZW5jeSBz dGRkZXYgPSAyLjcxNSBtcw0KK3NjcmlwdCBzdGF0aXN0aWNzOg0KICAtIHN0 YXRlbWVudCBsYXRlbmNpZXMgaW4gbWlsbGlzZWNvbmRzOg0KICAgICAgICAg MC4wMDQzODYgICAgICAgIFxzZXQgbmJyYW5jaGVzIDEgKiA6c2NhbGUNCiAg ICAgICAgIDAuMDAxMzQzICAgICAgICBcc2V0IG50ZWxsZXJzIDEwICogOnNj YWxlDQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMNCmluZGV4IDhiMGIxN2EuLmMx MzE2ODEgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j DQorKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jDQpAQCAtMzgsNiAr MzgsNyBAQA0KICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgi DQogDQogI2luY2x1ZGUgPGN0eXBlLmg+DQorI2luY2x1ZGUgPGxpbWl0cy5o Pg0KICNpbmNsdWRlIDxtYXRoLmg+DQogI2luY2x1ZGUgPHNpZ25hbC5oPg0K ICNpbmNsdWRlIDxzeXMvdGltZS5oPg0KQEAgLTE3OSw2ICsxODAsOCBAQCBj aGFyCSAgICpsb2dpbiA9IE5VTEw7DQogY2hhcgkgICAqZGJOYW1lOw0KIGNv bnN0IGNoYXIgKnByb2duYW1lOw0KIA0KKyNkZWZpbmUgV1NFUCAnQCcJCQkJ Lyogd2VpZ2h0IHNlcGFyYXRvciAqLw0KKw0KIHZvbGF0aWxlIGJvb2wgdGlt ZXJfZXhjZWVkZWQgPSBmYWxzZTsJLyogZmxhZyBmcm9tIHNpZ25hbCBoYW5k bGVyICovDQogDQogLyogdmFyaWFibGUgZGVmaW5pdGlvbnMgKi8NCkBAIC0z MDAsMjMgKzMwMywyNiBAQCB0eXBlZGVmIHN0cnVjdA0KIHN0YXRpYyBzdHJ1 Y3QNCiB7DQogCWNvbnN0IGNoYXIgKm5hbWU7DQorCWludAkJCXdlaWdodDsN CiAJQ29tbWFuZCAgICoqY29tbWFuZHM7DQogCVN0YXRzRGF0YSBzdGF0czsN CiB9CXNxbF9zY3JpcHRbTUFYX1NDUklQVFNdOwkvKiBTUUwgc2NyaXB0IGZp bGVzICovDQogc3RhdGljIGludAludW1fc2NyaXB0czsJCS8qIG51bWJlciBv ZiBzY3JpcHRzIGluIHNxbF9zY3JpcHRbXSAqLw0KIHN0YXRpYyBpbnQJbnVt X2NvbW1hbmRzID0gMDsJLyogdG90YWwgbnVtYmVyIG9mIENvbW1hbmQgc3Ry dWN0cyAqLw0KK3N0YXRpYyBpbnQ2NCB0b3RhbF93ZWlnaHQgPSAwOw0KKw0K IHN0YXRpYyBpbnQJZGVidWcgPSAwOwkJCS8qIGRlYnVnIGZsYWcgKi8NCiAN CiAvKiBEZWZpbmUgYnVpbHRpbiB0ZXN0IHNjcmlwdHMgKi8NCi0jZGVmaW5l IE5fQlVJTFRJTiAzDQotc3RhdGljIHN0cnVjdA0KK3R5cGVkZWYgc3RydWN0 IHNjcmlwdF90DQogew0KIAljaGFyCSAgICpuYW1lOwkJCS8qIHZlcnkgc2hv cnQgbmFtZSBmb3IgLWIgLi4uICovDQogCWNoYXIJICAgKmRlc2M7CQkJLyog c2hvcnQgZGVzY3JpcHRpb24gKi8NCiAJY2hhcgkgICAqY29tbWFuZHM7CQkv KiBhY3R1YWwgcGdiZW5jaCBzY3JpcHQgKi8NCi19DQorfSBzY3JpcHRfdDsN CiANCi0JCQlidWlsdGluX3NjcmlwdFtdID0NCisjZGVmaW5lIE5fQlVJTFRJ TiAzDQorc3RhdGljIHNjcmlwdF90IGJ1aWx0aW5fc2NyaXB0W10gPQ0KIHsN CiAJew0KIAkJInRwY2ItbGlrZSIsDQpAQCAtMzkyLDkgKzM5OCw5IEBAIHVz YWdlKHZvaWQpDQogCSAiICAtLXRhYmxlc3BhY2U9VEFCTEVTUEFDRSAgY3Jl YXRlIHRhYmxlcyBpbiB0aGUgc3BlY2lmaWVkIHRhYmxlc3BhY2VcbiINCiAJ CSAgICIgIC0tdW5sb2dnZWQtdGFibGVzICAgICAgICBjcmVhdGUgdGFibGVz IGFzIHVubG9nZ2VkIHRhYmxlc1xuIg0KIAkJICAgIlxuT3B0aW9ucyB0byBz ZWxlY3Qgd2hhdCB0byBydW46XG4iDQotCQkgICAiICAtYiwgLS1idWlsdGlu PU5BTUUgICAgICAgYWRkIGJ1aXRpbiBzY3JpcHQgKHVzZSBcIi1iIGxpc3Rc IiB0byBkaXNwbGF5XG4iDQotCQkgICAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXZhaWxhYmxlIHNjcmlwdHMpXG4iDQotCQkgICAiICAtZiwgLS1m aWxlPUZJTEVOQU1FICAgICAgYWRkIHRyYW5zYWN0aW9uIHNjcmlwdCBmcm9t IEZJTEVOQU1FXG4iDQorCQkgICAiICAtYiwgLS1idWlsdGluPU5BTUVbQFdd ICAgYWRkIGJ1aWx0aW4gc2NyaXB0IE5BTUUgd2VpZ2h0ZWQgYXQgVyAoZGVm YXVsdDogMSlcbiINCisJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAg ICAodXNlIFwiLWIgbGlzdFwiIHRvIGxpc3QgYXZhaWxhYmxlIHNjcmlwdHMp XG4iDQorCQkgICAiICAtZiwgLS1maWxlPUZJTEVOQU1FW0BXXSAgYWRkIHNj cmlwdCBGSUxFTkFNRSB3ZWlnaHRlZCBhdCBXIChkZWZhdWx0OiAxKVxuIg0K IAkJICAgIiAgLU4sIC0tc2tpcC1zb21lLXVwZGF0ZXMgIHNraXAgdXBkYXRl cyBvZiBwZ2JlbmNoX3RlbGxlcnMgYW5kIHBnYmVuY2hfYnJhbmNoZXNcbiIN CiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2FtZSBhcyBc Ii1iIHNpbXBsZS11cGRhdGVcIilcbiINCiAJCSAgICIgIC1TLCAtLXNlbGVj dC1vbmx5ICAgICAgICBwZXJmb3JtIFNFTEVDVC1vbmx5IHRyYW5zYWN0aW9u c1xuIg0KQEAgLTEzMTIsMTMgKzEzMTgsMjMgQEAgY2xpZW50RG9uZShDU3Rh dGUgKnN0LCBib29sIG9rKQ0KIAlyZXR1cm4gZmFsc2U7CQkJCS8qIGFsd2F5 cyBmYWxzZSAqLw0KIH0NCiANCisvKiByZXR1cm4gYSBzY3JpcHQgbnVtYmVy IHdpdGggYSB3ZWlnaHRlZCBjaG9pY2UuICovDQogc3RhdGljIGludA0KIGNo b29zZVNjcmlwdChUU3RhdGUgKnRocmVhZCkNCiB7DQorCWludAkJCWkgPSAw Ow0KKwlpbnQ2NAkJdzsNCisNCiAJaWYgKG51bV9zY3JpcHRzID09IDEpDQog CQlyZXR1cm4gMDsNCiANCi0JcmV0dXJuIGdldHJhbmQodGhyZWFkLCAwLCBu dW1fc2NyaXB0cyAtIDEpOw0KKwl3ID0gZ2V0cmFuZCh0aHJlYWQsIDAsIHRv dGFsX3dlaWdodCAtIDEpOw0KKwlkbw0KKwl7DQorCQl3IC09IHNxbF9zY3Jp cHRbaSsrXS53ZWlnaHQ7DQorCX0gd2hpbGUgKHcgPj0gMCk7DQorDQorCXJl dHVybiBpIC0gMTsNCiB9DQogDQogLyogcmV0dXJuIGZhbHNlIGlmZiBjbGll bnQgc2hvdWxkIGJlIGRpc2Nvbm5lY3RlZCAqLw0KQEAgLTI2ODAsNiArMjY5 Niw3IEBAIHByb2Nlc3NfZmlsZShjaGFyICpmaWxlbmFtZSkNCiAJcmV0dXJu IG15X2NvbW1hbmRzOw0KIH0NCiANCisvKiBwcm9jZXNzIGJ1aWx0aW4gc2Ny aXB0IHRiIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgaXRzIGNvbW1hbmRzICov DQogc3RhdGljIENvbW1hbmQgKioNCiBwcm9jZXNzX2J1aWx0aW4oY29uc3Qg Y2hhciAqdGIsIGNvbnN0IGNoYXIgKnNvdXJjZSkNCiB7DQpAQCAtMjczNSw2 ICsyNzUyLDcgQEAgcHJvY2Vzc19idWlsdGluKGNvbnN0IGNoYXIgKnRiLCBj b25zdCBjaGFyICpzb3VyY2UpDQogCXJldHVybiBteV9jb21tYW5kczsNCiB9 DQogDQorLyogc2hvdyBhdmFpbGFibGUgYnVpbHRpbiBzY3JpcHRzICovDQog c3RhdGljIHZvaWQNCiBsaXN0QXZhaWxhYmxlU2NyaXB0cyh2b2lkKQ0KIHsN CkBAIC0yNzQ2LDI4ICsyNzY0LDI3IEBAIGxpc3RBdmFpbGFibGVTY3JpcHRz KHZvaWQpDQogCWZwcmludGYoc3RkZXJyLCAiXG4iKTsNCiB9DQogDQotLyog cmV0dXJuIGJ1aWx0aW4gc2NyaXB0ICJuYW1lIiBpZiB1bmFtYmlndW91cyAq Lw0KLXN0YXRpYyBjaGFyICoNCi1maW5kQnVpbHRpbihjb25zdCBjaGFyICpu YW1lLCBjaGFyICoqZGVzYykNCisvKiByZXR1cm4gYnVpbHRpbiBzY3JpcHQg Im5hbWUiIGlmIHVuYW1iaWd1b3VzLCBvZiBmYWlscyBpZiBub3QgZm91bmQg Ki8NCitzdGF0aWMgc2NyaXB0X3QgKg0KK2ZpbmRCdWlsdGluKGNvbnN0IGNo YXIgKm5hbWUpDQogew0KIAlpbnQJCQlpLA0KIAkJCQlmb3VuZCA9IDAsDQog CQkJCWxlbiA9IHN0cmxlbihuYW1lKTsNCi0JY2hhcgkgICAqY29tbWFuZHMg PSBOVUxMOw0KKwlzY3JpcHRfdCAgICpyZXN1bHQgPSBOVUxMOw0KIA0KIAlm b3IgKGkgPSAwOyBpIDwgTl9CVUlMVElOOyBpKyspDQogCXsNCiAJCWlmIChz dHJuY21wKGJ1aWx0aW5fc2NyaXB0W2ldLm5hbWUsIG5hbWUsIGxlbikgPT0g MCkNCiAJCXsNCi0JCQkqZGVzYyA9IGJ1aWx0aW5fc2NyaXB0W2ldLmRlc2M7 DQotCQkJY29tbWFuZHMgPSBidWlsdGluX3NjcmlwdFtpXS5jb21tYW5kczsN CisJCQlyZXN1bHQgPSAmIGJ1aWx0aW5fc2NyaXB0W2ldOw0KIAkJCWZvdW5k Kys7DQogCQl9DQogCX0NCiANCiAJLyogb2ssIHVuYW1iaWd1b3VzIHJlc3Vs dCAqLw0KIAlpZiAoZm91bmQgPT0gMSkNCi0JCXJldHVybiBjb21tYW5kczsN CisJCXJldHVybiByZXN1bHQ7DQogDQogCS8qIGVycm9yIGNhc2VzICovDQog CWlmIChmb3VuZCA9PSAwKQ0KQEAgLTI3ODAsOCArMjc5Nyw1NyBAQCBmaW5k QnVpbHRpbihjb25zdCBjaGFyICpuYW1lLCBjaGFyICoqZGVzYykNCiAJZXhp dCgxKTsNCiB9DQogDQorLyoNCisgKiBEZXRlcm1pbmUgdGhlIHdlaWdodCBz cGVjaWZpY2F0aW9uIGZyb20gYSBzY3JpcHQgb3B0aW9uICgtYiwgLWYpLCBp ZiBhbnksDQorICogYW5kIHJldHVybiBpdCBhcyBhbiBpbnRlZ2VyICgxIGlz IHJldHVybmVkIGlmIHRoZXJlJ3Mgbm8gd2VpZ2h0KS4gIFRoZQ0KKyAqIHNj cmlwdCBuYW1lIGlzIHJldHVybmVkIGluICpzY3JpcHQgYXMgYSBtYWxsb2Mn ZCBzdHJpbmcuDQorICovDQorc3RhdGljIGludA0KK3BhcnNlU2NyaXB0V2Vp Z2h0KGNvbnN0IGNoYXIgKm9wdGlvbiwgY2hhciAqKnNjcmlwdCkNCit7DQor CWNoYXIJICAgKnNlcDsNCisJaW50CQkJd2VpZ2h0Ow0KKw0KKwlpZiAoKHNl cCA9IHN0cnJjaHIob3B0aW9uLCBXU0VQKSkpDQorCXsNCisJCWludAkJbmFt ZWxlbiA9IHNlcCAtIG9wdGlvbjsNCisJCWxvbmcJd3RtcDsNCisJCWNoYXIg ICAqYmFkcDsNCisNCisJCS8qIGdlbmVyYXRlIHRoZSBzY3JpcHQgbmFtZSAq Lw0KKwkJKnNjcmlwdCA9IHBnX21hbGxvYyhuYW1lbGVuICsgMSk7DQorCQlz dHJuY3B5KCpzY3JpcHQsIG9wdGlvbiwgbmFtZWxlbik7DQorCQkoKnNjcmlw dClbbmFtZWxlbl0gPSAnXDAnOw0KKw0KKwkJLyogcHJvY2VzcyBkaWdpdHMg b2YgdGhlIHdlaWdodCBzcGVjICovDQorCQllcnJubyA9IDA7DQorCQl3dG1w ID0gc3RydG9sKHNlcCArIDEsICZiYWRwLCAxMCk7DQorCQlpZiAoZXJybm8g IT0gMCB8fCBiYWRwID09IHNlcCArIDEgfHwgKmJhZHAgIT0gJ1wwJykNCisJ CXsNCisJCQlmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgd2VpZ2h0IHNwZWNp ZmljYXRpb246ICVzXG4iLCBzZXApOw0KKwkJCWV4aXQoMSk7DQorCQl9DQor CQlpZiAod3RtcCA+IElOVF9NQVggfHwgd3RtcCA8PSAwKQ0KKwkJew0KKwkJ CWZwcmludGYoc3RkZXJyLA0KKwkJCQkJIndlaWdodCBzcGVjaWZpY2F0aW9u IG91dCBvZiByYW5nZSAoMSAuLiAldSk6ICIgSU5UNjRfRk9STUFUICJcbiIs DQorCQkJCQlJTlRfTUFYLCAoaW50NjQpIHd0bXApOw0KKwkJCWV4aXQoMSk7 DQorCQl9DQorCQl3ZWlnaHQgPSB3dG1wOw0KKwl9DQorCWVsc2UNCisJew0K KwkJKnNjcmlwdCA9IHBnX3N0cmR1cChvcHRpb24pOw0KKwkJd2VpZ2h0ID0g MTsNCisJfQ0KKw0KKwlyZXR1cm4gd2VpZ2h0Ow0KK30NCisNCisvKiBhcHBl bmQgYSBzY3JpcHQgdG8gdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0byBwcm9jZXNz ICovDQogc3RhdGljIHZvaWQNCi1hZGRTY3JpcHQoY29uc3QgY2hhciAqbmFt ZSwgQ29tbWFuZCAqKmNvbW1hbmRzKQ0KK2FkZFNjcmlwdChjb25zdCBjaGFy ICpuYW1lLCBDb21tYW5kICoqY29tbWFuZHMsIGludCB3ZWlnaHQpDQogew0K IAlpZiAoY29tbWFuZHMgPT0gTlVMTCB8fA0KIAkJY29tbWFuZHNbMF0gPT0g TlVMTCkNCkBAIC0yNzk3LDYgKzI4NjMsNyBAQCBhZGRTY3JpcHQoY29uc3Qg Y2hhciAqbmFtZSwgQ29tbWFuZCAqKmNvbW1hbmRzKQ0KIAl9DQogDQogCXNx bF9zY3JpcHRbbnVtX3NjcmlwdHNdLm5hbWUgPSBuYW1lOw0KKwlzcWxfc2Ny aXB0W251bV9zY3JpcHRzXS53ZWlnaHQgPSB3ZWlnaHQ7DQogCXNxbF9zY3Jp cHRbbnVtX3NjcmlwdHNdLmNvbW1hbmRzID0gY29tbWFuZHM7DQogCWluaXRT dGF0cygmc3FsX3NjcmlwdFtudW1fc2NyaXB0c10uc3RhdHMsIDAuMCk7DQog CW51bV9zY3JpcHRzKys7DQpAQCAtMjg4MiwxOSArMjk0OSwyNCBAQCBwcmlu dFJlc3VsdHMoVFN0YXRlICp0aHJlYWRzLCBTdGF0c0RhdGEgKnRvdGFsLCBp bnN0cl90aW1lIHRvdGFsX3RpbWUsDQogCXByaW50ZigidHBzID0gJWYgKGlu Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpXG4iLCB0cHNfaW5j bHVkZSk7DQogCXByaW50ZigidHBzID0gJWYgKGV4Y2x1ZGluZyBjb25uZWN0 aW9ucyBlc3RhYmxpc2hpbmcpXG4iLCB0cHNfZXhjbHVkZSk7DQogDQotCS8q IFJlcG9ydCBwZXItY29tbWFuZCBzdGF0aXN0aWNzICovDQotCWlmIChwZXJf c2NyaXB0X3N0YXRzKQ0KKwkvKiBSZXBvcnQgcGVyLXNjcmlwdC9jb21tYW5k IHN0YXRpc3RpY3MgKi8NCisJaWYgKHBlcl9zY3JpcHRfc3RhdHMgfHwgbGF0 ZW5jeV9saW1pdCB8fCBpc19sYXRlbmNpZXMpDQogCXsNCiAJCWludAkJCWk7 DQogDQogCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3NjcmlwdHM7IGkrKykNCiAJ CXsNCi0JCQlwcmludGYoIlNRTCBzY3JpcHQgJWQ6ICVzXG4iDQotCQkJIiAt ICIgSU5UNjRfRk9STUFUICIgdHJhbnNhY3Rpb25zICglLjFmJSUgb2YgdG90 YWwsIHRwcyA9ICVmKVxuIiwNCi0JCQkJICAgaSArIDEsIHNxbF9zY3JpcHRb aV0ubmFtZSwNCi0JCQkJICAgc3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQsDQot CQkJCSAgIDEwMC4wICogc3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQgLyB0b3Rh bC0+Y250LA0KLQkJCQkgICBzcWxfc2NyaXB0W2ldLnN0YXRzLmNudCAvIHRp bWVfaW5jbHVkZSk7DQorCQkJaWYgKG51bV9zY3JpcHRzID4gMSkNCisJCQkJ cHJpbnRmKCJTUUwgc2NyaXB0ICVkOiAlc1xuIg0KKwkJCQkJICAgIiAtIHdl aWdodCA9ICVkXG4iDQorCQkJCQkgICAiIC0gIiBJTlQ2NF9GT1JNQVQgIiB0 cmFuc2FjdGlvbnMgKCUuMWYlJSBvZiB0b3RhbCwgdHBzID0gJWYpXG4iLA0K KwkJCQkJICAgaSArIDEsIHNxbF9zY3JpcHRbaV0ubmFtZSwNCisJCQkJCSAg IHNxbF9zY3JpcHRbaV0ud2VpZ2h0LA0KKwkJCQkJICAgc3FsX3NjcmlwdFtp XS5zdGF0cy5jbnQsDQorCQkJCQkgICAxMDAuMCAqIHNxbF9zY3JpcHRbaV0u c3RhdHMuY250IC8gdG90YWwtPmNudCwNCisJCQkJCSAgIHNxbF9zY3JpcHRb aV0uc3RhdHMuY250IC8gdGltZV9pbmNsdWRlKTsNCisJCQllbHNlDQorCQkJ CXByaW50Zigic2NyaXB0IHN0YXRpc3RpY3M6XG4iKTsNCiANCiAJCQlpZiAo bGF0ZW5jeV9saW1pdCkNCiAJCQkJcHJpbnRmKCIgLSBudW1iZXIgb2YgdHJh bnNhY3Rpb25zIHNraXBwZWQ6ICIgSU5UNjRfRk9STUFUICIgKCUuM2YlJSlc biIsDQpAQCAtMjkwMiw3ICsyOTc0LDggQEAgcHJpbnRSZXN1bHRzKFRTdGF0 ZSAqdGhyZWFkcywgU3RhdHNEYXRhICp0b3RhbCwgaW5zdHJfdGltZSB0b3Rh bF90aW1lLA0KIAkJCQkJICAgMTAwLjAgKiBzcWxfc2NyaXB0W2ldLnN0YXRz LnNraXBwZWQgLw0KIAkJCQkJKHNxbF9zY3JpcHRbaV0uc3RhdHMuc2tpcHBl ZCArIHNxbF9zY3JpcHRbaV0uc3RhdHMuY250KSk7DQogDQotCQkJcHJpbnRT aW1wbGVTdGF0cygiIC0gbGF0ZW5jeSIsICZzcWxfc2NyaXB0W2ldLnN0YXRz LmxhdGVuY3kpOw0KKwkJCWlmIChudW1fc2NyaXB0cyA+IDEpDQorCQkJCXBy aW50U2ltcGxlU3RhdHMoIiAtIGxhdGVuY3kiLCAmc3FsX3NjcmlwdFtpXS5z dGF0cy5sYXRlbmN5KTsNCiANCiAJCQkvKiBSZXBvcnQgcGVyLWNvbW1hbmQg bGF0ZW5jaWVzICovDQogCQkJaWYgKGlzX2xhdGVuY2llcykNCkBAIC0yOTg1 LDcgKzMwNTgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJ aW5zdHJfdGltZQljb25uX3RvdGFsX3RpbWU7DQogCWludDY0CQlsYXRlbmN5 X2xhdGUgPSAwOw0KIAlTdGF0c0RhdGEJc3RhdHM7DQotCWNoYXIJICAgKmRl c2M7DQorCWludAkJCXdlaWdodDsNCiANCiAJaW50CQkJaTsNCiAJaW50CQkJ bmNsaWVudHNfZGVhbHQ7DQpAQCAtMzAzMyw2ICszMTA2LDkgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpDQogDQogCXdoaWxlICgoYyA9IGdldG9w dF9sb25nKGFyZ2MsIGFyZ3YsICJpaDpudnA6ZHFiOlNOYzpqOkNyczp0OlQ6 VTpsZjpEOkY6TTpQOlI6TDoiLCBsb25nX29wdGlvbnMsICZvcHRpbmRleCkp ICE9IC0xKQ0KIAl7DQorCQljaGFyCQkqc2NyaXB0Ow0KKwkJc2NyaXB0X3QJ KmJpOw0KKw0KIAkJc3dpdGNoIChjKQ0KIAkJew0KIAkJCWNhc2UgJ2knOg0K QEAgLTMxNjQsMjcgKzMyNDAsMjkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpDQogCQkJCQlleGl0KDApOw0KIAkJCQl9DQogDQotCQkJCWFkZFNj cmlwdChkZXNjLA0KLQkJCQkJCSAgcHJvY2Vzc19idWlsdGluKGZpbmRCdWls dGluKG9wdGFyZywgJmRlc2MpLCBkZXNjKSk7DQorCQkJCXdlaWdodCA9IHBh cnNlU2NyaXB0V2VpZ2h0KG9wdGFyZywgJnNjcmlwdCk7DQorCQkJCWJpID0g ZmluZEJ1aWx0aW4oc2NyaXB0KTsNCisJCQkJYWRkU2NyaXB0KGJpLT5kZXNj LCBwcm9jZXNzX2J1aWx0aW4oYmktPmNvbW1hbmRzLCBiaS0+ZGVzYyksDQor CQkJCQkJICB3ZWlnaHQpOw0KIAkJCQliZW5jaG1hcmtpbmdfb3B0aW9uX3Nl dCA9IHRydWU7DQogCQkJCWludGVybmFsX3NjcmlwdF91c2VkID0gdHJ1ZTsN CiAJCQkJYnJlYWs7DQorDQogCQkJY2FzZSAnUyc6DQotCQkJCWFkZFNjcmlw dChkZXNjLA0KLQkJCQkJCSAgcHJvY2Vzc19idWlsdGluKGZpbmRCdWlsdGlu KCJzZWxlY3Qtb25seSIsICZkZXNjKSwNCi0JCQkJCQkJCQkJICBkZXNjKSk7 DQorCQkJCWJpID0gZmluZEJ1aWx0aW4oInNlbGVjdC1vbmx5Iik7DQorCQkJ CWFkZFNjcmlwdChiaS0+ZGVzYywgcHJvY2Vzc19idWlsdGluKGJpLT5jb21t YW5kcywgYmktPmRlc2MpLCAxKTsNCiAJCQkJYmVuY2htYXJraW5nX29wdGlv bl9zZXQgPSB0cnVlOw0KIAkJCQlpbnRlcm5hbF9zY3JpcHRfdXNlZCA9IHRy dWU7DQogCQkJCWJyZWFrOw0KIAkJCWNhc2UgJ04nOg0KLQkJCQlhZGRTY3Jp cHQoZGVzYywNCi0JCQkJCQkgIHByb2Nlc3NfYnVpbHRpbihmaW5kQnVpbHRp bigic2ltcGxlLXVwZGF0ZSIsICZkZXNjKSwNCi0JCQkJCQkJCQkJICBkZXNj KSk7DQorCQkJCWJpID0gZmluZEJ1aWx0aW4oInNpbXBsZS11cGRhdGUiKTsN CisJCQkJYWRkU2NyaXB0KGJpLT5kZXNjLCBwcm9jZXNzX2J1aWx0aW4oYmkt PmNvbW1hbmRzLCBiaS0+ZGVzYyksIDEpOw0KIAkJCQliZW5jaG1hcmtpbmdf b3B0aW9uX3NldCA9IHRydWU7DQogCQkJCWludGVybmFsX3NjcmlwdF91c2Vk ID0gdHJ1ZTsNCiAJCQkJYnJlYWs7DQogCQkJY2FzZSAnZic6DQotCQkJCWFk ZFNjcmlwdChvcHRhcmcsIHByb2Nlc3NfZmlsZShvcHRhcmcpKTsNCisJCQkJ d2VpZ2h0ID0gcGFyc2VTY3JpcHRXZWlnaHQob3B0YXJnLCAmc2NyaXB0KTsN CisJCQkJYWRkU2NyaXB0KHNjcmlwdCwgcHJvY2Vzc19maWxlKHNjcmlwdCks IHdlaWdodCk7DQogCQkJCWJlbmNobWFya2luZ19vcHRpb25fc2V0ID0gdHJ1 ZTsNCiAJCQkJYnJlYWs7DQogCQkJY2FzZSAnRCc6DQpAQCAtMzMyMiwxMiAr MzQwMCwxNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJLyog c2V0IGRlZmF1bHQgc2NyaXB0IGlmIG5vbmUgKi8NCiAJaWYgKG51bV9zY3Jp cHRzID09IDAgJiYgIWlzX2luaXRfbW9kZSkNCiAJew0KLQkJYWRkU2NyaXB0 KGRlc2MsDQotCQkJCSAgcHJvY2Vzc19idWlsdGluKGZpbmRCdWlsdGluKCJ0 cGNiLWxpa2UiLCAmZGVzYyksIGRlc2MpKTsNCisJCXNjcmlwdF90ICpiaSA9 IGZpbmRCdWlsdGluKCJ0cGNiLWxpa2UiKTsNCisJCWFkZFNjcmlwdChiaS0+ ZGVzYywgcHJvY2Vzc19idWlsdGluKGJpLT5jb21tYW5kcywgYmktPmRlc2Mp LCAxKTsNCiAJCWJlbmNobWFya2luZ19vcHRpb25fc2V0ID0gdHJ1ZTsNCiAJ CWludGVybmFsX3NjcmlwdF91c2VkID0gdHJ1ZTsNCiAJfQ0KIA0KKwkvKiBj b21wdXRlIHRvdGFsX3dlaWdodCAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgbnVt X3NjcmlwdHM7IGkrKykNCisJCS8qIGNhbm5vdCBvdmVyZmxvdzogd2VpZ2h0 IGlzIDMyYiwgdG90YWxfd2VpZ2h0IDY0YiAqLw0KKwkJdG90YWxfd2VpZ2h0 ICs9IHNxbF9zY3JpcHRbaV0ud2VpZ2h0Ow0KKw0KIAkvKiBzaG93IHBlciBz Y3JpcHQgc3RhdHMgaWYgc2V2ZXJhbCBzY3JpcHRzIGFyZSB1c2VkICovDQog CWlmIChudW1fc2NyaXB0cyA+IDEpDQogCQlwZXJfc2NyaXB0X3N0YXRzID0g dHJ1ZTsNCg== --8323329-1560440084-1457112723=:11128 Content-Type: TEXT/x-diff; name=pgbench-script-stats-21.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-21.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IGNjODBiM2Yu LmRkM2ZiMWQgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC0yNjIsMTEgKzI2MiwxMyBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJl cGxhY2VhYmxlPm9wdGlvbnM8Lz4gPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxl PmRibmFtZTwvPg0KIA0KICAgICA8dmFyaWFibGVsaXN0Pg0KICAgICAgPHZh cmxpc3RlbnRyeT4NCi0gICAgICA8dGVybT48b3B0aW9uPi1iPC8+IDxyZXBs YWNlYWJsZT5zY3JpcHRuYW1lPC8+PC90ZXJtPg0KLSAgICAgIDx0ZXJtPjxv cHRpb24+LS1idWlsdGluPC8+IDxyZXBsYWNlYWJsZT5zY3JpcHRuYW1lPC8+ PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LWI8Lz4gPHJlcGxhY2Vh YmxlPnNjcmlwdG5hbWVbQHdlaWdodF08Lz48L3Rlcm0+DQorICAgICAgPHRl cm0+PG9wdGlvbj4tLWJ1aWx0aW48Lz49PHJlcGxhY2VhYmxlPnNjcmlwdG5h bWVbQHdlaWdodF08Lz48L3Rlcm0+DQogICAgICAgPGxpc3RpdGVtPg0KICAg ICAgICA8cGFyYT4NCiAgICAgICAgIEFkZCB0aGUgc3BlY2lmaWVkIGJ1aWx0 aW4gc2NyaXB0IHRvIHRoZSBsaXN0IG9mIGV4ZWN1dGVkIHNjcmlwdHMuDQor ICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdodCBhZnRlciA8bGl0 ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQorICAgICAgICBwcm9i YWJpbGl0eSBvZiBkcmF3aW5nIHRoZSBzY3JpcHQuICBJZiBub3Qgc3BlY2lm aWVkLCBpdCBpcyBzZXQgdG8gMS4NCiAgICAgICAgIEF2YWlsYWJsZSBidWls dGluIHNjcmlwdHMgYXJlOiA8bGl0ZXJhbD50cGNiLWxpa2U8Lz4sDQogICAg ICAgICA8bGl0ZXJhbD5zaW1wbGUtdXBkYXRlPC8+IGFuZCA8bGl0ZXJhbD5z ZWxlY3Qtb25seTwvPi4NCiAgICAgICAgIFVuYW1iaWd1b3VzIHByZWZpeGVz IG9mIGJ1aWx0aW4gbmFtZXMgYXJlIGFjY2VwdGVkLg0KQEAgLTMyMiwxMiAr MzI0LDE0IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0 aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQog ICAgICA8L3Zhcmxpc3RlbnRyeT4NCiANCiAgICAgIDx2YXJsaXN0ZW50cnk+ DQotICAgICAgPHRlcm0+PG9wdGlvbj4tZjwvPiA8cmVwbGFjZWFibGU+Zmls ZW5hbWU8Lz48L3Rlcm0+DQotICAgICAgPHRlcm0+PG9wdGlvbj4tLWZpbGU9 PC8+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC8+PC90ZXJtPg0KKyAgICAgIDx0 ZXJtPjxvcHRpb24+LWY8Lz4gPHJlcGxhY2VhYmxlPmZpbGVuYW1lW0B3ZWln aHRdPC8+PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1maWxlPTwv PjxyZXBsYWNlYWJsZT5maWxlbmFtZVtAd2VpZ2h0XTwvPjwvdGVybT4NCiAg ICAgICA8bGlzdGl0ZW0+DQogICAgICAgIDxwYXJhPg0KICAgICAgICAgQWRk IGEgdHJhbnNhY3Rpb24gc2NyaXB0IHJlYWQgZnJvbSA8cmVwbGFjZWFibGU+ ZmlsZW5hbWU8Lz4gdG8NCiAgICAgICAgIHRoZSBsaXN0IG9mIGV4ZWN1dGVk IHNjcmlwdHMuDQorICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdo dCBhZnRlciA8bGl0ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQor ICAgICAgICBwcm9iYWJpbGl0eSBvZiBkcmF3aW5nIHRoZSB0ZXN0Lg0KICAg ICAgICAgU2VlIGJlbG93IGZvciBkZXRhaWxzLg0KICAgICAgICA8L3BhcmE+ DQogICAgICAgPC9saXN0aXRlbT4NCkBAIC02ODcsOSArNjkxLDEzIEBAIHBn YmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvPiA8L29w dGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQogICA8dGl0bGU+V2hh dCBpcyB0aGUgPHF1b3RlPlRyYW5zYWN0aW9uPC8+IEFjdHVhbGx5IFBlcmZv cm1lZCBpbiA8YXBwbGljYXRpb24+cGdiZW5jaDwvYXBwbGljYXRpb24+Pzwv dGl0bGU+DQogDQogICA8cGFyYT4NCi0gICBQZ2JlbmNoIGV4ZWN1dGVzIHRl c3Qgc2NyaXB0cyBjaG9zZW4gcmFuZG9tbHkgZnJvbSBhIHNwZWNpZmllZCBs aXN0Lg0KKyAgIDxhcHBsaWNhdGlvbj5wZ2JlbmNoPC8+IGV4ZWN1dGVzIHRl c3Qgc2NyaXB0cyBjaG9zZW4gcmFuZG9tbHkNCisgICBmcm9tIGEgc3BlY2lm aWVkIGxpc3QuDQogICAgVGhleSBpbmNsdWRlIGJ1aWx0LWluIHNjcmlwdHMg d2l0aCA8b3B0aW9uPi1iPC8+IGFuZA0KICAgIHVzZXItcHJvdmlkZWQgY3Vz dG9tIHNjcmlwdHMgd2l0aCA8b3B0aW9uPi1mPC8+Lg0KKyAgIEVhY2ggc2Ny aXB0IG1heSBiZSBnaXZlbiBhIHJlbGF0aXZlIHdlaWdodCBzcGVjaWZpZWQg YWZ0ZXIgYQ0KKyAgIDxsaXRlcmFsPkA8Lz4gc28gYXMgdG8gY2hhbmdlIGl0 cyBkcmF3aW5nIHByb2JhYmlsaXR5Lg0KKyAgIFRoZSBkZWZhdWx0IHdlaWdo dCBpcyA8bGl0ZXJhbD4xPC8+Lg0KICA8L3BhcmE+DQogDQogICA8cGFyYT4N CkBAIC0xMTk0LDEyICsxMjAyLDExIEBAIG51bWJlciBvZiBjbGllbnRzOiAx MA0KIG51bWJlciBvZiB0aHJlYWRzOiAxDQogbnVtYmVyIG9mIHRyYW5zYWN0 aW9ucyBwZXIgY2xpZW50OiAxMDAwDQogbnVtYmVyIG9mIHRyYW5zYWN0aW9u cyBhY3R1YWxseSBwcm9jZXNzZWQ6IDEwMDAwLzEwMDAwDQorbGF0ZW5jeSBh dmVyYWdlID0gMTUuODQ0IG1zDQorbGF0ZW5jeSBzdGRkZXYgPSAyLjcxNSBt cw0KIHRwcyA9IDYxOC43NjQ1NTUgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBl c3RhYmxpc2hpbmcpDQogdHBzID0gNjIyLjk3NzY5OCAoZXhjbHVkaW5nIGNv bm5lY3Rpb25zIGVzdGFibGlzaGluZykNCi1TUUwgc2NyaXB0IDE6ICZsdDti dWlsdGluOiBUUEMtQiAoc29ydCBvZikmZ3Q7DQotIC0gMTAwMDAgdHJhbnNh Y3Rpb25zICgxMDAuMCUgb2YgdG90YWwsIHRwcyA9IDYxOC43NjQ1NTUpDQot IC0gbGF0ZW5jeSBhdmVyYWdlID0gMTUuODQ0IG1zDQotIC0gbGF0ZW5jeSBz dGRkZXYgPSAyLjcxNSBtcw0KK3NjcmlwdCBzdGF0aXN0aWNzOg0KICAtIHN0 YXRlbWVudCBsYXRlbmNpZXMgaW4gbWlsbGlzZWNvbmRzOg0KICAgICAgICAg MC4wMDQzODYgICAgICAgIFxzZXQgbmJyYW5jaGVzIDEgKiA6c2NhbGUNCiAg ICAgICAgIDAuMDAxMzQzICAgICAgICBcc2V0IG50ZWxsZXJzIDEwICogOnNj YWxlDQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBi L3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMNCmluZGV4IDhiMGIxN2EuLjk3 M2Q0MTEgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j DQorKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jDQpAQCAtMzgsNiAr MzgsNyBAQA0KICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgi DQogDQogI2luY2x1ZGUgPGN0eXBlLmg+DQorI2luY2x1ZGUgPGxpbWl0cy5o Pg0KICNpbmNsdWRlIDxtYXRoLmg+DQogI2luY2x1ZGUgPHNpZ25hbC5oPg0K ICNpbmNsdWRlIDxzeXMvdGltZS5oPg0KQEAgLTE3OSw2ICsxODAsOCBAQCBj aGFyCSAgICpsb2dpbiA9IE5VTEw7DQogY2hhcgkgICAqZGJOYW1lOw0KIGNv bnN0IGNoYXIgKnByb2duYW1lOw0KIA0KKyNkZWZpbmUgV1NFUCAnQCcJCQkJ Lyogd2VpZ2h0IHNlcGFyYXRvciAqLw0KKw0KIHZvbGF0aWxlIGJvb2wgdGlt ZXJfZXhjZWVkZWQgPSBmYWxzZTsJLyogZmxhZyBmcm9tIHNpZ25hbCBoYW5k bGVyICovDQogDQogLyogdmFyaWFibGUgZGVmaW5pdGlvbnMgKi8NCkBAIC0z MDAsMjMgKzMwMywyNyBAQCB0eXBlZGVmIHN0cnVjdA0KIHN0YXRpYyBzdHJ1 Y3QNCiB7DQogCWNvbnN0IGNoYXIgKm5hbWU7DQorCWludAkJCXdlaWdodDsN CiAJQ29tbWFuZCAgICoqY29tbWFuZHM7DQogCVN0YXRzRGF0YSBzdGF0czsN CiB9CXNxbF9zY3JpcHRbTUFYX1NDUklQVFNdOwkvKiBTUUwgc2NyaXB0IGZp bGVzICovDQogc3RhdGljIGludAludW1fc2NyaXB0czsJCS8qIG51bWJlciBv ZiBzY3JpcHRzIGluIHNxbF9zY3JpcHRbXSAqLw0KIHN0YXRpYyBpbnQJbnVt X2NvbW1hbmRzID0gMDsJLyogdG90YWwgbnVtYmVyIG9mIENvbW1hbmQgc3Ry dWN0cyAqLw0KK3N0YXRpYyBpbnQ2NCB0b3RhbF93ZWlnaHQgPSAwOw0KKw0K IHN0YXRpYyBpbnQJZGVidWcgPSAwOwkJCS8qIGRlYnVnIGZsYWcgKi8NCiAN CiAvKiBEZWZpbmUgYnVpbHRpbiB0ZXN0IHNjcmlwdHMgKi8NCi0jZGVmaW5l IE5fQlVJTFRJTiAzDQotc3RhdGljIHN0cnVjdA0KK3R5cGVkZWYgc3RydWN0 IHNjcmlwdF90DQogew0KIAljaGFyCSAgICpuYW1lOwkJCS8qIHZlcnkgc2hv cnQgbmFtZSBmb3IgLWIgLi4uICovDQogCWNoYXIJICAgKmRlc2M7CQkJLyog c2hvcnQgZGVzY3JpcHRpb24gKi8NCi0JY2hhcgkgICAqY29tbWFuZHM7CQkv KiBhY3R1YWwgcGdiZW5jaCBzY3JpcHQgKi8NCi19DQorCWNoYXIJICAgKnNj cmlwdDsJCQkvKiBhY3R1YWwgcGdiZW5jaCBzY3JpcHQgKi8NCisJQ29tbWFu ZCAgICoqY29tbWFuZHM7IAkJLyogdGVtcG9yYXJ5IGludGVybWVkaWF0ZSBo b2xkZXIgKi8NCit9IHNjcmlwdF90Ow0KIA0KLQkJCWJ1aWx0aW5fc2NyaXB0 W10gPQ0KKyNkZWZpbmUgTl9CVUlMVElOIDMNCitzdGF0aWMgc2NyaXB0X3Qg YnVpbHRpbl9zY3JpcHRbXSA9DQogew0KIAl7DQogCQkidHBjYi1saWtlIiwN CkBAIC0zMzQsNyArMzQxLDggQEAgc3RhdGljIHN0cnVjdA0KIAkJIlVQREFU RSBwZ2JlbmNoX3RlbGxlcnMgU0VUIHRiYWxhbmNlID0gdGJhbGFuY2UgKyA6 ZGVsdGEgV0hFUkUgdGlkID0gOnRpZDtcbiINCiAJCSJVUERBVEUgcGdiZW5j aF9icmFuY2hlcyBTRVQgYmJhbGFuY2UgPSBiYmFsYW5jZSArIDpkZWx0YSBX SEVSRSBiaWQgPSA6YmlkO1xuIg0KIAkJIklOU0VSVCBJTlRPIHBnYmVuY2hf aGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMg KDp0aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVAp O1xuIg0KLQkJIkVORDtcbiINCisJCSJFTkQ7XG4iLA0KKwkJTlVMTA0KIAl9 LA0KIAl7DQogCQkic2ltcGxlLXVwZGF0ZSIsDQpAQCAtMzUwLDE0ICszNTgs MTYgQEAgc3RhdGljIHN0cnVjdA0KIAkJIlVQREFURSBwZ2JlbmNoX2FjY291 bnRzIFNFVCBhYmFsYW5jZSA9IGFiYWxhbmNlICsgOmRlbHRhIFdIRVJFIGFp ZCA9IDphaWQ7XG4iDQogCQkiU0VMRUNUIGFiYWxhbmNlIEZST00gcGdiZW5j aF9hY2NvdW50cyBXSEVSRSBhaWQgPSA6YWlkO1xuIg0KIAkJIklOU0VSVCBJ TlRPIHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10 aW1lKSBWQUxVRVMgKDp0aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVO VF9USU1FU1RBTVApO1xuIg0KLQkJIkVORDtcbiINCisJCSJFTkQ7XG4iLA0K KwkJTlVMTA0KIAl9LA0KIAl7DQogCQkic2VsZWN0LW9ubHkiLA0KIAkJIjxi dWlsdGluOiBzZWxlY3Qgb25seT4iLA0KIAkJIlxcc2V0IG5hY2NvdW50cyAi IENwcEFzU3RyaW5nMihuYWNjb3VudHMpICIgKiA6c2NhbGVcbiINCiAJCSJc XHNldHJhbmRvbSBhaWQgMSA6bmFjY291bnRzXG4iDQotCQkiU0VMRUNUIGFi YWxhbmNlIEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBhaWQgPSA6YWlk O1xuIg0KKwkJIlNFTEVDVCBhYmFsYW5jZSBGUk9NIHBnYmVuY2hfYWNjb3Vu dHMgV0hFUkUgYWlkID0gOmFpZDtcbiIsDQorCQlOVUxMDQogCX0NCiB9Ow0K IA0KQEAgLTM5Miw5ICs0MDIsOSBAQCB1c2FnZSh2b2lkKQ0KIAkgIiAgLS10 YWJsZXNwYWNlPVRBQkxFU1BBQ0UgIGNyZWF0ZSB0YWJsZXMgaW4gdGhlIHNw ZWNpZmllZCB0YWJsZXNwYWNlXG4iDQogCQkgICAiICAtLXVubG9nZ2VkLXRh YmxlcyAgICAgICAgY3JlYXRlIHRhYmxlcyBhcyB1bmxvZ2dlZCB0YWJsZXNc biINCiAJCSAgICJcbk9wdGlvbnMgdG8gc2VsZWN0IHdoYXQgdG8gcnVuOlxu Ig0KLQkJICAgIiAgLWIsIC0tYnVpbHRpbj1OQU1FICAgICAgIGFkZCBidWl0 aW4gc2NyaXB0ICh1c2UgXCItYiBsaXN0XCIgdG8gZGlzcGxheVxuIg0KLQkJ ICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBzY3Jp cHRzKVxuIg0KLQkJICAgIiAgLWYsIC0tZmlsZT1GSUxFTkFNRSAgICAgIGFk ZCB0cmFuc2FjdGlvbiBzY3JpcHQgZnJvbSBGSUxFTkFNRVxuIg0KKwkJICAg IiAgLWIsIC0tYnVpbHRpbj1OQU1FW0BXXSAgIGFkZCBidWlsdGluIHNjcmlw dCBOQU1FIHdlaWdodGVkIGF0IFcgKGRlZmF1bHQ6IDEpXG4iDQorCQkgICAi ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZSBcIi1iIGxpc3RcIiB0 byBsaXN0IGF2YWlsYWJsZSBzY3JpcHRzKVxuIg0KKwkJICAgIiAgLWYsIC0t ZmlsZT1GSUxFTkFNRVtAV10gIGFkZCBzY3JpcHQgRklMRU5BTUUgd2VpZ2h0 ZWQgYXQgVyAoZGVmYXVsdDogMSlcbiINCiAJCSAgICIgIC1OLCAtLXNraXAt c29tZS11cGRhdGVzICBza2lwIHVwZGF0ZXMgb2YgcGdiZW5jaF90ZWxsZXJz IGFuZCBwZ2JlbmNoX2JyYW5jaGVzXG4iDQogCQkgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNhbWUgYXMgXCItYiBzaW1wbGUtdXBkYXRlXCIp XG4iDQogCQkgICAiICAtUywgLS1zZWxlY3Qtb25seSAgICAgICAgcGVyZm9y bSBTRUxFQ1Qtb25seSB0cmFuc2FjdGlvbnNcbiINCkBAIC0xMzEyLDEzICsx MzIyLDIzIEBAIGNsaWVudERvbmUoQ1N0YXRlICpzdCwgYm9vbCBvaykNCiAJ cmV0dXJuIGZhbHNlOwkJCQkvKiBhbHdheXMgZmFsc2UgKi8NCiB9DQogDQor LyogcmV0dXJuIGEgc2NyaXB0IG51bWJlciB3aXRoIGEgd2VpZ2h0ZWQgY2hv aWNlLiAqLw0KIHN0YXRpYyBpbnQNCiBjaG9vc2VTY3JpcHQoVFN0YXRlICp0 aHJlYWQpDQogew0KKwlpbnQJCQlpID0gMDsNCisJaW50NjQJCXc7DQorDQog CWlmIChudW1fc2NyaXB0cyA9PSAxKQ0KIAkJcmV0dXJuIDA7DQogDQotCXJl dHVybiBnZXRyYW5kKHRocmVhZCwgMCwgbnVtX3NjcmlwdHMgLSAxKTsNCisJ dyA9IGdldHJhbmQodGhyZWFkLCAwLCB0b3RhbF93ZWlnaHQgLSAxKTsNCisJ ZG8NCisJew0KKwkJdyAtPSBzcWxfc2NyaXB0W2krK10ud2VpZ2h0Ow0KKwl9 IHdoaWxlICh3ID49IDApOw0KKw0KKwlyZXR1cm4gaSAtIDE7DQogfQ0KIA0K IC8qIHJldHVybiBmYWxzZSBpZmYgY2xpZW50IHNob3VsZCBiZSBkaXNjb25u ZWN0ZWQgKi8NCkBAIC0yNjIzLDEyICsyNjQzLDE0IEBAIHJlYWRfbGluZV9m cm9tX2ZpbGUoRklMRSAqZmQpDQogICogR2l2ZW4gYSBmaWxlIG5hbWUsIHJl YWQgaXQgYW5kIHJldHVybiB0aGUgYXJyYXkgb2YgQ29tbWFuZHMgY29udGFp bmVkDQogICogdGhlcmVpbi4gICItIiBtZWFucyB0byByZWFkIHN0ZGluLg0K ICAqLw0KLXN0YXRpYyBDb21tYW5kICoqDQorc3RhdGljIHNjcmlwdF90ICoN CiBwcm9jZXNzX2ZpbGUoY2hhciAqZmlsZW5hbWUpDQogew0KICNkZWZpbmUg Q09NTUFORFNfQUxMT0NfTlVNIDEyOA0KIA0KLQlDb21tYW5kICAgKipteV9j b21tYW5kczsNCisJLyogdGVtcG9yYXJ5IGhvbGRlciB0byBwYXNzIDIgaW5m b3JtYXRpb24gdG8gYWRkU2NyaXB0Ki8NCisJc3RhdGljIHNjcmlwdF90IGZz Ow0KKw0KIAlGSUxFCSAgICpmZDsNCiAJaW50CQkJbGluZW5vLA0KIAkJCQlp bmRleDsNCkBAIC0yNjM2LDcgKzI2NTgsOCBAQCBwcm9jZXNzX2ZpbGUoY2hh ciAqZmlsZW5hbWUpDQogCWludAkJCWFsbG9jX251bTsNCiANCiAJYWxsb2Nf bnVtID0gQ09NTUFORFNfQUxMT0NfTlVNOw0KLQlteV9jb21tYW5kcyA9IChD b21tYW5kICoqKSBwZ19tYWxsb2Moc2l6ZW9mKENvbW1hbmQgKikgKiBhbGxv Y19udW0pOw0KKwlmcy5jb21tYW5kcyA9IChDb21tYW5kICoqKSBwZ19tYWxs b2Moc2l6ZW9mKENvbW1hbmQgKikgKiBhbGxvY19udW0pOw0KKwlmcy5kZXNj ID0gZmlsZW5hbWU7DQogDQogCWlmIChzdHJjbXAoZmlsZW5hbWUsICItIikg PT0gMCkNCiAJCWZkID0gc3RkaW47DQpAQCAtMjY0NCw3ICsyNjY3LDcgQEAg cHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lKQ0KIAl7DQogCQlmcHJpbnRm KHN0ZGVyciwgImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlc1xuIiwN CiAJCQkJZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7DQotCQlwZ19mcmVl KG15X2NvbW1hbmRzKTsNCisJCXBnX2ZyZWUoZnMuY29tbWFuZHMpOw0KIAkJ cmV0dXJuIE5VTEw7DQogCX0NCiANCkBAIC0yNjY0LDM1ICsyNjg3LDM2IEBA IHByb2Nlc3NfZmlsZShjaGFyICpmaWxlbmFtZSkNCiAJCWlmIChjb21tYW5k ID09IE5VTEwpDQogCQkJY29udGludWU7DQogDQotCQlteV9jb21tYW5kc1tp bmRleF0gPSBjb21tYW5kOw0KKwkJZnMuY29tbWFuZHNbaW5kZXhdID0gY29t bWFuZDsNCiAJCWluZGV4Kys7DQogDQogCQlpZiAoaW5kZXggPj0gYWxsb2Nf bnVtKQ0KIAkJew0KIAkJCWFsbG9jX251bSArPSBDT01NQU5EU19BTExPQ19O VU07DQotCQkJbXlfY29tbWFuZHMgPSBwZ19yZWFsbG9jKG15X2NvbW1hbmRz LCBzaXplb2YoQ29tbWFuZCAqKSAqIGFsbG9jX251bSk7DQorCQkJZnMuY29t bWFuZHMgPSBwZ19yZWFsbG9jKGZzLmNvbW1hbmRzLCBzaXplb2YoQ29tbWFu ZCAqKSAqIGFsbG9jX251bSk7DQogCQl9DQogCX0NCiAJZmNsb3NlKGZkKTsN CiANCi0JbXlfY29tbWFuZHNbaW5kZXhdID0gTlVMTDsNCisJZnMuY29tbWFu ZHNbaW5kZXhdID0gTlVMTDsNCiANCi0JcmV0dXJuIG15X2NvbW1hbmRzOw0K KwlyZXR1cm4gJmZzOw0KIH0NCiANCi1zdGF0aWMgQ29tbWFuZCAqKg0KLXBy b2Nlc3NfYnVpbHRpbihjb25zdCBjaGFyICp0YiwgY29uc3QgY2hhciAqc291 cmNlKQ0KKy8qIHByb2Nlc3MgYnVpbHRpbiBzY3JpcHQgdGIgYW5kIHJldHVy biBhbiBhcnJheSBvZiBpdHMgY29tbWFuZHMgKi8NCitzdGF0aWMgc2NyaXB0 X3QgKg0KK3Byb2Nlc3NfYnVpbHRpbihzY3JpcHRfdCAqIGJpKQ0KIHsNCiAj ZGVmaW5lIENPTU1BTkRTX0FMTE9DX05VTSAxMjgNCiANCi0JQ29tbWFuZCAg ICoqbXlfY29tbWFuZHM7DQogCWludAkJCWxpbmVubywNCiAJCQkJaW5kZXg7 DQogCWNoYXIJCWJ1ZltCVUZTSVpdOw0KIAlpbnQJCQlhbGxvY19udW07DQor CWNoYXIJICAgKnRiID0gYmktPnNjcmlwdDsNCiANCiAJYWxsb2NfbnVtID0g Q09NTUFORFNfQUxMT0NfTlVNOw0KLQlteV9jb21tYW5kcyA9IChDb21tYW5k ICoqKSBwZ19tYWxsb2Moc2l6ZW9mKENvbW1hbmQgKikgKiBhbGxvY19udW0p Ow0KKwliaS0+Y29tbWFuZHMgPSAoQ29tbWFuZCAqKikgcGdfbWFsbG9jKHNp emVvZihDb21tYW5kICopICogYWxsb2NfbnVtKTsNCiANCiAJbGluZW5vID0g MDsNCiAJaW5kZXggPSAwOw0KQEAgLTI3MDIsNiArMjcyNiw3IEBAIHByb2Nl c3NfYnVpbHRpbihjb25zdCBjaGFyICp0YiwgY29uc3QgY2hhciAqc291cmNl KQ0KIAkJY2hhcgkgICAqcDsNCiAJCUNvbW1hbmQgICAgKmNvbW1hbmQ7DQog DQorCQkvKiBidWZmZXIgb3ZlcmZsb3cgY2hlY2s/ICovDQogCQlwID0gYnVm Ow0KIAkJd2hpbGUgKCp0YiAmJiAqdGIgIT0gJ1xuJykNCiAJCQkqcCsrID0g KnRiKys7DQpAQCAtMjcxNiwyNSArMjc0MSwyNyBAQCBwcm9jZXNzX2J1aWx0 aW4oY29uc3QgY2hhciAqdGIsIGNvbnN0IGNoYXIgKnNvdXJjZSkNCiANCiAJ CWxpbmVubyArPSAxOw0KIA0KLQkJY29tbWFuZCA9IHByb2Nlc3NfY29tbWFu ZHMoYnVmLCBzb3VyY2UsIGxpbmVubyk7DQorCQljb21tYW5kID0gcHJvY2Vz c19jb21tYW5kcyhidWYsIGJpLT5kZXNjLCBsaW5lbm8pOw0KIAkJaWYgKGNv bW1hbmQgPT0gTlVMTCkNCiAJCQljb250aW51ZTsNCiANCi0JCW15X2NvbW1h bmRzW2luZGV4XSA9IGNvbW1hbmQ7DQorCQliaS0+Y29tbWFuZHNbaW5kZXhd ID0gY29tbWFuZDsNCiAJCWluZGV4Kys7DQogDQogCQlpZiAoaW5kZXggPj0g YWxsb2NfbnVtKQ0KIAkJew0KIAkJCWFsbG9jX251bSArPSBDT01NQU5EU19B TExPQ19OVU07DQotCQkJbXlfY29tbWFuZHMgPSBwZ19yZWFsbG9jKG15X2Nv bW1hbmRzLCBzaXplb2YoQ29tbWFuZCAqKSAqIGFsbG9jX251bSk7DQorCQkJ YmktPmNvbW1hbmRzID0NCisJCQkJcGdfcmVhbGxvYyhiaS0+Y29tbWFuZHMs IHNpemVvZihDb21tYW5kICopICogYWxsb2NfbnVtKTsNCiAJCX0NCiAJfQ0K IA0KLQlteV9jb21tYW5kc1tpbmRleF0gPSBOVUxMOw0KKwliaS0+Y29tbWFu ZHNbaW5kZXhdID0gTlVMTDsNCiANCi0JcmV0dXJuIG15X2NvbW1hbmRzOw0K KwlyZXR1cm4gYmk7DQogfQ0KIA0KKy8qIHNob3cgYXZhaWxhYmxlIGJ1aWx0 aW4gc2NyaXB0cyAqLw0KIHN0YXRpYyB2b2lkDQogbGlzdEF2YWlsYWJsZVNj cmlwdHModm9pZCkNCiB7DQpAQCAtMjc0NiwyOCArMjc3MywyNyBAQCBsaXN0 QXZhaWxhYmxlU2NyaXB0cyh2b2lkKQ0KIAlmcHJpbnRmKHN0ZGVyciwgIlxu Iik7DQogfQ0KIA0KLS8qIHJldHVybiBidWlsdGluIHNjcmlwdCAibmFtZSIg aWYgdW5hbWJpZ3VvdXMgKi8NCi1zdGF0aWMgY2hhciAqDQotZmluZEJ1aWx0 aW4oY29uc3QgY2hhciAqbmFtZSwgY2hhciAqKmRlc2MpDQorLyogcmV0dXJu IGJ1aWx0aW4gc2NyaXB0ICJuYW1lIiBpZiB1bmFtYmlndW91cywgb2YgZmFp bHMgaWYgbm90IGZvdW5kICovDQorc3RhdGljIHNjcmlwdF90ICoNCitmaW5k QnVpbHRpbihjb25zdCBjaGFyICpuYW1lKQ0KIHsNCiAJaW50CQkJaSwNCiAJ CQkJZm91bmQgPSAwLA0KIAkJCQlsZW4gPSBzdHJsZW4obmFtZSk7DQotCWNo YXIJICAgKmNvbW1hbmRzID0gTlVMTDsNCisJc2NyaXB0X3QgICAqcmVzdWx0 ID0gTlVMTDsNCiANCiAJZm9yIChpID0gMDsgaSA8IE5fQlVJTFRJTjsgaSsr KQ0KIAl7DQogCQlpZiAoc3RybmNtcChidWlsdGluX3NjcmlwdFtpXS5uYW1l LCBuYW1lLCBsZW4pID09IDApDQogCQl7DQotCQkJKmRlc2MgPSBidWlsdGlu X3NjcmlwdFtpXS5kZXNjOw0KLQkJCWNvbW1hbmRzID0gYnVpbHRpbl9zY3Jp cHRbaV0uY29tbWFuZHM7DQorCQkJcmVzdWx0ID0gJiBidWlsdGluX3Njcmlw dFtpXTsNCiAJCQlmb3VuZCsrOw0KIAkJfQ0KIAl9DQogDQogCS8qIG9rLCB1 bmFtYmlndW91cyByZXN1bHQgKi8NCiAJaWYgKGZvdW5kID09IDEpDQotCQly ZXR1cm4gY29tbWFuZHM7DQorCQlyZXR1cm4gcmVzdWx0Ow0KIA0KIAkvKiBl cnJvciBjYXNlcyAqLw0KIAlpZiAoZm91bmQgPT0gMCkNCkBAIC0yNzgwLDEz ICsyODA2LDYxIEBAIGZpbmRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUsIGNo YXIgKipkZXNjKQ0KIAlleGl0KDEpOw0KIH0NCiANCisvKg0KKyAqIERldGVy bWluZSB0aGUgd2VpZ2h0IHNwZWNpZmljYXRpb24gZnJvbSBhIHNjcmlwdCBv cHRpb24gKC1iLCAtZiksIGlmIGFueSwNCisgKiBhbmQgcmV0dXJuIGl0IGFz IGFuIGludGVnZXIgKDEgaXMgcmV0dXJuZWQgaWYgdGhlcmUncyBubyB3ZWln aHQpLiAgVGhlDQorICogc2NyaXB0IG5hbWUgaXMgcmV0dXJuZWQgaW4gKnNj cmlwdCBhcyBhIG1hbGxvYydkIHN0cmluZy4NCisgKi8NCitzdGF0aWMgaW50 DQorcGFyc2VTY3JpcHRXZWlnaHQoY29uc3QgY2hhciAqb3B0aW9uLCBjaGFy ICoqc2NyaXB0KQ0KK3sNCisJY2hhcgkgICAqc2VwOw0KKwlpbnQJCQl3ZWln aHQ7DQorDQorCWlmICgoc2VwID0gc3RycmNocihvcHRpb24sIFdTRVApKSkN CisJew0KKwkJaW50CQluYW1lbGVuID0gc2VwIC0gb3B0aW9uOw0KKwkJbG9u Zwl3dG1wOw0KKwkJY2hhciAgICpiYWRwOw0KKw0KKwkJLyogZ2VuZXJhdGUg dGhlIHNjcmlwdCBuYW1lICovDQorCQkqc2NyaXB0ID0gcGdfbWFsbG9jKG5h bWVsZW4gKyAxKTsNCisJCXN0cm5jcHkoKnNjcmlwdCwgb3B0aW9uLCBuYW1l bGVuKTsNCisJCSgqc2NyaXB0KVtuYW1lbGVuXSA9ICdcMCc7DQorDQorCQkv KiBwcm9jZXNzIGRpZ2l0cyBvZiB0aGUgd2VpZ2h0IHNwZWMgKi8NCisJCWVy cm5vID0gMDsNCisJCXd0bXAgPSBzdHJ0b2woc2VwICsgMSwgJmJhZHAsIDEw KTsNCisJCWlmIChlcnJubyAhPSAwIHx8IGJhZHAgPT0gc2VwICsgMSB8fCAq YmFkcCAhPSAnXDAnKQ0KKwkJew0KKwkJCWZwcmludGYoc3RkZXJyLCAiaW52 YWxpZCB3ZWlnaHQgc3BlY2lmaWNhdGlvbjogJXNcbiIsIHNlcCk7DQorCQkJ ZXhpdCgxKTsNCisJCX0NCisJCWlmICh3dG1wID4gSU5UX01BWCB8fCB3dG1w IDw9IDApDQorCQl7DQorCQkJZnByaW50ZihzdGRlcnIsDQorCQkJCQkid2Vp Z2h0IHNwZWNpZmljYXRpb24gb3V0IG9mIHJhbmdlICgxIC4uICV1KTogIiBJ TlQ2NF9GT1JNQVQgIlxuIiwNCisJCQkJCUlOVF9NQVgsIChpbnQ2NCkgd3Rt cCk7DQorCQkJZXhpdCgxKTsNCisJCX0NCisJCXdlaWdodCA9IHd0bXA7DQor CX0NCisJZWxzZQ0KKwl7DQorCQkqc2NyaXB0ID0gcGdfc3RyZHVwKG9wdGlv bik7DQorCQl3ZWlnaHQgPSAxOw0KKwl9DQorDQorCXJldHVybiB3ZWlnaHQ7 DQorfQ0KKw0KKy8qIGFwcGVuZCBhIHNjcmlwdCB0byB0aGUgbGlzdCBvZiBz Y3JpcHRzIHRvIHByb2Nlc3MgKi8NCiBzdGF0aWMgdm9pZA0KLWFkZFNjcmlw dChjb25zdCBjaGFyICpuYW1lLCBDb21tYW5kICoqY29tbWFuZHMpDQorYWRk U2NyaXB0KHNjcmlwdF90ICpzY3JpcHQsIGludCB3ZWlnaHQpDQogew0KLQlp ZiAoY29tbWFuZHMgPT0gTlVMTCB8fA0KLQkJY29tbWFuZHNbMF0gPT0gTlVM TCkNCisJaWYgKHNjcmlwdC0+Y29tbWFuZHMgPT0gTlVMTCB8fCBzY3JpcHQt PmNvbW1hbmRzWzBdID09IE5VTEwpDQogCXsNCi0JCWZwcmludGYoc3RkZXJy LCAiZW1wdHkgY29tbWFuZCBsaXN0IGZvciBzY3JpcHQgXCIlc1wiXG4iLCBu YW1lKTsNCisJCWZwcmludGYoc3RkZXJyLCAiZW1wdHkgY29tbWFuZCBsaXN0 IGZvciBzY3JpcHQgXCIlc1wiXG4iLCBzY3JpcHQtPmRlc2MpOw0KIAkJZXhp dCgxKTsNCiAJfQ0KIA0KQEAgLTI3OTYsOCArMjg3MCw5IEBAIGFkZFNjcmlw dChjb25zdCBjaGFyICpuYW1lLCBDb21tYW5kICoqY29tbWFuZHMpDQogCQll eGl0KDEpOw0KIAl9DQogDQotCXNxbF9zY3JpcHRbbnVtX3NjcmlwdHNdLm5h bWUgPSBuYW1lOw0KLQlzcWxfc2NyaXB0W251bV9zY3JpcHRzXS5jb21tYW5k cyA9IGNvbW1hbmRzOw0KKwlzcWxfc2NyaXB0W251bV9zY3JpcHRzXS5uYW1l ID0gc2NyaXB0LT5kZXNjOw0KKwlzcWxfc2NyaXB0W251bV9zY3JpcHRzXS53 ZWlnaHQgPSB3ZWlnaHQ7DQorCXNxbF9zY3JpcHRbbnVtX3NjcmlwdHNdLmNv bW1hbmRzID0gc2NyaXB0LT5jb21tYW5kczsNCiAJaW5pdFN0YXRzKCZzcWxf c2NyaXB0W251bV9zY3JpcHRzXS5zdGF0cywgMC4wKTsNCiAJbnVtX3Njcmlw dHMrKzsNCiB9DQpAQCAtMjg4MiwxOSArMjk1NywyNCBAQCBwcmludFJlc3Vs dHMoVFN0YXRlICp0aHJlYWRzLCBTdGF0c0RhdGEgKnRvdGFsLCBpbnN0cl90 aW1lIHRvdGFsX3RpbWUsDQogCXByaW50ZigidHBzID0gJWYgKGluY2x1ZGlu ZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpXG4iLCB0cHNfaW5jbHVkZSk7 DQogCXByaW50ZigidHBzID0gJWYgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBl c3RhYmxpc2hpbmcpXG4iLCB0cHNfZXhjbHVkZSk7DQogDQotCS8qIFJlcG9y dCBwZXItY29tbWFuZCBzdGF0aXN0aWNzICovDQotCWlmIChwZXJfc2NyaXB0 X3N0YXRzKQ0KKwkvKiBSZXBvcnQgcGVyLXNjcmlwdC9jb21tYW5kIHN0YXRp c3RpY3MgKi8NCisJaWYgKHBlcl9zY3JpcHRfc3RhdHMgfHwgbGF0ZW5jeV9s aW1pdCB8fCBpc19sYXRlbmNpZXMpDQogCXsNCiAJCWludAkJCWk7DQogDQog CQlmb3IgKGkgPSAwOyBpIDwgbnVtX3NjcmlwdHM7IGkrKykNCiAJCXsNCi0J CQlwcmludGYoIlNRTCBzY3JpcHQgJWQ6ICVzXG4iDQotCQkJIiAtICIgSU5U NjRfRk9STUFUICIgdHJhbnNhY3Rpb25zICglLjFmJSUgb2YgdG90YWwsIHRw cyA9ICVmKVxuIiwNCi0JCQkJICAgaSArIDEsIHNxbF9zY3JpcHRbaV0ubmFt ZSwNCi0JCQkJICAgc3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQsDQotCQkJCSAg IDEwMC4wICogc3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQgLyB0b3RhbC0+Y250 LA0KLQkJCQkgICBzcWxfc2NyaXB0W2ldLnN0YXRzLmNudCAvIHRpbWVfaW5j bHVkZSk7DQorCQkJaWYgKG51bV9zY3JpcHRzID4gMSkNCisJCQkJcHJpbnRm KCJTUUwgc2NyaXB0ICVkOiAlc1xuIg0KKwkJCQkJICAgIiAtIHdlaWdodCA9 ICVkXG4iDQorCQkJCQkgICAiIC0gIiBJTlQ2NF9GT1JNQVQgIiB0cmFuc2Fj dGlvbnMgKCUuMWYlJSBvZiB0b3RhbCwgdHBzID0gJWYpXG4iLA0KKwkJCQkJ ICAgaSArIDEsIHNxbF9zY3JpcHRbaV0ubmFtZSwNCisJCQkJCSAgIHNxbF9z Y3JpcHRbaV0ud2VpZ2h0LA0KKwkJCQkJICAgc3FsX3NjcmlwdFtpXS5zdGF0 cy5jbnQsDQorCQkJCQkgICAxMDAuMCAqIHNxbF9zY3JpcHRbaV0uc3RhdHMu Y250IC8gdG90YWwtPmNudCwNCisJCQkJCSAgIHNxbF9zY3JpcHRbaV0uc3Rh dHMuY250IC8gdGltZV9pbmNsdWRlKTsNCisJCQllbHNlDQorCQkJCXByaW50 Zigic2NyaXB0IHN0YXRpc3RpY3M6XG4iKTsNCiANCiAJCQlpZiAobGF0ZW5j eV9saW1pdCkNCiAJCQkJcHJpbnRmKCIgLSBudW1iZXIgb2YgdHJhbnNhY3Rp b25zIHNraXBwZWQ6ICIgSU5UNjRfRk9STUFUICIgKCUuM2YlJSlcbiIsDQpA QCAtMjkwMiw3ICsyOTgyLDggQEAgcHJpbnRSZXN1bHRzKFRTdGF0ZSAqdGhy ZWFkcywgU3RhdHNEYXRhICp0b3RhbCwgaW5zdHJfdGltZSB0b3RhbF90aW1l LA0KIAkJCQkJICAgMTAwLjAgKiBzcWxfc2NyaXB0W2ldLnN0YXRzLnNraXBw ZWQgLw0KIAkJCQkJKHNxbF9zY3JpcHRbaV0uc3RhdHMuc2tpcHBlZCArIHNx bF9zY3JpcHRbaV0uc3RhdHMuY250KSk7DQogDQotCQkJcHJpbnRTaW1wbGVT dGF0cygiIC0gbGF0ZW5jeSIsICZzcWxfc2NyaXB0W2ldLnN0YXRzLmxhdGVu Y3kpOw0KKwkJCWlmIChudW1fc2NyaXB0cyA+IDEpDQorCQkJCXByaW50U2lt cGxlU3RhdHMoIiAtIGxhdGVuY3kiLCAmc3FsX3NjcmlwdFtpXS5zdGF0cy5s YXRlbmN5KTsNCiANCiAJCQkvKiBSZXBvcnQgcGVyLWNvbW1hbmQgbGF0ZW5j aWVzICovDQogCQkJaWYgKGlzX2xhdGVuY2llcykNCkBAIC0yOTg1LDcgKzMw NjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJaW5zdHJf dGltZQljb25uX3RvdGFsX3RpbWU7DQogCWludDY0CQlsYXRlbmN5X2xhdGUg PSAwOw0KIAlTdGF0c0RhdGEJc3RhdHM7DQotCWNoYXIJICAgKmRlc2M7DQor CWludAkJCXdlaWdodDsNCiANCiAJaW50CQkJaTsNCiAJaW50CQkJbmNsaWVu dHNfZGVhbHQ7DQpAQCAtMzAzMyw2ICszMTE0LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpDQogDQogCXdoaWxlICgoYyA9IGdldG9wdF9sb25n KGFyZ2MsIGFyZ3YsICJpaDpudnA6ZHFiOlNOYzpqOkNyczp0OlQ6VTpsZjpE OkY6TTpQOlI6TDoiLCBsb25nX29wdGlvbnMsICZvcHRpbmRleCkpICE9IC0x KQ0KIAl7DQorCQljaGFyCQkqc2NyaXB0Ow0KKw0KIAkJc3dpdGNoIChjKQ0K IAkJew0KIAkJCWNhc2UgJ2knOg0KQEAgLTMxNjQsMjcgKzMyNDcsMjUgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCQkJCQlleGl0KDApOw0K IAkJCQl9DQogDQotCQkJCWFkZFNjcmlwdChkZXNjLA0KLQkJCQkJCSAgcHJv Y2Vzc19idWlsdGluKGZpbmRCdWlsdGluKG9wdGFyZywgJmRlc2MpLCBkZXNj KSk7DQorCQkJCXdlaWdodCA9IHBhcnNlU2NyaXB0V2VpZ2h0KG9wdGFyZywg JnNjcmlwdCk7DQorCQkJCWFkZFNjcmlwdChwcm9jZXNzX2J1aWx0aW4oZmlu ZEJ1aWx0aW4oc2NyaXB0KSksIHdlaWdodCk7DQogCQkJCWJlbmNobWFya2lu Z19vcHRpb25fc2V0ID0gdHJ1ZTsNCiAJCQkJaW50ZXJuYWxfc2NyaXB0X3Vz ZWQgPSB0cnVlOw0KIAkJCQlicmVhazsNCisNCiAJCQljYXNlICdTJzoNCi0J CQkJYWRkU2NyaXB0KGRlc2MsDQotCQkJCQkJICBwcm9jZXNzX2J1aWx0aW4o ZmluZEJ1aWx0aW4oInNlbGVjdC1vbmx5IiwgJmRlc2MpLA0KLQkJCQkJCQkJ CQkgIGRlc2MpKTsNCisJCQkJYWRkU2NyaXB0KHByb2Nlc3NfYnVpbHRpbihm aW5kQnVpbHRpbigic2VsZWN0LW9ubHkiKSksIDEpOw0KIAkJCQliZW5jaG1h cmtpbmdfb3B0aW9uX3NldCA9IHRydWU7DQogCQkJCWludGVybmFsX3Njcmlw dF91c2VkID0gdHJ1ZTsNCiAJCQkJYnJlYWs7DQogCQkJY2FzZSAnTic6DQot CQkJCWFkZFNjcmlwdChkZXNjLA0KLQkJCQkJCSAgcHJvY2Vzc19idWlsdGlu KGZpbmRCdWlsdGluKCJzaW1wbGUtdXBkYXRlIiwgJmRlc2MpLA0KLQkJCQkJ CQkJCQkgIGRlc2MpKTsNCisJCQkJYWRkU2NyaXB0KHByb2Nlc3NfYnVpbHRp bihmaW5kQnVpbHRpbigic2ltcGxlLXVwZGF0ZSIpKSwgMSk7DQogCQkJCWJl bmNobWFya2luZ19vcHRpb25fc2V0ID0gdHJ1ZTsNCiAJCQkJaW50ZXJuYWxf c2NyaXB0X3VzZWQgPSB0cnVlOw0KIAkJCQlicmVhazsNCiAJCQljYXNlICdm JzoNCi0JCQkJYWRkU2NyaXB0KG9wdGFyZywgcHJvY2Vzc19maWxlKG9wdGFy ZykpOw0KKwkJCQl3ZWlnaHQgPSBwYXJzZVNjcmlwdFdlaWdodChvcHRhcmcs ICZzY3JpcHQpOw0KKwkJCQlhZGRTY3JpcHQocHJvY2Vzc19maWxlKHNjcmlw dCksIHdlaWdodCk7DQogCQkJCWJlbmNobWFya2luZ19vcHRpb25fc2V0ID0g dHJ1ZTsNCiAJCQkJYnJlYWs7DQogCQkJY2FzZSAnRCc6DQpAQCAtMzMyMiwx MiArMzQwMywxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJ Lyogc2V0IGRlZmF1bHQgc2NyaXB0IGlmIG5vbmUgKi8NCiAJaWYgKG51bV9z Y3JpcHRzID09IDAgJiYgIWlzX2luaXRfbW9kZSkNCiAJew0KLQkJYWRkU2Ny aXB0KGRlc2MsDQotCQkJCSAgcHJvY2Vzc19idWlsdGluKGZpbmRCdWlsdGlu KCJ0cGNiLWxpa2UiLCAmZGVzYyksIGRlc2MpKTsNCisJCWFkZFNjcmlwdChw cm9jZXNzX2J1aWx0aW4oZmluZEJ1aWx0aW4oInRwY2ItbGlrZSIpKSwgMSk7 DQogCQliZW5jaG1hcmtpbmdfb3B0aW9uX3NldCA9IHRydWU7DQogCQlpbnRl cm5hbF9zY3JpcHRfdXNlZCA9IHRydWU7DQogCX0NCiANCisJLyogY29tcHV0 ZSB0b3RhbF93ZWlnaHQgKi8NCisJZm9yIChpID0gMDsgaSA8IG51bV9zY3Jp cHRzOyBpKyspDQorCQkvKiBjYW5ub3Qgb3ZlcmZsb3c6IHdlaWdodCBpcyAz MmIsIHRvdGFsX3dlaWdodCA2NGIgKi8NCisJCXRvdGFsX3dlaWdodCArPSBz cWxfc2NyaXB0W2ldLndlaWdodDsNCisNCiAJLyogc2hvdyBwZXIgc2NyaXB0 IHN0YXRzIGlmIHNldmVyYWwgc2NyaXB0cyBhcmUgdXNlZCAqLw0KIAlpZiAo bnVtX3NjcmlwdHMgPiAxKQ0KIAkJcGVyX3NjcmlwdF9zdGF0cyA9IHRydWU7 DQo= --8323329-1560440084-1457112723=:11128 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --8323329-1560440084-1457112723=:11128--