From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8EB5D42B4B for ; Fri, 19 May 2023 19:49:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8553442D32; Fri, 19 May 2023 19:49:27 +0200 (CEST) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by mails.dpdk.org (Postfix) with ESMTP id D8F5A40E09 for ; Fri, 19 May 2023 19:49:24 +0200 (CEST) Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-3f41d087b3bso35921315e9.0 for ; Fri, 19 May 2023 10:49:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684518564; x=1687110564; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=LyLO8uokEtN+uV1Bmn5pyEE2rENqKw9mxj1jNkqhl8M=; b=RMA0XgnF8bXMbmGy41wYKZ2rDxcD81jUxm7YjuWR+BY2IJxA09UTvcG0WNQ9wAPr6F U5K8hjPkmCF9r8cbQWU/hRD/EQFtd0FLMCjAW9ZyaAd1YkM5QQ7Gt3sX1EKgLe0VPesC EF2UNcGXaJnFLxnwlZSpbYObYSY5RMslChZXkcTGBHreSCjl0iq4DYMpM6K3YWHVVdgf PaJtf10wnCrAbUROo7ymdBhWc2ggZyNFEVSYzi5HdcRZnOZASug2Ozk/YvfNGTTDfVcB Rurn0rXZ3Wrt09bBGYHBYXRs2z5eUjwDLPOpienseCGzzLruT/58o7NrL8tSGeVfnHnN q4yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684518564; x=1687110564; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LyLO8uokEtN+uV1Bmn5pyEE2rENqKw9mxj1jNkqhl8M=; b=QH50Bmg2ioF690WvoLQhzq9OHk/6d/Fyl/KQOJ5BIgMy1QisZDYTvA3RI30YcXAhyl nJDltlLJYUg2FsJ5i62VPs51ZHTxw9Elofby8VxwDINCwMBath5T+BwlLKfKrwAxhBhA aAVFXv+llxEn/OmXr+BQzBoRa4BLjt82SBG3aM4QZV2dCZg97YCaylHq6H/2OlCVzqoQ sTJzqDkjWnUTj4ryKIyEk8wFtpARmnXqLhJ4H+x6Up+FIcCO8H2q5rX1TfAeDlW3Znm9 B8wNG+SN020qj12QtV1ZmlPtE8uF5CKXZpCwOEKQNdVzGHEFgUSye0Bto1ihK8JLJ6KU cigw== X-Gm-Message-State: AC+VfDyOIrPqeVWGOjxG72qLQxhTDmGnsgeCFFmA9ZFXlX8D/Vj/BDuX 66DWxIqfcS1r135PbtyBc/FNor+RpjtSYMJ9PgC9x+dOW+o= X-Google-Smtp-Source: ACHHUZ60S4ewiAxHrrW2EK2mAjJXSunxNwg2sdclhnGG2IdJvJEQFUxBYfEbg6BNRbZcjTftOSLU0zMv+0NTc6XdQeE= X-Received: by 2002:a1c:f215:0:b0:3f1:7581:eaaf with SMTP id s21-20020a1cf215000000b003f17581eaafmr1754969wmc.4.1684518564204; Fri, 19 May 2023 10:49:24 -0700 (PDT) MIME-Version: 1.0 References: <20230508091845.646caf17@hermes.local> <4f53f3be-0bae-e204-5737-7735b4a2ba5b@amd.com> In-Reply-To: <4f53f3be-0bae-e204-5737-7735b4a2ba5b@amd.com> From: Yasin CANER Date: Fri, 19 May 2023 20:47:28 +0300 Message-ID: Subject: Re: DPDK 22.11 - How to fix memory leak for KNI - How to debug To: Ferruh Yigit Cc: Stephen Hemminger , users@dpdk.org Content-Type: multipart/alternative; boundary="000000000000a3174d05fc0f8a34" X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --000000000000a3174d05fc0f8a34 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, I tested all day both before and after patching. I could not understand that it is a memory leak or not. Maybe it needs optimization. You lead, I follow. 1-) You are right, alloc_q is never bigger than 1024. But it always allocates 32 units then more than 1024 are being freed. Maybe it takes time, I don't know. 2-) I tested tx_rs_thresh via ping. After 210 sec , allocated memories are back to mempool (most of them). (driver virtio and eth-devices are binded via igb_uio) . It really takes time. So it is better to increase the size of the mempool. (https://doc.dpdk.org/guides/prog_guide/poll_mode_drv.html) 3-) try to list mempool state in randomly Test -1 -) (old code) ICMP testing. The whole mempool size is about 10350. So after FIFO reaches max-size -1024, %10 of the size of the mempool is in use. But little by little memory is waiting in use and doesn't go back to the pool. I could not find the reason. MBUF_POOL 448 9,951 4.31% [|....................] MBUF_POOL 1,947 8,452 18.72% [||||.................] MBUF_POOL 1,803 8,596 17.34% [||||.................] MBUF_POOL 1,941 8,458 18.67% [||||.................] MBUF_POOL 1,900 8,499 18.27% [||||.................] MBUF_POOL 1,999 8,400 19.22% [||||.................] MBUF_POOL 1,724 8,675 16.58% [||||.................] MBUF_POOL 1,811 8,588 17.42% [||||.................] MBUF_POOL 1,978 8,421 19.02% [||||.................] MBUF_POOL 2,008 8,391 19.31% [||||.................] MBUF_POOL 1,854 8,545 17.83% [||||.................] MBUF_POOL 1,922 8,477 18.48% [||||.................] MBUF_POOL 1,892 8,507 18.19% [||||.................] MBUF_POOL 1,957 8,442 18.82% [||||.................] Test-2 -) (old code) run iperf3 udp testing that from Kernel to eth device. Waited to see what happens in 4 min. memory doesn't go back to the mempool. little by little, memory usage increases. MBUF_POOL 512 9,887 4.92% [|....................] MBUF_POOL 1,411 8,988 13.57% [|||..................] MBUF_POOL 1,390 9,009 13.37% [|||..................] MBUF_POOL 1,558 8,841 14.98% [|||..................] MBUF_POOL 1,453 8,946 13.97% [|||..................] MBUF_POOL 1,525 8,874 14.66% [|||..................] MBUF_POOL 1,592 8,807 15.31% [||||.................] MBUF_POOL 1,639 8,760 15.76% [||||.................] MBUF_POOL 1,624 8,775 15.62% [||||.................] MBUF_POOL 1,618 8,781 15.56% [||||.................] MBUF_POOL 1,708 8,691 16.42% [||||.................] iperf is STOPPED to tx_fresh for 4 min MBUF_POOL 1,709 8,690 16.43% [||||.................] iperf is STOPPED to tx_fresh for 4 min MBUF_POOL 1,709 8,690 16.43% [||||.................] MBUF_POOL 1,683 8,716 16.18% [||||.................] MBUF_POOL 1,563 8,836 15.03% [||||.................] MBUF_POOL 1,726 8,673 16.60% [||||.................] MBUF_POOL 1,589 8,810 15.28% [||||.................] MBUF_POOL 1,556 8,843 14.96% [|||..................] MBUF_POOL 1,610 8,789 15.48% [||||.................] MBUF_POOL 1,616 8,783 15.54% [||||.................] MBUF_POOL 1,709 8,690 16.43% [||||.................] MBUF_POOL 1,740 8,659 16.73% [||||.................] MBUF_POOL 1,546 8,853 14.87% [|||..................] MBUF_POOL 1,710 8,689 16.44% [||||.................] MBUF_POOL 1,787 8,612 17.18% [||||.................] MBUF_POOL 1,579 8,820 15.18% [||||.................] MBUF_POOL 1,780 8,619 17.12% [||||.................] MBUF_POOL 1,679 8,720 16.15% [||||.................] MBUF_POOL 1,604 8,795 15.42% [||||.................] MBUF_POOL 1,761 8,638 16.93% [||||.................] MBUF_POOL 1,773 8,626 17.05% [||||.................] Test-3 -) (after patching) run iperf3 udp testing that from Kernel to eth device. looks stable. After patching , MBUF_POOL 76 10,323 0.73% [|....................] MBUF_POOL 193 10,206 1.86% [|....................] MBUF_POOL 96 10,303 0.92% [|....................] MBUF_POOL 269 10,130 2.59% [|....................] MBUF_POOL 102 10,297 0.98% [|....................] MBUF_POOL 235 10,164 2.26% [|....................] MBUF_POOL 87 10,312 0.84% [|....................] MBUF_POOL 293 10,106 2.82% [|....................] MBUF_POOL 99 10,300 0.95% [|....................] MBUF_POOL 296 10,103 2.85% [|....................] MBUF_POOL 90 10,309 0.87% [|....................] MBUF_POOL 299 10,100 2.88% [|....................] MBUF_POOL 86 10,313 0.83% [|....................] MBUF_POOL 262 10,137 2.52% [|....................] MBUF_POOL 81 10,318 0.78% [|....................] MBUF_POOL 81 10,318 0.78% [|....................] MBUF_POOL 87 10,312 0.84% [|....................] MBUF_POOL 252 10,147 2.42% [|....................] MBUF_POOL 97 10,302 0.93% [|....................] iperf is STOPPED to tx_fresh for 4 min MBUF_POOL 296 10,103 2.85% [|....................] MBUF_POOL 95 10,304 0.91% [|....................] MBUF_POOL 269 10,130 2.59% [|....................] MBUF_POOL 302 10,097 2.90% [|....................] MBUF_POOL 88 10,311 0.85% [|....................] MBUF_POOL 305 10,094 2.93% [|....................] MBUF_POOL 88 10,311 0.85% [|....................] MBUF_POOL 290 10,109 2.79% [|....................] MBUF_POOL 84 10,315 0.81% [|....................] MBUF_POOL 85 10,314 0.82% [|....................] MBUF_POOL 291 10,108 2.80% [|....................] MBUF_POOL 303 10,096 2.91% [|....................] MBUF_POOL 92 10,307 0.88% [|....................] Best regards. Ferruh Yigit , 18 May 2023 Per, 17:56 tarihinde =C5= =9Funu yazd=C4=B1: > On 5/18/2023 9:14 AM, Yasin CANER wrote: > > Hello Ferruh, > > > > Thanks for your kind response. Also thanks to Stephen. > > > > Even if 1 packet is consumed from the kernel , each time rx_kni > > allocates another 32 units. After a while all mempool is used in alloc_= q > > from kni. there is not any room for it. > > > > What you described continues until 'alloc_q' is full, by default fifo > length is 1024 (KNI_FIFO_COUNT_MAX), do you allocate less mbuf in your > mempool? > > You can consider either increasing mempool size, or decreasing 'alloc_q' > fifo length, but reducing fifo size may cause performance issues so you > need to evaluate that option. > > > Do you think my mistake is using one and common mempool usage both kni > > and eth? > > > > Using same mempool for both is fine. > > > If it needs a separate mempool , i'd like to note in docs. > > > > Best regards. > > > > Ferruh Yigit >, 17 > > May 2023 =C3=87ar, 20:53 tarihinde =C5=9Funu yazd=C4=B1: > > > > On 5/9/2023 12:13 PM, Yasin CANER wrote: > > > Hello, > > > > > > I draw a flow via asciiflow to explain myself better. Problem is > after > > > transmitting packets(mbufs) , it never puts in the kni->free_q to > back > > > to the original pool. Each cycle, it allocates another 32 units > that > > > cause leaks. Or I am missing something. > > > > > > I already tried the rte_eth_tx_done_cleanup() function but it > > didn't fix > > > anything. > > > > > > I am working on a patch to fix this issue but I am not sure if > there > > > is another way. > > > > > > Best regards. > > > > > > https://pastebin.ubuntu.com/p/s4h5psqtgZ/ > > > > > > > > > > > > > > > > unsigned > > > rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, > > unsigned > > > int num) > > > { > > > unsigned int ret =3D kni_fifo_get(kni->tx_q, (void **)mbufs, num)= ; > > > > > > /* If buffers removed, allocate mbufs and then put them into > > alloc_q */ > > > /* Question, how to test buffers is removed or not?*/ > > > if (ret) > > > kni_allocate_mbufs(kni); > > > > > > return ret; > > > } > > > > > > > Selam Yasin, > > > > > > You can expect 'kni->alloc_q' fifo to be full, this is not a memory > > leak. > > > > As you pointed out, number of mbufs consumed by kernel from 'alloc_= q' > > and number of mbufs added to 'alloc_q' is not equal and this is > > expected. > > > > Target here is to prevent buffer underflow from kernel perspective, > so > > it will always have available mbufs for new packets. > > That is why new mbufs are added to 'alloc_q' at worst same or > sometimes > > higher rate than it is consumed. > > > > You should calculate your mbuf requirement with the assumption that > > 'kni->alloc_q' will be full of mbufs. > > > > > > 'kni->alloc_q' is freed when kni is removed. > > Since 'alloc_q' holds physical address of the mbufs, it is a little > > challenging to free them in the userspace, that is why first kernel > > tries to move mbufs to 'kni->free_q' fifo, please check > > 'kni_net_release_fifo_phy()' for it. > > > > If all moved to 'free_q' fifo, nothing left to in 'alloc_q', but if > not, > > userspace frees 'alloc_q' in 'rte_kni_release()', with following > call: > > `kni_free_fifo_phy(kni->pktmbuf_pool, kni->alloc_q);` > > > > > > I can see you have submitted fixes for this issue, although as I > > explained above I don't think a defect exist, I will review them > > today/tomorrow. > > > > Regards, > > Ferruh > > > > > > > Stephen Hemminger > > > > > >>, 8 May 2023 Pzt, 19:18 > tarihinde > > > =C5=9Funu yazd=C4=B1: > > > > > > On Mon, 8 May 2023 09:01:41 +0300 > > > Yasin CANER > > >> > > > wrote: > > > > > > > Hello Stephen, > > > > > > > > Thank you for response, it helps me a lot. I understand > problem > > > better. > > > > > > > > After reading mbuf library ( > > > > https://doc.dpdk.org/guides/prog_guide/mempool_lib.html > > > > > > >) i > > > realized that > > > > 31 units allocation memory slot doesn't return to pool! > > > > > > If receive burst returns 1 mbuf, the other 31 pointers in the > > array > > > are not valid. They do not point to mbufs. > > > > > > > 1 unit mbuf can be freed via rte_pktmbuf_free so it can bac= k > > to pool. > > > > > > > > Main problem is that allocation doesn't return to original > pool, > > > act as > > > > used. So, after following rte_pktmbuf_free > > > > > > > > > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a1215458932900b7cd5192326fa4a69= 02 > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a1215458932900b7cd5192326fa4a69= 02> > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a1215458932900b7cd5192326fa4a69= 02 > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a1215458932900b7cd5192326fa4a69= 02 > >>> > > > > function, > > > > i realized that there is 2 function to helps to mbufs back > > to pool. > > > > > > > > These are rte_mbuf_raw_free > > > > > > > > > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a9f188d53834978aca01ea101576d74= 32 > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a9f188d53834978aca01ea101576d74= 32> > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a9f188d53834978aca01ea101576d74= 32 > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a9f188d53834978aca01ea101576d74= 32 > >>> > > > > and rte_pktmbuf_free_seg > > > > > > > > > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a006ee80357a78fbb9ada2b0432f82f= 37 > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a006ee80357a78fbb9ada2b0432f82f= 37> > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a006ee80357a78fbb9ada2b0432f82f= 37 > < > http://doc.dpdk.org/api/rte__mbuf_8h.html#a006ee80357a78fbb9ada2b0432f82f= 37 > >>>. > > > > I will focus on them. > > > > > > > > If there is another suggestion, I will be very pleased. > > > > > > > > Best regards. > > > > > > > > Yasin CANER > > > > Ulak > > > > > > > --000000000000a3174d05fc0f8a34 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+SGVsbG8sPGRpdj48YnI+PC9kaXY+PGRpdj5JIHRlc3RlZCBhbGwgZGF5 IGJvdGggYmVmb3JlIGFuZCBhZnRlciBwYXRjaGluZy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2 PkkgY291bGQgbm90IHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBhIG1lbW9yeSBsZWFrIG9yIG5vdC4g TWF5YmUgaXQgbmVlZHMgb3B0aW1pemF0aW9uLiBZb3UgbGVhZCwgSSBmb2xsb3cuPC9kaXY+PGRp dj48YnI+PC9kaXY+PGRpdj4xLSkgWW91IGFyZSByaWdodCwgYWxsb2NfcSBpcyBuZXZlciBiaWdn ZXIgdGhhbiAxMDI0LsKgIEJ1dCBpdCBhbHdheXMgYWxsb2NhdGVzIDMyIHVuaXRzIHRoZW4gbW9y ZSB0aGFuIDEwMjQgYXJlIGJlaW5nIGZyZWVkLiBNYXliZSBpdCB0YWtlcyB0aW1lLCBJIGRvbiYj Mzk7dMKga25vdy48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4yLSkgSSB0ZXN0ZWTCoHR4 X3JzX3RocmVzaCB2aWEgcGluZy4gQWZ0ZXIgMjEwIHNlYyAsIGFsbG9jYXRlZCBtZW1vcmllcyBh cmUgYmFjayB0byBtZW1wb29sIChtb3N0IG9mIHRoZW0pLiAoZHJpdmVyIHZpcnRpbyBhbmQgZXRo LWRldmljZXMgYXJlIGJpbmRlZCB2aWEgaWdiX3VpbykgLiBJdCByZWFsbHkgdGFrZXMgdGltZS4g U28gaXQgaXMgYmV0dGVyIHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBtZW1wb29sLiAoPGEg aHJlZj0iaHR0cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL3Byb2dfZ3VpZGUvcG9sbF9tb2RlX2Ry di5odG1sIj5odHRwczovL2RvYy5kcGRrLm9yZy9ndWlkZXMvcHJvZ19ndWlkZS9wb2xsX21vZGVf ZHJ2Lmh0bWw8L2E+KTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+My0pIHRyeSB0byBsaXN0IG1l bXBvb2wgc3RhdGUgaW4gcmFuZG9tbHk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRlc3QgLTEg LSkgKG9sZCBjb2RlKSBJQ01QIHRlc3RpbmcuIFRoZSB3aG9sZSBtZW1wb29sIHNpemUgaXMgYWJv dXQgMTAzNTAuIFNvIGFmdGVyIEZJRk8gcmVhY2hlcyBtYXgtc2l6ZSAtMTAyNCwgJTEwIG9mIHRo ZSBzaXplIG9mIHRoZSBtZW1wb29sIGlzIGluIHVzZS4gQnV0IGxpdHRsZSBieSBsaXR0bGUgbWVt b3J5IGlzIHdhaXRpbmcgaW4gdXNlIGFuZCBkb2VzbiYjMzk7dCBnbyBiYWNrIHRvIHRoZSBwb29s LiBJIGNvdWxkIG5vdCBmaW5kIHRoZSByZWFzb24uPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5N QlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA0NDggwqAgwqAgwqAgwqAg wqAgwqA5LDk1MSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDQuMzElIFt8Li4uLi4u Li4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoDEsOTQ3IMKgIMKgIMKgIMKgIMKgOCw0NTIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMTguNzIlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsODAzIMKgIMKgIMKgIMKgIMKgOCw1OTYgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgMTcuMzQlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsOTQxIMKgIMKgIMKgIMKg IMKgOCw0NTggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTguNjclIFt8fHx8Li4uLi4u Li4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oDEsOTAwIMKgIMKgIMKgIMKgIMKgOCw0OTkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg MTguMjclIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoDEsOTk5IMKgIMKgIMKgIMKgIMKgOCw0MDAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMTkuMjIlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZf UE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzI0IMKgIMKgIMKgIMKgIMKg OCw2NzUgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNTglIFt8fHx8Li4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEs ODExIMKgIMKgIMKgIMKgIMKgOCw1ODggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTcu NDIlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoDEsOTc4IMKgIMKgIMKgIMKgIMKgOCw0MjEgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgMTkuMDIlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9P TCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDIsMDA4IMKgIMKgIMKgIMKgIMKgOCwz OTEgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTkuMzElIFt8fHx8Li4uLi4uLi4uLi4u Li4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsODU0 IMKgIMKgIMKgIMKgIMKgOCw1NDUgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTcuODMl IFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoDEsOTIyIMKgIMKgIMKgIMKgIMKgOCw0NzcgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgMTguNDglIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsODkyIMKgIMKgIMKgIMKgIMKgOCw1MDcg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTguMTklIFt8fHx8Li4uLi4uLi4uLi4uLi4u Li5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsOTU3IMKg IMKgIMKgIMKgIMKgOCw0NDIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTguODIlIFt8 fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGVzdC0y IC0pIChvbGQgY29kZSkgcnVuIGlwZXJmMyB1ZHAgdGVzdGluZyB0aGF0IGZyb20gS2VybmVsIHRv IGV0aCBkZXZpY2UuIFdhaXRlZCB0byBzZWUgd2hhdCBoYXBwZW5zIGluIDQgbWluLiBtZW1vcnkg ZG9lc24mIzM5O3QgZ28gYmFjayB0byB0aGUgbWVtcG9vbC4gbGl0dGxlIGJ5IGxpdHRsZSwgbWVt b3J5wqB1c2FnZSBpbmNyZWFzZXMuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5NQlVGX1BPT0wg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA1MTIgwqAgwqAgwqAgwqAgwqAgwqA5LDg4 NyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDQuOTIlIFt8Li4uLi4uLi4uLi4uLi4u Li4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNDEx IMKgIMKgIMKgIMKgIMKgOCw5ODggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTMuNTcl IFt8fHwuLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoDEsMzkwIMKgIMKgIMKgIMKgIMKgOSwwMDkgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgMTMuMzclIFt8fHwuLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNTU4IMKgIMKgIMKgIMKgIMKgOCw4NDEg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTQuOTglIFt8fHwuLi4uLi4uLi4uLi4uLi4u Li5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNDUzIMKg IMKgIMKgIMKgIMKgOCw5NDYgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTMuOTclIFt8 fHwuLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoDEsNTI1IMKgIMKgIMKgIMKgIMKgOCw4NzQgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgMTQuNjYlIFt8fHwuLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNTkyIMKgIMKgIMKgIMKgIMKgOCw4MDcgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUuMzElIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5d PGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNjM5IMKgIMKg IMKgIMKgIMKgOCw3NjAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUuNzYlIFt8fHx8 Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoDEsNjI0IMKgIMKgIMKgIMKgIMKgOCw3NzUgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgMTUuNjIlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNjE4IMKgIMKgIMKgIMKgIMKgOCw3ODEgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUuNTYlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJy Pk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzA4IMKgIMKgIMKg IMKgIMKgOCw2OTEgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNDIlIFt8fHx8Li4u Li4uLi4uLi4uLi4uLi5dPGJyPmlwZXJmIGlzIFNUT1BQRUQgdG8gdHhfZnJlc2ggZm9yIDQgbWlu PGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzA5IMKgIMKg IMKgIMKgIMKgOCw2OTAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNDMlIFt8fHx8 Li4uLi4uLi4uLi4uLi4uLi5dPGJyPmlwZXJmIGlzIFNUT1BQRUQgdG8gdHhfZnJlc2ggZm9yIDQg bWluPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzA5IMKg IMKgIMKgIMKgIMKgOCw2OTAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNDMlIFt8 fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoDEsNjgzIMKgIMKgIMKgIMKgIMKgOCw3MTYgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgMTYuMTglIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNTYzIMKgIMKgIMKgIMKgIMKgOCw4MzYgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUuMDMlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5d PGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzI2IMKgIMKg IMKgIMKgIMKgOCw2NzMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNjAlIFt8fHx8 Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoDEsNTg5IMKgIMKgIMKgIMKgIMKgOCw4MTAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgMTUuMjglIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNTU2IMKgIMKgIMKgIMKgIMKgOCw4NDMgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTQuOTYlIFt8fHwuLi4uLi4uLi4uLi4uLi4uLi5dPGJy Pk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNjEwIMKgIMKgIMKg IMKgIMKgOCw3ODkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUuNDglIFt8fHx8Li4u Li4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoDEsNjE2IMKgIMKgIMKgIMKgIMKgOCw3ODMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMTUuNTQlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzA5IMKgIMKgIMKgIMKgIMKgOCw2OTAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNDMlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzQwIMKgIMKgIMKgIMKg IMKgOCw2NTkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuNzMlIFt8fHx8Li4uLi4u Li4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oDEsNTQ2IMKgIMKgIMKgIMKgIMKgOCw4NTMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg MTQuODclIFt8fHwuLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoDEsNzEwIMKgIMKgIMKgIMKgIMKgOCw2ODkgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMTYuNDQlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZf UE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzg3IMKgIMKgIMKgIMKgIMKg OCw2MTIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTcuMTglIFt8fHx8Li4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEs NTc5IMKgIMKgIMKgIMKgIMKgOCw4MjAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUu MTglIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoDEsNzgwIMKgIMKgIMKgIMKgIMKgOCw2MTkgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgMTcuMTIlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9P TCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNjc5IMKgIMKgIMKgIMKgIMKgOCw3 MjAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYuMTUlIFt8fHx8Li4uLi4uLi4uLi4u Li4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNjA0 IMKgIMKgIMKgIMKgIMKgOCw3OTUgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTUuNDIl IFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoDEsNzYxIMKgIMKgIMKgIMKgIMKgOCw2MzggwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgMTYuOTMlIFt8fHx8Li4uLi4uLi4uLi4uLi4uLi5dPGJyPk1CVUZfUE9PTCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEsNzczIMKgIMKgIMKgIMKgIMKgOCw2MjYg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTcuMDUlIFt8fHx8Li4uLi4uLi4uLi4uLi4u Li5dPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGVzdC0zIC0pIChhZnRlciBwYXRjaGlu ZynCoCBydW4gaXBlcmYzIHVkcCB0ZXN0aW5nIHRoYXQgZnJvbSBLZXJuZWwgdG8gZXRoIGRldmlj ZS4gbG9va3Mgc3RhYmxlLjwvZGl2PjxkaXY+QWZ0ZXIgcGF0Y2hpbmcgLDxicj48YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgNzYgwqAgwqAgwqAgwqAgwqAgwqAg MTAsMzIzIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAuNzMlIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDE5 MyDCoCDCoCDCoCDCoCDCoCDCoDEwLDIwNiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAx Ljg2JSBbfC4uLi4uLi4uLi4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqA5NiDCoCDCoCDCoCDCoCDCoCDCoCAxMCwzMDMgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMC45MiUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMjY5IMKgIMKgIMKgIMKgIMKgIMKg MTAsMTMwIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDIuNTklIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDEw MiDCoCDCoCDCoCDCoCDCoCDCoDEwLDI5NyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAw Ljk4JSBbfC4uLi4uLi4uLi4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAyMzUgwqAgwqAgwqAgwqAgwqAgwqAxMCwxNjQgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMi4yNiUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgODcgwqAgwqAgwqAgwqAgwqAgwqAg MTAsMzEyIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAuODQlIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDI5 MyDCoCDCoCDCoCDCoCDCoCDCoDEwLDEwNiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAy LjgyJSBbfC4uLi4uLi4uLi4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqA5OSDCoCDCoCDCoCDCoCDCoCDCoCAxMCwzMDAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMC45NSUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMjk2IMKgIMKgIMKgIMKgIMKgIMKg MTAsMTAzIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDIuODUlIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDkw IMKgIMKgIMKgIMKgIMKgIMKgIDEwLDMwOSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAw Ljg3JSBbfC4uLi4uLi4uLi4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAyOTkgwqAgwqAgwqAgwqAgwqAgwqAxMCwxMDAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMi44OCUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgODYgwqAgwqAgwqAgwqAgwqAgwqAg MTAsMzEzIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAuODMlIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDI2 MiDCoCDCoCDCoCDCoCDCoCDCoDEwLDEzNyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAy LjUyJSBbfC4uLi4uLi4uLi4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqA4MSDCoCDCoCDCoCDCoCDCoCDCoCAxMCwzMTggwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMC43OCUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgODEgwqAgwqAgwqAgwqAgwqAgwqAg MTAsMzE4IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAuNzglIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPk1CVUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDg3 IMKgIMKgIMKgIMKgIMKgIMKgIDEwLDMxMiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAw Ljg0JSBbfC4uLi4uLi4uLi4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAyNTIgwqAgwqAgwqAgwqAgwqAgwqAxMCwxNDcgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgMi40MiUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9Q T09MIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgOTcgwqAgwqAgwqAgwqAgwqAgwqAg MTAsMzAyIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAuOTMlIFt8Li4uLi4uLi4uLi4u Li4uLi4uLi5dPGJyPmlwZXJmIGlzIFNUT1BQRUQgdG8gdHhfZnJlc2ggZm9yIDQgbWluPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDI5NiDCoCDCoCDCoCDCoCDC oCDCoDEwLDEwMyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAyLjg1JSBbfC4uLi4uLi4u Li4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqA5NSDCoCDCoCDCoCDCoCDCoCDCoCAxMCwzMDQgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMC45MSUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9QT09MIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgMjY5IMKgIMKgIMKgIMKgIMKgIMKgMTAsMTMwIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIDIuNTklIFt8Li4uLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDMwMiDCoCDCoCDCoCDCoCDC oCDCoDEwLDA5NyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAyLjkwJSBbfC4uLi4uLi4u Li4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqA4OCDCoCDCoCDCoCDCoCDCoCDCoCAxMCwzMTEgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMC44NSUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9QT09MIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgMzA1IMKgIMKgIMKgIMKgIMKgIMKgMTAsMDk0IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIDIuOTMlIFt8Li4uLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDg4IMKgIMKgIMKgIMKgIMKg IMKgIDEwLDMxMSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwLjg1JSBbfC4uLi4uLi4u Li4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAyOTAgwqAgwqAgwqAgwqAgwqAgwqAxMCwxMDkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMi43OSUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9QT09MIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgODQgwqAgwqAgwqAgwqAgwqAgwqAgMTAsMzE1IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAuODElIFt8Li4uLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDg1IMKgIMKgIMKgIMKgIMKg IMKgIDEwLDMxNCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwLjgyJSBbfC4uLi4uLi4u Li4uLi4uLi4uLi4uXTxicj5NQlVGX1BPT0wgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAyOTEgwqAgwqAgwqAgwqAgwqAgwqAxMCwxMDggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMi44MCUgW3wuLi4uLi4uLi4uLi4uLi4uLi4uLl08YnI+TUJVRl9QT09MIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgMzAzIMKgIMKgIMKgIMKgIMKgIMKgMTAsMDk2IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIDIuOTElIFt8Li4uLi4uLi4uLi4uLi4uLi4uLi5dPGJyPk1C VUZfUE9PTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDkyIMKgIMKgIMKgIMKgIMKg IMKgIDEwLDMwNyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwLjg4JSBbfC4uLi4uLi4u Li4uLi4uLi4uLi4uXTxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2 PkJlc3QgcmVnYXJkcy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48YnI+PGRpdiBjbGFzcz0i Z21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5GZXJydWggWWln aXQgJmx0OzxhIGhyZWY9Im1haWx0bzpmZXJydWgueWlnaXRAYW1kLmNvbSI+ZmVycnVoLnlpZ2l0 QGFtZC5jb208L2E+Jmd0OywgMTggTWF5IDIwMjMgUGVyLCAxNzo1NiB0YXJpaGluZGUgxZ91bnUg eWF6ZMSxOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJt YXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0 LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+T24gNS8xOC8yMDIzIDk6MTQgQU0sIFlhc2luIENBTkVS IHdyb3RlOjxicj4NCiZndDsgSGVsbG8gRmVycnVoLDxicj4NCiZndDsgPGJyPg0KJmd0OyBUaGFu a3MgZm9yIHlvdXIga2luZCByZXNwb25zZS4gQWxzbyB0aGFua3MgdG8gU3RlcGhlbi48YnI+DQom Z3Q7IDxicj4NCiZndDsgRXZlbiBpZiAxIHBhY2tldCBpcyBjb25zdW1lZCBmcm9tIHRoZSBrZXJu ZWwgLCBlYWNoIHRpbWUgcnhfa25pPGJyPg0KJmd0OyBhbGxvY2F0ZXMgYW5vdGhlciAzMiB1bml0 cy4gQWZ0ZXIgYSB3aGlsZSBhbGwgbWVtcG9vbCBpcyB1c2VkIGluIGFsbG9jX3E8YnI+DQomZ3Q7 IGZyb20ga25pLiB0aGVyZSBpcyBub3QgYW55IHJvb20gZm9yIGl0Ljxicj4NCiZndDsgPGJyPg0K PGJyPg0KV2hhdCB5b3UgZGVzY3JpYmVkIGNvbnRpbnVlcyB1bnRpbCAmIzM5O2FsbG9jX3EmIzM5 OyBpcyBmdWxsLCBieSBkZWZhdWx0IGZpZm88YnI+DQpsZW5ndGggaXMgMTAyNCAoS05JX0ZJRk9f Q09VTlRfTUFYKSwgZG8geW91IGFsbG9jYXRlIGxlc3MgbWJ1ZiBpbiB5b3VyPGJyPg0KbWVtcG9v bD88YnI+DQo8YnI+DQpZb3UgY2FuIGNvbnNpZGVyIGVpdGhlciBpbmNyZWFzaW5nIG1lbXBvb2wg c2l6ZSwgb3IgZGVjcmVhc2luZyAmIzM5O2FsbG9jX3EmIzM5Ozxicj4NCmZpZm8gbGVuZ3RoLCBi dXQgcmVkdWNpbmcgZmlmbyBzaXplIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMgc28geW91 PGJyPg0KbmVlZCB0byBldmFsdWF0ZSB0aGF0IG9wdGlvbi48YnI+DQo8YnI+DQomZ3Q7IERvIHlv dSB0aGluayBteSBtaXN0YWtlIGlzIHVzaW5nIG9uZSBhbmQgY29tbW9uIG1lbXBvb2wgdXNhZ2Ug Ym90aCBrbmk8YnI+DQomZ3Q7IGFuZCBldGg/PGJyPg0KJmd0OyA8YnI+DQo8YnI+DQpVc2luZyBz YW1lIG1lbXBvb2wgZm9yIGJvdGggaXMgZmluZS48YnI+DQo8YnI+DQomZ3Q7IElmIGl0IG5lZWRz IGEgc2VwYXJhdGXCoG1lbXBvb2wgLCBpJiMzOTtkIGxpa2UgdG8gbm90ZSBpbiBkb2NzLjxicj4N CiZndDsgPGJyPg0KJmd0OyBCZXN0IHJlZ2FyZHMuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7IEZlcnJ1 aCBZaWdpdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOmZlcnJ1aC55aWdpdEBhbWQuY29tIiB0YXJnZXQ9 Il9ibGFuayI+ZmVycnVoLnlpZ2l0QGFtZC5jb208L2E+ICZsdDttYWlsdG86PGEgaHJlZj0ibWFp bHRvOmZlcnJ1aC55aWdpdEBhbWQuY29tIiB0YXJnZXQ9Il9ibGFuayI+ZmVycnVoLnlpZ2l0QGFt ZC5jb208L2E+Jmd0OyZndDssIDE3PGJyPg0KJmd0OyBNYXkgMjAyMyDDh2FyLCAyMDo1MyB0YXJp aGluZGUgxZ91bnUgeWF6ZMSxOjxicj4NCiZndDsgPGJyPg0KJmd0O8KgIMKgIMKgT24gNS85LzIw MjMgMTI6MTMgUE0sIFlhc2luIENBTkVSIHdyb3RlOjxicj4NCiZndDvCoCDCoCDCoCZndDsgSGVs bG8sPGJyPg0KJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZndDsgSSBkcmF3IGEg ZmxvdyB2aWEgYXNjaWlmbG93IHRvIGV4cGxhaW4gbXlzZWxmIGJldHRlci4gUHJvYmxlbSBpcyBh ZnRlcjxicj4NCiZndDvCoCDCoCDCoCZndDsgdHJhbnNtaXR0aW5nwqBwYWNrZXRzKG1idWZzKSAs IGl0IG5ldmVyIHB1dHMgaW4gdGhlIGtuaS0mZ3Q7ZnJlZV9xIHRvIGJhY2s8YnI+DQomZ3Q7wqAg wqAgwqAmZ3Q7IHRvIHRoZSBvcmlnaW5hbCBwb29sLiBFYWNoIGN5Y2xlLCBpdCBhbGxvY2F0ZXMg YW5vdGhlciAzMiB1bml0cyB0aGF0PGJyPg0KJmd0O8KgIMKgIMKgJmd0OyBjYXVzZSBsZWFrcy4g T3IgSSBhbSBtaXNzaW5nIHNvbWV0aGluZy48YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0 O8KgIMKgIMKgJmd0OyBJIGFscmVhZHkgdHJpZWQgdGhlIHJ0ZV9ldGhfdHhfZG9uZV9jbGVhbnVw KCkgZnVuY3Rpb24gYnV0IGl0PGJyPg0KJmd0O8KgIMKgIMKgZGlkbiYjMzk7dCBmaXg8YnI+DQom Z3Q7wqAgwqAgwqAmZ3Q7IGFueXRoaW5nLjxicj4NCiZndDvCoCDCoCDCoCZndDs8YnI+DQomZ3Q7 wqAgwqAgwqAmZ3Q7IEkgYW0gd29ya2luZyBvbiBhwqBwYXRjaCB0byBmaXggdGhpcyBpc3N1ZSBi dXQgSSBhbSBub3Qgc3VyZSBpZiB0aGVyZTxicj4NCiZndDvCoCDCoCDCoCZndDsgaXPCoGFub3Ro ZXIgd2F5Ljxicj4NCiZndDvCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7IEJlc3Qg cmVnYXJkcy48YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgJmd0OyA8YSBo cmVmPSJodHRwczovL3Bhc3RlYmluLnVidW50dS5jb20vcC9zNGg1cHNxdGdaLyIgcmVsPSJub3Jl ZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9wYXN0ZWJpbi51YnVudHUuY29tL3AvczRo NXBzcXRnWi88L2E+PGJyPg0KJmd0O8KgIMKgIMKgJmx0OzxhIGhyZWY9Imh0dHBzOi8vcGFzdGVi aW4udWJ1bnR1LmNvbS9wL3M0aDVwc3F0Z1ovIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2Js YW5rIj5odHRwczovL3Bhc3RlYmluLnVidW50dS5jb20vcC9zNGg1cHNxdGdaLzwvYT4mZ3Q7PGJy Pg0KJmd0O8KgIMKgIMKgJmd0OyAmbHQ7PGEgaHJlZj0iaHR0cHM6Ly9wYXN0ZWJpbi51YnVudHUu Y29tL3AvczRoNXBzcXRnWi8iIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBz Oi8vcGFzdGViaW4udWJ1bnR1LmNvbS9wL3M0aDVwc3F0Z1ovPC9hPjxicj4NCiZndDvCoCDCoCDC oCZsdDs8YSBocmVmPSJodHRwczovL3Bhc3RlYmluLnVidW50dS5jb20vcC9zNGg1cHNxdGdaLyIg cmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9wYXN0ZWJpbi51YnVudHUu Y29tL3AvczRoNXBzcXRnWi88L2E+Jmd0OyZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0K Jmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZndDsgdW5zaWduZWQ8YnI+DQomZ3Q7 wqAgwqAgwqAmZ3Q7IHJ0ZV9rbmlfcnhfYnVyc3Qoc3RydWN0IHJ0ZV9rbmkgKmtuaSwgc3RydWN0 IHJ0ZV9tYnVmICoqbWJ1ZnMsPGJyPg0KJmd0O8KgIMKgIMKgdW5zaWduZWQ8YnI+DQomZ3Q7wqAg wqAgwqAmZ3Q7IGludCBudW0pPGJyPg0KJmd0O8KgIMKgIMKgJmd0OyB7PGJyPg0KJmd0O8KgIMKg IMKgJmd0OyB1bnNpZ25lZCBpbnQgcmV0ID0ga25pX2ZpZm9fZ2V0KGtuaS0mZ3Q7dHhfcSwgKHZv aWQgKiopbWJ1ZnMsIG51bSk7PGJyPg0KJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDC oCZndDsgLyogSWYgYnVmZmVycyByZW1vdmVkLCBhbGxvY2F0ZSBtYnVmcyBhbmQgdGhlbiBwdXQg dGhlbSBpbnRvPGJyPg0KJmd0O8KgIMKgIMKgYWxsb2NfcSAqLzxicj4NCiZndDvCoCDCoCDCoCZn dDsgLyogUXVlc3Rpb24sIGhvdyB0byB0ZXN0IGJ1ZmZlcnMgaXMgcmVtb3ZlZCBvciBub3Q/Ki88 YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7IGlmIChyZXQpPGJyPg0KJmd0O8KgIMKgIMKgJmd0OyDCoCDC oCBrbmlfYWxsb2NhdGVfbWJ1ZnMoa25pKTs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0 O8KgIMKgIMKgJmd0OyByZXR1cm4gcmV0Ozxicj4NCiZndDvCoCDCoCDCoCZndDsgfTxicj4NCiZn dDvCoCDCoCDCoCZndDs8YnI+DQomZ3Q7IDxicj4NCiZndDvCoCDCoCDCoFNlbGFtIFlhc2luLDxi cj4NCiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7wqAgwqAgwqBZb3UgY2FuIGV4cGVjdCAmIzM5 O2tuaS0mZ3Q7YWxsb2NfcSYjMzk7IGZpZm8gdG8gYmUgZnVsbCwgdGhpcyBpcyBub3QgYSBtZW1v cnk8YnI+DQomZ3Q7wqAgwqAgwqBsZWFrLjxicj4NCiZndDsgPGJyPg0KJmd0O8KgIMKgIMKgQXMg eW91IHBvaW50ZWQgb3V0LCBudW1iZXIgb2YgbWJ1ZnMgY29uc3VtZWQgYnkga2VybmVsIGZyb20g JiMzOTthbGxvY19xJiMzOTs8YnI+DQomZ3Q7wqAgwqAgwqBhbmQgbnVtYmVyIG9mIG1idWZzIGFk ZGVkIHRvICYjMzk7YWxsb2NfcSYjMzk7IGlzIG5vdCBlcXVhbCBhbmQgdGhpcyBpczxicj4NCiZn dDvCoCDCoCDCoGV4cGVjdGVkLjxicj4NCiZndDsgPGJyPg0KJmd0O8KgIMKgIMKgVGFyZ2V0IGhl cmUgaXMgdG8gcHJldmVudCBidWZmZXIgdW5kZXJmbG93IGZyb20ga2VybmVsIHBlcnNwZWN0aXZl LCBzbzxicj4NCiZndDvCoCDCoCDCoGl0IHdpbGwgYWx3YXlzIGhhdmUgYXZhaWxhYmxlIG1idWZz IGZvciBuZXcgcGFja2V0cy48YnI+DQomZ3Q7wqAgwqAgwqBUaGF0IGlzIHdoeSBuZXcgbWJ1ZnMg YXJlIGFkZGVkIHRvICYjMzk7YWxsb2NfcSYjMzk7IGF0IHdvcnN0IHNhbWUgb3Igc29tZXRpbWVz PGJyPg0KJmd0O8KgIMKgIMKgaGlnaGVyIHJhdGUgdGhhbiBpdCBpcyBjb25zdW1lZC48YnI+DQom Z3Q7IDxicj4NCiZndDvCoCDCoCDCoFlvdSBzaG91bGQgY2FsY3VsYXRlIHlvdXIgbWJ1ZiByZXF1 aXJlbWVudCB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQ8YnI+DQomZ3Q7wqAgwqAgwqAmIzM5O2tu aS0mZ3Q7YWxsb2NfcSYjMzk7IHdpbGwgYmUgZnVsbCBvZiBtYnVmcy48YnI+DQomZ3Q7IDxicj4N CiZndDsgPGJyPg0KJmd0O8KgIMKgIMKgJiMzOTtrbmktJmd0O2FsbG9jX3EmIzM5OyBpcyBmcmVl ZCB3aGVuIGtuaSBpcyByZW1vdmVkLjxicj4NCiZndDvCoCDCoCDCoFNpbmNlICYjMzk7YWxsb2Nf cSYjMzk7IGhvbGRzIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1idWZzLCBpdCBpcyBhIGxpdHRs ZTxicj4NCiZndDvCoCDCoCDCoGNoYWxsZW5naW5nIHRvIGZyZWUgdGhlbSBpbiB0aGUgdXNlcnNw YWNlLCB0aGF0IGlzIHdoeSBmaXJzdCBrZXJuZWw8YnI+DQomZ3Q7wqAgwqAgwqB0cmllcyB0byBt b3ZlIG1idWZzIHRvICYjMzk7a25pLSZndDtmcmVlX3EmIzM5OyBmaWZvLCBwbGVhc2UgY2hlY2s8 YnI+DQomZ3Q7wqAgwqAgwqAmIzM5O2tuaV9uZXRfcmVsZWFzZV9maWZvX3BoeSgpJiMzOTsgZm9y IGl0Ljxicj4NCiZndDsgPGJyPg0KJmd0O8KgIMKgIMKgSWYgYWxsIG1vdmVkIHRvICYjMzk7ZnJl ZV9xJiMzOTsgZmlmbywgbm90aGluZyBsZWZ0IHRvIGluICYjMzk7YWxsb2NfcSYjMzk7LCBidXQg aWYgbm90LDxicj4NCiZndDvCoCDCoCDCoHVzZXJzcGFjZSBmcmVlcyAmIzM5O2FsbG9jX3EmIzM5 OyBpbiAmIzM5O3J0ZV9rbmlfcmVsZWFzZSgpJiMzOTssIHdpdGggZm9sbG93aW5nIGNhbGw6PGJy Pg0KJmd0O8KgIMKgIMKgYGtuaV9mcmVlX2ZpZm9fcGh5KGtuaS0mZ3Q7cGt0bWJ1Zl9wb29sLCBr bmktJmd0O2FsbG9jX3EpO2A8YnI+DQomZ3Q7IDxicj4NCiZndDsgPGJyPg0KJmd0O8KgIMKgIMKg SSBjYW4gc2VlIHlvdSBoYXZlIHN1Ym1pdHRlZCBmaXhlcyBmb3IgdGhpcyBpc3N1ZSwgYWx0aG91 Z2ggYXMgSTxicj4NCiZndDvCoCDCoCDCoGV4cGxhaW5lZCBhYm92ZSBJIGRvbiYjMzk7dCB0aGlu ayBhIGRlZmVjdCBleGlzdCwgSSB3aWxsIHJldmlldyB0aGVtPGJyPg0KJmd0O8KgIMKgIMKgdG9k YXkvdG9tb3Jyb3cuPGJyPg0KJmd0OyA8YnI+DQomZ3Q7wqAgwqAgwqBSZWdhcmRzLDxicj4NCiZn dDvCoCDCoCDCoEZlcnJ1aDxicj4NCiZndDsgPGJyPg0KJmd0OyA8YnI+DQomZ3Q7wqAgwqAgwqAm Z3Q7IFN0ZXBoZW4gSGVtbWluZ2VyICZsdDs8YSBocmVmPSJtYWlsdG86c3RlcGhlbkBuZXR3b3Jr cGx1bWJlci5vcmciIHRhcmdldD0iX2JsYW5rIj5zdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzwv YT48YnI+DQomZ3Q7wqAgwqAgwqAmbHQ7bWFpbHRvOjxhIGhyZWY9Im1haWx0bzpzdGVwaGVuQG5l dHdvcmtwbHVtYmVyLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPnN0ZXBoZW5AbmV0d29ya3BsdW1iZXIu b3JnPC9hPiZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7ICZsdDttYWlsdG86PGEgaHJlZj0ibWFp bHRvOnN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnIiB0YXJnZXQ9Il9ibGFuayI+c3RlcGhlbkBu ZXR3b3JrcGx1bWJlci5vcmc8L2E+PGJyPg0KJmd0O8KgIMKgIMKgJmx0O21haWx0bzo8YSBocmVm PSJtYWlsdG86c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmciIHRhcmdldD0iX2JsYW5rIj5zdGVw aGVuQG5ldHdvcmtwbHVtYmVyLm9yZzwvYT4mZ3Q7Jmd0OyZndDssIDggTWF5IDIwMjMgUHp0LCAx OToxOCB0YXJpaGluZGU8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7IMWfdW51IHlhemTEsTo8YnI+DQom Z3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgT24gTW9uLCA4IE1h eSAyMDIzIDA5OjAxOjQxICswMzAwPGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgWWFzaW4g Q0FORVIgJmx0OzxhIGhyZWY9Im1haWx0bzp5YXNpbm5jYW5lckBnbWFpbC5jb20iIHRhcmdldD0i X2JsYW5rIj55YXNpbm5jYW5lckBnbWFpbC5jb208L2E+PGJyPg0KJmd0O8KgIMKgIMKgJmx0O21h aWx0bzo8YSBocmVmPSJtYWlsdG86eWFzaW5uY2FuZXJAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFu ayI+eWFzaW5uY2FuZXJAZ21haWwuY29tPC9hPiZndDsgJmx0O21haWx0bzo8YSBocmVmPSJtYWls dG86eWFzaW5uY2FuZXJAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+eWFzaW5uY2FuZXJAZ21h aWwuY29tPC9hPjxicj4NCiZndDvCoCDCoCDCoCZsdDttYWlsdG86PGEgaHJlZj0ibWFpbHRvOnlh c2lubmNhbmVyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnlhc2lubmNhbmVyQGdtYWlsLmNv bTwvYT4mZ3Q7Jmd0OyZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7wqAgwqAgwqB3cm90ZTo8YnI+ DQomZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgJmd0OyBIZWxs byBTdGVwaGVuLDxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAg wqAgwqAmZ3Q7wqAgwqAgwqAmZ3Q7IFRoYW5rIHlvdSBmb3IgcmVzcG9uc2UsIGl0IGhlbHBzIG1l IGEgbG90LiBJIHVuZGVyc3RhbmQgcHJvYmxlbTxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoCDC oGJldHRlci48YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKg IMKgJmd0O8KgIMKgIMKgJmd0OyBBZnRlciByZWFkaW5nIG1idWYgbGlicmFyeSAoPGJyPg0KJmd0 O8KgIMKgIMKgJmd0O8KgIMKgIMKgJmd0OyA8YSBocmVmPSJodHRwczovL2RvYy5kcGRrLm9yZy9n dWlkZXMvcHJvZ19ndWlkZS9tZW1wb29sX2xpYi5odG1sIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdl dD0iX2JsYW5rIj5odHRwczovL2RvYy5kcGRrLm9yZy9ndWlkZXMvcHJvZ19ndWlkZS9tZW1wb29s X2xpYi5odG1sPC9hPjxicj4NCiZndDvCoCDCoCDCoCZsdDs8YSBocmVmPSJodHRwczovL2RvYy5k cGRrLm9yZy9ndWlkZXMvcHJvZ19ndWlkZS9tZW1wb29sX2xpYi5odG1sIiByZWw9Im5vcmVmZXJy ZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2RvYy5kcGRrLm9yZy9ndWlkZXMvcHJvZ19ndWlk ZS9tZW1wb29sX2xpYi5odG1sPC9hPiZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7wqAgwqAgwqAm bHQ7PGEgaHJlZj0iaHR0cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL3Byb2dfZ3VpZGUvbWVtcG9v bF9saWIuaHRtbCIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kb2Mu ZHBkay5vcmcvZ3VpZGVzL3Byb2dfZ3VpZGUvbWVtcG9vbF9saWIuaHRtbDwvYT48YnI+DQomZ3Q7 wqAgwqAgwqAmbHQ7PGEgaHJlZj0iaHR0cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL3Byb2dfZ3Vp ZGUvbWVtcG9vbF9saWIuaHRtbCIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0 cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL3Byb2dfZ3VpZGUvbWVtcG9vbF9saWIuaHRtbDwvYT4m Z3Q7Jmd0OynCoCBpPGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgcmVhbGl6ZWQgdGhhdDxi cj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoCDCoCZndDsgMzEgdW5pdHMgYWxsb2NhdGlvbiBtZW1v cnkgc2xvdCBkb2VzbiYjMzk7dCByZXR1cm4gdG8gcG9vbCE8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7 PGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgSWYgcmVjZWl2ZSBidXJzdCByZXR1cm5zIDEg bWJ1ZiwgdGhlIG90aGVyIDMxIHBvaW50ZXJzIGluIHRoZTxicj4NCiZndDvCoCDCoCDCoGFycmF5 PGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgYXJlIG5vdCB2YWxpZC4gVGhleSBkbyBub3Qg cG9pbnQgdG8gbWJ1ZnMuPGJyPg0KJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZn dDvCoCDCoCDCoCZndDsgMSB1bml0IG1idWYgY2FuIGJlIGZyZWVkIHZpYSBydGVfcGt0bWJ1Zl9m cmVlIHNvIGl0IGNhbiBiYWNrPGJyPg0KJmd0O8KgIMKgIMKgdG8gcG9vbC48YnI+DQomZ3Q7wqAg wqAgwqAmZ3Q7wqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgJmd0OyBN YWluIHByb2JsZW0gaXMgdGhhdCBhbGxvY2F0aW9uIGRvZXNuJiMzOTt0IHJldHVybiB0byBvcmln aW5hbCBwb29sLDxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoCDCoGFjdCBhczxicj4NCiZndDvC oCDCoCDCoCZndDvCoCDCoCDCoCZndDsgdXNlZC4gU28sIGFmdGVyIGZvbGxvd2luZyBydGVfcGt0 bWJ1Zl9mcmVlPGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDC oCDCoCZndDvCoCDCoDxicj4NCiZndDvCoCDCoCDCoMKgJmx0OzxhIGhyZWY9Imh0dHA6Ly9kb2Mu ZHBkay5vcmcvYXBpL3J0ZV9fbWJ1Zl84aC5odG1sI2ExMjE1NDU4OTMyOTAwYjdjZDUxOTIzMjZm YTRhNjkwMiIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2RvYy5kcGRr Lm9yZy9hcGkvcnRlX19tYnVmXzhoLmh0bWwjYTEyMTU0NTg5MzI5MDBiN2NkNTE5MjMyNmZhNGE2 OTAyPC9hPiAmbHQ7PGEgaHJlZj0iaHR0cDovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19tYnVmXzho Lmh0bWwjYTEyMTU0NTg5MzI5MDBiN2NkNTE5MjMyNmZhNGE2OTAyIiByZWw9Im5vcmVmZXJyZXIi IHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZG9jLmRwZGsub3JnL2FwaS9ydGVfX21idWZfOGguaHRt bCNhMTIxNTQ1ODkzMjkwMGI3Y2Q1MTkyMzI2ZmE0YTY5MDI8L2E+Jmd0OyAmbHQ7PGEgaHJlZj0i aHR0cDovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19tYnVmXzhoLmh0bWwjYTEyMTU0NTg5MzI5MDBi N2NkNTE5MjMyNmZhNGE2OTAyIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRw Oi8vZG9jLmRwZGsub3JnL2FwaS9ydGVfX21idWZfOGguaHRtbCNhMTIxNTQ1ODkzMjkwMGI3Y2Q1 MTkyMzI2ZmE0YTY5MDI8L2E+ICZsdDs8YSBocmVmPSJodHRwOi8vZG9jLmRwZGsub3JnL2FwaS9y dGVfX21idWZfOGguaHRtbCNhMTIxNTQ1ODkzMjkwMGI3Y2Q1MTkyMzI2ZmE0YTY5MDIiIHJlbD0i bm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9kb2MuZHBkay5vcmcvYXBpL3J0ZV9f bWJ1Zl84aC5odG1sI2ExMjE1NDU4OTMyOTAwYjdjZDUxOTIzMjZmYTRhNjkwMjwvYT4mZ3Q7Jmd0 OyZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7wqAgwqAgwqAmZ3Q7IGZ1bmN0aW9uLDxicj4NCiZn dDvCoCDCoCDCoCZndDvCoCDCoCDCoCZndDsgaSByZWFsaXplZCB0aGF0IHRoZXJlIGlzIDIgZnVu Y3Rpb24gdG8gaGVscHMgdG8gbWJ1ZnMgYmFjazxicj4NCiZndDvCoCDCoCDCoHRvIHBvb2wuPGJy Pg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDC oCDCoCZndDsgVGhlc2UgYXJlIHJ0ZV9tYnVmX3Jhd19mcmVlPGJyPg0KJmd0O8KgIMKgIMKgJmd0 O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoDxicj4NCiZndDvCoCDCoCDC oMKgJmx0OzxhIGhyZWY9Imh0dHA6Ly9kb2MuZHBkay5vcmcvYXBpL3J0ZV9fbWJ1Zl84aC5odG1s I2E5ZjE4OGQ1MzgzNDk3OGFjYTAxZWExMDE1NzZkNzQzMiIgcmVsPSJub3JlZmVycmVyIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cDovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19tYnVmXzhoLmh0bWwjYTlm MTg4ZDUzODM0OTc4YWNhMDFlYTEwMTU3NmQ3NDMyPC9hPiAmbHQ7PGEgaHJlZj0iaHR0cDovL2Rv Yy5kcGRrLm9yZy9hcGkvcnRlX19tYnVmXzhoLmh0bWwjYTlmMTg4ZDUzODM0OTc4YWNhMDFlYTEw MTU3NmQ3NDMyIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZG9jLmRw ZGsub3JnL2FwaS9ydGVfX21idWZfOGguaHRtbCNhOWYxODhkNTM4MzQ5NzhhY2EwMWVhMTAxNTc2 ZDc0MzI8L2E+Jmd0OyAmbHQ7PGEgaHJlZj0iaHR0cDovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19t YnVmXzhoLmh0bWwjYTlmMTg4ZDUzODM0OTc4YWNhMDFlYTEwMTU3NmQ3NDMyIiByZWw9Im5vcmVm ZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZG9jLmRwZGsub3JnL2FwaS9ydGVfX21idWZf OGguaHRtbCNhOWYxODhkNTM4MzQ5NzhhY2EwMWVhMTAxNTc2ZDc0MzI8L2E+ICZsdDs8YSBocmVm PSJodHRwOi8vZG9jLmRwZGsub3JnL2FwaS9ydGVfX21idWZfOGguaHRtbCNhOWYxODhkNTM4MzQ5 NzhhY2EwMWVhMTAxNTc2ZDc0MzIiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHA6Ly9kb2MuZHBkay5vcmcvYXBpL3J0ZV9fbWJ1Zl84aC5odG1sI2E5ZjE4OGQ1MzgzNDk3OGFj YTAxZWExMDE1NzZkNzQzMjwvYT4mZ3Q7Jmd0OyZndDs8YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7wqAg wqAgwqAmZ3Q7wqAgYW5kIHJ0ZV9wa3RtYnVmX2ZyZWVfc2VnPGJyPg0KJmd0O8KgIMKgIMKgJmd0 O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoDxicj4NCiZndDvCoCDCoCDC oMKgJmx0OzxhIGhyZWY9Imh0dHA6Ly9kb2MuZHBkay5vcmcvYXBpL3J0ZV9fbWJ1Zl84aC5odG1s I2EwMDZlZTgwMzU3YTc4ZmJiOWFkYTJiMDQzMmY4MmYzNyIgcmVsPSJub3JlZmVycmVyIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cDovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19tYnVmXzhoLmh0bWwjYTAw NmVlODAzNTdhNzhmYmI5YWRhMmIwNDMyZjgyZjM3PC9hPiAmbHQ7PGEgaHJlZj0iaHR0cDovL2Rv Yy5kcGRrLm9yZy9hcGkvcnRlX19tYnVmXzhoLmh0bWwjYTAwNmVlODAzNTdhNzhmYmI5YWRhMmIw NDMyZjgyZjM3IiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZG9jLmRw ZGsub3JnL2FwaS9ydGVfX21idWZfOGguaHRtbCNhMDA2ZWU4MDM1N2E3OGZiYjlhZGEyYjA0MzJm ODJmMzc8L2E+Jmd0OyAmbHQ7PGEgaHJlZj0iaHR0cDovL2RvYy5kcGRrLm9yZy9hcGkvcnRlX19t YnVmXzhoLmh0bWwjYTAwNmVlODAzNTdhNzhmYmI5YWRhMmIwNDMyZjgyZjM3IiByZWw9Im5vcmVm ZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZG9jLmRwZGsub3JnL2FwaS9ydGVfX21idWZf OGguaHRtbCNhMDA2ZWU4MDM1N2E3OGZiYjlhZGEyYjA0MzJmODJmMzc8L2E+ICZsdDs8YSBocmVm PSJodHRwOi8vZG9jLmRwZGsub3JnL2FwaS9ydGVfX21idWZfOGguaHRtbCNhMDA2ZWU4MDM1N2E3 OGZiYjlhZGEyYjA0MzJmODJmMzciIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHA6Ly9kb2MuZHBkay5vcmcvYXBpL3J0ZV9fbWJ1Zl84aC5odG1sI2EwMDZlZTgwMzU3YTc4ZmJi OWFkYTJiMDQzMmY4MmYzNzwvYT4mZ3Q7Jmd0OyZndDsuPGJyPg0KJmd0O8KgIMKgIMKgJmd0O8Kg IMKgIMKgJmd0OyBJIHdpbGwgZm9jdXMgb24gdGhlbS48YnI+DQomZ3Q7wqAgwqAgwqAmZ3Q7wqAg wqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgJmd0O8KgIMKgIMKgJmd0OyBJZiB0aGVyZSBpcyBh bm90aGVyIHN1Z2dlc3Rpb24sIEkgd2lsbCBiZSB2ZXJ5IHBsZWFzZWQuPGJyPg0KJmd0O8KgIMKg IMKgJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoCDCoCZndDsgQmVz dCByZWdhcmRzLjxicj4NCiZndDvCoCDCoCDCoCZndDvCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAg wqAgwqAmZ3Q7wqAgwqAgwqAmZ3Q7IFlhc2luIENBTkVSPGJyPg0KJmd0O8KgIMKgIMKgJmd0O8Kg IMKgIMKgJmd0OyBVbGFrPGJyPg0KJmd0O8KgIMKgIMKgJmd0Ozxicj4NCiZndDsgPGJyPg0KPGJy Pg0KPC9ibG9ja3F1b3RlPjwvZGl2Pg0K --000000000000a3174d05fc0f8a34--