From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id ANw0DAqfFWJdhwAAgWs5BA (envelope-from ) for ; Wed, 23 Feb 2022 03:42:18 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id YPmJCAqfFWIqVQAA9RJhRA (envelope-from ) for ; Wed, 23 Feb 2022 03:42:18 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 0572F2FAAB for ; Wed, 23 Feb 2022 03:42:16 +0100 (CET) Received: from localhost ([::1]:41702 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nMhbb-0003QA-Pt for larch@yhetil.org; Tue, 22 Feb 2022 21:42:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nMhao-0003Q2-0V for emacs-orgmode@gnu.org; Tue, 22 Feb 2022 21:41:26 -0500 Received: from [2607:f8b0:4864:20::e2c] (port=34366 helo=mail-vs1-xe2c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nMhal-0000M9-9Y for emacs-orgmode@gnu.org; Tue, 22 Feb 2022 21:41:25 -0500 Received: by mail-vs1-xe2c.google.com with SMTP id w4so1708764vsq.1 for ; Tue, 22 Feb 2022 18:41:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=6TyRZCtlzopDJ1SGJ5pEHRamnvZkvCgp+r5cmMfMYsY=; b=n2PmhnM1xUTpTro0z/pdQoBterKdwwUNia1HGdCf+WuqfClfE5+3271qdY5qO49V8S EB/d/7gS5J1a7PkuhqmK+HqaXXm1eXfN+B3zcgec9mDmHU7L4FDyuVXFFuQsNpX8epbp 4YKC6N6WA2E16oYgajohfiSt+OT8FeW7WTDjOwd5ZUtxoDbi5HKMVpYthjb1z5FIiR6r Cfc2wIulClXb5aLZtv6/S5TR+Bb79yiNPTIkcZQ0VphXW71S0jvZrFt29rA25lfS8l0S pkUo560vzeVQMZTS6cr8JXwagKW34MMeRXCAcTRIXhgUI1Ic1AvOpFdnbsIdUrfngcHe yz6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=6TyRZCtlzopDJ1SGJ5pEHRamnvZkvCgp+r5cmMfMYsY=; b=tWm00fZvwkkr7k2vq/UmMDhsLS8k7bUl/l9zNXxaIlUUo8S0XSJ+La4Yz/41Clkr6I K+yc6Frcm9MW07lqZbgJ3UN4XC/uhnfzZnwUmWOEWaSLF0g/AUUPUlT4GD6AO/p21aR4 ysS7cP3qiamKLfkTpwHBHoNA28EQY7HW19m/QIVvsOMrR1GbFdDT+EGnkSKH0euItgJD oi1khyWVfsuc9P4xqYxHHvdSFIQ5JEBx8EWvOAds2rPtZ1JtlPdAjV4UP79OSNh+FsJH 6T+fkyf4I0rslx7GiTQC2zX0bwuM8W3+cc9qPCNBUPsLtJ1eRlre0zG1tCGWHSO+4P2Y f2uw== X-Gm-Message-State: AOAM533tnT8DsfcBIs8dWOMRFIPB1Es3UQ69sAozC8jJ7RJVXDEsUafL kjY3n36iXILMMUX62jKXVekz69sMrb6Lhh5BxLThvI2n X-Google-Smtp-Source: ABdhPJyCtoAHLpCHYViykR6W49JjneA7uc6zlIyg8IQDXw5BsDr5ON/h35c3LRpr0LE7ss7lMRnp2AgfbnzB9umuQzs= X-Received: by 2002:a67:b341:0:b0:31c:15ca:2052 with SMTP id b1-20020a67b341000000b0031c15ca2052mr9397043vsm.2.1645584082116; Tue, 22 Feb 2022 18:41:22 -0800 (PST) MIME-Version: 1.0 References: <87fsobpism.fsf@localhost> In-Reply-To: From: Matt Price Date: Tue, 22 Feb 2022 21:41:10 -0500 Message-ID: Subject: Re: profiling latency in large org-mode buffers (under both main & org-fold feature) To: Org Mode Content-Type: multipart/alternative; boundary="000000000000a9a46905d8a66626" X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::e2c (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::e2c; envelope-from=moptop99@gmail.com; helo=mail-vs1-xe2c.google.com X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1645584137; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=6TyRZCtlzopDJ1SGJ5pEHRamnvZkvCgp+r5cmMfMYsY=; b=aZ3JNLCPyrfB9UqNn8Ic2Qhh92XBc4eRj+xAzouYwdn9JUhV/weB7WCl/QB+Cx0xiToUmq T2+AmDk0m0FtVtau8KouNdvtj3JmWiJ24GIm9HdQ4jb0m23WpW8/PcKxN10vyq5K9GNAlp kx0IbaUUf5Zk2yxuu4xsF0ZsdMRyCVwukq5AelI2gaW3XkGAId377ismQ6h94ZYUc7gPb2 P5Z3hSB14+Pz3Nv5anGaSzeamkKy137dRrskuLqRNpFUDE0hUcQbvV63Ynv3Z66nBW2qjr iI03BvsUfQARCopMfeZcOOEQEFj+nF++wRjLHlAppjuGR+zSZYlpO4wfy7Cx3w== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1645584137; a=rsa-sha256; cv=none; b=oXyZKe+wszbKMDfSiEYmcIG31Oe8Kd9I1uZZ1pcwFqKtRhVVH/uIg0zvBzxoTwfUewvsYm dbT4G8ChajH7npQHMMO8cPaAViKWLyzZrBedig4icLXeq6VuIQrPd/Gn41CQ4npvMEotfb EViH4okxUQQhtIhfD0DtJBQ7ezCjkJZolz/giOZXzD1tuGMXBeU0SKl6IWti5wVbLXdbCO Nl5HlxgWTh0H37Gv5SSC3y7bGKSIsqCaI1No4msabXsXUQLkVZkO7GHGCJuyUBDiYtzEjs YECKyDkSRuqNkpGX3XkMVOA2dwgOwvCrLmxmCxWKjnP7fNvgYWAUUGvr9yS7Ww== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=n2PmhnM1; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -4.23 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=n2PmhnM1; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 0572F2FAAB X-Spam-Score: -4.23 X-Migadu-Scanner: scn1.migadu.com X-TUID: EIuz82EHBwbf --000000000000a9a46905d8a66626 Content-Type: text/plain; charset="UTF-8" sorry everyone, I accidentally sent this to Kaushal this morning, and then took quite a while to get back to a computer after he let me know my mistake! On Tue, Feb 22, 2022 at 10:12 AM Matt Price wrote: > > On Tue, Feb 22, 2022 at 12:45 AM Kaushal Modi > wrote: > >> >> >> On Tue, Feb 22, 2022, 12:34 AM Ihor Radchenko wrote: >> >>> >>> I am wondering if many people in the list experience latency issues. >>> Maybe we can organise an online meeting (jitsi or BBB) and collect the >>> common causes/ do online interactive debugging? >>> >> >> +1 >> >> I have seen few people see this issue on the ox-hugo issue tracker: >> https://github.com/kaushalmodi/ox-hugo/discussions/551#discussioncomment-2104352 >> > > > I htink it's a great idea, Ihor! > > Meanwhile, I have a profile report. I had a little trouble getting the > slowness to return (of course) but, subjectively, it seemed to get worse > (subjectively slower, and the laptop fan started up b/c of high cpu usage) > when I created and entered a src block. Apologies for the long paste: > > 45707 70% - redisplay_internal (C function) > 8468 13% - substitute-command-keys > 6111 9% - # > 943 1% - kill-buffer > 708 1% - replace-buffer-in-windows > 614 0% - unrecord-window-buffer > 515 0% - assq-delete-all > 142 0% assoc-delete-all > 3 0% delete-char > 8060 12% - assq > 2598 4% - org-context > 15 0% org-inside-LaTeX-fragment-p > 12 0% - org-in-src-block-p > 12 0% - org-element-at-point > 9 0% - org-element--cache-verify-element > 9 0% org-element--parse-to > 3 0% org-element--parse-to > 8 0% - org-at-timestamp-p > 8 0% org-in-regexp > 642 0% + tab-bar-make-keymap > 309 0% + and > 270 0% + org-in-subtree-not-table-p > 196 0% + not > 163 0% + jit-lock-function > 115 0% + org-entry-get > 96 0% keymap-canonicalize > 56 0% org-at-table-p > 52 0% + # > 48 0% + # > 43 0% table--row-column-insertion-point-p > 29 0% org-inside-LaTeX-fragment-p > 27 0% + menu-bar-positive-p > 26 0% + eval > 24 0% file-readable-p > 21 0% + funcall > 16 0% + imenu-update-menubar > 14 0% + vc-menu-map-filter > 13 0% + table--probe-cell > 12 0% + or > 11 0% + let > 11 0% + org-at-timestamp-p > 10 0% + flycheck-overlays-at > 7 0% undo-tree-update-menu-bar > 6 0% + require > 6 0% + > emojify-update-visible-emojis-background-after-window-scroll > 6 0% kill-this-buffer-enabled-p > 4 0% mode-line-default-help-echo > 3 0% + null > 9192 14% - ... > 9172 14% Automatic GC > 20 0% - kill-visual-line > 20 0% - kill-region > 20 0% - filter-buffer-substring > 20 0% - org-fold-core--buffer-substring-filter > 20 0% - buffer-substring--filter > 20 0% - # > 20 0% - apply > 20 0% - # F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_18> > 20 0% - # > 20 0% - apply > 20 0% - # > 20 0% - # > 20 0% - # > 20 0% - apply > 20 0% - # > 20 0% + delete-and-extract-region > 7847 12% - command-execute > 5749 8% - funcall-interactively > 2963 4% + org-self-insert-command > 2186 3% + org-cycle > 148 0% + corfu-insert > 146 0% + execute-extended-command > 121 0% + org-return > 32 0% + # > 26 0% + # > 24 0% + mwim-beginning > 19 0% + org-delete-backward-char > 19 0% + org-kill-line > 9 0% + # > 6 0% + file-notify-handle-event > 2095 3% + byte-code > 1359 2% + timer-event-handler > 375 0% + org-appear--post-cmd > 160 0% + corfu--post-command > 61 0% + org-fragtog--post-cmd > 14 0% + emojify-update-visible-emojis-background-after-command > 11 0% guide-key/close-guide-buffer > 7 0% + flycheck-perform-deferred-syntax-check > 7 0% + flycheck-maybe-display-error-at-point-soon > 6 0% undo-auto--add-boundary > 6 0% + corfu--auto-post-command > 4 0% flycheck-error-list-update-source > 3 0% internal-timer-start-idle > 3 0% sp--post-command-hook-handler > --------------- > For fun, I tried a second time with font-lock-mode turned off. I didn't > notice much difference in speed subjectively. The profile showed an even > higher percentage for redisplay_internal, though I don't quite understand > exactly how much of that is triggered by the higher-order functions listed > below it, esp org-in-src-block-p and org-inside-latex-fragment-p. In any > case, here it is for ocmparison: > > 20128 80% - redisplay_internal (C function) > 7142 28% - assq > 908 3% - org-context > 12 0% org-inside-LaTeX-fragment-p > 6 0% + org-in-src-block-p > 3060 12% - substitute-command-keys > 2176 8% - # > 320 1% - kill-buffer > 237 0% - replace-buffer-in-windows > 197 0% - unrecord-window-buffer > 158 0% - assq-delete-all > 57 0% assoc-delete-all > 6 0% + delete-char > 215 0% + tab-bar-make-keymap > 97 0% + org-in-subtree-not-table-p > 94 0% + and > > 44 0% + not > 41 0% + keymap-canonicalize > 25 0% + # > 22 0% + eval > 21 0% + jit-lock-function > 16 0% + org-entry-get > 15 0% org-at-table-p > 14 0% + # > 12 0% + vc-menu-map-filter > 10 0% + org-at-timestamp-p > 6 0% + let > 6 0% file-readable-p > 6 0% table--row-column-insertion-point-p > 4 0% + imenu-update-menubar > 4 0% eq > 3 0% + or > 3 0% org-inside-LaTeX-fragment-p > 3 0% kill-this-buffer-enabled-p > 3 0% display-graphic-p > 3 0% get-buffer-process > 3082 12% - ... > 3082 12% Automatic GC > 1546 6% - command-execute > 968 3% - byte-code > 968 3% - read-extended-command > 968 3% - completing-read-default > 968 3% - apply > 968 3% - vertico--advice > 695 2% + # > 578 2% - funcall-interactively > 534 2% - org-self-insert-command > 31 0% + org-fold-core--fix-folded-region > 25 0% + org-num--verify > 9 0% + flycheck-handle-change > 8 0% + org-element--cache-after-change > 7 0% + org-indent-refresh-maybe > 6 0% + jit-lock-after-change > 5 0% org-at-table-p > 4 0% org-fix-tags-on-the-fly > 3 0% > org-fold-check-before-invisible-edit--text-properties > 3 0% org-indent-notify-modified-headline > 12 0% + org-delete-backward-char > 4 0% + # > 3 0% + # > 279 1% + timer-event-handler > 26 0% + org-appear--post-cmd > 12 0% + emojify-update-visible-emojis-background-after-command > 9 0% + org-fragtog--post-cmd > 8 0% + undo-auto--add-boundary > 4 0% corfu--auto-post-command > 4 0% internal-timer-start-idle > 3 0% + flycheck-maybe-display-error-at-point-soon > > > ----------------------------------------- > > Does this look at all useful so far? > > --000000000000a9a46905d8a66626 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+c29ycnkgZXZlcnlvbmUsIEkgYWNjaWRlbnRhbGx5IHNlbnQgdGhpcyB0 byBLYXVzaGFsIHRoaXMgbW9ybmluZyzCoCBhbmQgdGhlbiB0b29rIHF1aXRlIGEgd2hpbGUgdG8g Z2V0IGJhY2sgdG8gYSBjb21wdXRlciBhZnRlciBoZSBsZXQgbWUga25vdyBteSBtaXN0YWtlITxi cj48L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNz PSJnbWFpbF9hdHRyIj5PbiBUdWUsIEZlYiAyMiwgMjAyMiBhdCAxMDoxMiBBTSBNYXR0IFByaWNl ICZsdDs8YSBocmVmPSJtYWlsdG86bW9wdG9wOTlAZ21haWwuY29tIj5tb3B0b3A5OUBnbWFpbC5j b208L2E+Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3Rl IiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCBy Z2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIiPjxkaXYgZGly PSJsdHIiPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIg Y2xhc3M9ImdtYWlsX2F0dHIiPk9uIFR1ZSwgRmViIDIyLCAyMDIyIGF0IDEyOjQ1IEFNIEthdXNo YWwgTW9kaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmthdXNoYWwubW9kaUBnbWFpbC5jb20iIHRhcmdl dD0iX2JsYW5rIj5rYXVzaGFsLm1vZGlAZ21haWwuY29tPC9hPiZndDsgd3JvdGU6PGJyPjwvZGl2 PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBw eCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxl ZnQ6MWV4Ij48ZGl2IGRpcj0iYXV0byI+PGRpdiBkaXI9ImF1dG8iPjxicj48L2Rpdj48YnI+PGRp diBjbGFzcz0iZ21haWxfcXVvdGUiIGRpcj0iYXV0byI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9Imdt YWlsX2F0dHIiPk9uIFR1ZSwgRmViIDIyLCAyMDIyLCAxMjozNCBBTSBJaG9yIFJhZGNoZW5rbyAm bHQ7PGEgaHJlZj0ibWFpbHRvOnlhbnRhcjkyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnlh bnRhcjkyQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJn bWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDox cHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij4NCjxicj4NCkkgYW0g d29uZGVyaW5nIGlmIG1hbnkgcGVvcGxlIGluIHRoZSBsaXN0IGV4cGVyaWVuY2UgbGF0ZW5jeSBp c3N1ZXMuPGJyPg0KTWF5YmUgd2UgY2FuIG9yZ2FuaXNlIGFuIG9ubGluZSBtZWV0aW5nIChqaXRz aSBvciBCQkIpIGFuZCBjb2xsZWN0IHRoZTxicj4NCmNvbW1vbiBjYXVzZXMvIGRvIG9ubGluZSBp bnRlcmFjdGl2ZSBkZWJ1Z2dpbmc/PGJyPjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2IGRpcj0iYXV0 byI+PGJyPjwvZGl2PjxkaXYgZGlyPSJhdXRvIj4rMcKgPC9kaXY+PGRpdiBkaXI9ImF1dG8iPjxi cj48L2Rpdj48ZGl2IGRpcj0iYXV0byI+SSBoYXZlIHNlZW4gZmV3IHBlb3BsZSBzZWUgdGhpcyBp c3N1ZSBvbiB0aGUgb3gtaHVnbyBpc3N1ZSB0cmFja2VyOiA8YSBocmVmPSJodHRwczovL2dpdGh1 Yi5jb20va2F1c2hhbG1vZGkvb3gtaHVnby9kaXNjdXNzaW9ucy81NTEjZGlzY3Vzc2lvbmNvbW1l bnQtMjEwNDM1MiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9rYXVzaGFsbW9k aS9veC1odWdvL2Rpc2N1c3Npb25zLzU1MSNkaXNjdXNzaW9uY29tbWVudC0yMTA0MzUyPC9hPjwv ZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PsKgPGRpdj5JIDxzcGFu Pmh0aW5rPC9zcGFuPiBpdCYjMzk7cyBhIGdyZWF0IGlkZWEsIElob3IhPC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj5NZWFud2hpbGUsIEkgaGF2ZSBhIHByb2ZpbGUgcmVwb3J0LiBJIGhhZCBhIGxp dHRsZSB0cm91YmxlIGdldHRpbmcgdGhlIHNsb3duZXNzIHRvIHJldHVybiAob2YgY291cnNlKSBi dXQsIHN1YmplY3RpdmVseSwgaXQgc2VlbWVkIHRvIGdldCB3b3JzZSAoc3ViamVjdGl2ZWx5IHNs b3dlciwgYW5kIHRoZSBsYXB0b3AgZmFuIHN0YXJ0ZWQgdXAgYi9jIG9mIGhpZ2ggY3B1IHVzYWdl KSB3aGVuIEkgY3JlYXRlZCBhbmQgZW50ZXJlZCBhIHNyYyBibG9jay4gQXBvbG9naWVzIGZvciB0 aGUgbG9uZyBwYXN0ZTo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PsKgIMKgIMKgwqAgNDU3MDcg wqA3MCUgLSByZWRpc3BsYXlfaW50ZXJuYWwgKEMgZnVuY3Rpb24pPGJyPsKgIMKgIMKgIMKgIDg0 NjggwqAxMyUgwqAtIHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzPGJyPsKgIMKgIMKgIMKgIDYxMTEg wqAgOSUgwqAgLSAjJmx0O2NvbXBpbGVkIC0weDFjOGMxYjI5NGE4OThhZjMmZ3Q7PGJyPsKgIMKg IMKgIMKgIMKgOTQzIMKgIDElIMKgIMKgLSBraWxsLWJ1ZmZlcjxicj7CoCDCoCDCoCDCoCDCoDcw OCDCoCAxJSDCoCDCoCAtIHJlcGxhY2UtYnVmZmVyLWluLXdpbmRvd3M8YnI+wqAgwqAgwqAgwqAg wqA2MTQgwqAgMCUgwqAgwqAgwqAtIHVucmVjb3JkLXdpbmRvdy1idWZmZXI8YnI+wqAgwqAgwqAg wqAgwqA1MTUgwqAgMCUgwqAgwqAgwqAgLSBhc3NxLWRlbGV0ZS1hbGw8YnI+wqAgwqAgwqAgwqAg wqAxNDIgwqAgMCUgwqAgwqAgwqAgwqAgwqBhc3NvYy1kZWxldGUtYWxsPGJyPsKgIMKgIMKgIMKg IMKgIMKgMyDCoCAwJSDCoCDCoCBkZWxldGUtY2hhcjxicj7CoCDCoCDCoCDCoCA4MDYwIMKgMTIl IMKgLSBhc3NxPGJyPsKgIMKgIMKgIMKgIDI1OTggwqAgNCUgwqAgLSBvcmctY29udGV4dDxicj7C oCDCoCDCoCDCoCDCoCAxNSDCoCAwJSDCoCDCoCDCoG9yZy1pbnNpZGUtTGFUZVgtZnJhZ21lbnQt cDxicj7CoCDCoCDCoCDCoCDCoCAxMiDCoCAwJSDCoCDCoC0gb3JnLWluLXNyYy1ibG9jay1wPGJy PsKgIMKgIMKgIMKgIMKgIDEyIMKgIDAlIMKgIMKgIC0gb3JnLWVsZW1lbnQtYXQtcG9pbnQ8YnI+ wqAgwqAgwqAgwqAgwqAgwqA5IMKgIDAlIMKgIMKgIMKgLSBvcmctZWxlbWVudC0tY2FjaGUtdmVy aWZ5LWVsZW1lbnQ8YnI+wqAgwqAgwqAgwqAgwqAgwqA5IMKgIDAlIMKgIMKgIMKgIMKgIG9yZy1l bGVtZW50LS1wYXJzZS10bzxicj7CoCDCoCDCoCDCoCDCoCDCoDMgwqAgMCUgwqAgwqAgwqAgwqBv cmctZWxlbWVudC0tcGFyc2UtdG88YnI+wqAgwqAgwqAgwqAgwqAgwqA4IMKgIDAlIMKgIMKgLSBv cmctYXQtdGltZXN0YW1wLXA8YnI+wqAgwqAgwqAgwqAgwqAgwqA4IMKgIDAlIMKgIMKgIMKgIG9y Zy1pbi1yZWdleHA8YnI+wqAgwqAgwqAgwqAgwqA2NDIgwqAgMCUgwqArIHRhYi1iYXItbWFrZS1r ZXltYXA8YnI+wqAgwqAgwqAgwqAgwqAzMDkgwqAgMCUgwqArIGFuZDxicj7CoCDCoCDCoCDCoCDC oDI3MCDCoCAwJSDCoCsgb3JnLWluLXN1YnRyZWUtbm90LXRhYmxlLXA8YnI+wqAgwqAgwqAgwqAg wqAxOTYgwqAgMCUgwqArIG5vdDxicj7CoCDCoCDCoCDCoCDCoDE2MyDCoCAwJSDCoCsgaml0LWxv Y2stZnVuY3Rpb248YnI+wqAgwqAgwqAgwqAgwqAxMTUgwqAgMCUgwqArIG9yZy1lbnRyeS1nZXQ8 YnI+wqAgwqAgwqAgwqAgwqAgOTYgwqAgMCUgwqAgwqBrZXltYXAtY2Fub25pY2FsaXplPGJyPsKg IMKgIMKgIMKgIMKgIDU2IMKgIDAlIMKgIMKgb3JnLWF0LXRhYmxlLXA8YnI+wqAgwqAgwqAgwqAg wqAgNTIgwqAgMCUgwqArICMmbHQ7Y29tcGlsZWQgLTB4MTZiNzM3ZmM2MWU4ZjZjMiZndDs8YnI+ wqAgwqAgwqAgwqAgwqAgNDggwqAgMCUgwqArICMmbHQ7Y29tcGlsZWQgMHhmNzZlNTk1NDNiODgx ZWUmZ3Q7PGJyPsKgIMKgIMKgIMKgIMKgIDQzIMKgIDAlIMKgIMKgdGFibGUtLXJvdy1jb2x1bW4t aW5zZXJ0aW9uLXBvaW50LXA8YnI+wqAgwqAgwqAgwqAgwqAgMjkgwqAgMCUgwqAgwqBvcmctaW5z aWRlLUxhVGVYLWZyYWdtZW50LXA8YnI+wqAgwqAgwqAgwqAgwqAgMjcgwqAgMCUgwqArIG1lbnUt YmFyLXBvc2l0aXZlLXA8YnI+wqAgwqAgwqAgwqAgwqAgMjYgwqAgMCUgwqArIGV2YWw8YnI+wqAg wqAgwqAgwqAgwqAgMjQgwqAgMCUgwqAgwqBmaWxlLXJlYWRhYmxlLXA8YnI+wqAgwqAgwqAgwqAg wqAgMjEgwqAgMCUgwqArIGZ1bmNhbGw8YnI+wqAgwqAgwqAgwqAgwqAgMTYgwqAgMCUgwqArIGlt ZW51LXVwZGF0ZS1tZW51YmFyPGJyPsKgIMKgIMKgIMKgIMKgIDE0IMKgIDAlIMKgKyB2Yy1tZW51 LW1hcC1maWx0ZXI8YnI+wqAgwqAgwqAgwqAgwqAgMTMgwqAgMCUgwqArIHRhYmxlLS1wcm9iZS1j ZWxsPGJyPsKgIMKgIMKgIMKgIMKgIDEyIMKgIDAlIMKgKyBvcjxicj7CoCDCoCDCoCDCoCDCoCAx MSDCoCAwJSDCoCsgbGV0PGJyPsKgIMKgIMKgIMKgIMKgIDExIMKgIDAlIMKgKyBvcmctYXQtdGlt ZXN0YW1wLXA8YnI+wqAgwqAgwqAgwqAgwqAgMTAgwqAgMCUgwqArIGZseWNoZWNrLW92ZXJsYXlz LWF0PGJyPsKgIMKgIMKgIMKgIMKgIMKgNyDCoCAwJSDCoCDCoHVuZG8tdHJlZS11cGRhdGUtbWVu dS1iYXI8YnI+wqAgwqAgwqAgwqAgwqAgwqA2IMKgIDAlIMKgKyByZXF1aXJlPGJyPsKgIMKgIMKg IMKgIMKgIMKgNiDCoCAwJSDCoCsgZW1vamlmeS11cGRhdGUtdmlzaWJsZS1lbW9qaXMtYmFja2dy b3VuZC1hZnRlci13aW5kb3ctc2Nyb2xsPGJyPsKgIMKgIMKgIMKgIMKgIMKgNiDCoCAwJSDCoCDC oGtpbGwtdGhpcy1idWZmZXItZW5hYmxlZC1wPGJyPsKgIMKgIMKgIMKgIMKgIMKgNCDCoCAwJSDC oCDCoG1vZGUtbGluZS1kZWZhdWx0LWhlbHAtZWNobzxicj7CoCDCoCDCoCDCoCDCoCDCoDMgwqAg MCUgwqArIG51bGw8YnI+wqAgwqAgwqAgwqAgOTE5MiDCoDE0JSAtIC4uLjxicj7CoCDCoCDCoCDC oCA5MTcyIMKgMTQlIMKgIMKgQXV0b21hdGljIEdDPGJyPsKgIMKgIMKgIMKgIMKgIDIwIMKgIDAl IMKgLSBraWxsLXZpc3VhbC1saW5lPGJyPsKgIMKgIMKgIMKgIMKgIDIwIMKgIDAlIMKgIC0ga2ls bC1yZWdpb248YnI+wqAgwqAgwqAgwqAgwqAgMjAgwqAgMCUgwqAgwqAtIGZpbHRlci1idWZmZXIt c3Vic3RyaW5nPGJyPsKgIMKgIMKgIMKgIMKgIDIwIMKgIDAlIMKgIMKgIC0gb3JnLWZvbGQtY29y ZS0tYnVmZmVyLXN1YnN0cmluZy1maWx0ZXI8YnI+wqAgwqAgwqAgwqAgwqAgMjAgwqAgMCUgwqAg wqAgwqAtIGJ1ZmZlci1zdWJzdHJpbmctLWZpbHRlcjxicj7CoCDCoCDCoCDCoCDCoCAyMCDCoCAw JSDCoCDCoCDCoCAtICMmbHQ7Y29tcGlsZWQgLTB4ZjZmODIzZGQ2MGJjZTImZ3Q7PGJyPsKgIMKg IMKgIMKgIMKgIDIwIMKgIDAlIMKgIMKgIMKgIMKgLSBhcHBseTxicj7CoCDCoCDCoCDCoCDCoCAy MCDCoCAwJSDCoCDCoCDCoCDCoCAtICMmbHQ7c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYx NmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8xOCZndDs8YnI+wqAgwqAgwqAgwqAgwqAgMjAgwqAg MCUgwqAgwqAgwqAgwqAgwqAtICMmbHQ7Y29tcGlsZWQgLTB4MThiZWM1MDk4NDg0ZDIwMiZndDs8 YnI+wqAgwqAgwqAgwqAgwqAgMjAgwqAgMCUgwqAgwqAgwqAgwqAgwqAgLSBhcHBseTxicj7CoCDC oCDCoCDCoCDCoCAyMCDCoCAwJSDCoCDCoCDCoCDCoCDCoCDCoC0gIyZsdDtjb21waWxlZCAtMHgx MDg2MWRmY2ZiNzUyZjMxJmd0Ozxicj7CoCDCoCDCoCDCoCDCoCAyMCDCoCAwJSDCoCDCoCDCoCDC oCDCoCDCoCAtICMmbHQ7Y29tcGlsZWQgLTB4ZjZmODIzZGQ2MGJjZTImZ3Q7PGJyPsKgIMKgIMKg IMKgIMKgIDIwIMKgIDAlIMKgIMKgIMKgIMKgIMKgIMKgIMKgLSAjJmx0O2NvbXBpbGVkIC0weGY2 ZjgyM2RkNjBiY2UyJmd0Ozxicj7CoCDCoCDCoCDCoCDCoCAyMCDCoCAwJSDCoCDCoCDCoCDCoCDC oCDCoCDCoCAtIGFwcGx5PGJyPsKgIMKgIMKgIMKgIMKgIDIwIMKgIDAlIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgLSAjJmx0O2NvbXBpbGVkIC0weGFiODE5MjdmMDc0M2FkJmd0Ozxicj7CoCDCoCDC oCDCoCDCoCAyMCDCoCAwJSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCArIGRlbGV0ZS1hbmQtZXh0 cmFjdC1yZWdpb248YnI+wqAgwqAgwqAgwqAgNzg0NyDCoDEyJSAtIGNvbW1hbmQtZXhlY3V0ZTxi cj7CoCDCoCDCoCDCoCA1NzQ5IMKgIDglIMKgLSBmdW5jYWxsLWludGVyYWN0aXZlbHk8YnI+wqAg wqAgwqAgwqAgMjk2MyDCoCA0JSDCoCArIG9yZy1zZWxmLWluc2VydC1jb21tYW5kPGJyPsKgIMKg IMKgIMKgIDIxODYgwqAgMyUgwqAgKyBvcmctY3ljbGU8YnI+wqAgwqAgwqAgwqAgwqAxNDggwqAg MCUgwqAgKyBjb3JmdS1pbnNlcnQ8YnI+wqAgwqAgwqAgwqAgwqAxNDYgwqAgMCUgwqAgKyBleGVj dXRlLWV4dGVuZGVkLWNvbW1hbmQ8YnI+wqAgwqAgwqAgwqAgwqAxMjEgwqAgMCUgwqAgKyBvcmct cmV0dXJuPGJyPsKgIMKgIMKgIMKgIMKgIDMyIMKgIDAlIMKgICsgIyZsdDtsYW1iZGEgMHhiMGY2 MmRhNTRjMmM3Jmd0Ozxicj7CoCDCoCDCoCDCoCDCoCAyNiDCoCAwJSDCoCArICMmbHQ7bGFtYmRh IDB4YjBmNjJkYTU0YzJjYiZndDs8YnI+wqAgwqAgwqAgwqAgwqAgMjQgwqAgMCUgwqAgKyBtd2lt LWJlZ2lubmluZzxicj7CoCDCoCDCoCDCoCDCoCAxOSDCoCAwJSDCoCArIG9yZy1kZWxldGUtYmFj a3dhcmQtY2hhcjxicj7CoCDCoCDCoCDCoCDCoCAxOSDCoCAwJSDCoCArIG9yZy1raWxsLWxpbmU8 YnI+wqAgwqAgwqAgwqAgwqAgwqA5IMKgIDAlIMKgICsgIyZsdDtsYW1iZGEgMHhiMGY2MmRhNTRj MmVjJmd0Ozxicj7CoCDCoCDCoCDCoCDCoCDCoDYgwqAgMCUgwqAgKyBmaWxlLW5vdGlmeS1oYW5k bGUtZXZlbnQ8YnI+wqAgwqAgwqAgwqAgMjA5NSDCoCAzJSDCoCsgYnl0ZS1jb2RlPGJyPsKgIMKg IMKgIMKgIDEzNTkgwqAgMiUgKyB0aW1lci1ldmVudC1oYW5kbGVyPGJyPsKgIMKgIMKgIMKgIMKg Mzc1IMKgIDAlICsgb3JnLWFwcGVhci0tcG9zdC1jbWQ8YnI+wqAgwqAgwqAgwqAgwqAxNjAgwqAg MCUgKyBjb3JmdS0tcG9zdC1jb21tYW5kPGJyPsKgIMKgIMKgIMKgIMKgIDYxIMKgIDAlICsgb3Jn LWZyYWd0b2ctLXBvc3QtY21kPGJyPsKgIMKgIMKgIMKgIMKgIDE0IMKgIDAlICsgZW1vamlmeS11 cGRhdGUtdmlzaWJsZS1lbW9qaXMtYmFja2dyb3VuZC1hZnRlci1jb21tYW5kPGJyPsKgIMKgIMKg IMKgIMKgIDExIMKgIDAlIMKgIGd1aWRlLWtleS9jbG9zZS1ndWlkZS1idWZmZXI8YnI+wqAgwqAg wqAgwqAgwqAgwqA3IMKgIDAlICsgZmx5Y2hlY2stcGVyZm9ybS1kZWZlcnJlZC1zeW50YXgtY2hl Y2s8YnI+wqAgwqAgwqAgwqAgwqAgwqA3IMKgIDAlICsgZmx5Y2hlY2stbWF5YmUtZGlzcGxheS1l cnJvci1hdC1wb2ludC1zb29uPGJyPsKgIMKgIMKgIMKgIMKgIMKgNiDCoCAwJSDCoCB1bmRvLWF1 dG8tLWFkZC1ib3VuZGFyeTxicj7CoCDCoCDCoCDCoCDCoCDCoDYgwqAgMCUgKyBjb3JmdS0tYXV0 by1wb3N0LWNvbW1hbmQ8YnI+wqAgwqAgwqAgwqAgwqAgwqA0IMKgIDAlIMKgIGZseWNoZWNrLWVy cm9yLWxpc3QtdXBkYXRlLXNvdXJjZTxicj7CoCDCoCDCoCDCoCDCoCDCoDMgwqAgMCUgwqAgaW50 ZXJuYWwtdGltZXItc3RhcnQtaWRsZTxicj7CoCDCoCDCoCDCoCDCoCDCoDMgwqAgMCUgwqAgc3At LXBvc3QtY29tbWFuZC1ob29rLWhhbmRsZXI8L2Rpdj48ZGl2Pi0tLS0tLS0tLS0tLS0tLTwvZGl2 PjxkaXY+Rm9yIGZ1biwgSSB0cmllZCBhIHNlY29uZCB0aW1lIHdpdGggZm9udC1sb2NrLW1vZGUg dHVybmVkIG9mZi7CoCBJIGRpZG4mIzM5O3Qgbm90aWNlIG11Y2ggZGlmZmVyZW5jZSBpbiBzcGVl ZCBzdWJqZWN0aXZlbHkuIFRoZSBwcm9maWxlIHNob3dlZCBhbiBldmVuIGhpZ2hlciBwZXJjZW50 YWdlIGZvciByZWRpc3BsYXlfaW50ZXJuYWwsIHRob3VnaCBJIGRvbiYjMzk7dCBxdWl0ZSB1bmRl cnN0YW5kIGV4YWN0bHkgaG93IG11Y2ggb2YgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGhpZ2hl ci1vcmRlciBmdW5jdGlvbnMgbGlzdGVkIGJlbG93IGl0LCBlc3Agb3JnLWluLXNyYy1ibG9jay1w IGFuZCBvcmctaW5zaWRlLWxhdGV4LWZyYWdtZW50LXAuIEluIGFueSBjYXNlLCBoZXJlIGl0IGlz IGZvciBvY21wYXJpc29uOiA8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7CoCDCoCDCoMKg IDIwMTI4IMKgODAlIC0gcmVkaXNwbGF5X2ludGVybmFsIChDIGZ1bmN0aW9uKTxicj7CoCDCoCDC oCDCoCA3MTQyIMKgMjglIMKgLSBhc3NxPGJyPsKgIMKgIMKgIMKgIMKgOTA4IMKgIDMlIMKgIC0g b3JnLWNvbnRleHQ8YnI+wqAgwqAgwqAgwqAgwqAgMTIgwqAgMCUgwqAgwqAgwqBvcmctaW5zaWRl LUxhVGVYLWZyYWdtZW50LXA8YnI+wqAgwqAgwqAgwqAgwqAgwqA2IMKgIDAlIMKgIMKgKyBvcmct aW4tc3JjLWJsb2NrLXA8YnI+wqAgwqAgwqAgwqAgMzA2MCDCoDEyJSDCoC0gc3Vic3RpdHV0ZS1j b21tYW5kLWtleXM8YnI+wqAgwqAgwqAgwqAgMjE3NiDCoCA4JSDCoCAtICMmbHQ7Y29tcGlsZWQg LTB4MWM4YzFiM2FmNjc4NmFmMyZndDs8YnI+wqAgwqAgwqAgwqAgwqAzMjAgwqAgMSUgwqAgwqAt IGtpbGwtYnVmZmVyPGJyPsKgIMKgIMKgIMKgIMKgMjM3IMKgIDAlIMKgIMKgIC0gcmVwbGFjZS1i dWZmZXItaW4td2luZG93czxicj7CoCDCoCDCoCDCoCDCoDE5NyDCoCAwJSDCoCDCoCDCoC0gdW5y ZWNvcmQtd2luZG93LWJ1ZmZlcjxicj7CoCDCoCDCoCDCoCDCoDE1OCDCoCAwJSDCoCDCoCDCoCAt IGFzc3EtZGVsZXRlLWFsbDxicj7CoCDCoCDCoCDCoCDCoCA1NyDCoCAwJSDCoCDCoCDCoCDCoCDC oGFzc29jLWRlbGV0ZS1hbGw8YnI+wqAgwqAgwqAgwqAgwqAgwqA2IMKgIDAlIMKgICsgZGVsZXRl LWNoYXI8YnI+wqAgwqAgwqAgwqAgwqAyMTUgwqAgMCUgwqArIHRhYi1iYXItbWFrZS1rZXltYXA8 YnI+wqAgwqAgwqAgwqAgwqAgOTcgwqAgMCUgwqArIG9yZy1pbi1zdWJ0cmVlLW5vdC10YWJsZS1w PGJyPsKgIMKgIMKgIMKgIMKgIDk0IMKgIDAlIMKgKyBhbmQ8YnI+PC9kaXY+PGRpdj48YnI+PC9k aXY+PGRpdj7CoCDCoCDCoCDCoCDCoCA0NCDCoCAwJSDCoCsgbm90PGJyPsKgIMKgIMKgIMKgIMKg IDQxIMKgIDAlIMKgKyBrZXltYXAtY2Fub25pY2FsaXplPGJyPsKgIMKgIMKgIMKgIMKgIDI1IMKg IDAlIMKgKyAjJmx0O2NvbXBpbGVkIDB4Zjc2ZTU5NTQzYjg4MWVlJmd0Ozxicj7CoCDCoCDCoCDC oCDCoCAyMiDCoCAwJSDCoCsgZXZhbDxicj7CoCDCoCDCoCDCoCDCoCAyMSDCoCAwJSDCoCsgaml0 LWxvY2stZnVuY3Rpb248YnI+wqAgwqAgwqAgwqAgwqAgMTYgwqAgMCUgwqArIG9yZy1lbnRyeS1n ZXQ8YnI+wqAgwqAgwqAgwqAgwqAgMTUgwqAgMCUgwqAgwqBvcmctYXQtdGFibGUtcDxicj7CoCDC oCDCoCDCoCDCoCAxNCDCoCAwJSDCoCsgIyZsdDtjb21waWxlZCAtMHgxNmI3MzdmYzYxZThmNmMy Jmd0Ozxicj7CoCDCoCDCoCDCoCDCoCAxMiDCoCAwJSDCoCsgdmMtbWVudS1tYXAtZmlsdGVyPGJy PsKgIMKgIMKgIMKgIMKgIDEwIMKgIDAlIMKgKyBvcmctYXQtdGltZXN0YW1wLXA8YnI+wqAgwqAg wqAgwqAgwqAgwqA2IMKgIDAlIMKgKyBsZXQ8YnI+wqAgwqAgwqAgwqAgwqAgwqA2IMKgIDAlIMKg IMKgZmlsZS1yZWFkYWJsZS1wPGJyPsKgIMKgIMKgIMKgIMKgIMKgNiDCoCAwJSDCoCDCoHRhYmxl LS1yb3ctY29sdW1uLWluc2VydGlvbi1wb2ludC1wPGJyPsKgIMKgIMKgIMKgIMKgIMKgNCDCoCAw JSDCoCsgaW1lbnUtdXBkYXRlLW1lbnViYXI8YnI+wqAgwqAgwqAgwqAgwqAgwqA0IMKgIDAlIMKg IMKgZXE8YnI+wqAgwqAgwqAgwqAgwqAgwqAzIMKgIDAlIMKgKyBvcjxicj7CoCDCoCDCoCDCoCDC oCDCoDMgwqAgMCUgwqAgwqBvcmctaW5zaWRlLUxhVGVYLWZyYWdtZW50LXA8YnI+wqAgwqAgwqAg wqAgwqAgwqAzIMKgIDAlIMKgIMKga2lsbC10aGlzLWJ1ZmZlci1lbmFibGVkLXA8YnI+wqAgwqAg wqAgwqAgwqAgwqAzIMKgIDAlIMKgIMKgZGlzcGxheS1ncmFwaGljLXA8YnI+wqAgwqAgwqAgwqAg wqAgwqAzIMKgIDAlIMKgIMKgZ2V0LWJ1ZmZlci1wcm9jZXNzPGJyPsKgIMKgIMKgIMKgIDMwODIg wqAxMiUgLSAuLi48YnI+wqAgwqAgwqAgwqAgMzA4MiDCoDEyJSDCoCDCoEF1dG9tYXRpYyBHQzxi cj7CoCDCoCDCoCDCoCAxNTQ2IMKgIDYlIC0gY29tbWFuZC1leGVjdXRlPGJyPsKgIMKgIMKgIMKg IMKgOTY4IMKgIDMlIMKgLSBieXRlLWNvZGU8YnI+wqAgwqAgwqAgwqAgwqA5NjggwqAgMyUgwqAg LSByZWFkLWV4dGVuZGVkLWNvbW1hbmQ8YnI+wqAgwqAgwqAgwqAgwqA5NjggwqAgMyUgwqAgwqAt IGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0PGJyPsKgIMKgIMKgIMKgIMKgOTY4IMKgIDMlIMKgIMKg IC0gYXBwbHk8YnI+wqAgwqAgwqAgwqAgwqA5NjggwqAgMyUgwqAgwqAgwqAtIHZlcnRpY28tLWFk dmljZTxicj7CoCDCoCDCoCDCoCDCoDY5NSDCoCAyJSDCoCDCoCDCoCArICMmbHQ7c3ViciBjb21w bGV0aW5nLXJlYWQtZGVmYXVsdCZndDs8YnI+wqAgwqAgwqAgwqAgwqA1NzggwqAgMiUgwqAtIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseTxicj7CoCDCoCDCoCDCoCDCoDUzNCDCoCAyJSDCoCAtIG9yZy1z ZWxmLWluc2VydC1jb21tYW5kPGJyPsKgIMKgIMKgIMKgIMKgIDMxIMKgIDAlIMKgIMKgKyBvcmct Zm9sZC1jb3JlLS1maXgtZm9sZGVkLXJlZ2lvbjxicj7CoCDCoCDCoCDCoCDCoCAyNSDCoCAwJSDC oCDCoCsgb3JnLW51bS0tdmVyaWZ5PGJyPsKgIMKgIMKgIMKgIMKgIMKgOSDCoCAwJSDCoCDCoCsg Zmx5Y2hlY2staGFuZGxlLWNoYW5nZTxicj7CoCDCoCDCoCDCoCDCoCDCoDggwqAgMCUgwqAgwqAr IG9yZy1lbGVtZW50LS1jYWNoZS1hZnRlci1jaGFuZ2U8YnI+wqAgwqAgwqAgwqAgwqAgwqA3IMKg IDAlIMKgIMKgKyBvcmctaW5kZW50LXJlZnJlc2gtbWF5YmU8YnI+wqAgwqAgwqAgwqAgwqAgwqA2 IMKgIDAlIMKgIMKgKyBqaXQtbG9jay1hZnRlci1jaGFuZ2U8YnI+wqAgwqAgwqAgwqAgwqAgwqA1 IMKgIDAlIMKgIMKgIMKgb3JnLWF0LXRhYmxlLXA8YnI+wqAgwqAgwqAgwqAgwqAgwqA0IMKgIDAl IMKgIMKgIMKgb3JnLWZpeC10YWdzLW9uLXRoZS1mbHk8YnI+wqAgwqAgwqAgwqAgwqAgwqAzIMKg IDAlIMKgIMKgIMKgb3JnLWZvbGQtY2hlY2stYmVmb3JlLWludmlzaWJsZS1lZGl0LS10ZXh0LXBy b3BlcnRpZXM8YnI+wqAgwqAgwqAgwqAgwqAgwqAzIMKgIDAlIMKgIMKgIMKgb3JnLWluZGVudC1u b3RpZnktbW9kaWZpZWQtaGVhZGxpbmU8YnI+wqAgwqAgwqAgwqAgwqAgMTIgwqAgMCUgwqAgKyBv cmctZGVsZXRlLWJhY2t3YXJkLWNoYXI8YnI+wqAgwqAgwqAgwqAgwqAgwqA0IMKgIDAlIMKgICsg IyZsdDtsYW1iZGEgMHhiMGY2MmRhNTRjMmVjJmd0Ozxicj7CoCDCoCDCoCDCoCDCoCDCoDMgwqAg MCUgwqAgKyAjJmx0O2xhbWJkYSAweGIwZjYyZGE1NGMyY2ImZ3Q7PGJyPsKgIMKgIMKgIMKgIMKg Mjc5IMKgIDElICsgdGltZXItZXZlbnQtaGFuZGxlcjxicj7CoCDCoCDCoCDCoCDCoCAyNiDCoCAw JSArIG9yZy1hcHBlYXItLXBvc3QtY21kPGJyPsKgIMKgIMKgIMKgIMKgIDEyIMKgIDAlICsgZW1v amlmeS11cGRhdGUtdmlzaWJsZS1lbW9qaXMtYmFja2dyb3VuZC1hZnRlci1jb21tYW5kPGJyPsKg IMKgIMKgIMKgIMKgIMKgOSDCoCAwJSArIG9yZy1mcmFndG9nLS1wb3N0LWNtZDxicj7CoCDCoCDC oCDCoCDCoCDCoDggwqAgMCUgKyB1bmRvLWF1dG8tLWFkZC1ib3VuZGFyeTxicj7CoCDCoCDCoCDC oCDCoCDCoDQgwqAgMCUgwqAgY29yZnUtLWF1dG8tcG9zdC1jb21tYW5kPGJyPsKgIMKgIMKgIMKg IMKgIMKgNCDCoCAwJSDCoCBpbnRlcm5hbC10aW1lci1zdGFydC1pZGxlPGJyPsKgIMKgIMKgIMKg IMKgIMKgMyDCoCAwJSArIGZseWNoZWNrLW1heWJlLWRpc3BsYXktZXJyb3ItYXQtcG9pbnQtc29v bjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkRvZXMg dGhpcyBsb29rIGF0IGFsbCB1c2VmdWwgc28gZmFyPzxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48 L2Rpdj48L2Rpdj48L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj4NCg== --000000000000a9a46905d8a66626--