From mx.cogito@gmail.com Mon Aug 18 01:46:17 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 96BAE6501C0 for ; Sun, 17 Aug 2008 22:46:17 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 80896-05 for ; Sun, 17 Aug 2008 22:46:04 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.184]) by postgresql.org (Postfix) with ESMTP id DD5436501A8 for ; Sun, 17 Aug 2008 22:46:08 -0300 (ADT) Received: by ti-out-0910.google.com with SMTP id y8so973851tia.5 for ; Sun, 17 Aug 2008 18:46:06 -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:to :subject:mime-version:content-type; bh=bUjgKWGlC+ioSefJgCrNeX5mSFZb8nE+G/GAibnlLFI=; b=lOXi3n4HOPuk+ZxDsiwpT82mIOYxURFWaiNc9WfQ44CtaTVXZVWaK6Rrx9EmQE7LR9 XOq5GmHFTQ5EMj1nx3KRDN0imwVEUpbh9anxqM5TABXsiDUdpmr4DwSMnjlD25cWn6u3 F/RRw9G7KPmQoy8J0txFKhIuAzj1em3JEWsS4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=Nz6OGMnlQKkLZulIcH9ywbc1EYckIokD4neAzf7qhHr+m9BJxcx2G0SqUjYLQac0kF Lkdw3RVlFsB+WT05KFleEsvMJd1Y+Er/NTBF5n8d2kHagZsbW1EarIAZvodYStXiYDMh 1oFVlkbx7+xYJhDZiCdG8Wu/Fd8F+ZZmCv2pA= Received: by 10.110.47.17 with SMTP id u17mr1340042tiu.49.1219023966173; Sun, 17 Aug 2008 18:46:06 -0700 (PDT) Received: by 10.110.95.17 with HTTP; Sun, 17 Aug 2008 18:46:06 -0700 (PDT) Message-ID: Date: Mon, 18 Aug 2008 09:46:06 +0800 From: "Xiao Meng" To: pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: hash index improving v3 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_38647_21987634.1219023966172" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.001 tagged_above=0 required=5 tests=HTML_MESSAGE=0.001 X-Spam-Level: X-Archive-Number: 200808/14 X-Sequence-Number: 6990 ------=_Part_38647_21987634.1219023966172 Content-Type: multipart/alternative; boundary="----=_Part_38648_5438125.1219023966172" ------=_Part_38648_5438125.1219023966172 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline There's minor change against the previous one( http://archives.postgresql.org/pgsql-hackers/2008-07/msg01183.php ). * merge branch master(Aug 16) into the patch * clean code and make some comment Performance result is here http://wiki.postgresql.org/wiki/Gsoc08-hashindex It seems hash index is a little better on index creation and selection. But maybe it's in the range of noise, I'm not sure. I'd like to try it with a bigger dataset (e.g. table with 10GB) but there is not enough space in my computer. Anyone interest can make a test on a bigger data set. -- Best Regards, Xiao Meng DKERC, Harbin Institute of Technology, China Gtalk: mx.cogito@gmail.com MSN: cnEnder@live.com http://xiaomeng.yo2.cn ------=_Part_38648_5438125.1219023966172 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline
There's minor change against the previous one( http://archives.postgresql.org/pgsql-hackers/2008-07/msg01183.php ).
* merge branch master(Aug 16) into the patch
* clean code and make some comment
Performance result is here
http://wiki.postgresql.org/wiki/Gsoc08-hashindex


It seems hash index is a little better on index creation and selection.
But maybe  it's in the range of noise, I'm not sure.
I'd like to try it with a bigger dataset (e.g. table with 10GB) but there is not enough space in my computer.
Anyone interest can make a test on a bigger data set.

--
Best Regards,
Xiao Meng

DKERC, Harbin Institute of Technology, China
Gtalk: mx.cogito@gmail.com
MSN: cnEnder@live.com
http://xiaomeng.yo2.cn
------=_Part_38648_5438125.1219023966172-- ------=_Part_38647_21987634.1219023966172 Content-Type: text/x-diff; name=hash-v3.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fk0fd8hr0 Content-Disposition: attachment; filename=hash-v3.patch KioqIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCi0tLSBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2guYwoqKioqKioqKioqKioqKioKKioqIDEyOSwxMzUgKioqKiBoYXNoYnVp bGRDYWxsYmFjayhSZWxhdGlvbiBpbmRleCwKICAJSW5kZXhUdXBsZQlpdHVwOwogIAogIAkvKiBm b3JtIGFuIGluZGV4IHR1cGxlIGFuZCBwb2ludCBpdCBhdCB0aGUgaGVhcCB0dXBsZSAqLwohIAlp dHVwID0gaW5kZXhfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKGluZGV4KSwgdmFsdWVzLCBp c251bGwpOwogIAlpdHVwLT50X3RpZCA9IGh0dXAtPnRfc2VsZjsKICAKICAJLyogSGFzaCBpbmRl eGVzIGRvbid0IGluZGV4IG51bGxzLCBzZWUgbm90ZXMgaW4gaGFzaGluc2VydCAqLwotLS0gMTI5 LDEzNSAtLS0tCiAgCUluZGV4VHVwbGUJaXR1cDsKICAKICAJLyogZm9ybSBhbiBpbmRleCB0dXBs ZSBhbmQgcG9pbnQgaXQgYXQgdGhlIGhlYXAgdHVwbGUgKi8KISAJaXR1cCA9IF9oYXNoX2Zvcm1f dHVwbGUoaW5kZXgsIHZhbHVlcyxpc251bGwpOwogIAlpdHVwLT50X3RpZCA9IGh0dXAtPnRfc2Vs ZjsKICAKICAJLyogSGFzaCBpbmRleGVzIGRvbid0IGluZGV4IG51bGxzLCBzZWUgbm90ZXMgaW4g aGFzaGluc2VydCAqLwoqKioqKioqKioqKioqKioKKioqIDE1MywxNjAgKioqKiBoYXNoYnVpbGRD YWxsYmFjayhSZWxhdGlvbiBpbmRleCwKICAvKgogICAqCWhhc2hpbnNlcnQoKSAtLSBpbnNlcnQg YW4gaW5kZXggdHVwbGUgaW50byBhIGhhc2ggdGFibGUuCiAgICoKISAgKglIYXNoIG9uIHRoZSBp bmRleCB0dXBsZSdzIGtleSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24KISAgKglmb3Ig dGhlIG5ldyB0dXBsZSwgYW5kIHB1dCBpdCB0aGVyZS4KICAgKi8KICBEYXR1bQogIGhhc2hpbnNl cnQoUEdfRlVOQ1RJT05fQVJHUykKLS0tIDE1MywxNjAgLS0tLQogIC8qCiAgICoJaGFzaGluc2Vy dCgpIC0tIGluc2VydCBhbiBpbmRleCB0dXBsZSBpbnRvIGEgaGFzaCB0YWJsZS4KICAgKgohICAq CUhhc2ggb24gdGhlIGhlYXAgdHVwbGUncyBrZXksIGZvcm0gYW4gaW5kZXggdHVwbGUgd2l0aCBo YXNoIGNvZGUuCiEgICoJRmluZCB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gZm9yIHRoZSBuZXcg dHVwbGUsIGFuZCBwdXQgaXQgdGhlcmUuCiAgICovCiAgRGF0dW0KICBoYXNoaW5zZXJ0KFBHX0ZV TkNUSU9OX0FSR1MpCioqKioqKioqKioqKioqKgoqKiogMTcxLDE3NyAqKioqIGhhc2hpbnNlcnQo UEdfRlVOQ1RJT05fQVJHUykKICAJSW5kZXhUdXBsZQlpdHVwOwogIAogIAkvKiBnZW5lcmF0ZSBh biBpbmRleCB0dXBsZSAqLwohIAlpdHVwID0gaW5kZXhfZm9ybV90dXBsZShSZWxhdGlvbkdldERl c2NyKHJlbCksIHZhbHVlcywgaXNudWxsKTsKICAJaXR1cC0+dF90aWQgPSAqaHRfY3RpZDsKICAK ICAJLyoKLS0tIDE3MSwxNzcgLS0tLQogIAlJbmRleFR1cGxlCWl0dXA7CiAgCiAgCS8qIGdlbmVy YXRlIGFuIGluZGV4IHR1cGxlICovCiEgCWl0dXAgPSBfaGFzaF9mb3JtX3R1cGxlKHJlbCwgdmFs dWVzLCBpc251bGwpOwogIAlpdHVwLT50X3RpZCA9ICpodF9jdGlkOwogIAogIAkvKgoqKioqKioq KioqKioqKioKKioqIDIxMSwyMTggKioqKiBoYXNoZ2V0dHVwbGUoUEdfRlVOQ1RJT05fQVJHUykK ICAJT2Zmc2V0TnVtYmVyIG9mZm51bTsKICAJYm9vbAkJcmVzOwogIAohIAkvKiBIYXNoIGluZGV4 ZXMgYXJlIG5ldmVyIGxvc3N5IChhdCB0aGUgbW9tZW50IGFueXdheSkgKi8KISAJc2Nhbi0+eHNf cmVjaGVjayA9IGZhbHNlOwogIAogIAkvKgogIAkgKiBXZSBob2xkIHBpbiBidXQgbm90IGxvY2sg b24gY3VycmVudCBidWZmZXIgd2hpbGUgb3V0c2lkZSB0aGUgaGFzaCBBTS4KLS0tIDIxMSwyMTgg LS0tLQogIAlPZmZzZXROdW1iZXIgb2ZmbnVtOwogIAlib29sCQlyZXM7CiAgCiEgCS8qIEhhc2gg aW5kZXhlcyBtYXliZSBsb3NzeSBzaW5jZSB3ZSBzdG9yZSBoYXNoIGNvZGUgb25seSAqLwohIAlz Y2FuLT54c19yZWNoZWNrID0gdHJ1ZTsKICAKICAJLyoKICAJICogV2UgaG9sZCBwaW4gYnV0IG5v dCBsb2NrIG9uIGN1cnJlbnQgYnVmZmVyIHdoaWxlIG91dHNpZGUgdGhlIGhhc2ggQU0uCioqKiBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwotLS0gYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKKioqKioqKioqKioqKioqCioqKiA0NCw2MCAqKioqIF9o YXNoX2RvaW5zZXJ0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogIAl1aW50MzIJCWhh c2hrZXk7CiAgCUJ1Y2tldAkJYnVja2V0OwogIAlEYXR1bQkJZGF0dW07Ci0gCWJvb2wJCWlzbnVs bDsKICAKICAJLyoKISAJICogQ29tcHV0ZSB0aGUgaGFzaCBrZXkgZm9yIHRoZSBpdGVtLiAgV2Ug ZG8gdGhpcyBmaXJzdCBzbyBhcyBub3QgdG8gbmVlZAohIAkgKiB0byBob2xkIGFueSBsb2NrcyB3 aGlsZSBydW5uaW5nIHRoZSBoYXNoIGZ1bmN0aW9uLgogIAkgKi8KICAJaWYgKHJlbC0+cmRfcmVs LT5yZWxuYXR0cyAhPSAxKQogIAkJZWxvZyhFUlJPUiwgImhhc2ggaW5kZXhlcyBzdXBwb3J0IG9u bHkgb25lIGluZGV4IGtleSIpOwohIAlkYXR1bSA9IGluZGV4X2dldGF0dHIoaXR1cCwgMSwgUmVs YXRpb25HZXREZXNjcihyZWwpLCAmaXNudWxsKTsKISAJQXNzZXJ0KCFpc251bGwpOwohIAloYXNo a2V5ID0gX2hhc2hfZGF0dW0yaGFzaGtleShyZWwsIGRhdHVtKTsKICAKICAJLyogY29tcHV0ZSBp dGVtIHNpemUgdG9vICovCiAgCWl0ZW1zeiA9IEluZGV4VHVwbGVEU2l6ZSgqaXR1cCk7Ci0tLSA0 NCw1OCAtLS0tCiAgCXVpbnQzMgkJaGFzaGtleTsKICAJQnVja2V0CQlidWNrZXQ7CiAgCURhdHVt CQlkYXR1bTsKICAKICAJLyoKISAJICogR2V0IHRoZSBoYXNoIGtleSBmb3IgdGhlIGl0ZW0uCiAg CSAqLwogIAlpZiAocmVsLT5yZF9yZWwtPnJlbG5hdHRzICE9IDEpCiAgCQllbG9nKEVSUk9SLCAi aGFzaCBpbmRleGVzIHN1cHBvcnQgb25seSBvbmUgaW5kZXgga2V5Iik7CiEgCiEgCWRhdHVtID0g X2hhc2hfZ2V0X2RhdHVtKGl0dXApOwohIAloYXNoa2V5ID0gRGF0dW1HZXRVSW50MzIoZGF0dW0p OwogIAogIAkvKiBjb21wdXRlIGl0ZW0gc2l6ZSB0b28gKi8KICAJaXRlbXN6ID0gSW5kZXhUdXBs ZURTaXplKCppdHVwKTsKKioqKioqKioqKioqKioqCioqKiAxOTcsMjA3ICoqKiogX2hhc2hfcGdh ZGR0dXAoUmVsYXRpb24gcmVsLAogIHsKICAJT2Zmc2V0TnVtYmVyIGl0dXBfb2ZmOwogIAlQYWdl CQlwYWdlOwogIAogIAlfaGFzaF9jaGVja3BhZ2UocmVsLCBidWYsIExIX0JVQ0tFVF9QQUdFIHwg TEhfT1ZFUkZMT1dfUEFHRSk7CiAgCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAgCiEgCWl0 dXBfb2ZmID0gT2Zmc2V0TnVtYmVyTmV4dChQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKTsK ICAJaWYgKFBhZ2VBZGRJdGVtKHBhZ2UsIChJdGVtKSBpdHVwLCBpdGVtc2l6ZSwgaXR1cF9vZmYs IGZhbHNlLCBmYWxzZSkKICAJCT09IEludmFsaWRPZmZzZXROdW1iZXIpCiAgCQllbG9nKEVSUk9S LCAiZmFpbGVkIHRvIGFkZCBpbmRleCBpdGVtIHRvIFwiJXNcIiIsCi0tLSAxOTUsMjEwIC0tLS0K ICB7CiAgCU9mZnNldE51bWJlciBpdHVwX29mZjsKICAJUGFnZQkJcGFnZTsKKyAJRGF0dW0JCWRh dHVtOworIAl1aW50MzIJCWhhc2hrZXk7CiAgCiAgCV9oYXNoX2NoZWNrcGFnZShyZWwsIGJ1Ziwg TEhfQlVDS0VUX1BBR0UgfCBMSF9PVkVSRkxPV19QQUdFKTsKICAJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmKTsKICAKISAJZGF0dW0gPSBfaGFzaF9nZXRfZGF0dW0oaXR1cCk7CiEgCWhhc2hrZXkg PSBEYXR1bUdldFVJbnQzMihkYXR1bSk7CiEgCWl0dXBfb2ZmID0gX2hhc2hfYmluc2VhcmNoKHBh Z2UsIGhhc2hrZXkpOwohIAogIAlpZiAoUGFnZUFkZEl0ZW0ocGFnZSwgKEl0ZW0pIGl0dXAsIGl0 ZW1zaXplLCBpdHVwX29mZiwgZmFsc2UsIGZhbHNlKQogIAkJPT0gSW52YWxpZE9mZnNldE51bWJl cikKICAJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gYWRkIGluZGV4IGl0ZW0gdG8gXCIlc1wiIiwK KioqIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2UuYwotLS0gYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCioqKioqKioqKioqKioqKgoqKiogMzQ4LDM1OCAqKioq IF9oYXNoX21ldGFwaW5pdChSZWxhdGlvbiByZWwsIGRvdWJsZSBudW1fdHVwbGVzKQogIAkgKiBE ZXRlcm1pbmUgdGhlIHRhcmdldCBmaWxsIGZhY3RvciAoaW4gdHVwbGVzIHBlciBidWNrZXQpIGZv ciB0aGlzIGluZGV4LgogIAkgKiBUaGUgaWRlYSBpcyB0byBtYWtlIHRoZSBmaWxsIGZhY3RvciBj b3JyZXNwb25kIHRvIHBhZ2VzIGFib3V0IGFzIGZ1bGwKICAJICogYXMgdGhlIHVzZXItc2V0dGFi bGUgZmlsbGZhY3RvciBwYXJhbWV0ZXIgc2F5cy4JV2UgY2FuIGNvbXB1dGUgaXQKISAJICogZXhh Y3RseSBpZiB0aGUgaW5kZXggZGF0YXR5cGUgaXMgZml4ZWQtd2lkdGgsIGJ1dCBmb3IgdmFyLXdp ZHRoIHRoZXJlJ3MKISAJICogc29tZSBndWVzc2luZyBpbnZvbHZlZC4KICAJICovCiEgCWRhdGFf d2lkdGggPSBnZXRfdHlwYXZnd2lkdGgoUmVsYXRpb25HZXREZXNjcihyZWwpLT5hdHRyc1swXS0+ YXR0dHlwaWQsCiEgCQkJCQkJCQkgUmVsYXRpb25HZXREZXNjcihyZWwpLT5hdHRyc1swXS0+YXR0 dHlwbW9kKTsKICAJaXRlbV93aWR0aCA9IE1BWEFMSUdOKHNpemVvZihJbmRleFR1cGxlRGF0YSkp ICsgTUFYQUxJR04oZGF0YV93aWR0aCkgKwogIAkJc2l6ZW9mKEl0ZW1JZERhdGEpOwkJLyogaW5j bHVkZSB0aGUgbGluZSBwb2ludGVyICovCiAgCWZmYWN0b3IgPSBSZWxhdGlvbkdldFRhcmdldFBh Z2VVc2FnZShyZWwsIEhBU0hfREVGQVVMVF9GSUxMRkFDVE9SKSAvIGl0ZW1fd2lkdGg7Ci0tLSAz NDgsMzU2IC0tLS0KICAJICogRGV0ZXJtaW5lIHRoZSB0YXJnZXQgZmlsbCBmYWN0b3IgKGluIHR1 cGxlcyBwZXIgYnVja2V0KSBmb3IgdGhpcyBpbmRleC4KICAJICogVGhlIGlkZWEgaXMgdG8gbWFr ZSB0aGUgZmlsbCBmYWN0b3IgY29ycmVzcG9uZCB0byBwYWdlcyBhYm91dCBhcyBmdWxsCiAgCSAq IGFzIHRoZSB1c2VyLXNldHRhYmxlIGZpbGxmYWN0b3IgcGFyYW1ldGVyIHNheXMuCVdlIGNhbiBj b21wdXRlIGl0CiEgCSAqIGV4YWN0bHkgc2luY2UgdGhlIGluZGV4IGRhdGF0eXBlIChpLmUuIGhh c2ggY29kZSBvZiB1aW50MzIgKSBpcyBmaXhlZC13aWR0aC4KICAJICovCiEgCWRhdGFfd2lkdGgg PSA0OwogIAlpdGVtX3dpZHRoID0gTUFYQUxJR04oc2l6ZW9mKEluZGV4VHVwbGVEYXRhKSkgKyBN QVhBTElHTihkYXRhX3dpZHRoKSArCiAgCQlzaXplb2YoSXRlbUlkRGF0YSk7CQkvKiBpbmNsdWRl IHRoZSBsaW5lIHBvaW50ZXIgKi8KICAJZmZhY3RvciA9IFJlbGF0aW9uR2V0VGFyZ2V0UGFnZVVz YWdlKHJlbCwgSEFTSF9ERUZBVUxUX0ZJTExGQUNUT1IpIC8gaXRlbV93aWR0aDsKKioqKioqKioq KioqKioqCioqKiA3ODUsNzkxICoqKiogX2hhc2hfc3BsaXRidWNrZXQoUmVsYXRpb24gcmVsLAog IAlPZmZzZXROdW1iZXIgb21heG9mZm51bTsKICAJUGFnZQkJb3BhZ2U7CiAgCVBhZ2UJCW5wYWdl OwohIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAgCiAgCS8q CiAgCSAqIEl0IHNob3VsZCBiZSBva2F5IHRvIHNpbXVsdGFuZW91c2x5IHdyaXRlLWxvY2sgcGFn ZXMgZnJvbSBlYWNoIGJ1Y2tldCwKLS0tIDc4Myw3ODkgLS0tLQogIAlPZmZzZXROdW1iZXIgb21h eG9mZm51bTsKICAJUGFnZQkJb3BhZ2U7CiAgCVBhZ2UJCW5wYWdlOwohIAogIAogIAkvKgogIAkg KiBJdCBzaG91bGQgYmUgb2theSB0byBzaW11bHRhbmVvdXNseSB3cml0ZS1sb2NrIHBhZ2VzIGZy b20gZWFjaCBidWNrZXQsCioqKioqKioqKioqKioqKgoqKiogODQ4LDg2MSAqKioqIF9oYXNoX3Nw bGl0YnVja2V0KFJlbGF0aW9uIHJlbCwKICAJCS8qCiAgCQkgKiBSZS1oYXNoIHRoZSB0dXBsZSB0 byBkZXRlcm1pbmUgd2hpY2ggYnVja2V0IGl0IG5vdyBiZWxvbmdzIGluLgogIAkJICoKISAJCSAq IEl0IGlzIGFubm95aW5nIHRvIGNhbGwgdGhlIGhhc2ggZnVuY3Rpb24gd2hpbGUgaG9sZGluZyBs b2NrcywgYnV0CiEgCQkgKiByZWxlYXNpbmcgYW5kIHJlbG9ja2luZyB0aGUgcGFnZSBmb3IgZWFj aCB0dXBsZSBpcyB1bmFwcGVhbGluZyB0b28uCiAgCQkgKi8KICAJCWl0dXAgPSAoSW5kZXhUdXBs ZSkgUGFnZUdldEl0ZW0ob3BhZ2UsIFBhZ2VHZXRJdGVtSWQob3BhZ2UsIG9vZmZudW0pKTsKISAJ CWRhdHVtID0gaW5kZXhfZ2V0YXR0cihpdHVwLCAxLCBpdHVwZGVzYywgJm51bGwpOwohIAkJQXNz ZXJ0KCFudWxsKTsKISAKISAJCWJ1Y2tldCA9IF9oYXNoX2hhc2hrZXkyYnVja2V0KF9oYXNoX2Rh dHVtMmhhc2hrZXkocmVsLCBkYXR1bSksCiAgCQkJCQkJCQkJICBtYXhidWNrZXQsIGhpZ2htYXNr LCBsb3dtYXNrKTsKICAKICAJCWlmIChidWNrZXQgPT0gbmJ1Y2tldCkKLS0tIDg0Niw4NTYgLS0t LQogIAkJLyoKICAJCSAqIFJlLWhhc2ggdGhlIHR1cGxlIHRvIGRldGVybWluZSB3aGljaCBidWNr ZXQgaXQgbm93IGJlbG9uZ3MgaW4uCiAgCQkgKgohICAgICAgICAgICogV2UgbmVlZG4ndCBjYWxs IGhhc2ggZnVuY3Rpb24gc2luY2Ugd2Ugc3RvcmUgaGFzaCBjb2RlIGluIHRoZSBpbmRleCB0dXBs ZQogIAkJICovCiAgCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKG9wYWdlLCBQYWdl R2V0SXRlbUlkKG9wYWdlLCBvb2ZmbnVtKSk7CiEgCQlkYXR1bSA9IF9oYXNoX2dldF9kYXR1bShp dHVwKTsKISAJCWJ1Y2tldCA9IF9oYXNoX2hhc2hrZXkyYnVja2V0KERhdHVtR2V0VUludDMyKGRh dHVtKSwKICAJCQkJCQkJCQkgIG1heGJ1Y2tldCwgaGlnaG1hc2ssIGxvd21hc2spOwogIAogIAkJ aWYgKGJ1Y2tldCA9PSBuYnVja2V0KQoqKiogYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo c2VhcmNoLmMKLS0tIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNlYXJjaC5jCioqKioq KioqKioqKioqKgoqKiogMTc4LDE4MyAqKioqIF9oYXNoX2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2Nh biwgU2NhbkRpcmVjdGlvbiBkaXIpCi0tLSAxNzgsMTg0IC0tLS0KICAJCWhhc2hrZXkgPSBfaGFz aF9kYXR1bTJoYXNoa2V5X3R5cGUocmVsLCBjdXItPnNrX2FyZ3VtZW50LAogIAkJCQkJCQkJCQkg ICBjdXItPnNrX3N1YnR5cGUpOwogIAorICAgICBzby0+aGFzaHNvX3NrX2hhc2ggPSBoYXNoa2V5 OwogIAkvKgogIAkgKiBBY3F1aXJlIHNoYXJlZCBzcGxpdCBsb2NrIHNvIHdlIGNhbiBjb21wdXRl IHRoZSB0YXJnZXQgYnVja2V0IHNhZmVseQogIAkgKiAoc2VlIFJFQURNRSkuCioqKioqKioqKioq KioqKgoqKiogMjg5LDM3MCAqKioqIF9oYXNoX3N0ZXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBCdWZm ZXIgKmJ1ZlAsIFNjYW5EaXJlY3Rpb24gZGlyKQogIAkgKiBjb250aW51ZSB0byBzdGVwIHRocm91 Z2ggdHVwbGVzIHVudGlsOiAxKSB3ZSBnZXQgdG8gdGhlIGVuZCBvZiB0aGUKICAJICogYnVja2V0 IGNoYWluIG9yIDIpIHdlIGZpbmQgYSB2YWxpZCB0dXBsZS4KICAJICovCiEgCWRvCiEgCXsKISAJ CXN3aXRjaCAoZGlyKQogIAkJewohIAkJCWNhc2UgRm9yd2FyZFNjYW5EaXJlY3Rpb246CiEgCQkJ CWlmIChvZmZudW0gIT0gSW52YWxpZE9mZnNldE51bWJlcikKISAJCQkJCW9mZm51bSA9IE9mZnNl dE51bWJlck5leHQob2ZmbnVtKTsJLyogbW92ZSBmb3J3YXJkICovCiEgCQkJCWVsc2UKISAJCQkJ CW9mZm51bSA9IEZpcnN0T2Zmc2V0TnVtYmVyOyAvKiBuZXcgcGFnZSAqLwohIAohIAkJCQl3aGls ZSAob2ZmbnVtID4gbWF4b2ZmKQohIAkJCQl7CiEgCQkJCQkvKgohIAkJCQkJICogZWl0aGVyIHRo aXMgcGFnZSBpcyBlbXB0eSAobWF4b2ZmID09CiEgCQkJCQkgKiBJbnZhbGlkT2Zmc2V0TnVtYmVy KSBvciB3ZSByYW4gb2ZmIHRoZSBlbmQuCiEgCQkJCQkgKi8KISAJCQkJCV9oYXNoX3JlYWRuZXh0 KHJlbCwgJmJ1ZiwgJnBhZ2UsICZvcGFxdWUpOwohIAkJCQkJaWYgKEJ1ZmZlcklzVmFsaWQoYnVm KSkKISAJCQkJCXsKISAJCQkJCQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2Up OwohIAkJCQkJCW9mZm51bSA9IEZpcnN0T2Zmc2V0TnVtYmVyOwohIAkJCQkJfQohIAkJCQkJZWxz ZQohIAkJCQkJewohIAkJCQkJCS8qIGVuZCBvZiBidWNrZXQgKi8KISAJCQkJCQltYXhvZmYgPSBv ZmZudW0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwohIAkJCQkJCWJyZWFrOwkvKiBleGl0IHdoaWxl ICovCiEgCQkJCQl9CiEgCQkJCX0KISAJCQkJYnJlYWs7CiEgCiEgCQkJY2FzZSBCYWNrd2FyZFNj YW5EaXJlY3Rpb246CiEgCQkJCWlmIChvZmZudW0gIT0gSW52YWxpZE9mZnNldE51bWJlcikKISAJ CQkJCW9mZm51bSA9IE9mZnNldE51bWJlclByZXYob2ZmbnVtKTsJLyogbW92ZSBiYWNrICovCiEg CQkJCWVsc2UKISAJCQkJCW9mZm51bSA9IG1heG9mZjsJLyogbmV3IHBhZ2UgKi8KISAKISAJCQkJ d2hpbGUgKG9mZm51bSA8IEZpcnN0T2Zmc2V0TnVtYmVyKQohIAkJCQl7CiEgCQkJCQkvKgohIAkJ CQkJICogZWl0aGVyIHRoaXMgcGFnZSBpcyBlbXB0eSAob2ZmbnVtID09CiEgCQkJCQkgKiBJbnZh bGlkT2Zmc2V0TnVtYmVyKSBvciB3ZSByYW4gb2ZmIHRoZSBlbmQuCiEgCQkJCQkgKi8KISAJCQkJ CV9oYXNoX3JlYWRwcmV2KHJlbCwgJmJ1ZiwgJnBhZ2UsICZvcGFxdWUpOwohIAkJCQkJaWYgKEJ1 ZmZlcklzVmFsaWQoYnVmKSkKISAJCQkJCQltYXhvZmYgPSBvZmZudW0gPSBQYWdlR2V0TWF4T2Zm c2V0TnVtYmVyKHBhZ2UpOwohIAkJCQkJZWxzZQohIAkJCQkJewohIAkJCQkJCS8qIGVuZCBvZiBi dWNrZXQgKi8KISAJCQkJCQltYXhvZmYgPSBvZmZudW0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwoh IAkJCQkJCWJyZWFrOwkvKiBleGl0IHdoaWxlICovCiEgCQkJCQl9CiEgCQkJCX0KISAJCQkJYnJl YWs7CiEgCiEgCQkJZGVmYXVsdDoKISAJCQkJLyogTm9Nb3ZlbWVudFNjYW5EaXJlY3Rpb24gKi8K ISAJCQkJLyogdGhpcyBzaG91bGQgbm90IGJlIHJlYWNoZWQgKi8KISAJCQkJYnJlYWs7CiAgCQl9 CiAgCiEgCQkvKiB3ZSByYW4gb2ZmIHRoZSBlbmQgb2YgdGhlIHdvcmxkIHdpdGhvdXQgZmluZGlu ZyBhIG1hdGNoICovCiEgCQlpZiAob2ZmbnVtID09IEludmFsaWRPZmZzZXROdW1iZXIpCiAgCQl7 CiEgCQkJKmJ1ZlAgPSBzby0+aGFzaHNvX2N1cmJ1ZiA9IEludmFsaWRCdWZmZXI7CiEgCQkJSXRl bVBvaW50ZXJTZXRJbnZhbGlkKGN1cnJlbnQpOwohIAkJCXJldHVybiBmYWxzZTsKICAJCX0KISAK ISAJCS8qIGdldCByZWFkeSB0byBjaGVjayB0aGlzIHR1cGxlICovCiEgCQlpdHVwID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKSk7CiEg CX0gd2hpbGUgKCFfaGFzaF9jaGVja3F1YWwoc2NhbiwgaXR1cCkpOwohIAohIAkvKiBpZiB3ZSBt YWRlIGl0IHRvIGhlcmUsIHdlJ3ZlIGZvdW5kIGEgdmFsaWQgdHVwbGUgKi8KISAJYmxrbm8gPSBC dWZmZXJHZXRCbG9ja051bWJlcihidWYpOwohIAkqYnVmUCA9IHNvLT5oYXNoc29fY3VyYnVmID0g YnVmOwohIAlJdGVtUG9pbnRlclNldChjdXJyZW50LCBibGtubywgb2ZmbnVtKTsKISAJcmV0dXJu IHRydWU7CiAgfQotLS0gMjkwLDM0MCAtLS0tCiAgCSAqIGNvbnRpbnVlIHRvIHN0ZXAgdGhyb3Vn aCB0dXBsZXMgdW50aWw6IDEpIHdlIGdldCB0byB0aGUgZW5kIG9mIHRoZQogIAkgKiBidWNrZXQg Y2hhaW4gb3IgMikgd2UgZmluZCBhIHZhbGlkIHR1cGxlLgogIAkgKi8KISAgICAgZm9yICg7OykK ISAgICAgewohICAgICAgICAgaWYgKG9mZm51bSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQohICAg ICAgICAgewohIAkJCS8qCiEgCQkJICogVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSdyZSBzY2Fu bmluZyB0aGlzIHBhcnRpY3VsYXIKISAJCQkgKiBwYWdlIG9mIHRoZSBidWNrZXQsIHNvIGp1bXAg dG8gdGhlIHJpZ2h0IHNwb3QgdmlhCiEgCQkJICogYmluYXJ5IHNlYXJjaC4KISAJCQkgKi8KISAJ CQlvZmZudW0gPSBfaGFzaF9iaW5zZWFyY2gocGFnZSwgc28tPmhhc2hzb19za19oYXNoKTsKISAJ CX0KISAgICAgICAgIGVsc2UKICAJCXsKISAJCQkvKiBBZHZhbmNlIHRvIHRoZSBuZXh0IHR1cGxl ICovCiEgCQkJb2ZmbnVtID0gT2Zmc2V0TnVtYmVyTmV4dChvZmZudW0pOwogIAkJfQogIAohIAkJ aWYgKG9mZm51bSA8PSBtYXhvZmYpIGl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFn ZSwgUGFnZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pKTsKISAJCWlmIChvZmZudW0gPD0gbWF4b2Zm ICYmIF9oYXNoX2NoZWNrcXVhbChzY2FuLCBpdHVwKSkKICAJCXsKISAJCQkvKiBGb3VuZCBhIG1h dGNoaW5nIHR1cGxlICovCiEgCQkJKmJ1ZlAgPSBzby0+aGFzaHNvX2N1cmJ1ZiA9IGJ1ZjsKISAJ CQlJdGVtUG9pbnRlclNldChjdXJyZW50LCBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpLCBvZmZu dW0pOwohIAkJCXJldHVybiB0cnVlOwogIAkJfQohIAkJZWxzZQohIAkJewohIAkJCS8qIE5vIG1v cmUgbWF0Y2hlcyBvbiB0aGlzIHBhZ2UsIHNvIGdvIG9uIHRvIG5leHQgcGFnZSAqLwohIAkJCWlm IChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKGRpcikpCiEgCQkJCV9oYXNoX3JlYWRuZXh0KHJlbCwg JmJ1ZiwgJnBhZ2UsICZvcGFxdWUpOwohIAkJCWVsc2UKISAJCQkJX2hhc2hfcmVhZHByZXYocmVs LCAmYnVmLCAmcGFnZSwgJm9wYXF1ZSk7CiEgCiEgCQkJaWYgKEJ1ZmZlcklzVmFsaWQoYnVmKSkK ISAJCQl7CiEgCQkJCW1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CiEgCQkJ CW9mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CiEgCQkJfQohIAkJCWVsc2UKISAJCQl7CiEg CQkJCS8qIFJhbiBvdXQgb2YgcGFnZXMsIHNvIHdlJ3JlIGRvbmUgKi8KISAJCQkJKmJ1ZlAgPSBz by0+aGFzaHNvX2N1cmJ1ZiA9IEludmFsaWRCdWZmZXI7CiEgCQkJCUl0ZW1Qb2ludGVyU2V0SW52 YWxpZChjdXJyZW50KTsKISAJCQkJcmV0dXJuIGZhbHNlOwohIAkJICAgIH0KISAgICAgICAgIH0K ISAgICAgfQogIH0KKioqIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHV0aWwuYwotLS0g Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNodXRpbC5jCioqKioqKioqKioqKioqKgoqKiog MjAsNTMgKioqKgogICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKICAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAgCiAgCiAg LyoKICAgKiBfaGFzaF9jaGVja3F1YWwgLS0gZG9lcyB0aGUgaW5kZXggdHVwbGUgc2F0aXNmeSB0 aGUgc2NhbiBjb25kaXRpb25zPwogICAqLwogIGJvb2wKICBfaGFzaF9jaGVja3F1YWwoSW5kZXhT Y2FuRGVzYyBzY2FuLCBJbmRleFR1cGxlIGl0dXApCiAgewotIAlUdXBsZURlc2MJdHVwZGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3Ioc2Nhbi0+aW5kZXhSZWxhdGlvbik7CiAgCVNjYW5LZXkJCWtleSA9 IHNjYW4tPmtleURhdGE7CiAgCWludAkJCXNjYW5LZXlTaXplID0gc2Nhbi0+bnVtYmVyT2ZLZXlz OwogIAogIAlJbmNySW5kZXhQcm9jZXNzZWQoKTsKICAKICAJd2hpbGUgKHNjYW5LZXlTaXplID4g MCkKICAJewotIAkJRGF0dW0JCWRhdHVtOwotIAkJYm9vbAkJaXNOdWxsOwogIAkJRGF0dW0JCXRl c3Q7CiEgCiEgCQlkYXR1bSA9IGluZGV4X2dldGF0dHIoaXR1cCwKISAJCQkJCQkJICBrZXktPnNr X2F0dG5vLAohIAkJCQkJCQkgIHR1cGRlc2MsCiEgCQkJCQkJCSAgJmlzTnVsbCk7CiAgCiAgCQkv KiBhc3N1bWUgc2tfZnVuYyBpcyBzdHJpY3QgKi8KLSAJCWlmIChpc051bGwpCi0gCQkJcmV0dXJu IGZhbHNlOwogIAkJaWYgKGtleS0+c2tfZmxhZ3MgJiBTS19JU05VTEwpCiAgCQkJcmV0dXJuIGZh bHNlOwogIAotLS0gMjAsNTkgLS0tLQogICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIK ICAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCisgI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisgI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgogIAogIAogIC8qCisgICoJCWhhcmRjb2RlZCB0dXBsZSBkZXNjcmlwdG9ycy4gIHNl ZSBpbmNsdWRlL2FjY2Vzcy9oYXNoLmgKKyAgKi8KKyBzdGF0aWMgRm9ybURhdGFfcGdfYXR0cmli dXRlIERlc2NfaGFzaFsxXSA9IHtTY2hlbWFfSGFzaH07CisgLyoKICAgKiBfaGFzaF9jaGVja3F1 YWwgLS0gZG9lcyB0aGUgaW5kZXggdHVwbGUgc2F0aXNmeSB0aGUgc2NhbiBjb25kaXRpb25zPwog ICAqLwogIGJvb2wKICBfaGFzaF9jaGVja3F1YWwoSW5kZXhTY2FuRGVzYyBzY2FuLCBJbmRleFR1 cGxlIGl0dXApCiAgewogIAlTY2FuS2V5CQlrZXkgPSBzY2FuLT5rZXlEYXRhOwogIAlpbnQJCQlz Y2FuS2V5U2l6ZSA9IHNjYW4tPm51bWJlck9mS2V5czsKKyAJRGF0dW0JCWRhdHVtOworIAlIYXNo U2Nhbk9wYXF1ZSAgICAgIHNvID0gc2Nhbi0+b3BhcXVlOwogIAogIAlJbmNySW5kZXhQcm9jZXNz ZWQoKTsKKyAJCisgCWRhdHVtID0gX2hhc2hfZ2V0X2RhdHVtKGl0dXApOworIAlpZiggc28tPmhh c2hzb19za19oYXNoICE9IERhdHVtR2V0VUludDMyKGRhdHVtKSApCisgCQlyZXR1cm4gZmFsc2U7 CisgCWtleSsrOworIAlzY2FuS2V5U2l6ZS0tOwogIAogIAl3aGlsZSAoc2NhbktleVNpemUgPiAw KQogIAl7CiAgCQlEYXR1bQkJdGVzdDsKISAJCQohIAkJZGF0dW0gPSBfaGFzaF9nZXRfZGF0dW0o aXR1cCk7CiAgCiAgCQkvKiBhc3N1bWUgc2tfZnVuYyBpcyBzdHJpY3QgKi8KICAJCWlmIChrZXkt PnNrX2ZsYWdzICYgU0tfSVNOVUxMKQogIAkJCXJldHVybiBmYWxzZTsKICAKKioqKioqKioqKioq KioqCioqKiAyMjEsMjIzICoqKiogaGFzaG9wdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKLS0tIDIy NywzMjYgLS0tLQogIAkJUEdfUkVUVVJOX0JZVEVBX1AocmVzdWx0KTsKICAJUEdfUkVUVVJOX05V TEwoKTsKICB9CisgCisgLyoKKyAgKiBfZ2V0X2hhc2hfZGVzYyAtIGdldCB0aGUgaGFzaCBpbmRl eCB0dXBsZSBkZXNjcmlwdG9yCisgICoKKyAgKiBUaGUgaGFzaCBpbmRleCB0dXBsZSBkZXNjcmlw dG9yIGlzIGEgaGFyZC1jb2RlZCB0dXBsZSBkZXNjcmlwdG9yIHdpdGggb25seSBpbnQzMiBhdHRy aWJ1dGUuCisgICovCisgVHVwbGVEZXNjIF9nZXRfaGFzaF9kZXNjKCkKKyB7CisgCXN0YXRpYyBU dXBsZURlc2MgaGFzaGRlc2MgPSBOVUxMOworIAorIAkvKiBBbHJlYWR5IGRvbmU/ICovCisgCWlm IChoYXNoZGVzYyA9PSBOVUxMKXsgCisgICAgICAgICAvKiAKKyAgICAgICAgICAqIEl0J3MgdGhl IHNhbWUgd2l0aCBCdWlsZEhhcmRjb2RlZERlc2NyaXB0b3IoKSBpbiByZWxjYWNoZS5jIHRvIGJ1 aWxkCisgICAgICAgICAgKiBhIGhhcmQtY29kZWQgdHVwbGUgZGVzY3JpcHRvci4gCisgICAgICAg ICAgKi8KKyAJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworIAkJCisgCQlvbGRjeHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKyAJCQorIAkJaGFzaGRlc2MgPSBD cmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygxLCBmYWxzZSk7CisgCQloYXNoZGVzYy0+dGR0eXBlaWQg PSBJTlQ0T0lEOworIAkJaGFzaGRlc2MtPnRkdHlwbW9kID0gLTE7CisgCQltZW1jcHkoaGFzaGRl c2MtPmF0dHJzWzBdLCAmRGVzY19oYXNoWzBdLCBBVFRSSUJVVEVfVFVQTEVfU0laRSk7CisgCQlo YXNoZGVzYy0+YXR0cnNbMF0tPmF0dGNhY2hlb2ZmID0gMDsgCisgICAgICAgICAKKyAJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworICAgICB9CisgCisgCXJldHVybiBoYXNoZGVzYzsK KyAKKyB9CisgCisgLyoKKyAgKiBfaGFzaF9nZXRfZGF0dW0gLSBnZXQgdGhlIGhhc2ggaW5kZXgg dHVwbGUncyBmaXJzdCBjb2x1bW4gZGF0dW0gKGkuZS4gaGFzaCBjb2RlKQorICAqLworIERhdHVt IF9oYXNoX2dldF9kYXR1bShJbmRleFR1cGxlIGl0dXApCisgeworICAgICByZXR1cm4gZmV0Y2hf YXR0KCAoY2hhciAqKSAoaXR1cCkgKyBJbmRleEluZm9GaW5kRGF0YU9mZnNldCgoaXR1cCktPnRf aW5mbykgLAorICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAKKyAgICAgICAgICAgICAgICAg ICAgICAgNCk7CisgCisgfQorIC8qCisgICogX2hhc2hfZm9ybV90dXBsZSAtIGZvcm0gYSB0dXBs ZSB3aXRoIGhhc2ggY29kZSBvbmx5IAorICAqLworIEluZGV4VHVwbGUgX2hhc2hfZm9ybV90dXBs ZShSZWxhdGlvbiByZWwsIERhdHVtKiB2YWx1ZXMsIGJvb2wqIGlzbnVsbCkKKyB7CisgICAgIFR1 cGxlRGVzYyAgICAgICBoYXNoZGVzYzsKKyAgICAgSW5kZXhUdXBsZSAgICAgIGl0dXA7CisgICAg IHVpbnQzMiAgICAgICAgICBoYXNoa2V5OworIAorICAgICBoYXNoZGVzYyA9IF9nZXRfaGFzaF9k ZXNjKCk7CisgICAgIGhhc2hrZXkgPSBfaGFzaF9kYXR1bTJoYXNoa2V5KHJlbCwgdmFsdWVzWzBd KTsKKyAgICAgdmFsdWVzWzBdID0gVUludDMyR2V0RGF0dW0oaGFzaGtleSk7CisgICAgIGl0dXAg PSBpbmRleF9mb3JtX3R1cGxlKGhhc2hkZXNjLCB2YWx1ZXMsIGlzbnVsbCk7CisgICAgIHJldHVy biBpdHVwOworIH0KKyAKKyAvKgorICAqIF9oYXNoX2JpbnNlYXJjaCAtIFJldHVybiB0aGUgb2Zm c2V0IG51bWJlciBpbiB0aGUgcGFnZSB3aGVyZSB0aGUgc3BlY2lmaWVkIGhhc2ggdmFsdWUKKyAg KiAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgbG9jYXRlZC4gCisgICoKKyAgKiBUaGUgcmV0 dXJuIHZhbHVlIG1pZ2h0IGV4Y2VlZCB0aGUgcGFnZSdzIG1heCBvZmZzZXQgCisgICogaWYgdGhl IGhhc2ggdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGFueSBoYXNoIGluIHRoZSBwYWdlLgorICAqLwor IE9mZnNldE51bWJlcgorIF9oYXNoX2JpbnNlYXJjaChQYWdlIHBhZ2UsIHVpbnQzMiBoYXNoX3Zh bHVlKQorIHsKKyAJT2Zmc2V0TnVtYmVyCXVwcGVyOworIAlPZmZzZXROdW1iZXIJbG93ZXI7Cisg CisgCXVwcGVyID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKSArIDE7CisgCWxvd2VyID0g Rmlyc3RPZmZzZXROdW1iZXI7CisgCisgCXdoaWxlICh1cHBlciA+IGxvd2VyKQorIAl7CisgCQlJ bmRleFR1cGxlICAgICAgcG9zOworIAkJT2Zmc2V0TnVtYmVyICAgIG9mZjsKKyAgICAgICAgIHVp bnQzMiAgICAgICAgICBoYXNoa2V5OworICAgICAgICAgRGF0dW0gICAgICAgICAgIGRhdHVtOwor ICAgICAgICAgYm9vbCAgICAgICAgICAgIGlzTnVsbDsKKyAKKyAJCW9mZiA9ICh1cHBlciArIGxv d2VyKSAvIDI7CisgCQlBc3NlcnQoT2Zmc2V0TnVtYmVySXNWYWxpZChvZmYpKTsKKyAKKyAJCXBv cyA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShwYWdlLCBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9m ZikpOworICAgICAgICAgZGF0dW0gPSBfaGFzaF9nZXRfZGF0dW0ocG9zKTsKKyAgICAgICAgIGhh c2hrZXkgPSBEYXR1bUdldFVJbnQzMihkYXR1bSk7CisgCQlpZiAoaGFzaGtleSA8IGhhc2hfdmFs dWUpCisgCQkJbG93ZXIgPSBvZmYgKyAxOworIAkJZWxzZQorIAkJCXVwcGVyID0gb2ZmOworIAl9 CisgCisgCXJldHVybiB1cHBlcjsKKyB9CioqKiBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0LmMKLS0tIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwoqKioqKioq KioqKioqKioKKioqIDQ1Niw0NjUgKioqKiBzdGF0aWMgaW50IGNvbXBhcmV0dXBfaW5kZXhfYnRy ZWUoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCi0tLSA0NTYsNDY4IC0t LS0KICBzdGF0aWMgaW50IGNvbXBhcmV0dXBfaW5kZXhfaGFzaChjb25zdCBTb3J0VHVwbGUgKmEs IGNvbnN0IFNvcnRUdXBsZSAqYiwKICAJCQkJIFR1cGxlc29ydHN0YXRlICpzdGF0ZSk7CiAgc3Rh dGljIHZvaWQgY29weXR1cF9pbmRleChUdXBsZXNvcnRzdGF0ZSAqc3RhdGUsIFNvcnRUdXBsZSAq c3R1cCwgdm9pZCAqdHVwKTsKKyBzdGF0aWMgdm9pZCBjb3B5dHVwX2luZGV4X2hhc2goVHVwbGVz b3J0c3RhdGUgKnN0YXRlLCBTb3J0VHVwbGUgKnN0dXAsIHZvaWQgKnR1cCk7CiAgc3RhdGljIHZv aWQgd3JpdGV0dXBfaW5kZXgoVHVwbGVzb3J0c3RhdGUgKnN0YXRlLCBpbnQgdGFwZW51bSwKICAJ CQkgICBTb3J0VHVwbGUgKnN0dXApOwogIHN0YXRpYyB2b2lkIHJlYWR0dXBfaW5kZXgoVHVwbGVz b3J0c3RhdGUgKnN0YXRlLCBTb3J0VHVwbGUgKnN0dXAsCiAgCQkJICBpbnQgdGFwZW51bSwgdW5z aWduZWQgaW50IGxlbik7Cisgc3RhdGljIHZvaWQgcmVhZHR1cF9pbmRleF9oYXNoKFR1cGxlc29y dHN0YXRlICpzdGF0ZSwgU29ydFR1cGxlICpzdHVwLAorIAkJCSAgaW50IHRhcGVudW0sIHVuc2ln bmVkIGludCBsZW4pOwogIHN0YXRpYyB2b2lkIHJldmVyc2VkaXJlY3Rpb25faW5kZXhfYnRyZWUo VHVwbGVzb3J0c3RhdGUgKnN0YXRlKTsKICBzdGF0aWMgdm9pZCByZXZlcnNlZGlyZWN0aW9uX2lu ZGV4X2hhc2goVHVwbGVzb3J0c3RhdGUgKnN0YXRlKTsKICBzdGF0aWMgaW50IGNvbXBhcmV0dXBf ZGF0dW0oY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCioqKioqKioqKioq KioqKgoqKiogNjgyLDY5MCAqKioqIHR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9u IGluZGV4UmVsLAogIAlzdGF0ZS0+bktleXMgPSAxOwkJCS8qIE9ubHkgb25lIHNvcnQgY29sdW1u LCB0aGUgaGFzaCBjb2RlICovCiAgCiAgCXN0YXRlLT5jb21wYXJldHVwID0gY29tcGFyZXR1cF9p bmRleF9oYXNoOwohIAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0dXBfaW5kZXg7CiAgCXN0YXRlLT53 cml0ZXR1cCA9IHdyaXRldHVwX2luZGV4OwohIAlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfaW5k ZXg7CiAgCXN0YXRlLT5yZXZlcnNlZGlyZWN0aW9uID0gcmV2ZXJzZWRpcmVjdGlvbl9pbmRleF9o YXNoOwogIAogIAlzdGF0ZS0+aW5kZXhSZWwgPSBpbmRleFJlbDsKLS0tIDY4NSw2OTMgLS0tLQog IAlzdGF0ZS0+bktleXMgPSAxOwkJCS8qIE9ubHkgb25lIHNvcnQgY29sdW1uLCB0aGUgaGFzaCBj b2RlICovCiAgCiAgCXN0YXRlLT5jb21wYXJldHVwID0gY29tcGFyZXR1cF9pbmRleF9oYXNoOwoh IAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0dXBfaW5kZXhfaGFzaDsKICAJc3RhdGUtPndyaXRldHVw ID0gd3JpdGV0dXBfaW5kZXg7CiEgCXN0YXRlLT5yZWFkdHVwID0gcmVhZHR1cF9pbmRleF9oYXNo OwogIAlzdGF0ZS0+cmV2ZXJzZWRpcmVjdGlvbiA9IHJldmVyc2VkaXJlY3Rpb25faW5kZXhfaGFz aDsKICAKICAJc3RhdGUtPmluZGV4UmVsID0gaW5kZXhSZWw7CioqKioqKioqKioqKioqKgoqKiog MjgyMiwyODMwICoqKiogY29tcGFyZXR1cF9pbmRleF9oYXNoKGNvbnN0IFNvcnRUdXBsZSAqYSwg Y29uc3QgU29ydFR1cGxlICpiLAogIAkJCQkJICBUdXBsZXNvcnRzdGF0ZSAqc3RhdGUpCiAgewog IAkvKgohIAkgKiBJdCdzIHNsaWdodGx5IGFubm95aW5nIHRvIHJlZG8gdGhlIGhhc2ggZnVuY3Rp b24gZWFjaCB0aW1lLCBhbHRob3VnaAohIAkgKiBtb3N0IGhhc2ggZnVuY3Rpb25zIG91Z2h0IHRv IGJlIGNoZWFwLiAgSXMgaXQgd29ydGggaGF2aW5nIGEgdmFyaWFudAohIAkgKiB0dXBsZSBzdG9y YWdlIGZvcm1hdCBzbyB3ZSBjYW4gc3RvcmUgdGhlIGhhc2ggY29kZT8KICAJICovCiAgCXVpbnQz MgkJaGFzaDE7CiAgCXVpbnQzMgkJaGFzaDI7Ci0tLSAyODI1LDI4MzEgLS0tLQogIAkJCQkJICBU dXBsZXNvcnRzdGF0ZSAqc3RhdGUpCiAgewogIAkvKgohICAgICAgKiB3ZSBuZWVkbid0IHJlZG8g aGFzaCBmdW5jdGlvbiBlYWNoIHRpbWUgc2luY2Ugd2UndmUgc3RvcmVkIGl0LgogIAkgKi8KICAJ dWludDMyCQloYXNoMTsKICAJdWludDMyCQloYXNoMjsKKioqKioqKioqKioqKioqCioqKiAyODM2 LDI4NDUgKioqKiBjb21wYXJldHVwX2luZGV4X2hhc2goY29uc3QgU29ydFR1cGxlICphLCBjb25z dCBTb3J0VHVwbGUgKmIsCiAgCiAgCS8qIENvbXB1dGUgaGFzaCBjb2RlcyBhbmQgbWFzayBvZmYg Yml0cyB3ZSBkb24ndCB3YW50IHRvIHNvcnQgYnkgKi8KICAJQXNzZXJ0KCFhLT5pc251bGwxKTsK ISAJaGFzaDEgPSBEYXR1bUdldFVJbnQzMihGdW5jdGlvbkNhbGwxKHN0YXRlLT5oYXNoX3Byb2Ms IGEtPmRhdHVtMSkpCiAgCQkmIHN0YXRlLT5oYXNoX21hc2s7CiAgCUFzc2VydCghYi0+aXNudWxs MSk7CiEgCWhhc2gyID0gRGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxsMShzdGF0ZS0+aGFzaF9w cm9jLCBiLT5kYXR1bTEpKQogIAkJJiBzdGF0ZS0+aGFzaF9tYXNrOwogIAogIAlpZiAoaGFzaDEg PiBoYXNoMikKLS0tIDI4MzcsMjg0NiAtLS0tCiAgCiAgCS8qIENvbXB1dGUgaGFzaCBjb2RlcyBh bmQgbWFzayBvZmYgYml0cyB3ZSBkb24ndCB3YW50IHRvIHNvcnQgYnkgKi8KICAJQXNzZXJ0KCFh LT5pc251bGwxKTsKISAJaGFzaDEgPSBEYXR1bUdldFVJbnQzMihhLT5kYXR1bTEpCiAgCQkmIHN0 YXRlLT5oYXNoX21hc2s7CiAgCUFzc2VydCghYi0+aXNudWxsMSk7CiEgCWhhc2gyID0gRGF0dW1H ZXRVSW50MzIoYi0+ZGF0dW0xKQogIAkJJiBzdGF0ZS0+aGFzaF9tYXNrOwogIAogIAlpZiAoaGFz aDEgPiBoYXNoMikKKioqKioqKioqKioqKioqCioqKiAyODk0LDI4OTkgKioqKiBjb3B5dHVwX2lu ZGV4KFR1cGxlc29ydHN0YXRlICpzdGF0ZSwgU29ydFR1cGxlICpzdHVwLCB2b2lkICp0dXApCi0t LSAyODk1LDI5MTYgLS0tLQogIH0KICAKICBzdGF0aWMgdm9pZAorIGNvcHl0dXBfaW5kZXhfaGFz aChUdXBsZXNvcnRzdGF0ZSAqc3RhdGUsIFNvcnRUdXBsZSAqc3R1cCwgdm9pZCAqdHVwKQorIHsK KyAJSW5kZXhUdXBsZQl0dXBsZSA9IChJbmRleFR1cGxlKSB0dXA7CisgCXVuc2lnbmVkIGludCB0 dXBsZW4gPSBJbmRleFR1cGxlU2l6ZSh0dXBsZSk7CisgCUluZGV4VHVwbGUJbmV3dHVwbGU7Cisg CisgCS8qIGNvcHkgdGhlIHR1cGxlIGludG8gc29ydCBzdG9yYWdlICovCisgCW5ld3R1cGxlID0g KEluZGV4VHVwbGUpIHBhbGxvYyh0dXBsZW4pOworIAltZW1jcHkobmV3dHVwbGUsIHR1cGxlLCB0 dXBsZW4pOworIAlVU0VNRU0oc3RhdGUsIEdldE1lbW9yeUNodW5rU3BhY2UobmV3dHVwbGUpKTsK KyAJc3R1cC0+dHVwbGUgPSAodm9pZCAqKSBuZXd0dXBsZTsKKyAJLyogc2V0IHVwIGZpcnN0LWNv bHVtbiBrZXkgdmFsdWUoaS5lLiBoYXNoIGNvZGUpICovCisgCXN0dXAtPmRhdHVtMSA9IF9oYXNo X2dldF9kYXR1bShuZXd0dXBsZSk7CisgICAgIHN0dXAtPmlzbnVsbDEgPSBmYWxzZTsKKyB9Cisg c3RhdGljIHZvaWQKICB3cml0ZXR1cF9pbmRleChUdXBsZXNvcnRzdGF0ZSAqc3RhdGUsIGludCB0 YXBlbnVtLCBTb3J0VHVwbGUgKnN0dXApCiAgewogIAlJbmRleFR1cGxlCXR1cGxlID0gKEluZGV4 VHVwbGUpIHN0dXAtPnR1cGxlOwoqKioqKioqKioqKioqKioKKioqIDI5MzYsMjk0MSAqKioqIHJl YWR0dXBfaW5kZXgoVHVwbGVzb3J0c3RhdGUgKnN0YXRlLCBTb3J0VHVwbGUgKnN0dXAsCi0tLSAy OTUzLDI5NzkgLS0tLQogIH0KICAKICBzdGF0aWMgdm9pZAorIHJlYWR0dXBfaW5kZXhfaGFzaChU dXBsZXNvcnRzdGF0ZSAqc3RhdGUsIFNvcnRUdXBsZSAqc3R1cCwKKyAJCQkgIGludCB0YXBlbnVt LCB1bnNpZ25lZCBpbnQgbGVuKQorIHsKKyAJdW5zaWduZWQgaW50IHR1cGxlbiA9IGxlbiAtIHNp emVvZih1bnNpZ25lZCBpbnQpOworIAlJbmRleFR1cGxlCXR1cGxlID0gKEluZGV4VHVwbGUpIHBh bGxvYyh0dXBsZW4pOworIAorIAlVU0VNRU0oc3RhdGUsIEdldE1lbW9yeUNodW5rU3BhY2UodHVw bGUpKTsKKyAJaWYgKExvZ2ljYWxUYXBlUmVhZChzdGF0ZS0+dGFwZXNldCwgdGFwZW51bSwgKHZv aWQgKikgdHVwbGUsCisgCQkJCQkJdHVwbGVuKSAhPSB0dXBsZW4pCisgCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBlbmQgb2YgZGF0YSIpOworIAlpZiAoc3RhdGUtPnJhbmRvbUFjY2VzcykJLyog bmVlZCB0cmFpbGluZyBsZW5ndGggd29yZD8gKi8KKyAJCWlmIChMb2dpY2FsVGFwZVJlYWQoc3Rh dGUtPnRhcGVzZXQsIHRhcGVudW0sICh2b2lkICopICZ0dXBsZW4sCisgCQkJCQkJCXNpemVvZih0 dXBsZW4pKSAhPSBzaXplb2YodHVwbGVuKSkKKyAJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBl bmQgb2YgZGF0YSIpOworIAlzdHVwLT50dXBsZSA9ICh2b2lkICopIHR1cGxlOworIAkvKiBzZXQg dXAgZmlyc3QtY29sdW1uIGtleSB2YWx1ZShpLmUuIGhhc2ggY29kZSkgKi8KKyAgICAgc3R1cC0+ ZGF0dW0xID0gX2hhc2hfZ2V0X2RhdHVtKHR1cGxlKTsKKyAgICAgc3R1cC0+aXNudWxsMSA9IGZh bHNlOworIH0KKyAKKyBzdGF0aWMgdm9pZAogIHJldmVyc2VkaXJlY3Rpb25faW5kZXhfYnRyZWUo VHVwbGVzb3J0c3RhdGUgKnN0YXRlKQogIHsKICAJU2NhbktleQkJc2NhbktleSA9IHN0YXRlLT5p bmRleFNjYW5LZXk7CioqKiBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoLmgKLS0tIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hhc2guaAoqKioqKioqKioqKioqKioKKioqIDEwMCwxMDUgKioqKiB0eXBl ZGVmIHN0cnVjdCBIYXNoU2Nhbk9wYXF1ZURhdGEKLS0tIDEwMCwxMDcgLS0tLQogIAkvKiBDdXJy ZW50IGFuZCBtYXJrZWQgcG9zaXRpb24gb2YgdGhlIHNjYW4gKi8KICAJSXRlbVBvaW50ZXJEYXRh IGhhc2hzb19jdXJwb3M7CiAgCUl0ZW1Qb2ludGVyRGF0YSBoYXNoc29fbXJrcG9zOworIAkvKiBI YXNoIHZhbHVlIG9mIHRoZSBzY2FuIGtleSAqLworIAl1aW50MzIgICAgICBoYXNoc29fc2tfaGFz aDsKICB9IEhhc2hTY2FuT3BhcXVlRGF0YTsKICAKICB0eXBlZGVmIEhhc2hTY2FuT3BhcXVlRGF0 YSAqSGFzaFNjYW5PcGFxdWU7CioqKioqKioqKioqKioqKgoqKiogMjI3LDIzMyAqKioqIHR5cGVk ZWYgSGFzaE1ldGFQYWdlRGF0YSAqSGFzaE1ldGFQYWdlOwogICAqLwogICNkZWZpbmUgSEFTSFBS T0MJCTEKICAKISAKICAvKiBwdWJsaWMgcm91dGluZXMgKi8KICAKICBleHRlcm4gRGF0dW0gaGFz aGJ1aWxkKFBHX0ZVTkNUSU9OX0FSR1MpOwotLS0gMjI5LDIzOSAtLS0tCiAgICovCiAgI2RlZmlu ZSBIQVNIUFJPQwkJMQogIAohIC8qCiEgICogaGFyZC1jb2RlZCBoYXNoIGRlc2MKISAgKi8KISAj ZGVmaW5lIFNjaGVtYV9IYXNoIFwKISB7IDAsIHsiaGFzaGNvZGUifSwJCTIzLCAtMSwgNCwgMSwg MCwgLTEsIC0xLCB0cnVlLCAncCcsICdpJywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgMCB9 CiAgLyogcHVibGljIHJvdXRpbmVzICovCiAgCiAgZXh0ZXJuIERhdHVtIGhhc2hidWlsZChQR19G VU5DVElPTl9BUkdTKTsKKioqKioqKioqKioqKioqCioqKiAzMzAsMzM1ICoqKiogZXh0ZXJuIEJ1 Y2tldCBfaGFzaF9oYXNoa2V5MmJ1Y2tldCh1aW50MzIgaGFzaGtleSwgdWludDMyIG1heGJ1Y2tl dCwKLS0tIDMzNiwzNDUgLS0tLQogIAkJCQkJIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21h c2spOwogIGV4dGVybiB1aW50MzIgX2hhc2hfbG9nMih1aW50MzIgbnVtKTsKICBleHRlcm4gdm9p ZCBfaGFzaF9jaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBpbnQgZmxhZ3MpOwor IGV4dGVybiBUdXBsZURlc2MgX2dldF9oYXNoX2Rlc2MoKTsKKyBleHRlcm4gRGF0dW0gX2hhc2hf Z2V0X2RhdHVtKEluZGV4VHVwbGUgaXR1cCk7CisgZXh0ZXJuIEluZGV4VHVwbGUgX2hhc2hfZm9y bV90dXBsZShSZWxhdGlvbiByZWwsIERhdHVtKiB2YWx1ZXMsIGJvb2wqIGlzbnVsbCk7CisgT2Zm c2V0TnVtYmVyIF9oYXNoX2JpbnNlYXJjaChQYWdlIHBhZ2UsIHVpbnQzMiBoYXNoX3ZhbHVlKTsK ICAKICAvKiBoYXNoLmMgKi8KICBleHRlcm4gdm9pZCBoYXNoX3JlZG8oWExvZ1JlY1B0ciBsc24s IFhMb2dSZWNvcmQgKnJlY29yZCk7Cg== ------=_Part_38647_21987634.1219023966172-- From mx.cogito@gmail.com Tue Aug 19 09:28:45 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 094FF64FD06 for ; Tue, 19 Aug 2008 06:28:45 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 79819-02 for ; Tue, 19 Aug 2008 06:28:38 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.184]) by postgresql.org (Postfix) with ESMTP id 98E9E64FCE6 for ; Tue, 19 Aug 2008 06:28:41 -0300 (ADT) Received: by ti-out-0910.google.com with SMTP id y8so1493092tia.5 for ; Tue, 19 Aug 2008 02:28:39 -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:to :subject:in-reply-to:mime-version:content-type:references; bh=turM55OHO6f1S4zlcqGHzbUoLy9xUuXCja4RshWHxds=; b=l/oM8KKWvRm6OU01P/E7+I703ArmFuavdEy9D76RkbZ0iGtO8GslJzGdNOH1nfz55p AiHdix0AgsHvsoZhjKOpDAp0QCJBck637oR95oJmTMr6LpkhMTXBemR0jgdzzRgRwPll 5AJB4yXsviv9levpM36oFlPyhzu0kURWIRNqA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:references; b=G+E5ZdxZhEtshJvBL901yXWcioT3OH2xMtUuVaC8Tj/6+kiRnJZzoe/NbpHbd3b4D1 cG7gPjKK0Rs7Rgsozbzdw9lb9fbCT5ORo5RLBYCkyHwnWJFv5zTlwgFNrIt6j88siu25 PUHJdjjNkoQoe5JCuklpYUL6iQu2bg0Sn9kBw= Received: by 10.110.68.10 with SMTP id q10mr6914928tia.37.1219138118840; Tue, 19 Aug 2008 02:28:38 -0700 (PDT) Received: by 10.110.95.17 with HTTP; Tue, 19 Aug 2008 02:28:38 -0700 (PDT) Message-ID: Date: Tue, 19 Aug 2008 17:28:38 +0800 From: "Xiao Meng" To: pgsql-patches@postgresql.org Subject: Re: hash index improving v3 In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_83961_9475606.1219138118824" References: X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.001 tagged_above=0 required=5 tests=HTML_MESSAGE=0.001 X-Spam-Level: X-Archive-Number: 200808/18 X-Sequence-Number: 6994 ------=_Part_83961_9475606.1219138118824 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline With the help of David Fetter, you can get the copy by git clone http://git.postgresql.org/git/~davidfetter/hash/.git It's in the branch gsoc-hash. Thank you, David. -- Best Regards, Xiao Meng DKERC, Harbin Institute of Technology, China Gtalk: mx.cogito@gmail.com MSN: cnEnder@live.com http://xiaomeng.yo2.cn ------=_Part_83961_9475606.1219138118824 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline
With the help of David Fetter, you can get the copy by
git clone http://git.postgresql.org/git/~davidfetter/hash/.git
It's in the branch gsoc-hash.
Thank you, David.

--
Best Regards,
Xiao Meng

DKERC, Harbin Institute of Technology, China
Gtalk: mx.cogito@gmail.com
MSN: cnEnder@live.com
http://xiaomeng.yo2.cn
------=_Part_83961_9475606.1219138118824-- From simon@2ndQuadrant.com Thu Sep 4 02:06:41 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 850AA64FD0D for ; Wed, 3 Sep 2008 23:06:41 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 15539-09 for ; Wed, 3 Sep 2008 23:06:38 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail128092.authsmtp.net (outmail128092.authsmtp.net [62.13.128.92]) by postgresql.org (Postfix) with ESMTP id BBFC864FCF3 for ; Wed, 3 Sep 2008 23:06:38 -0300 (ADT) Received: from mail-c189.authsmtp.com (mail-c189.authsmtp.com [62.13.128.71]) by punt5.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8426X1U057979; Thu, 4 Sep 2008 03:06:33 +0100 (BST) Received: from [192.168.0.2] (85-211-229-97.dyn.gotadsl.co.uk [85.211.229.97]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8426WSl026052; Thu, 4 Sep 2008 03:06:32 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Xiao Meng Cc: pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: References: Content-Type: text/plain Date: Thu, 04 Sep 2008 03:06:42 +0100 Message-Id: <1220494002.4371.813.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 188b888e-7a26-11dd-bc7a-001f29070be2 X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksadRtFaAFbflxB HGQLW1xEUF97WWV/ aAkfZQBDYEtPQQdo WVZARU1QEQdtHhxP WxYaUB8VFFlGenhw YEQsX3VeXgp7fU4v SkZcQHABNGVmdWEe BBRFJVBTIR5Kfh4T aFl/U3NfNGdJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE0g X-Authentic-SMTP: 61633235383639.kestrel.dmpriest.net.uk:1186/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/35 X-Sequence-Number: 7050 On Mon, 2008-08-18 at 09:46 +0800, Xiao Meng wrote: > There's minor change against the previous > one( http://archives.postgresql.org/pgsql-hackers/2008-07/msg01183.php ). > * merge branch master(Aug 16) into the patch > * clean code and make some comment > Performance result is here > http://wiki.postgresql.org/wiki/Gsoc08-hashindex > > It seems hash index is a little better on index creation and > selection. > But maybe it's in the range of noise, I'm not sure. > I'd like to try it with a bigger dataset (e.g. table with 10GB) but > there is not enough space in my computer. > Anyone interest can make a test on a bigger data set. You don't give the text of the query used to do these performance tests, so I can't validate your test results. Right now it seems strange that the index is larger than a btree, yet the performance tests show that 3 times as much I/O was used accessing the btree. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From jonah.harris@gmail.com Thu Sep 4 04:10:23 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 9D2AD64FCEB for ; Thu, 4 Sep 2008 01:10:23 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 43342-03 for ; Thu, 4 Sep 2008 01:10:17 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.171]) by postgresql.org (Postfix) with ESMTP id A766164FCD8 for ; Thu, 4 Sep 2008 01:10:07 -0300 (ADT) Received: by wf-out-1314.google.com with SMTP id 25so3179173wfc.28 for ; Wed, 03 Sep 2008 21:10:06 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=hjx0kb8n7korj+BxP8hOHCyZZnO6CrTewQDVnPcTHHw=; b=TOjTJimhcGYB2W2GV+L7eM4btgbPA58x/7/HToimZF8yHnSixdGn7Kc/9tvB6flY2o ukl7/w6Nvjkk85frMLed+X9PnXKXqXIujk2sUWWzwpbKz6y48a869+a/lXdMXCWP4k3U abGdR4ZO5049dk57nbUAElGWVRZXgBOPSjDFo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=VOxZVclzRMqq+sjovPG2tDj/+AdK7mNXc7xVVGRjlmhh7a97zpv3tp8LIHzfwR2qbr Gk2EcnL9QdD7uNruzb3ih8VW8bP5iw2FGULZqT6T1iedCjXe7Ct8uKnfXFWRbB1xgkP2 HcqB9b5SbuOhEkQpLkhTaXFkQvZNasJ1Ate5Y= Received: by 10.142.218.4 with SMTP id q4mr3354258wfg.262.1220501406569; Wed, 03 Sep 2008 21:10:06 -0700 (PDT) Received: by 10.142.86.13 with HTTP; Wed, 3 Sep 2008 21:10:06 -0700 (PDT) Message-ID: <36e682920809032110h41462f7ct6a0ac5716c5a9d64@mail.gmail.com> Date: Thu, 4 Sep 2008 00:10:06 -0400 From: "Jonah H. Harris" To: "Simon Riggs" Subject: Re: hash index improving v3 Cc: "Xiao Meng" , pgsql-patches@postgresql.org In-Reply-To: <1220494002.4371.813.camel@ebony.2ndQuadrant> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <1220494002.4371.813.camel@ebony.2ndQuadrant> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/36 X-Sequence-Number: 7051 On Wed, Sep 3, 2008 at 10:06 PM, Simon Riggs wrote: >> It seems hash index is a little better on index creation and >> selection. >> But maybe it's in the range of noise, I'm not sure. >> I'd like to try it with a bigger dataset (e.g. table with 10GB) but >> there is not enough space in my computer. >> Anyone interest can make a test on a bigger data set. I tried it earlier on a 500M row table and found a few bugs. In particular, it doesn't seem like recheck is happening and the performance/sizing is a bit *interesting*. I'll post stats tomorrow when I'm in the office. -- Jonah H. Harris, Senior DBA myYearbook.com From tgl@sss.pgh.pa.us Thu Sep 4 05:35:29 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 52BBB64FCE8 for ; Thu, 4 Sep 2008 02:35:29 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 87147-02 for ; Thu, 4 Sep 2008 02:35:23 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 5B84864FCD8 for ; Thu, 4 Sep 2008 02:35:23 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m845ZGam014103; Thu, 4 Sep 2008 01:35:16 -0400 (EDT) To: Simon Riggs cc: Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <1220494002.4371.813.camel@ebony.2ndQuadrant> References: <1220494002.4371.813.camel@ebony.2ndQuadrant> Comments: In-reply-to Simon Riggs message dated "Thu, 04 Sep 2008 03:06:42 +0100" Date: Thu, 04 Sep 2008 01:35:16 -0400 Message-ID: <14102.1220506516@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/37 X-Sequence-Number: 7052 Simon Riggs writes: > Right now it seems strange that the index is larger than a btree, yet > the performance tests show that 3 times as much I/O was used accessing > the btree. Well, in an ideal world a hash index probe is O(1) while a btree probe is O(log N), so that result is exactly what hash proponents would hope for. Whether it's real or not is another question, but it could be. regards, tom lane From Zdenek.Kotala@Sun.COM Thu Sep 4 12:54:10 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 526A164FCD8 for ; Thu, 4 Sep 2008 09:54:10 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 54617-02 for ; Thu, 4 Sep 2008 09:54:07 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from gmp-eb-inf-2.sun.com (gmp-eb-inf-2.sun.com [192.18.6.24]) by postgresql.org (Postfix) with ESMTP id 3F20A64FCEB for ; Thu, 4 Sep 2008 09:54:06 -0300 (ADT) Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12]) by gmp-eb-inf-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m84Crs2O022488 for ; Thu, 4 Sep 2008 12:54:04 GMT Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K6O005018148C00@fe-emea-09.sun.com> (original mail from Zdenek.Kotala@Sun.COM) for pgsql-patches@postgresql.org; Thu, 04 Sep 2008 13:53:54 +0100 (BST) Received: from [129.157.18.76] by fe-emea-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K6O009T795QS5F0@fe-emea-09.sun.com>; Thu, 04 Sep 2008 13:53:50 +0100 (BST) Date: Thu, 04 Sep 2008 14:54:37 +0200 From: Zdenek Kotala Subject: Re: hash index improving v3 In-reply-to: To: Xiao Meng Cc: pgsql-patches@postgresql.org, "Jonah H. Harris" Message-id: <48BFDA8D.3080506@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=ISO-8859-2 Content-transfer-encoding: 7BIT References: User-Agent: Thunderbird 2.0.0.14 (X11/20080630) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200809/38 X-Sequence-Number: 7053 I performed code review and see my comments. pgsql/src/backend/access/hash/hashpage.c use sizeof() or something better the 4. pgsql/src/backend/access/hash/hashpage.c New empty line. pgsql/src/backend/access/hash/hashutil.c It would be better remove #define from hash.h and setup it there directly. pgsql/src/backend/access/hash/hashutil.c Why not return directly uint32? pgsql/src/backend/access/hash/hashutil.c Retype to correct return type. pgsql/src/backend/access/hash/hashutil.c Whats about null values? pgsql/src/backend/access/hash/hashutil.c I'm not sure if values modification is safe. Please, recheck. pgsql/src/backend/access/hash/hashutil.c Return value is not much clear. I prefer to return InvalidOffset when no record is found. However it seems that you use result also for PageAddItem to put item on correct ordered position. I think better explanation should help to understand how it works. pgsql/src/backend/access/hash/hashutil.c It could return FirstOffset number in case when nothing interesting is on the page. pgsql/src/include/access/hash.h Why not define new datatype for example HashKey instead of uint32? pgsql/src/include/access/hash.h It is not good place. See my other comment. -------------- You also forgot to bump hash index version in meta page. Zdenek From mx.cogito@gmail.com Thu Sep 4 13:03:54 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id BF07064FCD8 for ; Thu, 4 Sep 2008 10:03:54 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 56811-07 for ; Thu, 4 Sep 2008 10:03:49 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.189]) by postgresql.org (Postfix) with ESMTP id E680464FCEF for ; Thu, 4 Sep 2008 10:03:48 -0300 (ADT) Received: by ti-out-0910.google.com with SMTP id y8so2092138tia.5 for ; Thu, 04 Sep 2008 06:03:45 -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:to :subject:in-reply-to:mime-version:content-type:references; bh=/pIdNu6a7DmtsFTFOfkKRYrvwEDsn10qmp7epHlNvJM=; b=MjJxy80SY75AyCBaHNyEd/UJYq9eXCWtb5xe5r86yl/SspNaDfFvBCp+R1TrS9o56k h3E+cEkd0o2V49FA//vVeDiNKDwHkTtQG8QGjJk6xZrivQ5MHrYdcFmrRFSe04aEM5Jx FMGyHC9UFb5eeiQ9WtBnll2p1N+7YseS6MVbc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:references; b=qUkJwDrIvZYoTMq15y+jhjYDgD5XrNpcdJuXIUGnIl9AXC5gDo3L2p/GA7n80XBub4 WQ6KLwasIefOF0Tc1RgTq/qCKsHhYEFVKql1bClYqDiHBDMwaj3hHJNhvfN+DoNIT6Ku y5C9E5TdWp/zxQd/7AxjLY1SX/Fic0ti1Rik8= Received: by 10.110.31.5 with SMTP id e5mr13031557tie.1.1220533425343; Thu, 04 Sep 2008 06:03:45 -0700 (PDT) Received: by 10.110.8.14 with HTTP; Thu, 4 Sep 2008 06:03:45 -0700 (PDT) Message-ID: Date: Thu, 4 Sep 2008 21:03:45 +0800 From: "Xiao Meng" To: "Simon Riggs" , pgsql-hackers@postgresql.org Subject: Re: [PATCHES] hash index improving v3 In-Reply-To: <1220494002.4371.813.camel@ebony.2ndQuadrant> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_89024_24092264.1220533425341" References: <1220494002.4371.813.camel@ebony.2ndQuadrant> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.001 tagged_above=0 required=5 tests=HTML_MESSAGE=0.001 X-Spam-Level: X-Archive-Number: 200809/247 X-Sequence-Number: 123376 ------=_Part_89024_24092264.1220533425341 Content-Type: multipart/alternative; boundary="----=_Part_89025_24270467.1220533425341" ------=_Part_89025_24270467.1220533425341 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Thu, Sep 4, 2008 at 10:06 AM, Simon Riggs wrote: > You don't give the text of the query used to do these performance tests, > so I can't validate your test results. > The attachment is the code to generate the text. Just $g++ my-permu-code.cpp $./a.out > /tmp/words -- Best Regards, Xiao Meng DKERC, Harbin Institute of Technology, China Gtalk: mx.cogito@gmail.com MSN: cnEnder@live.com http://xiaomeng.yo2.cn ------=_Part_89025_24270467.1220533425341 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline
On Thu, Sep 4, 2008 at 10:06 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
You don't give the text of the query used to do these performance tests,
so I can't validate your test results.

The attachment is the code to generate the text.
Just
$g++ my-permu-code.cpp
$./a.out > /tmp/words

--
Best Regards,
Xiao Meng

DKERC, Harbin Institute of Technology, China
Gtalk: mx.cogito@gmail.com
MSN: cnEnder@live.com
http://xiaomeng.yo2.cn
------=_Part_89025_24270467.1220533425341-- ------=_Part_89024_24092264.1220533425341 Content-Type: text/x-c++src; name=my-permu-code.cpp Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkpe1dwl0 Content-Disposition: attachment; filename=my-permu-code.cpp Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAgLy8KLy8KLy8gRklMRSBOQU1FICAgICAgIDogIFg5MzdvdXQu Y3BwCi8vCi8vIERFU0NSSVBUSVZFIE5BTUU6ICBQcm92aWRlcyBYOTM3IE91dHB1dCBQbHVnLWlu IEFQSXMKLy8KLy8gQVVUSE9SICAgICAgICAgIDogIFNyaW5pdmFzYW4gTVMKLy8KLy8gTU9EVUxF IFRZUEUgICAgIDogIEMrKyBTb3VyY2UgRmlsZQovLwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAvLwoK CiNpbmNsdWRlPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbG9uZyBsb25nIHRvdENv dW50IDsKCi8vIHRoaXMgZnVuY3Rpb24gZmluZHMgdGhlIG90aGVyCi8vIHBlcm11dGF0aW9ucyBi eSByb3RhdGluZyB0aGUgc3RyaW5nCi8vIGluIGNpcmN1bGFyIG1hbm5lcgoKdm9pZCBjaXJjdWxh clByaW50KGNoYXIgKnN0cikgewoKICAgIGludCAgbGVuID0gc3RybGVuKHN0cik7CiAgICBjaGFy ICpteXN0ciA9IG5ldyBjaGFyIFtsZW4gKzFdOwogICAgaW50IGksajsKCiAgICBmb3IoaT0wOyBp IDxsZW47IGkrKyApIHsKICAgICAgICBmb3Ioaj0wO2o8bGVuOyBqKysgKQogICAgICAgICAgICBt eXN0cltqXSA9IHN0clsoaStqKSVsZW5dOwogICAgICAgIG15c3RyW2pdID0wOwoJdG90Q291bnQr KzsKICAgICAgICAvLyBjb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHN1cHJlc3MgdGhlIHN0cmlu ZyBvdXRwdXQKICAgICAgICBjb3V0IDw8IG15c3RyICA8PCBlbmRsOwoKICAgIH0KCiAgICBkZWxl dGUgW11teXN0cjsKICAgIHJldHVybiA7Cn0KCgp2b2lkIHBlcm11dGF0aW9uKGNoYXIgcHJlZml4 W10sY2hhciBzdWZmaXhbXSkKewogIGludCBsZW5ndGg9c3RybGVuKHN1ZmZpeCk7CiAgaW50IGxl biA9IHN0cmxlbihwcmVmaXgpIDsKICBpbnQgaT0wLCBqPTA7CiAgY2hhciAqbXlwcmVmaXggPSBu ZXcgY2hhciBbbGVuXTsKCiAgaWYobGVuICkgewogICAgc3RybmNweShteXByZWZpeCwgcHJlZml4 LCBsZW4gLSAxICk7CiAgICBteXByZWZpeFtsZW4tMV09IDA7CgogICAgZm9yKGk9MDsgaTwgbGVu Z3RoIDsgaSsrKSB7CgogIAljaGFyICpteXN1ZmZpeCA9IG5ldyBjaGFyIFtsZW5ndGgrMl07CiAg ICAgICAgbXlzdWZmaXhbMF0gPSBwcmVmaXhbbGVuLTFdOwoKICAgICAgICAvLyByb3RhdGUgdGhl IGN1cnJlbnQgYXBwZW5kIGFuZCBwcmVwYXJlIGFwcGVuZCBmb3IgbmV4dAogICAgICAgIGZvcihq PTA7IGo8IGxlbmd0aCA7IGorKyApIHsKICAgICAgICAgICAgbXlzdWZmaXhbaisxXSA9IHN1ZmZp eFsoaStqKSVsZW5ndGhdOwogICAgICAgIH0KCiAgICAgICAgbXlzdWZmaXggW2orMV09IDA7CiAg ICAgICAgcGVybXV0YXRpb24obXlwcmVmaXgsIG15c3VmZml4KTsKICAgICAgICBkZWxldGUgW11t eXN1ZmZpeDsKICAgIH0KICB9CiAgZWxzZSB7CiAgICAvLyBmb3VuZCBwZXJtdXRhdGlvbiwgbm93 IGZpbmQgb3RoZXIKICAgIC8vIHBlcm11dGF0aW9ucyBieSByb3RhdGluZyB0aGUgc3RyaW5nCiAg ICBjaXJjdWxhclByaW50KHN1ZmZpeCk7CiAgfQogIGRlbGV0ZSBbXW15cHJlZml4Owp9CgoKaW50 IG1haW4oKQp7CgogIGNoYXIgcHJlZml4W109IjEyMzQ1Njc4OWEiOyAvLyBmaXJzdCBOLTEgY2hh cmFjdGVycyBvZiB0aGUgc3RyaW5nIG9mIGxlbmd0aCBOCiAgY2hhciBzdWZmaXhbXT0iMCI7ICAg ICAvLyBsYXN0IGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nCiAgdGltZV90IHQxLCB0MjsKCgogIC8v IGZpbmQgcGVybXV0YXRpb24KICBwZXJtdXRhdGlvbihwcmVmaXgsIHN1ZmZpeCk7CgogIHJldHVy biAwOwp9Cgo= ------=_Part_89024_24092264.1220533425341-- From simon@2ndQuadrant.com Thu Sep 4 16:57:02 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 9D27564FD33 for ; Thu, 4 Sep 2008 13:57:02 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 15056-08 for ; Thu, 4 Sep 2008 13:56:58 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail136016.authsmtp.co.uk (outmail136016.authsmtp.co.uk [62.13.136.16]) by postgresql.org (Postfix) with ESMTP id 7B67F64FCEF for ; Thu, 4 Sep 2008 13:56:57 -0300 (ADT) Received: from mail-c187.authsmtp.com (mail-c187.authsmtp.com [62.13.128.33]) by punt3.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m84Gurqr027408; Thu, 4 Sep 2008 17:56:53 +0100 (BST) Received: from [192.168.0.2] (85-211-229-97.dyn.gotadsl.co.uk [85.211.229.97]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m84Guqqs031403; Thu, 4 Sep 2008 17:56:52 +0100 (BST) Subject: Re: [PATCHES] hash index improving v3 From: Simon Riggs To: Xiao Meng Cc: pgsql-hackers@postgresql.org In-Reply-To: References: <1220494002.4371.813.camel@ebony.2ndQuadrant> Content-Type: text/plain Date: Thu, 04 Sep 2008 17:57:04 +0100 Message-Id: <1220547424.4371.991.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 7922c6a1-7aa2-11dd-8155-001185d377ca X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksadBtFaAFbflxB HGQLW1xEUVp7XGV/ bggfZQBDYEtPQQdo WVZARU1QEQdtHhxP WxYaJVwzNkZGe390 ZUUsX3NSWwp9fER/ EUgFFHABNDZidWEe BBRFfwJRdR5Kfh5E YlUrV3QKMjRJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE0g X-Authentic-SMTP: 61633235383639.squirrel.dmpriest.net.uk:1186/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/265 X-Sequence-Number: 123394 On Thu, 2008-09-04 at 21:03 +0800, Xiao Meng wrote: > On Thu, Sep 4, 2008 at 10:06 AM, Simon Riggs > wrote: > You don't give the text of the query used to do these > performance tests, > > so I can't validate your test results. > > The attachment is the code to generate the text. > Just > $g++ my-permu-code.cpp > $./a.out > /tmp/words That generates the data, fine. What about the test query? You say you are running this command line pgbench -U postgres -n -f /tmp/query.sql dict Where is query.sql? It doesn't seem a big ask to be shown the SQL statement that is being executed, so we understand what is going on. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From tgl@sss.pgh.pa.us Thu Sep 4 20:06:32 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 7999F64FD33 for ; Thu, 4 Sep 2008 17:06:32 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 30698-10 for ; Thu, 4 Sep 2008 17:06:28 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 951F264FCEF for ; Thu, 4 Sep 2008 17:06:28 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m84K6OUN029387; Thu, 4 Sep 2008 16:06:24 -0400 (EDT) To: Zdenek Kotala cc: Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <48BFDA8D.3080506@sun.com> References: <48BFDA8D.3080506@sun.com> Comments: In-reply-to Zdenek Kotala message dated "Thu, 04 Sep 2008 14:54:37 +0200" Date: Thu, 04 Sep 2008 16:06:23 -0400 Message-ID: <29386.1220558783@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/39 X-Sequence-Number: 7054 Zdenek Kotala writes: > I performed code review and see my comments. Thanks for the comments. I've incorporated all of these into an updated patch that I'm preparing, except for > Why not define new datatype for example HashKey instead of uint32? This seems like a good idea, but I think we should do it as a separate, cosmetic-cleanup patch. It'll touch a lot of parts of access/hash/ that the current patch doesn't need to change, and thus complicate reviewing. regards, tom lane From tgl@sss.pgh.pa.us Thu Sep 4 20:28:47 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 3A1C064FCEF for ; Thu, 4 Sep 2008 17:28:47 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 35322-09 for ; Thu, 4 Sep 2008 17:28:40 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 63F7264FCEB for ; Thu, 4 Sep 2008 17:28:39 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m84KSY74029988; Thu, 4 Sep 2008 16:28:35 -0400 (EDT) To: Zdenek Kotala cc: Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <48BFDA8D.3080506@sun.com> References: <48BFDA8D.3080506@sun.com> Comments: In-reply-to Zdenek Kotala message dated "Thu, 04 Sep 2008 14:54:37 +0200" Date: Thu, 04 Sep 2008 16:28:34 -0400 Message-ID: <29987.1220560114@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/40 X-Sequence-Number: 7055 Zdenek Kotala writes: > pgsql/src/backend/access/hash/hashutil.c > > It would be better remove #define from hash.h and setup it there > directly. Actually, I don't like this aspect of the patch one bit: it means that the system catalogs are lying about what is stored in the index, which seems likely to break something somewhere, either now or down the road. I think the correct way to handle this is to make the pg_attribute entries (and hence the index's relation descriptor) accurately match what is stored in the index. For testing purposes I propose this crude hack in catalog/index.c's ConstructTupleDescriptor(): *** src/backend/catalog/index.c.orig Mon Aug 25 18:42:32 2008 --- src/backend/catalog/index.c Thu Sep 4 16:20:12 2008 *************** *** 133,138 **** --- 133,139 ---- Form_pg_attribute to = indexTupDesc->attrs[i]; HeapTuple tuple; Form_pg_type typeTup; + Form_pg_opclass opclassTup; Oid keyType; if (atnum != 0) *************** *** 240,246 **** if (!HeapTupleIsValid(tuple)) elog(ERROR, "cache lookup failed for opclass %u", classObjectId[i]); ! keyType = ((Form_pg_opclass) GETSTRUCT(tuple))->opckeytype; ReleaseSysCache(tuple); if (OidIsValid(keyType) && keyType != to->atttypid) --- 241,252 ---- if (!HeapTupleIsValid(tuple)) elog(ERROR, "cache lookup failed for opclass %u", classObjectId[i]); ! opclassTup = (Form_pg_opclass) GETSTRUCT(tuple); ! /* HACK: make hash always use int4 as storage (really it's uint32) */ ! if (opclassTup->opcmethod == HASH_AM_OID) ! keyType = INT4OID; ! else ! keyType = opclassTup->opckeytype; ReleaseSysCache(tuple); if (OidIsValid(keyType) && keyType != to->atttypid) Assuming the patch gets accepted, we should devise some cleaner way of letting index AMs adjust their indexes' reldescs; maybe declare a new entry point column in pg_am that lets the AM modify the tupledesc constructed by this function before it gets used to create the index. But that is irrelevant to performance testing, so I'm not going to do it right now. regards, tom lane From tgl@sss.pgh.pa.us Thu Sep 4 23:11:38 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 57C6464FF27 for ; Thu, 4 Sep 2008 20:11:38 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 05699-03 for ; Thu, 4 Sep 2008 20:11:33 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 5F9DA64FCEB for ; Thu, 4 Sep 2008 20:11:33 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m84NBSIv007628; Thu, 4 Sep 2008 19:11:28 -0400 (EDT) To: Zdenek Kotala cc: Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <29987.1220560114@sss.pgh.pa.us> References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> Comments: In-reply-to Tom Lane message dated "Thu, 04 Sep 2008 16:28:34 -0400" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <7368.1220569711.0@sss.pgh.pa.us> Date: Thu, 04 Sep 2008 19:11:28 -0400 Message-ID: <7627.1220569888@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/42 X-Sequence-Number: 7057 ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <7368.1220569711.1@sss.pgh.pa.us> Here is an updated patch incorporating Zdenek's review, my own observation that we should make the index tupledesc tell the truth, and some other fixes/improvements such as making backwards scans work as expected. The main thing lacking before this could be committed, from a code standpoint, is a cleaner solution to the problem of adjusting the index tupledesc (see the ugly hack in catalog/index.c). However, that complaint is irrelevant for functionality or performance testing, so I'm throwing this back out there in hopes someone will do some... I thought a little bit about how to extend this to store both hashcode and original index key, and realized that the desire to have a truthful index tupledesc makes that a *whole* lot harder. The planner, and really even the pg_index catalog representation, assume that the visible columns of an index are one-for-one with the index keys. We can slide through with the attached patch because this is still true --- effectively we're just using a "storage type" different from the indexed column's type for hash indexes, as already works for GIST and GIN. But having two visible columns would bollix up quite a lot of stuff. So I think if we actually want to do that, we'd need to revert to the concept of cheating on the tupledesc. Aside from the various uglinesses that I was able to remove from the original patch by not having that, I'm still quite concerned that we'd find something else wrong with doing that, further down the road. So my thinking right now is that we should just test this patch as-is. If it doesn't show really horrid performance when there are lots of hash key collisions, we should forget the store-both-things idea and just go with this. regards, tom lane ------- =_aaaaaaaaaa0 Content-Type: application/octet-stream Content-ID: <7368.1220569711.2@sss.pgh.pa.us> Content-Description: hash-v4.patch.gz Content-Transfer-Encoding: base64 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 ------- =_aaaaaaaaaa0-- From badalex@gmail.com Fri Sep 5 00:42:59 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 23A196501A7 for ; Thu, 4 Sep 2008 21:42:59 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 85893-10 for ; Thu, 4 Sep 2008 21:42:55 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.159]) by postgresql.org (Postfix) with ESMTP id 53D0C65015A for ; Thu, 4 Sep 2008 21:42:54 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so631987fgg.23 for ; Thu, 04 Sep 2008 17:42:53 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=dj8FJnwOO49+s3cYVKdXmhpfb8le6fLStQtztRaCFVQ=; b=FqCJSc2061kvRD41g6EtpHOJ4/sMuqyApwAO/S++v9LtLQvO2U7JbEu/slRwcj2Odh x96T2o+KuI7ZCMWTMbwGAmhK2q+x3dQQjx91lTkuK0UTSZ/fWndT9vGZAqn6tnIAV3ya JpaA028I9pePExxD2xiNXSUKSDHF7+4Jg2EKc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=XcCjZxUgW6ZoOmOCRkoAxG+vQPqLBEBwZ5DXMNE/5BHEf4ca1NSUriGLHKvL6S/RjY NFhHi6jyhT+VzQZ3alYFX4EKL3f18FbqszL3Jneg/3pxMGqSbl3BKH0Ys+D28ZxNDCHy FYBbVTIQyPpBOZ2dsKFPlEX9dadqu2HpvJPe4= Received: by 10.187.203.4 with SMTP id f4mr2507130faq.1.1220575373058; Thu, 04 Sep 2008 17:42:53 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Thu, 4 Sep 2008 17:42:53 -0700 (PDT) Message-ID: <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> Date: Thu, 4 Sep 2008 18:42:53 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <7627.1220569888@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/43 X-Sequence-Number: 7058 On Thu, Sep 4, 2008 at 5:11 PM, Tom Lane wrote: > So my thinking right now is that we should just test this patch as-is. > If it doesn't show really horrid performance when there are lots of > hash key collisions, we should forget the store-both-things idea and > just go with this. Ok let me know if this is to naive of an approach or not hitting the right cases you want tested. create table hash_a (same text, uniq text); insert into hash_a (same, uniq) select 'same', n from generate_series(0, 5000) as n; create table hash_b (uniq text); insert into hash_b (uniq) select n from generate_series(5000, 10000) as n; pgbench -c 1 -t 100 -n -f of the following hash_same.sql: set enable_seqscan to off; set enable_mergejoin to off; select 1 from hash_a as a inner join hash_a as aa on aa.same = a.same; hash_uniq.sql: set enable_seqscan to off; set enable_mergejoin to off; select 1 from hash_a as a inner join hash_b as b on b.uniq = a.uniq; From tgl@sss.pgh.pa.us Fri Sep 5 01:13:28 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 6D47E64FCEF for ; Thu, 4 Sep 2008 22:13:28 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 34781-08 for ; Thu, 4 Sep 2008 22:13:25 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 8770D64FCEB for ; Thu, 4 Sep 2008 22:13:25 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m851DJTU010997; Thu, 4 Sep 2008 21:13:19 -0400 (EDT) To: "Alex Hunsaker" cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> Comments: In-reply-to "Alex Hunsaker" message dated "Thu, 04 Sep 2008 18:42:53 -0600" Date: Thu, 04 Sep 2008 21:13:18 -0400 Message-ID: <10995.1220577198@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/44 X-Sequence-Number: 7059 "Alex Hunsaker" writes: > Ok let me know if this is to naive of an approach or not hitting the > right cases you want tested. You have the unique-versus-not dimension, but I'm also wondering about narrow vs wide index keys (say about 8 bytes vs 50-100 or so). In the former case we're not saving any index space by storing only the hash code, so these could be expected to have different performance behaviors. As for specifics of the suggested scripts: * might be better to do select count(*) not select 1, so that client communication is minimized * check that the queries actually use the indexes (not sure that the proposed switch settings ensure this, not to mention you didn't create the indexes) * make sure the pgbench transaction counts are large enough to ensure significant runtime * the specific table sizes suggested are surely not large enough regards, tom lane From tgl@sss.pgh.pa.us Fri Sep 5 01:46:02 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 4606064FCEF for ; Thu, 4 Sep 2008 22:46:02 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 45832-09 for ; Thu, 4 Sep 2008 22:45:58 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id A7FF164FCE0 for ; Thu, 4 Sep 2008 22:45:58 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m851jrLx011526; Thu, 4 Sep 2008 21:45:53 -0400 (EDT) To: "Alex Hunsaker" cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <10995.1220577198@sss.pgh.pa.us> References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> Comments: In-reply-to Tom Lane message dated "Thu, 04 Sep 2008 21:13:18 -0400" Date: Thu, 04 Sep 2008 21:45:53 -0400 Message-ID: <11525.1220579153@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/45 X-Sequence-Number: 7060 I wrote: > You have the unique-versus-not dimension, On second thought, actually not. What we want to look at is the penalty for false matches due to *distinct* key values that happen to have the same hash codes. Your test case for all-the-same is using all the same key values, which means it'll hit the heap a lot, but none of those will be wasted trips. So what we need for testing is a few different key values that hash to the same code. Not sure about an easy way to find such. regards, tom lane From badalex@gmail.com Fri Sep 5 01:51:20 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 946EE650189 for ; Thu, 4 Sep 2008 22:51:20 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 48253-08 for ; Thu, 4 Sep 2008 22:51:17 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.156]) by postgresql.org (Postfix) with ESMTP id 634EE650142 for ; Thu, 4 Sep 2008 22:51:16 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so646524fgg.23 for ; Thu, 04 Sep 2008 18:51:14 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=j0CcHk2Kh2iY/g5XTJ2pVWSQBFZ7ibmkxEnc51Tjt0Q=; b=QE4TZ/VUhGGevIkL88/4T1XWoxTGJfqptr96HBozPujXYRPe5EqJLbbIZ/kl97zLve mDZLL8J9ukd06wK11RKY/7eyu7Uo4dsnft3AJttY8sgUnm3RD/dD8Lrcs0cBNR7oZpr3 6dNTnPeuXBffK7Pnc3gS7lPbKp5kYVxy8lx4Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=F19ArVkK2mDGX+cT+EirONTvkhMCGiWXUICYs3wi/z9s7SqoNo60hkDWc8MReVfx4Y LuWOw5HBgqdTNow2pShfwKRkny+JtV3bda+5PxACmqjaMmIt5LdiCdbrhoRjqfq4x0OT LQ/vk8uNv6ws06lo8RD0fJY7rJau4x6ggW2zI= Received: by 10.187.230.4 with SMTP id h4mr2512675far.12.1220579474819; Thu, 04 Sep 2008 18:51:14 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Thu, 4 Sep 2008 18:51:14 -0700 (PDT) Message-ID: <34d269d40809041851r3330198ej6ccd0ae53e4260f9@mail.gmail.com> Date: Thu, 4 Sep 2008 19:51:14 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <10995.1220577198@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/46 X-Sequence-Number: 7061 On Thu, Sep 4, 2008 at 7:13 PM, Tom Lane wrote: > "Alex Hunsaker" writes: >> Ok let me know if this is to naive of an approach or not hitting the >> right cases you want tested. > > You have the unique-versus-not dimension, but I'm also wondering about > narrow vs wide index keys (say about 8 bytes vs 50-100 or so). In the > former case we're not saving any index space by storing only the hash > code, so these could be expected to have different performance > behaviors. Arg yes... I just read the last part of your mail in this thread. I think it was the one on -hackers that talked about narrow vs wide... so I figured I would just try to do what the thread where you posted the patch talked about namley the below: >So my thinking right now is that we should just test this patch as-is. >If it doesn't show really horrid performance when there are lots of >hash key collisions, we should forget the store-both-things idea and >just go with this. So I thought, lets try to generate lots of hash collisions... obviosly though using the same key wont do that... Not sure what I was thinking > As for specifics of the suggested scripts: > > * might be better to do select count(*) not select 1, so that client > communication is minimized Yar. > * check that the queries actually use the indexes (not sure that the > proposed switch settings ensure this, not to mention you didn't create > the indexes) Well I was assuming I could just test the speed of a hash join... > * make sure the pgbench transaction counts are large enough to ensure > significant runtime > * the specific table sizes suggested are surely not large enough Ok From badalex@gmail.com Fri Sep 5 01:54:56 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 5930565013E for ; Thu, 4 Sep 2008 22:54:56 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 51510-07 for ; Thu, 4 Sep 2008 22:54:53 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.152]) by postgresql.org (Postfix) with ESMTP id 4DDE3650138 for ; Thu, 4 Sep 2008 22:54:53 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so647267fgg.23 for ; Thu, 04 Sep 2008 18:54:51 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=m+9W61SFAeVHQpDi62fhDcsXbHqDJ8YhDI/BA+Nk4UI=; b=LKQdqATrqYtwmROUleUxPlUkWJcdHiyplJM70n/959Kg8/UnQeKQxBYxSN6Z+ufdKa veauZ9wAa4+VYuWFIje9BCwLKwmuVfpTY5b46iD4OL7XaUF+94SsFFlyu8EIA0YEuIhf TdTcRA4gVlFSpwYa61dyNLefQbCnScQSx9NrY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=vDKDCMhgKXTjtnMwQsM4KaYjqhexO/EJkuAu9O/PqZqDrP+OvMlbY4Fhv46YBky+9J WIKjaOIpI/Uhn0bIA+1wiHpiHWDWauLx11GkxTB8OtmRI3I0eZ6k68y98K0kMr6TDr17 NiLRKeXP+DCpUmtfPLP7zRi/0h5Cn2rHDXEqY= Received: by 10.187.219.6 with SMTP id w6mr2514909faq.29.1220579691107; Thu, 04 Sep 2008 18:54:51 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Thu, 4 Sep 2008 18:54:51 -0700 (PDT) Message-ID: <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> Date: Thu, 4 Sep 2008 19:54:51 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <11525.1220579153@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/47 X-Sequence-Number: 7062 On Thu, Sep 4, 2008 at 7:45 PM, Tom Lane wrote: > So what we need for testing is a few different key values that hash to > the same code. Not sure about an easy way to find such. Hrm, well I have not really looked at the hash algorithm but I assume we could just reduce the number of buckets? From tgl@sss.pgh.pa.us Fri Sep 5 02:17:15 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id E86EA64FEDB for ; Thu, 4 Sep 2008 23:17:15 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 66330-06 for ; Thu, 4 Sep 2008 23:17:12 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 0251A64FCF7 for ; Thu, 4 Sep 2008 23:17:12 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m852H8Hp011963; Thu, 4 Sep 2008 22:17:08 -0400 (EDT) To: "Alex Hunsaker" cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> Comments: In-reply-to "Alex Hunsaker" message dated "Thu, 04 Sep 2008 19:54:51 -0600" Date: Thu, 04 Sep 2008 22:17:07 -0400 Message-ID: <11962.1220581027@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/49 X-Sequence-Number: 7064 "Alex Hunsaker" writes: > On Thu, Sep 4, 2008 at 7:45 PM, Tom Lane wrote: >> So what we need for testing is a few different key values that hash to >> the same code. Not sure about an easy way to find such. > Hrm, well I have not really looked at the hash algorithm but I assume > we could just reduce the number of buckets? No, we need fully equal hash keys, else the code won't visit the heap. I guess one thing we could do for testing purposes is lobotomize one of the datatype-specific hash functions. For instance, make int8_hash return the input mod 2^32, ignoring the upper bytes. Then it'd be easy to compute different int8s that hash to the same thing. regards, tom lane From tgl@sss.pgh.pa.us Fri Sep 5 02:19:13 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 9EC4864FCF7 for ; Thu, 4 Sep 2008 23:19:13 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 69119-04 for ; Thu, 4 Sep 2008 23:19:10 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 2D92864FCEF for ; Thu, 4 Sep 2008 23:19:09 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m852J5fU012088; Thu, 4 Sep 2008 22:19:05 -0400 (EDT) To: "Alex Hunsaker" cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <34d269d40809041851r3330198ej6ccd0ae53e4260f9@mail.gmail.com> References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <34d269d40809041851r3330198ej6ccd0ae53e4260f9@mail.gmail.com> Comments: In-reply-to "Alex Hunsaker" message dated "Thu, 04 Sep 2008 19:51:14 -0600" Date: Thu, 04 Sep 2008 22:19:05 -0400 Message-ID: <12087.1220581145@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/50 X-Sequence-Number: 7065 "Alex Hunsaker" writes: > On Thu, Sep 4, 2008 at 7:13 PM, Tom Lane wrote: >> * check that the queries actually use the indexes (not sure that the >> proposed switch settings ensure this, not to mention you didn't create >> the indexes) > Well I was assuming I could just test the speed of a hash join... Uh, no, hash joins have nearly zip to do with hash indexes. They rely on the same per-datatype support functions but that's the end of the commonality. regards, tom lane From badalex@gmail.com Fri Sep 5 03:49:48 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id AEA6A64FF05 for ; Fri, 5 Sep 2008 00:49:48 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 18524-03-8 for ; Fri, 5 Sep 2008 00:49:40 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.158]) by postgresql.org (Postfix) with ESMTP id 1277965015A for ; Fri, 5 Sep 2008 00:48:43 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so671555fgg.23 for ; Thu, 04 Sep 2008 20:48:42 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=mmt55Gp1GxRGIhZwcJRS5XhdFaEVsnbNDHLxcRV4scA=; b=OKu17yPgY1wDO7sWIB0L/LPbzmdvhpKAMa2gGttDNHO64omQV7f7vr/m0noWCu1+kJ nlnUYYmB70tIxbb8rASPIHctnKZk/LGu5akUcyCICZmi5fpaJjezXJVemeEB9fLY8WRY Jd5qdaNVfaA0ZWQPCu9/53VSWWOc4vwxZcViA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=rH0FWJEHshBclhpd+4yZNMRMksJUWdu3nY4zFrZ+Ueuf6R5W+7wjtpJ4I1RWjVP8Kc XirhkoCguifhBWVrlohplkLpsI7bSwAuuI5KNsUfSqcR0c7w+e5+duUeN2d0qZ3+T4Vu elO9vgwfLElvkuOmN+i7UqozZlGNExVFXKNoA= Received: by 10.187.241.11 with SMTP id t11mr2507116far.101.1220586521937; Thu, 04 Sep 2008 20:48:41 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Thu, 4 Sep 2008 20:48:41 -0700 (PDT) Message-ID: <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> Date: Thu, 4 Sep 2008 21:48:41 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <11962.1220581027@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/51 X-Sequence-Number: 7066 On Thu, Sep 4, 2008 at 8:17 PM, Tom Lane wrote: > I guess one thing we could do for testing purposes is lobotomize one of > the datatype-specific hash functions. For instance, make int8_hash > return the input mod 2^32, ignoring the upper bytes. Then it'd be easy > to compute different int8s that hash to the same thing. Heh Ok im slowly getting there... So we lobotomize hashint8 and then time how long it takes to make an index on a table... something like: create table test_hash(num int8); (obviously on a 64 bit machine) int main(void) { unsigned long y = 0; unsigned cnt = 0; printf("insert into test_hash (num) values "); //while(cnt != LONG_MAX/UINT_MAX) while(cnt < 10000000) { y += UINT_MAX; printf("(%ld), ", y); cnt++; } printf("(0);\n"); } ./a.out | psql pgbench -c 1 -t1000 -n -f test.sql test.sql: create index test_hash_num_idx on test_hash using hash (num); drop index test_hash_num_idx; For both pre and post patch just to make sure post patch is not worse than pre patch??? If im still way off and its not to much trouble want to give me a test case to run =) ? Or maybe because hash collisions should be fairly rare its not something to really worry about? From badalex@gmail.com Fri Sep 5 06:32:22 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id CAC3664FCEE for ; Fri, 5 Sep 2008 03:32:22 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 74679-09 for ; Fri, 5 Sep 2008 03:32:18 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.157]) by postgresql.org (Postfix) with ESMTP id 1A29A64FCBA for ; Fri, 5 Sep 2008 03:32:17 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so703768fgg.23 for ; Thu, 04 Sep 2008 23:32:16 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=WXBsgSZlSs075SfEvO/WL0h2lIxjKi2sfWnSu5xr5vo=; b=B75sW3ZorNLlxLMAPjG65jgid25CdatD2AW4FSXfMIY2G5C8lCbGZg/0HRGeoMcCI/ ZgjYn2buWLDzm0V4wgGDHNa15gPih1G7dztxccTyLBBGEgq50SItfdpWB+KXhcvqIja8 VcU1R+TU3bgIRNKlAWC6TAIVLhFdiwuihvsoM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=jQ/7bPvPvhxnkuyqxHKwLqrpkdIgi4e0cQgVWHFc4B2CobJgx8WaR6ml0T3z5nGvnx iVKoPaLL1pc/yfeEYHPuUDhKgRuvh7Y66NEYJiIV7Y4C9J5h0ZGfn1UoWyEO0TTKgMzE wh+9xFOHTVXncB+Fxyq/r2tIlchhCzwUZb1cs= Received: by 10.187.172.9 with SMTP id z9mr2534139fao.33.1220596336366; Thu, 04 Sep 2008 23:32:16 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Thu, 4 Sep 2008 23:32:16 -0700 (PDT) Message-ID: <34d269d40809042332l7a1ac5e9t8b1dded2b951dcd2@mail.gmail.com> Date: Fri, 5 Sep 2008 00:32:16 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/52 X-Sequence-Number: 7067 On Thu, Sep 4, 2008 at 9:48 PM, Alex Hunsaker wrote: Ok here are the results: (data generated from the c program before) select count(1) from test_hash; count ----------- 100000011 create index test_hash_num_idx on test_hash using hash (num); CVS: Time: 698065.180 ms patch: Time: 565982.099 ms ./pgbench -c 1 -t 100000 -n -f bench.sql bench.sql select count(1) from test_hash where num = 110034304728896610; CVS: tps = 7232.375875 (excluding connections establishing) patch: tps = 7913.700150 (excluding connections establishing) EXPLAIN ANALYZE select count(1) from test_hash where num = 110034304728896610; QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------ Aggregate (cost=29.24..29.25 rows=1 width=0) (actual time=0.066..0.067 rows=1 loops=1) -> Index Scan using test_hash_num_idx on test_hash (cost=0.00..29.24 rows=1 width=0) (actual time=0.051..0.054 rows=1 loops=1) Index Cond: (num = 110034304728896610::bigint) Total runtime: 0.153 ms Oddly the index sizes were the same (4096 MB) is that to be expected? Here is the change I made to hashint8 --- a/src/backend/access/hash/hashfunc.c +++ b/src/backend/access/hash/hashfunc.c @@ -61,12 +61,14 @@ hashint8(PG_FUNCTION_ARGS) */ #ifndef INT64_IS_BUSTED int64 val = PG_GETARG_INT64(0); - uint32 lohalf = (uint32) val; +/* uint32 lohalf = (uint32) val; uint32 hihalf = (uint32) (val >> 32); lohalf ^= (val >= 0) ? hihalf : ~hihalf; return hash_uint32(lohalf); +*/ + return val % 4294967296; #else /* here if we can't count on "x >> 32" to work sanely */ return hash_uint32((int32) PG_GETARG_INT64(0)); From Zdenek.Kotala@Sun.COM Fri Sep 5 06:47:16 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id BA41F650142 for ; Fri, 5 Sep 2008 03:47:16 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 82647-09-2 for ; Fri, 5 Sep 2008 03:47:13 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from gmp-eb-inf-1.sun.com (gmp-eb-inf-1.sun.com [192.18.6.21]) by postgresql.org (Postfix) with ESMTP id EBE9064FF8A for ; Fri, 5 Sep 2008 03:47:05 -0300 (ADT) Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12]) by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m856l35b023084 for ; Fri, 5 Sep 2008 06:47:04 GMT Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K6P00801MSIL000@fe-emea-10.sun.com> (original mail from Zdenek.Kotala@Sun.COM) for pgsql-patches@postgresql.org; Fri, 05 Sep 2008 07:47:03 +0100 (BST) Received: from [192.168.1.101] ([89.102.161.149]) by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K6P0065AMUDW770@fe-emea-10.sun.com>; Fri, 05 Sep 2008 07:47:02 +0100 (BST) Date: Fri, 05 Sep 2008 08:43:14 +0200 From: Zdenek Kotala Subject: Re: hash index improving v3 In-reply-to: <34d269d40809042332l7a1ac5e9t8b1dded2b951dcd2@mail.gmail.com> To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Message-id: <48C0D502.80809@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=ISO-8859-1 Content-transfer-encoding: 7BIT References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809042332l7a1ac5e9t8b1dded2b951dcd2@mail.gmail.com> User-Agent: Thunderbird 2.0.0.16 (X11/20080811) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200809/53 X-Sequence-Number: 7068 Alex Hunsaker napsal(a): > On Thu, Sep 4, 2008 at 9:48 PM, Alex Hunsaker wrote: > > Ok here are the results: > > (data generated from the c program before) > select count(1) from test_hash; > count > ----------- > 100000011 > > create index test_hash_num_idx on test_hash using hash (num); > CVS: Time: 698065.180 ms > patch: Time: 565982.099 ms > > ./pgbench -c 1 -t 100000 -n -f bench.sql > bench.sql > select count(1) from test_hash where num = 110034304728896610; > > CVS: tps = 7232.375875 (excluding connections establishing) > patch: tps = 7913.700150 (excluding connections establishing) > > EXPLAIN ANALYZE select count(1) from test_hash where num = 110034304728896610; > QUERY > PLAN > ------------------------------------------------------------------------------------------------------------------------------------ > Aggregate (cost=29.24..29.25 rows=1 width=0) (actual > time=0.066..0.067 rows=1 loops=1) > -> Index Scan using test_hash_num_idx on test_hash > (cost=0.00..29.24 rows=1 width=0) (actual time=0.051..0.054 rows=1 > loops=1) > Index Cond: (num = 110034304728896610::bigint) > Total runtime: 0.153 ms > > > Oddly the index sizes were the same (4096 MB) is that to be expected? I think yes, because haskey is uint32. You save space only if you use hash for example on varchar attribute. Zdenek From mx.cogito@gmail.com Fri Sep 5 13:05:58 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id CAD1F64FCEB for ; Fri, 5 Sep 2008 10:05:58 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 96647-03 for ; Fri, 5 Sep 2008 10:05:44 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.187]) by postgresql.org (Postfix) with ESMTP id E96EC64FCE3 for ; Fri, 5 Sep 2008 10:05:41 -0300 (ADT) Received: by ti-out-0910.google.com with SMTP id y8so299673tia.5 for ; Fri, 05 Sep 2008 06:05:38 -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:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=7/AJNUNMWfIJNV9GIsT5DZZNjdkEZz+e+IqpD+EspUc=; b=sR9NTopemaSJg7N44P13R0mILhgxsElmpJctnDNeKMM0pXW2oWWzdS/rOtrSf07hW8 zSqJ5ByY8WrNNE8sjrX/kg7jNfLfxL74vGOT1UjrOoqnlk1/8mMzGwIV/jaaUrUGToM3 YzKtz0Ssf7pKFbeg6f8S72e2Cp+6aHrWxvHCw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=HdZx+o1zmWYsCh4GJ6p+PhWqm1rVg/q7uwfFr8ZYdoE3d9g+MRhbPcKSRkPjpwKtit HgIijB1BgltWJL5Jf8cXgypDc/gedrg65h7I/CsW+CzuBEGdDE0WpbdEblj4ARJHZgjY tZ0r2udvdtND9oNKv1Lqzq4pNLPKWO5MKuJV8= Received: by 10.110.49.6 with SMTP id w6mr14977386tiw.6.1220619938627; Fri, 05 Sep 2008 06:05:38 -0700 (PDT) Received: by 10.110.8.14 with HTTP; Fri, 5 Sep 2008 06:05:38 -0700 (PDT) Message-ID: Date: Fri, 5 Sep 2008 21:05:38 +0800 From: "Xiao Meng" To: "Simon Riggs" Subject: Re: hash index improving v3 Cc: pgsql-patches@postgresql.org In-Reply-To: <1220547424.4371.991.camel@ebony.2ndQuadrant> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_119065_14303673.1220619938624" References: <1220494002.4371.813.camel@ebony.2ndQuadrant> <1220547424.4371.991.camel@ebony.2ndQuadrant> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.001 tagged_above=0 required=5 tests=HTML_MESSAGE=0.001 X-Spam-Level: X-Archive-Number: 200809/54 X-Sequence-Number: 7069 ------=_Part_119065_14303673.1220619938624 Content-Type: multipart/alternative; boundary="----=_Part_119066_18802217.1220619938624" ------=_Part_119066_18802217.1220619938624 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Fri, Sep 5, 2008 at 12:57 AM, Simon Riggs wrote: > That generates the data, fine. What about the test query? > > You say you are running this command line > pgbench -U postgres -n -f /tmp/query.sql dict > > Where is query.sql? > oh,sorry. I forgot it. The attachment is query.sql and the generator. -- Best Regards, Xiao Meng DKERC, Harbin Institute of Technology, China Gtalk: mx.cogito@gmail.com MSN: cnEnder@live.com http://xiaomeng.yo2.cn ------=_Part_119066_18802217.1220619938624 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline
On Fri, Sep 5, 2008 at 12:57 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
That generates the data, fine. What about the test query?

You say you are running this command line
 pgbench -U postgres -n -f /tmp/query.sql  dict

Where is query.sql?
oh,sorry. I forgot it.
The attachment is query.sql and the generator.


--
Best Regards,
Xiao Meng

DKERC, Harbin Institute of Technology, China
Gtalk: mx.cogito@gmail.com
MSN: cnEnder@live.com
http://xiaomeng.yo2.cn
------=_Part_119066_18802217.1220619938624-- ------=_Part_119065_14303673.1220619938624 Content-Type: text/x-sql; name=query.sql Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkqtkjz00 Content-Disposition: attachment; filename=query.sql U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzg5YTIwMzQ1NjEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDg5YTA1MzYxMjcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzlhMDU2NzE4NDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjc1ODkzNGEwMTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGEy MDY3MzE1ODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM4OTRhMTIwNjcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU4MjlhMDQ2NzEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWExMDQ2Mjc1ODMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOWExMDMyNjQ3NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODU5NDFhMDMyNjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDIxNjc4NTlhMzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODU5M2EwNDYx MjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM5NDI1YTA2NzgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDYxMzc4OTVhMjQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY3ODk1MTJhMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDQyNjM3ODE5NWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjIxNDc4OTM1YTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA2NzM0 ODE5MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI3NDEzODk1YTAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUyMWEzMDY3NDgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTIzMTA2Nzg5YTQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjAxMzY0Nzg5YTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODQzOWEyNTA2NzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDc1 MTY4NDlhMzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjYxODlhMDM0NzUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQyNzU2MTM4OWEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQxNjU4MzlhMDInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTlhMDcyNjgxNDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTIxYTMwNzY0ODUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDM1YTIwNzYxODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY0Mzg5NTEy YTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUwNDcxNjgzMjknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE1MTA3NjIzODQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODkzMjFhMDQ1NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzE4MjlhMDU0NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTFhMDU3MjY0MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjlhMDc4 NTMyMTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzY5YTQwNzEyODUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWEwMjc0ODM1MTYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDM2MjE1OWEwNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjE3ODQ2NTlhMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDc4NjkxNDUyYTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQz MjE3ODY5NWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM1YTA0Nzg2OTIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQ4MzY5NTFhMjAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE0NTAyNzM4MTYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTUwMjQxMzc4NjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOWE1MDc0ODYyMzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDlhMjUwNzM4NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDEyNTc0ODM2 OWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjQ5YTMwNTc4MTYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQ5MjFhMDM1NzgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODYyOTRhMDMxNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTE4NjkyM2EwNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTgxNjkzYTIwNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY5MmEw MTM3NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY5YTAyNzM1MTgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzIxNDA3ODk1NmEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTU2M2E0MDI3ODknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNmEwMjQ3MTg5NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzI4NDk1NmEwNzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTYx NTI0YTA3ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTI4OTY1YTA0NzMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk2MzI1YTA0NzgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODk2NWEwNzEyMzQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzg5NmE0NTEwMjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTQwMTc4OTIzNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzUyNDA3ODk2MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjcxODQ5NmE1 MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzgyNDkxNjNhMDUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmEwNTE3ODk0MzInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjZhMTM0MDU3ODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTI3ODkzNmE0MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzQxODk2YTIwNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTE4NDM5 NmEwNzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQ2YTAxNzUyODknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmEwMTczNTg5MjQnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmE0MTAzNzU4OTInIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTA3MzI4NTk0NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDc4NTIzMTk2YTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjMw Nzg5YTQ1NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjYzMDE0Nzg5YTUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjEwNDU3Mzg5YTInIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIzNDYwNTc4OTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTE2MDI3NTgzNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnM2E2MDI3ODU5MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NjAzNzg1OTEyNGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODMxNTk0MmE2 MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTlhNjA0NzEzMjgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM5MmE2MDQ3MTgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYwMjcxNDgzNTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTlhMzYwMjcxNDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNWE2MTIwMzQ3ODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA4NDMy MTU2NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzlhMzA4NTI0NjEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWEwMTQ4NTM2NzInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzkyYTA4NjM1MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzY1NzI5NGExMDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjYxNTczOTRhMDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg2 MTU3MjlhNDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EwNDg2MjE1Nzkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA4NDY1NzE5MmEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDgyNjcxMzQ1OWEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDI4MTY3NDUzOWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzQ1OWExMDg2MzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODYxNzI1NDlhMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUyNGEwODY3 MTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDUyMTA4MzY3OWEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQwODY3MjkxYTUnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUxMzIwODY0NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTM4NjcyOTFhMDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjg2NzE5YTA1MzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg3NTY5 MjRhMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWEwMzE4NzQ2MjUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE1YTIwODc2MzknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTAxNDgyNzM2OTUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDE4NzYyOTUzYTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzI5NWEwODQ3MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTI1 MTNhMDg3NDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTVhMDgzMTcyNjQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTAzMjg0NzY5MWEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg3NjQ5YTEzMjUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzQ4NzIxNjlhMDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjE0OWEwMzU4NzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTIxM2E0MDU4NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY0OTJhMDM4 NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg1MTIzNzY0OWEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTZhMjQxMzA4NzknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUyNjNhMDQxODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzc5MjU2YTA4MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjEzMmEwODQ3OTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg3MzQ5 NTZhMTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ4NzE5MjYzNWEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzk2MjVhMDgxNDMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY1YTEwODI3OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjRhNTMxMDg3MjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzE0ODI3OTZhMDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE5 NmEzNDA1ODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM1ODI3OTZhNDEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjJhMzA4MTU0NzknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg1MjczNDE5NmEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnODUzNzk2YTAxMjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDk2YTAyMzg3MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDQxODM3NTk2MmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTMxNjJhMDg0 NzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjMwMTg3MjlhNTQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDA4NzkyMWE1MzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTU2MzEwODQyNzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODczOWEyMTY0NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjY1MDM0MTg3OWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODc5NGE2 NTEzMDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDE0NTMyODc5YTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzM5YTI2MDE0NTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzkxYTI2MDU0ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzA1MTg0NzlhNjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzI5YTYwNTgxNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODcx OWE0NjAyNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E2MDg1MjcxOTQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM1MWE0NjA4NzknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE1YTM2MDQ4MjcnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjA4NzQyMTk1YTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOWEwNTIzNjE4NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDJhMDU2Mzg3MTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDYyNTQzODE3 OWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGEwNjUyODEzNzknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ2NTgzMTc5MmEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNjg1MjQ3OTEzYTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODIzNTQ3OWExMDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTJhMDM2NDE4NTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWEyMzA0 Njg3NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTRhMzA2ODI3OTEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTVhNDMwMjY4MTcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQ3MzlhNTAyNjgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTI1MDYxODc5MzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjkzNGE1MTA2ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjgx OTU0NjczYTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDgyOTU2Mzc0YTEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODk1NjcyYTMxNDAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2EyMzQwODk2MTUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnN2EwMTM0ODkyNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTEyMDQ4OTYzNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDQ4MjkxNjM1N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA4OTQxMzYy NTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzY1NzFhMDgyOTQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM2NzVhMDE0ODInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEyMDg0MTM5NjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjM3YTA4NTk0NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzA4NTk2MTdhMjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2EwNDgx NTIzOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE2YTA4OTM3NDUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIwMzgxNDk3NTYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzY0MjVhMDE4OTcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNWEwMzQ4OTI3NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzc2NTJhMDg0OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjY1 MWEwODQ5NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODE5Mzc2YTI0NTAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjZhNTEwODk3MzQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjFhMzA0MjU4OTcnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzA1ODk0MTc2YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDA1MjE4OTczNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzQzMTYyYTA4NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg1OTc0MjZh MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAyODU5MTc2YTMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDMxMmEwODk1NzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM1MjE3NmEwODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTdhNDIxMzU2MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjI0MDEzODk3YTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjAxODM0 OTcyYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2E1MzYyMDg0MTknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQwMTgzMjk3YTYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk3YTYwNDIzNTgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDQzMjUxODk3YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDg5N2E2MjA1MzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk3 YTYwNTQ4MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzYwODU5N2ExMjQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTk3YTQ2MzAyODEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM1NDcxYTYwODknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjg5NTc0YTYxMzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnN2E2MDQ4MzE5MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjMxNzQ1YTYwODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTRhNjEwODky MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYwMjg0OTc1MzEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDA1MTI2ODk3YTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzE5NzRhMDY1MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnN2EwNDY1ODM5MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjk0N2EwNjM4NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjg5NTcy MzFhNDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY4OTI0NzFhNTMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA4MTQyNTY5N2EnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODUxNjQ5NzJhMzAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnODY1NDI5NzNhMDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTdhMDg2MzUyMTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIx MDg2NTk3NDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE4NjU5NzJhMzAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODYzMjk1NDdhMTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjdhMDg2OTEzNTQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzQyYTEwODY5NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMjQxNjk1NzNhMDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODY5MzQ3NTFhMDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzk3MmEwNTE0 ODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM0NjE5MjdhMDUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTAxMzU4NDI2OTcnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnN2EyMDU4MTYzNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDU4NjQ5MTdhMjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTY0MzcwODlhNTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA4OWE1 NjcxNDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA0ODE5YTIzNTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDg5YTE2NTIzNzAnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA4OTI0YTYxNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjU3MDM4OTIxYTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDA4MjE5M2E2NzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjcw NTg5NGEyMTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAxNTgyOWE2NzMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc0MzAyMTU4OWEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc0MjA1ODkxM2EnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzA4NTM0MTlhNjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTQxOWE2NzAzODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTkzNGE2MTI3MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDgyNTkzNGE2 MTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjcwODI1OTE0YTMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTY0MTcwODU5MzInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMTI5YTM2NzQwODUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjE3MDQzODUyOWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnYTYzMTcwODk0MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQ3MDIx ODM5NWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA4MjlhNzE0NTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA4OWEyNDM3NTEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg5YTI3NjQ1MzEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzcxNjQ1MDg5YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTlhNzYwMzI1ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTgy OTRhMzc2MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDFhNzYzMDgyNTkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE0NzEyNjA4MzUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg1MTlhNzI0MzYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOWE3NDYwMjg1MzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzQ2MDgxNTkyM2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTQxYTc2MjA4MzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTNhMjc0NjA4 MTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQzMDE4OTI1YTcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzg5NWE3NjEyMDQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzYzMDQ4MjE5NWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDk1YTE3MjYwODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDE0ODI5YTU3NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA0MjU2 ODM5YTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE3MDE1MzY4NDknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODQ5MmE3MDUxNjMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTY4Mzk0YTcyMDEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTY4OWE0MzEyNzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzI0NTgxOWE3MDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjUz MTg5YTQyNzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODU5YTEyNzA2MzQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY4MjM5NWE3MTQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE3MDY0ODMyOTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMWEyMzcwNjg0OTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMzlhNTQyNzAxNjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODlhMzU3MjQxMDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzE0Mjg5YTU3 MDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzIzMDY0ODkxYTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE1NzAzNjI0ODknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNTcwNjgxMzQ5YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNzEwMjY4NDkzYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjczNDUwMTY4OWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE3MTI1 MDM2ODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTFhNzA4NTYzMjQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYzOTQxYTI3MDgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI5YTM0NzA4MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTQzNzAyODU2OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjU5NDNhMjE3MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzMw ODYxNTkyNGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTM3MDI0ODYxNTkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzY1MjlhNzAxODQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTcwODMyNjk1NDEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnODQ2MTkzNWE3MjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjlhNTQyNzAxODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODY5MWE1NzI0MDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE1NzA4NDMy NjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU3MDg0NjIxOWEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEwODYzMjQ5YTUnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQ1MjEwODY5YTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDg0NjIxOWE3NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOWE3MTUwODYzNDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE3MDQ1 ODYxMzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E3MjA1ODE2OTQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA4MTk1NDZhMzInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjcwODQ5NTYxYTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTEzMjcwODQ5NTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTYyNDM1YTcwODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjVh NDcwMTg5MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMyYTQ3MDg5MTYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQxMDg5NmE1MjcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODk2YTEyNTc0MDMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnODk2MmE1Mzc0MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTU3MTA4Mjk0MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODkzNDZhNzI1MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmE3MzEyNTA4 OTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU0ODk2YTcxMzInIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg0OTI2YTcwNTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EyNzA1ODkxNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnM2E3MDU4MjE5NjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDEzMjU5NmE3MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI4NTk2 NDFhNzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODU5NjMxYTI0NzAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTEyNzM0MDg1OTYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA0ODEyNTM5NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTk2MmExNzMwNDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTY3ODEzYTA5MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIw OTM1NjQ3MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI4YTEwOTU2NzQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGEwOTM2NTI0MTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU3MzgxNGEwOTInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTEyMzQwOTY1NzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjI1NzhhMTMwNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn Njc0NThhMzIwMTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM5NjE3NTgy YTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA5NDYzNzUyMTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE0MDk2NzE4NTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTY3ODI1YTEwNDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnYTAyNDkxNjc4NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzkxNjQ3ODVhMjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc4MWEz NTQwMjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUwNDkxNjczMjgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQzNjc4YTUwOTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDMxNTQyOTY3OGEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOGExMDUyMzk0NjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTY4YTQzMDI5MTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmEz MDQxOTc1NjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDcyNTMxNjhhMDkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODMyYTA5NzY0MTUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQ4MmEzMTA5NzYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTc2NThhMTM0MDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOGEwOTQ3MTIzNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjE0NjU4YTAzOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEwOTc2MTM0 ODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTAxOTM3NjI0ODUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTczNjQ4MjVhMDEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNjhhNTM0MjA5NzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjM5NDcxNjhhNTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzI2OGE1MDMxOTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQyOGEx NTA5MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDkyMzc2ODE0YTUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzhhMTIwNTk0NzYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzhhMDk1NDI3NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTQyMDk1MzcxNjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTM2YTQwOTI3ODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE3 ODU2YTIwMzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc4MjU2YTA5NDMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjUzNDFhMjA5NzgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA5NDc4NjMyMTUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTQxMzUwOTc4NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTkyMzc4NmE0NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn Mjg2M2ExNTQwOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQ3ODIxNmE1 MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg2YTUzMDk3NDEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODZhMjUzMTA5NzQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE4NDZhMDUyOTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDEzYTA1OTc4MjYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjA5NTczODY0YTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTgyMTQ2 YTAzOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODZhMjMxMDQ5NzUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODEyYTU2NDMwOTcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQyMDk3MTgzYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDI5NzE0ODNhNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTY1MTA5Nzg0MzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzhh NjIxMzA1NDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA1Mjk3Mzg0YTEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE4YTYwOTM1MjQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI4MWE2MDk1NzQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzE4YTYyNDA5NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOGE2MTA5NzMyNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MWE2MDI5NzQzNTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYyMTA5NzU4 MzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM0YTYwMTk3MjUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYwOTM3NTEyODQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzk3NThhMTY0MDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDkyNzU4MWE2MDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDk0MTc1MjhhNjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjc4NTMx YTQ2MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDkyMTc0ODVhNjMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE2MzA5NzE0MjgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY5Mzc4YTAyNTQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTA1NjE5MzQ3MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDEwNTY5NzhhMzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTcy OGE0MDE1MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQyMzk3MThhMDYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY5NTE0MzI3OGEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzRhMDY5NTEyNzgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjE5NzM0NThhMjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDhhMDI2OTcxMzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTc1MTg0YTAyNjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTE4YTQwMjM2 OTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGExMjMwNDY5NzUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjk0MjE3NThhMzAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQ5NzgyNWEwNjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTE3Mjg1YTAzNjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTc4YTUyMDMxNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDk0ODMy NTE2N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU0NzFhMDk4NjInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQ1YTA5MzgyNjEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA5ODEzNjc0MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTg2NzE1M2E0MDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDkxODY0NzMyNWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM0 MDkyODY3MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzFhNTQwOTgyNjcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDk4MTYyN2E1MDMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTA0OTIzODY3YTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTA5NDgxMzI2N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTUxMDk4NjIzNDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDM3YTUwOTgxMjYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTUyMDM5ODY3 NGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA1OTg0MjYxMzcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg0NjdhMDUxOTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODQyNjdhMTA1OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDk1MTQ4MzYyN2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTM1ODI2MTc0YTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjdhMDQy Mzk1MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDIxOTUzODY3YTAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE1MjQ2YTMwOTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTE2MmE0MDk4MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNWE0MDkyODcxNjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDQ5ODcxNjM1MmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEw MTk4MjM0NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTAyOTM4NzZhMTQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQzODc2MmE1MTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjFhMzUwOTg0NzYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTM4NDc2YTUyMTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTZhMDU0MzI5ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODI3MzE2YTA1NDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDk4NzI2MTNh MDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM1OTE4NDc2MmEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTkyMzE4NDc2YTAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA5MzU4MTcyNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDkzNTg3NjQxMmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzg3NjRhMDkxMjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTgxNTcy NmE0MDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzE1NzZhNDAyOTgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTc2M2E0MDkxMjgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQxOTg3MmE1NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDFhNTYzMjA5ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnN2E0NjUwOTIzMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU5 ODI0NzNhMTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjFhMzQ2MDU5ODcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODdhMjYzNDA1MTknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTI0NTM4NzFhNjAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnODEzNDI1N2E2MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDFhNjA5ODMyNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDkyNDgxMzU3YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYwOTgxNzI1 NDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODE3NTRhNjA5MjMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYwOTgzNzI1NDEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODc1YTY0MDMxMjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNWEyMTYwOTM4NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDQ1MjM2OTgxN2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYxOTgy MzdhMDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg0N2EwNTM2OTEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM2NDUxOTgyN2EnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg3YTI0MTAzNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMTYzOTI1ODQ3YTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTAzNDI2OTU4MTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY5 MjU4MzcxYTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmEwNjQxOTU4NzMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTEwNjkyODUzNDcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTI4NzQxNWEzMDYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjk4NzE1MjNhMDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDc1MzFhMDYyOTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDY5ODdhMjM0MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDYxOTgyN2E1 MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTIwOTUzNjQ4N2EnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIwOTU2MTg3MzQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTA5MzUyNjg3NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTI0MTg3M2EwOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzQxN2EyMDk2NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk2NTgz NDdhMDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE1Mzg3YTA0OTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzY4NDU3MWEyMDknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDcxYTA5MzY4MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjFhMDk2ODM1NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTEwNDI5NjM4NzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEw OTQ2MzE4NzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjAxOTQ2ODc1YTMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWExMzIwOTY4NDcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDkyNjE4NzNhNDUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnN2E1MDI0OTY4MTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTM1MDQyOTE2ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn N2EyMTMwNDU5NjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQzNjgyN2Ew MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjU5NjgxNDM3YTAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDcwOTI4M2E1MTYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOGEyMzUxNjc0MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzU2NzE0MDI5OGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTE2NzIwNDk4YTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQwOTM4 YTE2NTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODI0YTY1MTM3MDknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjhhNDY1MzcxMDknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk4YTY3NTQyMzAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTA5NDIxOGE2NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjc1MDI5ODM0YTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYz NzUwMjk4MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjkxODNhNjQ3NTAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjhhMzY0NzE1MDknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzg0YTY3MDIxNTknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDUyOTgxYTM0NjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOGE2NDI3MTA1MzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzAxOTQ1MjgzYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE1NDhhNjcy MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjhhMTczNDU2MDknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDk4M2E3MTI0NTYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYwMTk0MjhhMzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTAyOTQ4YTc1MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTg0MmExMzc1NjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODNhNzY1 MDI0OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTA0OTgxYTcyMzYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDczNjUxMDkyOGEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU5MjEzOGE3NjAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzYwNDI1OTM4YTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTIzNDk4YTc2MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOThh NzYyMTA1NDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA5NTQxOGEyNzMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzkxNTQ4YTI3NjAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTc2MDM5NTE4NDInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzQ2MDk1MTgzMmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDM5NThhNzIxNjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDEyOTg1YTc2MzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDA5ODUxYTI3 NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWE3MzA1Njk4MjQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU0OTgzYTIxNzAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU5NDgxYTIzNzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTI3MDY1OTg0YTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDczMDYxNTI5OGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY5MjQ1 ODFhNzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTU4MTJhNzA2NDMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI1YTcwMTY0OTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY5ODNhMTQ1NzInIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzA2OTgzMmE1NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTgzYTU3MDQ2OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTMw NjkyODRhNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTgyYTc0MTUwMzYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDUwMzY5OGE3MTInIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTA0NjkyODEzYTcnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMTk4MmE3NTMwNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMWE3MDM5NDU2MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjYzNDE4YTcwOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTcwMTI5NjQz NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQ4YTIxNzA5MzYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTczMTA0OTY1MjgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzhhNzA5NDEyNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzQ1MmE3MTA5NjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzY4NDUyYTcwOTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA5MjYz ODUxYTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE3MjQzMTA5NjgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU3MDMyOTYxOGEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjE4YTIzNTQ3MDknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTM1NzAyNDk2MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTcwOTQzNjgyYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTcw OTY4NGEyMzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDk2ODJhNzUxMDMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzhhNzE1MDQ5NjInIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTY4NGE3NTMyMDEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDM0NTk2OGE3MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMDQ1Mzk2OGEyNzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTY4M2E3MDQ1MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjhhMTcyMDUz OTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTYzODRhNzAyNTknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODRhNzA1MjE5NjMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNmEyMTczMDk4NDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnYTcwOTM4NTYxNDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNmE3NDA5ODEyNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTEyNzQw Mzk4NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk4MjYzYTU3MDQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODYyMWE1MzcwNDknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg0NmE1NzAzMjknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjA5MTQ4NjNhNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTgzNmExMjQ3NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU5 Mzg0MjE2YTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzZhMTQ3MDU5Mjgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDUyOTM4NmExNzQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjYzYTcxNDA5NTgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOGEwMTM1NDY3OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzQ5OGEzMDYyMTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzkzNDhhMDEyNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTAzMTY1Nzk0 ODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIwNjQ3MzUxOTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDUzYTA2NzI5MTgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODQyNTMxYTA2NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNWEwMzY3NDIxOTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzk4YTQ1MjMwNjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQwNjc5 ODNhNTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTUwNjc5NDgzMmEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGEwNzE1MzYyNDknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWEwMjczNTY5ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOGE0MDIxNzUzNjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTI5OGEzMTA3NjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzcy NjQ1OTE4YTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzM2NTk4YTE0MDIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjA3NjU5ODEzYTQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjA3NDYzMTU5OGEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjU5OGEzMTA3NDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMjY5MzUxOGEwNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzY0OTUyOGExMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjk4NDUzMWEy MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODUyYTA0NzEzNjknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEwNDc2OTE4MjMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMDI3NjQ5ODM1MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjUwMTM3Njk4YTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTA3NjMyOTgxYTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjk4MzE0 MmE1MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg0YTEyMzUwNzYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI4NGEzMTA3OTUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTU2OGExMDQzMjcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDQ3OTMyNTY4MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTQ5MzU2MjhhMDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjk2 NDUxOGEwMzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTAxNzM5NjU0ODIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM0YTA3OTYyNTEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE2NThhNDA3OTMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjU4YTAxNzM0OTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMThhMDI3OTQ2MzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NWEwMjcxOTY4MzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEwNzk0NjEy MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA3OTY0MzhhNTInIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI1MDc5MTY0ODMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOGEwMjU0MTc5NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTE3NDM5NjgyYTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnYTA3MjUzNDE5NjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM0NjI4 YTA3MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDc1OTY4MmEzMTQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTYzOGEwMTI0NzUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTgxNDU2MjNhMDcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzU0NmEwNzI5ODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODUzMjYxYTA3NDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDcx OTg2NDUyYTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg2MTQ1YTA3MzIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDc5ODYzMTUyYTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDk4NjVhMDI3MTMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMTVhMDcyOTQzODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTNhMDIxNzk4NDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MTU0MDI3OTg2M2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjFhNTA3NDIz OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmE1MjAzMTc0OTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE5ODM0NmE1MjAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE1MjA3Mzk4NDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzZhMjA0MTU3OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTU0Mzc5Mjg2YTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjc5MTQ4 MzZhMDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQ4NmEwMzUxNzInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjU3OTg0NmExMDMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg2NDEzYTIwNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTM0OTgyMTZhMDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTAzNzU5ODQyMTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzgx NmEwNzkyNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmEwNzM5MTQ1ODYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDczOTU4MTI2NGEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTU4NjJhMTMwNDcnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTQ1NjAxNzM5MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOThhNTQ2MDE3MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjQ3OTgxYTU2MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzk4NGE1NjA3 MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODQxYTYzNTAyNzknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGEzNDYyNTAxNzknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODNhNjEwNDU3MjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTgyYTYzMDQxNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTQ3MTMyOThhNjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM5NDhh NjEwNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU3OTI4YTE2NDAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTI0OThhNjA3MTMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDUxODIzYTYwNzknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnM2EyNjA3OTQ1MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjk1NDE4YTM2MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUy OGE2MDE0MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYwNDcyMTk1Mzgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDc5NTI4YTYzMDEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzI5NDg1YTYxMDMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNDI1NjE3ODAzOWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMzgwMTlhNTI2NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NjE0NzgwMzkyYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTcxODA5YTM2 MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ5M2E2MjUxNzgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzgwNDE5YTM2MjUnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTNhNjc1ODA0MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMWE2MjM0NzU4MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDkyYTEzNjc4NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDlhNDY3 MTM4NTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTY3NDM4MjUxMDknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM1MDlhMjYxNzQnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODUzMDE5YTY3MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzlhNjc4MjA0NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTEyYTQ2NzgzMDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDgw NTlhNjEyNzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTRhNjM3MjgxMDkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc0ODA5MjUzYTEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODEwOWEzNzQ1MjYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTcyMzY0NTE4MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjgxNTA5YTczMjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTNhMTc2ODA1MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODAyNTlhNDM3 MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTMyODA1OWE3NDYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EyNzY4MDk1MTQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMWEyNDc2ODA5MzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjgxMDk0M2E1MjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzg1NjAxNDM5YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDI0OWEz MTc4NTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTcxMjM4NTYwNDknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E3ODI1NjA5MTQnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYwMTI5YTQ3ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDgzNTYwOTFhNzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjQxNTA5YTc4NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQ1 MDkxMmEzNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE3ODYyMzU0MDEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg2NTAxOWE3MzQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE1MzlhMjc4NjAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNDE5YTc4NjIzMDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTE1NGE3ODYyMzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTQ3MTI4NjAzOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTNhMjE0Nzg2 MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDk1YTc4MTYzMjQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE4NjQyMDM5NWEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQ1ODYwMzE5YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDYwOWExNzUzMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDEwOWEyNzU4NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ1NjM5 YTIxNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQyNTYzOTFhNzgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODIwNTY5MzQxYTcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE4NDAzNTY5MmEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjU5MTM0MmE3ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTk0YTcyODAzNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDc4 MDE2NTkyM2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODIwNDY1OTEzYTcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzVhNzE0MjgwNjknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDMxMDI2OTVhNzgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDE0MjYzOTVhNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTI5M2E0NTc4MDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTU3ODI0MDEzNjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ2MjlhNTcx MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTU3MTgyMzA2NDknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzE2OWE3NDI1ODAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTQ3MzUyODA2OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjFhNzgzMDk1NDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDFhNzgwMjkzNTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjVhNDI3 ODAxMzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTZhNTIxNDc4MDMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EyNTQ3ODAxOTYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDgzMTA5NmE1MjcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNmE1NzM4MjQxMDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTU3MjgwNDkxNjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQz YTU3MTgwMjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTgzMDk2YTEyNzQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDgwOTZhNzIxMzUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjIxYTc1ODA5MzQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNDMyNTA5NmExNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMzA5NmE3ODE0MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTE3ODUzNDAyOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTc4MTM1MDQy OTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM1MDE0OTYyYTcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjRhNzg1MDkxMzInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTc4MDE0NTI5MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnYTcyMzgwNDUxOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzU5MTZhNzg0MDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTFhMjg1 Njc0MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI3NDMwMTlhODUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEwMzQ5YTgyNjUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTNhODQ2NTcyMTAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMTg2NzUzMDQ5MmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOWE0MTg2NzMyNTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI0 NzUwOTNhMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM5YTQ4MTY3MDIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTFhODQ2MzcyMDUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTJhMzg0NjcxMDUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjcxMDk1MzRhMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTVhODE2NzQzMDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzVhMjg2NzE0MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI4NjM3MTA0 OTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQ3MDlhNTIzMTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTM4MTc1MjY0MDknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzUxNjA5MzRhMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODM0NzEyNTYwOWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOWE4MzI3NjUwMTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDlhODE3 NjIwNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDUyOWE4MTczNDYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc2MjQwNTlhODMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc2MDk1YTM4NDInIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjk1YTg3MTYzNDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDczMTYwOWE1ODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDI5 M2ExNTg3NjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA5NDMyYTE1ODcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQwOWE4NTI3NjMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTU3NjAzMjQ5YTgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMTMwOTRhODU3NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzYwOWE0MTg1MzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTE4MjczMDU0NjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTI2MzlhNDg3 MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDUxNjkzYTQ4NzInIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWEyMzgxNDcwNTYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE4NzAxMjY1OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTJhODcwNjkxMzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzg3MDYxOWEyNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzIwNjlh MTU4MzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTg3MTM0MDYyOWEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDYxNDlhODI1MzcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA5NTI2MTRhMzgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDE5MzI1NmE0ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMWE4NzM0MDkyNTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDEz OTYyNWE4NzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE4NzA0OTY1MzEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzcwOTZhMTI1ODQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTg3MjA5NjQxYTMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTMyNDE3MDk2YTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODU0NzAxOTYyYTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MTQwOTI2YTM4NTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDkzMTQ2YTI4 NTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTYxNDJhMzg3NTAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODcwMzU0OTIxNmEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjcwNTk2MzRhODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODc0MTMwNTk2MmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzY4NzAyOWE1NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzA5M2E2 NDU4MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzIwOWEzNjQ1MTgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjY4NTcwMTQ5M2EnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYzODQ3NTIxMDknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzA1OTNhNjQyMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzk1MWE2NDI4NzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc5 YTgyMDEzNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTMwMjU2NDc5YTgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjEyNzk0YTgwMzUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODA1NjM3Mjk0YTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjA2NTE3OTM0YTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMjlhMTgzMDQ2NTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MTcyOWE4MzA0NjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTEyODA2NzQz NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWExMjgwMzY3NDUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQzODA2NzU5MmEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDYzNzEyNTlhODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTJhODA0Njc1MzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjMxYTgwNjc0OTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE0NTE4 MzIwNjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE1ODA2Mzc0OTInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2ExODUwNjQ3OTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjUwNjEzNzlhNDgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjlhODAxMjc0MzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTgwMzc1NDE2OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAz NzI1NjlhMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY1NDlhODEyMzAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTM4MDcxMjY1OTQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDEwMjc2NTkzYTgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnODA0NzMyNjUxOWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMDMxNzY5NTRhODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTQ4MDEyNzYzOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTgyNDEzMDc2 OWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE1ODQwMTI3NjMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTkzNGE1ODIwNzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE1MzgwNzY5MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjI5MWE4NTQwMzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzA0NzI2OWE4NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTc2OWE4 MjA0MzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTczNjkyYTE4MDQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk0YTM4MjA1NzYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc5NTY0YTgwMjMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNmE0ODEwNzMyOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTM4NDIwNzkxNTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDc5 MzI1MTZhODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTgwNzEyOTYzNDUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjFhODA3OTY1NDMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E4MjA3OTY1NDEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjUyNGEzODA3MTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMDI3OTY1NGE4MTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDc0OTI2NTEzYTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzI0Mzk2YTU4 MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzZhMjgxNTA3OTQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzkyNDMxNmE4NTAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg1MDM3MjkxNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTA1Nzk2YTQzMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMWE0MzgwNTcyOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDUzNzk2 YTgyNDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE2YTM4MjA3NDUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTgwNzI1MzQxOTYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTY0MTJhODA3MzUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzc1MjkxNmE4NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDQ3NTkzNmExODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzlh MTU2NDIzODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA3OTRhNjUzODIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzkzYTY4MjQxNTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOWE0NjgzNTA3MjEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTYyNDMxODUwNzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTY4MDEyNDM1NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTRhMTM2ODA1MjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDlhNjgzMjAx NzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjgwMjE3NTk0M2EnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODEyMDc5NDVhNjMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDVhMTY4MjMwNzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDM3OTQ1YTY4MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjA0Nzk1MzFhNjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM0Mjk1 YTY4MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjgwNzQxMjk1YTMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjlhODQ1MzYxMDcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQ2MDc5MzJhODUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDMyMDE3OWE4NTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODU2NDIwNzkzYTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM0 NTA3OWEyODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTIwNDM3MTlhODYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQ5YTgxMjYzNTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGExMzg2NTAyNzknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTI3NDlhODEzNjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODYyMDU3OWExMzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OWE0ODYwMjMxNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE2NDA3NTlh ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjMwMTc5NTJhNDgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTNhODQxNjAyNzknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzIwNDcxOTVhODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNWE4NjMyMDE3NDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTI0ODYwNzlhNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjU4NjM0 MDcxOWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTIzODE2MDQ3OWEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY3M2E4MDk1MTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjcxYTgwMjkzNTQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTM0ODEwMjk1NjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjU2N2E0MzE4MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM5 NTY3YTE0ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzJhNDgwMTkzNjUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2ExNDgwMjkzNjUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODQwOTM2NTcyYTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDQzMTk2NTcyYTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODAxOTY3NTQyM2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODA5MzY3NTI0MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE4MzQwMjkx NjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTY3MjE1YTgwMzQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjdhMTQzNTI4MDknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODA5NjdhMjM1NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTM0NjI3MWE1ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTY0MjdhODUwMTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E4NTA5 Njc0MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDkyNjE3NGE4NTMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTgwMjU5NjQzNzEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM5NjE3YTQ4MjAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDU2YTgwMjE5NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDU2YTM4MDIxOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjA5 NzUxNDZhMzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDI5NzE2NDUzYTgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY1YTE0ODAzMjknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTZhNTQ4MDkzNzInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTE1ODAyOTM0NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTIwMTkzNzZhODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzE3NmE4NTAyNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE2YTgwNTkz NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODIxMDU5NDM3NmEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E4MDUxOTQyNzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU5NzYyNDNhMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDU5Mjc2YTg0MTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTU5Mzc2YTI4NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE4MDkx NTcyMzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzk3MTJhNTY0ODAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDA5N2E1MzYyMTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2ExNTY4MDM5MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDkzN2EyMTY0NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODEyMDk3YTYzNTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDk3 YTY1Mjg0MzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjQ2NTgwOTczMWEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzUwMTI0OTdhNjgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTIzNDE3YTY4NTAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjIxNDM4NTA5N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTgwNTQ5NzNhMjYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTM3YTYxNDgwOTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTY4NDA5MzU3 MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzFhNjM4MjQwOTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjM4MDQ5NTdhMjEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzIxMzVhNDY4MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjAxOTM3YTg1MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDM1MDkyN2ExODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTI3M2Ex ODY1NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE4MjY1MzA5MTcnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjA5N2ExMzg0NjUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzYxMDU5NzJhODQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnN2E4NDYyMzA1MTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTcxYTgzMjY0MDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA5 NzU0MjNhODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQyNzUxYTM4NjAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTg0NjEwMjk3YTMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg2NDA5MTdhMzUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDQ5MzdhNTI4MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTdhMzgxMDQ1MjYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDU2OTI3MzRhMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDEyODA1MzY5 N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA2MjQ1OTM3YTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU5N2ExNDI4MDMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNTdhMzE4MDQyNjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTY5NzVhMjM0ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNWE4MzEyMDQ2OTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE1MzI4 NDA2OTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTgyNTQwNjkzNzEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU0MTA2Mjk3YTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY5N2E4NTIxMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzUwNjk0MTdhMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMWEzODUwNjk3MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzdh NDE4NTIwNjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTkyMGE2MzU3NDgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE2NzUxODI5MzQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzEyOTBhNjc4NTQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzE4Mzk1MjQwYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTE2Nzg5MjM1NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjBhMzQ2NzgxOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjc4MTkzNTBh NDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzBhNjc4MTQyOTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTI2Nzg5MDU0M2EnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjFhNDY3ODM5MDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDI3MzE4OTA1YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzUyMTY4OTMwYTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDcyMTU2 ODkwM2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODkxMzBhNzQ2NTInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDEyYTc2ODU5MDMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODUyOTBhNDE3MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjYxMzg1OTBhNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjNhNzE2ODk1NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTc2 Mzg5MTI1NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg5NTBhNzQyNjMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjM0ODkwMjUxYTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTU3MTY4NDkwMjMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTY5MGE3ODIzMTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODMyNDU2OTBhNzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTEwYTc4MzI2NTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAyYTc4NjM1 OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzE5MGE3NDg2NTInIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUxMDI0YTc4MzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMWE0Mjc4NjkzNTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnYTI3NDgzNjk1MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDgyNjE5NTAzYTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQwMjVh MTc4NjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjkwYTE1NDc4MzInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTAxYTU3NDgzNjInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE1Nzg0NjkwMTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDBhNzM1ODIxNjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjEzOTIwNGE3NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzc0 ODk1NjAyMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE4OTMyNjQ1MGEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg5MjY1NDAzYTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg5NjU0MTBhNzMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTMxNzgyOTY1MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTA0YTI3MTgzOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODkxNjUzMDRhMjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTY1MjMwMWE3 NDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE3ODk0NjE1MjMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc4OTYwMjQzNWEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjczNDg5NjA1MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnYTc4NDMxOTYwMjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjQxOTYzMDVhNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTJhNzg5 NjE0MDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTYwMjNhNTQ3ODknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmExNTczODQ5NjAnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODI5MzQ2MTBhNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMGEyMzc1NDg5NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTU4OTQyNjBhNzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzgy OTQ2MTBhNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM4OTYwMjE0YTcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmExNzUzODk2MDQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA0YTcxNTgyMzknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzg1NDk2MzIwYTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzg1MzkxNDYyMGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NjQzMGEyNzgxNTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTk2NDAyM2Ex NzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EyMTc4NTk2MDQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzg5MDU2MzRhMTInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODkxMDU2NDNhNzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDI1YTczODkwMTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTFhNzg5MzQwMjYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU3ODM5 MTIwNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmE0NTE3ODkyMzAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQ3MjgzOTEwNmEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjFhNzM4NTk0MDInIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjZhMTc4OTUzNDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzRhNzg5NTIwMTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjFh NDc4Mzk1MjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU0MTc5MzBhMjgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzg0NjUyNzkxMGEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEzNTkwMjRhODYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzY3NTkwMWEyNDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTgzNjc5NDIxNTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjFhODQzNjc5NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjcyOTM1MDFh ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODY3MTQ5MzUwMmEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDE1MjRhODY3MzknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM2NDc5MDVhODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMmE0MTUzODY3OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMGE1ODY3NDIzMTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjQwYTE1 ODY3OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM5MTQwYTg3MjYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTEzMDRhMjg3NjUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY1OTAxYTQzODInIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjU5MGE0ODEzNzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjk0NTAxYTIzODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUz NDIwYTg3MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg3Njk1NDAyM2En IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E4NzI2MTk1NDAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY5NTEwYTQzODInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzY0OTMxNTBhODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTJhMTg3NjkwNDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NjM0OTIwMWE1ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTg3MTYzMjk0 MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDM1NzY5MDEyYTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI3NjkwYTg1NDEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjQ3NjkwMWE4MzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTc2NDIxMzkwYTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMjY0OTAxYTgzNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjc2OTEz MGE0ODUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDMyYTQ4Nzk1MTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQyOTY1MzAxYTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTIxODQzNzk2MDUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDUxODc5NjBhMjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTk2MDJhODQ1NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU3 MTk2MzAyYTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk0NjIwYTgzNzUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc1OTYwNGEyODMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg3OTA0NTEzMjYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTQ4MzcyOTAxNTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTEwNTI2YTg0MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODM3OTA2MjVhNDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ2YTU4Nzkz MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE1ODc5MDY0MzEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODMyNDU3OTAxNmEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNmEyMzg1NDE3OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTMyNzQ5MDE2YTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTc5NDMyMDZhMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM0Mjkw NmE4MTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODc1NDE5MDYzMmEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAzNmE4NzI1MTknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTEzMDZhNDI4NzUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDEzNjJhNDg3NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDYyM2ExODQ3NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg3 OTUwNDEzNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg3OTIxNTA2NDMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGEzODc5NTEwNjInIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzE2NGE4Nzk1MjAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTBhNDEyNTM2ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODczOTAyYTQ1NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjQ1Njg3MzkxMGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDNhNTQ2ODIx NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGEyNjQ1MTM4NzknIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY1Mjg0NzM5MGEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTBhMjY1ODcxMzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjM2NTg3NDkwMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjU4Mzc5MjQxMGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYxNTg3 OTA0MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg3OTAxYTQ2NTMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjM4NTc0OTAxYTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE4NzQ1OTBhMzYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTBhNjgzNzQxNTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDBhMzYxMjg3NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTEz NDY4NzI1OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDUwMmE2ODMxNzkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzUxMGEyNjQ4NzknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjcxOTUzMGE2ODQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMGE2Mzg3NDIxOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTY4NzI5MzA1NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MWE2NDg3OTA1MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY4NzQ5MDI1 M2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODcyMTQ5MDVhMzYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjBhODE5NDM1NjcnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E4Mjk0NTY3MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTQ2NzBhMzg5MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTg5MzY1NzI0MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDNhODkx MjY1NzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE4MjkzMTY1NzAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEwYTg0Mzk2NTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg5MzYxNzI1MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnODkzNDI2NzUwMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDI1MWE4OTY3MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODkz NDYyNzA1YTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM5NjE0NzIwNWEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODQzNTk2NzAyMWEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQzNzBhMjg1OTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTk2NzMxMGE0MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzU2MjEzMDRhODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTQxNzM1MjYwYTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYyMzAxYTg5 NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzU2MTAzYTI4OTQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjMwNGE4OTc2NTEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTM4OTcyMTYwNTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjc2MGE1ODM5MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTczNDYyMGE1MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTc0MTI2 MGE1MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTU4OTcyNjQxMDMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM3NjQwYTUxMjgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE3MjYwYTgzNTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMTg1OTc2MGEzNDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMGE4OTI1NDE3MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODk1 NzI2MzQwMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU2YTg5MTcwMjQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjRhODkzMTcwMjUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODk3MDUxMjZhNDMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTcxMDU2M2E0MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNGEyODk3MDYxMzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTQyODk3MDYzNTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY1YTgxOTQ3 MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjk0NzEwMzZhNTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmE1ODI5MTczMDQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM5NzA2YTg1MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDMxNmE4NTI5NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDY0MWE4NTkyMzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODU5NzEw NmEyNDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTk3MDMyNjFhNDgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI0YTgzOTE1NzAnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA2YTg5NzEyNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzE1MjA2NGEzODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMGEyNTQ2Mzg5NzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE1 NjgyMTk0MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQ4MTk3MjBhNjUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMxODk3MGEyNDYnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDFhNjg1NDkyNzMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnM2E2NDgxNTk3MjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTcyMGEzNjg5NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTYyODEzOTQ1NzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTE0NzBhMjY4 MzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjAzMWE2ODk1NzQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM5NTc0MDJhMTYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY4MjkzMTU3MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTU3MDMyMWE0NjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDY4OTU3MjAxM2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE2MzQy ODk3MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTI3MTMwNWE0NjgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTY0Mjg5NzA1MzEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDk3MDIzYTg2NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTgzNjU5NzA0MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNzBhODQyMzE2NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU5 NzIwYTMxODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2E4Njk1NzQxMjAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY5NTI3MzBhNDgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI4NjkxNzQzNTAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzM1MDIxNGE4NjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMDVhNDgxMjYzOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTg2OTc0MDM1MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTgyNjk3NDMx MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg5MDQyNTYzMTcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU2NzQxMmE4OTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNjczYTE4OTQwNTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzkwNjE1N2E0ODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnN2E4MjkzMDQ2NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDI5MzA2 NzE1YTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQwNjczMTVhODInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg5MDIxMzQ2NzUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTgyOTA2NDc1MzEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTg5MTMwNjcyYTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDMwMjY3YTE1ODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY3 YTE1ODM5MjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM4OTA2NDdhMjUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY3NDJhNTg5MzAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjQ5MDM2N2E4NTEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnODM1OTQwNjdhMTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTUwNjI3MzRhODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NmEyMzg5NDEwNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzYzMjU0MWE4 OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTAxNzMyNjVhNDgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjUyYTg0OTAxMzcnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMTYyYTU4OTM0MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODk0MDM3NmExMjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnYTU4MTkzMDcyNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODU5MjA0 NzYzMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmExODUzOTA0MjcnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDcxNDI2M2E4NTknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODk0MzE1MDI3NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjFhODM5MjQ1MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDE3NjQyYTg5NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmEz ODE0OTUwMjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTIwN2E1MTY0Mzgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDEyMDdhNTY4OTMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjEyNTQ4MzkwN2EnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMTRhNjUzODkwNzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMzAyN2E0NjUxODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn Mzg1OTEwMjc0YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMwN2E2ODQx MjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU3YTYxODM5MjAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjg5MTMyMDQ1N2EnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNTE0NzJhNjM4OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDI2MzE4OTA1N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTQ2ODI5MDM1N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTIzMDcx NWE0NjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA3NTJhNjQ4MzknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEzNjQ4OTAyMTcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE2ODk0MDE3NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzE1YTI2ODkwNDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjkyMDcxYTM4NDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY0 OTA3YTMyODUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDdhODMyNjU0OTEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTkwNzE0YTgyNjMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTAyMTdhMzQ4NjUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnN2E0ODY1MzkwMTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTg2OTM0NTA3MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTA3YTM4MTYyOTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDEwN2EyODY5 NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAyN2E4NjM5MTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ3MWEyODY5NTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg0Njk1MzEyMDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTA3YTg2MTQ5MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDVhODY5MTA3MzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTRhODM2 MjkxMDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDc1YTE4NDM2MjknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjkwNzUzYTE4NDInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTg2Mjk0MzEwNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTIxODYzOTA3YTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDIzNjkwNzFhNTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQ5 MDdhNTgyMzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQxYTUzODY5MjAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQ1NjAzN2ExMjgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTEzODk1NjA3MjQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMDdhODM0MTk1NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMjE5NjUwMzc0YTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn Mjg0OTM2NTA3MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDIzN2E4NDkx NjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQyNjUwN2E4OTEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTdhODkyMzYwNDEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODQzOTYxMjA1N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODkzNDI2MDUxN2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjAzMTU3YTgyOTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzY0MTA1 N2EyODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA3NTI0YTg5MTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTgyNDk2MzA3NTEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI3NWExODk0NjAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTYzMTQwNzVhMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODk2MDMyMTdhNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjEw NzNhNTQyODknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQzN2EyNTgxOTYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2E4MjE1NDM5NjAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjM0MDcxMmE4NTknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTYzNzE4NDIwYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMzQ3ODEwYTI5NjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MTI2NTc0ODBhMzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA0YTM5NjUy NzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjRhOTYxMzU3ODAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjUzNzgyMDFhNDknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzgzMDJhMTQ5NjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODMwYTQ5NjEyNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNDU4MGEzOTYxMjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE1Mjgz NDBhOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDJhOTM0Njc1MTgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODMxMGEyOTY0NzUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDIzNTBhOTE2NzgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzQ4NTBhOTEyMzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTQ2NzgxMDI1M2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDEz NWE5NjQ3MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTMxOTY0Mjc4MDUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTU5MjQ2NzgzMTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTEyOTY3ODA0YTMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTk3MzI0NTY4MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTc2NDUzODBhOTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzM2NTg0MjAxYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk0Mjc2MzU4 MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODBhOTczNDEyNjUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU4MTMwYTk3NDInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTc2ODMwMTQ1YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTY4MDUzNDJhOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzY4MzIwNWExNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzM0Njgx MDUyYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDA1MmE5MTczNjgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDYxODBhMzI1OTcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE3NjQ4MzBhNTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzYzMTI0ODBhOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDBhMTkzNTcyNjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzY4 MzA0MmExOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODI0NTEzNjBhOTcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM3ODYxNDUwYTknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTcyMTg2NTMwYTQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzYwMTVhOTQyNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDE5MzI3ODYwYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTk0Mzc4MjYwMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQyNjBhNTk3 ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDRhMzE1OTcyODYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzg2MDRhMjU5MTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODYwYTIxOTUzNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjU3ODQxNjAzYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTI3ODYwYTQzOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDI5NTcz ODYwMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk3MzE0NTI4NjAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI3NDU4NjBhMTknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzk3ODAxNDUyNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMTA1NDI2YTk3MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNGEyMzk3ODAxNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODAz NjE1MjRhOTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTc4MzAyMTY1YTQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDY1YTIzMTk3NDgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDkzNzgyMDYxYTUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnM2E1OTQ3MTgwMjYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTM5NzQ4MDYxMmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzE2YTk1NzgyNDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM1NzgxNDAy NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmExOTIzNTc4MDQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzEwNjQyYTk1NzgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzc1ODAyNjE0YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjgwNmExMzk0NzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzk3MjE4NDUwNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTQ5Nzg1 MDEyNjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQyNzg1MDYzYTEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDJhNjU5MTc4MDMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDJhMzYxOTU3ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMGE2OTUzNzg0MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNzU4MDM0YTE2OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE5 NzMyNTgwYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODIwM2E2OTE0NzUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM0YTYxOTI3ODUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk3ODA0MjVhMzYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTc4MjMwNWE0NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMGE5ODQyMTU2NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTYyNzAzYTk4NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODE0NTI2NzBh OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzBhOTgxNTI2MzQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE5ODEzNTYyNzQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTgxMzU2NzQyMGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODUxNjI3MGEzNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzAzMTJhNDk4NTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjU2NzBh MzkxNDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDBhMTk4MzY1NzInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEwNDNhMjk4NjUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjAxNGE5ODYzNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjU3MTAyYTM5NDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMGE5ODYxMjczNTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk4 MjMxNjc1MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM3NTBhOTQ4NjEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMwYTE5NDg2NzInIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk4MzY3MDI1YTQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzAxMmE1NDkzODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTQzMjgxNjcwYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzBhMzIxOTQ1ODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE5MTg3NDUy MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODE3NTYyMDRhOTMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE5Mjg0NzUzNjAnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE4MjQ3NTYzMGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTgyNzY1MDEzNGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDNhNDkyODc2NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE5MTI4 NDczNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTRhOTMxODc2MDInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQ4NzE2MDUzMmEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjMyNDA1YTE5ODcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDEwNWE5MzgyNzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODc2MGE0MTU5MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI1 OTQ4NzYxMDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDUyMzg3NjBhOTEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQyM2ExOTU4NzYnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzYwYTk0MTg1NzInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMTk4NzMwNTQyNmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTZhOTI0ODcwMTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MmEzOTQ4NzEwNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk4MjQ3MTAz NjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTgzNzE0MDYyYTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDQ2MWEzNTk4NzInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzcwMjQ2YTUxOTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODcwNjNhOTI1MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTI1MTM4NzA0NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDZhOTIx ODU0MzcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTU3MDZhNDkyODMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg3MzE1MDI2YTQnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUzNjkxMjg3MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzAxYTY1NDk4NzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNDI4NzAzYTYxNTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM5 ODQyNzBhNjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjk0NTg3MTAyYTMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg1MTI3NDMwYTYnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM3MTA0YTY5ODInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTM0MTY5ODI1NzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMzUxMGE2OTQyODcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTg0Mzc1MDJhNjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTEzODcwNDI1 YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTcwNDVhMjY5ODMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTgzNzA1YTE0MjYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODc0MzBhMjE5NTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTY4NzQxMGEzMjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzA0MWEyOTU2MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODcwM2E0 MTkyNTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzAzYTk2NDU4MjEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM2NTE0ODI3MGEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI1ODEzNzQwYTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTM0NjU4NzBhMjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzYxNTg3MGE5NDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjg0 NTM3MGE5NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzIwYTk0NjgzMTUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk0NjIxODczNTAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDcyNTEzMGE5NjgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTQ5Njg3MzIwMTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTY4MzcwNGEyNTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDYzN2E5ODAxMjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk4MDI1MTY0 NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTkzODEwNTY3NDInIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnN2E0OTgwMjE1MzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODQyMzA2MTU3YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjU3YTkxMjgwMzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnYTkyODMwNjE3NDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTgwMzYy NzU0YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjAxNjczNWE5NDgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg0MzA2N2E1MjknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzEyN2E1OTg0MDYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMzQwNjI3YTk4MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNTMxMjA2NzRhOTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjY3 YTkxMzQ4NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjQxNTMyYTk4MDcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzM2NDEyNWE5ODAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGExMzkyODA3NjUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTRhOTMxODIwNzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODEwMjc2MzU0YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NTNhOTgyMDc0NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzM2MmE1OTQ4 MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQ3NjJhNTk4MDMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODEwMjQ3NmE1OTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjZhMzU5ODEwNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDc2MTQzYTU5ODInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMTk4MDcyNjQzYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk1ODA0 NzEyMzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM1ODAyNzE0NmEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTAyMzcxNmE0OTgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg1MDEzMjc2YTQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMTQ4MjA1NzZhOTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzAyNTcxNmE5NDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM0 NjE5ODIwN2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzFhNjQ1OTgyMDcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDE3M2E2NTQ5MjgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM3MWE2NTk4NDAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzUyOTE4MDc0YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnN2E2OTMxMjQ1ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn N2E2OTE0NTgyMzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE1NDgwNzIz YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzFhNjkzNTQ4MjAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjY5MzU4NDA3YTEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODA3MzRhNjEyOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNzRhNjkyMzE1ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTUzMjE4MDc0YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDMyN2E2 NDE5NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE2MjM0OTg1MDcnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODQwNTdhMzYyMTknIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTkzODA3MjU0YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDc1MmExNjk4MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjUzODQwN2E5NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWEy NDk2NTgwNzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTgyMDQ1N2EzOTYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWE5NDY4MzIwNTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQyNWE5NjMxODAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjM0MTdhOTg1NjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTQ4NTE2MjA3YTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NjQ1MDcxYTM5MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY1MDI3NDNh OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDM5ODY1MTA3MmEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM0Mjg2NTEwN2EnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjk0ODY1MDM3YTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDdhMjk4NDYxMzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnN2E0OTE4NjIwNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQ4MjYz MDU3MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjAzNTcxYTI5ODQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjRhOTgzNjAxNzUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODI0MTYwNzUzYTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnODYwMTQ3MzVhMjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODMyNjEwNDc1YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA3 YTQ1MjM5MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA3YTU5MzI0ODEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDdhNTkzNDI4MTYnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQ4MTYwMzI3YTUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNDU4NjMwNzIxYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTUxODM2NDAyN2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODEwYTU2NDM3OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM0YTYxMjU3 OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjQ4MGE2MTc1OTMnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDIwYTY3MTU5ODMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnOTg0MGEyNjEzNzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTk4MGE0NjMyNzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzE1OTgwYTQ2NzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE2NDM3 MTU5MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EyNjc5NTQxODAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc5NTM4NDIwYTEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTYxNzkzMjU4MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMDEyM2E2Nzk4NTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODU0MGExMjY3OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE2 NzM0Mjk4MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTQxNjc5ODAyNTMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE2MzcxNDk4MjAnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjc5MTI4NDA1YTMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMWE0NzU2OTgzMjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzY0MjU5ODEwM2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn ODBhNzY1OTMyNDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODBhMjc2OTQz NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGEzNDE3MjY5NTgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTE1ODAyYTQ3NjMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODUwYTc2MTMyOTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNzYyMzQ5ODA1YTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNWE3MjY0MTM5ODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE1YTc2 OTQ4MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc2OTI4MzQwNWEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTQ1NzY5ODAzYTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE1MjM3NDE2OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzY0OTgxMGEyMzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTM1NzY5MTQyODAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTcy OTQzNTY4MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODBhNzkyNTE0NjMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYzMTQ4MGEyNzknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGEyNDczOTUxNjgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNjgxMjBhNzQzOTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODBhNzI0OTE2NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MjgwYTcxMzk0NjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY1MjgwYTcz OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE3OTM2ODI0MTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI4NTQwM2ExNzknIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODUzMDFhNDI3OTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTIxMGE3OTQ2MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTcyOTY0MTgzMGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM0MTIw YTU3OTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE3NDU5NjgzMTAnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzkxNjgwYTc1MjQnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjIxMzQ4MGE3NTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMGE3NTM5Njg0MjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMmE3MTU5MzY4NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjIz ODA0YTc1MTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTYwMzJhNzk4NTQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjk4NTYzNDAxYTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDRhMTI3OTgzNTYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNTM2MDJhNzQ5ODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjAxYTczOTQ4MjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDNhNDc5MjgxNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODYyNTBhMzE3 OTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTc5ODYwMTUyMzQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODYwYTU3OTI0MTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDEyODM2MGE1NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMzQwYTI1Nzk4MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDE0MjNhNTc5ODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTI4NjBh NzM0MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGExMzI3NDU5ODYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMGE3NTQ5MTgzNjInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMyOTg2NDBhMTcnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNzUzOTgxMjY0MGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjIzMGExNDc1OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDgx MzI2MGE3OTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDNhNzIxOTU4NDYn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEzOTU4MjY0MGEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTU4NjAyM2E0NzEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTUxODYyMDNhNzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODAxNDUzNjJhNzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDA2NWEzMTI3OTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODAyNmE1NDM3 OTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODA2NGE3MjM5MTUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzAyNjRhNzkxNTgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMwNjJhNzk4NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNTMwNmExMjc5ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjRhNzkzODEyNTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGE5MTAz NDU2NzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTY3MjgxYTkzMDQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzIxOTA1NDY3OGEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQyODFhMzkwNTYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjQ4YTkwNjEzNTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjE0OTA2NTM3OGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODFh OTA2NzIzNDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE0YTM5MDY3NTgn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjkwNjM0MTc1OGEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTkwMjM2Nzg1NGEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNDM5MDI2Nzg1MWEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDFhNTkwNjI3ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTA2Nzg0MTJhNTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI5NTQwNjMx NzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzU0NjMyODFhOTAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDcxNTY4YTMyOTQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDc1NjhhMjE5MDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjE1MzQyOGE5MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDEyNzY1NDhhMzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjUzOGE5 NDIwNzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTA3NjI0ODVhMzEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjgzYTI1MTQ5MDcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQ2OGE1OTIwMTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjhhOTE0MzUwNzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOGEzOTI0NTEwNzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjg0 MjEzYTk1MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM1MDc2Mjg0YTkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUwNzYyMThhNDMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjkwMTUzNDc2OGEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjkwNTQxNzY4YTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNTMyNzQ2ODFhOTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzhhOTQwMjE1NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTMyNDZhOTAx NzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjNhNDkwMjcxODUnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzFhNDkwNzI4NTYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzg1MjZhOTM0MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODEyNTZhMzk0MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMzQxNWE5MDI3ODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE5MDc0 ODYzMjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDM2MjUxYTkwNzgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTQ1MzkwMTc4MjYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTU5NDAyMzc4NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTU5NDAxMjc4MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDc0ODM2MjFhNTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTky NDUzMTA3ODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzg2MWEzOTQ1MjAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjIxYTk1MzQwNzgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTUwNzQzMTI4NmEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzE4NmE0OTIzNTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnODQ2MjFhOTA1NzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTE0MDM1Mjc4NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQwNTc4NjNh MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzhhNTE2NDkzMjAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjUxNjQ5MDc4YTMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMTkwMjc4YTM2NDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjM4YTY1MTQ5MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDcxODNhNjI1NDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTkxNDMw NzgyYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU5MTMwNzQ4YTInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTY5NDUwMzcxMjgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTY5MjUwNDMxNzgnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMWE2OTM1MDI3NDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMTgzMmE2NDk1MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTU3 NDhhMjY5MDMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODM0YTI2MTkwNzUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDc4NDM1YTI2MTknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODVhMTM0NjkwNzInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzE4NWEzMjY5MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMDc0MTgzMjVhNjknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MTY5MDc0ODUyYTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMThhOTM1MjQ2 MDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGE5NTE2MzQwNzInIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjU0MDc4MmE5MzEnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzFhOTY1MDI3NDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnODNhMjk2MDQ1MTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjA1NzI0MzE4YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTYwMjUz MTc0OGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODI0MWE5MzYwNTcnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzEyODRhOTYwNTMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTIxMzc4YTk2NDAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTM2MDI3NTgxNGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNjEwNzUyMzhhNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzc1 OGE5NDYxMDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjAyNzg0MTVhMzkn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTg1YTk2MDI0NzMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE4YTU5NjQwNzMnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjY0MDczOGExNTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTYwMTc4NDMyYTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NjczYTkwMTI4NDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWE5MDgyMzY1 NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTkwODIxNjU3MzQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzYxNTdhOTQyMDgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDY1NzFhOTMwMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDAxMzg2NzI1YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzI1M2ExOTQwODYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzI1MWE5 MDg0MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTkxMDM4MjY3YTQnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjI3YTQ1MTkwMzgnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODYxN2E1Mjk0MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTI1OTA0MzgxNjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTA4MTQyMzY3YTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc0 YTU5MDg2MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE5NDUwMzg2N2En IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDM4MjQxNjdhOTUnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzIwMTg2N2E0OTUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnN2E0OTUzMjA4NjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMjQ4NjdhOTAxMzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDE1ODI2MzQ3YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzQwODE3NTZh OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE3NTI2YTkwMzgnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM0YTkyMDE4NzYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDIxMDg3NjUzYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNmE1OTQzMDgyNzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnYTU5MzEwNDg3NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzg3NDE2 MmE1OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDgxMjc2YTk0NTMnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTk1MDQ4NzYxMzInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTM5MjUwNDg3MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnYTE5NTMwODQyNzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzIxODQ3NmE5MDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTkz MDUyODc0MTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg1NzE0NmE5MzIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNmE0MTkzMDI4NTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUyNDY5MDgxMzcnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzcxMmE2NTk0MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnYTI2NTkwNDM4MTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzAxNDgyN2E2NTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTE5MDgyNzQz YTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE2NTM5MTA4MjcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODI3NGExNjU5MDMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDYxNTkwODIzN2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNjk1NDAxMjM4N2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDI4N2E2Mzk1MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjkxNTMy MDg3NGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTJhNjkwNTQzODcnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU4N2EzNjQ5MTInIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDg0NTdhMzI2MTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNjE5MDg1NzRhMzInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjVhMzY5MDE4NzQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTkw ODM3NDUyYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE2OTEwNDM4NzIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjkwNDg3NTFhMzYnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzkwNDg3MTI1YTYnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNzVhNjkwODQyMzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNzNhOTUyNjA4NDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDUwODcxMmE5NjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzQxYTk2MzUy MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODE3M2E5NDYyNTAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDE3YTk2MDM1ODInIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODcyNDMxYTk2MDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMDUxODIzN2E0OTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnN2E5MjQzNjA1ODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU4N2E5 MzY0MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTM2MDg0NTcxYTInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDgxNTc0YTk2MjMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjE2MDQ4NTczYTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMTczNDVhOTI2MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnODIzMTc1NGE5NjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDIz NDg3NWExOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWEzMTk2MDQ4NzIn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTk2MDg3YTUyMzQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjEwODI3YTUzNDknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMTU5NDYwMzg3YTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjQwODE3YTM1OTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MDQyMzE4N2E1OTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYxODc0M2Ey OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTkyNDA1MTM2ODcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzNhOTAyMTY0NTgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA2NTg3MWE5NDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnN2E5MTAyNDYzNTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnN2EzOTIwNjg0NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTQwNjg3 MjE1M2EnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMmE0NTkwNjgzNzEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDA2ODdhMTUyOTMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDYzODI3YTU5MTQnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjA2Mzg3YTUxOTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMDYxODdhMzU5MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzI0 YTk1MzA2MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTQ5MjUwMzY4MTcn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM2NzkyMDE4YTQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTY3OTAyMzhhMTQnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzY3MTQ5MDI4YTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNDE1NzkyMDgzYTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn YTYxNTM0NzkwMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnM2EyMTY1Nzk0 MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTA4NGE2Mzc1MjEnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzUzOTIwODQxYTYnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNzU5MDgxYTQ2MjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMjY3NTkzMDhhMTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnOTUyMDg0MzFhNjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGE2NzQz MjE5NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjM3OTAxNTQ4YTInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGE0MzYyNzkwMTUnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDUxOGE2NzQyOTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTIxMDg0NTNhNjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMjA4NDE1YTY3OTMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODUx YTM2Mjc5MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTI3NDUzNjkwOGEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTM0NjkwODJhMTcnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDhhNzM1NjE0OTInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTAyMzQ4YTc2MTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTUzNDA4YTcyMTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTUwODJhNDMxNzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjgzYTcxNjkw NTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjkxMDg0NTMyYTcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTA4NWEyNDE3NjMnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODUzYTQxNzY5MDInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNWE3NDYzMjkwODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNjkzNDA4NWE3MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTMwOGE0 MjE1NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDhhMzU3NjkxNDInIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzYyOTA0OGE1MzEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjIxMDg0YTc5NTMnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnMjgxYTQ3OTU2MzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOGE3NDE5NTYzMjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjU0 MTA4YTczOTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE5NDY1MjA4YTMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDU4YTcyMzQxOTYnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI3OTQ2MDMxNTgnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMjU4YTc5NjMxNDAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTYwODM0MjVhNzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn Mjk2MTA4NTRhNzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNWE3OTI0MTYw MzgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDg1YTc5MTI2MzAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTQ1NzM5MTYyMDgnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMDhhMzU3NDkyMTYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOGE1MzcxOTQyNjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMmE1NzE5MzY0MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTYwODJh Mzc0NTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTYxMDIzODRhNzUnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMThhNDc1OTYwMjMnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE5MDQ1NjgzMmEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNTY0MThhMjczOTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTc5MzQwMTUyNjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMWE3 MzI0OTA2NTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODFhMjM3NDkwNjUn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGE3OTA2ODE1MjMnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTA2ODM1NGE3MjknIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnOTA2NDIxODVhNzMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOGEyNDU3OTMwNjEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NzkxMDMyNjhhNTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjgyM2E3NTQ5 MDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI1NDE5MDY4YTcnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTkyMTQwNjhhMzcnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNTkxMDYyMzhhNDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTQ4M2EyNzk1MDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNTA2MjgzMWE0NzknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTQzNmE3 MjkwODEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU2NDJhNzE5MDgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTAyMTg1MzY0YTcnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDgzMjU2MWE0NzknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnODU2YTc0OTIxMzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnM2E3OTQwODU2MTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnODY1 MTNhMjQ3OTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDkwODE2NTJhNzMn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE0OTMwODY1MmEnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjUxYTc5MDM0ODInIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTQ1NzI5MTA4MzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMTc0MzkyMDg2YTUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn NDg2YTE1NzkwMjMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNGEzNTE3OTA4 NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUzNzkwMjgxNjQnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTMyMDgxNjRhNTcnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnODY0YTczNTkxMjAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnMTY0YTc1OTMwMjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzkzNTAyNDE4NmEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzgxNjRh NzI5NTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzM5MDU4MTI0NmEnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI3OTMwMTU4NDYnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE0OTA1Mjg2M2EnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnOTEyNDA1ODM2YTcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnMzU2NzEwOGE5MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjk0 NTYzNzEwOGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzIwODMxYTk1NjQn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTEzOTU2NzI0MDgnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTY1NzA0MjM4MWEnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnMzg0MmExOTY1NzAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnOTM2NTcwODIxYTQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzE4MmE5Njc1MDQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTE5NjM3NTAy ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMThhOTQ2NzUyMzAnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU4MWE5NjI3MDQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM5MTY3MDU0OGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNzAzMTg0NWE5NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnMDg1MjMxYTk0NjcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzAyODUz YTkxNDYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzI0NzA4NWE5MTYnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTEyNjczMDQ4NWEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU5MjY3MDgzMWEnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnODNhNTQ5NjcyMDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnOTI2NzEwNDhhMzUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTk2 MjcwMTgzNGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjM5NzU2NDAxOGEn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzIxNzU2MDQ4YTknIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjA4YTI5NDczMTUnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnNDA4MjNhOTcxNjUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnMjk3NjUwMzhhNDEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn OTQzNzY1MDgyYTEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDU4MmE5Mzc2 MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzA1OGE5NzEyNDYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNjIwMTUzOGE5NzQnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnNDAyNTEzOGE5NzYnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnOTcxNjMwODI1NGEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzYwNDM4NWExOTInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTUyOTM0 MTc2MDgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNzE0MzI2MDhhNTknIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTk3MjE2NDMwOGEnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNDgyYTM1OTc2MTAnIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNDYwOGE5NTcyMzEnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnYTk1NzYyNDMwMTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMDMx ODRhOTU3NjInIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOGExMjQ5NTM3NjAn IDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYzODFhMjk3MDQnIDsKU0VMRUNU ICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnNTYyODRhMzkxNzAnIDsKU0VMRUNUICogRlJPTSBk aWN0IFdIRVJFIHdvcmQgPSAnYTk3MDUxMzI2ODQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJF IHdvcmQgPSAnNjE4MmE5NDM3MDUnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAn MzAxNTY4YTI5NDcnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTc0MDYyNTM4 YTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMzU4MWE5NzIwNDYnIDsKU0VM RUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnOTcwNDY1MTgyM2EnIDsKU0VMRUNUICogRlJP TSBkaWN0IFdIRVJFIHdvcmQgPSAnYTI5MTcwNDY1ODMnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdI RVJFIHdvcmQgPSAnNDM1YTk3MDE2MjgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQg PSAnNzAyNjgzNTQxYTknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTM1OTcw MTY4MjQnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnYTkzMTI1NDcwNjgnIDsK U0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTY0OGE5NTcyMzAnIDsKU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMTM1NzA2ODQyYTknIDsKU0VMRUNUICogRlJPTSBkaWN0 IFdIRVJFIHdvcmQgPSAnNGEyOTM3NTA2MTgnIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdv cmQgPSAnNzAzMjgxNTZhNDknIDsKU0VMRUNUICogRlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnMjcx MDM4NTZhOTQnIDsK ------=_Part_119065_14303673.1220619938624 Content-Type: text/x-c++src; name=genQuery.cpp Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkqtl5ue1 Content-Disposition: attachment; filename=genQuery.cpp I2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxjc3RkbGliPgp1 c2luZyBuYW1lc3BhY2Ugc3RkOwpib29sIGlzX3NlbGVjdGVkKGRvdWJsZSByYXRlKXsKCSByZXR1 cm4gcmFuZCgpIDwgIFJBTkRfTUFYICogcmF0ZSAtMTsKfQppbnQgbWFpbigpewoJb2ZzdHJlYW0J cXVlcnkoInF1ZXJ5LnNxbCIpOwoJaWZzdHJlYW0gCWRpY3QoIi90bXAvd29yZHMiKTsKCXN0cmlu ZwkJd29yZHM7Cgljb25zdCBpbnQJY250ID0gMjAwMDsKCWNvbnN0IGludAl0b3RhbCA9IDM5OTE2 ODAwOwoJZG91YmxlCQlyYXRlID0gKGRvdWJsZSljbnQvKGRvdWJsZSl0b3RhbDsKCXNyYW5kKHRp bWUoTlVMTCkpOwoJZm9yKGludCBpPTAgOyBpPGNudCA7IGkrKyl7CgkJd2hpbGUoIWlzX3NlbGVj dGVkKHJhdGUpICl7CgkJCWRpY3QgPj4gd29yZHMgOwoJCX0KCQlxdWVyeSA8PCAiU0VMRUNUICog RlJPTSBkaWN0IFdIRVJFIHdvcmQgPSAnIiA8PCB3b3JkcyA8PCInIDsiPDxlbmRsOwoJfQp9CgoK ------=_Part_119065_14303673.1220619938624-- From badalex@gmail.com Fri Sep 5 16:12:13 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id E3D7964FF27 for ; Fri, 5 Sep 2008 13:12:13 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 61168-07 for ; Fri, 5 Sep 2008 13:12:04 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from gv-out-0910.google.com (gv-out-0910.google.com [216.239.58.191]) by postgresql.org (Postfix) with ESMTP id 4922D64FCEB for ; Fri, 5 Sep 2008 13:12:04 -0300 (ADT) Received: by gv-out-0910.google.com with SMTP id i36so42714gve.7 for ; Fri, 05 Sep 2008 09:12:02 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=yvXWmx7qfGiPR/+fcVLObgU5vpqksEyqKyjwLSYam0c=; b=A03MJI+l1GHRA5BJscTrin+vxprFTxfZwPWy/654ZPJiHXdeC8jxsgJ2n+PirOwDSS MNSsF1rWQTaX1qs0ddXvOYae/mdGTVAYA1XCRCW10Nr/Eng/u8Q+eOriDv5LDApqq/WS exDS2VEQ7HQeG4NIBhCA+kxVgroKmJB1Vi6Wk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=DgaI+1KuUWa99OgVsvdu+m9lxGjC9Kxw8bki8m7moNlFGyGHipQtMKkpucqo5mxhIE cUjtZZBgxcliSRB0VanGqxo9RsGqfR4Cf9OeTSwdbOJn6Pm+u8ob4Y7FVUO1nndMhGh0 YASQ5WUmmSqv6vVElWD35jWaKrSMrsjKpnDd8= Received: by 10.187.183.15 with SMTP id k15mr2570110fap.86.1220631121922; Fri, 05 Sep 2008 09:12:01 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Fri, 5 Sep 2008 09:12:01 -0700 (PDT) Message-ID: <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> Date: Fri, 5 Sep 2008 10:12:01 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <48BFDA8D.3080506@sun.com> <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/55 X-Sequence-Number: 7070 On Thu, Sep 4, 2008 at 9:48 PM, Alex Hunsaker wrote: > (obviously on a 64 bit machine) > int main(void) > { > unsigned long y = 0; > unsigned cnt = 0; > > printf("insert into test_hash (num) values "); > > //while(cnt != LONG_MAX/UINT_MAX) > while(cnt < 10000000) > { > y += UINT_MAX; > > printf("(%ld), ", y); > > cnt++; > } > > printf("(0);\n"); > > } Argh sorry I must have been smoking something yesterday thats supposed to be y+= UINT_MAX + 1 so the benchmarking I did was worthless... running again with the right values.... From badalex@gmail.com Fri Sep 5 20:21:41 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id D9D9165005C for ; Fri, 5 Sep 2008 17:21:41 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 43447-02 for ; Fri, 5 Sep 2008 17:21:39 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.184]) by postgresql.org (Postfix) with ESMTP id 4E6F564FFF4 for ; Fri, 5 Sep 2008 17:21:39 -0300 (ADT) Received: by nf-out-0910.google.com with SMTP id c7so187803nfi.23 for ; Fri, 05 Sep 2008 13:21:37 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=rD77f1WsIY0F3qrrsaXjZ5FM7Ao6YJEe9eHW3+VDlCU=; b=PAMG5Ahau00BGASdF2tZtP3Qdqqoi7ZI+aQ1VgH2AyVYrmQ/vYioIJSOxylY1cGgH4 6AHu/337zi3w000BXbY/HUIpaaSmgyW+mCFnGZxkgkEUbrGHufJyZfLKMt2cbfSePxMx BdykHMdTrjSbiy3LSCBf1O++pyAqibS66p74s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=dbghcDbrAquMCmQmQB2A3aDaJP2OwFrMFnGcQX+YSRX8AiDCbe3JyVSuv22T1o0YBP f09Gy9HXvU93oPDPYAvyJTtb1IKYwt/Hiam/yYonBR5paYb3ek0LPvp7J5VCSY2m3EeF aDw7kM2kA89ErsuocOj8mE/Dmd4qSkB/D2JWQ= Received: by 10.187.231.1 with SMTP id i1mr1009621far.18.1220646096894; Fri, 05 Sep 2008 13:21:36 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Fri, 5 Sep 2008 13:21:36 -0700 (PDT) Message-ID: <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> Date: Fri, 5 Sep 2008 14:21:36 -0600 From: "Alex Hunsaker" To: "Xiao Meng" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" , "Tom Lane" In-Reply-To: <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/63 X-Sequence-Number: 7078 Ok now that I made it so it actually *test* collisions, with the patch it always returns all rows that matched the hashed "key". For example (non lobotomized inthash8, I just brute forced some collisions for 0 so that anyone can try this) create table test_hash (num int8); insert into test_hash (num) values (0), (1805671691), (3294821164), (4294967297); create index test_hash_num_idx on test_hash using hash (num); select * from test_hash where num = 0; num ------------ 0 1805671691 3294821164 4294967297 set enable_bitmapscan to off; select * from test_hash where num = 0; num ----- 0 CVS HEAD, 8_3_STABLE obviously work if I force the index scan From badalex@gmail.com Sat Sep 6 05:49:13 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id A2FF164FD2C for ; Sat, 6 Sep 2008 02:49:13 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 41785-05 for ; Sat, 6 Sep 2008 02:49:07 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fk-out-0910.google.com (fk-out-0910.google.com [209.85.128.185]) by postgresql.org (Postfix) with ESMTP id 3FC0164FD0F for ; Sat, 6 Sep 2008 02:49:06 -0300 (ADT) Received: by fk-out-0910.google.com with SMTP id e30so526208fke.3 for ; Fri, 05 Sep 2008 22:49:05 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=xUf1jWFtiGsWxXgtk8HFo2z0tEydYrtOKpPAcKZUTtI=; b=Ild4Vieocz874iv5CcYJsCsbIOI+gyX3ZmGcYdLM4AnUnNkwFmBcvBL1KPzv1vbyWx wF2OsLd8e8HUF1wKZZb9+qCWASrLXVtK8FwNZVYSGXcU2J91ceNGdwfSUiIp4HZUodd3 0x5vLlIu9WDyu49rEIvx2GlbtWYLAFW0RZgC4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=u/cHcFpXmZI2o76pe01mfJwAddtN1JkIRbCxVjS5SpFHsCVyFfkLD1DAR0c74O+7KM oWsNVZVRC6xRalgK7BWfjsTRKirsfir3lNJPFSNUsvya089rNzof7yjVB1JFgll6hUZq 5FNAirMerm+g38t5t1P5h2KDXRbKaKSMbb6ig= Received: by 10.187.251.11 with SMTP id d11mr2654472fas.31.1220680145524; Fri, 05 Sep 2008 22:49:05 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Fri, 5 Sep 2008 22:49:05 -0700 (PDT) Message-ID: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> Date: Fri, 5 Sep 2008 23:49:05 -0600 From: "Alex Hunsaker" To: "Xiao Meng" Subject: Re: hash index improving v3 Cc: "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" , "Tom Lane" In-Reply-To: <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/66 X-Sequence-Number: 7081 ] On Fri, Sep 5, 2008 at 2:21 PM, Alex Hunsaker wrote: > Ok now that I made it so it actually *test* collisions, with the patch > it always returns all rows that matched the hashed "key". And here is the fix, we just forget to set the recheck flag for bitmap scans. *** a/src/backend/access/hash/hash.c --- b/src/backend/access/hash/hash.c *************** *** 317,323 **** hashgetbitmap(PG_FUNCTION_ARGS) /* Save tuple ID, and continue scanning */ if (add_tuple) { ! tbm_add_tuples(tbm, &scan->xs_ctup.t_self, 1, false); ntids++; } --- 317,323 ---- /* Save tuple ID, and continue scanning */ if (add_tuple) { ! tbm_add_tuples(tbm, &scan->xs_ctup.t_self, 1, true); ntids++; } From tgl@sss.pgh.pa.us Sat Sep 6 18:14:37 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id AE6FC64FCBA for ; Sat, 6 Sep 2008 15:14:37 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 20952-02 for ; Sat, 6 Sep 2008 15:14:34 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id A7A2364FCBD for ; Sat, 6 Sep 2008 15:14:32 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m86IEQJT020928; Sat, 6 Sep 2008 14:14:26 -0400 (EDT) To: "Alex Hunsaker" cc: "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> References: <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> Comments: In-reply-to "Alex Hunsaker" message dated "Fri, 05 Sep 2008 23:49:05 -0600" Date: Sat, 06 Sep 2008 14:14:26 -0400 Message-ID: <20927.1220724866@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/67 X-Sequence-Number: 7082 "Alex Hunsaker" writes: > - tbm_add_tuples(tbm, &scan->xs_ctup.t_self, 1, false); > + tbm_add_tuples(tbm, &scan->xs_ctup.t_self, 1, true); Hah, I bet that explains Jonah's complaint that recheck didn't seem to be happening in his tests. Nice catch. regards, tom lane From tgl@sss.pgh.pa.us Sat Sep 6 19:09:46 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 9BAB664FCF2 for ; Sat, 6 Sep 2008 16:09:46 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 33434-10 for ; Sat, 6 Sep 2008 16:09:44 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 9600764FCCC for ; Sat, 6 Sep 2008 16:09:43 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m86J9cIJ022575; Sat, 6 Sep 2008 15:09:39 -0400 (EDT) To: "Alex Hunsaker" cc: "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> References: <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> Comments: In-reply-to "Alex Hunsaker" message dated "Fri, 05 Sep 2008 23:49:05 -0600" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <22559.1220728135.0@sss.pgh.pa.us> Date: Sat, 06 Sep 2008 15:09:38 -0400 Message-ID: <22574.1220728178@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/68 X-Sequence-Number: 7083 ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <22559.1220728135.1@sss.pgh.pa.us> "Alex Hunsaker" writes: > On Fri, Sep 5, 2008 at 2:21 PM, Alex Hunsaker wrote: >> Ok now that I made it so it actually *test* collisions, with the patch >> it always returns all rows that matched the hashed "key". > And here is the fix, we just forget to set the recheck flag for bitmap scans. For the convenience of anyone intending to test, here is an updated patch against CVS HEAD that incorporates Alex's fix. regards, tom lane ------- =_aaaaaaaaaa0 Content-Type: application/octet-stream Content-ID: <22559.1220728135.2@sss.pgh.pa.us> Content-Description: hash-v5.patch.gz Content-Transfer-Encoding: base64 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 ------- =_aaaaaaaaaa0-- From badalex@gmail.com Sun Sep 7 02:23:11 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 0EB0964FCCC for ; Sat, 6 Sep 2008 23:23:11 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 17930-04 for ; Sat, 6 Sep 2008 23:23:06 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.156]) by postgresql.org (Postfix) with ESMTP id 1589464FCC2 for ; Sat, 6 Sep 2008 23:23:07 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so1156400fgg.23 for ; Sat, 06 Sep 2008 19:23:06 -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:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=shcx59bajTRDmDuo/tWkP85WyuwTv1XRo6+itW9lSgs=; b=DojLiWSEk1wFtCbJ9S8QCFTqt/ycHp4nHTlnVXfzrrMhcQWLh84u5UqQmz/UTq3FDX xHTXnBMacHOODBv2aXkBKxp+4hNXh9rsfrpOwEeasHZirUPWvcqZIGPVpkmN6+rt+YkM 9fcfkvr9KuPA4dUSB5PEXyEtuZz92+XKK8mhg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=O3kRZAnbSZwa+6k3P9XUcNiUJAsw9pDfYZ5PaDmHfnm2q8fprK5SwwbuQ/3YzasN3L R+7hL1878yriB7ND7/p6u79FQWFXv4Ad5GrnuWFoHhBLYM7Ru1r8WBn/xeVGH5tvTwvs owGejSK2prcKoEeopLTUkP9dFyzdff6GQihAc= Received: by 10.187.198.4 with SMTP id a4mr2737158faq.0.1220754186017; Sat, 06 Sep 2008 19:23:06 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Sat, 6 Sep 2008 19:23:05 -0700 (PDT) Message-ID: <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> Date: Sat, 6 Sep 2008 20:23:05 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <22574.1220728178@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_55376_30888050.1220754186016" References: <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/79 X-Sequence-Number: 7094 ------=_Part_55376_30888050.1220754186016 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Sat, Sep 6, 2008 at 1:09 PM, Tom Lane wrote: >For the convenience of anyone intending to test, here is an updated >patch against CVS HEAD that incorporates Alex's fix. Here are the results for a table containing 1 million entries that will generate hash collisions. It paints a bad picture for the patch but then again im not sure how relevant the issue is. For example yesterday I imported a table with 10 million collisions and the create index is still running (now at about ~18 hours). Maybe we should warn if there are lots of collisions when creating the index and suggest you use a btree? Anyway here are the results. ./pgbench -c1 -n -t10 -f bench_createindex.sql cvs head: tps = 0.002169 v5 : tps = 0.002196 pgbench -c1 -n -t1000 -f bench_bitmap.sql cvs head: tps = 24.011871 v5: tps = 2.543123 pgbench -c1 -n -t1000 -f bench_index.sql cvs head: tps = 51.614502 v5: tps = 3.205542 pgbench -c1 -n -t1000 -f bench_seqscan.sql cvs head: tps = 8.553318 v5: tps = 9.836091 Table created via: create table test_hash (num int8); ./hash | psql -c 'copy test_hash from stdin;' ------=_Part_55376_30888050.1220754186016 Content-Type: application/octet-stream; name=bench_create.sql Content-Transfer-Encoding: base64 X-Attachment-Id: f_fksxw96b1 Content-Disposition: attachment; filename=bench_create.sql Y3JlYXRlIGluZGV4IHRlc3RfaGFzaF9udW1faGFzaF9pZHggb24gdGVzdF9oYXNoIHVzaW5nIGhh c2ggKG51bSk7CmRyb3AgaW5kZXggdGVzdF9oYXNoX251bV9oYXNoX2lkeDsK ------=_Part_55376_30888050.1220754186016 Content-Type: application/octet-stream; name=bench_index.sql Content-Transfer-Encoding: base64 X-Attachment-Id: f_fksxx1b62 Content-Disposition: attachment; filename=bench_index.sql c2V0IGVuYWJsZV9zZXFzY2FuIHRvIG9mZjsKc2V0IGVuYWJsZV9iaXRtYXBzY2FuIHRvIG9mZjsK U0VMRUNUIGNvdW50KDEpIGZyb20gdGVzdF9oYXNoIHdoZXJlIG51bSA9IDA7Cg== ------=_Part_55376_30888050.1220754186016 Content-Type: application/octet-stream; name=bench_seqscan.sql Content-Transfer-Encoding: base64 X-Attachment-Id: f_fksxx45i3 Content-Disposition: attachment; filename=bench_seqscan.sql c2V0IGVuYWJsZV9iaXRtYXBzY2FuIHRvIG9mZjsKc2V0IGVuYWJsZV9pbmRleHNjYW4gdG8gb2Zm OwpTRUxFQ1QgY291bnQoMSkgZnJvbSB0ZXN0X2hhc2ggd2hlcmUgbnVtID0gMDsK ------=_Part_55376_30888050.1220754186016 Content-Type: application/octet-stream; name=int8collide.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fksxx8hm4 Content-Disposition: attachment; filename=int8collide.patch KioqIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGZ1bmMuYwotLS0gYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNoZnVuYy5jCioqKioqKioqKioqKioqKgoqKiogNjIsNzAgKioqKiBo YXNoaW50OChQR19GVU5DVElPTl9BUkdTKQogICNpZm5kZWYgSU5UNjRfSVNfQlVTVEVECiAgCWlu dDY0CQl2YWwgPSBQR19HRVRBUkdfSU5UNjQoMCk7CiAgCXVpbnQzMgkJbG9oYWxmID0gKHVpbnQz MikgdmFsOwotIAl1aW50MzIJCWhpaGFsZiA9ICh1aW50MzIpICh2YWwgPj4gMzIpOwotIAotIAls b2hhbGYgXj0gKHZhbCA+PSAwKSA/IGhpaGFsZiA6IH5oaWhhbGY7CiAgCiAgCXJldHVybiBoYXNo X3VpbnQzMihsb2hhbGYpOwogICNlbHNlCi0tLSA2Miw2NyAtLS0tCg== ------=_Part_55376_30888050.1220754186016 Content-Type: text/x-csrc; name=hash.c Content-Transfer-Encoding: base64 X-Attachment-Id: f_fksy0epq5 Content-Disposition: attachment; filename=hash.c I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGxpbWl0cy5o PgoKaW50IG1haW4odm9pZCkKewoJdW5zaWduZWQgbG9uZyB5ID0gMDsKCXVuc2lnbmVkIGNudCA9 IDA7CgoJd2hpbGUoY250IDwgMTAwMDAwMCkKCXsKCQl5ICs9IFVJTlRfTUFYOwoJCXkgKz0gMTsK CgkJcHJpbnRmKCIlbGRcbiIsIHkpOwoKCQljbnQrKzsKCX0KfQo= ------=_Part_55376_30888050.1220754186016-- From badalex@gmail.com Sun Sep 7 02:24:38 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 5998164FCCC for ; Sat, 6 Sep 2008 23:24:38 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 17553-09 for ; Sat, 6 Sep 2008 23:24:34 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.154]) by postgresql.org (Postfix) with ESMTP id A603964FCC2 for ; Sat, 6 Sep 2008 23:24:35 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so1156602fgg.23 for ; Sat, 06 Sep 2008 19:24:33 -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:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=Q2SwkPfKhS/b9Of36EbdVgBPVYMXkMTzKXE+7bsmWMw=; b=EDakdxqcZYbP5PSx0rx/7GuXM3kKvW0k3whNY7Hv+9hV5+r7SmaNNX4EbAGyL6rTua fUr4e6ePXNSZidaZe0e3ldLdENkDMppLpVFaX6JZO891mB1OfXFzEj4cK1zQQEk2zdxs 9fdZ/Kfysqd3gvi/8WLvQ16+LJA7CuEUvhlzU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=ATEO7wHrzHTb/igtD4s+Qd5fi5hDAGR4HztZmke1M7vc+AtIZZzOhqoEx0UCbFcJow jhTfOuozxQ776So6toioP/oVlzYDLhL6iOx1JFfgF0IPKpESFeusbBEd3gN7oZ9b/yNy r2PAMMmt/VrndZ0evW/FYRaDQm7KD+sijbuGU= Received: by 10.187.158.2 with SMTP id k2mr2725070fao.15.1220754273625; Sat, 06 Sep 2008 19:24:33 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Sat, 6 Sep 2008 19:24:33 -0700 (PDT) Message-ID: <34d269d40809061924x1430c803n3b93d721a32f8dd9@mail.gmail.com> Date: Sat, 6 Sep 2008 20:24:33 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_55381_27202064.1220754273625" References: <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/80 X-Sequence-Number: 7095 ------=_Part_55381_27202064.1220754273625 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline 2008/9/6 Alex Hunsaker : > pgbench -c1 -n -t1000 -f bench_bitmap.sql > cvs head: tps = 24.011871 > v5: tps = 2.543123 oops forgot to attach bench_bitmap.sql ------=_Part_55381_27202064.1220754273625 Content-Type: application/octet-stream; name=bench_bitmap.sql Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkt1jzwl5 Content-Disposition: attachment; filename=bench_bitmap.sql c2V0IGVuYWJsZV9zZXFzY2FuIHRvIG9mZjsKc2V0IGVuYWJsZV9pbmRleHNjYW4gdG8gb2ZmOwpT RUxFQ1QgY291bnQoMSkgZnJvbSB0ZXN0X2hhc2ggd2hlcmUgbnVtIGluICg0MjkxNTQxNTEyNTEy MTU1NTEzLCA0Mjk0OTY3Mjk2LCAwKTsK ------=_Part_55381_27202064.1220754273625-- From Zdenek.Kotala@Sun.COM Mon Sep 8 09:02:26 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 2130864FF6F for ; Mon, 8 Sep 2008 06:02:26 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 76959-07 for ; Mon, 8 Sep 2008 06:02:19 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from gmp-eb-inf-1.sun.com (gmp-eb-inf-1.sun.com [192.18.6.21]) by postgresql.org (Postfix) with ESMTP id 1D9E564FD16 for ; Mon, 8 Sep 2008 06:02:18 -0300 (ADT) Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12]) by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m8892H6Y027403 for ; Mon, 8 Sep 2008 09:02:17 GMT Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K6V00901BA1M900@fe-emea-10.sun.com> (original mail from Zdenek.Kotala@Sun.COM) for pgsql-patches@postgresql.org; Mon, 08 Sep 2008 10:02:17 +0100 (BST) Received: from [192.168.1.101] ([89.102.161.149]) by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K6V00BP4D3BY280@fe-emea-10.sun.com>; Mon, 08 Sep 2008 10:02:00 +0100 (BST) Date: Mon, 08 Sep 2008 10:58:09 +0200 From: Zdenek Kotala Subject: Re: hash index improving v3 In-reply-to: <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> To: Alex Hunsaker Cc: Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" , Tom Lane Message-id: <48C4E921.20606@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=ISO-8859-1 Content-transfer-encoding: 7BIT References: <29987.1220560114@sss.pgh.pa.us> <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> User-Agent: Thunderbird 2.0.0.16 (X11/20080811) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200809/90 X-Sequence-Number: 7105 It is nice test case. It should be part of hash index regression test. Zdenek Alex Hunsaker napsal(a): > Ok now that I made it so it actually *test* collisions, with the patch > it always returns all rows that matched the hashed "key". For example > (non lobotomized inthash8, I just brute forced some collisions for 0 > so that anyone can try this) > > create table test_hash (num int8); > insert into test_hash (num) values (0), (1805671691), (3294821164), > (4294967297); > create index test_hash_num_idx on test_hash using hash (num); > select * from test_hash where num = 0; > num > ------------ > 0 > 1805671691 > 3294821164 > 4294967297 > > set enable_bitmapscan to off; > > select * from test_hash where num = 0; > num > ----- > 0 > > CVS HEAD, 8_3_STABLE obviously work if I force the index scan -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql From Zdenek.Kotala@Sun.COM Mon Sep 8 14:24:12 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id CEEFD64FCEC for ; Mon, 8 Sep 2008 11:24:12 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 31392-03 for ; Mon, 8 Sep 2008 11:24:09 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from gmp-eb-inf-1.sun.com (gmp-eb-inf-1.sun.com [192.18.6.21]) by postgresql.org (Postfix) with ESMTP id 7FC2C64FCE6 for ; Mon, 8 Sep 2008 11:24:09 -0300 (ADT) Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11]) by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m88EO65A021566 for ; Mon, 8 Sep 2008 14:24:07 GMT Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K6V00D01RS4NJ00@fe-emea-10.sun.com> (original mail from Zdenek.Kotala@Sun.COM) for pgsql-patches@postgresql.org; Mon, 08 Sep 2008 15:24:06 +0100 (BST) Received: from [192.168.1.101] ([89.102.161.149]) by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K6V007OAS05M5F0@fe-emea-10.sun.com>; Mon, 08 Sep 2008 15:24:06 +0100 (BST) Date: Mon, 08 Sep 2008 16:20:15 +0200 From: Zdenek Kotala Subject: Re: hash index improving v3 In-reply-to: <22574.1220728178@sss.pgh.pa.us> To: Tom Lane Cc: Alex Hunsaker , Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Message-id: <48C5349F.4080300@sun.com> MIME-version: 1.0 Content-type: multipart/mixed; boundary="Boundary_(ID_m24wr7fv51+dn/euXc1KVw)" References: <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> User-Agent: Thunderbird 2.0.0.16 (X11/20080811) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200809/91 X-Sequence-Number: 7106 This is a multi-part message in MIME format. --Boundary_(ID_m24wr7fv51+dn/euXc1KVw) Content-type: text/plain; format=flowed; charset=UTF-8 Content-transfer-encoding: 7BIT Tom Lane napsal(a): > "Alex Hunsaker" writes: >> On Fri, Sep 5, 2008 at 2:21 PM, Alex Hunsaker wrote: >>> Ok now that I made it so it actually *test* collisions, with the patch >>> it always returns all rows that matched the hashed "key". > >> And here is the fix, we just forget to set the recheck flag for bitmap scans. > > For the convenience of anyone intending to test, here is an updated > patch against CVS HEAD that incorporates Alex's fix. > Tom, I attach cleanup patch which we discussed last commit fest. It introduce new macros HashGetMetaPage and HashGetBitmap and of course, it break backward on disk format compatibility which we will break it anyway when Xiao's patch will be committed. Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql --Boundary_(ID_m24wr7fv51+dn/euXc1KVw) Content-type: text/x-diff; name=hash_cleanup.patch Content-transfer-encoding: 8BIT Content-disposition: inline; filename=hash_cleanup.patch běžné podadresáře: pgsql_hash.be486df40421/src a pgsql_hash/src běžné podadresáře: pgsql_hash.be486df40421/src/backend a pgsql_hash/src/backend běžné podadresáře: pgsql_hash.be486df40421/src/include a pgsql_hash/src/include běžné podadresáře: pgsql_hash.be486df40421/src/backend/access a pgsql_hash/src/backend/access běžné podadresáře: pgsql_hash.be486df40421/src/backend/access/hash a pgsql_hash/src/backend/access/hash diff -rc pgsql_hash.be486df40421/src/backend/access/hash/hash.c pgsql_hash/src/backend/access/hash/hash.c *** pgsql_hash.be486df40421/src/backend/access/hash/hash.c po zář 8 16:14:00 2008 --- pgsql_hash/src/backend/access/hash/hash.c po zář 8 16:14:00 2008 *************** *** 527,533 **** * each bucket. */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); orig_maxbucket = metap->hashm_maxbucket; orig_ntuples = metap->hashm_ntuples; memcpy(&local_metapage, metap, sizeof(local_metapage)); --- 527,533 ---- * each bucket. */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); orig_maxbucket = metap->hashm_maxbucket; orig_ntuples = metap->hashm_ntuples; memcpy(&local_metapage, metap, sizeof(local_metapage)); *************** *** 629,635 **** /* Write-lock metapage and check for split since we started */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_WRITE, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); if (cur_maxbucket != metap->hashm_maxbucket) { --- 629,635 ---- /* Write-lock metapage and check for split since we started */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_WRITE, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); if (cur_maxbucket != metap->hashm_maxbucket) { diff -rc pgsql_hash.be486df40421/src/backend/access/hash/hashinsert.c pgsql_hash/src/backend/access/hash/hashinsert.c *** pgsql_hash.be486df40421/src/backend/access/hash/hashinsert.c po zář 8 16:14:00 2008 --- pgsql_hash/src/backend/access/hash/hashinsert.c po zář 8 16:14:00 2008 *************** *** 69,75 **** /* Read the metapage */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); /* * Check whether the item can fit on a hash page at all. (Eventually, we --- 69,75 ---- /* Read the metapage */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); /* * Check whether the item can fit on a hash page at all. (Eventually, we diff -rc pgsql_hash.be486df40421/src/backend/access/hash/hashovfl.c pgsql_hash/src/backend/access/hash/hashovfl.c *** pgsql_hash.be486df40421/src/backend/access/hash/hashovfl.c po zář 8 16:14:00 2008 --- pgsql_hash/src/backend/access/hash/hashovfl.c po zář 8 16:14:00 2008 *************** *** 187,193 **** _hash_chgbufaccess(rel, metabuf, HASH_NOLOCK, HASH_WRITE); _hash_checkpage(rel, metabuf, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); /* start search at hashm_firstfree */ orig_firstfree = metap->hashm_firstfree; --- 187,193 ---- _hash_chgbufaccess(rel, metabuf, HASH_NOLOCK, HASH_WRITE); _hash_checkpage(rel, metabuf, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); /* start search at hashm_firstfree */ orig_firstfree = metap->hashm_firstfree; *************** *** 450,456 **** /* Read the metapage so we can determine which bitmap page to use */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); /* Identify which bit to set */ ovflbitno = blkno_to_bitno(metap, ovflblkno); --- 450,456 ---- /* Read the metapage so we can determine which bitmap page to use */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); /* Identify which bit to set */ ovflbitno = blkno_to_bitno(metap, ovflblkno); diff -rc pgsql_hash.be486df40421/src/backend/access/hash/hashpage.c pgsql_hash/src/backend/access/hash/hashpage.c *** pgsql_hash.be486df40421/src/backend/access/hash/hashpage.c po zář 8 16:14:00 2008 --- pgsql_hash/src/backend/access/hash/hashpage.c po zář 8 16:14:00 2008 *************** *** 395,401 **** pageopaque->hasho_flag = LH_META_PAGE; pageopaque->hasho_page_id = HASHO_PAGE_ID; ! metap = (HashMetaPage) pg; metap->hashm_magic = HASH_MAGIC; metap->hashm_version = HASH_VERSION; --- 395,401 ---- pageopaque->hasho_flag = LH_META_PAGE; pageopaque->hasho_page_id = HASHO_PAGE_ID; ! metap = HashPageGetMeta(pg); metap->hashm_magic = HASH_MAGIC; metap->hashm_version = HASH_VERSION; *************** *** 402,414 **** metap->hashm_ntuples = 0; metap->hashm_nmaps = 0; metap->hashm_ffactor = ffactor; ! metap->hashm_bsize = BufferGetPageSize(metabuf); /* find largest bitmap array size that will fit in page size */ for (i = _hash_log2(metap->hashm_bsize); i > 0; --i) { ! if ((1 << i) <= (metap->hashm_bsize - ! (MAXALIGN(sizeof(PageHeaderData)) + ! MAXALIGN(sizeof(HashPageOpaqueData))))) break; } Assert(i > 0); --- 402,412 ---- metap->hashm_ntuples = 0; metap->hashm_nmaps = 0; metap->hashm_ffactor = ffactor; ! metap->hashm_bsize = HashGetMaxBitmapSize(pg); /* find largest bitmap array size that will fit in page size */ for (i = _hash_log2(metap->hashm_bsize); i > 0; --i) { ! if ((1 << i) <= metap->hashm_bsize) break; } Assert(i > 0); *************** *** 532,538 **** _hash_chgbufaccess(rel, metabuf, HASH_NOLOCK, HASH_WRITE); _hash_checkpage(rel, metabuf, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); /* * Check to see if split is still needed; someone else might have already --- 530,536 ---- _hash_chgbufaccess(rel, metabuf, HASH_NOLOCK, HASH_WRITE); _hash_checkpage(rel, metabuf, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); /* * Check to see if split is still needed; someone else might have already diff -rc pgsql_hash.be486df40421/src/backend/access/hash/hashsearch.c pgsql_hash/src/backend/access/hash/hashsearch.c *** pgsql_hash.be486df40421/src/backend/access/hash/hashsearch.c po zář 8 16:14:00 2008 --- pgsql_hash/src/backend/access/hash/hashsearch.c po zář 8 16:14:00 2008 *************** *** 186,192 **** /* Read the metapage */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = (HashMetaPage) BufferGetPage(metabuf); /* * Compute the target bucket number, and convert to block number. --- 186,192 ---- /* Read the metapage */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); ! metap = HashPageGetMeta(BufferGetPage(metabuf)); /* * Compute the target bucket number, and convert to block number. diff -rc pgsql_hash.be486df40421/src/backend/access/hash/hashutil.c pgsql_hash/src/backend/access/hash/hashutil.c *** pgsql_hash.be486df40421/src/backend/access/hash/hashutil.c po zář 8 16:14:00 2008 --- pgsql_hash/src/backend/access/hash/hashutil.c po zář 8 16:14:00 2008 *************** *** 190,196 **** */ if (flags == LH_META_PAGE) { ! HashMetaPage metap = (HashMetaPage) page; if (metap->hashm_magic != HASH_MAGIC) ereport(ERROR, --- 190,196 ---- */ if (flags == LH_META_PAGE) { ! HashMetaPage metap = HashPageGetMeta(page); if (metap->hashm_magic != HASH_MAGIC) ereport(ERROR, běžné podadresáře: pgsql_hash.be486df40421/src/include/access a pgsql_hash/src/include/access diff -rc pgsql_hash.be486df40421/src/include/access/hash.h pgsql_hash/src/include/access/hash.h *** pgsql_hash.be486df40421/src/include/access/hash.h po zář 8 16:14:00 2008 --- pgsql_hash/src/include/access/hash.h po zář 8 16:14:00 2008 *************** *** 138,144 **** typedef struct HashMetaPageData { - PageHeaderData hashm_phdr; /* pad for page header (do not use) */ uint32 hashm_magic; /* magic no. for hash tables */ uint32 hashm_version; /* version ID */ double hashm_ntuples; /* number of tuples stored in the table */ --- 138,143 ---- *************** *** 191,199 **** #define BMPGSZ_BIT(metap) ((metap)->hashm_bmsize << BYTE_TO_BIT) #define BMPG_SHIFT(metap) ((metap)->hashm_bmshift) #define BMPG_MASK(metap) (BMPGSZ_BIT(metap) - 1) - #define HashPageGetBitmap(pg) \ - ((uint32 *) (((char *) (pg)) + MAXALIGN(sizeof(PageHeaderData)))) /* * The number of bits in an ovflpage bitmap word. */ --- 190,207 ---- #define BMPGSZ_BIT(metap) ((metap)->hashm_bmsize << BYTE_TO_BIT) #define BMPG_SHIFT(metap) ((metap)->hashm_bmshift) #define BMPG_MASK(metap) (BMPGSZ_BIT(metap) - 1) + #define HashPageGetBitmap(page) \ + ((uint32*) PageGetContents(page)) + + #define HashGetMaxBitmapSize(page) \ + (PageGetPageSize((Page) page)- \ + (MAXALIGN(SizeOfPageHeaderData) + \ + MAXALIGN(sizeof(HashPageOpaqueData))) ) + + #define HashPageGetMeta(page) \ + ((HashMetaPage) PageGetContents(page)) + /* * The number of bits in an ovflpage bitmap word. */ --Boundary_(ID_m24wr7fv51+dn/euXc1KVw)-- From tgl@sss.pgh.pa.us Mon Sep 8 14:49:34 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 972E1650004 for ; Mon, 8 Sep 2008 11:49:34 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 35382-05 for ; Mon, 8 Sep 2008 11:49:24 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 7217164FD1C for ; Mon, 8 Sep 2008 11:49:23 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m88EnIMl014977; Mon, 8 Sep 2008 10:49:18 -0400 (EDT) To: Zdenek Kotala cc: Alex Hunsaker , Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <48C5349F.4080300@sun.com> References: <7627.1220569888@sss.pgh.pa.us> <34d269d40809041742r6a0703dbgfbdd012f7f19de2e@mail.gmail.com> <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <48C5349F.4080300@sun.com> Comments: In-reply-to Zdenek Kotala message dated "Mon, 08 Sep 2008 16:20:15 +0200" Date: Mon, 08 Sep 2008 10:49:18 -0400 Message-ID: <14976.1220885358@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/93 X-Sequence-Number: 7108 Zdenek Kotala writes: > I attach cleanup patch which we discussed last commit fest. It introduce new > macros HashGetMetaPage and HashGetBitmap and of course, it break backward on > disk format compatibility which we will break it anyway when Xiao's patch will > be committed. If we accept that patch, I'm okay with including this one too. Still hoping for some performance testing though. (Note that this one isn't going to affect performance, so no need to include it for that purpose.) regards, tom lane From ktm@rice.edu Tue Sep 9 13:48:53 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id DD6ED64FCE2 for ; Tue, 9 Sep 2008 10:48:53 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 03301-04 for ; Tue, 9 Sep 2008 10:48:44 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from is.rice.edu (is.rice.edu [128.42.42.24]) by postgresql.org (Postfix) with ESMTP id 872C26500C9 for ; Tue, 9 Sep 2008 10:48:44 -0300 (ADT) Received: from scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) by is.rice.edu (Postfix) with ESMTP id 992714181D; Tue, 9 Sep 2008 08:48:40 -0500 (CDT) Received: from is.rice.edu ([128.42.42.24]) by scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) (amavisd-new, port 10024) with ESMTP id 17675-07; Tue, 9 Sep 2008 08:48:39 -0500 (CDT) Received: by is.rice.edu (Postfix, from userid 18612) id DC91D41819; Tue, 9 Sep 2008 08:48:39 -0500 (CDT) Date: Tue, 9 Sep 2008 08:48:39 -0500 From: Kenneth Marshall To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 Message-ID: <20080909134839.GC6714@it.is.rice.edu> References: <10995.1220577198@sss.pgh.pa.us> <11525.1220579153@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> User-Agent: Mutt/1.5.16 (2007-06-09) X-Virus-Scanned: by amavis-2.2.1 at scan1.mail.rice.edu X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/102 X-Sequence-Number: 7117 On Sat, Sep 06, 2008 at 08:23:05PM -0600, Alex Hunsaker wrote: > On Sat, Sep 6, 2008 at 1:09 PM, Tom Lane wrote: > >For the convenience of anyone intending to test, here is an updated > >patch against CVS HEAD that incorporates Alex's fix. > > Here are the results for a table containing 1 million entries that > will generate hash collisions. It paints a bad picture for the patch > but then again im not sure how relevant the issue is. For example > yesterday I imported a table with 10 million collisions and the create > index is still running (now at about ~18 hours). Maybe we should warn > if there are lots of collisions when creating the index and suggest > you use a btree? Anyway here are the results. > I think that the glacial speed for generating a big hash index is the same problem that the original code faced. Because of the collisions you are unable to achieve the correct packing that the code assumes. This results in the splitting/copying of every page in the hash index, a very slow proposition. I had suggested adding some additional parameters like fillfactor to accomodate these sorts of situations. Since your test cuts the effective fill by 2 because of the many collisions, you would need to adjust that calculation to avoid the tremendous amount of random I/O generated by that mis-assumption. > ./pgbench -c1 -n -t10 -f bench_createindex.sql > cvs head: tps = 0.002169 > v5 : tps = 0.002196 > > pgbench -c1 -n -t1000 -f bench_bitmap.sql > cvs head: tps = 24.011871 > v5: tps = 2.543123 > > pgbench -c1 -n -t1000 -f bench_index.sql > cvs head: tps = 51.614502 > v5: tps = 3.205542 > > pgbench -c1 -n -t1000 -f bench_seqscan.sql > cvs head: tps = 8.553318 > v5: tps = 9.836091 > > Table created via: > create table test_hash (num int8); > ./hash | psql -c 'copy test_hash from stdin;' It would be useful to have an equivalent test for the hash-only index without the modified int8 hash function, since that would be more representative of its performance. The collision rates that I was observing in my tests of the old and new mix() functions was about 2 * (1/10000) of what you test generated. You could just test against the integers between 1 and 2000000. Ken From badalex@gmail.com Wed Sep 10 01:23:08 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 2405A64FF9A for ; Tue, 9 Sep 2008 22:23:08 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 27446-10 for ; Tue, 9 Sep 2008 22:23:05 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.175]) by postgresql.org (Postfix) with ESMTP id 6C79A64FD15 for ; Tue, 9 Sep 2008 22:23:05 -0300 (ADT) Received: by ug-out-1314.google.com with SMTP id 29so351914ugo.7 for ; Tue, 09 Sep 2008 18:23:03 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=GJfoHdOP+wWYcuuxmbZA6RWsTqouWrH8DhDYMVVJ/38=; b=Jcslll3GDmYl1fDt+hv/5iN9T9z5T8NxprXrFiHOliutA/EceLOHRk7gQIXUSLAT6D crjanfHrScGrt92Qho3mLYA/frtpjL731GKYlBG84JolDxI2l1JvNi1Gv1AtG/0Q+S/Q qM/sFcXGD6Ht3CsJkc8qUHe/z0pu2HaBTEv7w= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=ctMGHyfkWIOe6rnk4m1NfaTwcZMgm6jsLLGG09w5Jo0zR06S41ARjOJ8i58XMkFNhS AYB8GZ4+fcSV/GvMRZdVcuVUVkl0XYs+D9xgPjSwUwbs8NdPvFdLmrKuRqfXniwzjUdg WaVGBhzF54nkdfR88QkxciXEfG8VBsbrvkVBs= Received: by 10.187.162.6 with SMTP id p6mr57572fao.9.1221009783425; Tue, 09 Sep 2008 18:23:03 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Tue, 9 Sep 2008 18:23:03 -0700 (PDT) Message-ID: <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> Date: Tue, 9 Sep 2008 19:23:03 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <20080909134839.GC6714@it.is.rice.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <10995.1220577198@sss.pgh.pa.us> <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/104 X-Sequence-Number: 7119 On Tue, Sep 9, 2008 at 7:48 AM, Kenneth Marshall wrote: > I think that the glacial speed for generating a big hash index is > the same problem that the original code faced. Yeah sorry, I was not saying it was a new problem with the patch. Err at least not trying to :) *Both* of them had been running at 18+ (I finally killed them sometime Sunday or around +32 hours...) > It would be useful to have an equivalent test for the hash-only > index without the modified int8 hash function, since that would > be more representative of its performance. The collision rates > that I was observing in my tests of the old and new mix() functions > was about 2 * (1/10000) of what you test generated. You could just > test against the integers between 1 and 2000000. Sure but then its pretty much just a general test of patch vs no patch. i.e. How do we measure how much longer collisions take when the new patch makes things faster? That's what I was trying to measure... Though I apologize I don't think that was clearly stated anywhere... Now of course it still would be interesting... And if its only to 2,000,000 I can still use the modified int8 or just use the int4 one... Anyway Here are the numbers: create table test_hash(num int8); insert into test_hash (num) select generate_series(1, 2000000); create index test_hash_num_idx on test_hash (num); pgbench -c1 -n -t10000 -f bench_index.sql cvs head: tps = 3161.500511 v5: tps = 7248.808839 BTW Im still planning on doing a wide vs narrow test... sometime... :) From badalex@gmail.com Wed Sep 10 02:45:16 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 86CAA6500CD for ; Tue, 9 Sep 2008 23:45:16 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 41071-04 for ; Tue, 9 Sep 2008 23:45:13 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.169]) by postgresql.org (Postfix) with ESMTP id E7EC36500C9 for ; Tue, 9 Sep 2008 23:45:12 -0300 (ADT) Received: by ug-out-1314.google.com with SMTP id 29so369165ugo.7 for ; Tue, 09 Sep 2008 19:45:10 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=IkYcecSA9z9L4nPreOT6hVEV8Hq9dlXPOScJeriwTls=; b=FqUgURAzDeFAQn8La9epcI4eqzU8/eOLln6kWXudZwozwdFFDkjRHC4rYXxHmQFken OB/tcKiHSMMp0IW09+ONmBvPHDIVm7tZbBDD6EEnslgXXLQKSvVdkhEdYrBW0DzHJ1j+ J9hpWCjI4CEuJgIU980FCt4xd8m/iSNAz4aVI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=rMAD2ukyY3EJPfbezDjC6APCG128ezWQJbkOZU3yCrZ9Ak6Ix4t97hco6l9FwAJd6K OIgx6SRZPCd+xN99P01CQfZPzYYfmNUle07AIH/Afw05BZRqbOXBxrVwDbbv+IyGBqg5 J2ok/dHF/kNcO5phF+eIflDeuN/qvABTqSxyk= Received: by 10.187.203.4 with SMTP id f4mr69133faq.1.1221014710675; Tue, 09 Sep 2008 19:45:10 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Tue, 9 Sep 2008 19:45:10 -0700 (PDT) Message-ID: <34d269d40809091945n2cebde54qe974aeba00986564@mail.gmail.com> Date: Tue, 9 Sep 2008 20:45:10 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <10995.1220577198@sss.pgh.pa.us> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/105 X-Sequence-Number: 7120 On Tue, Sep 9, 2008 at 7:23 PM, Alex Hunsaker wrote: > create table test_hash(num int8); > insert into test_hash (num) select generate_series(1, 2000000); > create index test_hash_num_idx on test_hash (num); > > pgbench -c1 -n -t10000 -f bench_index.sql > cvs head: tps = 3161.500511 > v5: tps = 7248.808839 Whoa... Ignore those numbers! It would bee nice to actually test with a hash index... and my cvs head atm had cassert on.. sorry about that. create table test_hash(num int8); insert into test_hash (num) select generate_series(1, 2000000); create index test_hash_num_idx on test_hash using hash (num); pgbench -c1 -n -t100000 -f bench_index.sql cvs head: tps = 7345.69432 v5: tps = 7526.290462 From badalex@gmail.com Wed Sep 10 03:05:10 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 4950864FCF3 for ; Wed, 10 Sep 2008 00:05:10 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 46031-08 for ; Wed, 10 Sep 2008 00:05:00 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.173]) by postgresql.org (Postfix) with ESMTP id C7B4B64FCC4 for ; Wed, 10 Sep 2008 00:04:59 -0300 (ADT) Received: by ug-out-1314.google.com with SMTP id 29so373515ugo.7 for ; Tue, 09 Sep 2008 20:04:58 -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:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=ufyuCoPuZO5mGgMgtKjZcOS5ZjfrpxZ9E2KQJS8sMTk=; b=u8HWHPa47ysOOTSHqzT5OMrBOkB2Ot1s4NxATLGfUIevdN0uikTOiPFw7MG8yU0x/v TQkUEBf/WdaeeBa/nydbOwIEJBJRBz8ELH7B3z4QAB0fUQxq5AFInsbc1IPCK7EBZR5Q +NKJGfSg1CrYQ85pdbZMPKUIA9TqxnbnplcyI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=Pfus/7xnb1aZTAnHucWvm3sAwIjp63glkYRjAFiSkTZYD5Zl1bppn5eflJgNb0ZTsj RKhE6cqgwvEigwrbqVvH4mXhsNunY7rB6xR/yKPDXDMdz+Zv4qkC/FqtY/tn1ES7P9kd J2V9T8w/RbQehMPFVbAF9vIYPG1hfB5+mSUOE= Received: by 10.187.161.10 with SMTP id n10mr64453fao.43.1221015898084; Tue, 09 Sep 2008 20:04:58 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Tue, 9 Sep 2008 20:04:58 -0700 (PDT) Message-ID: <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> Date: Tue, 9 Sep 2008 21:04:58 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_3050_15884634.1221015898101" References: <10995.1220577198@sss.pgh.pa.us> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/106 X-Sequence-Number: 7121 ------=_Part_3050_15884634.1221015898101 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Tue, Sep 9, 2008 at 7:23 PM, Alex Hunsaker wrote: > BTW Im still planning on doing a wide vs narrow test... sometime... :) narrow: (exactly the same as what I just did in the other post) create table test_hash(num int8); insert into test_hash (num) select generate_series(1, 2000000); create index test_hash_num_idx on test_hash using hash (num); pgbench -c1 -n -t100000 -f bench_index.sql cvs head: tps = 7345.69432 v5: tps = 7526.290462 wide: # NOTE not on the same machine as the "narrow" test was run! # spit out 2, 000, 000 random 100 length strings perl gen.pl > data.sql create table test_hash (wide text); copy test_hash from './data.sql'; create index test_hash_num_idx on test_hash using hash (wide); bench.sql: select a.wide from test_hash as a inner join test_hash as b on b.wide = a.wide where a.wide = 'BJNORSLMITGKHJCWDBLKLYRSJTVPTYXZJPWNBKXGHYFNDHRAKNFMDHRMUXLDXNTRBJMTHPGPBFJZPAENZXDHAHCUSCJTUPUXWCXUH'; # ^ that string is in data.sql # 3 runs each pgbench -c1 -n -t100000 -f bench.sql cvs head: tps = 5073.463498, 5110.620923, 4955.347610 v5: tps = 5870.681336, 5740.007837, 5699.002942 ------=_Part_3050_15884634.1221015898101 Content-Type: application/x-perl; name=gen.pl Content-Transfer-Encoding: base64 X-Attachment-Id: f_fkxd67aj0 Content-Disposition: attachment; filename=gen.pl dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKbXkgQGNoYXJzID0gJ0EnLi4nWic7Cgpmb3IgbXkg JHggKDAuLjIwMDAwMDApCnsKCW15ICRzdHIgPSAnJyB4IDEwMDsKCglmb3IgbXkgJHkgKDAuLjEw MCkKCXsKCQkkc3RyIC49ICRjaGFyc1tyYW5kIEBjaGFyc107Cgl9CgoJcHJpbnQgIiRzdHJcbiI7 Cn0K ------=_Part_3050_15884634.1221015898101-- From ktm@rice.edu Wed Sep 10 13:04:12 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 6907C64FCD5 for ; Wed, 10 Sep 2008 10:04:12 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 58220-04 for ; Wed, 10 Sep 2008 10:04:05 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from is.rice.edu (is.rice.edu [128.42.42.24]) by postgresql.org (Postfix) with ESMTP id 9AC7364FCCB for ; Wed, 10 Sep 2008 10:04:05 -0300 (ADT) Received: from scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) by is.rice.edu (Postfix) with ESMTP id E13A241820; Wed, 10 Sep 2008 08:04:02 -0500 (CDT) Received: from is.rice.edu ([128.42.42.24]) by scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) (amavisd-new, port 10024) with ESMTP id 29955-01; Wed, 10 Sep 2008 08:04:02 -0500 (CDT) Received: by is.rice.edu (Postfix, from userid 18612) id 2B4EC4181D; Wed, 10 Sep 2008 08:04:02 -0500 (CDT) Date: Wed, 10 Sep 2008 08:04:01 -0500 From: Kenneth Marshall To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 Message-ID: <20080910130401.GG6714@it.is.rice.edu> References: <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> User-Agent: Mutt/1.5.16 (2007-06-09) X-Virus-Scanned: by amavis-2.2.1 at scan1.mail.rice.edu X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/107 X-Sequence-Number: 7122 On Tue, Sep 09, 2008 at 07:23:03PM -0600, Alex Hunsaker wrote: > On Tue, Sep 9, 2008 at 7:48 AM, Kenneth Marshall wrote: > > I think that the glacial speed for generating a big hash index is > > the same problem that the original code faced. > > Yeah sorry, I was not saying it was a new problem with the patch. Err > at least not trying to :) *Both* of them had been running at 18+ (I > finally killed them sometime Sunday or around +32 hours...) > > > It would be useful to have an equivalent test for the hash-only > > index without the modified int8 hash function, since that would > > be more representative of its performance. The collision rates > > that I was observing in my tests of the old and new mix() functions > > was about 2 * (1/10000) of what you test generated. You could just > > test against the integers between 1 and 2000000. > > Sure but then its pretty much just a general test of patch vs no > patch. i.e. How do we measure how much longer collisions take when > the new patch makes things faster? That's what I was trying to > measure... Though I apologize I don't think that was clearly stated > anywhere... Right, I agree that we need to benchmark the collision processing time difference. I am not certain that two data points is useful information. There are 469 collisions with our current hash function on the integers from 1 to 2000000. What about testing the performance at power-of-2 multiples of 500, i.e. 500, 1000, 2000, 4000, 8000,... Unless you adjust the fill calculation for the CREATE INDEX, I would stop once the time to create the index spikes. It might also be useful to see if a CLUSTER affects the performance as well. What do you think of that strategy? Regards, Ken > Now of course it still would be interesting... And if its only to > 2,000,000 I can still use the modified int8 or just use the int4 > one... > > Anyway Here are the numbers: > create table test_hash(num int8); > insert into test_hash (num) select generate_series(1, 2000000); > create index test_hash_num_idx on test_hash (num); > > pgbench -c1 -n -t10000 -f bench_index.sql > cvs head: tps = 3161.500511 > v5: tps = 7248.808839 > > BTW Im still planning on doing a wide vs narrow test... sometime... :) > From Zdenek.Kotala@Sun.COM Wed Sep 10 14:47:07 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 1A57C6500CD for ; Wed, 10 Sep 2008 11:47:07 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 85224-03-3 for ; Wed, 10 Sep 2008 11:46:57 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from gmp-eb-inf-1.sun.com (gmp-eb-inf-1.sun.com [192.18.6.21]) by postgresql.org (Postfix) with ESMTP id D51DC64FCC4 for ; Wed, 10 Sep 2008 11:46:52 -0300 (ADT) Received: from fe-emea-10.sun.com (gmp-eb-lb-2-fe3.eu.sun.com [192.18.6.12]) by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m8AEklFk011812 for ; Wed, 10 Sep 2008 14:46:47 GMT Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K6Z00G01HPLAS00@fe-emea-10.sun.com> (original mail from Zdenek.Kotala@Sun.COM) for pgsql-patches@postgresql.org; Wed, 10 Sep 2008 15:46:47 +0100 (BST) Received: from [129.157.18.76] by fe-emea-10.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K6Z0094EIDINP30@fe-emea-10.sun.com>; Wed, 10 Sep 2008 15:46:30 +0100 (BST) Date: Wed, 10 Sep 2008 16:47:21 +0200 From: Zdenek Kotala Subject: Re: hash index improving v3 In-reply-to: <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Message-id: <48C7DDF9.6020507@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=ISO-8859-2 Content-transfer-encoding: 7BIT References: <10995.1220577198@sss.pgh.pa.us> <11962.1220581027@sss.pgh.pa.us> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> User-Agent: Thunderbird 2.0.0.14 (X11/20080630) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200809/108 X-Sequence-Number: 7123 Alex Hunsaker napsal(a): > > wide: > # NOTE not on the same machine as the "narrow" test was run! > > # spit out 2, 000, 000 random 100 length strings > perl gen.pl > data.sql > create table test_hash (wide text); > copy test_hash from './data.sql'; > create index test_hash_num_idx on test_hash using hash (wide); > > bench.sql: > select a.wide from test_hash as a inner join test_hash as b on b.wide > = a.wide where a.wide = > 'BJNORSLMITGKHJCWDBLKLYRSJTVPTYXZJPWNBKXGHYFNDHRAKNFMDHRMUXLDXNTRBJMTHPGPBFJZPAENZXDHAHCUSCJTUPUXWCXUH'; > > # ^ that string is in data.sql > > # 3 runs each > pgbench -c1 -n -t100000 -f bench.sql > cvs head: tps = 5073.463498, 5110.620923, 4955.347610 > v5: tps = 5870.681336, 5740.007837, 5699.002942 What locale did you use? It would be nice to have also comparing between C and any UTF8 locale. I think we should see big benefit when non C locale is used. Thanks Zdenek From badalex@gmail.com Wed Sep 10 16:27:35 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 8F1F364FCFD for ; Wed, 10 Sep 2008 13:27:35 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 08668-08 for ; Wed, 10 Sep 2008 13:27:26 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from yx-out-2324.google.com (yx-out-2324.google.com [74.125.44.29]) by postgresql.org (Postfix) with ESMTP id A857464FCF3 for ; Wed, 10 Sep 2008 13:27:26 -0300 (ADT) Received: by yx-out-2324.google.com with SMTP id 8so1420037yxb.73 for ; Wed, 10 Sep 2008 09:27:25 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=YtuI1QFIsE59/EKqWaE302KZ7X/7WqlVJEqYbXJQuSU=; b=VQpKl5Wn4KunongdANwykm4IIH+yV1V717Z19NNtIbbo6bzwDv8c0ChARI+xmkleGj 1CfUa941jxCEvOuYCjwnFFwbTAhBjm5mJVbPY9Pi+EXs7B9i6ag66xpRyOdUfFuJV0cO bO4voshLy6lqJAdpIsGs3JBT/niLmo67ywjpM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=Df4XEQ9YTHdj66PLZ4xoJH1G/6DfFF/22sWXk7lHPLwpquef6ghHEFRUHJgENzX1KE nbGxBGbrpq+PaX1fllveI2r/ykU8HiVYWN866p0aLnlwPirJHZOA1e1DfGuUeqKW4FO/ eDaI7bMqyz24gntbejq0b/24cS9ziqcIUVxgg= Received: by 10.187.168.15 with SMTP id v15mr157683fao.100.1221064044438; Wed, 10 Sep 2008 09:27:24 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Wed, 10 Sep 2008 09:27:24 -0700 (PDT) Message-ID: <34d269d40809100927n20864e41p65c068c4ec6f6d74@mail.gmail.com> Date: Wed, 10 Sep 2008 10:27:24 -0600 From: "Alex Hunsaker" To: "Zdenek Kotala" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <48C7DDF9.6020507@sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <10995.1220577198@sss.pgh.pa.us> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> <48C7DDF9.6020507@sun.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/110 X-Sequence-Number: 7125 On Wed, Sep 10, 2008 at 8:47 AM, Zdenek Kotala wrote: > What locale did you use? It would be nice to have also comparing between C > and any UTF8 locale. I think we should see big benefit when non C locale is > used. Err yes this was UTF8, Ill see about doing a C locale. From badalex@gmail.com Thu Sep 11 03:45:31 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 00B5864FD04 for ; Thu, 11 Sep 2008 00:45:31 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 21943-08 for ; Thu, 11 Sep 2008 00:45:26 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.172]) by postgresql.org (Postfix) with ESMTP id 4F88364FCFD for ; Thu, 11 Sep 2008 00:45:26 -0300 (ADT) Received: by ug-out-1314.google.com with SMTP id 29so703065ugo.7 for ; Wed, 10 Sep 2008 20:45:24 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=hNpt2AZQIiwW5qjAN6VhPKYzJBRfTQGqind8rmV3+fg=; b=FpnhMUzt/DcTHZVISgmx19IWf9u8HAWpBeRyqO7OmtzmguuCyBhdG2znwOA7a6TDoT Jk++N9mLCxYaOvcGTkNrppwwSlxsnn+0AjONZbQNWowQS+36Mzpt7w/kZcaLe3KDMShX 8ulottklMu3Ic/s2EIlxtmPMP49wT28iyV7rk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=vLQKl64E8Zqw2EXK+jhuqR6B3eblWjg6Ql4Zf24D+wE1qioSxZ3ZGOA/PSApftqil+ U8NFgserMpcXJ0JJhKwmzapPqDiTdXhFjZBHGHPmmuOqSQ/5M7S/Zd7tpajfyjoIxL9K qde9m+Ogoomk68fFgaMrg5DsJfT4csJnS8ybk= Received: by 10.187.168.15 with SMTP id v15mr248057fao.100.1221104724532; Wed, 10 Sep 2008 20:45:24 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Wed, 10 Sep 2008 20:45:24 -0700 (PDT) Message-ID: <34d269d40809102045t2f8037a4jfe862264f6f04454@mail.gmail.com> Date: Wed, 10 Sep 2008 21:45:24 -0600 From: "Alex Hunsaker" To: "Zdenek Kotala" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809100927n20864e41p65c068c4ec6f6d74@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <10995.1220577198@sss.pgh.pa.us> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> <48C7DDF9.6020507@sun.com> <34d269d40809100927n20864e41p65c068c4ec6f6d74@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/112 X-Sequence-Number: 7127 On Wed, Sep 10, 2008 at 10:27 AM, Alex Hunsaker wrote: > On Wed, Sep 10, 2008 at 8:47 AM, Zdenek Kotala wrote: >> What locale did you use? It would be nice to have also comparing between C >> and any UTF8 locale. I think we should see big benefit when non C locale is >> used. > > Err yes this was UTF8, Ill see about doing a C locale. > And here it with a C locale: pgbench -c1 -n -t100000 -f bench.sql cvs head: tps = 5142.784262 v5: tps = 6169.405965 and just for fun a the same using a btree index pgbench -c1 -n -t100000 -f bench.sql cvs head: tps = 5234.680407 v5: tps = 5286.08252 From badalex@gmail.com Thu Sep 11 03:49:30 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id B553E64FD02 for ; Thu, 11 Sep 2008 00:49:30 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 24981-01 for ; Thu, 11 Sep 2008 00:49:27 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.169]) by postgresql.org (Postfix) with ESMTP id 76D5664FD05 for ; Thu, 11 Sep 2008 00:49:27 -0300 (ADT) Received: by ug-out-1314.google.com with SMTP id 29so703861ugo.7 for ; Wed, 10 Sep 2008 20:49:26 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=sxqprjJXd0rkjE+k0RQkoxM8NmOzGjsybeH64cWCQWs=; b=T0vOBV2fejw14DbzSQGjHBMvPzD1wdb4yxqark+0FAscoHtYW8Wxx4uo16CZxLFwHQ sqsnDU9+58sAKgyFsISVd/2Z5AOC6s1GNEVwimW3aKH1J/4tHRu0obYMBCEiiqHdF8bW 8kDQzKiZsqy/inxsXLdi+JRXmcX4rHopO+UmE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=UNK+kgaCpJLMT736v/1ST3xYzyd9V1rJ3jyyEAY642f0hsfshnfYK8XdS+uCe/93Zs bu2WGOq+TQIXCwQ/LS1psU7ZM++j3WSjr7pRUl3pxUpqlkq2qHFS4D5LkZhE6BLH6WR8 GLNSgVyZ4PprUvQU1Uk4C0m41o9EXJwMbPoMM= Received: by 10.187.201.4 with SMTP id d4mr259875faq.17.1221104966109; Wed, 10 Sep 2008 20:49:26 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Wed, 10 Sep 2008 20:49:25 -0700 (PDT) Message-ID: <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> Date: Wed, 10 Sep 2008 21:49:25 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <20080910130401.GG6714@it.is.rice.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <34d269d40809042048m3b532a5ej7a9588f63a788d0c@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/113 X-Sequence-Number: 7128 On Wed, Sep 10, 2008 at 7:04 AM, Kenneth Marshall wrote: > On Tue, Sep 09, 2008 at 07:23:03PM -0600, Alex Hunsaker wrote: >> On Tue, Sep 9, 2008 at 7:48 AM, Kenneth Marshall wrote: >> > I think that the glacial speed for generating a big hash index is >> > the same problem that the original code faced. >> >> Yeah sorry, I was not saying it was a new problem with the patch. Err >> at least not trying to :) *Both* of them had been running at 18+ (I >> finally killed them sometime Sunday or around +32 hours...) >> >> > It would be useful to have an equivalent test for the hash-only >> > index without the modified int8 hash function, since that would >> > be more representative of its performance. The collision rates >> > that I was observing in my tests of the old and new mix() functions >> > was about 2 * (1/10000) of what you test generated. You could just >> > test against the integers between 1 and 2000000. >> >> Sure but then its pretty much just a general test of patch vs no >> patch. i.e. How do we measure how much longer collisions take when >> the new patch makes things faster? That's what I was trying to >> measure... Though I apologize I don't think that was clearly stated >> anywhere... > > Right, I agree that we need to benchmark the collision processing > time difference. I am not certain that two data points is useful > information. There are 469 collisions with our current hash function > on the integers from 1 to 2000000. What about testing the performance > at power-of-2 multiples of 500, i.e. 500, 1000, 2000, 4000, 8000,... > Unless you adjust the fill calculation for the CREATE INDEX, I would > stop once the time to create the index spikes. It might also be useful > to see if a CLUSTER affects the performance as well. What do you think > of that strategy? Not sure it will be a good benchmark of collision processing. Then again you seem to have studied the hash algo closer than me. Ill go see about doing this. Stay tuned. From badalex@gmail.com Thu Sep 11 04:24:30 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 810B464FCFD for ; Thu, 11 Sep 2008 01:24:30 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 64019-04-2 for ; Thu, 11 Sep 2008 01:24:23 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.185]) by postgresql.org (Postfix) with ESMTP id 308D664FD02 for ; Thu, 11 Sep 2008 01:17:33 -0300 (ADT) Received: by nf-out-0910.google.com with SMTP id c7so95998nfi.23 for ; Wed, 10 Sep 2008 21:17:32 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=SmeWLSUkxa8x3e5OUrY6qTBJ0PZIgemgkBsPNBgHK6E=; b=jUsJAkD9OD912Zo81y53RiK3q6x8mbUwwuYw0HWXaxd23q2/RIl9TVsD0BC9EXj/7J hjYB0pv08+geIun0uhBO/6G7gtuV5FDaYI5EwGs2lM7+kCxU4hBmsj/HUnEcr3uEs3d4 0rWPiVaXkx/3gizjidFczpGN/m0vk9djDF4Qg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=Grin6uXrakIOu8O+CJbJ2ZERYaMtqXh6w1xcRa0YFkNnqpeShw4XkiH6/hwdoCvyFa qyIpvjGLCPZhTd1Z9atFfYZnYpdm7N5EBJgL3dlUEiKVdBqbQRooldThmpzGr+m87IB7 Ut/sdjxH6gkZCkUZPBoPNwX5HRJrOgPZ2Pe20= Received: by 10.187.195.7 with SMTP id x7mr258816fap.46.1221106652029; Wed, 10 Sep 2008 21:17:32 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Wed, 10 Sep 2008 21:17:31 -0700 (PDT) Message-ID: <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> Date: Wed, 10 Sep 2008 22:17:31 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <34d269d40809041854g355a8f68ga3a037a69e3d9fcb@mail.gmail.com> <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/114 X-Sequence-Number: 7129 On Wed, Sep 10, 2008 at 9:49 PM, Alex Hunsaker wrote: > On Wed, Sep 10, 2008 at 7:04 AM, Kenneth Marshall wrote: >> On Tue, Sep 09, 2008 at 07:23:03PM -0600, Alex Hunsaker wrote: >>> On Tue, Sep 9, 2008 at 7:48 AM, Kenneth Marshall wrote: >>> > I think that the glacial speed for generating a big hash index is >>> > the same problem that the original code faced. >>> >>> Yeah sorry, I was not saying it was a new problem with the patch. Err >>> at least not trying to :) *Both* of them had been running at 18+ (I >>> finally killed them sometime Sunday or around +32 hours...) >>> >>> > It would be useful to have an equivalent test for the hash-only >>> > index without the modified int8 hash function, since that would >>> > be more representative of its performance. The collision rates >>> > that I was observing in my tests of the old and new mix() functions >>> > was about 2 * (1/10000) of what you test generated. You could just >>> > test against the integers between 1 and 2000000. >>> >>> Sure but then its pretty much just a general test of patch vs no >>> patch. i.e. How do we measure how much longer collisions take when >>> the new patch makes things faster? That's what I was trying to >>> measure... Though I apologize I don't think that was clearly stated >>> anywhere... >> >> Right, I agree that we need to benchmark the collision processing >> time difference. I am not certain that two data points is useful >> information. There are 469 collisions with our current hash function >> on the integers from 1 to 2000000. What about testing the performance >> at power-of-2 multiples of 500, i.e. 500, 1000, 2000, 4000, 8000,... >> Unless you adjust the fill calculation for the CREATE INDEX, I would >> stop once the time to create the index spikes. It might also be useful >> to see if a CLUSTER affects the performance as well. What do you think >> of that strategy? > > Not sure it will be a good benchmark of collision processing. Then > again you seem to have studied the hash algo closer than me. Ill go > see about doing this. Stay tuned. Assuming I understood you correctly, And I probably didn't this does not work very well because you max out at 27,006 values before you get this error: ERROR: index row size 8152 exceeds hash maximum 8144 HINT: Values larger than a buffer page cannot be indexed. So is a power-of-2 multiple of 500 not simply: x = 500; while(1) { print x; x *= 2; } ? From ktm@rice.edu Thu Sep 11 15:25:35 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id F3624650040 for ; Thu, 11 Sep 2008 12:25:35 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 52564-03-8 for ; Thu, 11 Sep 2008 12:25:32 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from is.rice.edu (is.rice.edu [128.42.42.24]) by postgresql.org (Postfix) with ESMTP id E4A3F650186 for ; Thu, 11 Sep 2008 12:24:42 -0300 (ADT) Received: from scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) by is.rice.edu (Postfix) with ESMTP id 5A09A4182E; Thu, 11 Sep 2008 10:24:39 -0500 (CDT) Received: from is.rice.edu ([128.42.42.24]) by scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) (amavisd-new, port 10024) with ESMTP id 09322-05; Thu, 11 Sep 2008 10:24:38 -0500 (CDT) Received: by is.rice.edu (Postfix, from userid 18612) id 8CEDD41820; Thu, 11 Sep 2008 10:24:38 -0500 (CDT) Date: Thu, 11 Sep 2008 10:24:38 -0500 From: Kenneth Marshall To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 Message-ID: <20080911152437.GM6714@it.is.rice.edu> References: <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> User-Agent: Mutt/1.5.16 (2007-06-09) X-Virus-Scanned: by amavis-2.2.1 at scan1.mail.rice.edu X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/116 X-Sequence-Number: 7131 On Wed, Sep 10, 2008 at 10:17:31PM -0600, Alex Hunsaker wrote: > On Wed, Sep 10, 2008 at 9:49 PM, Alex Hunsaker wrote: > > On Wed, Sep 10, 2008 at 7:04 AM, Kenneth Marshall wrote: > >> On Tue, Sep 09, 2008 at 07:23:03PM -0600, Alex Hunsaker wrote: > >>> On Tue, Sep 9, 2008 at 7:48 AM, Kenneth Marshall wrote: > >>> > I think that the glacial speed for generating a big hash index is > >>> > the same problem that the original code faced. > >>> > >>> Yeah sorry, I was not saying it was a new problem with the patch. Err > >>> at least not trying to :) *Both* of them had been running at 18+ (I > >>> finally killed them sometime Sunday or around +32 hours...) > >>> > >>> > It would be useful to have an equivalent test for the hash-only > >>> > index without the modified int8 hash function, since that would > >>> > be more representative of its performance. The collision rates > >>> > that I was observing in my tests of the old and new mix() functions > >>> > was about 2 * (1/10000) of what you test generated. You could just > >>> > test against the integers between 1 and 2000000. > >>> > >>> Sure but then its pretty much just a general test of patch vs no > >>> patch. i.e. How do we measure how much longer collisions take when > >>> the new patch makes things faster? That's what I was trying to > >>> measure... Though I apologize I don't think that was clearly stated > >>> anywhere... > >> > >> Right, I agree that we need to benchmark the collision processing > >> time difference. I am not certain that two data points is useful > >> information. There are 469 collisions with our current hash function > >> on the integers from 1 to 2000000. What about testing the performance > >> at power-of-2 multiples of 500, i.e. 500, 1000, 2000, 4000, 8000,... > >> Unless you adjust the fill calculation for the CREATE INDEX, I would > >> stop once the time to create the index spikes. It might also be useful > >> to see if a CLUSTER affects the performance as well. What do you think > >> of that strategy? > > > > Not sure it will be a good benchmark of collision processing. Then > > again you seem to have studied the hash algo closer than me. Ill go > > see about doing this. Stay tuned. > > Assuming I understood you correctly, And I probably didn't this does > not work very well because you max out at 27,006 values before you get > this error: > ERROR: index row size 8152 exceeds hash maximum 8144 > HINT: Values larger than a buffer page cannot be indexed. > > So is a power-of-2 multiple of 500 not simply: > x = 500; > while(1) > { > print x; > x *= 2; > } > > ? > Alex, I meant to check the performance with increasing numbers of collisions, not increasing size of the hashed item. In other words, something like this: for ($coll=500; $i<=1000000; $i=$i*2) { for ($i=0; $i<=1000000; $i++) { hash(int8 $i); } # add the appropriate number of collisions, distributed evenly to # minimize the packing overrun problem for ($dup=0; $dup<=$coll; $dup++) { hash(int8 MAX_INT + $dup * 1000000/$coll); } } Ken From badalex@gmail.com Fri Sep 12 02:51:58 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 3459064FEDF for ; Thu, 11 Sep 2008 23:51:58 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 01367-04 for ; Thu, 11 Sep 2008 23:51:55 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.159]) by postgresql.org (Postfix) with ESMTP id B903B64FCD6 for ; Thu, 11 Sep 2008 23:51:55 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so386836fgg.23 for ; Thu, 11 Sep 2008 19:51:53 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=5PeMjkHATsf7d8AYsccZ06deN7/ppq1dvjHx4N7K/Fw=; b=Jh5HZC7yTpwrb/aNUCE3LZEtBRR4GaV+Syu2xDNMCUOiUgZuQb60w9K8WFSVZ7CJLT lCNXaaG3NMTuGcod4Ji7vWvzLtjHVsFpxR04uRPOH5PRJi3SDlYy21vD85wSdcaDpd7p KKNusauukWiEfbhqLK1C9tmr0DJA8twWmitIg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=LeDiOzZKjq/99fKylgM/0FcDZppHyJ7xMWjf6ejOGoMtGg44vTyMCKtzzE+maTf/US Aj1RyGTKjyU0uflp4CR7crNotILvRQ1M7Tz0fHH0hIVeVksuBpxyrWmYTkxXCdDCU4Tf A1pAIRSST6hO9izfo6TSxFPvEp68qu04HlVRM= Received: by 10.187.247.15 with SMTP id z15mr495761far.80.1221187913711; Thu, 11 Sep 2008 19:51:53 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Thu, 11 Sep 2008 19:51:53 -0700 (PDT) Message-ID: <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> Date: Thu, 11 Sep 2008 20:51:53 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <20080911152437.GM6714@it.is.rice.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <34d269d40809050912u33f2afc8mb90e316bc465136e@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/117 X-Sequence-Number: 7132 On Thu, Sep 11, 2008 at 9:24 AM, Kenneth Marshall wrote: > Alex, > > I meant to check the performance with increasing numbers of collisions, > not increasing size of the hashed item. In other words, something like > this: > > for ($coll=500; $i<=1000000; $i=$i*2) { > for ($i=0; $i<=1000000; $i++) { > hash(int8 $i); > } > # add the appropriate number of collisions, distributed evenly to > # minimize the packing overrun problem > for ($dup=0; $dup<=$coll; $dup++) { > hash(int8 MAX_INT + $dup * 1000000/$coll); > } > } > > Ken *doh* right something like this... create or replace function create_test_hash() returns bool as $$ declare coll integer default 500; -- tweak this to where create index gets really slow max_coll integer default 1000000; begin loop execute 'create table test_hash_'|| coll ||'(num int8);'; execute 'insert into test_hash_'|| coll ||' (num) select n from generate_series(0, '|| max_coll ||') as n;'; execute 'insert into test_hash_'|| coll ||' (num) select (n+4294967296) * '|| max_col ||'/'|| coll ||'::int from generate_series(0, '|| coll ||') as n;'; coll := coll * 2; exit when coll >= max_coll; end loop; return true; end; $$ language 'plpgsql'; And then benchmark each table, and for extra credit cluster the table on the index and benchmark that. Also obviously with the hashint8 which just ignores the top 32 bits. Right? From Zdenek.Kotala@Sun.COM Fri Sep 12 09:15:34 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 0560364FCBD for ; Fri, 12 Sep 2008 06:15:34 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 68451-08 for ; Fri, 12 Sep 2008 06:15:26 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from gmp-eb-inf-1.sun.com (gmp-eb-inf-1.sun.com [192.18.6.21]) by postgresql.org (Postfix) with ESMTP id EC35A64FCD2 for ; Fri, 12 Sep 2008 06:15:22 -0300 (ADT) Received: from fe-emea-09.sun.com (gmp-eb-lb-2-fe2.eu.sun.com [192.18.6.11]) by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m8C9FJng006468 for ; Fri, 12 Sep 2008 09:15:19 GMT Received: from conversion-daemon.fe-emea-09.sun.com by fe-emea-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K7200301S1AGY00@fe-emea-09.sun.com> (original mail from Zdenek.Kotala@Sun.COM) for pgsql-patches@postgresql.org; Fri, 12 Sep 2008 10:15:19 +0100 (BST) Received: from [192.168.1.101] ([89.102.161.149]) by fe-emea-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K7200CR3SD224C0@fe-emea-09.sun.com>; Fri, 12 Sep 2008 10:15:03 +0100 (BST) Date: Fri, 12 Sep 2008 11:14:58 +0200 From: Zdenek Kotala Subject: Re: hash index improving v3 In-reply-to: <34d269d40809102045t2f8037a4jfe862264f6f04454@mail.gmail.com> To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , pgsql-patches@postgresql.org, "Jonah H. Harris" Message-id: <48CA3312.1040508@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=ISO-8859-1 Content-transfer-encoding: 7BIT References: <10995.1220577198@sss.pgh.pa.us> <34d269d40809051321w2ed16037od0373a4a29c311f1@mail.gmail.com> <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> <48C7DDF9.6020507@sun.com> <34d269d40809100927n20864e41p65c068c4ec6f6d74@mail.gmail.com> <34d269d40809102045t2f8037a4jfe862264f6f04454@mail.gmail.com> User-Agent: Thunderbird 2.0.0.16 (X11/20080811) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200809/118 X-Sequence-Number: 7133 Alex Hunsaker napsal(a): > On Wed, Sep 10, 2008 at 10:27 AM, Alex Hunsaker wrote: >> On Wed, Sep 10, 2008 at 8:47 AM, Zdenek Kotala wrote: >>> What locale did you use? It would be nice to have also comparing between C >>> and any UTF8 locale. I think we should see big benefit when non C locale is >>> used. >> Err yes this was UTF8, Ill see about doing a C locale. >> > > And here it with a C locale: > > pgbench -c1 -n -t100000 -f bench.sql > cvs head: tps = 5142.784262 > v5: tps = 6169.405965 If I look on both results C UTF8 difference ----------------------------------- cvs head: 5140 5050 -2% v5: 6170 5750 -7% improvement: 20% 14% than I little bit wonder. I personally expected bigger difference of UTF8 comparing between CVS a v5. This test also shows that locale selection has bigger impact on performance in v5 case, but result is still better than cvs head. Zdenek -- Zdenek Kotala Sun Microsystems Prague, Czech Republic http://sun.com/postgresql From ktm@rice.edu Fri Sep 12 14:29:28 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 55BFF64FCD2 for ; Fri, 12 Sep 2008 11:29:28 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 36304-06 for ; Fri, 12 Sep 2008 11:29:25 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from is.rice.edu (is.rice.edu [128.42.42.24]) by postgresql.org (Postfix) with ESMTP id B988B64FCCC for ; Fri, 12 Sep 2008 11:29:25 -0300 (ADT) Received: from scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) by is.rice.edu (Postfix) with ESMTP id 2A5A04182B; Fri, 12 Sep 2008 09:29:22 -0500 (CDT) Received: from is.rice.edu ([128.42.42.24]) by scan1.mail.rice.edu (scan1.mail.rice.edu [128.42.58.160]) (amavisd-new, port 10024) with ESMTP id 24495-07; Fri, 12 Sep 2008 09:29:21 -0500 (CDT) Received: by is.rice.edu (Postfix, from userid 18612) id 6ACEC41820; Fri, 12 Sep 2008 09:29:21 -0500 (CDT) Date: Fri, 12 Sep 2008 09:29:21 -0500 From: Kenneth Marshall To: Alex Hunsaker Cc: Tom Lane , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 Message-ID: <20080912142921.GB26773@it.is.rice.edu> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> User-Agent: Mutt/1.5.16 (2007-06-09) X-Virus-Scanned: by amavis-2.2.1 at scan1.mail.rice.edu X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/119 X-Sequence-Number: 7134 On Thu, Sep 11, 2008 at 08:51:53PM -0600, Alex Hunsaker wrote: > On Thu, Sep 11, 2008 at 9:24 AM, Kenneth Marshall wrote: > > Alex, > > > > I meant to check the performance with increasing numbers of collisions, > > not increasing size of the hashed item. In other words, something like > > this: > > > > for ($coll=500; $i<=1000000; $i=$i*2) { > > for ($i=0; $i<=1000000; $i++) { > > hash(int8 $i); > > } > > # add the appropriate number of collisions, distributed evenly to > > # minimize the packing overrun problem > > for ($dup=0; $dup<=$coll; $dup++) { > > hash(int8 MAX_INT + $dup * 1000000/$coll); > > } > > } > > > > Ken > > *doh* right something like this... > > create or replace function create_test_hash() returns bool as $$ > declare > coll integer default 500; > -- tweak this to where create index gets really slow > max_coll integer default 1000000; > begin > loop > execute 'create table test_hash_'|| coll ||'(num int8);'; > execute 'insert into test_hash_'|| coll ||' (num) select n > from generate_series(0, '|| max_coll ||') as n;'; > execute 'insert into test_hash_'|| coll ||' (num) select > (n+4294967296) * '|| max_col ||'/'|| coll ||'::int from > generate_series(0, '|| coll ||') as n;'; > > coll := coll * 2; > > exit when coll >= max_coll; > end loop; > return true; > end; > $$ language 'plpgsql'; > > And then benchmark each table, and for extra credit cluster the table > on the index and benchmark that. > > Also obviously with the hashint8 which just ignores the top 32 bits. > > Right? > Yes, that is exactly right. Ken From badalex@gmail.com Fri Sep 12 16:33:13 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 110C664FCD2 for ; Fri, 12 Sep 2008 13:33:13 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 69404-08 for ; Fri, 12 Sep 2008 13:33:03 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-gx0-f17.google.com (mail-gx0-f17.google.com [209.85.217.17]) by postgresql.org (Postfix) with ESMTP id 194E364FCCC for ; Fri, 12 Sep 2008 13:33:01 -0300 (ADT) Received: by gxk10 with SMTP id 10so19350681gxk.19 for ; Fri, 12 Sep 2008 09:32:59 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=aenjIiufy+5de2CeYWGeuyVuCvGkRo/LgLc7pLeS7f0=; b=jrOwPrTGjMNFfRY3fBGIpO5mh7pFEgkXU0bQTvx36oXtlw62BtGBvTA8TNgFwNLs2D 8SkKsE/HNYKdAqllhNtlY7pTiMZHrGQLR5g6/AGm2Wi9CDu4kDjv1wSNwkX7jNbJrLnZ WmRej2AfP6m61nh6I3bOYMU/M0aLLHFn4PcqY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=Kl6QYRuq0xiN3HTCOzv2S+6r8r36kfLbfaMOQf+4Z0XcOlp9NY10VtBaTCo4Lf8G7j 9FqsQE8pPLSLC68ckjoKplhGuPmhrWuua7jq0FxtcZv/bc75Wu901PotdhlUYPa0MP12 07Qrfs1bPkrb6o5MOdV4uqZdtJpvZLRtUb8LQ= Received: by 10.187.203.15 with SMTP id f15mr609916faq.105.1221237177992; Fri, 12 Sep 2008 09:32:57 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Fri, 12 Sep 2008 09:32:57 -0700 (PDT) Message-ID: <34d269d40809120932h3525bb97nbd8d982ff1aff501@mail.gmail.com> Date: Fri, 12 Sep 2008 10:32:57 -0600 From: "Alex Hunsaker" To: "Zdenek Kotala" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <48CA3312.1040508@sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <10995.1220577198@sss.pgh.pa.us> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <34d269d40809092004q10b5da87r6fa3fe86926476ff@mail.gmail.com> <48C7DDF9.6020507@sun.com> <34d269d40809100927n20864e41p65c068c4ec6f6d74@mail.gmail.com> <34d269d40809102045t2f8037a4jfe862264f6f04454@mail.gmail.com> <48CA3312.1040508@sun.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/120 X-Sequence-Number: 7135 On Fri, Sep 12, 2008 at 3:14 AM, Zdenek Kotala wrote: > Alex Hunsaker napsal(a): >> >> On Wed, Sep 10, 2008 at 10:27 AM, Alex Hunsaker wrote: >>> >>> On Wed, Sep 10, 2008 at 8:47 AM, Zdenek Kotala >>> wrote: >>>> >>>> What locale did you use? It would be nice to have also comparing between >>>> C >>>> and any UTF8 locale. I think we should see big benefit when non C locale >>>> is >>>> used. >>> >>> Err yes this was UTF8, Ill see about doing a C locale. >>> >> >> And here it with a C locale: >> >> pgbench -c1 -n -t100000 -f bench.sql >> cvs head: tps = 5142.784262 >> v5: tps = 6169.405965 > > > If I look on both results > > C UTF8 difference > ----------------------------------- > cvs head: 5140 5050 -2% > v5: 6170 5750 -7% > improvement: 20% 14% > > than I little bit wonder. I personally expected bigger difference of UTF8 > comparing between CVS a v5. This test also shows that locale selection has > bigger impact on performance in v5 case, but result is still better than cvs > head. Right, I think part of it is I need to try again with a larger dataset... The reason I did three runs before was because it was variable between (v5 between 5700 and 6200). Also the query im doing ming be two simplistic because it runs to fast, thats part of why I get the variable speed between runs (i think...) Suggestions? From tgl@sss.pgh.pa.us Mon Sep 15 02:25:59 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id CBD37650216 for ; Sun, 14 Sep 2008 23:25:59 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 61205-01-4 for ; Sun, 14 Sep 2008 23:25:56 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id E561D6502A9 for ; Sun, 14 Sep 2008 23:16:58 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m8F2Gq3O007248; Sun, 14 Sep 2008 22:16:52 -0400 (EDT) To: Kenneth Marshall cc: Alex Hunsaker , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org, "Jonah H. Harris" Subject: Re: hash index improving v3 In-reply-to: <20080912142921.GB26773@it.is.rice.edu> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <22574.1220728178@sss.pgh.pa.us> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> Comments: In-reply-to Kenneth Marshall message dated "Fri, 12 Sep 2008 09:29:21 -0500" Date: Sun, 14 Sep 2008 22:16:52 -0400 Message-ID: <7246.1221445012@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/125 X-Sequence-Number: 7140 I did some testing of my own on the hash index patch, and mostly seem to have confirmed Alex's results. I used a table like this: create table tab (f1 serial primary key, f2 some-datatype); create index ind on tab using hash (f2); and populated it with 2 million rows of data; then timed queries like this: select * from tab a join tab b using(f2) where f2 = (select f2 from tab c where c.f1 = (select int4(random() * 2e6))); using pgbench like this: pgbench -n -c 1 -T 60 -M prepared -f query.sql hashdb To test "wide" indexed columns I used a text column with entries of 100 random characters (identical to Alex's test). I saw a performance gain of about 50% with an empty kernel cache (26.9 vs 41.9 tps), dropping to about 14% once the table and index were fully swapped in (4185 vs 4764 tps). This was in a C-locale database. Presumably the win would have been significantly greater in a non-C-locale test, but I didn't try it. To test "narrow" indexed columns I made f2 a bigint containing 2000000 consecutive integers. Here I saw about a 5% improvement with either empty cache (48.1 vs 50.5 tps) or full cache (4590 vs 4800 tps). This is not too surprising since about the same amount of I/O is needed either way, and bigint comparison is very cheap. (This is a 64-bit machine, and it's defaulting to pass-by-value for bigints, so value comparisons are hardly more expensive than hashcode comparisons.) But the patch still wins a bit by being able to do binary search within index pages. In both of the above cases there were only a negligible number of hash collisions. I made up another test case, still 2 million bigints, but with values chosen so that almost every entry had a hash collision with another entry (a small fraction had two or even 3 collisions). This showed about a 25% slowdown compared to CVS HEAD with empty cache (49.9 tps down to 37.2), decreasing to 3% with full cache (4609 vs 4482 tps). I experimented with some variant queries that did more hash index fetches per query, and saw penalties as high as 50%. However, this is surely by far the worst case for the patch: no savings in index size, and a ridiculously high collision rate. Lastly, for comparison's sake I tried the "wide column" case with a btree instead of hash index. This gave me 31.5 tps with empty cache, 4749 tps with full cache. Note that the btree is losing significantly to the patched hash index in empty-cache conditions --- this presumably reflects the much larger index size causing more I/O. I'm thinking that we should go ahead and apply the patch. AFAIR this is the first example we've ever seen of hash beating btree for fetch performance, and it's pretty obvious that removing the indexed value from the index contents is the reason for the win. So I've lost interest in the alternative that involved storing both hashcode and indexed value. We now see a possible production use-case for hash, namely indexing wide column values. BTW, one thing I noticed was that the hash index build time for the "wide column" case got a lot worse after applying the patch (from 56 to 237 sec). The reason for this turned out to be that with the smaller predicted index size, the code decided not to use the pre-sorting method that was recently added. Reducing effective_cache_size to less than the index size brought the time back down, to about 54 sec. So it would seem that effective_cache_size is too large a cutoff value. I'm considering changing hashbuild to switch over at shared_buffers instead of effective_cache_size --- any thoughts about that? regards, tom lane From badalex@gmail.com Tue Sep 23 01:57:23 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 00CBA64FC22 for ; Mon, 22 Sep 2008 22:57:23 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 69759-05 for ; Mon, 22 Sep 2008 22:57:19 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.153]) by postgresql.org (Postfix) with ESMTP id F33B164FC04 for ; Mon, 22 Sep 2008 22:57:18 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so1693218fgg.23 for ; Mon, 22 Sep 2008 18:57:16 -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:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=GDSwKtGRONnwIf4+E/H0g16mhf8s3PKqLW625gp/uAI=; b=CtF+b5lRdPCiQ+nGuSvWeQuQIR4ThDNs/eyMqOLZgu7pnulS7H4wo+KV2/0hS/kbw2 XNK9CREuTFlpaDrPu8BYn1VbhFg7bR6bi4mP2slFY64Fh78ndDpHpIUf0A1BEybDgvOW E341GJMpdp+96sORxaOi33nkHh7c7mFUST2bA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=k79UqyEcRknf24CUJb2axzaYcfBGoUT+PMtLS+noXBenrBfpMVwdk384xH3ThGGIfW nh5FyhbGgyZvgPG11B6mwK+WP9zMi0IBuecgRzMPOPiymx/3YACM+5oz5kjXTtFLvCDZ U0b4NByyNMa3ZgzyG3fu26p9z7rjGCDFAGPA4= Received: by 10.187.166.12 with SMTP id t12mr637503fao.90.1222135036765; Mon, 22 Sep 2008 18:57:16 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Mon, 22 Sep 2008 18:57:16 -0700 (PDT) Message-ID: <34d269d40809221857m265d27bek29abadf934e19660@mail.gmail.com> Date: Mon, 22 Sep 2008 19:57:16 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <20080912142921.GB26773@it.is.rice.edu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_17255_16378233.1222135036754" References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809061923k4c731481gf580d46d259defb0@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/145 X-Sequence-Number: 7160 ------=_Part_17255_16378233.1222135036754 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Fri, Sep 12, 2008 at 8:29 AM, Kenneth Marshall wrote: > On Thu, Sep 11, 2008 at 08:51:53PM -0600, Alex Hunsaker wrote: >> On Thu, Sep 11, 2008 at 9:24 AM, Kenneth Marshall wrote: >> > Alex, >> > >> > I meant to check the performance with increasing numbers of collisions, >> > not increasing size of the hashed item. In other words, something like >> > this: >> > >> > for ($coll=500; $i<=1000000; $i=$i*2) { >> > for ($i=0; $i<=1000000; $i++) { >> > hash(int8 $i); >> > } >> > # add the appropriate number of collisions, distributed evenly to >> > # minimize the packing overrun problem >> > for ($dup=0; $dup<=$coll; $dup++) { >> > hash(int8 MAX_INT + $dup * 1000000/$coll); >> > } >> > } >> > >> > Ken >> >> *doh* right something like this... >> >> create or replace function create_test_hash() returns bool as $$ >> declare >> coll integer default 500; >> -- tweak this to where create index gets really slow >> max_coll integer default 1000000; >> begin >> loop >> execute 'create table test_hash_'|| coll ||'(num int8);'; >> execute 'insert into test_hash_'|| coll ||' (num) select n >> from generate_series(0, '|| max_coll ||') as n;'; >> execute 'insert into test_hash_'|| coll ||' (num) select >> (n+4294967296) * '|| max_col ||'/'|| coll ||'::int from >> generate_series(0, '|| coll ||') as n;'; >> >> coll := coll * 2; >> >> exit when coll >= max_coll; >> end loop; >> return true; >> end; >> $$ language 'plpgsql'; >> >> And then benchmark each table, and for extra credit cluster the table >> on the index and benchmark that. >> >> Also obviously with the hashint8 which just ignores the top 32 bits. >> >> Right? >> > Yes, that is exactly right. > > Ken Ok I finally found time to do this, In summary looks like v5 scales about the same as cvs head when the collisions are spread evenly (obviously not HEAD with the hash patch applied...). I couldn't test cluster because we can't cluster on hash indexes... benchmark with 50,000,000 rows and 500 collisions: index creation time: head: 326116.647 ms v5: 269509.026 ms pgbench -n -c1 -T600 -f q.sql hash head: tps = 3226.605611 v5: tps = 3412.688884 (excluding connections establishing) 50,000,000 rows and 32,768,000 collisions index time: head: 576600.967 ms v5 : 487949.490 ms pgbench -n -c1 -T500 -f q.sql hash head: tps = 3105.270185 v5: tps = 3382.25782 You can see each result from 500 all the way up to 32,768,000 collision in the attached result.out Attached files: create_test_hash.sql: function I used to create the test tables result.out: output from bench.pl which shows the pgbench results and the create index times bench.pl: stupid little perl script to test pgbench each of the created tables from create_test_hash.pl ------=_Part_17255_16378233.1222135036754 Content-Type: application/x-perl; name=bench.pl Content-Transfer-Encoding: base64 X-Attachment-Id: f_flfveh4q0 Content-Disposition: attachment; filename=bench.pl dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKbXkgJGNvbGwgPSA1MDA7Cm15ICRtYXhfY29sbCA9 IDUwMDAwMDAwOwoKd2hpbGUoJGNvbGwgPD0gJG1heF9jb2xsKQp7CiMJc3lzdGVtKCdlY2hvICJk cm9wIHRhYmxlIHRlc3RfaGFzaF8nLiAkY29sbCAuJzsiIHwgLi9wc3FsIC1wIDExMTEgaGFzaCcp OwojCXN5c3RlbSgnZWNobyAiZHJvcCB0YWJsZSB0ZXN0X2hhc2hfJy4gJGNvbGwgLic7IiB8IC4v cHNxbCAtcCAxMTEyIGhhc2gnKTsKIwojCSRjb2xsICo9IDI7CiMJbmV4dDsKCglwcmludCAiXG5y dW5uaW5nICRjb2xsXG4iOwoJc3lzdGVtKDw8InphcCIpICYmIGRpZTsKZWNobyAiXFx0aW1pbmcK ZHJvcCBpbmRleCB0XyRjb2xsXF9pZHg7CmNyZWF0ZSBpbmRleCB0XyRjb2xsXF9pZHggb24gdGVz dF9oYXNoXyRjb2xsIHVzaW5nIGhhc2ggKG51bSk7CmFuYWx5emUgdGVzdF9oYXNoXyRjb2xsOyIg PiBxLnNxbAp6YXAKCglwcmludCAiY3JlYXRlIGluZGV4IGZvciAkY29sbCBIRUFEXG4iOwoJc3lz dGVtKCcuL3BzcWwgLXAgMTExMSAtZiBxLnNxbCBoYXNoIDI+L2Rldi9udWxsJykgJiYgZGllOwoJ c3lzdGVtKCdzeW5jJykgJiYgZGllOwoKCXByaW50ICJjcmVhdGUgaW5kZXggZm9yICRjb2xsIHY1 XG4iOwoJc3lzdGVtKCcuL3BzcWwgLXAgMTExMiAtZiBxLnNxbCBoYXNoIDI+L2Rldi9udWxsJykg JiYgZGllOwoJc3lzdGVtKCdzeW5jJykgJiYgZGllOwoKCWJlbmNoKCk7CiMKIwlzeXN0ZW0oPDwi emFwIikgJiYgZGllOwojZWNobyAiXFx0aW1pbmcKI2NsdXN0ZXIgdGVzdF9oYXNoXyRjb2xsIHVz aW5nIHRfJGNvbGxcX2lkeDsiID4gcS5zcWwKI3phcAojCiMJcHJpbnQgImNsdXN0ZXIgaW5kZXgg Zm9yICRjb2xsIEhFQURcbiI7CiMJc3lzdGVtKCcuL3BzcWwgLXAgMTExMSAtZiBxLnNxbCBoYXNo IDI+L2Rldi9udWxsJykgJiYgZGllOwojCXByaW50ICJjbHVzdGVyIGluZGV4IGZvciAkY29sbCB2 NVxuIjsKIwlzeXN0ZW0oJy4vcHNxbCAtcCAxMTEyIC1mIHEuc3FsIGhhc2ggMj4vZGV2L251bGwn KSAmJiBkaWU7CiMKIwlzeXN0ZW0oJ3N5bmMnKSAmJiBkaWU7CiMKIwliZW5jaCgpOwoKCSRjb2xs ICo9IDI7CQp9CgpzdWIgYmVuY2gKewoJc3lzdGVtKDw8InphcCIpICYmIGRpZTsKZWNobyAic2V0 IGVuYWJsZV9zZXFzY2FuIHRvIG9mZjsKc2V0IGVuYWJsZV9iaXRtYXBzY2FuIHRvIG9mZjsKCnNl bGVjdCBjb3VudCgxKSBmcm9tIHRlc3RfaGFzaF8kY29sbCBhcyBhIGlubmVyIGpvaW4gdGVzdF9o YXNoXyRjb2xsIGFzIGIgb24gYi5udW0gPSBhLm51bSB3aGVyZSBhLm51bSA9IDEyMzQ1NjsiID4g cS5zcWwKemFwCgoJcHJpbnQgInBnYmVuY2ggJGNvbGwgSEVBRFxuIjsKCXN5c3RlbSgnLi9wZ2Jl bmNoIC1wIDExMTEgLW4gLWMxIC1UNjAwIC1mIHEuc3FsIGhhc2gnKSAmJiBkaWU7CglwcmludCAi cGdiZW5jaCAkY29sbCB2NVxuIjsKCXN5c3RlbSgnLi9wZ2JlbmNoIC1wIDExMTIgLW4gLWMxIC1U NjAwIC1mIHEuc3FsIGhhc2gnKSAmJiBkaWU7Cn0K ------=_Part_17255_16378233.1222135036754 Content-Type: application/octet-stream; name=create_test_hash.sql Content-Transfer-Encoding: base64 X-Attachment-Id: f_flfvf9nk1 Content-Disposition: attachment; filename=create_test_hash.sql Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gY3JlYXRlX3Rlc3RfaGFzaCgpIHJldHVybnMgYm9v bCBhcyAkJApkZWNsYXJlCgljb2xsIGJpZ2ludCBkZWZhdWx0IDUwMDsKCS0tIHR3ZWFrIHRoaXMg dG8gd2hlcmUgY3JlYXRlIGluZGV4IGdldHMgcmVhbGx5IHNsb3cKCW1heF9jb2xsIGJpZ2ludCBk ZWZhdWx0IDUwMDAwMDAwOwpiZWdpbgoJbG9vcAoJCXJhaXNlIG5vdGljZSAnc3RhcmluZyAlJywg Y29sbDsgZXhlY3V0ZSAnY3JlYXRlIHRhYmxlIHRlc3RfaGFzaF8nfHwgY29sbCB8fCcobnVtIGlu dDgpOyc7CgkJZXhlY3V0ZSAnaW5zZXJ0IGludG8gdGVzdF9oYXNoXyd8fCBjb2xsIHx8JyAobnVt KSBzZWxlY3QgbiBmcm9tIGdlbmVyYXRlX3NlcmllcygwLCAnfHwgbWF4X2NvbGwgfHwnKSBhcyBu Oyc7CgkJZXhlY3V0ZSAnaW5zZXJ0IGludG8gdGVzdF9oYXNoXyd8fCBjb2xsIHx8JyAobnVtKSBz ZWxlY3QgKG4rNDI5NDk2NzI5NikgKiAnfHwgbWF4X2NvbGwgfHwnLyd8fCBjb2xsIHx8Jzo6aW50 IGZyb20gZ2VuZXJhdGVfc2VyaWVzKDAsICd8fCBjb2xsIHx8JykgYXMgbjsnOwoJCWNvbGwgOj0g Y29sbCAqIDI7CgkJZXhpdCB3aGVuIGNvbGwgPj0gbWF4X2NvbGw7CgllbmQgbG9vcDsKCXJldHVy biB0cnVlOwplbmQKJCQgbGFuZ3VhZ2UgJ3BscGdzcWwnOwo= ------=_Part_17255_16378233.1222135036754 Content-Type: application/octet-stream; name=result.out Content-Transfer-Encoding: base64 X-Attachment-Id: f_flfvfmho2 Content-Disposition: attachment; filename=result.out CnJ1bm5pbmcgNTAwCmNyZWF0ZSBpbmRleCBmb3IgNTAwIEhFQUQKVGltaW5nIGlzIG9uLgpDUkVB VEUgSU5ERVgKVGltZTogMzI2MTE2LjY0NyBtcwpBTkFMWVpFClRpbWU6IDEwNy4yOTAgbXMKY3Jl YXRlIGluZGV4IGZvciA1MDAgdjUKVGltaW5nIGlzIG9uLgpDUkVBVEUgSU5ERVgKVGltZTogMjY5 NTA5LjAyNiBtcwpBTkFMWVpFClRpbWU6IDE0Ni4wMDMgbXMKcGdiZW5jaCA1MDAgSEVBRAp0cmFu c2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTog c2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJh bnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMTkzNTk1NQp0cHMgPSAzMjI2LjU5MDY2NiAo aW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBzID0gMzIyNi42MDU2MTEgKGV4 Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnBnYmVuY2ggNTAwIHY1CnRyYW5zYWN0 aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3RvcjogMQpxdWVyeSBtb2RlOiBzaW1w bGUKbnVtYmVyIG9mIGNsaWVudHM6IDEKZHVyYXRpb246IDYwMCBzCm51bWJlciBvZiB0cmFuc2Fj dGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAyMDQ3NjA0CnRwcyA9IDM0MTIuNjcxNzgxIChpbmNs dWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMgPSAzNDEyLjY4ODg4NCAoZXhjbHVk aW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKCnJ1bm5pbmcgMTAwMApjcmVhdGUgaW5kZXgg Zm9yIDEwMDAgSEVBRApUaW1pbmcgaXMgb24uCkNSRUFURSBJTkRFWApUaW1lOiAzMzgzNTIuNTM3 IG1zCkFOQUxZWkUKVGltZTogODYuNjI4IG1zCmNyZWF0ZSBpbmRleCBmb3IgMTAwMCB2NQpUaW1p bmcgaXMgb24uCkNSRUFURSBJTkRFWApUaW1lOiAyOTI5NDMuNzkyIG1zCkFOQUxZWkUKVGltZTog MjA1LjEwNiBtcwpwZ2JlbmNoIDEwMDAgSEVBRAp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVl cnkKc2NhbGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRz OiAxCmR1cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nl c3NlZDogMTk0MDUyNgp0cHMgPSAzMjM0LjIwODQwNCAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVz dGFibGlzaGluZykKdHBzID0gMzIzNC4yMjM1NTcgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3Rh Ymxpc2hpbmcpCnBnYmVuY2ggMTAwMCB2NQp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkK c2NhbGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAx CmR1cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3Nl ZDogMjA1NDg3OQp0cHMgPSAzNDI0Ljc5Nzc4MCAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFi bGlzaGluZykKdHBzID0gMzQyNC44MTkxODUgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxp c2hpbmcpCgpydW5uaW5nIDIwMDAKY3JlYXRlIGluZGV4IGZvciAyMDAwIEhFQUQKVGltaW5nIGlz IG9uLgpDUkVBVEUgSU5ERVgKVGltZTogMzU4NjI2LjUzMiBtcwpBTkFMWVpFClRpbWU6IDExNS4y MzkgbXMKY3JlYXRlIGluZGV4IGZvciAyMDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVY ClRpbWU6IDI5Njk0My40MzggbXMKQU5BTFlaRQpUaW1lOiAyNDUuODY4IG1zCnBnYmVuY2ggMjAw MCBIRUFECnRyYW5zYWN0aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3RvcjogMQpx dWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9mIGNsaWVudHM6IDEKZHVyYXRpb246IDYwMCBzCm51 bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAxOTQzMjE4CnRwcyA9IDMy MzguNjk2MTk3IChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMgPSAzMjM4 LjcxMTc5NyAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKcGdiZW5jaCAyMDAw IHY1CnRyYW5zYWN0aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3RvcjogMQpxdWVy eSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9mIGNsaWVudHM6IDEKZHVyYXRpb246IDYwMCBzCm51bWJl ciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAxOTk2NDQ0CnRwcyA9IDMzMjcu NDA1MTc1IChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMgPSAzMzI3LjQy NjM1NCAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKCnJ1bm5pbmcgNDAwMApj cmVhdGUgaW5kZXggZm9yIDQwMDAgSEVBRApUaW1pbmcgaXMgb24uCkNSRUFURSBJTkRFWApUaW1l OiAzNTUyMjMuODM4IG1zCkFOQUxZWkUKVGltZTogMTE0Ljk1OSBtcwpjcmVhdGUgaW5kZXggZm9y IDQwMDAgdjUKVGltaW5nIGlzIG9uLgpDUkVBVEUgSU5ERVgKVGltZTogMjc0MjY2LjEwMCBtcwpB TkFMWVpFClRpbWU6IDI0MC4wNjAgbXMKcGdiZW5jaCA0MDAwIEhFQUQKdHJhbnNhY3Rpb24gdHlw ZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1i ZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBh Y3R1YWxseSBwcm9jZXNzZWQ6IDIwOTE3OTAKdHBzID0gMzQ4Ni4zMTU2NDQgKGluY2x1ZGluZyBj b25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9IDM0ODYuMzM2ODgyIChleGNsdWRpbmcgY29u bmVjdGlvbnMgZXN0YWJsaXNoaW5nKQpwZ2JlbmNoIDQwMDAgdjUKdHJhbnNhY3Rpb24gdHlwZTog Q3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1iZXIg b2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1 YWxseSBwcm9jZXNzZWQ6IDE5OTUxNDYKdHBzID0gMzMyNS4yNDIxNDIgKGluY2x1ZGluZyBjb25u ZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9IDMzMjUuMjYzMzUxIChleGNsdWRpbmcgY29ubmVj dGlvbnMgZXN0YWJsaXNoaW5nKQoKcnVubmluZyA4MDAwCmNyZWF0ZSBpbmRleCBmb3IgODAwMCBI RUFEClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDM0OTc2Ny4wMTIgbXMKQU5BTFla RQpUaW1lOiAxMTMuMzIwIG1zCmNyZWF0ZSBpbmRleCBmb3IgODAwMCB2NQpUaW1pbmcgaXMgb24u CkNSRUFURSBJTkRFWApUaW1lOiAyOTk1NzMuMDgzIG1zCkFOQUxZWkUKVGltZTogMjEzLjM0MyBt cwpwZ2JlbmNoIDgwMDAgSEVBRAp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGlu ZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0 aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMTkz OTMwMwp0cHMgPSAzMjMyLjE3MTI1MiAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGlu ZykKdHBzID0gMzIzMi4xOTI1MzYgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcp CnBnYmVuY2ggODAwMCB2NQp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBm YWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9u OiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMTk4Mjgz Mwp0cHMgPSAzMzA0LjcyMDQwNSAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykK dHBzID0gMzMwNC43NDE3MzcgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCgpy dW5uaW5nIDE2MDAwCmNyZWF0ZSBpbmRleCBmb3IgMTYwMDAgSEVBRApUaW1pbmcgaXMgb24uCkNS RUFURSBJTkRFWApUaW1lOiAzNDg0MDAuNjI4IG1zCkFOQUxZWkUKVGltZTogMTcxLjcxMCBtcwpj cmVhdGUgaW5kZXggZm9yIDE2MDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6 IDI4ODczMS43ODIgbXMKQU5BTFlaRQpUaW1lOiAxODAuNDM0IG1zCnBnYmVuY2ggMTYwMDAgSEVB RAp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0b3I6IDEKcXVlcnkg bW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2MDAgcwpudW1iZXIg b2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMTk0NTYwMQp0cHMgPSAzMjQyLjY2 ODEzOSAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBzID0gMzI0Mi42ODM4 NTUgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnBnYmVuY2ggMTYwMDAgdjUK dHJhbnNhY3Rpb24gdHlwZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1v ZGU6IHNpbXBsZQpudW1iZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9m IHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDE5OTkxMjcKdHBzID0gMzMzMS44Nzcw NTEgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9IDMzMzEuODk4MjU4 IChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQoKcnVubmluZyAzMjAwMApjcmVh dGUgaW5kZXggZm9yIDMyMDAwIEhFQUQKVGltaW5nIGlzIG9uLgpDUkVBVEUgSU5ERVgKVGltZTog MzQ3MDE4Ljc4MCBtcwpBTkFMWVpFClRpbWU6IDMxOC4zNDkgbXMKY3JlYXRlIGluZGV4IGZvciAz MjAwMCB2NQpUaW1pbmcgaXMgb24uCkNSRUFURSBJTkRFWApUaW1lOiAzMDk1NzUuNzczIG1zCkFO QUxZWkUKVGltZTogMTgxLjQ2NSBtcwpwZ2JlbmNoIDMyMDAwIEhFQUQKdHJhbnNhY3Rpb24gdHlw ZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1i ZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBh Y3R1YWxseSBwcm9jZXNzZWQ6IDE5MzIxNTAKdHBzID0gMzIyMC4yNDgxNDggKGluY2x1ZGluZyBj b25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9IDMyMjAuMjYzMTMzIChleGNsdWRpbmcgY29u bmVjdGlvbnMgZXN0YWJsaXNoaW5nKQpwZ2JlbmNoIDMyMDAwIHY1CnRyYW5zYWN0aW9uIHR5cGU6 IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3RvcjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVy IG9mIGNsaWVudHM6IDEKZHVyYXRpb246IDYwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0 dWFsbHkgcHJvY2Vzc2VkOiAxOTk5OTUxCnRwcyA9IDMzMzMuMjUwMDgzIChpbmNsdWRpbmcgY29u bmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMgPSAzMzMzLjI3MTM2MSAoZXhjbHVkaW5nIGNvbm5l Y3Rpb25zIGVzdGFibGlzaGluZykKCnJ1bm5pbmcgNjQwMDAKY3JlYXRlIGluZGV4IGZvciA2NDAw MCBIRUFEClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDM0NjA5NS4xNjkgbXMKQU5B TFlaRQpUaW1lOiAxMjcuMTYwIG1zCmNyZWF0ZSBpbmRleCBmb3IgNjQwMDAgdjUKVGltaW5nIGlz IG9uLgpDUkVBVEUgSU5ERVgKVGltZTogMjkyMTI1LjQ1MiBtcwpBTkFMWVpFClRpbWU6IDE3NS4x ODMgbXMKcGdiZW5jaCA2NDAwMCBIRUFECnRyYW5zYWN0aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpz Y2FsaW5nIGZhY3RvcjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9mIGNsaWVudHM6IDEK ZHVyYXRpb246IDYwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2Vk OiAxOTQxMTcxCnRwcyA9IDMyMzUuMjg0MjU2IChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJs aXNoaW5nKQp0cHMgPSAzMjM1LjI5OTkzNiAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlz aGluZykKcGdiZW5jaCA2NDAwMCB2NQp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2Nh bGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1 cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDog MjAzMzM2NAp0cHMgPSAzMzg4LjkzOTUyNiAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlz aGluZykKdHBzID0gMzM4OC45NTY2NjIgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hp bmcpCgpydW5uaW5nIDEyODAwMApjcmVhdGUgaW5kZXggZm9yIDEyODAwMCBIRUFEClRpbWluZyBp cyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDM0Nzc0OC42MjMgbXMKQU5BTFlaRQpUaW1lOiAxOTku NjcyIG1zCmNyZWF0ZSBpbmRleCBmb3IgMTI4MDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElO REVYClRpbWU6IDI5MDc2Ni4xOTIgbXMKQU5BTFlaRQpUaW1lOiAyODEuMDQ4IG1zCnBnYmVuY2gg MTI4MDAwIEhFQUQKdHJhbnNhY3Rpb24gdHlwZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9y OiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1iZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAw IHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDE4ODg2NjYKdHBz ID0gMzE0Ny43NzU4NjkgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9 IDMxNDcuNzk1ODg5IChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQpwZ2JlbmNo IDEyODAwMCB2NQp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0b3I6 IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2MDAg cwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMjAyODQ2NAp0cHMg PSAzMzgwLjc3MjczMCAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBzID0g MzM4MC43OTQ0MjkgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCgpydW5uaW5n IDI1NjAwMApjcmVhdGUgaW5kZXggZm9yIDI1NjAwMCBIRUFEClRpbWluZyBpcyBvbi4KQ1JFQVRF IElOREVYClRpbWU6IDMzOTI5MC4yNzIgbXMKQU5BTFlaRQpUaW1lOiAxMTIuNjc0IG1zCmNyZWF0 ZSBpbmRleCBmb3IgMjU2MDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDI4 MjE1NS4zNTAgbXMKQU5BTFlaRQpUaW1lOiAxNDQuMzUyIG1zCnBnYmVuY2ggMjU2MDAwIEhFQUQK dHJhbnNhY3Rpb24gdHlwZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1v ZGU6IHNpbXBsZQpudW1iZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9m IHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDE5MTY4NTIKdHBzID0gMzE5NC43NTI2 NDYgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9IDMxOTQuNzY4MDY3 IChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQpwZ2JlbmNoIDI1NjAwMCB2NQp0 cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0b3I6IDEKcXVlcnkgbW9k ZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2MDAgcwpudW1iZXIgb2Yg dHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMjAzNjgyNAp0cHMgPSAzMzk0LjcwNTg2 OSAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBzID0gMzM5NC43MjcxOTMg KGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCgpydW5uaW5nIDUxMjAwMApjcmVh dGUgaW5kZXggZm9yIDUxMjAwMCBIRUFEClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6 IDM0NjUwMC44MjUgbXMKQU5BTFlaRQpUaW1lOiAxNDcuNDMyIG1zCmNyZWF0ZSBpbmRleCBmb3Ig NTEyMDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDI5MTU5NS40MjQgbXMK QU5BTFlaRQpUaW1lOiAxNTYuODg2IG1zCnBnYmVuY2ggNTEyMDAwIEhFQUQKdHJhbnNhY3Rpb24g dHlwZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpu dW1iZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9u cyBhY3R1YWxseSBwcm9jZXNzZWQ6IDE5MzI0MDgKdHBzID0gMzIyMC42NzgyMzQgKGluY2x1ZGlu ZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9IDMyMjAuNjk5OTYzIChleGNsdWRpbmcg Y29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQpwZ2JlbmNoIDUxMjAwMCB2NQp0cmFuc2FjdGlvbiB0 eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51 bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25z IGFjdHVhbGx5IHByb2Nlc3NlZDogMjAxODUyNQp0cHMgPSAzMzY0LjIwNjM3NiAoaW5jbHVkaW5n IGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBzID0gMzM2NC4yMjgxMDQgKGV4Y2x1ZGluZyBj b25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCgpydW5uaW5nIDEwMjQwMDAKY3JlYXRlIGluZGV4IGZv ciAxMDI0MDAwIEhFQUQKVGltaW5nIGlzIG9uLgpDUkVBVEUgSU5ERVgKVGltZTogMzU3OTk4Ljcy MyBtcwpBTkFMWVpFClRpbWU6IDE1Mi41MjkgbXMKY3JlYXRlIGluZGV4IGZvciAxMDI0MDAwIHY1 ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDI5MzUzNi41ODMgbXMKQU5BTFlaRQpU aW1lOiAxNzQuODA1IG1zCnBnYmVuY2ggMTAyNDAwMCBIRUFECnRyYW5zYWN0aW9uIHR5cGU6IEN1 c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3RvcjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9m IGNsaWVudHM6IDEKZHVyYXRpb246IDYwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFs bHkgcHJvY2Vzc2VkOiAxOTIwMjM5CnRwcyA9IDMyMDAuMzk2NzE3IChpbmNsdWRpbmcgY29ubmVj dGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMgPSAzMjAwLjQxNjI2NiAoZXhjbHVkaW5nIGNvbm5lY3Rp b25zIGVzdGFibGlzaGluZykKcGdiZW5jaCAxMDI0MDAwIHY1CnRyYW5zYWN0aW9uIHR5cGU6IEN1 c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3RvcjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9m IGNsaWVudHM6IDEKZHVyYXRpb246IDYwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFs bHkgcHJvY2Vzc2VkOiAyMDEyMjc1CnRwcyA9IDMzNTMuNzkxNDA0IChpbmNsdWRpbmcgY29ubmVj dGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMgPSAzMzUzLjgxMzE3MCAoZXhjbHVkaW5nIGNvbm5lY3Rp b25zIGVzdGFibGlzaGluZykKCnJ1bm5pbmcgMjA0ODAwMApjcmVhdGUgaW5kZXggZm9yIDIwNDgw MDAgSEVBRApUaW1pbmcgaXMgb24uCkNSRUFURSBJTkRFWApUaW1lOiAzNjQzMDUuMzExIG1zCkFO QUxZWkUKVGltZTogMTM3LjY0NCBtcwpjcmVhdGUgaW5kZXggZm9yIDIwNDgwMDAgdjUKVGltaW5n IGlzIG9uLgpDUkVBVEUgSU5ERVgKVGltZTogMzAzNzgyLjk1MiBtcwpBTkFMWVpFClRpbWU6IDE2 Mi43ODcgbXMKcGdiZW5jaCAyMDQ4MDAwIEhFQUQKdHJhbnNhY3Rpb24gdHlwZTogQ3VzdG9tIHF1 ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1iZXIgb2YgY2xpZW50 czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9j ZXNzZWQ6IDE5NDYzMTIKdHBzID0gMzI0My44NTI1NzEgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBl c3RhYmxpc2hpbmcpCnRwcyA9IDMyNDMuODY4MDIzIChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0 YWJsaXNoaW5nKQpwZ2JlbmNoIDIwNDgwMDAgdjUKdHJhbnNhY3Rpb24gdHlwZTogQ3VzdG9tIHF1 ZXJ5CnNjYWxpbmcgZmFjdG9yOiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1iZXIgb2YgY2xpZW50 czogMQpkdXJhdGlvbjogNjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9j ZXNzZWQ6IDE5ODg4NjQKdHBzID0gMzMxNC43NzI1MzggKGluY2x1ZGluZyBjb25uZWN0aW9ucyBl c3RhYmxpc2hpbmcpCnRwcyA9IDMzMTQuNzg4MTk1IChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0 YWJsaXNoaW5nKQoKcnVubmluZyA0MDk2MDAwCmNyZWF0ZSBpbmRleCBmb3IgNDA5NjAwMCBIRUFE ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVYClRpbWU6IDM3MzA0MC4yMjcgbXMKQU5BTFlaRQpU aW1lOiAxNDUuMDMxIG1zCmNyZWF0ZSBpbmRleCBmb3IgNDA5NjAwMCB2NQpUaW1pbmcgaXMgb24u CkNSRUFURSBJTkRFWApUaW1lOiAzMTA1NDEuOTU2IG1zCkFOQUxZWkUKVGltZTogMjEyLjI3MSBt cwpwZ2JlbmNoIDQwOTYwMDAgSEVBRAp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2Nh bGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1 cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDog MTkzOTI5Ngp0cHMgPSAzMjMyLjE1OTExNyAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlz aGluZykKdHBzID0gMzIzMi4xNzQzNTEgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hp bmcpCnBnYmVuY2ggNDA5NjAwMCB2NQp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2Nh bGluZyBmYWN0b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1 cmF0aW9uOiA2MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDog MjIxOTE5NQp0cHMgPSAzNjk4LjY1NzA3MCAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlz aGluZykKdHBzID0gMzY5OC42NzUwOTQgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hp bmcpCgpydW5uaW5nIDgxOTIwMDAKY3JlYXRlIGluZGV4IGZvciA4MTkyMDAwIEhFQUQKVGltaW5n IGlzIG9uLgpDUkVBVEUgSU5ERVgKVGltZTogNDA4NjkxLjAwMCBtcwpBTkFMWVpFClRpbWU6IDM0 MC40NzQgbXMKY3JlYXRlIGluZGV4IGZvciA4MTkyMDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRF IElOREVYClRpbWU6IDMzNzAxMS4wNDAgbXMKQU5BTFlaRQpUaW1lOiAxNTkuNzM5IG1zCnBnYmVu Y2ggODE5MjAwMCBIRUFECnRyYW5zYWN0aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZh Y3RvcjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9mIGNsaWVudHM6IDEKZHVyYXRpb246 IDYwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAxODczODg5 CnRwcyA9IDMxMjMuMTQ2NTQzIChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0 cHMgPSAzMTIzLjE2NTkxMiAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKcGdi ZW5jaCA4MTkyMDAwIHY1CnRyYW5zYWN0aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZh Y3RvcjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9mIGNsaWVudHM6IDEKZHVyYXRpb246 IDYwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAyMDE1NTUy CnRwcyA9IDMzNTkuMjUxNzQzIChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0 cHMgPSAzMzU5LjI3Mjk2OCAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKCnJ1 bm5pbmcgMTYzODQwMDAKY3JlYXRlIGluZGV4IGZvciAxNjM4NDAwMCBIRUFEClRpbWluZyBpcyBv bi4KQ1JFQVRFIElOREVYClRpbWU6IDQ2ODE1NS44NTMgbXMKQU5BTFlaRQpUaW1lOiAxNDIuOTc2 IG1zCmNyZWF0ZSBpbmRleCBmb3IgMTYzODQwMDAgdjUKVGltaW5nIGlzIG9uLgpDUkVBVEUgSU5E RVgKVGltZTogMzcxNjE0LjkwOCBtcwpBTkFMWVpFClRpbWU6IDE0Mi41NjMgbXMKcGdiZW5jaCAx NjM4NDAwMCBIRUFECnRyYW5zYWN0aW9uIHR5cGU6IEN1c3RvbSBxdWVyeQpzY2FsaW5nIGZhY3Rv cjogMQpxdWVyeSBtb2RlOiBzaW1wbGUKbnVtYmVyIG9mIGNsaWVudHM6IDEKZHVyYXRpb246IDYw MCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAxODg4ODYxCnRw cyA9IDMxNDguMTAxMDAwIChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQp0cHMg PSAzMTQ4LjEyMDEyNSAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKcGdiZW5j aCAxNjM4NDAwMCB2NQp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0 b3I6IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2 MDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMTk3MTg4MAp0 cHMgPSAzMjg2LjQ2NTkwNSAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBz ID0gMzI4Ni40ODY5ODMgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCgpydW5u aW5nIDMyNzY4MDAwCmNyZWF0ZSBpbmRleCBmb3IgMzI3NjgwMDAgSEVBRApUaW1pbmcgaXMgb24u CkNSRUFURSBJTkRFWApUaW1lOiA1NzY2MDAuOTY3IG1zCkFOQUxZWkUKVGltZTogOTU5LjYwMSBt cwpjcmVhdGUgaW5kZXggZm9yIDMyNzY4MDAwIHY1ClRpbWluZyBpcyBvbi4KQ1JFQVRFIElOREVY ClRpbWU6IDQ4Nzk0OS40OTAgbXMKQU5BTFlaRQpUaW1lOiA4MDAuNDUxIG1zCnBnYmVuY2ggMzI3 NjgwMDAgSEVBRAp0cmFuc2FjdGlvbiB0eXBlOiBDdXN0b20gcXVlcnkKc2NhbGluZyBmYWN0b3I6 IDEKcXVlcnkgbW9kZTogc2ltcGxlCm51bWJlciBvZiBjbGllbnRzOiAxCmR1cmF0aW9uOiA2MDAg cwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMTg2MzE1NAp0cHMg PSAzMTA1LjI1NTUwNyAoaW5jbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykKdHBzID0g MzEwNS4yNzAxODUgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnBnYmVuY2gg MzI3NjgwMDAgdjUKdHJhbnNhY3Rpb24gdHlwZTogQ3VzdG9tIHF1ZXJ5CnNjYWxpbmcgZmFjdG9y OiAxCnF1ZXJ5IG1vZGU6IHNpbXBsZQpudW1iZXIgb2YgY2xpZW50czogMQpkdXJhdGlvbjogNjAw IHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDIwMjkzNDIKdHBz ID0gMzM4Mi4yMzU3ODcgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpCnRwcyA9 IDMzODIuMjU3ODIzIChleGNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQo= ------=_Part_17255_16378233.1222135036754-- From badalex@gmail.com Tue Sep 23 03:25:13 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 907E364FC27 for ; Tue, 23 Sep 2008 00:25:13 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 10314-09 for ; Tue, 23 Sep 2008 00:25:04 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.157]) by postgresql.org (Postfix) with ESMTP id AF45864FC26 for ; Tue, 23 Sep 2008 00:25:04 -0300 (ADT) Received: by fg-out-1718.google.com with SMTP id 16so1715926fgg.23 for ; Mon, 22 Sep 2008 20:25:03 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=r62WBFrK7L3CMNEN+EILhcUb/eHx/C1Snsot7LMCkMw=; b=dFZNopfzuQRD44cobV7/9KLHbCoSF9q/j9McR7KNBDAFwKtHuCYmklvB+iSCiQiKaU WwAOoo3Hvpg8NEf9F4QM4hqxzqgwZWgwl1l/ItXCSwhfs/c2PXqqNpLN7hfoD8FIcd+X YLLFJLyRBMjB8ArUXzI7u+dd6pB6gZ2VBFkPo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=f3WX2mXipwPUeqMjFi0XTozGuAdC5Bc23d/IQOUGZzjmn/SEiSpSWw1mUDwlxXjX7K vNsgqRmYU7P/1rWK4tPjg5z0Nc+bMZsKOimE1ZjOSLsWJolL7sB5chjNVD1IBL3Cr+8w wv4U+PJB6Vd5sybXAzavvIpEfMxMCTQD78kBE= Received: by 10.187.160.1 with SMTP id m1mr647856fao.72.1222140303238; Mon, 22 Sep 2008 20:25:03 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Mon, 22 Sep 2008 20:25:03 -0700 (PDT) Message-ID: <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> Date: Mon, 22 Sep 2008 21:25:03 -0600 From: "Alex Hunsaker" To: "Tom Lane" Subject: Re: hash index improving v3 Cc: "Kenneth Marshall" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <7246.1221445012@sss.pgh.pa.us> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/146 X-Sequence-Number: 7161 On Sun, Sep 14, 2008 at 8:16 PM, Tom Lane wrote: > BTW, one thing I noticed was that the hash index build time for the > "wide column" case got a lot worse after applying the patch (from 56 to > 237 sec). The reason for this turned out to be that with the smaller > predicted index size, the code decided not to use the pre-sorting method > that was recently added. Reducing effective_cache_size to less than the > index size brought the time back down, to about 54 sec. So it would > seem that effective_cache_size is too large a cutoff value. I'm > considering changing hashbuild to switch over at shared_buffers instead > of effective_cache_size --- any thoughts about that? Switching to shared_buffers gets my vote, on my test table with 50,000,000 rows it takes about 8 minutes to create an index using the default effective_cache_size. With effective_cache_size set to 6GB (machine has 8GB) its still going an hour later. From jonah.harris@gmail.com Tue Sep 23 03:31:02 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id B399864FC21 for ; Tue, 23 Sep 2008 00:31:02 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 14127-03 for ; Tue, 23 Sep 2008 00:31:00 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.171]) by postgresql.org (Postfix) with ESMTP id 0BAD864FC20 for ; Tue, 23 Sep 2008 00:30:59 -0300 (ADT) Received: by wf-out-1314.google.com with SMTP id 25so2041944wfc.28 for ; Mon, 22 Sep 2008 20:30:58 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=hIykgcwv/6aTZJipThnJ8YoqYIKtPjHxZsK8mLRYvgc=; b=aUgdBZ/VQV9DrAKGXEQ7g32sjSInY21nrd+DvmnrXY13zDeT7p2520z4BqKbkfPdkZ bopfrT3ymC7WXeAgZJPmXmj8ortWCzD25kXmjWixw39GYFfGpNDGy3BOpX50r9bmsnnn X0ilXD4mUnsjqsKeuqImgm1Pn6VLmziWuY26k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=D4wIccnxxwY5NestFT9lCBJPsfqp4HSr/MDsioh9rrzhxRvUFKqTZRfHruTeQqcBtI WQ0xZyFEnRDhNJVJqaETN9/RwhRNyPt0LDO+0iLOP2i7syU7GupvbOMZx7Pc6RtSj3sk dCK0NnmEKou9Z6nweaXo1OgF0hf3EVpkvE8tY= Received: by 10.142.218.4 with SMTP id q4mr1770261wfg.273.1222140658744; Mon, 22 Sep 2008 20:30:58 -0700 (PDT) Received: by 10.143.16.11 with HTTP; Mon, 22 Sep 2008 20:30:58 -0700 (PDT) Message-ID: <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> Date: Mon, 22 Sep 2008 23:30:58 -0400 From: "Jonah H. Harris" To: "Alex Hunsaker" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Kenneth Marshall" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org In-Reply-To: <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/147 X-Sequence-Number: 7162 On Mon, Sep 22, 2008 at 11:25 PM, Alex Hunsaker wrote: > On Sun, Sep 14, 2008 at 8:16 PM, Tom Lane wrote: >> BTW, one thing I noticed was that the hash index build time for the >> "wide column" case got a lot worse after applying the patch (from 56 to >> 237 sec). The reason for this turned out to be that with the smaller >> predicted index size, the code decided not to use the pre-sorting method >> that was recently added. Reducing effective_cache_size to less than the >> index size brought the time back down, to about 54 sec. So it would >> seem that effective_cache_size is too large a cutoff value. I'm >> considering changing hashbuild to switch over at shared_buffers instead >> of effective_cache_size --- any thoughts about that? > > Switching to shared_buffers gets my vote, on my test table with > 50,000,000 rows it takes about 8 minutes to create an index using the > default effective_cache_size. With effective_cache_size set to 6GB > (machine has 8GB) its still going an hour later. Agreed. I think using shared_buffers as a cutoff is a much better idea as well. -- Jonah H. Harris, Senior DBA myYearbook.com From badalex@gmail.com Tue Sep 23 03:43:19 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 04C5C64FC21 for ; Tue, 23 Sep 2008 00:43:19 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 15304-09 for ; Tue, 23 Sep 2008 00:43:16 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from fk-out-0910.google.com (fk-out-0910.google.com [209.85.128.184]) by postgresql.org (Postfix) with ESMTP id 54F5D64FC20 for ; Tue, 23 Sep 2008 00:43:16 -0300 (ADT) Received: by fk-out-0910.google.com with SMTP id e30so1929636fke.3 for ; Mon, 22 Sep 2008 20:43:14 -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:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=pnpNCbjtBfgl+WmFSz/tVzAoz0mt51YGcEBwCGg4Iq8=; b=GdFcS5grIOaAXeJ/euSPdH/fsqxpAaBiusocL0nemEAyfGfxZQfT0tzz2zYVDJb2Na lYxKbgdcF3CwUtJQsI6UbrrnUNA+qA8ewmmA86eTTk4l/shuf+VDEDmK95anbW7AmfI2 tGWLrpGEaIrKDOSg129g5dS9pY8wmvO07+L4M= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=MAGlPdBJSZkI+jTfmEjdNZAFG5Pw0zXAN7JFaaj3mEb69FaDDJiZj6uybrU/YNgTks pfcd5WUMF3ab9UkcAPXPdXLpAdMXh96rEhbbjy5lk/akM99WkHJJVhM1Z/eUMzzYpEc4 yPKiZDjQHJjGAotDhBaOtHrzCSSFCN9IJeEb0= Received: by 10.187.194.1 with SMTP id w1mr648767fap.41.1222141394800; Mon, 22 Sep 2008 20:43:14 -0700 (PDT) Received: by 10.187.225.11 with HTTP; Mon, 22 Sep 2008 20:43:14 -0700 (PDT) Message-ID: <34d269d40809222043k39994e71k56c09703ce21b789@mail.gmail.com> Date: Mon, 22 Sep 2008 21:43:14 -0600 From: "Alex Hunsaker" To: "Kenneth Marshall" Subject: Re: hash index improving v3 Cc: "Tom Lane" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org, "Jonah H. Harris" In-Reply-To: <34d269d40809221857m265d27bek29abadf934e19660@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <20080909134839.GC6714@it.is.rice.edu> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <34d269d40809221857m265d27bek29abadf934e19660@mail.gmail.com> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/148 X-Sequence-Number: 7163 On Mon, Sep 22, 2008 at 7:57 PM, Alex Hunsaker wrote: > 50,000,000 rows and 32,768,000 collisions I should mention thats 50 million rows + 32 million more or 62,768,000 rows which explains some of the added index creation time... > index time: > head: 576600.967 ms > v5 : 487949.490 ms From tgl@sss.pgh.pa.us Tue Sep 23 04:06:12 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 520D364FC22 for ; Tue, 23 Sep 2008 01:06:12 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 20076-02 for ; Tue, 23 Sep 2008 01:06:04 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 4BF3664FC21 for ; Tue, 23 Sep 2008 01:06:02 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m8N45xVU017324; Tue, 23 Sep 2008 00:05:59 -0400 (EDT) To: "Jonah H. Harris" cc: "Alex Hunsaker" , "Kenneth Marshall" , "Xiao Meng" , "Zdenek Kotala" , pgsql-patches@postgresql.org Subject: Re: hash index improving v3 In-reply-to: <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> Comments: In-reply-to "Jonah H. Harris" message dated "Mon, 22 Sep 2008 23:30:58 -0400" Date: Tue, 23 Sep 2008 00:05:59 -0400 Message-ID: <17323.1222142759@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/149 X-Sequence-Number: 7164 "Jonah H. Harris" writes: > On Mon, Sep 22, 2008 at 11:25 PM, Alex Hunsaker wrote: >> On Sun, Sep 14, 2008 at 8:16 PM, Tom Lane wrote: >>> I'm considering changing hashbuild to switch over at shared_buffers instead >>> of effective_cache_size --- any thoughts about that? >> >> Switching to shared_buffers gets my vote, on my test table with >> 50,000,000 rows it takes about 8 minutes to create an index using the >> default effective_cache_size. With effective_cache_size set to 6GB >> (machine has 8GB) its still going an hour later. > Agreed. I think using shared_buffers as a cutoff is a much better idea as well. Already done in CVS a week or so back, but thanks for following up with some confirmation. regards, tom lane From simon@2ndQuadrant.com Tue Sep 23 04:30:31 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 7CA2364FC20 for ; Tue, 23 Sep 2008 01:30:31 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 23212-03 for ; Tue, 23 Sep 2008 01:30:20 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail136189.authsmtp.net (outmail136189.authsmtp.net [62.13.136.189]) by postgresql.org (Postfix) with ESMTP id 7CFFB64FC0A for ; Tue, 23 Sep 2008 01:30:12 -0300 (ADT) Received: from mail-c187.authsmtp.com (mail-c187.authsmtp.com [62.13.128.33]) by punt6.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8N4UA1m016786; Tue, 23 Sep 2008 05:30:10 +0100 (BST) Received: from [192.168.0.3] (85-211-71-126.dyn.gotadsl.co.uk [85.211.71.126]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8N4UAD3069188; Tue, 23 Sep 2008 05:30:10 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Tom Lane Cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org In-Reply-To: <17323.1222142759@sss.pgh.pa.us> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> Content-Type: text/plain Date: Tue, 23 Sep 2008 05:31:02 +0100 Message-Id: <1222144262.4445.265.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 4f026350-8928-11dd-8155-001185d377ca X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksacRtFagZbflxB HGQLW1xEUFh7WmN/ agofZQBDYEtPQQJr TklLRE1QEQdtHhxP WxZgVnwDAwZGfndx bU4sXXFdWQp+I0Z/ RE1RFXAObGVodWEe BBRFfwJRdR5Kfh5E YlUrV3QKMjRJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE1p X-Authentic-SMTP: 61633235383639.squirrel.dmpriest.net.uk:1374/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/150 X-Sequence-Number: 7165 On Tue, 2008-09-23 at 00:05 -0400, Tom Lane wrote: > "Jonah H. Harris" writes: > > On Mon, Sep 22, 2008 at 11:25 PM, Alex Hunsaker wrote: > >> On Sun, Sep 14, 2008 at 8:16 PM, Tom Lane wrote: > >>> I'm considering changing hashbuild to switch over at shared_buffers instead > >>> of effective_cache_size --- any thoughts about that? > >> > >> Switching to shared_buffers gets my vote, on my test table with > >> 50,000,000 rows it takes about 8 minutes to create an index using the > >> default effective_cache_size. With effective_cache_size set to 6GB > >> (machine has 8GB) its still going an hour later. > > > Agreed. I think using shared_buffers as a cutoff is a much better idea as well. > > Already done in CVS a week or so back, but thanks for following up with > some confirmation. I think nobody noticed that change, or the discussion. I wasn't very happy with effective_cache_size and not happy with shared_buffers either. If building hash indexes is memory critical then we just need to say so and encourage others to set memory use correctly. People are already aware that maintenance_work_mem needs to be increased for large index builds and we will confuse people if we ignore that and use another parameter instead. At the very least, a controllable parameter is the only appropriate choice for production systems, not one that cannot be changed without restart. It would also throw away any chance of having pg_restore of hash indexes run in parallel, since it will not be able to control memory usage. Setting maintenance_work_mem higher than shared buffers is easily possible now and we should just use that rather than try to prejudge how people will and can configure their systems. If maintenance_work_mem default is too low, lets increase it. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From tgl@sss.pgh.pa.us Tue Sep 23 04:48:57 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 3219464FC0A for ; Tue, 23 Sep 2008 01:48:57 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 25982-09 for ; Tue, 23 Sep 2008 01:48:54 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 55CCA64FC04 for ; Tue, 23 Sep 2008 01:48:54 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m8N4maM9018050; Tue, 23 Sep 2008 00:48:36 -0400 (EDT) To: Simon Riggs cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org Subject: Re: hash index improving v3 In-reply-to: <1222144262.4445.265.camel@ebony.2ndQuadrant> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> Comments: In-reply-to Simon Riggs message dated "Tue, 23 Sep 2008 05:31:02 +0100" Date: Tue, 23 Sep 2008 00:48:36 -0400 Message-ID: <18049.1222145316@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/151 X-Sequence-Number: 7166 Simon Riggs writes: > I wasn't very happy with effective_cache_size and not happy with > shared_buffers either. If building hash indexes is memory critical then > we just need to say so and encourage others to set memory use correctly. > People are already aware that maintenance_work_mem needs to be increased > for large index builds and we will confuse people if we ignore that and > use another parameter instead. I think you've got this completely backwards. The general theory about maintenance_work_mem is "set it as large as you can stand it". The issue at hand here is that the crossover point for hash index sort building seems to be a good deal less than all-the-memory-you-have. Perhaps there is a case for giving this behavior its very own configuration parameter; but seeing that we still don't have all that much of a use case for hash indexes at all, I don't feel a need to do that yet. In any case, tying it to maintenance_work_mem is certainly wrong. regards, tom lane From simon@2ndQuadrant.com Tue Sep 23 05:14:49 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 92FBB64FC1A for ; Tue, 23 Sep 2008 02:14:49 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 29392-07 for ; Tue, 23 Sep 2008 02:14:46 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail128142.authsmtp.net (outmail128142.authsmtp.net [62.13.128.142]) by postgresql.org (Postfix) with ESMTP id 9CA9864FC17 for ; Tue, 23 Sep 2008 02:14:46 -0300 (ADT) Received: from mail-c187.authsmtp.com (mail-c187.authsmtp.com [62.13.128.33]) by punt2.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8N5Eh2K076122; Tue, 23 Sep 2008 06:14:43 +0100 (BST) Received: from [192.168.0.3] (85-211-71-126.dyn.gotadsl.co.uk [85.211.71.126]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8N5EgPx077710; Tue, 23 Sep 2008 06:14:43 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Tom Lane Cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org In-Reply-To: <18049.1222145316@sss.pgh.pa.us> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> <18049.1222145316@sss.pgh.pa.us> Content-Type: text/plain Date: Tue, 23 Sep 2008 06:15:36 +0100 Message-Id: <1222146936.4445.290.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 8818e07a-892e-11dd-8155-001185d377ca X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksacRtFagZbflxB HGQLW1xEUFt7WGd/ bwkfZQBDYEtPQQJr TklLRE1QEQdtHhxP WxZgV2wlF01Gf3l3 ZEYsXHhSVApyfUd1 F05TRHAObGU1dWEe BBRFfwJRdR5Kfh5E YlUrV3QKMjRJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE1p X-Authentic-SMTP: 61633235383639.squirrel.dmpriest.net.uk:1374/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/152 X-Sequence-Number: 7167 On Tue, 2008-09-23 at 00:48 -0400, Tom Lane wrote: > Simon Riggs writes: > > I wasn't very happy with effective_cache_size and not happy with > > shared_buffers either. If building hash indexes is memory critical then > > we just need to say so and encourage others to set memory use correctly. > > People are already aware that maintenance_work_mem needs to be increased > > for large index builds and we will confuse people if we ignore that and > > use another parameter instead. > > I think you've got this completely backwards. The general theory about > maintenance_work_mem is "set it as large as you can stand it". The > issue at hand here is that the crossover point for hash index sort > building seems to be a good deal less than all-the-memory-you-have. There's an optimal point for btree builds using sorts that is a good deal less also, so I don't get that. Plus, if you give it all-the-memory-you-have there won't be anything left for anything else. You might set it that high for an empty database load but you don't set it that high in production unless you want to see swapping when you create large indexes. maintenance_work_mem is already used for 3 separate operations that bear little resemblance to each other. If it's appropriate for all of those then its appropriate for this usage also. Doing it otherwise is going to mean more than 50% of people do the wrong thing, which would be a shame because what's been done looks very cool. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From tgl@sss.pgh.pa.us Tue Sep 23 12:17:03 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 72D8264FC0E for ; Tue, 23 Sep 2008 09:17:03 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 06430-06 for ; Tue, 23 Sep 2008 09:17:00 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 5E8FF64FC0D for ; Tue, 23 Sep 2008 09:17:00 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m8NCGZaD025194; Tue, 23 Sep 2008 08:16:35 -0400 (EDT) To: Simon Riggs cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org Subject: Re: hash index improving v3 In-reply-to: <1222146936.4445.290.camel@ebony.2ndQuadrant> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> <18049.1222145316@sss.pgh.pa.us> <1222146936.4445.290.camel@ebony.2ndQuadrant> Comments: In-reply-to Simon Riggs message dated "Tue, 23 Sep 2008 06:15:36 +0100" Date: Tue, 23 Sep 2008 08:16:34 -0400 Message-ID: <25193.1222172194@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/153 X-Sequence-Number: 7168 Simon Riggs writes: > maintenance_work_mem is already used for 3 separate operations that bear > little resemblance to each other. If it's appropriate for all of those > then its appropriate for this usage also. No, it isn't. The fundamental point here is that this isn't a memory allocation parameter; it's a switchover threshold between two different behaviors. regards, tom lane From simon@2ndQuadrant.com Tue Sep 23 13:04:29 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 17FE664FC1C for ; Tue, 23 Sep 2008 10:04:29 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 15900-01 for ; Tue, 23 Sep 2008 10:04:24 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail137074.authsmtp.com (outmail137074.authsmtp.com [62.13.137.74]) by postgresql.org (Postfix) with ESMTP id 8908664FC15 for ; Tue, 23 Sep 2008 10:04:24 -0300 (ADT) Received: from mail-c189.authsmtp.com (mail-c189.authsmtp.com [62.13.128.71]) by punt4.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8ND4Mlf029183; Tue, 23 Sep 2008 14:04:22 +0100 (BST) Received: from [192.168.0.3] (85-211-71-126.dyn.gotadsl.co.uk [85.211.71.126]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8ND4KHx019439; Tue, 23 Sep 2008 14:04:20 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Tom Lane Cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org In-Reply-To: <25193.1222172194@sss.pgh.pa.us> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> <18049.1222145316@sss.pgh.pa.us> <1222146936.4445.290.camel@ebony.2ndQuadrant> <25193.1222172194@sss.pgh.pa.us> Content-Type: text/plain Date: Tue, 23 Sep 2008 14:05:15 +0100 Message-Id: <1222175115.4445.344.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 235decb6-8970-11dd-bc7a-001f29070be2 X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksacRtFagZbflxB HGQLW1xEUVl7WWd/ aQsfZQBDYEtPQQJr TklLRE1QEQdtHhxP WxZgJh0JD01GeXd0 Zk8sXHVeWAp4dkMp Fx0GE3AObGBgdWEe BBRFJVBTIR5Kfh4T aFl/U3NfNGdJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE1p X-Authentic-SMTP: 61633235383639.kestrel.dmpriest.net.uk:1374/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/154 X-Sequence-Number: 7169 On Tue, 2008-09-23 at 08:16 -0400, Tom Lane wrote: > Simon Riggs writes: > > maintenance_work_mem is already used for 3 separate operations that bear > > little resemblance to each other. If it's appropriate for all of those > > then its appropriate for this usage also. > > No, it isn't. > > The fundamental point here is that this isn't a memory allocation > parameter; it's a switchover threshold between two different behaviors. That's a little confusing since sorts switch their behaviour also, but use (some form of) work_mem, which is *also* their max allocation. I see the difficulty in understanding the algorithm's behaviour now. So shared_buffers is the wrong parameter, but even if we had a parameter it would be very difficult to set it. Thinks: Why not just sort all of the time and skip the debate entirely? I thought the main use case was for larger indexes, since that's when the number of levels in the index is significantly less than btrees? Do we need to optimise creation time of smaller hash indexes at all? -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From tgl@sss.pgh.pa.us Tue Sep 23 13:13:44 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 7B5F664FC1C for ; Tue, 23 Sep 2008 10:13:44 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 16915-06 for ; Tue, 23 Sep 2008 10:13:37 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id 7FBD064FC15 for ; Tue, 23 Sep 2008 10:13:37 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.2/8.14.2) with ESMTP id m8NDDEA4026333; Tue, 23 Sep 2008 09:13:14 -0400 (EDT) To: Simon Riggs cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org Subject: Re: hash index improving v3 In-reply-to: <1222175115.4445.344.camel@ebony.2ndQuadrant> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> <18049.1222145316@sss.pgh.pa.us> <1222146936.4445.290.camel@ebony.2ndQuadrant> <25193.1222172194@sss.pgh.pa.us> <1222175115.4445.344.camel@ebony.2ndQuadrant> Comments: In-reply-to Simon Riggs message dated "Tue, 23 Sep 2008 14:05:15 +0100" Date: Tue, 23 Sep 2008 09:13:14 -0400 Message-ID: <26331.1222175594@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/155 X-Sequence-Number: 7170 Simon Riggs writes: > Thinks: Why not just sort all of the time and skip the debate entirely? The sort is demonstrably a loser for smaller indexes. Admittedly, if the index is small then the sort can't cost all that much, but if the (correct) threshold is some large fraction of shared_buffers then it could still take awhile on installations with lots-o-buffers. The other side of that coin is that it's not clear this is really worth arguing about, much less exposing a separate parameter for. regards, tom lane From simon@2ndQuadrant.com Tue Sep 23 13:26:17 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id DA1C464FC1C for ; Tue, 23 Sep 2008 10:26:17 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 19047-10 for ; Tue, 23 Sep 2008 10:26:12 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail137074.authsmtp.com (outmail137074.authsmtp.com [62.13.137.74]) by postgresql.org (Postfix) with ESMTP id E042864FC21 for ; Tue, 23 Sep 2008 10:26:11 -0300 (ADT) Received: from mail-c187.authsmtp.com (mail-c187.authsmtp.com [62.13.128.33]) by punt4.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8NDQAHk049216; Tue, 23 Sep 2008 14:26:10 +0100 (BST) Received: from [192.168.0.3] (85-211-71-126.dyn.gotadsl.co.uk [85.211.71.126]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8NDQ7O8034158; Tue, 23 Sep 2008 14:26:07 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Tom Lane Cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org In-Reply-To: <26331.1222175594@sss.pgh.pa.us> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> <18049.1222145316@sss.pgh.pa.us> <1222146936.4445.290.camel@ebony.2ndQuadrant> <25193.1222172194@sss.pgh.pa.us> <1222175115.4445.344.camel@ebony.2ndQuadrant> <26331.1222175594@sss.pgh.pa.us> Content-Type: text/plain Date: Tue, 23 Sep 2008 14:27:02 +0100 Message-Id: <1222176422.4445.354.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 2e6dfcc1-8973-11dd-8155-001185d377ca X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksacRtFagZbflxB HGQLW1xEUVl7W2V/ awIfZQBDYEtPQQJr TklLRE1QEQdtHhxP WxZgJnh1CA1Ge3px YE4sX3dcXwp4IEAp FB0HFHAObGBjdWEe BBRFfwJRdR5Kfh5E YlUrV3QKMjRJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE1p X-Authentic-SMTP: 61633235383639.squirrel.dmpriest.net.uk:1374/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/156 X-Sequence-Number: 7171 On Tue, 2008-09-23 at 09:13 -0400, Tom Lane wrote: > The other side of that coin is that it's not clear this is really worth > arguing about, much less exposing a separate parameter for. Agreed. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From simon@2ndQuadrant.com Tue Sep 23 13:34:10 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 0A2E264FC20 for ; Tue, 23 Sep 2008 10:34:10 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 20053-09 for ; Tue, 23 Sep 2008 10:34:04 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail128097.authsmtp.com (outmail128097.authsmtp.com [62.13.128.97]) by postgresql.org (Postfix) with ESMTP id 17BFD64FC0D for ; Tue, 23 Sep 2008 10:34:03 -0300 (ADT) Received: from mail-c189.authsmtp.com (mail-c189.authsmtp.com [62.13.128.71]) by punt5.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8NDXqNp094496; Tue, 23 Sep 2008 14:33:52 +0100 (BST) Received: from [192.168.0.3] (85-211-71-126.dyn.gotadsl.co.uk [85.211.71.126]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8NDXocw036229; Tue, 23 Sep 2008 14:33:50 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Tom Lane Cc: "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org In-Reply-To: <26331.1222175594@sss.pgh.pa.us> References: <34d269d40809052249h59750f83v4b19a50d0555580@mail.gmail.com> <34d269d40809091823t204e252fl246443be71aed9ff@mail.gmail.com> <20080910130401.GG6714@it.is.rice.edu> <34d269d40809102049y2599a381kf409c0b5f18b6170@mail.gmail.com> <34d269d40809102117g470c4d25l55be7898fc43fc40@mail.gmail.com> <20080911152437.GM6714@it.is.rice.edu> <34d269d40809111951s7bac44cfk5dc9244693dd777c@mail.gmail.com> <20080912142921.GB26773@it.is.rice.edu> <7246.1221445012@sss.pgh.pa.us> <34d269d40809222025k2b2252dft89db471649c8eef8@mail.gmail.com> <36e682920809222030k49293e85jc57429296c5d2d76@mail.gmail.com> <17323.1222142759@sss.pgh.pa.us> <1222144262.4445.265.camel@ebony.2ndQuadrant> <18049.1222145316@sss.pgh.pa.us> <1222146936.4445.290.camel@ebony.2ndQuadrant> <25193.1222172194@sss.pgh.pa.us> <1222175115.4445.344.camel@ebony.2ndQuadrant> <26331.1222175594@sss.pgh.pa.us> Content-Type: text/plain Date: Tue, 23 Sep 2008 14:34:39 +0100 Message-Id: <1222176879.4445.361.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 422a1c80-8974-11dd-bc7a-001f29070be2 X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksacRtFagZbflxB HGQLW1xEUVl7WmB/ bgsfZQBDYEtPQQJr TklLRE1QEQdtHhxP WxZgJnEtJEJGe3hy Z08sXHNTXAp+d0Qs Qx1cFXAObGBkdWEe BBRFJVBTIR5Kfh4T aFl/U3NfNGdJBC9q VzwLFgwaHRhkHWxV SxoNZVMUTUsbVj85 XwoFAzQpEgUbHE1p X-Authentic-SMTP: 61633235383639.kestrel.dmpriest.net.uk:1374/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/157 X-Sequence-Number: 7172 On Tue, 2008-09-23 at 09:13 -0400, Tom Lane wrote: > Simon Riggs writes: > > Thinks: Why not just sort all of the time and skip the debate entirely? > > The sort is demonstrably a loser for smaller indexes. Admittedly, > if the index is small then the sort can't cost all that much, but if > the (correct) threshold is some large fraction of shared_buffers then > it could still take awhile on installations with lots-o-buffers. The other realisation is that for large indexes, giving them more maintenance_work_mem probably will make them build faster 'cos we'll be sorting. So "give big indexes more memory" is still true *enough* to be broadly consistent, explainable and understandable. I do explain things in more detail on some courses, but pithy rules help busy people. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support From bruce@momjian.us Wed Sep 24 16:04:54 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id EDD7264FC1E for ; Wed, 24 Sep 2008 13:04:54 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 47490-08 for ; Wed, 24 Sep 2008 13:04:51 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from momjian.us (momjian.us [70.90.9.53]) by postgresql.org (Postfix) with ESMTP id 64FB264FC2A for ; Wed, 24 Sep 2008 13:04:51 -0300 (ADT) Received: (from bruce@localhost) by momjian.us (8.11.6/8.11.6) id m8OG4Mk21483; Wed, 24 Sep 2008 12:04:22 -0400 (EDT) From: Bruce Momjian Message-Id: <200809241604.m8OG4Mk21483@momjian.us> Subject: Re: hash index improving v3 In-Reply-To: <26331.1222175594@sss.pgh.pa.us> To: Tom Lane Date: Wed, 24 Sep 2008 12:04:22 -0400 (EDT) CC: Simon Riggs , "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org X-Mailer: ELM [version 2.4ME+ PL124 (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="US-ASCII" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/165 X-Sequence-Number: 7180 Can we consider this hash thread closed/completed? --------------------------------------------------------------------------- Tom Lane wrote: > Simon Riggs writes: > > Thinks: Why not just sort all of the time and skip the debate entirely? > > The sort is demonstrably a loser for smaller indexes. Admittedly, > if the index is small then the sort can't cost all that much, but if > the (correct) threshold is some large fraction of shared_buffers then > it could still take awhile on installations with lots-o-buffers. > > The other side of that coin is that it's not clear this is really worth > arguing about, much less exposing a separate parameter for. > > regards, tom lane > > -- > Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-patches -- Bruce Momjian http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. + From simon@2ndQuadrant.com Wed Sep 24 16:22:50 2008 Received: from localhost (unknown [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 2E0C964FC2D for ; Wed, 24 Sep 2008 13:22:50 -0300 (ADT) Received: from postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 52130-05 for ; Wed, 24 Sep 2008 13:22:47 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail137173.authsmtp.com (outmail137173.authsmtp.com [62.13.137.173]) by postgresql.org (Postfix) with ESMTP id F2D5664FC25 for ; Wed, 24 Sep 2008 13:22:46 -0300 (ADT) Received: from mail-c188.authsmtp.com (mail-c188.authsmtp.com [62.13.128.25]) by punt6.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8OGMejE002267; Wed, 24 Sep 2008 17:22:40 +0100 (BST) Received: from [192.168.0.3] (85-211-71-126.dyn.gotadsl.co.uk [85.211.71.126]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m8OGMcnY028974; Wed, 24 Sep 2008 17:22:39 +0100 (BST) Subject: Re: hash index improving v3 From: Simon Riggs To: Bruce Momjian Cc: Tom Lane , "Jonah H. Harris" , Alex Hunsaker , Kenneth Marshall , Xiao Meng , Zdenek Kotala , pgsql-patches@postgresql.org In-Reply-To: <200809241604.m8OG4Mk21483@momjian.us> References: <200809241604.m8OG4Mk21483@momjian.us> Content-Type: text/plain Date: Wed, 24 Sep 2008 17:23:38 +0100 Message-Id: <1222273418.4445.599.camel@ebony.2ndQuadrant> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: 01d39fe9-8a55-11dd-aecc-001871e930f4 X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksafhtFagFbflxB HGQLW1xEUVp7W2F/ aAMfZQBDYEtPQQJr TklLRE1QEQdtHhxP WxZhJWQhKWxGenZ5 YkIsVnhTEkR7IUV0 FBtdCGVXYGJ9aWFL BF0JIlAHbQNKfxdC awV2V3NbZStlM3Bw LDcaAxsREA5qYCRc WQFFLFQeTFZDHzsk XRccHDMgVVNeL2Qg X-Authentic-SMTP: 61633235383639.cat.dmpriest.net.uk:1378/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200809/166 X-Sequence-Number: 7181 On Wed, 2008-09-24 at 12:04 -0400, Bruce Momjian wrote: > Can we consider this hash thread closed/completed? Please -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support