From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id E2A8E5D5 for ; Mon, 26 Nov 2018 21:19:52 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.56,283,1539640800"; d="scan'208,217";a="357462211" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 26 Nov 2018 22:19:50 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 5B82F82554; Mon, 26 Nov 2018 22:19:50 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id E312F824CF for ; Mon, 26 Nov 2018 22:19:43 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=yawar.amin@gmail.com; spf=Pass smtp.mailfrom=yawar.amin@gmail.com; spf=None smtp.helo=postmaster@mail-it1-f174.google.com IronPort-PHdr: =?us-ascii?q?9a23=3ADheR3hw1ZaX8zTfXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?2+kWIJqq85mqBkHD//Il1AaPAd2Lraocw8Pt8InYEVQa5piAtH1QOLdtbDQizf?= =?us-ascii?q?ssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB1?= =?us-ascii?q?JuPoEYLOksi7ze+/94HQbglSmDaxfa55IQmrownWqsQYm5ZpJLwryhvOrHtIeu?= =?us-ascii?q?BWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3o05MLwqxbO?= =?us-ascii?q?SxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDtU7s6RSqt4LtqSB/wiS?= =?us-ascii?q?cIKTg58H3MisdtiK5XuQ+tqwBjz4LRZoyeKfhwcb7Hfd4CSmVBUMReWSxPDI2/?= =?us-ascii?q?coUBEfYOMP1CoIXhvVYDtweyCRWuCe7p1zRGhmX23ao/0+k5Ew7JxgIhEMgUsH?= =?us-ascii?q?/JsNj1MaYSUeaox6TPzTTMdf1X1i3n6ITSaB8hpPCMXbRrfMrezEkgDQLFjlGK?= =?us-ascii?q?pYP5ODOV0/0Avm6G5ORuUuKvjnQoqwB3ojW3wccjlpPGhocRylze8iV52ok1Kc?= =?us-ascii?q?W5SE59e96kEYFfuzuUN4tsWs8iTGBouDo6yr0bopG3ZjQFyJMixxPZdveJcJCI?= =?us-ascii?q?7wr9WOqNJTp0nnFodbKlixqv8EWty/fwWtS23VtFqCdOj8PCuWoX1xPJ78iKUv?= =?us-ascii?q?t98Vml2TaIzw3T7/tLIUEwlabCKp4h3qM8moMdsUjeHCL7l1/6jKCRdkUj9eio?= =?us-ascii?q?7/robq/6qZ+bMo94kgD+MqIwlcyjGek0LBQCUmyB9em/1LDv51D1TbRLg/Esj6?= =?us-ascii?q?XUsp/XKdwepqGjAg9V1ogj6wy4DzejyNkZnWMILVxfdxKdlYTmIVTOIPH+Dfqk?= =?us-ascii?q?jFSslS1kx/HCPrH7HprNKX3DnK/7fblh805c1BYzzddH6p1IEL4BJfbzVlb1tN?= =?us-ascii?q?zZFR85Lxe5w/3nCdV4zoMRQ3iDAq6fMKPIsF+H/PgjI+eWZNxdhDGoCeUh5vem?= =?us-ascii?q?qXYmkFsZNf2rwJ8WYTa8F+tvJ0GxZXv03JEPCzFZkBA5SbnbgUKLS3Z6Yne0F/?= =?us-ascii?q?Yt7y4yEsSvCIbFbo+oib2Fmiy8G8sFNSh9FlmQHCKwJM2/UPAWZXfXe5c5y21W?= =?us-ascii?q?Zf2aU4YkkCqWmkr/wrtjIPDT/3RB553m3dlxoebUkENrrGAmP4Gmy2iIClpMsC?= =?us-ascii?q?YQXTZvhfJwpEV8zhGI1q0q26UFR+wW3OtAV0IBDbCZz+F+DIqsCAfIf9PMSUr/?= =?us-ascii?q?B9v/Xm13QdU2zNsDJU16Hof6gw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B/BAAPY/xbhq6mVdFjHAEBAQQBAQcEA?= =?us-ascii?q?QGBZYFbgQ9PMyeDeYEdgl6QIIINAniJEY8rDSOBVIJ1AheEChoHAQQ0EgEDAQE?= =?us-ascii?q?CAQEBAQETAQEBCAsLCBsOIwyCNiQBgmEBAQEBAgEjHQEbEgsBAwELBgMCCw0NC?= =?us-ascii?q?QEBEgICAiABEQEFARwGEwgRgwgBgWgBAw0ID4pgkAc8iVkRgSOBEgUBF4J3BYF?= =?us-ascii?q?FQII5ChknDVqBNwIGEot3gVc/gRGCXQcugxALAgEBgTdVGwIFgjWCVwKJTwKGP?= =?us-ascii?q?49yBwKCHASEXIYgG4N4GIImjmKCeIpLil4PIYETKYF2MxojUDGCOwmCEhqBCAE?= =?us-ascii?q?CgkiBPoNWhVwkMIp2DRUCgicBAQ?= X-IPAS-Result: =?us-ascii?q?A0B/BAAPY/xbhq6mVdFjHAEBAQQBAQcEAQGBZYFbgQ9PMye?= =?us-ascii?q?DeYEdgl6QIIINAniJEY8rDSOBVIJ1AheEChoHAQQ0EgEDAQECAQEBAQETAQEBC?= =?us-ascii?q?AsLCBsOIwyCNiQBgmEBAQEBAgEjHQEbEgsBAwELBgMCCw0NCQEBEgICAiABEQE?= =?us-ascii?q?FARwGEwgRgwgBgWgBAw0ID4pgkAc8iVkRgSOBEgUBF4J3BYFFQII5ChknDVqBN?= =?us-ascii?q?wIGEot3gVc/gRGCXQcugxALAgEBgTdVGwIFgjWCVwKJTwKGP49yBwKCHASEXIY?= =?us-ascii?q?gG4N4GIImjmKCeIpLil4PIYETKYF2MxojUDGCOwmCEhqBCAECgkiBPoNWhVwkM?= =?us-ascii?q?Ip2DRUCgicBAQ?= X-IronPort-AV: E=Sophos;i="5.56,283,1539640800"; d="scan'208,217";a="286899126" Received: from mail-it1-f174.google.com ([209.85.166.174]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 26 Nov 2018 22:19:41 +0100 Received: by mail-it1-f174.google.com with SMTP id z7so13178783iti.0 for ; Mon, 26 Nov 2018 13:19:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+IfOQsdgr2Y2vSe6+s4lpWY790Sh5Bv0y+2z0aSiCok=; b=WjJLQ6pgjRH0C5TcK6P3ngwEIn5a2tvSn/vxyycVYJcPIaJd76pnwWosr1Tgi8fn/3 MB62/qJklz3qbEl3X8bGdRC5FKoQJA+81d7beXTPwODdWAE1Jn50sZ4gIIZW3LbCww/1 uYH+Bl7xkqkBoCyKvLyhXqdh+lcGu8sE3cN6METv0hrRBGLw838EILs4kJ8P0GJsueoW oqxrrdoUvCrDn6yEy6MyWDQ33nuUxRUR30V3sSgUKlXJm8CSJPVxvl2c4lcF8lnCiqLP mcC/mSEYeJxQgOAw5ayEiulfHkxm3+VLHrlp21WwvYHkJ9DNXlzuhDL3hrtScsUDxCor 20hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+IfOQsdgr2Y2vSe6+s4lpWY790Sh5Bv0y+2z0aSiCok=; b=lgtBQgAnIOdt7f0f3CJhABywDbGTCNglUcsJRBB7XE1s5zdNNvJmYMUQDJ9yFCpfFj ab4IhTEIr5vaH3yh7R1a8krhOm1cdq63g76WR76u80eGfLZQfsbyHPlzOlRYvzpNvn4x iEiF5voSXXRq/ntGioqRogvaMeqcXC7aVIuqCqT6Qr/ddvMTXl0AD4i8FaHjp0EmkGt5 SRiisiIoXI9QvUBdjb30KMPzwxYM2HrgvXuOAaZLQLFKN24oB6V+WZQhOBj4uBCMobQz JLDlIriTqA/zi15+u3QXjgIPtoMsyvP3xgWMJJpD/O4P/LL7BnNlarFPgSEf3GSlZBli 9isw== X-Gm-Message-State: AA+aEWYYCxSut+KFlCVVfPbEcNEDjhl8GuwIDltxFGIjMUyO9aMl9x/D RCamgowctb7qnGLjVRs+Bv21/Qaz5bofM7Iqz+fz7e+M4Q== X-Google-Smtp-Source: AJdET5cRjVSMt6SlEXF8o7EQvFd7+76qa2/KP2NbwoUGG/rIxw8kgCZ//EJVY6AYB7HURiqDrGnAllJ4eHcLbwK/Sm0= X-Received: by 2002:a24:1e06:: with SMTP id 6mr25375510itt.46.1543267180061; Mon, 26 Nov 2018 13:19:40 -0800 (PST) MIME-Version: 1.0 References: <20181126101448.3ee5jgz4c6ulsbbr@first.in-berlin.de> In-Reply-To: From: Yawar Amin Date: Mon, 26 Nov 2018 16:19:34 -0500 Message-ID: To: Julia Lawall Cc: oliver@first.in-berlin.de, Ocaml Mailing List Content-Type: multipart/alternative; boundary="0000000000000faa59057b97e4a0" Subject: Re: [Caml-list] Build-/Installation-Tools - not enogh of them? Reply-To: Yawar Amin X-Loop: caml-list@inria.fr X-Sequence: 17150 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --0000000000000faa59057b97e4a0 Content-Type: text/plain; charset="UTF-8" Yes, opam should be easy to install. And in my experience it is; the process usually goes as described in http://ocaml.org/docs/install.html#OPAM (install with your system package manager). After that you should be a couple of commands away from a working compiler. Realistically, today, system ocaml compiler + make is a corner case in OCaml development/distribution and shouldn't take precedence over a standardized developer workflow with opam. Regards, Yawar On Mon, Nov 26, 2018 at 3:54 PM Julia Lawall wrote: > > > On Mon, 26 Nov 2018, Yawar Amin wrote: > > > But you still need an OCaml compiler, right? Are you not using opam to > get > > it? If you are, you already have opam. If you're not ... you will have a > > tougher time than you need to :-) opam is the recommended installation > > method by the OCaml team: http://ocaml.org/docs/install.html > > Personally, I was in the end forced to install opam. But I don't want to > force my users to install it (to figure out how to get it to work, I had > to contact a member of Gallium - and my users don't have that > opportunity). I would prefer that they can just use the ocaml that comes > with their system package manager. > > Since opam is the recommended method of installation, couldn't there at > least be provided understandable instructions? That really seems like a > tougher time than what is necessary. > > julia > > > > > Regards, > > > > Yawar > > > > On Mon, Nov 26, 2018 at 3:34 PM Julia Lawall > wrote: > > > > > > On Mon, 26 Nov 2018, Yawar Amin wrote: > > > > > Hi Julia, I agree that we need to simplify the life of the > > user. But that's > > > the developer's job, not the language toolchain. Users should > > not need to > > > know or care about OCaml (ideally), they should download and > > run binary > > > packages or install them through their operating system > > package manager. > > > Since it's not possible for many projects to provide all > > possible system > > > binaries to users, the fallback should be for the user to > > build the package > > > with clear instructions that they'll need to install opam and > > then > > > `opam build` (e.g.). > > > > Like the original poster, I would very much prefer something > > based on > > make. > > > > julia > > > > > > > > Regards, > > > > > > Yawar > > > > > > On Mon, Nov 26, 2018 at 11:59 AM Julia Lawall > > wrote: > > > > > > > > > On Mon, 26 Nov 2018, Yawar Amin wrote: > > > > > > > If anyone would like to chime in and say that OCaml > > build and > > > packaging > > > > system is not that complicated, I would recommend > > first > > > looking > > > > > > at https://github.com/rizo/awesome-ocaml#package-management > > > . IMHO we need > > > > to seriously look at consolidating efforts around OPAM > > for > > > package > > > > management, packaging, building, testing and running. > > All the > > > serious > > > > language-specific package managers do it, it's a > > proven > > > strategy and it > > > > simplifies life for the developer. > > > > > > I find it odd that simplifying the life of the developer > > is the > > > highest > > > priority. Doesn't one want to simplify the life of the > > user? > > > Ideally the > > > user who has never touched OCaml before in his life? > > > > > > As a simple example, the web page for installing OCaml > > says that > > > the > > > recommended way to install ocaml is to install opam. > > There is a > > > link to a > > > page explaining how to install opam. How should anyone > > even > > > have > > > confidence that they will end up with OCaml after > > following > > > those > > > instructions? Even step 1 of the installation process > > leads the > > > user to > > > confusion. > > > > > > julia > > > > > > > > > > > This could be a typical workflow: > > > > > > > > cd some-ocaml-proj > > > > opam install # Switches compiler if necessary and > > installs and > > > locally > > > > caches package dependencies > > > > opam build > > > > opam run # Automatically builds if necessary > > > > opam test # Ditto > > > > opam package # Ditto; --upload option can immediately > > upload > > > to opam > > > > opam doc # Builds documentation with ocamldoc or > > whatever > > > > opam login -u user -p password > > > > > > > > Regards, > > > > > > > > Yawar > > > > > > > > On Mon, Nov 26, 2018 at 5:15 AM Oliver Bandel > > > > > > > wrote: > > > > Hello, > > > > > > > > a while ago it looked like there were not enough > > build- > > > and > > > > installation-tools > > > > for OCaml. I remember some discussions about > > that. > > > > > > > > Now it seems to me that there are a lot of them. > > > > So, developers can pick the one they know about. > > > > > > > > For all these tools there might be good reasons > > to use > > > them, and > > > > those > > > > developers who looked at these tools and choose > > them for > > > their > > > > projects, will > > > > know them well enough. > > > > > > > > The situation differs, if one wants to package > > the > > > written > > > > software, > > > > and one needs to know many of those tools, just > > to > > > compile the > > > > stuff. > > > > So, when one just wants to compile and install > > some > > > software, > > > > just for that, it would take much effort to > > learn the > > > different > > > > build-tools. > > > > > > > > So, packaging has become more complicated, even > > though > > > for the > > > > developers > > > > these tools may save time. > > > > > > > > It would be nice if people who used one of the > > many new > > > building > > > > tools > > > > could provide a Makefile that allows just to > > type > > > > "make" and "make install", instead of expecting > > everyone > > > who > > > > wants to compile > > > > the software to first learn > > just-another-build-tool. > > > > > > > > Also it would be good, to mention early, which > > > installation > > > > tools (make-dependencies) > > > > are in use, and too mention needed packages > > (opam or > > > others) to > > > > just build the stuff. > > > > > > > > Thanks and regards, > > > > Oliver Bandel > > > > > > > > -- > > > > Caml-list mailing list. Subscription management > > and > > > archives: > > > > https://sympa.inria.fr/sympa/arc/caml-list > > > > https://inbox.ocaml.org/caml-list > > > > Forum: https://discuss.ocaml.org/ > > > > Bug reports: http://caml.inria.fr/bin/caml-bugs > > > > > > > > > > > > > > > > > > -- > > > Caml-list mailing list. Subscription management and > > archives: > > > https://sympa.inria.fr/sympa/arc/caml-list > > > https://inbox.ocaml.org/caml-list > > > Forum: https://discuss.ocaml.org/ > > > Bug reports: http://caml.inria.fr/bin/caml-bugs > > > > > > > > > > > > > -- > > Caml-list mailing list. Subscription management and archives: > > https://sympa.inria.fr/sympa/arc/caml-list > > https://inbox.ocaml.org/caml-list > > Forum: https://discuss.ocaml.org/ > > Bug reports: http://caml.inria.fr/bin/caml-bugs > > > > > > > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > https://inbox.ocaml.org/caml-list > Forum: https://discuss.ocaml.org/ > Bug reports: http://caml.inria.fr/bin/caml-bugs -- Caml-list mailing list. Subscription management and archives: https://sympa.inria.fr/sympa/arc/caml-list https://inbox.ocaml.org/caml-list Forum: https://discuss.ocaml.org/ Bug reports: http://caml.inria.fr/bin/caml-bugs --0000000000000faa59057b97e4a0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+WWVzLCBvcGFtIHNob3Vs ZCBiZSBlYXN5IHRvIGluc3RhbGwuIEFuZCBpbiBteSBleHBlcmllbmNlIGl0 IGlzOyB0aGUgcHJvY2VzcyB1c3VhbGx5IGdvZXMgYXMgZGVzY3JpYmVkIGlu wqA8YSBocmVmPSJodHRwOi8vb2NhbWwub3JnL2RvY3MvaW5zdGFsbC5odG1s I09QQU0iPmh0dHA6Ly9vY2FtbC5vcmcvZG9jcy9pbnN0YWxsLmh0bWwjT1BB TTwvYT4gKGluc3RhbGwgd2l0aCB5b3VyIHN5c3RlbSBwYWNrYWdlIG1hbmFn ZXIpLiBBZnRlciB0aGF0IHlvdSBzaG91bGQgYmUgYSBjb3VwbGUgb2YgY29t bWFuZHMgYXdheSBmcm9tIGEgd29ya2luZyBjb21waWxlci48L2Rpdj48ZGl2 IGRpcj0ibHRyIj48YnI+PC9kaXY+PGRpdiBkaXI9Imx0ciI+UmVhbGlzdGlj YWxseSwgdG9kYXksIHN5c3RlbSBvY2FtbMKgY29tcGlsZXIgKyBtYWtlIGlz IGEgY29ybmVyIGNhc2UgaW4gT0NhbWwgZGV2ZWxvcG1lbnQvZGlzdHJpYnV0 aW9uIGFuZCBzaG91bGRuJiMzOTt0IHRha2UgcHJlY2VkZW5jZSBvdmVyIGEg c3RhbmRhcmRpemVkIGRldmVsb3BlciB3b3JrZmxvdyB3aXRoIG9wYW0uPC9k aXY+PGRpdiBkaXI9Imx0ciI+PGJyPjwvZGl2PjxkaXY+UmVnYXJkcyw8L2Rp dj48ZGl2Pjxicj48L2Rpdj48ZGl2Pllhd2FyPC9kaXY+PGRpdiBkaXI9Imx0 ciI+PGJyPjwvZGl2PjxkaXYgZGlyPSJsdHIiPjxicj48L2Rpdj48L2Rpdj48 YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiPk9u IE1vbiwgTm92IDI2LCAyMDE4IGF0IDM6NTQgUE0gSnVsaWEgTGF3YWxsICZs dDs8YSBocmVmPSJtYWlsdG86anVsaWEubGF3YWxsQGxpcDYuZnIiPmp1bGlh Lmxhd2FsbEBsaXA2LmZyPC9hPiZndDsgd3JvdGU6PGJyPjwvZGl2PjxibG9j a3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAg MCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVm dDoxZXgiPjxicj4NCjxicj4NCk9uIE1vbiwgMjYgTm92IDIwMTgsIFlhd2Fy IEFtaW4gd3JvdGU6PGJyPg0KPGJyPg0KJmd0OyBCdXQgeW91IHN0aWxsIG5l ZWQgYW4gT0NhbWwgY29tcGlsZXIsIHJpZ2h0PyBBcmUgeW91IG5vdCB1c2lu ZyBvcGFtIHRvIGdldDxicj4NCiZndDsgaXQ/IElmIHlvdSBhcmUsIHlvdSBh bHJlYWR5IGhhdmUgb3BhbS4gSWYgeW91JiMzOTtyZSBub3QgLi4uIHlvdSB3 aWxsIGhhdmUgYTxicj4NCiZndDsgdG91Z2hlciB0aW1lIHRoYW4geW91IG5l ZWQgdG8gOi0pIG9wYW3CoGlzIHRoZSByZWNvbW1lbmRlZCBpbnN0YWxsYXRp b248YnI+DQomZ3Q7IG1ldGhvZCBieSB0aGUgT0NhbWwgdGVhbTrCoDxhIGhy ZWY9Imh0dHA6Ly9vY2FtbC5vcmcvZG9jcy9pbnN0YWxsLmh0bWwiIHJlbD0i bm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9vY2FtbC5vcmcv ZG9jcy9pbnN0YWxsLmh0bWw8L2E+PGJyPg0KPGJyPg0KUGVyc29uYWxseSwg SSB3YXMgaW4gdGhlIGVuZCBmb3JjZWQgdG8gaW5zdGFsbCBvcGFtLsKgIEJ1 dCBJIGRvbiYjMzk7dCB3YW50IHRvPGJyPg0KZm9yY2UgbXkgdXNlcnMgdG8g aW5zdGFsbCBpdCAodG8gZmlndXJlIG91dCBob3cgdG8gZ2V0IGl0IHRvIHdv cmssIEkgaGFkPGJyPg0KdG8gY29udGFjdCBhIG1lbWJlciBvZiBHYWxsaXVt IC0gYW5kIG15IHVzZXJzIGRvbiYjMzk7dCBoYXZlIHRoYXQ8YnI+DQpvcHBv cnR1bml0eSkuwqAgSSB3b3VsZCBwcmVmZXIgdGhhdCB0aGV5IGNhbiBqdXN0 IHVzZSB0aGUgb2NhbWwgdGhhdCBjb21lczxicj4NCndpdGggdGhlaXIgc3lz dGVtIHBhY2thZ2UgbWFuYWdlci48YnI+DQo8YnI+DQpTaW5jZSBvcGFtIGlz IHRoZSByZWNvbW1lbmRlZCBtZXRob2Qgb2YgaW5zdGFsbGF0aW9uLCBjb3Vs ZG4mIzM5O3QgdGhlcmUgYXQ8YnI+DQpsZWFzdCBiZSBwcm92aWRlZCB1bmRl cnN0YW5kYWJsZSBpbnN0cnVjdGlvbnM/wqAgVGhhdCByZWFsbHkgc2VlbXMg bGlrZSBhPGJyPg0KdG91Z2hlciB0aW1lIHRoYW4gd2hhdCBpcyBuZWNlc3Nh cnkuPGJyPg0KPGJyPg0KanVsaWE8YnI+DQo8YnI+DQomZ3Q7PGJyPg0KJmd0 OyBSZWdhcmRzLDxicj4NCiZndDs8YnI+DQomZ3Q7IFlhd2FyPGJyPg0KJmd0 Ozxicj4NCiZndDsgT24gTW9uLCBOb3YgMjYsIDIwMTggYXQgMzozNCBQTSBK dWxpYSBMYXdhbGwgJmx0OzxhIGhyZWY9Im1haWx0bzpqdWxpYS5sYXdhbGxA bGlwNi5mciIgdGFyZ2V0PSJfYmxhbmsiPmp1bGlhLmxhd2FsbEBsaXA2LmZy PC9hPiZndDsgd3JvdGU6PGJyPg0KJmd0Ozxicj4NCiZndDs8YnI+DQomZ3Q7 wqAgwqAgwqAgwqBPbiBNb24sIDI2IE5vdiAyMDE4LCBZYXdhciBBbWluIHdy b3RlOjxicj4NCiZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7IEhpIEp1 bGlhLCBJIGFncmVlIHRoYXQgd2UgbmVlZCB0byBzaW1wbGlmeSB0aGUgbGlm ZSBvZiB0aGU8YnI+DQomZ3Q7wqAgwqAgwqAgwqB1c2VyLiBCdXQgdGhhdCYj Mzk7czxicj4NCiZndDvCoCDCoCDCoCDCoCZndDsgdGhlIGRldmVsb3BlciYj Mzk7cyBqb2IsIG5vdCB0aGUgbGFuZ3VhZ2UgdG9vbGNoYWluLiBVc2VycyBz aG91bGQ8YnI+DQomZ3Q7wqAgwqAgwqAgwqBub3QgbmVlZCB0bzxicj4NCiZn dDvCoCDCoCDCoCDCoCZndDsga25vdyBvciBjYXJlIGFib3V0IE9DYW1sIChp ZGVhbGx5KSwgdGhleSBzaG91bGQgZG93bmxvYWQgYW5kPGJyPg0KJmd0O8Kg IMKgIMKgIMKgcnVuIGJpbmFyeTxicj4NCiZndDvCoCDCoCDCoCDCoCZndDsg cGFja2FnZXMgb3IgaW5zdGFsbCB0aGVtIHRocm91Z2ggdGhlaXIgb3BlcmF0 aW5nIHN5c3RlbTxicj4NCiZndDvCoCDCoCDCoCDCoHBhY2thZ2UgbWFuYWdl ci48YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7IFNpbmNlIGl0JiMzOTtzIG5v dCBwb3NzaWJsZSBmb3IgbWFueSBwcm9qZWN0cyB0byBwcm92aWRlIGFsbDxi cj4NCiZndDvCoCDCoCDCoCDCoHBvc3NpYmxlIHN5c3RlbTxicj4NCiZndDvC oCDCoCDCoCDCoCZndDsgYmluYXJpZXMgdG8gdXNlcnMsIHRoZSBmYWxsYmFj ayBzaG91bGQgYmUgZm9yIHRoZSB1c2VyIHRvPGJyPg0KJmd0O8KgIMKgIMKg IMKgYnVpbGQgdGhlIHBhY2thZ2U8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7 IHdpdGggY2xlYXIgaW5zdHJ1Y3Rpb25zIHRoYXQgdGhleSYjMzk7bGwgbmVl ZCB0byBpbnN0YWxsIG9wYW0gYW5kPGJyPg0KJmd0O8KgIMKgIMKgIMKgdGhl bjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDsgYG9wYW3CoGJ1aWxkYCAoZS5n LikuPGJyPg0KJmd0Ozxicj4NCiZndDvCoCDCoCDCoCDCoExpa2UgdGhlIG9y aWdpbmFsIHBvc3RlciwgSSB3b3VsZCB2ZXJ5IG11Y2ggcHJlZmVyIHNvbWV0 aGluZzxicj4NCiZndDvCoCDCoCDCoCDCoGJhc2VkIG9uPGJyPg0KJmd0O8Kg IMKgIMKgIMKgbWFrZS48YnI+DQomZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKg anVsaWE8YnI+DQomZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0Ozxicj4N CiZndDvCoCDCoCDCoCDCoCZndDsgUmVnYXJkcyw8YnI+DQomZ3Q7wqAgwqAg wqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0OyBZYXdhcjxicj4N CiZndDvCoCDCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7 IE9uIE1vbiwgTm92IDI2LCAyMDE4IGF0IDExOjU5IEFNIEp1bGlhIExhd2Fs bDxicj4NCiZndDvCoCDCoCDCoCDCoCZsdDs8YSBocmVmPSJtYWlsdG86anVs aWEubGF3YWxsQGxpcDYuZnIiIHRhcmdldD0iX2JsYW5rIj5qdWxpYS5sYXdh bGxAbGlwNi5mcjwvYT4mZ3Q7IHdyb3RlOjxicj4NCiZndDvCoCDCoCDCoCDC oCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKg IMKgIMKgJmd0O8KgIMKgIMKgIMKgT24gTW9uLCAyNiBOb3YgMjAxOCwgWWF3 YXIgQW1pbiB3cm90ZTo8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0K Jmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0OyBJZiBhbnlvbmUg d291bGQgbGlrZSB0byBjaGltZSBpbiBhbmQgc2F5IHRoYXQgT0NhbWw8YnI+ DQomZ3Q7wqAgwqAgwqAgwqBidWlsZCBhbmQ8YnI+DQomZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqBwYWNrYWdpbmc8YnI+DQomZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7IHN5c3RlbSBpcyBub3QgdGhhdCBjb21w bGljYXRlZCwgSSB3b3VsZCByZWNvbW1lbmQ8YnI+DQomZ3Q7wqAgwqAgwqAg wqBmaXJzdDxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoGxv b2tpbmc8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7 PGJyPg0KJmd0O8KgIMKgIMKgIMKgYXTCoDxhIGhyZWY9Imh0dHBzOi8vZ2l0 aHViLmNvbS9yaXpvL2F3ZXNvbWUtb2NhbWwjcGFja2FnZS1tYW5hZ2VtZW50 IiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dp dGh1Yi5jb20vcml6by9hd2Vzb21lLW9jYW1sI3BhY2thZ2UtbWFuYWdlbWVu dDwvYT48YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAuwqBJ TUhPIHdlIG5lZWQ8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqAmZ3Q7IHRvIHNlcmlvdXNseSBsb29rIGF0IGNvbnNvbGlkYXRpbmcgZWZm b3J0cyBhcm91bmQgT1BBTTxicj4NCiZndDvCoCDCoCDCoCDCoGZvcjxicj4N CiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoHBhY2thZ2U8YnI+DQom Z3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7IG1hbmFnZW1lbnQs IHBhY2thZ2luZywgYnVpbGRpbmcsIHRlc3RpbmcgYW5kIHJ1bm5pbmcuPGJy Pg0KJmd0O8KgIMKgIMKgIMKgQWxsIHRoZTxicj4NCiZndDvCoCDCoCDCoCDC oCZndDvCoCDCoCDCoCDCoHNlcmlvdXM8YnI+DQomZ3Q7wqAgwqAgwqAgwqAm Z3Q7wqAgwqAgwqAgwqAmZ3Q7IGxhbmd1YWdlLXNwZWNpZmljIHBhY2thZ2Ug bWFuYWdlcnMgZG8gaXQsIGl0JiMzOTtzIGE8YnI+DQomZ3Q7wqAgwqAgwqAg wqBwcm92ZW48YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBz dHJhdGVneSBhbmQgaXQ8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAg wqAgwqAmZ3Q7IHNpbXBsaWZpZXMgbGlmZSBmb3IgdGhlIGRldmVsb3Blci48 YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKg Jmd0O8KgIMKgIMKgIMKgSSBmaW5kIGl0IG9kZCB0aGF0IHNpbXBsaWZ5aW5n IHRoZSBsaWZlIG9mIHRoZSBkZXZlbG9wZXI8YnI+DQomZ3Q7wqAgwqAgwqAg wqBpcyB0aGU8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBo aWdoZXN0PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgcHJp b3JpdHkuwqAgRG9lc24mIzM5O3Qgb25lIHdhbnQgdG8gc2ltcGxpZnkgdGhl IGxpZmUgb2YgdGhlPGJyPg0KJmd0O8KgIMKgIMKgIMKgdXNlcj/CoDxicj4N CiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoElkZWFsbHkgdGhlPGJy Pg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgdXNlciB3aG8gaGFz IG5ldmVyIHRvdWNoZWQgT0NhbWwgYmVmb3JlIGluIGhpcyBsaWZlPzxicj4N CiZndDvCoCDCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7 wqAgwqAgwqAgwqBBcyBhIHNpbXBsZSBleGFtcGxlLCB0aGUgd2ViIHBhZ2Ug Zm9yIGluc3RhbGxpbmcgT0NhbWw8YnI+DQomZ3Q7wqAgwqAgwqAgwqBzYXlz IHRoYXQ8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqB0aGU8 YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqByZWNvbW1lbmRl ZCB3YXkgdG8gaW5zdGFsbCBvY2FtbCBpcyB0byBpbnN0YWxsIG9wYW0uwqA8 YnI+DQomZ3Q7wqAgwqAgwqAgwqBUaGVyZSBpcyBhPGJyPg0KJmd0O8KgIMKg IMKgIMKgJmd0O8KgIMKgIMKgIMKgbGluayB0byBhPGJyPg0KJmd0O8KgIMKg IMKgIMKgJmd0O8KgIMKgIMKgIMKgcGFnZSBleHBsYWluaW5nIGhvdyB0byBp bnN0YWxsIG9wYW0uwqAgSG93IHNob3VsZCBhbnlvbmU8YnI+DQomZ3Q7wqAg wqAgwqAgwqBldmVuPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKg IMKgaGF2ZTxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoGNv bmZpZGVuY2UgdGhhdCB0aGV5IHdpbGwgZW5kIHVwIHdpdGggT0NhbWwgYWZ0 ZXI8YnI+DQomZ3Q7wqAgwqAgwqAgwqBmb2xsb3dpbmc8YnI+DQomZ3Q7wqAg wqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqB0aG9zZTxicj4NCiZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoGluc3RydWN0aW9ucz/CoCBFdmVuIHN0ZXAg MSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3M8YnI+DQomZ3Q7wqAgwqAg wqAgwqBsZWFkcyB0aGU8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAg wqAgwqB1c2VyIHRvPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKg IMKgY29uZnVzaW9uLjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDs8YnI+DQom Z3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBqdWxpYTxicj4NCiZndDvC oCDCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAg wqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKg Jmd0OyBUaGlzIGNvdWxkIGJlIGEgdHlwaWNhbCB3b3JrZmxvdzo8YnI+DQom Z3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8Kg IMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0OyBjZCBzb21lLW9jYW1sLXBy b2o8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7IG9w YW3CoGluc3RhbGwgIyBTd2l0Y2hlcyBjb21waWxlciBpZiBuZWNlc3Nhcnkg YW5kPGJyPg0KJmd0O8KgIMKgIMKgIMKgaW5zdGFsbHMgYW5kPGJyPg0KJmd0 O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgbG9jYWxseTxicj4NCiZndDvC oCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDsgY2FjaGVzIHBhY2thZ2Ug ZGVwZW5kZW5jaWVzPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKg IMKgJmd0OyBvcGFtwqBidWlsZDxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvC oCDCoCDCoCDCoCZndDsgb3BhbcKgcnVuICMgQXV0b21hdGljYWxseSBidWls ZHMgaWYgbmVjZXNzYXJ5PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKg IMKgIMKgJmd0OyBvcGFtwqB0ZXN0ICMgRGl0dG88YnI+DQomZ3Q7wqAgwqAg wqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7IG9wYW3CoHBhY2thZ2UgIyBEaXR0 bzsgLS11cGxvYWQgb3B0aW9uIGNhbiBpbW1lZGlhdGVseTxicj4NCiZndDvC oCDCoCDCoCDCoHVwbG9hZDxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDC oCDCoCDCoHRvIG9wYW08YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAg wqAgwqAmZ3Q7IG9wYW3CoGRvYyAjIEJ1aWxkcyBkb2N1bWVudGF0aW9uIHdp dGggb2NhbWxkb2PCoG9yPGJyPg0KJmd0O8KgIMKgIMKgIMKgd2hhdGV2ZXI8 YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7IG9wYW3C oGxvZ2luIC11IHVzZXIgLXAgcGFzc3dvcmQ8YnI+DQomZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0 O8KgIMKgIMKgIMKgJmd0OyBSZWdhcmRzLDxicj4NCiZndDvCoCDCoCDCoCDC oCZndDvCoCDCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7 wqAgwqAgwqAgwqAmZ3Q7IFlhd2FyPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0 O8KgIMKgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDC oCDCoCDCoCZndDsgT24gTW9uLCBOb3YgMjYsIDIwMTggYXQgNToxNSBBTSBP bGl2ZXIgQmFuZGVsPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKg IMKgJmx0OzxhIGhyZWY9Im1haWx0bzpvbGl2ZXJAZmlyc3QuaW4tYmVybGlu LmRlIiB0YXJnZXQ9Il9ibGFuayI+b2xpdmVyQGZpcnN0LmluLWJlcmxpbi5k ZTwvYT4mZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKg Jmd0OyB3cm90ZTo8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqBIZWxsbyw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAm Z3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8Kg IMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgYSB3aGlsZSBhZ28gaXQgbG9va2Vk IGxpa2UgdGhlcmUgd2VyZSBub3QgZW5vdWdoPGJyPg0KJmd0O8KgIMKgIMKg IMKgYnVpbGQtPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKg YW5kPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0O8Kg IMKgIMKgIMKgaW5zdGFsbGF0aW9uLXRvb2xzPGJyPg0KJmd0O8KgIMKgIMKg IMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgZm9yIE9DYW1sLiBJ IHJlbWVtYmVyIHNvbWUgZGlzY3Vzc2lvbnMgYWJvdXQ8YnI+DQomZ3Q7wqAg wqAgwqAgwqB0aGF0Ljxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDC oCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAm Z3Q7wqAgwqAgwqAgwqBOb3cgaXQgc2VlbXMgdG8gbWUgdGhhdCB0aGVyZSBh cmUgYSBsb3Qgb2YgdGhlbS48YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAg wqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBTbywgZGV2ZWxvcGVycyBjYW4gcGlj ayB0aGUgb25lIHRoZXkga25vdyBhYm91dC48YnI+DQomZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0 O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgRm9yIGFsbCB0aGVzZSB0b29s cyB0aGVyZSBtaWdodCBiZSBnb29kIHJlYXNvbnM8YnI+DQomZ3Q7wqAgwqAg wqAgwqB0byB1c2U8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqB0aGVtLCBhbmQ8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqB0aG9zZTxicj4NCiZndDvCoCDCoCDCoCDCoCZn dDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoGRldmVsb3BlcnMgd2hvIGxv b2tlZCBhdCB0aGVzZSB0b29scyBhbmQgY2hvb3NlPGJyPg0KJmd0O8KgIMKg IMKgIMKgdGhlbSBmb3I8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAg wqAgwqB0aGVpcjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDC oCZndDvCoCDCoCDCoCDCoHByb2plY3RzLCB3aWxsPGJyPg0KJmd0O8KgIMKg IMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKga25vdyB0aGVt IHdlbGwgZW5vdWdoLjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDC oCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAm Z3Q7wqAgwqAgwqAgwqBUaGUgc2l0dWF0aW9uIGRpZmZlcnMsIGlmIG9uZSB3 YW50cyB0byBwYWNrYWdlPGJyPg0KJmd0O8KgIMKgIMKgIMKgdGhlPGJyPg0K Jmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgd3JpdHRlbjxicj4NCiZn dDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoHNv ZnR3YXJlLDxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZn dDvCoCDCoCDCoCDCoGFuZCBvbmUgbmVlZHMgdG8ga25vdyBtYW55IG9mIHRo b3NlIHRvb2xzLCBqdXN0PGJyPg0KJmd0O8KgIMKgIMKgIMKgdG88YnI+DQom Z3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBjb21waWxlIHRoZTxicj4N CiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDC oHN0dWZmLjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZn dDvCoCDCoCDCoCDCoFNvLCB3aGVuIG9uZSBqdXN0IHdhbnRzIHRvIGNvbXBp bGUgYW5kIGluc3RhbGw8YnI+DQomZ3Q7wqAgwqAgwqAgwqBzb21lPGJyPg0K Jmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgc29mdHdhcmUsPGJyPg0K Jmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKg anVzdCBmb3IgdGhhdCwgaXQgd291bGQgdGFrZSBtdWNoIGVmZm9ydCB0bzxi cj4NCiZndDvCoCDCoCDCoCDCoGxlYXJuIHRoZTxicj4NCiZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoGRpZmZlcmVudDxicj4NCiZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoGJ1aWxkLXRvb2xz Ljxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDs8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqBTbywgcGFja2FnaW5nIGhhcyBiZWNvbWUgbW9yZSBjb21wbGljYXRlZCwg ZXZlbjxicj4NCiZndDvCoCDCoCDCoCDCoHRob3VnaDxicj4NCiZndDvCoCDC oCDCoCDCoCZndDvCoCDCoCDCoCDCoGZvciB0aGU8YnI+DQomZ3Q7wqAgwqAg wqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBkZXZlbG9wZXJz PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKg IMKgIMKgdGhlc2UgdG9vbHMgbWF5IHNhdmUgdGltZS48YnI+DQomZ3Q7wqAg wqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKg IMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgSXQgd291bGQgYmUg bmljZSBpZiBwZW9wbGUgd2hvIHVzZWQgb25lIG9mIHRoZTxicj4NCiZndDvC oCDCoCDCoCDCoG1hbnkgbmV3PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8Kg IMKgIMKgIMKgYnVpbGRpbmc8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAg wqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqB0b29sczxicj4NCiZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoGNvdWxkIHByb3Zp ZGUgYSBNYWtlZmlsZSB0aGF0IGFsbG93cyBqdXN0IHRvPGJyPg0KJmd0O8Kg IMKgIMKgIMKgdHlwZTxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoCZxdW90O21ha2UmcXVvdDsgYW5kICZxdW90 O21ha2UgaW5zdGFsbCZxdW90OywgaW5zdGVhZCBvZiBleHBlY3Rpbmc8YnI+ DQomZ3Q7wqAgwqAgwqAgwqBldmVyeW9uZTxicj4NCiZndDvCoCDCoCDCoCDC oCZndDvCoCDCoCDCoCDCoHdobzxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvC oCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoHdhbnRzIHRvIGNvbXBpbGU8YnI+ DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqB0aGUgc29mdHdhcmUgdG8gZmlyc3QgbGVhcm48YnI+DQomZ3Q7wqAgwqAg wqAgwqBqdXN0LWFub3RoZXItYnVpbGQtdG9vbC48YnI+DQomZ3Q7wqAgwqAg wqAgwqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKg Jmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgQWxzbyBpdCB3b3VsZCBi ZSBnb29kLCB0byBtZW50aW9uIGVhcmx5LCB3aGljaDxicj4NCiZndDvCoCDC oCDCoCDCoCZndDvCoCDCoCDCoCDCoGluc3RhbGxhdGlvbjxicj4NCiZndDvC oCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoHRvb2xz IChtYWtlLWRlcGVuZGVuY2llcyk8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7 wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBhcmUgaW4gdXNlLCBhbmQgdG9v IG1lbnRpb24gbmVlZGVkIHBhY2thZ2VzPGJyPg0KJmd0O8KgIMKgIMKgIMKg KG9wYW0gb3I8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAgwqBv dGhlcnMpIHRvPGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKg Jmd0O8KgIMKgIMKgIMKganVzdCBidWlsZCB0aGUgc3R1ZmYuPGJyPg0KJmd0 O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDC oCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoFRoYW5rcyBh bmQgcmVnYXJkcyw8YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqDCoCBPbGl2ZXIgQmFuZGVsPGJyPg0KJmd0O8Kg IMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoC0tPGJyPg0KJmd0 O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgQ2Ft bC1saXN0IG1haWxpbmcgbGlzdC7CoCBTdWJzY3JpcHRpb24gbWFuYWdlbWVu dDxicj4NCiZndDvCoCDCoCDCoCDCoGFuZDxicj4NCiZndDvCoCDCoCDCoCDC oCZndDvCoCDCoCDCoCDCoGFyY2hpdmVzOjxicj4NCiZndDvCoCDCoCDCoCDC oCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoDxhIGhyZWY9Imh0dHBz Oi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvYXJjL2NhbWwtbGlzdCIgcmVsPSJu b3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9zeW1wYS5pbnJp YS5mci9zeW1wYS9hcmMvY2FtbC1saXN0PC9hPjxicj4NCiZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoDxhIGhyZWY9Imh0 dHBzOi8vaW5ib3gub2NhbWwub3JnL2NhbWwtbGlzdCIgcmVsPSJub3JlZmVy cmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9pbmJveC5vY2FtbC5vcmcv Y2FtbC1saXN0PC9hPjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDC oCDCoCZndDvCoCDCoCDCoCDCoEZvcnVtOiA8YSBocmVmPSJodHRwczovL2Rp c2N1c3Mub2NhbWwub3JnLyIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9i bGFuayI+aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy88L2E+PGJyPg0KJmd0 O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgQnVn IHJlcG9ydHM6IDxhIGhyZWY9Imh0dHA6Ly9jYW1sLmlucmlhLmZyL2Jpbi9j YW1sLWJ1Z3MiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHA6Ly9jYW1sLmlucmlhLmZyL2Jpbi9jYW1sLWJ1Z3M8L2E+PGJyPg0KJmd0 O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgJmd0Ozxicj4NCiZndDvCoCDC oCDCoCDCoCZndDvCoCDCoCDCoCDCoCZndDs8YnI+DQomZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKgJmd0 Ozxicj4NCiZndDvCoCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoC0tPGJyPg0K Jmd0O8KgIMKgIMKgIMKgJmd0O8KgIMKgIMKgIMKgQ2FtbC1saXN0IG1haWxp bmcgbGlzdC7CoCBTdWJzY3JpcHRpb24gbWFuYWdlbWVudCBhbmQ8YnI+DQom Z3Q7wqAgwqAgwqAgwqBhcmNoaXZlczo8YnI+DQomZ3Q7wqAgwqAgwqAgwqAm Z3Q7wqAgwqAgwqAgwqA8YSBocmVmPSJodHRwczovL3N5bXBhLmlucmlhLmZy L3N5bXBhL2FyYy9jYW1sLWxpc3QiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0 PSJfYmxhbmsiPmh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEvYXJjL2Nh bWwtbGlzdDwvYT48YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7wqAgwqAgwqAg wqA8YSBocmVmPSJodHRwczovL2luYm94Lm9jYW1sLm9yZy9jYW1sLWxpc3Qi IHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vaW5i b3gub2NhbWwub3JnL2NhbWwtbGlzdDwvYT48YnI+DQomZ3Q7wqAgwqAgwqAg wqAmZ3Q7wqAgwqAgwqAgwqBGb3J1bTogPGEgaHJlZj0iaHR0cHM6Ly9kaXNj dXNzLm9jYW1sLm9yZy8iIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxh bmsiPmh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvPC9hPjxicj4NCiZndDvC oCDCoCDCoCDCoCZndDvCoCDCoCDCoCDCoEJ1ZyByZXBvcnRzOiA8YSBocmVm PSJodHRwOi8vY2FtbC5pbnJpYS5mci9iaW4vY2FtbC1idWdzIiByZWw9Im5v cmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vY2FtbC5pbnJpYS5m ci9iaW4vY2FtbC1idWdzPC9hPjxicj4NCiZndDvCoCDCoCDCoCDCoCZndDs8 YnI+DQomZ3Q7wqAgwqAgwqAgwqAmZ3Q7PGJyPg0KJmd0O8KgIMKgIMKgIMKg Jmd0Ozxicj4NCiZndDs8YnI+DQomZ3Q7wqAgwqAgwqAgwqAtLTxicj4NCiZn dDvCoCDCoCDCoCDCoENhbWwtbGlzdCBtYWlsaW5nIGxpc3QuwqAgU3Vic2Ny aXB0aW9uIG1hbmFnZW1lbnQgYW5kIGFyY2hpdmVzOjxicj4NCiZndDvCoCDC oCDCoCDCoDxhIGhyZWY9Imh0dHBzOi8vc3ltcGEuaW5yaWEuZnIvc3ltcGEv YXJjL2NhbWwtbGlzdCIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFu ayI+aHR0cHM6Ly9zeW1wYS5pbnJpYS5mci9zeW1wYS9hcmMvY2FtbC1saXN0 PC9hPjxicj4NCiZndDvCoCDCoCDCoCDCoDxhIGhyZWY9Imh0dHBzOi8vaW5i b3gub2NhbWwub3JnL2NhbWwtbGlzdCIgcmVsPSJub3JlZmVycmVyIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cHM6Ly9pbmJveC5vY2FtbC5vcmcvY2FtbC1saXN0 PC9hPjxicj4NCiZndDvCoCDCoCDCoCDCoEZvcnVtOiA8YSBocmVmPSJodHRw czovL2Rpc2N1c3Mub2NhbWwub3JnLyIgcmVsPSJub3JlZmVycmVyIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy88L2E+PGJy Pg0KJmd0O8KgIMKgIMKgIMKgQnVnIHJlcG9ydHM6IDxhIGhyZWY9Imh0dHA6 Ly9jYW1sLmlucmlhLmZyL2Jpbi9jYW1sLWJ1Z3MiIHJlbD0ibm9yZWZlcnJl ciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9jYW1sLmlucmlhLmZyL2Jpbi9j YW1sLWJ1Z3M8L2E+PGJyPg0KJmd0Ozxicj4NCiZndDs8YnI+DQomZ3Q7PGJy Pg0KPGJyPg0KLS0gPGJyPg0KQ2FtbC1saXN0IG1haWxpbmcgbGlzdC7CoCBT dWJzY3JpcHRpb24gbWFuYWdlbWVudCBhbmQgYXJjaGl2ZXM6PGJyPg0KPGEg aHJlZj0iaHR0cHM6Ly9zeW1wYS5pbnJpYS5mci9zeW1wYS9hcmMvY2FtbC1s aXN0IiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczov L3N5bXBhLmlucmlhLmZyL3N5bXBhL2FyYy9jYW1sLWxpc3Q8L2E+IDxhIGhy ZWY9Imh0dHBzOi8vaW5ib3gub2NhbWwub3JnL2NhbWwtbGlzdCIgcmVsPSJu b3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9pbmJveC5vY2Ft bC5vcmcvY2FtbC1saXN0PC9hPjxicj4NCkZvcnVtOiA8YSBocmVmPSJodHRw czovL2Rpc2N1c3Mub2NhbWwub3JnLyIgcmVsPSJub3JlZmVycmVyIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy88L2E+PGJy Pg0KQnVnIHJlcG9ydHM6IDxhIGhyZWY9Imh0dHA6Ly9jYW1sLmlucmlhLmZy L2Jpbi9jYW1sLWJ1Z3MiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxh bmsiPmh0dHA6Ly9jYW1sLmlucmlhLmZyL2Jpbi9jYW1sLWJ1Z3M8L2E+PC9i bG9ja3F1b3RlPjwvZGl2Pg0K --0000000000000faa59057b97e4a0--