Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1alp51-0000ek-FR for pgsql-performance@arkaria.postgresql.org; Fri, 01 Apr 2016 02:44:59 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1alp50-0008MN-Jm for pgsql-performance@arkaria.postgresql.org; Fri, 01 Apr 2016 02:44:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1alp50-0008MH-0Z for pgsql-performance@postgresql.org; Fri, 01 Apr 2016 02:44:58 +0000 Received: from mail-oi0-x22b.google.com ([2607:f8b0:4003:c06::22b]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1alp4v-0006Pa-LC for pgsql-performance@postgresql.org; Fri, 01 Apr 2016 02:44:57 +0000 Received: by mail-oi0-x22b.google.com with SMTP id o62so87349998oig.1 for ; Thu, 31 Mar 2016 19:44:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to; bh=S/KOphyPyC9337fTIClkPl6Jze4ducl2CJiI8Trzd2A=; b=jgE8ZMwvMoATCR6F2Xx/Z27ShCzxO9VPWDulLX+7hUQXO4bh/dgcFn5uOwp1qWU3Ll pdAMs6eC5OLwmm6FvcdS0sls45h6648FsC37VCAF82v+ZnNRARjKJFS8aOOp4HVnNi7q CqAquWo+fu5+hyweOiiW2I1VrA/iRlM6xo0cKCDkY4dOdkmrUXplhRAOmmxGf12SbGBU ns7HjN/Qj3vcDK/aw1pV8dysLGBbksM76oGovG08GnzFVyl16OwfvixZB5j8NVMpfFq+ +dsQ6cxEDG9YDEeDHfDJ0laINi5nDUC5gXbTnglymVXJAqq9K4BqDYrA5oxkFi93E3hQ dm+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to; bh=S/KOphyPyC9337fTIClkPl6Jze4ducl2CJiI8Trzd2A=; b=K6lpOi7rfNY6iCkBouf3GG9pGFJ1AVr2OtHtBx7he18Rubp9rabJvBcBLVCd2AejlB gDhNVTpm6WpJw2P9H4UtYhQ++FiuuYXsF+oaKkzSIp368MZm6mBkI0GoDn0P1stl8TcI qOUmQOmcC4Vmjw3iw4FrYWoRDUXYROL7Ad/fEO5htODV3lb0rZpgXO36IihDHsJan4uF hmgnVvIX7wM71Sky9c11SHstjSMhShlWOVBCODuDsLY3QOgtSPHnAOpelqhNs5ILVyJc Q9lowoP7qNR/AvspZdUPcVkbGeXL1NzvKGGO7qJBwTa4BHnWmsVJKgcuDJg+pXHC2b0q u7Yg== X-Gm-Message-State: AD7BkJI3XxjmPBqYfFvV+Zenfv9dbl+VDv5vA080lamfUbYKwExw7KkIHCQUn8cSUPLkut5Sta/GhCDpjMxSaw== MIME-Version: 1.0 X-Received: by 10.157.24.1 with SMTP id b1mr1653023ote.142.1459478690598; Thu, 31 Mar 2016 19:44:50 -0700 (PDT) Received: by 10.157.33.201 with HTTP; Thu, 31 Mar 2016 19:44:50 -0700 (PDT) Date: Thu, 31 Mar 2016 23:44:50 -0300 Message-ID: Subject: Fast HashJoin only after a cluster/recreate table From: Alexandre de Arruda Paes To: postgres performance list Content-Type: multipart/alternative; boundary=001a1141bd5ae915b7052f635c8b X-Pg-Spam-Score: -2.7 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org --001a1141bd5ae915b7052f635c8b Content-Type: text/plain; charset=UTF-8 Hi, In the query below, the planner choose an extreme slow mergejoin(380 seconds). 'Vacuum analyze' can't help. If I CLUSTER (or recreate) table ES09T1, the planner choose a faster hashjoin (about 10 seconds). But, obviously, I can't do that with the users connected. After some time after cluster(generally in the same day), the problem returns. Autovacuum is on, but the tables are vacuumed forced after pg_dump, 3 times in a day (00:00 - 12:00 - 23:00). Postgresql 9.4.5 128GB RAM/10xRAID10 SAS 15k shared_buffers = 8GB work_mem = 256MB maintenance_work_mem = 16GB random_page_cost = 2.0 effective_cache_size = 120GB db=# explain (buffers,analyze) SELECT T1.es09item, T1.es09status, T3.es09usuari, T3.es09datreq, T2.es08desdoc AS es09desdoc, T1.es09numdoc, T1.es09tipdoc AS es09tipdoc, T1.es09codemp, COALESCE( T4.es09quatre, 0) AS es09quatre FROM (((ES09T1 T1 LEFT JOIN ES08T T2 ON T2.es08tipdoc = T1.es09tipdoc) LEFT JOIN ES09T T3 ON T3.es09codemp = T1.es09codemp AND T3.es09tipdoc = T1.es09tipdoc AND T3.es09numdoc = T1.es09numdoc) LEFT JOIN (SELECT COUNT(*) AS es09quatre, es09codemp, es09tipdoc, es09numdoc FROM ES09T1 GROUP BY es09codemp, es09tipdoc, es09numdoc ) T4 ON T4.es09codemp = T1.es09codemp AND T4.es09tipdoc = T1.es09tipdoc AND T4.es09numdoc = T1.es09numdoc) WHERE (T1.es09codemp = 1) and (T3.es09datreq >= '2016-02-02' and T3.es09datreq <= '2016-02-02') and (T3.es09usuari like '%%%%%%%%%%%%%%%%%%%%') and (T1.es09tipdoc like '%%%%%') ORDER BY T1.es09codemp, T1.es09numdoc DESC, T1.es09tipdoc; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sort (cost=289546.93..289546.94 rows=2 width=78) (actual time=380405.796..380405.929 rows=2408 loops=1) Sort Key: t1.es09numdoc, t1.es09tipdoc Sort Method: quicksort Memory: 435kB Buffers: shared hit=82163 -> Merge Left Join (cost=47.09..289546.92 rows=2 width=78) (actual time=1133.077..380398.160 rows=2408 loops=1) Merge Cond: (t1.es09tipdoc = es09t1.es09tipdoc) Join Filter: ((es09t1.es09codemp = t1.es09codemp) AND (es09t1.es09numdoc = t1.es09numdoc)) Rows Removed by Join Filter: 992875295 Buffers: shared hit=82163 -> Merge Left Join (cost=46.53..49.29 rows=2 width=70) (actual time=12.206..18.155 rows=2408 loops=1) Merge Cond: (t1.es09tipdoc = t2.es08tipdoc) Buffers: shared hit=6821 -> Sort (cost=9.19..9.19 rows=2 width=44) (actual time=11.611..12.248 rows=2408 loops=1) Sort Key: t1.es09tipdoc Sort Method: quicksort Memory: 285kB Buffers: shared hit=6814 -> Nested Loop (cost=1.11..9.18 rows=2 width=44) (actual time=0.040..10.398 rows=2408 loops=1) Buffers: shared hit=6814 -> Index Scan using ad_es09t_1 on es09t t3 (cost=0.56..4.58 rows=1 width=42) (actual time=0.020..0.687 rows=1212 loops=1) Index Cond: ((es09codemp = 1) AND (es09datreq >= '2016-02-02'::date) AND (es09datreq <= '2016-02-02'::date)) Filter: (es09usuari ~~ '%%%%%%%%%%%%%%%%%%%%'::text) Buffers: shared hit=108 -> Index Scan using es09t1_pkey on es09t1 t1 (cost=0.56..4.59 rows=1 width=19) (actual time=0.006..0.007 rows=2 loops=1212) Index Cond: ((es09codemp = 1) AND (es09tipdoc = t3.es09tipdoc) AND (es09numdoc = t3.es09numdoc)) Filter: (es09tipdoc ~~ '%%%%%'::text) Buffers: shared hit=6706 -> Sort (cost=37.35..38.71 rows=547 width=32) (actual time=0.592..2.206 rows=2919 loops=1) Sort Key: t2.es08tipdoc Sort Method: quicksort Memory: 67kB Buffers: shared hit=7 -> Seq Scan on es08t t2 (cost=0.00..12.47 rows=547 width=32) (actual time=0.003..0.126 rows=547 loops=1) Buffers: shared hit=7 -> Materialize (cost=0.56..287644.85 rows=716126 width=23) (actual time=0.027..68577.800 rows=993087854 loops=1) Buffers: shared hit=75342 -> GroupAggregate (cost=0.56..278693.28 rows=716126 width=15) (actual time=0.025..4242.453 rows=3607573 loops=1) Group Key: es09t1.es09codemp, es09t1.es09tipdoc, es09t1.es09numdoc Buffers: shared hit=75342 -> Index Only Scan using es09t1_pkey on es09t1 (cost=0.56..199919.49 rows=7161253 width=15) (actual time=0.016..1625.031 rows=7160921 loops=1) Index Cond: (es09codemp = 1) Heap Fetches: 51499 Buffers: shared hit=75342 Planning time: 50.129 ms Execution time: 380419.435 ms (43 rows) db=# vacuum ANALYZE es09t1; VACUUM db=# explain SELECT T1.es09item, T1.es09status, T3.es09usuari, T3.es09datreq, T2.es08desdoc AS es09desdoc, T1.es09numdoc, T1.es09tipdoc AS es09tipdoc, T1.es09codemp, COALESCE( T4.es09quatre, 0) AS es09quatre FROM (((ES09T1 T1 LEFT JOIN ES08T T2 ON T2.es08tipdoc = T1.es09tipdoc) LEFT JOIN ES09T T3 ON T3.es09codemp = T1.es09codemp AND T3.es09tipdoc = T1.es09tipdoc AND T3.es09numdoc = T1.es09numdoc) LEFT JOIN (SELECT COUNT(*) AS es09quatre, es09codemp, es09tipdoc, e s09numdoc FROM ES09T1 GROUP BY es09codemp, es09tipdoc, es09numdoc ) T4 ON T4.es09codemp = T1.es09codemp AND T4.es09tipdoc = T1.es09tipdoc AND T4.es09numdoc = T1.es09numdoc) WHERE (T1.es09codemp = 1) and (T3.es09datreq >= '2016-02-02' and T3.es09datreq <= '2016-02-02') and (T3.es09usuari like '%%%%%%%%%%%%%%%%%%%%') and (T1.es09tipdoc like '%%%%%') ORDER BY T1.es09codemp, T1.es09numdoc DESC, T1.es09tipdoc; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------- Sort (cost=288400.09..288400.09 rows=2 width=78) Sort Key: t1.es09numdoc, t1.es09tipdoc -> Merge Left Join (cost=46.22..288400.08 rows=2 width=78) Merge Cond: (t1.es09tipdoc = es09t1.es09tipdoc) Join Filter: ((es09t1.es09codemp = t1.es09codemp) AND (es09t1.es09numdoc = t1.es09numdoc)) -> Merge Left Join (cost=45.66..48.43 rows=2 width=70) Merge Cond: (t1.es09tipdoc = t2.es08tipdoc) -> Sort (cost=9.19..9.19 rows=2 width=44) Sort Key: t1.es09tipdoc -> Nested Loop (cost=1.11..9.18 rows=2 width=44) -> Index Scan using ad_es09t_1 on es09t t3 (cost=0.56..4.58 rows=1 width=42) Index Cond: ((es09codemp = 1) AND (es09datreq >= '2016-02-02'::date) AND (es09datreq <= '2016-02-02'::date)) Filter: (es09usuari ~~ '%%%%%%%%%%%%%%%%%%%%'::text) -> Index Scan using es09t1_pkey on es09t1 t1 (cost=0.56..4.59 rows=1 width=19) Index Cond: ((es09codemp = 1) AND (es09tipdoc = t3.es09tipdoc) AND (es09numdoc = t3.es09numdoc)) Filter: (es09tipdoc ~~ '%%%%%'::text) -> Sort (cost=36.47..37.84 rows=549 width=32) Sort Key: t2.es08tipdoc -> Seq Scan on es08t t2 (cost=0.00..11.49 rows=549 width=32) -> Materialize (cost=0.56..286496.26 rows=716037 width=23) -> GroupAggregate (cost=0.56..277545.79 rows=716037 width=15) Group Key: es09t1.es09codemp, es09t1.es09tipdoc, es09t1.es09numdoc -> Index Only Scan using es09t1_pkey on es09t1 (cost=0.56..198781.81 rows=7160361 width=15) Index Cond: (es09codemp = 1) (24 rows) ---------------------------------------------------------------------------- db=# cluster es09t1; CLUSTER db=# explain (buffers,analyze) SELECT T1.es09item, T1.es09status, T3.es09usuari, T3.es09datreq, T2.es08desdoc AS es09desdoc, T1.es09numdoc, T1.es09tipdoc AS es09tipdoc, T1.es09codemp, COALESCE( T4.es09quatre, 0) AS es09quatre FROM (((ES09T1 T1 LEFT JOIN ES08T T2 ON T2.es08tipdoc = T1.es09tipdoc) LEFT JOIN ES09T T3 ON T3.es09codemp = T1.es09codemp AND T3.es09tipdoc = T1.es09tipdoc AND T3.es09numdoc = T1.es09numdoc) LEFT JOIN (SELECT COUNT(*) AS es09quatre, es09codemp, es09tipdoc, es09numdoc FROM ES09T1 GROUP BY es09codemp, es09tipdoc, es09numdoc ) T4 ON T4.es09codemp = T1.es09codemp AND T4.es09tipdoc = T1.es09tipdoc AND T4.es09numdoc = T1.es09numdoc) WHERE (T1.es09codemp = 1) and (T3.es09datreq >= '2016-02-02' and T3.es09datreq <= '2016-02-02') and (T3.es09usuari like '%%%%%%%%%%%%%%%%%%%%') and (T1.es09tipdoc like '%%%%%') ORDER BY T1.es09codemp, T1.es09numdoc DESC, T1.es09tipdoc; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------- Sort (cost=483816.33..483816.34 rows=2 width=78) (actual time=8794.833..8795.001 rows=2408 loops=1) Sort Key: t1.es09numdoc, t1.es09tipdoc Sort Method: quicksort Memory: 435kB Buffers: shared hit=13649 read=299785 -> Nested Loop Left Join (cost=461417.89..483816.32 rows=2 width=78) (actual time=6563.106..8790.845 rows=2408 loops=1) Buffers: shared hit=13649 read=299785 -> Hash Right Join (cost=461417.61..483815.72 rows=2 width=52) (actual time=6563.082..8782.169 rows=2408 loops=1) Hash Cond: ((es09t1.es09codemp = t1.es09codemp) AND (es09t1.es09tipdoc = t1.es09tipdoc) AND (es09t1.es09numdoc = t1.es09numdoc)) Buffers: shared hit=6425 read=299785 -> HashAggregate (cost=461408.40..468575.79 rows=716739 width=15) (actual time=6548.467..7866.944 rows=3607578 loops=1) Group Key: es09t1.es09codemp, es09t1.es09tipdoc, es09t1.es09numdoc Buffers: shared hit=421 read=299566 -> Seq Scan on es09t1 (cost=0.00..389734.56 rows=7167384 width=15) (actual time=2.154..1818.148 rows=7160931 loops=1) Filter: (es09codemp = 1) Rows Removed by Filter: 11849 Buffers: shared hit=421 read=299566 -> Hash (cost=9.18..9.18 rows=2 width=44) (actual time=12.486..12.486 rows=2408 loops=1) Buckets: 1024 Batches: 1 Memory Usage: 188kB Buffers: shared hit=6004 read=219 -> Nested Loop (cost=1.11..9.18 rows=2 width=44) (actual time=0.076..11.112 rows=2408 loops=1) Buffers: shared hit=6004 read=219 -> Index Scan using ad_es09t_1 on es09t t3 (cost=0.56..4.58 rows=1 width=42) (actual time=0.035..0.743 rows=1212 loops=1) Index Cond: ((es09codemp = 1) AND (es09datreq >= '2016-02-02'::date) AND (es09datreq <= '2016-02-02'::date)) Filter: (es09usuari ~~ '%%%%%%%%%%%%%%%%%%%%'::text) Buffers: shared hit=98 read=12 -> Index Scan using es09t1_pkey on es09t1 t1 (cost=0.56..4.59 rows=1 width=19) (actual time=0.007..0.008 rows=2 loops=1212) Index Cond: ((es09codemp = 1) AND (es09tipdoc = t3.es09tipdoc) AND (es09numdoc = t3.es09numdoc)) Filter: (es09tipdoc ~~ '%%%%%'::text) Buffers: shared hit=5906 read=207 -> Index Scan using es08t_pkey on es08t t2 (cost=0.28..0.29 rows=1 width=32) (actual time=0.002..0.003 rows=1 loops=2408) Index Cond: (es08tipdoc = t1.es09tipdoc) Buffers: shared hit=7224 Planning time: 14.498 ms Execution time: 8819.824 ms (34 rows) Best regards, Alexandre --001a1141bd5ae915b7052f635c8b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+SGksPGRpdj48YnI+PC9kaXY+PGRpdj5JbiB0aGUgcXVlcnkgYmVsb3cs IHRoZSBwbGFubmVyIGNob29zZSBhbiBleHRyZW1lIHNsb3cgbWVyZ2Vqb2luKDM4MCBzZWNvbmRz KS4gJiMzOTtWYWN1dW0gYW5hbHl6ZSYjMzk7IGNhbiYjMzk7dCBoZWxwLjwvZGl2PjxkaXY+SWYg SSBDTFVTVEVSIChvciByZWNyZWF0ZSkgdGFibGUgRVMwOVQxLCB0aGUgcGxhbm5lciBjaG9vc2Ug YSBmYXN0ZXIgaGFzaGpvaW4gKGFib3V0IDEwIHNlY29uZHMpLiBCdXQsIG9idmlvdXNseSwgSSBj YW4mIzM5O3QgZG8gdGhhdCB3aXRoIHRoZSB1c2VycyBjb25uZWN0ZWQuPC9kaXY+PGRpdj5BZnRl ciBzb21lIHRpbWUgYWZ0ZXIgY2x1c3RlcihnZW5lcmFsbHkgaW4gdGhlIHNhbWUgZGF5KSwgdGhl IHByb2JsZW0gcmV0dXJucy4gQXV0b3ZhY3V1bSBpcyBvbiwgYnV0IHRoZSB0YWJsZXMgYXJlIHZh Y3V1bWVkIGZvcmNlZCBhZnRlciBwZ19kdW1wLCAzIHRpbWVzIGluIGEgZGF5ICgwMDowMCAtIDEy OjAwIC0gMjM6MDApLjwvZGl2PjxkaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5Qb3N0Z3Jlc3FsIDku NC41PC9kaXY+PGRpdj4xMjhHQiBSQU0vMTB4UkFJRDEwIFNBUyAxNWs8L2Rpdj48L2Rpdj48ZGl2 PjxkaXY+c2hhcmVkX2J1ZmZlcnMgPSA4R0IgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqA8L2Rpdj48ZGl2PndvcmtfbWVtID0gMjU2TUIgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8 L2Rpdj48ZGl2Pm1haW50ZW5hbmNlX3dvcmtfbWVtID0gMTZHQjwvZGl2PjxkaXY+cmFuZG9tX3Bh Z2VfY29zdCA9IDIuMCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoMKgPC9kaXY+PGRpdj5lZmZlY3RpdmVfY2FjaGVfc2l6ZSA9 IDEyMEdCIMKgIMKgIMKgwqA8L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rp dj48ZGl2PjxkaXY+ZGI9IyBleHBsYWluIChidWZmZXJzLGFuYWx5emUpIFNFTEVDVCBUMS5lczA5 aXRlbSwgVDEuZXMwOXN0YXR1cywgVDMuZXMwOXVzdWFyaSwgVDMuZXMwOWRhdHJlcSwgVDIuZXMw OGRlc2RvYyBBUyBlczA5ZGVzZG9jLCBUMS5lczA5bnVtZG9jLCBUMS5lczA5dGlwZG9jIEFTIGVz MDl0aXBkb2MsIFQxLmVzMDljb2RlbXAsIENPQUxFU0NFKCBUNC5lczA5cXVhdHJlLCAwKSBBUyBl czA5cXVhdHJlIEZST00gKCgoRVMwOVQxIFQxIExFRlQgSk9JTiBFUzA4VCBUMiBPTiBUMi5lczA4 dGlwZG9jID0gVDEuZXMwOXRpcGRvYykgTEVGVCBKT0lOIEVTMDlUIFQzIE9OIFQzLmVzMDljb2Rl bXAgPSBUMS5lczA5Y29kZW1wIEFORCBUMy5lczA5dGlwZG9jID0gVDEuZXMwOXRpcGRvYyBBTkQg VDMuZXMwOW51bWRvYyA9IFQxLmVzMDludW1kb2MpIExFRlQgSk9JTiAoU0VMRUNUIENPVU5UKCop IEFTIGVzMDlxdWF0cmUsIGVzMDljb2RlbXAsIGVzMDl0aXBkb2MsIGVzMDludW1kb2MgRlJPTSBF UzA5VDEgR1JPVVAgQlkgZXMwOWNvZGVtcCwgZXMwOXRpcGRvYywgZXMwOW51bWRvYyApIFQ0IE9O IFQ0LmVzMDljb2RlbXAgPSBUMS5lczA5Y29kZW1wIEFORCBUNC5lczA5dGlwZG9jID0gVDEuZXMw OXRpcGRvYyBBTkQgVDQuZXMwOW51bWRvYyA9IFQxLmVzMDludW1kb2MpIFdIRVJFIChUMS5lczA5 Y29kZW1wID0gMSkgYW5kIChUMy5lczA5ZGF0cmVxICZndDs9ICYjMzk7MjAxNi0wMi0wMiYjMzk7 IGFuZCBUMy5lczA5ZGF0cmVxICZsdDs9ICYjMzk7MjAxNi0wMi0wMiYjMzk7KSBhbmQgKFQzLmVz MDl1c3VhcmkgbGlrZSAmIzM5OyUlJSUlJSUlJSUlJSUlJSUlJSUlJiMzOTspIGFuZCAoVDEuZXMw OXRpcGRvYyBsaWtlICYjMzk7JSUlJSUmIzM5OykgT1JERVIgQlkgVDEuZXMwOWNvZGVtcCwgVDEu ZXMwOW51bWRvYyBERVNDLCBUMS5lczA5dGlwZG9jOzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgUVVFUlkgUExBTiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oDwvZGl2PjxkaXY+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLTwvZGl2PjxkaXY+wqBTb3J0IMKgKGNvc3Q9Mjg5NTQ2LjkzLi4yODk1NDYuOTQgcm93 cz0yIHdpZHRoPTc4KSAoYWN0dWFsIHRpbWU9MzgwNDA1Ljc5Ni4uMzgwNDA1LjkyOSByb3dzPTI0 MDggbG9vcHM9MSk8L2Rpdj48ZGl2PsKgIMKgU29ydCBLZXk6IHQxLmVzMDludW1kb2MsIHQxLmVz MDl0aXBkb2M8L2Rpdj48ZGl2PsKgIMKgU29ydCBNZXRob2Q6IHF1aWNrc29ydCDCoE1lbW9yeTog NDM1a0I8L2Rpdj48ZGl2PsKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD04MjE2MzwvZGl2PjxkaXY+ wqAgwqAtJmd0OyDCoE1lcmdlIExlZnQgSm9pbiDCoChjb3N0PTQ3LjA5Li4yODk1NDYuOTIgcm93 cz0yIHdpZHRoPTc4KSAoYWN0dWFsIHRpbWU9MTEzMy4wNzcuLjM4MDM5OC4xNjAgcm93cz0yNDA4 IGxvb3BzPTEpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoE1lcmdlIENvbmQ6ICh0MS5lczA5dGlw ZG9jID0gZXMwOXQxLmVzMDl0aXBkb2MpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoEpvaW4gRmls dGVyOiAoKGVzMDl0MS5lczA5Y29kZW1wID0gdDEuZXMwOWNvZGVtcCkgQU5EIChlczA5dDEuZXMw OW51bWRvYyA9IHQxLmVzMDludW1kb2MpKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqBSb3dzIFJl bW92ZWQgYnkgSm9pbiBGaWx0ZXI6IDk5Mjg3NTI5NTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqBC dWZmZXJzOiBzaGFyZWQgaGl0PTgyMTYzPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoC0mZ3Q7IMKg TWVyZ2UgTGVmdCBKb2luIMKgKGNvc3Q9NDYuNTMuLjQ5LjI5IHJvd3M9MiB3aWR0aD03MCkgKGFj dHVhbCB0aW1lPTEyLjIwNi4uMTguMTU1IHJvd3M9MjQwOCBsb29wcz0xKTwvZGl2PjxkaXY+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBNZXJnZSBDb25kOiAodDEuZXMwOXRpcGRvYyA9IHQyLmVzMDh0 aXBkb2MpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBo aXQ9NjgyMTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoFNvcnQgwqAo Y29zdD05LjE5Li45LjE5IHJvd3M9MiB3aWR0aD00NCkgKGFjdHVhbCB0aW1lPTExLjYxMS4uMTIu MjQ4IHJvd3M9MjQwOCBsb29wcz0xKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBTb3J0IEtleTogdDEuZXMwOXRpcGRvYzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBTb3J0IE1ldGhvZDogcXVpY2tzb3J0IMKgTWVtb3J5OiAyODVrQjwv ZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQg aGl0PTY4MTQ8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsg wqBOZXN0ZWQgTG9vcCDCoChjb3N0PTEuMTEuLjkuMTggcm93cz0yIHdpZHRoPTQ0KSAoYWN0dWFs IHRpbWU9MC4wNDAuLjEwLjM5OCByb3dzPTI0MDggbG9vcHM9MSk8L2Rpdj48ZGl2PsKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQnVmZmVyczogc2hhcmVkIGhpdD02ODE0 PC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC0mZ3Q7 IMKgSW5kZXggU2NhbiB1c2luZyBhZF9lczA5dF8xIG9uIGVzMDl0IHQzIMKgKGNvc3Q9MC41Ni4u NC41OCByb3dzPTEgd2lkdGg9NDIpIChhY3R1YWwgdGltZT0wLjAyMC4uMC42ODcgcm93cz0xMjEy IGxvb3BzPTEpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoEluZGV4IENvbmQ6ICgoZXMwOWNvZGVtcCA9IDEpIEFORCAoZXMwOWRhdHJl cSAmZ3Q7PSAmIzM5OzIwMTYtMDItMDImIzM5Ozo6ZGF0ZSkgQU5EIChlczA5ZGF0cmVxICZsdDs9 ICYjMzk7MjAxNi0wMi0wMiYjMzk7OjpkYXRlKSk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgRmlsdGVyOiAoZXMwOXVzdWFyaSB+fiAm IzM5OyUlJSUlJSUlJSUlJSUlJSUlJSUlJiMzOTs6OnRleHQpPC9kaXY+PGRpdj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBo aXQ9MTA4PC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oC0mZ3Q7IMKgSW5kZXggU2NhbiB1c2luZyBlczA5dDFfcGtleSBvbiBlczA5dDEgdDEgwqAoY29z dD0wLjU2Li40LjU5IHJvd3M9MSB3aWR0aD0xOSkgKGFjdHVhbCB0aW1lPTAuMDA2Li4wLjAwNyBy b3dzPTIgbG9vcHM9MTIxMik8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgSW5kZXggQ29uZDogKChlczA5Y29kZW1wID0gMSkgQU5EIChl czA5dGlwZG9jID0gdDMuZXMwOXRpcGRvYykgQU5EIChlczA5bnVtZG9jID0gdDMuZXMwOW51bWRv YykpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoEZpbHRlcjogKGVzMDl0aXBkb2Mgfn4gJiMzOTslJSUlJSYjMzk7Ojp0ZXh0KTwvZGl2 PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBC dWZmZXJzOiBzaGFyZWQgaGl0PTY3MDY8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg LSZndDsgwqBTb3J0IMKgKGNvc3Q9MzcuMzUuLjM4LjcxIHJvd3M9NTQ3IHdpZHRoPTMyKSAoYWN0 dWFsIHRpbWU9MC41OTIuLjIuMjA2IHJvd3M9MjkxOSBsb29wcz0xKTwvZGl2PjxkaXY+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBTb3J0IEtleTogdDIuZXMwOHRpcGRvYzwvZGl2Pjxk aXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBTb3J0IE1ldGhvZDogcXVpY2tzb3J0 IMKgTWVtb3J5OiA2N2tCPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAtJmd0OyDCoFNlcSBTY2FuIG9uIGVzMDh0IHQyIMKgKGNvc3Q9MC4wMC4uMTIuNDcg cm93cz01NDcgd2lkdGg9MzIpIChhY3R1YWwgdGltZT0wLjAwMy4uMC4xMjYgcm93cz01NDcgbG9v cHM9MSk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg QnVmZmVyczogc2hhcmVkIGhpdD03PC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoC0mZ3Q7IMKgTWF0 ZXJpYWxpemUgwqAoY29zdD0wLjU2Li4yODc2NDQuODUgcm93cz03MTYxMjYgd2lkdGg9MjMpIChh Y3R1YWwgdGltZT0wLjAyNy4uNjg1NzcuODAwIHJvd3M9OTkzMDg3ODU0IGxvb3BzPTEpPC9kaXY+ PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NzUzNDI8L2Rp dj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBHcm91cEFnZ3JlZ2F0ZSDCoChj b3N0PTAuNTYuLjI3ODY5My4yOCByb3dzPTcxNjEyNiB3aWR0aD0xNSkgKGFjdHVhbCB0aW1lPTAu MDI1Li40MjQyLjQ1MyByb3dzPTM2MDc1NzMgbG9vcHM9MSk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgR3JvdXAgS2V5OiBlczA5dDEuZXMwOWNvZGVtcCwgZXMwOXQx LmVzMDl0aXBkb2MsIGVzMDl0MS5lczA5bnVtZG9jPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NzUzNDI8L2Rpdj48ZGl2PsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBJbmRleCBPbmx5IFNjYW4gdXNpbmcg ZXMwOXQxX3BrZXkgb24gZXMwOXQxIMKgKGNvc3Q9MC41Ni4uMTk5OTE5LjQ5IHJvd3M9NzE2MTI1 MyB3aWR0aD0xNSkgKGFjdHVhbCB0aW1lPTAuMDE2Li4xNjI1LjAzMSByb3dzPTcxNjA5MjEgbG9v cHM9MSk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg SW5kZXggQ29uZDogKGVzMDljb2RlbXAgPSAxKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBIZWFwIEZldGNoZXM6IDUxNDk5PC9kaXY+PGRpdj7CoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 NzUzNDI8L2Rpdj48ZGl2PsKgUGxhbm5pbmcgdGltZTogNTAuMTI5IG1zPC9kaXY+PGRpdj7CoEV4 ZWN1dGlvbiB0aW1lOiAzODA0MTkuNDM1IG1zPC9kaXY+PGRpdj4oNDMgcm93cyk8L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmRiPSMgdmFjdXVtIEFOQUxZWkUgZXMwOXQx OzwvZGl2PjxkaXY+VkFDVVVNPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp dj5kYj0jIGV4cGxhaW4gU0VMRUNUIFQxLmVzMDlpdGVtLCBUMS5lczA5c3RhdHVzLCBUMy5lczA5 dXN1YXJpLCBUMy5lczA5ZGF0cmVxLCBUMi5lczA4ZGVzZG9jIEFTIGVzMDlkZXNkb2MsIFQxLmVz MDludW1kb2MsIFQxLmVzMDl0aXBkb2MgQVMgZXMwOXRpcGRvYywgVDEuZXMwOWNvZGVtcCwgQ09B TEVTQ0UoIFQ0LmVzMDlxdWF0cmUsIDApIEFTIGVzMDlxdWF0cmUgRlJPTSAoKChFUzA5VDEgVDEg TEVGVDwvZGl2PjxkaXY+wqBKT0lOIEVTMDhUIFQyIE9OIFQyLmVzMDh0aXBkb2MgPSBUMS5lczA5 dGlwZG9jKSBMRUZUIEpPSU4gRVMwOVQgVDMgT04gVDMuZXMwOWNvZGVtcCA9IFQxLmVzMDljb2Rl bXAgQU5EIFQzLmVzMDl0aXBkb2MgPSBUMS5lczA5dGlwZG9jIEFORCBUMy5lczA5bnVtZG9jID0g VDEuZXMwOW51bWRvYykgTEVGVCBKT0lOIChTRUxFQ1QgQ09VTlQoKikgQVMgZXMwOXF1YXRyZSwg ZXMwOWNvZGVtcCwgZXMwOXRpcGRvYywgZTwvZGl2PjxkaXY+czA5bnVtZG9jIEZST00gRVMwOVQx IEdST1VQIEJZIGVzMDljb2RlbXAsIGVzMDl0aXBkb2MsIGVzMDludW1kb2MgKSBUNCBPTiBUNC5l czA5Y29kZW1wID0gVDEuZXMwOWNvZGVtcCBBTkQgVDQuZXMwOXRpcGRvYyA9IFQxLmVzMDl0aXBk b2MgQU5EIFQ0LmVzMDludW1kb2MgPSBUMS5lczA5bnVtZG9jKSBXSEVSRSAoVDEuZXMwOWNvZGVt cCA9IDEpIGFuZCAoVDMuZXMwOWRhdHJlcSAmZ3Q7PSAmIzM5OzIwMTYtMDItMDImIzM5OyBhbmQ8 L2Rpdj48ZGl2PsKgVDMuZXMwOWRhdHJlcSAmbHQ7PSAmIzM5OzIwMTYtMDItMDImIzM5OykgYW5k IChUMy5lczA5dXN1YXJpIGxpa2UgJiMzOTslJSUlJSUlJSUlJSUlJSUlJSUlJSYjMzk7KSBhbmQg KFQxLmVzMDl0aXBkb2MgbGlrZSAmIzM5OyUlJSUlJiMzOTspIE9SREVSIEJZIFQxLmVzMDljb2Rl bXAsIFQxLmVzMDludW1kb2MgREVTQywgVDEuZXMwOXRpcGRvYzsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIFFVRVJZIFBMQU4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqA8L2Rpdj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L2Rp dj48ZGl2PsKgU29ydCDCoChjb3N0PTI4ODQwMC4wOS4uMjg4NDAwLjA5IHJvd3M9MiB3aWR0aD03 OCk8L2Rpdj48ZGl2PsKgIMKgU29ydCBLZXk6IHQxLmVzMDludW1kb2MsIHQxLmVzMDl0aXBkb2M8 L2Rpdj48ZGl2PsKgIMKgLSZndDsgwqBNZXJnZSBMZWZ0IEpvaW4gwqAoY29zdD00Ni4yMi4uMjg4 NDAwLjA4IHJvd3M9MiB3aWR0aD03OCk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgTWVyZ2UgQ29u ZDogKHQxLmVzMDl0aXBkb2MgPSBlczA5dDEuZXMwOXRpcGRvYyk8L2Rpdj48ZGl2PsKgIMKgIMKg IMKgIMKgSm9pbiBGaWx0ZXI6ICgoZXMwOXQxLmVzMDljb2RlbXAgPSB0MS5lczA5Y29kZW1wKSBB TkQgKGVzMDl0MS5lczA5bnVtZG9jID0gdDEuZXMwOW51bWRvYykpPC9kaXY+PGRpdj7CoCDCoCDC oCDCoCDCoC0mZ3Q7IMKgTWVyZ2UgTGVmdCBKb2luIMKgKGNvc3Q9NDUuNjYuLjQ4LjQzIHJvd3M9 MiB3aWR0aD03MCk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgTWVyZ2UgQ29uZDog KHQxLmVzMDl0aXBkb2MgPSB0Mi5lczA4dGlwZG9jKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAtJmd0OyDCoFNvcnQgwqAoY29zdD05LjE5Li45LjE5IHJvd3M9MiB3aWR0aD00NCk8 L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgU29ydCBLZXk6IHQxLmVz MDl0aXBkb2M8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsg wqBOZXN0ZWQgTG9vcCDCoChjb3N0PTEuMTEuLjkuMTggcm93cz0yIHdpZHRoPTQ0KTwvZGl2Pjxk aXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoEluZGV4 IFNjYW4gdXNpbmcgYWRfZXMwOXRfMSBvbiBlczA5dCB0MyDCoChjb3N0PTAuNTYuLjQuNTggcm93 cz0xIHdpZHRoPTQyKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBJbmRleCBDb25kOiAoKGVzMDljb2RlbXAgPSAxKSBBTkQgKGVzMDlk YXRyZXEgJmd0Oz0gJiMzOTsyMDE2LTAyLTAyJiMzOTs6OmRhdGUpIEFORCAoZXMwOWRhdHJlcSAm bHQ7PSAmIzM5OzIwMTYtMDItMDImIzM5Ozo6ZGF0ZSkpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEZpbHRlcjogKGVzMDl1c3Vhcmkg fn4gJiMzOTslJSUlJSUlJSUlJSUlJSUlJSUlJSYjMzk7Ojp0ZXh0KTwvZGl2PjxkaXY+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoEluZGV4IFNjYW4gdXNp bmcgZXMwOXQxX3BrZXkgb24gZXMwOXQxIHQxIMKgKGNvc3Q9MC41Ni4uNC41OSByb3dzPTEgd2lk dGg9MTkpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoEluZGV4IENvbmQ6ICgoZXMwOWNvZGVtcCA9IDEpIEFORCAoZXMwOXRpcGRvYyA9 IHQzLmVzMDl0aXBkb2MpIEFORCAoZXMwOW51bWRvYyA9IHQzLmVzMDludW1kb2MpKTwvZGl2Pjxk aXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBGaWx0 ZXI6IChlczA5dGlwZG9jIH5+ICYjMzk7JSUlJSUmIzM5Ozo6dGV4dCk8L2Rpdj48ZGl2PsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBTb3J0IMKgKGNvc3Q9MzYuNDcuLjM3Ljg0IHJvd3M9 NTQ5IHdpZHRoPTMyKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBT b3J0IEtleTogdDIuZXMwOHRpcGRvYzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAtJmd0OyDCoFNlcSBTY2FuIG9uIGVzMDh0IHQyIMKgKGNvc3Q9MC4wMC4uMTEuNDkg cm93cz01NDkgd2lkdGg9MzIpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoC0mZ3Q7IMKgTWF0ZXJp YWxpemUgwqAoY29zdD0wLjU2Li4yODY0OTYuMjYgcm93cz03MTYwMzcgd2lkdGg9MjMpPC9kaXY+ PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC0mZ3Q7IMKgR3JvdXBBZ2dyZWdhdGUgwqAoY29z dD0wLjU2Li4yNzc1NDUuNzkgcm93cz03MTYwMzcgd2lkdGg9MTUpPC9kaXY+PGRpdj7CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEdyb3VwIEtleTogZXMwOXQxLmVzMDljb2RlbXAsIGVz MDl0MS5lczA5dGlwZG9jLCBlczA5dDEuZXMwOW51bWRvYzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoEluZGV4IE9ubHkgU2NhbiB1c2luZyBlczA5dDFf cGtleSBvbiBlczA5dDEgwqAoY29zdD0wLjU2Li4xOTg3ODEuODEgcm93cz03MTYwMzYxIHdpZHRo PTE1KTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJ bmRleCBDb25kOiAoZXMwOWNvZGVtcCA9IDEpPC9kaXY+PGRpdj4oMjQgcm93cyk8L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2PmRiPSMgY2x1c3RlciBlczA5dDE7PC9kaXY+PGRpdj5DTFVTVEVS PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5kYj0jIGV4cGxhaW4gKGJ1ZmZlcnMsYW5hbHl6ZSkg U0VMRUNUIFQxLmVzMDlpdGVtLCBUMS5lczA5c3RhdHVzLCBUMy5lczA5dXN1YXJpLCBUMy5lczA5 ZGF0cmVxLCBUMi5lczA4ZGVzZG9jIEFTIGVzMDlkZXNkb2MsIFQxLmVzMDludW1kb2MsIFQxLmVz MDl0aXBkb2MgQVMgZXMwOXRpcGRvYywgVDEuZXMwOWNvZGVtcCwgQ09BTEVTQ0UoIFQ0LmVzMDlx dWF0cmUsIDApIEFTIGVzMDlxdWF0cmUgRlJPTSAoKChFUzA5VDEgVDEgTEVGVCBKT0lOIEVTMDhU IFQyIE9OIFQyLmVzMDh0aXBkb2MgPSBUMS5lczA5dGlwZG9jKSBMRUZUIEpPSU4gRVMwOVQgVDMg T04gVDMuZXMwOWNvZGVtcCA9IFQxLmVzMDljb2RlbXAgQU5EIFQzLmVzMDl0aXBkb2MgPSBUMS5l czA5dGlwZG9jIEFORCBUMy5lczA5bnVtZG9jID0gVDEuZXMwOW51bWRvYykgTEVGVCBKT0lOIChT RUxFQ1QgQ09VTlQoKikgQVMgZXMwOXF1YXRyZSwgZXMwOWNvZGVtcCwgZXMwOXRpcGRvYywgZXMw OW51bWRvYyBGUk9NIEVTMDlUMSBHUk9VUCBCWSBlczA5Y29kZW1wLCBlczA5dGlwZG9jLCBlczA5 bnVtZG9jICkgVDQgT04gVDQuZXMwOWNvZGVtcCA9IFQxLmVzMDljb2RlbXAgQU5EIFQ0LmVzMDl0 aXBkb2MgPSBUMS5lczA5dGlwZG9jIEFORCBUNC5lczA5bnVtZG9jID0gVDEuZXMwOW51bWRvYykg V0hFUkUgKFQxLmVzMDljb2RlbXAgPSAxKSBhbmQgKFQzLmVzMDlkYXRyZXEgJmd0Oz0gJiMzOTsy MDE2LTAyLTAyJiMzOTsgYW5kIFQzLmVzMDlkYXRyZXEgJmx0Oz0gJiMzOTsyMDE2LTAyLTAyJiMz OTspIGFuZCAoVDMuZXMwOXVzdWFyaSBsaWtlICYjMzk7JSUlJSUlJSUlJSUlJSUlJSUlJSUmIzM5 OykgYW5kIChUMS5lczA5dGlwZG9jIGxpa2UgJiMzOTslJSUlJSYjMzk7KSBPUkRFUiBCWSBUMS5l czA5Y29kZW1wLCBUMS5lczA5bnVtZG9jIERFU0MsIFQxLmVzMDl0aXBkb2M7PC9kaXY+PGRpdj7C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFFVRVJZIFBM QU4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8L2Rp dj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvZGl2PjxkaXY+ wqBTb3J0IMKgKGNvc3Q9NDgzODE2LjMzLi40ODM4MTYuMzQgcm93cz0yIHdpZHRoPTc4KSAoYWN0 dWFsIHRpbWU9ODc5NC44MzMuLjg3OTUuMDAxIHJvd3M9MjQwOCBsb29wcz0xKTwvZGl2PjxkaXY+ wqAgwqBTb3J0IEtleTogdDEuZXMwOW51bWRvYywgdDEuZXMwOXRpcGRvYzwvZGl2PjxkaXY+wqAg wqBTb3J0IE1ldGhvZDogcXVpY2tzb3J0IMKgTWVtb3J5OiA0MzVrQjwvZGl2PjxkaXY+wqAgwqBC dWZmZXJzOiBzaGFyZWQgaGl0PTEzNjQ5IHJlYWQ9Mjk5Nzg1PC9kaXY+PGRpdj7CoCDCoC0mZ3Q7 IMKgTmVzdGVkIExvb3AgTGVmdCBKb2luIMKgKGNvc3Q9NDYxNDE3Ljg5Li40ODM4MTYuMzIgcm93 cz0yIHdpZHRoPTc4KSAoYWN0dWFsIHRpbWU9NjU2My4xMDYuLjg3OTAuODQ1IHJvd3M9MjQwOCBs b29wcz0xKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTEzNjQ5 IHJlYWQ9Mjk5Nzg1PC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoC0mZ3Q7IMKgSGFzaCBSaWdodCBK b2luIMKgKGNvc3Q9NDYxNDE3LjYxLi40ODM4MTUuNzIgcm93cz0yIHdpZHRoPTUyKSAoYWN0dWFs IHRpbWU9NjU2My4wODIuLjg3ODIuMTY5IHJvd3M9MjQwOCBsb29wcz0xKTwvZGl2PjxkaXY+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBIYXNoIENvbmQ6ICgoZXMwOXQxLmVzMDljb2RlbXAgPSB0MS5l czA5Y29kZW1wKSBBTkQgKGVzMDl0MS5lczA5dGlwZG9jID0gdDEuZXMwOXRpcGRvYykgQU5EIChl czA5dDEuZXMwOW51bWRvYyA9IHQxLmVzMDludW1kb2MpKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTY0MjUgcmVhZD0yOTk3ODU8L2Rpdj48ZGl2 PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBIYXNoQWdncmVnYXRlIMKgKGNvc3Q9NDYx NDA4LjQwLi40Njg1NzUuNzkgcm93cz03MTY3Mzkgd2lkdGg9MTUpIChhY3R1YWwgdGltZT02NTQ4 LjQ2Ny4uNzg2Ni45NDQgcm93cz0zNjA3NTc4IGxvb3BzPTEpPC9kaXY+PGRpdj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoEdyb3VwIEtleTogZXMwOXQxLmVzMDljb2RlbXAsIGVzMDl0 MS5lczA5dGlwZG9jLCBlczA5dDEuZXMwOW51bWRvYzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTQyMSByZWFkPTI5OTU2NjwvZGl2 PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoFNlcSBTY2FuIG9u IGVzMDl0MSDCoChjb3N0PTAuMDAuLjM4OTczNC41NiByb3dzPTcxNjczODQgd2lkdGg9MTUpIChh Y3R1YWwgdGltZT0yLjE1NC4uMTgxOC4xNDggcm93cz03MTYwOTMxIGxvb3BzPTEpPC9kaXY+PGRp dj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEZpbHRlcjogKGVzMDlj b2RlbXAgPSAxKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAxMTg0OTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBCdWZmZXJzOiBzaGFyZWQgaGl0PTQyMSByZWFk PTI5OTU2NjwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAtJmd0OyDCoEhhc2ggwqAo Y29zdD05LjE4Li45LjE4IHJvd3M9MiB3aWR0aD00NCkgKGFjdHVhbCB0aW1lPTEyLjQ4Ni4uMTIu NDg2IHJvd3M9MjQwOCBsb29wcz0xKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBCdWNrZXRzOiAxMDI0IMKgQmF0Y2hlczogMSDCoE1lbW9yeSBVc2FnZTogMTg4a0I8 L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQnVmZmVyczogc2hhcmVk IGhpdD02MDA0IHJlYWQ9MjE5PC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoC0mZ3Q7IMKgTmVzdGVkIExvb3AgwqAoY29zdD0xLjExLi45LjE4IHJvd3M9MiB3aWR0aD00 NCkgKGFjdHVhbCB0aW1lPTAuMDc2Li4xMS4xMTIgcm93cz0yNDA4IGxvb3BzPTEpPC9kaXY+PGRp dj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJl ZCBoaXQ9NjAwNCByZWFkPTIxOTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAtJmd0OyDCoEluZGV4IFNjYW4gdXNpbmcgYWRfZXMwOXRfMSBvbiBlczA5 dCB0MyDCoChjb3N0PTAuNTYuLjQuNTggcm93cz0xIHdpZHRoPTQyKSAoYWN0dWFsIHRpbWU9MC4w MzUuLjAuNzQzIHJvd3M9MTIxMiBsb29wcz0xKTwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJbmRleCBDb25kOiAoKGVzMDljb2RlbXAg PSAxKSBBTkQgKGVzMDlkYXRyZXEgJmd0Oz0gJiMzOTsyMDE2LTAyLTAyJiMzOTs6OmRhdGUpIEFO RCAoZXMwOWRhdHJlcSAmbHQ7PSAmIzM5OzIwMTYtMDItMDImIzM5Ozo6ZGF0ZSkpPC9kaXY+PGRp dj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEZpbHRl cjogKGVzMDl1c3Vhcmkgfn4gJiMzOTslJSUlJSUlJSUlJSUlJSUlJSUlJSYjMzk7Ojp0ZXh0KTwv ZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBCdWZmZXJzOiBzaGFyZWQgaGl0PTk4IHJlYWQ9MTI8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSZndDsgwqBJbmRleCBTY2FuIHVzaW5nIGVzMDl0 MV9wa2V5IG9uIGVzMDl0MSB0MSDCoChjb3N0PTAuNTYuLjQuNTkgcm93cz0xIHdpZHRoPTE5KSAo YWN0dWFsIHRpbWU9MC4wMDcuLjAuMDA4IHJvd3M9MiBsb29wcz0xMjEyKTwvZGl2PjxkaXY+wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJbmRleCBDb25k OiAoKGVzMDljb2RlbXAgPSAxKSBBTkQgKGVzMDl0aXBkb2MgPSB0My5lczA5dGlwZG9jKSBBTkQg KGVzMDludW1kb2MgPSB0My5lczA5bnVtZG9jKSk8L2Rpdj48ZGl2PsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgRmlsdGVyOiAoZXMwOXRpcGRvYyB+fiAm IzM5OyUlJSUlJiMzOTs6OnRleHQpPC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NTkwNiByZWFkPTIw NzwvZGl2PjxkaXY+wqAgwqAgwqAgwqAgwqAtJmd0OyDCoEluZGV4IFNjYW4gdXNpbmcgZXMwOHRf cGtleSBvbiBlczA4dCB0MiDCoChjb3N0PTAuMjguLjAuMjkgcm93cz0xIHdpZHRoPTMyKSAoYWN0 dWFsIHRpbWU9MC4wMDIuLjAuMDAzIHJvd3M9MSBsb29wcz0yNDA4KTwvZGl2PjxkaXY+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBJbmRleCBDb25kOiAoZXMwOHRpcGRvYyA9IHQxLmVzMDl0aXBkb2Mp PC9kaXY+PGRpdj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9NzIy NDwvZGl2PjxkaXY+wqBQbGFubmluZyB0aW1lOiAxNC40OTggbXM8L2Rpdj48ZGl2PsKgRXhlY3V0 aW9uIHRpbWU6IDg4MTkuODI0IG1zPC9kaXY+PGRpdj4oMzQgcm93cyk8L2Rpdj48ZGl2Pjxicj48 L2Rpdj48ZGl2PsKgQmVzdCByZWdhcmRzLDwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ QWxleGFuZHJlPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+DQo= --001a1141bd5ae915b7052f635c8b--