Re: unexpected result for wastedbytes query after vacuum full
Guillaume Lelarge <[email protected]> Tue, 10 Dec 2019 17:43:31 +0100
| Newsgroups | gmane.comp.db.postgresql.performance |
|---|---|
| Message-ID | <CAECtzeX-BwRbgvp_40AyJAA8hdbXh3=a=f6ZEfYr+-1_wHSMjQ@mail.gmail.com> |
--0000000000000e293105995c3782 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Le ven. 6 d=C3=A9c. 2019 =C3=A0 18:18, Mike Schanne <[email protected]> a = =C3=A9crit : > Hi all, > > > > This question is somewhat related to my previous question: > > > https://www.postgresql.org/message-id/0871fcf35ceb4caa8a2204ca9c38e330%40= USEPRDEX1.corp.kns.com > > > > I was attempting to measure the benefit of doing a VACUUM FULL on my > database. I was using the query found here: > > > > https://wiki.postgresql.org/wiki/Show_database_bloat > > > > However, I got an unexpected result in that the =E2=80=9Cwastedbytes=E2= =80=9D value > actually increased for some tables after doing the vacuum. > > > > Before VACUUM FULL: > > current_database | schemaname | tablename | tbloat | > wastedbytes | > iname | ibloat | wastedibytes > > > ------------------+----------------+---------------------------+--------+= -------------+-------------------------------------------------------------= ----+--------+-------------- > > postgres | myschema | mytableA | 1.1 | > 74440704 | myindex1 > | 0.2 | 0 > > postgres | myschema | mytableA | 1.1 | > 74440704 | myindex2 > | 0.2 | 0 > > postgres | myschema | mytableA | 1.1 | > 74440704 | myindex3 > | 0.2 | 0 > > postgres | myschema | mytableA | 1.1 | > 74440704 | myindex4 > | 0.2 | 0 > > postgres | myschema | mytableB | 1.0 | > 63324160 | myindex5 > | 0.0 | 0 > > ... > > After VACUUM FULL: > > current_database | schemaname | tablename | tbloat = | > wastedbytes | > iname | ibloat | wastedibytes > > > ------------------+----------------+---------------------------+--------+= -------------+-------------------------------------------------------------= ----+--------+-------------- > > postgres | myschema | mytableA | 1.1 | > 74506240 | > myindex4 | 0.= 2 > | 0 > > postgres | myschema | mytableA | 1.1 | > 74506240 | > myindex3 | 0.= 2 > | 0 > > postgres | myschema | mytableA | 1.1 | > 74506240 | myindex2 > | 0.2 | 0 > > postgres | myschema | mytableA | 1.1 | > 74506240 | > myindex1 | 0.= 2 > | 0 > > postgres | myschema | mytableB | 1.0 | > 63332352 | > myindex5 | 0.= 0 > | 0 > > ... > > > > This is the schema for mytableA above: > > > > Column | Type | > Modifiers > > > ---------------+-----------------------------+---------------------------= ------------------------------------- > > colA | integer | not null default > nextval('myschema.myseq'::regclass) > > colB | integer | > > colC | integer | > > colD | timestamp without time zone | > > colE | json | > > colF | integer | > > colG | integer | > > > > I was wondering if the fact that we use a json column could be interferin= g > with the wastedbytes calculation. Can anyone explain how wastedbytes cou= ld > increase from a vacuum? > > > This query uses the column statistics to estimate bloat. AFAIK, json columns don't have statistics, so the estimation can't be relied on (for this specific table at least). --=20 Guillaume. --0000000000000e293105995c3782 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNs YXNzPSJnbWFpbF9hdHRyIj5MZcKgdmVuLiA2IGTDqWMuIDIwMTkgw6DCoDE4OjE4LCBNaWtlIFNj aGFubmUgJmx0OzxhIGhyZWY9Im1haWx0bzptc2NoYW5uZUBrbnMuY29tIj5tc2NoYW5uZUBrbnMu Y29tPC9hPiZndDsgYSDDqWNyaXTCoDo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBz b2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPg0KDQoNCg0KDQoNCjxkaXYg bGFuZz0iRU4tVVMiPg0KPGRpdiBjbGFzcz0iZ21haWwtbV81Nzk1MzQzMDc1ODQ2MzYxNjIwV29y ZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIGFsbCw8dT48L3U+PHU+PC91Pjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj5UaGlzIHF1ZXN0aW9uIGlzIHNvbWV3aGF0IHJlbGF0ZWQgdG8gbXkgcHJldmlv dXMgcXVlc3Rpb246PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBo cmVmPSJodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzA4NzFmY2YzNWNlYjRj YWE4YTIyMDRjYTljMzhlMzMwJTQwVVNFUFJERVgxLmNvcnAua25zLmNvbSIgdGFyZ2V0PSJfYmxh bmsiPmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMDg3MWZjZjM1Y2ViNGNh YThhMjIwNGNhOWMzOGUzMzAlNDBVU0VQUkRFWDEuY29ycC5rbnMuY29tPC9hPjx1PjwvdT48dT48 L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPkkgd2FzIGF0dGVtcHRpbmcgdG8gbWVhc3VyZSB0aGUgYmVuZWZpdCBv ZiBkb2luZyBhIFZBQ1VVTSBGVUxMIG9uIG15IGRhdGFiYXNlLsKgIEkgd2FzIHVzaW5nIHRoZSBx dWVyeSBmb3VuZCBoZXJlOjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxhIGhyZWY9Imh0dHBz Oi8vd2lraS5wb3N0Z3Jlc3FsLm9yZy93aWtpL1Nob3dfZGF0YWJhc2VfYmxvYXQiIHRhcmdldD0i X2JsYW5rIj5odHRwczovL3dpa2kucG9zdGdyZXNxbC5vcmcvd2lraS9TaG93X2RhdGFiYXNlX2Js b2F0PC9hPjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKg PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhvd2V2ZXIsIEkgZ290IGFuIHVuZXhw ZWN0ZWQgcmVzdWx0IGluIHRoYXQgdGhlIOKAnHdhc3RlZGJ5dGVz4oCdIHZhbHVlIGFjdHVhbGx5 IGluY3JlYXNlZCBmb3Igc29tZSB0YWJsZXMgYWZ0ZXIgZG9pbmcgdGhlIHZhY3V1bS7CoA0KPHU+ PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9w Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+QmVmb3JlIFZBQ1VVTSBGVUxMOjx1PjwvdT48dT48L3U+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Y3VycmVudF9kYXRhYmFzZSB8wqDCoCBzY2hlbWFu YW1lwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB0YWJsZW5hbWXCoMKgwqDCoMKgwqAgwqDCoHwgdGJs b2F0IHwgd2FzdGVkYnl0ZXMgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgaWJsb2F0IHwgd2FzdGVkaWJ5dGVzDQo8dT48 L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPi0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tPHU+PC91Pjx1PjwvdT48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5wb3N0Z3Jlc8KgwqDCoMKgwqDCoMKgwqAgfCBteXNj aGVtYSB8IG15dGFibGVBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqAgMS4xIHzCoMKgwqAgNzQ0NDA3MDQgfCBteWluZGV4McKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAwLjIgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMDx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+cG9zdGdyZXPCoMKgwqDCoMKgwqDCoMKgIHwgbXlzY2hlbWEgfCBteXRhYmxlQcKgwqDCoMKg IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgIDEuMSB8wqDCoMKgIDc0 NDQwNzA0IHwgbXlpbmRleDLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48 L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKg wqDCoCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDQ0MDcwNCB8IG15aW5kZXgzwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKg IDAuMiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwPHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFz cz0iTXNvTm9ybWFsIj5wb3N0Z3Jlc8KgwqDCoMKgwqDCoMKgwqAgfCBteXNjaGVtYSB8IG15dGFi bGVBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMS4x IHzCoMKgwqAgNzQ0NDA3MDQgfCBteWluZGV4NMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAwLjIgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMDx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+cG9zdGdyZXPC oMKgwqDCoMKgwqDCoMKgIHwgbXlzY2hlbWEgfCBteXRhYmxlQsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgIDEuMCB8wqDCoMKgIDYzMzI0MTYwIHwgbXlp bmRleDXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgwqAgMC4wIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91Pjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPi4uLjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BZnRl ciBWQUNVVU0gRlVMTDo8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPsKg IGN1cnJlbnRfZGF0YWJhc2UgfMKgwqAgc2NoZW1hbmFtZcKgwqAgfMKgwqDCoMKgwqDCoMKgwqAg dGFibGVuYW1lwqDCoMKgwqDCoMKgwqDCoCB8IHRibG9hdCB8IHdhc3RlZGJ5dGVzIHzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluYW1l wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCBpYmxvYXQgfCB3YXN0ZWRpYnl0ZXMNCjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS08dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBv c3RncmVzwqDCoMKgwqDCoMKgwqDCoCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDUwNjI0 MCB8IG15aW5kZXg0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+ PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKgwqDC oCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDUwNjI0MCB8IG15aW5kZXgzwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAg MC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKgwqDCoCB8IG15c2NoZW1hIHwgbXl0YWJs ZUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEg fMKgwqDCoCA3NDUwNjI0MCB8IG15aW5kZXgywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVz wqDCoMKgwqDCoMKgwqDCoCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDUwNjI0MCB8IG15 aW5kZXgxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91 PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKgwqDCoCB8IG15 c2NoZW1hIHwgbXl0YWJsZULCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDC oMKgfMKgwqDCoCAxLjAgfMKgwqDCoCA2MzMzMjM1MiB8IG15aW5kZXg1wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMC4wIHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29O b3JtYWwiPi4uLjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91 PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoaXMgaXMgdGhlIHNjaGVtYSBm b3IgbXl0YWJsZUEgYWJvdmU6PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48dT48L3U+wqA8dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+wqDCoMKgIENvbHVt bsKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFR5cGXCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgTW9kaWZpZXJzPHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTx1PjwvdT48 dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Y29sQcKgwqDCoMKgwqDCoMKgwqDCoCB8 IGludGVnZXLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgbm90IG51 bGwgZGVmYXVsdCBuZXh0dmFsKCYjMzk7bXlzY2hlbWEubXlzZXEmIzM5Ozo6cmVnY2xhc3MpPHU+ PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5jb2xCwqDCoMKgwqDCoMKgwqDC oMKgIHwgaW50ZWdlcsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfDx1 PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Y29sQ8KgwqDCoMKgwqDCoMKg wqDCoCB8IGludGVnZXLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8 dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPmNvbETCoMKgwqDCoMKgwqDC oMKgwqAgfCB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUgfDx1PjwvdT48dT48L3U+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+Y29sRcKgwqDCoMKgwqDCoMKgwqDCoCB8IGpzb27CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8dT48L3U+PHU+PC91Pjwv cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPmNvbEbCoMKgwqDCoMKgwqDCoMKgwqAgfCBpbnRlZ2Vy wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PHU+PC91Pjx1PjwvdT48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5jb2xHwqDCoMKgwqDCoMKgwqDCoMKgIHwgaW50ZWdl csKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfDx1PjwvdT48dT48L3U+ PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPkkgd2FzIHdvbmRlcmluZyBpZiB0aGUgZmFjdCB0aGF0IHdlIHVzZSBhIGpz b24gY29sdW1uIGNvdWxkIGJlIGludGVyZmVyaW5nIHdpdGggdGhlIHdhc3RlZGJ5dGVzIGNhbGN1 bGF0aW9uLsKgIENhbiBhbnlvbmUgZXhwbGFpbiBob3cgd2FzdGVkYnl0ZXMgY291bGQgaW5jcmVh c2UgZnJvbSBhIHZhY3V1bT88dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi Pjx1PjwvdT7CoDwvcD48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRp dj5UaGlzIHF1ZXJ5IHVzZXMgdGhlIGNvbHVtbiBzdGF0aXN0aWNzIHRvIGVzdGltYXRlIGJsb2F0 LiBBRkFJSywganNvbiBjb2x1bW5zIGRvbiYjMzk7dCBoYXZlIHN0YXRpc3RpY3MsIHNvIHRoZSBl c3RpbWF0aW9uIGNhbiYjMzk7dCBiZSByZWxpZWQgb24gKGZvciB0aGlzIHNwZWNpZmljIHRhYmxl IGF0IGxlYXN0KS48L2Rpdj48YnI+PC9kaXY+PGJyPi0tIDxicj48ZGl2IGRpcj0ibHRyIiBjbGFz cz0iZ21haWxfc2lnbmF0dXJlIj48ZGl2IGRpcj0ibHRyIj48ZGl2PjxkaXYgZGlyPSJsdHIiPjxk aXY+R3VpbGxhdW1lLjxicj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4NCg== --0000000000000e293105995c3782--