From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id cEqgGMjwS2GgKAEAgWs5BA (envelope-from ) for ; Thu, 23 Sep 2021 05:13:12 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id 6B4/FMjwS2HFRwAAbx9fmQ (envelope-from ) for ; Thu, 23 Sep 2021 03:13:12 +0000 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 84551227FA for ; Thu, 23 Sep 2021 05:13:11 +0200 (CEST) Received: from localhost ([::1]:42598 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mTFAb-0003qx-NV for larch@yhetil.org; Wed, 22 Sep 2021 23:13:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTFAV-0003qn-1Y for guix-patches@gnu.org; Wed, 22 Sep 2021 23:13:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:40778) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mTFAU-0007Vr-Qm for guix-patches@gnu.org; Wed, 22 Sep 2021 23:13:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mTFAU-0001s4-G2 for guix-patches@gnu.org; Wed, 22 Sep 2021 23:13:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#50708] [PATCH] gnu: web: Add jupyter-service Resent-From: Jesse Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 23 Sep 2021 03:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50708 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Maxim Cournoyer Cc: 50708@debbugs.gnu.org Received: via spool by 50708-submit@debbugs.gnu.org id=B50708.16323667277111 (code B ref 50708); Thu, 23 Sep 2021 03:13:02 +0000 Received: (at 50708) by debbugs.gnu.org; 23 Sep 2021 03:12:07 +0000 Received: from localhost ([127.0.0.1]:52324 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTF9a-0001qc-Fk for submit@debbugs.gnu.org; Wed, 22 Sep 2021 23:12:07 -0400 Received: from mail-pj1-f42.google.com ([209.85.216.42]:51188) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTF9W-0001q0-DY for 50708@debbugs.gnu.org; Wed, 22 Sep 2021 23:12:05 -0400 Received: by mail-pj1-f42.google.com with SMTP id k23so3506984pji.0 for <50708@debbugs.gnu.org>; Wed, 22 Sep 2021 20:12:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=laUvx3uNfs8iUflqLLmh0MDTx9yClTFc+GZLEWYkxpA=; b=o6CKlRoIX4U6cb3nPu1cQcd0HVy5KqSJvncM5KPie9fNeUKkV1wOq+A45RJxLO49B5 /Nz6+gLvbYwLBQ5V6EmmLXcqEtw/Q66bTbIJxclF9YAwjHQJH8luoCyeAYuHFIHp5rBo LXXII+oTBoR0zbIoYSIJ0/EZVxBk5ygf83l/Z/YxKOeZrQ/GkdAtQTzpiM8Rzt0yG+Ex 8ojKRB1kT3NvYOu7ZWfTMTlVNmJvo+x3PJfA49eLEDMH9BV/Pr2tfC0X8sKB0mSqlYgj MR/msyAdh0Pnrh0wuApY64WZqByjoSrdYmj5uw5cu3GA5Uc0iB1b/PGqAYi+U2S9v+j9 pclw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=laUvx3uNfs8iUflqLLmh0MDTx9yClTFc+GZLEWYkxpA=; b=cNvaumxJz1K5cQmyMhEJXN+5IydGzHjX3HepctaKBsacrpjp958zJYSfidg5MeEN7w Db9njlAfg5rd1LWQxwQH3a/ZESc7YQf/2KZqmvaYfg2+I+lxX9hof6vnbA/wiiPohKrf ez8SoVBpn9ZCrbBkqC1sB9tVBDSL2u092n8NHqxasrxXFdzO56B5tp4KlzkXiMyBNCjH qi7yXzoIj+dI3VHz4dJBtz6H/34r7fo6ytEKqTRtt3sDmfdsVxqj1myydla/O677iEyP vLKVcPbxpRt5Zz3MaAMcToTSLzt/VIgJ+wtUpF23alQits53XzxsySSkgtfdQlV8sWYl r+og== X-Gm-Message-State: AOAM533chwhNZ54JsXmxpXM+f/AQVm6ZpRIh9uVaQEcwaqYDK9LmYtdQ D3WAKfF6BNtPuhBBpPrLSH9X/mODaSk1/w== X-Google-Smtp-Source: ABdhPJwsBVWw1ojTOhz2lYWg7t5iBHByXnpz+Yqb9UiKgjnK/wM/sSM5SOW4RWHLRDHvqjMRH9oiYw== X-Received: by 2002:a17:902:7e84:b0:13a:3396:1c04 with SMTP id z4-20020a1709027e8400b0013a33961c04mr1926615pla.84.1632366716150; Wed, 22 Sep 2021 20:11:56 -0700 (PDT) Received: from [192.168.1.220] ([38.141.58.134]) by smtp.gmail.com with ESMTPSA id g3sm3551784pjm.22.2021.09.22.20.11.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 20:11:55 -0700 (PDT) References: <565a1b21-aefa-4129-a024-52517fdff9bd@gmail.com> <74f78a5c-3f79-7485-0cf2-ae1fbb1969dd@gmail.com> <87pmt0kp83.fsf_-_@gmail.com> From: Jesse Message-ID: <23294845-1ac9-b2ef-c056-89f6ee51435f@gmail.com> Date: Wed, 22 Sep 2021 21:11:52 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Icedove/78.13.0 MIME-Version: 1.0 In-Reply-To: <87pmt0kp83.fsf_-_@gmail.com> Content-Type: multipart/mixed; boundary="------------FE9D4055B54C5083D69FF778" Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1632366791; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=laUvx3uNfs8iUflqLLmh0MDTx9yClTFc+GZLEWYkxpA=; b=DNn0D97zOViWRH+rRjaRsj0TqrGu/Wgxre41mJkV8GQxdY8ZuSZorB+e7czvbuQiYinAE8 OhHe/itYExD72/rbv7wqTLP1gN+KO4LH+iwt3oPVYqb43VKpGvIP4OF7qExa+HMHQPK1Mu WCd18L1KjqEeNlzsw+yYOwdgh5q4byQah65pwy6Z3KyssrrG/lIiW85nM2EIJdVhFuRRUC U0jfEk0oGCCIilZwrSh7WJ1sYso0KQRWRoHf48q2MIgdVPsmewByEGslkY8D9InT+ZYyPm ZQhFW7uPYMtBOSYsRyniBHXYy/q12xkA+Mk4BxtZuacV8U/84fWpg7NglJTmag== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1632366791; a=rsa-sha256; cv=none; b=LAmKJuTyJ8GKk5h0dkyY1ZZzpB8furgo3i23T2qsAyrvHsM6ANP9e2cC6PefoUmr9gt4/f IFCDQLLEjynuxNheQI20Mo+Trs6AMg+gpejLSl8J7R0/9FQDIEJw5EbZoVLGT+45NM1FPP tBrUk0a8ps8zRom+3GMLlX0of+MOu/0bsHNWqt/3JjZM1NBPt1dbK920KPFTj65rCqPj0x L7XNWvDkmTSV3nWn+6cYqcseMqSe2+FkGT6vRFPy/zBHF8L4EGKAnKltvppbZN3W7YpHJB 8gjIHH3mRnV/RLayp7hhQ4+kgvtN7/1diOHKB+hQOYOpyCfIwvakUUrgSVSrEw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=o6CKlRoI; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: -0.19 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=o6CKlRoI; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 84551227FA X-Spam-Score: -0.19 X-Migadu-Scanner: scn0.migadu.com X-TUID: ftSg5xk1uhWx This is a multi-part message in MIME format. --------------FE9D4055B54C5083D69FF778 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Attached is a patch that takes into account your feedback. On 9/22/21 8:19 PM, Maxim Cournoyer wrote: > Hello Jesse, > > Jesse writes: ... > + #:environment-variables ; TODO use search-paths magic instead of hard-coding these things. > + (list "GI_TYPELIB_PATH=/run/current-system/profile/lib/girepository-1.0" > + "GUILE_LOAD_COMPILED_PATH=/run/current-system/profile/lib/guile/3.0/site-ccache:/run/current-system/profile/share/guile/site/3.0" > + "GUILE_LOAD_PATH=/run/current-system/profile/share/guile/site/3.0" > + "HOME=/var/lib/jupyter" > + "JUPYTER_PATH=/run/current-system/profile/share/jupyter" > + "PATH=/run/current-system/profile/bin:/run/current-system/profile/sbin" > + "PYTHONPATH=/run/current-system/profile/lib/python3.8/site-packages" > + "R_LIBS_SITE=/run/current-system/profile/site-library/" > + "TEXMF=/run/current-system/profile/share/texmf-dist" > + "TEXMFCNF=/run/current-system/profile//share/texmf-dist/web2c" > >> + "XDG_DATA_DIRS=/run/current-system/profile/share") >> + > Hmm. Would it work if search paths were set on the 'jupyter' package > instead? The above is too fragile, with hard coded versions baked in. > > ... > I haven't tried it, but it looks promising. If we can find a better > solution than the hard coded version values in the environment variables > list, I think it'd be in good shape for inclusion, although a system > test would be a nice to have. > > Thank you! > > Maxim The weird thing about this particular service is it is more useful with libraries Jupyter and the kernels are not dependent on. This part is leftover from when I wrote it several months ago for a home server. (I actually used this service to work on notebooks using the Guile kernel working with sqlite and to try the other kernels.) I found that it couldn't find the packages I need and the web shell was broken, so I settled for hard-coding these variables until I could find time to fix them. I included a TODO with an idea I have not yet implemented: use the search-paths to give Jupyter the environment variables it needs the same way a profile sets up its search paths. I thought it might be a good idea to associate the service with its own profile for security reasons. This would also fix a bug where the Jupyter Notebook icon appears on the desktop but fails to start a new Jupyter server. Another idea I had is the service could be isolated in its own container with the network exposed and the home directory shared, but I have no idea how that would work or if it would even add more security. However, this could potentially allow multiple Jupyter services to run simultaneously on different ports. However, one problem is the resulting server might be unusable because the login information would be in a log file hidden in a container. I'll work on the search-paths idea and send an update when I'm done. I'm also open to other suggestions on how to fix the hard-coded values. I don't think this will be ready to merge until that problem is fixed, but I've attached the patch anyway for curious users who want to try it out. I would appreciate help implementing the container idea if it's feasible. -Jesse --------------FE9D4055B54C5083D69FF778 Content-Type: text/plain; charset=UTF-8; name="0001-gnu-web-Add-jupyter-service.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-gnu-web-Add-jupyter-service.patch" RnJvbSBmOTZlNDFhNzIyMmI1MWNiNGZmNmUxNjY1N2RlMmU4N2ZlYTc4NDcyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZXNzZSA8Z2liMTkwMTRAYnl1aS5lZHU+CkRhdGU6 IE1vbiwgMjAgU2VwIDIwMjEgMTY6MDE6MjIgLTA2MDAKU3ViamVjdDogW1BBVENIXSBnbnU6 IHdlYjogQWRkIGp1cHl0ZXItc2VydmljZQoKKiBnbnUvc2VydmljZXMvd2ViLnNjbSAoZ2l0 aWxlLXNlcnZpY2UtdHlwZSk6IE5ldyB2YXJpYWJsZS4KKiBkb2MvZ3VpeC50ZXhpIChWZXJz aW9uIENvbnRyb2wgU2VydmljZXMpOiBEb2N1bWVudCBpdC4KLS0tCiBkb2MvZ3VpeC50ZXhp ICAgICAgICB8ICA1MiArKysrKysrKysrKysrKysrKysrKysKIGdudS9zZXJ2aWNlcy93ZWIu c2NtIHwgMTA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDIgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mv Z3VpeC50ZXhpIGIvZG9jL2d1aXgudGV4aQppbmRleCA2NDM2ZTgzYTdjLi5iOTIyNDZjYzhh IDEwMDY0NAotLS0gYS9kb2MvZ3VpeC50ZXhpCisrKyBiL2RvYy9ndWl4LnRleGkKQEAgLTI2 MTk3LDYgKzI2MTk3LDU4IEBAIFRoZSBmaWxlIHdoaWNoIHNob3VsZCBzdG9yZSB0aGUgbG9n Z2luZyBvdXRwdXQgb2YgQWdhdGUuCiBAZW5kIHRhYmxlCiBAZW5kIGRlZnRwCiAKK0BzdWJz dWJoZWFkaW5nIEp1cHl0ZXIKK0BjaW5kZXgganVweXRlcgorVGhlIEp1cHl0ZXIgTm90ZWJv b2sgaXMgYSB3ZWIgYXBwbGljYXRpb24gdGhhdCBhbGxvd3MgeW91IHRvIGNyZWF0ZQorYW5k IHNoYXJlIGRvY3VtZW50cyB0aGF0IGNvbnRhaW4gbGl2ZSBjb2RlLCBlcXVhdGlvbnMsIHZp c3VhbGl6YXRpb25zCithbmQgZXhwbGFuYXRvcnkgdGV4dC4gIFVzZXMgaW5jbHVkZTogZGF0 YSBjbGVhbmluZyBhbmQgdHJhbnNmb3JtYXRpb24sCitudW1lcmljYWwgc2ltdWxhdGlvbiwg c3RhdGlzdGljYWwgbW9kZWxpbmcsIG1hY2hpbmUgbGVhcm5pbmcgYW5kIG11Y2gKK21vcmUu CisKK0BkZWZmbiAoU2NoZW1lIFZhcmlhYmxlKSBqdXB5dGVyLXNlcnZpY2UtdHlwZQorVGhp cyBpcyB0aGUgdHlwZSBvZiB0aGUgSnVweXRlciBzZXJ2aWNlLCB3aG9zZSB2YWx1ZSBzaG91 bGQgYmUgYW4KK0Bjb2Rle2p1cHl0ZXItc2VydmljZS10eXBlfSBvYmplY3QsIGFzIGluIHRo aXMgZXhhbXBsZToKKworQGxpc3AKKyhzZXJ2aWNlIGp1cHl0ZXItc2VydmljZS10eXBlCisg KGp1cHl0ZXItY29uZmlndXJhdGlvbgorICAobG9nLWZpbGUgIi92YXIvbG9nL2p1cHl0ZXIu bG9nIikKKyAgKHNlcnZlci1jb25maWcKKyAgIChrZXJuZWxzIChsaXN0IGp1cHl0ZXItZ3Vp bGUta2VybmVsKSkpKSkKKworQGVuZCBsaXNwCisKK1RoZSBleGFtcGxlIGFib3ZlIHRlbGxz IHRoZSBKdXB5dGVyIHNlcnZpY2UgdG8gcHJvdmlkZSB0aGUKK0Bjb2Rle2p1cHl0ZXItZ3Vp bGUta2VybmVsfSBhcyBhbiBvcHRpb25hbCBrZXJuZWwuCitAZW5kIGRlZmZuCisKK0BkZWZ0 cCB7RGF0YSBUeXBlfSBqdXB5dGVyLWNvbmZpZ3VyYXRpb24KK0RhdGEgdHlwZSByZXByZXNl bnRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2YgQWdhdGUuCisKK0B0YWJsZSBAYXNpcworQGl0 ZW0gQGNvZGV7anVweXRlci1wYWNrYWdlfSAoZGVmYXVsdDogQGNvZGV7anVweXRlcn0pCitU aGUgSnVweXRlciBwYWNrYWdlIHRvIHVzZS4KKworCitAaXRlbSBAY29kZXtrZXJuZWxzfSAo ZGVmYXVsdDogQGNvZGV7JygpfQorQSBsaXN0IG9mIGtlcm5lbCBwYWNrYWdlcyB0byB1c2Ug d2l0aCB0aGUgSnVweXRlciBzZXJ2aWNlLgorCitAaXRlbSBAY29kZXtyb290LWRpcn0gKGRl ZmF1bHQ6IEBmaWxleyIvdmFyL2xpYi9qdXB5dGVyL25vdGVib29rcyJ9KQorVGhlIGRpcmVj dG9yeSB3aGVyZSB0aGUgSnVweXRlciBzZXJ2ZXIgbG9va3MgZm9yIEp1cHl0ZXIgbm90ZWJv b2tzLgorCitAaXRlbSBAY29kZXtsb2ctZmlsZX0gKGRlZmF1bHQ6IEBjb2RleyNmfSkKK1Ro ZSBsb2NhdGlvbiBvZiB0aGUgbG9nIGZpbGUuIElmICNmIGlzIGdpdmVuLCBubyBsb2cgaXMg cHJvZHVjZWQuCisKK0BpdGVtIEBjb2Rle3NoZWxsfSAoZGVmYXVsdDogQGNvZGV7KGZpbGUt YXBwZW5kIGJhc2ggIi9iaW4vYmFzaCIpfQorVGhlIGxvY2F0aW9uIG9mIHRoZSBzaGVsbCB1 c2VkIHdoZW4gc3RhcnRpbmcgYSB3ZWIgdGVybWluYWwgKGlmIGl0IGlzIGNvbmZpZ3VyZWQg dG8gYWxsb3cgdGVybWluYWxzKS4KKworQGl0ZW0gQGNvZGV7c2VydmVyLWNvbmZpZ30gKGRl ZmF1bHQ6IEBjb2RleyNmfSkKK0EgZmlsZSBjb250YWluaW5nIHRoZSBKdXB5dGVyIHNlcnZl cidzIGNvbmZpZyBmaWxlLiBJZiBAY29kZXsjZn0gaXMgZ2l2ZW4sIGFuIGVtcHR5IGZpbGUg aXMgcHJvZHVjZWQsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgdXNlZC4KKworQGVu ZCB0YWJsZQorQGVuZCBkZWZ0cAorCisKIEBub2RlIENlcnRpZmljYXRlIFNlcnZpY2VzCiBA c3Vic2VjdGlvbiBDZXJ0aWZpY2F0ZSBTZXJ2aWNlcwogCmRpZmYgLS1naXQgYS9nbnUvc2Vy dmljZXMvd2ViLnNjbSBiL2dudS9zZXJ2aWNlcy93ZWIuc2NtCmluZGV4IDZhMDkzY2Y0ZTQu Ljc2NzAwZGE0MTIgMTAwNjQ0Ci0tLSBhL2dudS9zZXJ2aWNlcy93ZWIuc2NtCisrKyBiL2du dS9zZXJ2aWNlcy93ZWIuc2NtCkBAIC0xNSw2ICsxNSw3IEBACiA7OzsgQ29weXJpZ2h0IMKp IDIwMjAgQXJ1biBJc2FhYyA8YXJ1bmlzYWFjQHN5c3RlbXJlYm9vdC5uZXQ+CiA7OzsgQ29w eXJpZ2h0IMKpIDIwMjAgT2xlZyBQeWtoYWxvdiA8Z28ud2lndXN0QGdtYWlsLmNvbT4KIDs7 OyBDb3B5cmlnaHQgwqkgMjAyMCwgMjAyMSBBbGV4YW5kcnUtU2VyZ2l1IE1hcnRvbiA8YnJv d24xMjE0MDdAcG9zdGVvLnJvPgorOzs7IENvcHlyaWdodCDCqSAyMDIwLCAyMDIxIEplc3Nl IEdpYmJvbnMgPGpnaWJib25zMjM1NytndWl4QGdtYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC00MSwxMSArNDIsMTMgQEAKICAg Izp1c2UtbW9kdWxlIChnbnUgc3lzdGVtIHNoYWRvdykKICAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgYWRtaW4pCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJhc2UpCisg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ251 IHBhY2thZ2VzIGRhdGFiYXNlcykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgd2Vi KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwYXRjaHV0aWxzKQogICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBwaHApCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2Vz IHB5dGhvbikKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcHl0aG9uLXh5eikKICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ251cGcpCiAgICM6dXNlLW1vZHVsZSAoZ251 IHBhY2thZ2VzIGd1aWxlKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBsb2dnaW5n KQpAQCAtOTEsNiArOTQsOCBAQAogCiAgICAgICAgICAgICBodHRwZC1zZXJ2aWNlLXR5cGUK IAorICAgICAgICAgICAganVweXRlci1jb25maWd1cmF0aW9uCisKICAgICAgICAgICAgIG5n aW54LWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIG5naW54LWNvbmZpZ3VyYXRpb24/CiAg ICAgICAgICAgICBuZ2lueC1jb25maWd1cmF0aW9uLW5naW54CkBAIC0xOTk0LDMgKzE5OTks MTAzIEBAIHJvb3Q9L3Nydi9nZW1pbmkKICAgICAgICAgICAoc2VydmljZS1leHRlbnNpb24g c2hlcGhlcmQtcm9vdC1zZXJ2aWNlLXR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWdhdGUtc2hlcGhlcmQtc2VydmljZSkpKQogICAgKGRlZmF1bHQtdmFsdWUgKGFnYXRl LWNvbmZpZ3VyYXRpb24pKSkpCisKKworOzs7Cis7OzsgSnVweXRlcgorOzs7CisKKyhkZWZp bmUtcHVibGljIGRlZmF1bHQtanVweXRlci1jb25maWcgIiMiKQorCisoZGVmaW5lLXJlY29y ZC10eXBlKiA8anVweXRlci1jb25maWd1cmF0aW9uPiBqdXB5dGVyLWNvbmZpZ3VyYXRpb24K KyAgICAgICAgICAgICAgICAgICAgIHRoaXMtanVweXRlci1jb25maWd1cmF0aW9uIGp1cHl0 ZXItY29uZmlndXJhdGlvbj8KKyAgICAgICAgICAgICAgICAgICAgIChqdXB5dGVyLXBhY2th Z2UganVweXRlci1jb25maWd1cmF0aW9uLWp1cHl0ZXItcGFja2FnZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCBqdXB5dGVyKSkKKyAgICAgICAg ICAgICAgICAgICAgIChrZXJuZWxzIGp1cHl0ZXItY29uZmlndXJhdGlvbi1rZXJuZWxzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAnKCkpKQorICAgICAgICAg ICAgICAgICAgICAgKHJvb3QtZGlyIGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICIvdmFyL2xpYi9qdXB5 dGVyL25vdGVib29rcyIpKQorICAgICAgICAgICAgICAgICAgICAgKGxvZy1maWxlIGp1cHl0 ZXItY29uZmlndXJhdGlvbi1sb2ctZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChkZWZhdWx0ICNmKSkKKyAgICAgICAgICAgICAgICAgICAgIChzaGVsbCBqdXB5dGVy LWNvbmZpZ3VyYXRpb24tc2hlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVm YXVsdCAoZmlsZS1hcHBlbmQgYmFzaCAiL2Jpbi9iYXNoIikpKQorICAgICAgICAgICAgICAg ICAgICAgKHNlcnZlci1jb25maWcganVweXRlci1jb25maWd1cmF0aW9uLXNlcnZlci1jb25m aWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICNmKSkp OyBUT0RPOiBNYWtlIGNvbmZpZ3VyYXRpb24gRFNMLgorCisKKyhkZWZpbmUgKHNlYXJjaC1w YXRoLXN0cmluZyBzZWFyY2gtcGF0aC1wYWlyKQorICAoc3RyaW5nLWFwcGVuZCAoc2VhcmNo LXBhdGgtc3BlY2lmaWNhdGlvbi12YXJpYWJsZSAoY2FyIHNlYXJjaC1wYXRoLXBhaXIpKQor ICAgICAgICAgICAgICAgICAiPSIKKyAgICAgICAgICAgICAgICAgKGNkciBzZWFyY2gtcGF0 aC1wYWlyKSkpCisKKzs7O1RPRE86IEFkZCBhY3Rpb25zIHRvIGxpc3QganVweXRlciBzZXJ2 ZXJzLCBjaGFuZ2UgcGFzc3dvcmRzLCBldGMuCisoZGVmaW5lIChqdXB5dGVyLXNoZXBoZXJk LXNlcnZpY2UgY29uZmlnKQorICAobGlzdCAoc2hlcGhlcmQtc2VydmljZQorICAgICAgICAg IChwcm92aXNpb24gJyhqdXB5dGVyKSkgO1RPRE86IEFkZCBtYWdpYyB0byBhbGxvdyBtdWx0 aXBsZSBKdXB5dGVyIHNlcnZlcnMKKyAgICAgICAgICAocmVxdWlyZW1lbnQgJyhsb29wYmFj aykpCisgICAgICAgICAgKHN0YXJ0ICN+KG1ha2UtZm9ya2V4ZWMtY29uc3RydWN0b3IKKyAg ICAgICAgICAgICAgICAgICAgIChsaXN0ICIvcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUv YmluL2p1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ZWJvb2siCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1jb25maWc9Igor ICAgICAgICAgICAgICAgICAgICAgIyQob3IgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1zZXJ2 ZXItY29uZmlnIGNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFpbi1m aWxlICJqdXB5dGVyX25vdGVib29rX2NvbmZpZy5weSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQtanVweXRlci1jb25maWcpKQorICAgICAgICAg ICAgICAgICAgICAgIyQoanVweXRlci1jb25maWd1cmF0aW9uLXJvb3QtZGlyIGNvbmZpZykp KQorICAgICAgICAgICAgICAgICAgICAgIzp1c2VyICJqdXB5dGVyIgorICAgICAgICAgICAg ICAgICAgICAgIzpncm91cCAianVweXRlciIKKyAgICAgICAgICAgICAgICAgICAgICM6ZW52 aXJvbm1lbnQtdmFyaWFibGVzIDsgVE9ETyB1c2Ugc2VhcmNoLXBhdGhzIG1hZ2ljIGluc3Rl YWQgb2YgaGFyZC1jb2RpbmcgdGhlc2UgdGhpbmdzLgorICAgICAgICAgICAgICAgICAgICAg KGxpc3QgIkdJX1RZUEVMSUJfUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvbGli L2dpcmVwb3NpdG9yeS0xLjAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1VJTEVf TE9BRF9DT01QSUxFRF9QQVRIPS9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9saWIvZ3Vp bGUvMy4wL3NpdGUtY2NhY2hlOi9ydW4vY3VycmVudC1zeXN0ZW0vcHJvZmlsZS9zaGFyZS9n dWlsZS9zaXRlLzMuMCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJHVUlMRV9MT0FE X1BBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL3NoYXJlL2d1aWxlL3NpdGUvMy4w IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhPTUU9L3Zhci9saWIvanVweXRlciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJKVVBZVEVSX1BBVEg9L3J1bi9jdXJyZW50 LXN5c3RlbS9wcm9maWxlL3NoYXJlL2p1cHl0ZXIiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAiUEFUSD0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvYmluOi9ydW4vY3VycmVu dC1zeXN0ZW0vcHJvZmlsZS9zYmluIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBZ VEhPTlBBVEg9L3J1bi9jdXJyZW50LXN5c3RlbS9wcm9maWxlL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSX0xJQlNfU0lURT0v cnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2l0ZS1saWJyYXJ5LyIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICJURVhNRj0vcnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hh cmUvdGV4bWYtZGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJURVhNRkNORj0v cnVuL2N1cnJlbnQtc3lzdGVtL3Byb2ZpbGUvc2hhcmUvdGV4bWYtZGlzdC93ZWIyYyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJYREdfREFUQV9ESVJTPS9ydW4vY3VycmVudC1z eXN0ZW0vcHJvZmlsZS9zaGFyZSIpCisKKyAgICAgICAgICAgICAgICAgICAgICM6ZGlyZWN0 b3J5ICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1yb290LWRpciBjb25maWcpCisgICAgICAg ICAgICAgICAgICAgICAjOmxvZy1maWxlICMkKGp1cHl0ZXItY29uZmlndXJhdGlvbi1sb2ct ZmlsZSBjb25maWcpKSkKKyAgICAgICAgICAoc3RvcCAjfihtYWtlLWtpbGwtZGVzdHJ1Y3Rv cikpCisgICAgICAgICAgKGRvY3VtZW50YXRpb24gIlJ1bnMgYSBKdXB5dGVyIE5vdGVib29r IHNlcnZlci4gIEEgSnVweXRlciBOb3RlYm9vayBpcyBhIHdlYiBhcHBsaWNhdGlvbiB0aGF0 IGFsbG93cyB5b3UgdG8gY3JlYXRlIGFuZCBzaGFyZSBkb2N1bWVudHMgdGhhdCBjb250YWlu IGxpdmUgY29kZSwgZXF1YXRpb25zLCB2aXN1YWxpemF0aW9ucywgYW5kIGV4cGxhbmF0b3J5 IHRleHQuIikpKSkKKworKGRlZmluZSAoanVweXRlci1hY2NvdW50IGNvbmZpZykKKyAgKGxp c3QKKyAgICAodXNlci1hY2NvdW50CisgICAgICAobmFtZSAianVweXRlciIpCisgICAgICAo Z3JvdXAgImp1cHl0ZXIiKQorICAgICAgKGNvbW1lbnQgIkp1cHl0ZXIgTm90ZWJvb2sgU2Vy dmVyIikKKyAgICAgIChob21lLWRpcmVjdG9yeSAiL3Zhci9saWIvanVweXRlciIpCisgICAg ICAoc2hlbGwgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1zaGVsbCBjb25maWcpKQorICAgICAg KHN5c3RlbT8gI3QpKQorICAgICh1c2VyLWdyb3VwCisgICAgICAobmFtZSAianVweXRlciIp CisgICAgICAoc3lzdGVtPyAjdCkpKSkKKworKGRlZmluZSAoanVweXRlci1wcm9maWxlIGNv bmZpZykKKyAgKGNvbnMqCisgICAgKGp1cHl0ZXItY29uZmlndXJhdGlvbi1qdXB5dGVyLXBh Y2thZ2UgY29uZmlnKQorICAgIChqdXB5dGVyLWNvbmZpZ3VyYXRpb24ta2VybmVscyBjb25m aWcpKSkKKworKGRlZmluZSAoanVweXRlci1hY3RpdmF0aW9uIGNvbmZpZykKKyAgI34oYmVn aW4KKyAgICAgIChsZXQgKChyb290LWRpciAjJChqdXB5dGVyLWNvbmZpZ3VyYXRpb24tcm9v dC1kaXIgY29uZmlnKSkKKyAgICAgICAgICAgIChwdyAoZ2V0cHduYW0gImp1cHl0ZXIiKSkp CisgICAgICAgICh1bmxlc3MgKGZpbGUtZXhpc3RzPyByb290LWRpcikKKyAgICAgICAgICAo bWtkaXIgcm9vdC1kaXIpCisgICAgICAgICAgKGNob3duIHJvb3QtZGlyIChwYXNzd2Q6dWlk IHB3KQorICAgICAgICAgICAgICAgICAocGFzc3dkOmdpZCBwdykpCisgICAgICAgICAgKGNo bW9kIHJvb3QtZGlyICNvNzAwKSkpKSkKKworKGRlZmluZS1wdWJsaWMganVweXRlci1zZXJ2 aWNlLXR5cGUKKyAgKHNlcnZpY2UtdHlwZQorICAgIChuYW1lICJqdXB5dGVyIikKKyAgICAo ZXh0ZW5zaW9ucyAobGlzdAorICAgICAgICAgICAgICAgICAgKHNlcnZpY2UtZXh0ZW5zaW9u IHNoZXBoZXJkLXJvb3Qtc2VydmljZS10eXBlIGp1cHl0ZXItc2hlcGhlcmQtc2VydmljZSkK KyAgICAgICAgICAgICAgICAgIChzZXJ2aWNlLWV4dGVuc2lvbiBhY2NvdW50LXNlcnZpY2Ut dHlwZSBqdXB5dGVyLWFjY291bnQpCisgICAgICAgICAgICAgICAgICAoc2VydmljZS1leHRl bnNpb24gYWN0aXZhdGlvbi1zZXJ2aWNlLXR5cGUganVweXRlci1hY3RpdmF0aW9uKQorICAg ICAgICAgICAgICAgICAgKHNlcnZpY2UtZXh0ZW5zaW9uIHByb2ZpbGUtc2VydmljZS10eXBl IGp1cHl0ZXItcHJvZmlsZSkpKQorICAgIChkZXNjcmlwdGlvbiAiUnVucyBhIEp1cHl0ZXIg Tm90ZWJvb2sgc2VydmVyLiAgQSBKdXB5dGVyIE5vdGVib29rIGlzIGEgd2ViIGFwcGxpY2F0 aW9uIHRoYXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgYW5kIHNoYXJlIGRvY3VtZW50cyB0aGF0 IGNvbnRhaW4gbGl2ZSBjb2RlLCBlcXVhdGlvbnMsIHZpc3VhbGl6YXRpb25zLCBhbmQgZXhw bGFuYXRvcnkgdGV4dC4iKQorICAgIChkZWZhdWx0LXZhbHVlIChqdXB5dGVyLWNvbmZpZ3Vy YXRpb24pKSkpCi0tIAoyLjMzLjAKCg== --------------FE9D4055B54C5083D69FF778--