From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by sourceware.org (Postfix) with ESMTPS id A88523858D39 for ; Wed, 2 Mar 2022 06:31:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A88523858D39 Received: by mail-yb1-xb29.google.com with SMTP id b35so1288689ybi.13 for ; Tue, 01 Mar 2022 22:31:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ivIDlJHJFCGmrsvE11SAwtSEdDgVjIs9JbxjXqlV1MM=; b=AjFTt6c/tXauBRfnakrnA7bPTTRiwyRpp1jl/KUkLHqCen60LUkd3v17JQfZSHj37y /J32WPRbD8R8fjtcKXjHDO/70Fux1ZTopZ719exKsZAJS/WFKZWE8D0aVZrg2kAp+fLx 0yfG7YlRV5G8RR3YoQrKn+MLfeGYEDIhRKc2tmdj5hH+UdqzkT/oQeEQ3Ok4XLTaXz8f 6rVDhOPjxW4kCxTYsUgCAlEbEnreEUzATj+cImjkSl7V0OQrfm2ZwjijudPfbwxQMD3X 5RJfN9RapNuZdh0upt+0j4i6ZiEmYrekpilrzwoQFZ4jfD1pzZxiJHVdMYUaZ5rcfT0G g4hQ== X-Gm-Message-State: AOAM530yjkySVs4JmK6IGd4qqytqwgNO9r/0FoV6kFCb6fjYzi2flJB6 VsX3UNi3Q1iI41Qci4zhPqZlUu7KVgdL1pZI/sM59Lp+8WY= X-Google-Smtp-Source: ABdhPJwPLkFWGJl1+zev0TW3ZAt2zZDxoYIYfK2zH2fSajhsw/73speWHrSU4JUq/mqmKIfydfLtFHskgg5n5jJb2ww= X-Received: by 2002:a25:aa2c:0:b0:624:64ce:8550 with SMTP id s41-20020a25aa2c000000b0062464ce8550mr27235646ybi.105.1646202713023; Tue, 01 Mar 2022 22:31:53 -0800 (PST) MIME-Version: 1.0 From: William Tambe Date: Wed, 2 Mar 2022 00:31:42 -0600 Message-ID: Subject: Help figuring out why `info registers` is showing with gdbserver target To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary="000000000000f0770b05d9366ffd" X-Spam-Status: No, score=0.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Mar 2022 06:31:55 -0000 --000000000000f0770b05d9366ffd Content-Type: text/plain; charset="UTF-8" Regarding this issue, support for gdbserver has been implemented here: https://github.com/fontamsoc/binutils-gdb/blob/b2eeeae0/gdbserver/linux-pu32-low.cc Support for gdb has been implemented here: https://github.com/fontamsoc/binutils-gdb/blob/b2eeeae0/gdb/pu32-tdep.c gdb is able to successfully connect to gdbserver and start a program on the target; however, gdb is unable to fetch registers and instead shows as follow: (gdb) info registers r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc Find attached full `gdbserver --debug --remote-debug` logs as well as gdb logs. Any idea what might have been missed while implementing gdbserver support ? Would you suggest ways to debug the issue ? --000000000000f0770b05d9366ffd Content-Type: application/octet-stream; name="gdb.log" Content-Disposition: attachment; filename="gdb.log" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l096jdvj0 dGFtYmV3aWxsaWFtQGt1YnVudHUyMDIwMDUwMjp+JCBzdWRvIC9vcHQvcHUzMi10b29sY2hhaW4v YmluL3B1MzItZWxmLWdkYiAteCBidWlsZHJvb3QtYnVpbGQvc3RhZ2luZy91c3Ivc2hhcmUvYnVp bGRyb290L2dkYmluaXQgLWV4ICd0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIC9kZXYvdHR5VVNCMicg LWV4ICdzZXQgY3dkIC8nICYmIC1leCAnbW9uaXRvciBzZXQgZGVidWcgMScgLWV4ICdtb25pdG9y IHNldCByZW1vdGUtZGVidWcgMScKR05VIGdkYiAoR0RCKSAxMS4wLjUwLjIwMjEwNzE4LWdpdApD b3B5cmlnaHQgKEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkxpY2Vuc2Ug R1BMdjMrOiBHTlUgR1BMIHZlcnNpb24gMyBvciBsYXRlciA8aHR0cDovL2dudS5vcmcvbGljZW5z ZXMvZ3BsLmh0bWw+ClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGFyZSBmcmVlIHRvIGNoYW5n ZSBhbmQgcmVkaXN0cmlidXRlIGl0LgpUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVu dCBwZXJtaXR0ZWQgYnkgbGF3LgpUeXBlICJzaG93IGNvcHlpbmciIGFuZCAic2hvdyB3YXJyYW50 eSIgZm9yIGRldGFpbHMuClRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICItLWhvc3Q9eDg2XzY0 LXBjLWxpbnV4LWdudSAtLXRhcmdldD1wdTMyLWVsZiIuClR5cGUgInNob3cgY29uZmlndXJhdGlv biIgZm9yIGNvbmZpZ3VyYXRpb24gZGV0YWlscy4KRm9yIGJ1ZyByZXBvcnRpbmcgaW5zdHJ1Y3Rp b25zLCBwbGVhc2Ugc2VlOgo8aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvYnVncy8+ LgpGaW5kIHRoZSBHREIgbWFudWFsIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uIHJlc291cmNlcyBv bmxpbmUgYXQ6CiAgICA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi9kb2N1bWVudGF0 aW9uLz4uCgpGb3IgaGVscCwgdHlwZSAiaGVscCIuClR5cGUgImFwcm9wb3Mgd29yZCIgdG8gc2Vh cmNoIGZvciBjb21tYW5kcyByZWxhdGVkIHRvICJ3b3JkIi4Kd2FybmluZzogRmlsZSAiL2hvbWUv dGFtYmV3aWxsaWFtLy5nZGJpbml0IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQgYnkg eW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGVidWdkaXI6JGRhdGFkaXIvYXV0 by1sb2FkIi4KVG8gZW5hYmxlIGV4ZWN1dGlvbiBvZiB0aGlzIGZpbGUgYWRkCiAgICAgICAgYWRk LWF1dG8tbG9hZC1zYWZlLXBhdGggL2hvbWUvdGFtYmV3aWxsaWFtLy5nZGJpbml0CmxpbmUgdG8g eW91ciBjb25maWd1cmF0aW9uIGZpbGUgIi9yb290Ly5jb25maWcvZ2RiL2dkYmluaXQiLgpUbyBj b21wbGV0ZWx5IGRpc2FibGUgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uIGFkZAogICAgICAgIHNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8KbGluZSB0byB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSAi L3Jvb3QvLmNvbmZpZy9nZGIvZ2RiaW5pdCIuCkZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRo aXMgc2VjdXJpdHkgcHJvdGVjdGlvbiBzZWUgdGhlCiJBdXRvLWxvYWRpbmcgc2FmZSBwYXRoIiBz ZWN0aW9uIGluIHRoZSBHREIgbWFudWFsLiAgRS5nLiwgcnVuIGZyb20gdGhlIHNoZWxsOgogICAg ICAgIGluZm8gIihnZGIpQXV0by1sb2FkaW5nIHNhZmUgcGF0aCIKYnVpbGRyb290LWJ1aWxkL3N0 YWdpbmcvdXNyL3NoYXJlL2J1aWxkcm9vdC9nZGJpbml0OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0 b3J5LgpSZW1vdGUgZGVidWdnaW5nIHVzaW5nIC9kZXYvdHR5VVNCMgooZ2RiKSBzZXQgcmVtb3Rl IGV4ZWMtZmlsZSAvYmluL2xzCihnZGIpIHIgLWwgLwpTdGFydGluZyBwcm9ncmFtOiAgLWwgLwpS ZWFkaW5nIC91c3IvYmluL2J1c3lib3ggZnJvbSByZW1vdGUgdGFyZ2V0Li4uCndhcm5pbmc6IEZp bGUgdHJhbnNmZXJzIGZyb20gcmVtb3RlIHRhcmdldHMgY2FuIGJlIHNsb3cuIFVzZSAic2V0IHN5 c3Jvb3QiIHRvIGFjY2VzcyBmaWxlcyBsb2NhbGx5IGluc3RlYWQuClJlYWRpbmcgL3Vzci9iaW4v YnVzeWJveCBmcm9tIHJlbW90ZSB0YXJnZXQuLi4KUmVhZGluZyBzeW1ib2xzIGZyb20gdGFyZ2V0 Oi91c3IvYmluL2J1c3lib3guLi4KKE5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kIGluIHRhcmdl dDovdXNyL2Jpbi9idXN5Ym94KQp3YXJuaW5nOiBUYXJnZXQtc3VwcGxpZWQgcmVnaXN0ZXJzIGFy ZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZQpQQyByZWdpc3RlciBp cyBub3QgYXZhaWxhYmxlCihnZGIpIGluZm8gcmVnaXN0ZXJzCnIwICAgICAgICAgICAgIDx1bmF2 YWlsYWJsZT4KcjEgICAgICAgICAgICAgPHVuYXZhaWxhYmxlPgpyMiAgICAgICAgICAgICA8dW5h dmFpbGFibGU+CnIzICAgICAgICAgICAgIDx1bmF2YWlsYWJsZT4KcjQgICAgICAgICAgICAgPHVu YXZhaWxhYmxlPgpyNSAgICAgICAgICAgICA8dW5hdmFpbGFibGU+CnI2ICAgICAgICAgICAgIDx1 bmF2YWlsYWJsZT4KcjcgICAgICAgICAgICAgPHVuYXZhaWxhYmxlPgpyOCAgICAgICAgICAgICA8 dW5hdmFpbGFibGU+CnI5ICAgICAgICAgICAgIDx1bmF2YWlsYWJsZT4KcjEwICAgICAgICAgICAg PHVuYXZhaWxhYmxlPgpyMTEgICAgICAgICAgICA8dW5hdmFpbGFibGU+CnIxMiAgICAgICAgICAg IDx1bmF2YWlsYWJsZT4KcjEzICAgICAgICAgICAgPHVuYXZhaWxhYmxlPgpyMTQgICAgICAgICAg ICA8dW5hdmFpbGFibGU+CnIxNSAgICAgICAgICAgIDx1bmF2YWlsYWJsZT4KcGMgICAgICAgICAg ICAgPHVuYXZhaWxhYmxlPgooZ2RiKQo= --000000000000f0770b05d9366ffd Content-Type: application/octet-stream; name="gdbserver.log" Content-Disposition: attachment; filename="gdbserver.log" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l096jdvz1 IyBnZGJzZXJ2ZXIgLS1kZWJ1ZyAtLXJlbW90ZS1kZWJ1ZyAtLW11bHRpIC9kZXYvdHR5UzEgJgpb Ml0gOTQKcm9vdEBidWlsZHJvb3Q6fgojIHNpZ2NobGRfaGFuZGxlcgpzaWdjaGxkX2hhbmRsZXIK c2lnY2hsZF9oYW5kbGVyCnNpZ2NobGRfaGFuZGxlcgpzaWdjaGxkX2hhbmRsZXIKUmVtb3RlIGRl YnVnZ2luZyB1c2luZyAvZGV2L3R0eVMxCgpyb290QGJ1aWxkcm9vdDp+CiMKcm9vdEBidWlsZHJv b3Q6fgojCnJvb3RAYnVpbGRyb290On4KIwpyb290QGJ1aWxkcm9vdDp+CiMgaGFuZGxpbmcgcG9z c2libGUgc2VyaWFsIGV2ZW50CltnZXRwa3Q6IGRpc2NhcmRpbmcgY2hhciAnKyddCmdldHBrdCAo InFTdXBwb3J0ZWQ6bXVsdGlwcm9jZXNzKztzd2JyZWFrKztod2JyZWFrKztxUmVsb2NJbnNuKztm b3JrLWV2ZW50cys7dmZvcmstZXZlbnRzKztleGVjLWV2ZW50cys7dkNvbnRTdXBwb3J0ZWQrO1FU aHJlYWRFdmVudHMrO25vLXJlc3VtZWQrO21lbW9yeS10YWdnaW5nKyIpOyAgW3NlbmRpbmcgYWNr XQpbc2VudCBhY2tdCnB1dHBrdCAoIiRQYWNrZXRTaXplPTQ3ZmY7UVBhc3NTaWduYWxzKztRUHJv Z3JhbVNpZ25hbHMrO1FTdGFydHVwV2l0aFNoZWxsKztRRW52aXJvbm1lbnRIZXhFbmNvZGVkKztR RW52aXJvbm1lbnRSZXNldCs7UUVudmlyb25tZW50VW5zZXQrO1FTZXRXb3JraW5nRGlyKztxWGZl cjpsaWJyYXJpZXMtc3ZyNDpyZWFkKzthdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVhZCs7cVhm ZXI6YXV4djpyZWFkKztxWGZlcjpzaWdpbmZvOnJlYWQrO3FYZmVyOnNpZ2luZm86d3JpdGUrO3FY ZmVyOmZlYXR1cmVzOnJlYWQrO3FYZmVyOm9zZGF0YTpyZWFkKzttdWx0aXByb2Nlc3MrO2Zvcmst ZXZlbnRzKzt2Zm9yay1ldmVudHMrO2V4ZWMtZXZlbnRzKztRTm9uU3RvcCs7UURpc2FibGVSYW5k b21pemF0aW9uKztxWGZlcjp0aHJlYWRzOnJlYWQrO0NvbmRpdGlvbmFsQnJlYWtwb2ludHMrO0Jy ZWFrcG9pbnRDb21tYW5kcys7UUFnZW50KztRYnRyYWNlOmJ0cys7UWJ0cmFjZS1jb25mOmJ0czpz aXplKztRYnRyYWNlOnB0KztRYnRyYWNlLWNvbmY6cHQ6c2l6ZSs7UWJ0cmFjZTpvZmYrO3FYZmVy OmJ0cmFjZTpyZWFkKztxWGZlcjpidHJhY2UtY29uZjpyZWFkKztzd2JyZWFrKztod2JyZWFrKztx WGZlcjpleGVjLWZpbGU6cmVhZCs7dkNvbnRTdXBwb3J0ZWQrO1FUaHJlYWRFdmVudHMrO25vLXJl c3VtZWQrIzIxIik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5k bGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgidk11c3RSZXBseUVtcHR5Iik7ICBb c2VuZGluZyBhY2tdCltzZW50IGFja10KcHV0cGt0ICgiJCMwMCIpOyBbbG9va2luZyBmb3IgYWNr XQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50Cmdl dHBrdCAoIiEiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkT0sjOWEiKTsg W2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxl IHNlcmlhbCBldmVudApnZXRwa3QgKCJRUHJvZ3JhbVNpZ25hbHM6MDsxOzM7NDs2Ozc7ODs5O2E7 YjtjO2Q7ZTtmOzEwOzExOzEyOzEzOzE0OzE1OzE2OzE3OzE4OzE5OzFhOzFiOzFjOzFkOzFlOzFm OzIwOzIxOzIyOzIzOzI0OzI1OzI2OzI3OzI4OzI5OzJhOzJiOzJjOzJkOzJlOzJmOzMwOzMxOzMy OzMzOzM0OzM1OzM2OzM3OzM4OzM5OzNhOzNiOzNjOzNkOzNlOzNmOzQwOzQxOzQyOzQzOzQ0OzQ1 OzQ2OzQ3OzQ4OzQ5OzRhOzRiOzRjOzRkOzRlOzRmOzUwOzUxOzUyOzUzOzU0OzU1OzU2OzU3OzU4 OzU5OzVhOzViOzVjOzVkOzVlOzVmOzYwOzYxOzYyOzYzOzY0OzY1OzY2OzY3OzY4OzY5OzZhOzZi OzZjOzZkOzZlOzZmOzcwOzcxOzcyOzczOzc0Ozc1Ozc2Ozc3Ozc4Ozc5OzdhOzdiOzdjOzdkOzdl OzdmOzgwOzgxOzgyOzgzOzg0Ozg1Ozg2Ozg3Ozg4Ozg5OzhhOzhiOzhjOzhkOzhlOzhmOzkwOzkx OzkyOzkzOzk0Ozk1Ozk2Ozk3OyIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAo IiRPSyM5YSIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxp bmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIkhncDAuMCIpOyAgW3NlbmRpbmcgYWNr XQpbc2VudCBhY2tdCnB1dHBrdCAoIiRFMDEjYTYiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2Vp dmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJx WGZlcjpmZWF0dXJlczpyZWFkOnRhcmdldC54bWw6MCwxMDAwIik7ICBbc2VuZGluZyBhY2tdCltz ZW50IGFja10KcHV0cGt0ICgiJEUwMSNhNiIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQg JysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIlFOb25T dG9wOjAiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpsaW51eF9hc3luYyAoMCksIHByZXZp b3VzPTAKW2FsbC1zdG9wIG1vZGUgZW5hYmxlZF0KcHV0cGt0ICgiJE9LIzlhIik7IFtsb29raW5n IGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwg ZXZlbnQKZ2V0cGt0ICgicVRTdGF0dXMiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRw a3QgKCIkIzAwIik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5k bGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgiPyIpOyAgW3NlbmRpbmcgYWNrXQpb c2VudCBhY2tdCj4+Pj4gZW50ZXJpbmcgdm9pZCBsaW51eF9wcm9jZXNzX3RhcmdldDo6c3RvcF9h bGxfbHdwcyhpbnQsIGx3cF9pbmZvKikKc3RvcF9hbGxfbHdwcyAoc3RvcCwgZXhjZXB0PW5vbmUp CndhaXRfZm9yX3NpZ3N0b3A6IHB1bGxpbmcgZXZlbnRzCkxXRkU6IHdhaXRwaWQoLTEsIC4uLikg cmV0dXJuZWQgLTEsCkxMVzogZXhpdCAobm8gdW53YWl0ZWQtZm9yIExXUCkKc3RvcF9hbGxfbHdw cyBkb25lLCBzZXR0aW5nIHN0b3BwaW5nX3RocmVhZHMgYmFjayB0byAhc3RvcHBpbmcKPDw8PCBl eGl0aW5nIHZvaWQgbGludXhfcHJvY2Vzc190YXJnZXQ6OnN0b3BfYWxsX2x3cHMoaW50LCBsd3Bf aW5mbyopCnB1dHBrdCAoIiRXMDAjYjciKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcr JyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJRRGlzYWJs ZVJhbmRvbWl6YXRpb246MSIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdClthZGRyZXNzIHNw YWNlIHJhbmRvbWl6YXRpb24gZGlzYWJsZWRdCnB1dHBrdCAoIiRPSyM5YSIpOyBbbG9va2luZyBm b3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2 ZW50CmdldHBrdCAoIlFTdGFydHVwV2l0aFNoZWxsOjEiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQg YWNrXQpbSW5mZXJpb3Igd2lsbCBiZSBzdGFydGVkIHdpdGggc2hlbGxdcHV0cGt0ICgiJE9LIzlh Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3Nz aWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgiUUVudmlyb25tZW50UmVzZXQiKTsgIFtzZW5kaW5n IGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkT0sjOWEiKTsgW2xvb2tpbmcgZm9yIGFja10KW3Jl Y2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3Qg KCJRU2V0V29ya2luZ0RpcjoyZiIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCltTZXQgdGhl IGluZmVyaW9yJ3MgY3VycmVudCBkaXJlY3RvcnkgdG8gL10KcHV0cGt0ICgiJE9LIzlhIik7IFts b29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBz ZXJpYWwgZXZlbnQKZ2V0cGt0ICgidlJ1bjsyZjYyNjk2ZTJmNmM3MzsyZDZjOzJmIik7ICBbc2Vu ZGluZyBhY2tdCltzZW50IGFja10KYXJnczogLWwgLwo+Pj4+IGVudGVyaW5nIHB0aWRfdCBsaW51 eF9wcm9jZXNzX3RhcmdldDo6d2FpdF8xKHB0aWRfdCwgdGFyZ2V0X3dhaXRzdGF0dXMqLCB0YXJn ZXRfd2FpdF9mbGFncykKd2FpdF8xOiBbUHJvY2VzcyA5N10KTFdGRTogd2FpdHBpZCgtMSwgLi4u KSByZXR1cm5lZCAwLCBFUlJOTy1PSwpsZWFkZXJfcGlkPTk3LCBsZWFkZXJfbHAhPU5VTEw9MSwg bnVtX2x3cHM9MSwgem9tYmllPTAKc2lnc3VzcGVuZCdpbmcKc2lnY2hsZF9oYW5kbGVyCkxXRkU6 IHdhaXRwaWQoLTEsIC4uLikgcmV0dXJuZWQgOTcsIEVSUk5PLU9LCkxMVzogd2FpdHBpZCA5NyBy ZWNlaXZlZCBTSUdUUkFQIC0gVHJhY2UvYnJlYWtwb2ludCB0cmFwIChzdG9wcGVkKQpMV0ZFOiB3 YWl0cGlkKC0xLCAuLi4pIHJldHVybmVkIDAsIEVSUk5PLU9LCkhpdCBhIG5vbi1nZGJzZXJ2ZXIg dHJhcCBldmVudC4KPj4+PiBlbnRlcmluZyB2b2lkIGxpbnV4X3Byb2Nlc3NfdGFyZ2V0OjpzdG9w X2FsbF9sd3BzKGludCwgbHdwX2luZm8qKQpzdG9wX2FsbF9sd3BzIChzdG9wLCBleGNlcHQ9bm9u ZSkKd2FpdF9mb3Jfc2lnc3RvcDogcHVsbGluZyBldmVudHMKTFdGRTogd2FpdHBpZCgtMSwgLi4u KSByZXR1cm5lZCAwLCBFUlJOTy1PSwpsZWFkZXJfcGlkPTk3LCBsZWFkZXJfbHAhPU5VTEw9MSwg bnVtX2x3cHM9MSwgem9tYmllPTAKTExXOiBleGl0IChubyB1bndhaXRlZC1mb3IgTFdQKQpzdG9w X2FsbF9sd3BzIGRvbmUsIHNldHRpbmcgc3RvcHBpbmdfdGhyZWFkcyBiYWNrIHRvICFzdG9wcGlu Zwo8PDw8IGV4aXRpbmcgdm9pZCBsaW51eF9wcm9jZXNzX3RhcmdldDo6c3RvcF9hbGxfbHdwcyhp bnQsIGx3cF9pbmZvKikKQ2hlY2tpbmcgd2hldGhlciBMV1AgOTcgbmVlZHMgdG8gbW92ZSBvdXQg b2YgdGhlIGp1bXAgcGFkLi4ubm8Kd2FpdF8xIHJldCA9IExXUCA5Ny45NywgMSwgNQo8PDw8IGV4 aXRpbmcgcHRpZF90IGxpbnV4X3Byb2Nlc3NfdGFyZ2V0Ojp3YWl0XzEocHRpZF90LCB0YXJnZXRf d2FpdHN0YXR1cyosIHRhcmdldF93YWl0X2ZsYWdzKQo+Pj4+IGVudGVyaW5nIHZpcnR1YWwgdm9p ZCBsaW51eF9wcm9jZXNzX3RhcmdldDo6cmVzdW1lKHRocmVhZF9yZXN1bWUqLCBzaXplX3QpCmxp bnV4X3Jlc3VtZToKYWxyZWFkeSBjb250aW51aW5nIExXUCA5NyBhdCBHREIncyByZXF1ZXN0ClJl c3VtaW5nLCBubyBwZW5kaW5nIHN0YXR1cyBvciBzdGVwIG92ZXIgbmVlZGVkCmxpbnV4X3Jlc3Vt ZSBkb25lCjw8PDwgZXhpdGluZyB2aXJ0dWFsIHZvaWQgbGludXhfcHJvY2Vzc190YXJnZXQ6OnJl c3VtZSh0aHJlYWRfcmVzdW1lKiwgc2l6ZV90KQo+Pj4+IGVudGVyaW5nIHB0aWRfdCBsaW51eF9w cm9jZXNzX3RhcmdldDo6d2FpdF8xKHB0aWRfdCwgdGFyZ2V0X3dhaXRzdGF0dXMqLCB0YXJnZXRf d2FpdF9mbGFncykKd2FpdF8xOiBbUHJvY2VzcyA5N10KTFdGRTogd2FpdHBpZCgtMSwgLi4uKSBy ZXR1cm5lZCAwLCBFUlJOTy1PSwpSU1JMOiByZXN1bWluZyBzdG9wcGVkLXJlc3VtZWQgTFdQIExX UCA5Ny45NyBhdCAwOiBzdGVwPTAKUmVzdW1pbmcgbHdwIDk3IChjb250aW51ZSwgc2lnbmFsIDAs IHN0b3Agbm90IGV4cGVjdGVkKQpsZWFkZXJfcGlkPTk3LCBsZWFkZXJfbHAhPU5VTEw9MSwgbnVt X2x3cHM9MSwgem9tYmllPTAKc2lnc3VzcGVuZCdpbmcKc2lnY2hsZF9oYW5kbGVyCkxXRkU6IHdh aXRwaWQoLTEsIC4uLikgcmV0dXJuZWQgOTcsIEVSUk5PLU9LCkxMVzogd2FpdHBpZCA5NyByZWNl aXZlZCBTSUdUUkFQIC0gVHJhY2UvYnJlYWtwb2ludCB0cmFwIChzdG9wcGVkKQpMV0ZFOiB3YWl0 cGlkKC0xLCAuLi4pIHJldHVybmVkIDAsIEVSUk5PLU9LCkhpdCBhIG5vbi1nZGJzZXJ2ZXIgdHJh cCBldmVudC4KPj4+PiBlbnRlcmluZyB2b2lkIGxpbnV4X3Byb2Nlc3NfdGFyZ2V0OjpzdG9wX2Fs bF9sd3BzKGludCwgbHdwX2luZm8qKQpzdG9wX2FsbF9sd3BzIChzdG9wLCBleGNlcHQ9bm9uZSkK d2FpdF9mb3Jfc2lnc3RvcDogcHVsbGluZyBldmVudHMKTFdGRTogd2FpdHBpZCgtMSwgLi4uKSBy ZXR1cm5lZCAwLCBFUlJOTy1PSwpsZWFkZXJfcGlkPTk3LCBsZWFkZXJfbHAhPU5VTEw9MSwgbnVt X2x3cHM9MSwgem9tYmllPTAKTExXOiBleGl0IChubyB1bndhaXRlZC1mb3IgTFdQKQpzdG9wX2Fs bF9sd3BzIGRvbmUsIHNldHRpbmcgc3RvcHBpbmdfdGhyZWFkcyBiYWNrIHRvICFzdG9wcGluZwo8 PDw8IGV4aXRpbmcgdm9pZCBsaW51eF9wcm9jZXNzX3RhcmdldDo6c3RvcF9hbGxfbHdwcyhpbnQs IGx3cF9pbmZvKikKQ2hlY2tpbmcgd2hldGhlciBMV1AgOTcgbmVlZHMgdG8gbW92ZSBvdXQgb2Yg dGhlIGp1bXAgcGFkLi4ubm8Kd2FpdF8xIHJldCA9IExXUCA5Ny45NywgMSwgNQo8PDw8IGV4aXRp bmcgcHRpZF90IGxpbnV4X3Byb2Nlc3NfdGFyZ2V0Ojp3YWl0XzEocHRpZF90LCB0YXJnZXRfd2Fp dHN0YXR1cyosIHRhcmdldF93YWl0X2ZsYWdzKQpQcm9jZXNzIC9iaW4vbHMgY3JlYXRlZDsgcGlk ID0gOTcKV3JpdGluZyByZXN1bWUgcmVwbHkgZm9yIExXUCA5Ny45NzoxCnB1dHBrdCAoIiRUMDUw MDowKiIwMDswZTowKiIwMDswZjowKiIwMDsxMDowKiIwMDt0aHJlYWQ6cDYxLjYxO2NvcmU6MDsj OTAiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBv c3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJxQXR0YWNoZWQ6NjEiKTsgIFtzZW5kaW5nIGFj a10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkMCMzMCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2 ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoInFY ZmVyOmV4ZWMtZmlsZTpyZWFkOjYxOjAsMTAwMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2td CnB1dHBrdCAoIiRsL3Vzci9iaW4vYnVzeWJveCM5OCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVj ZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAo InZGaWxlOnNldGZzOjAiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkRjAj NzYiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBv c3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJ2RmlsZTpvcGVuOjZhNzU3Mzc0MjA3MDcyNmY2 MjY5NmU2NywwLDFjMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRGLTEs MiMwMiIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcg cG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoInZGaWxlOnNldGZzOjYxIik7ICBbc2VuZGlu ZyBhY2tdCltzZW50IGFja10KcHV0cGt0ICgiJEYwIzc2Iik7IFtsb29raW5nIGZvciBhY2tdClty ZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0 ICgidkZpbGU6b3BlbjoyZjc1NzM3MjJmNjI2OTZlMmY2Mjc1NzM3OTYyNmY3OCwwLDAiKTsgIFtz ZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkRjQjN2EiKTsgW2xvb2tpbmcgZm9yIGFj a10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApn ZXRwa3QgKCJ2RmlsZTpwcmVhZDo0LDQ3ZmYsMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2td CnB1dHBrdCAoIiRGNDczNDtFTEYiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAo MHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJ2RmlsZTpwcmVh ZDo0LDQ3ZmYsMWNlMjg4Iik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10KcHV0cGt0ICgiJEYz NzA7Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBw b3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgidkZpbGU6ZnN0YXQ6NCIpOyAgW3NlbmRpbmcg YWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRGNDA7Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNl aXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgi dkZpbGU6cHJlYWQ6NCw0N2ZmLDM0Iik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10KcHV0cGt0 ICgiJEY0NzMzOyIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFu ZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoInZGaWxlOnByZWFkOjQsNDdmZiwx Y2UxYTEiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkRjQ1NzsiKTsgW2xv b2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNl cmlhbCBldmVudApnZXRwa3QgKCJ2RmlsZTpwcmVhZDo0LDQ3ZmYsYjQiKTsgIFtzZW5kaW5nIGFj a10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkRjQ3MzM7Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNl aXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgi dkZpbGU6ZnN0YXQ6NCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRGNDA7 Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3Nz aWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgidkZpbGU6b3BlbjoyZjc1NzM3MjJmNjI2OTZlMmY2 Mjc1NzM3OTYyNmY3OCwwLDAiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIk RjUjN2IiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5n IHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJ2RmlsZTpwcmVhZDo1LDQ3ZmYsMCIpOyAg W3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRGNDczNDtFTEYiKTsgW2xvb2tpbmcg Zm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBl dmVudApnZXRwa3QgKCJ2RmlsZTpwcmVhZDo1LDQ3ZmYsMWNlMjg4Iik7ICBbc2VuZGluZyBhY2td CltzZW50IGFja10KcHV0cGt0ICgiJEYzNzA7Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZl ZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgidkZp bGU6ZnN0YXQ6NSIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRGNDA7Iik7 IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJs ZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgidkZpbGU6cHJlYWQ6NSw0N2ZmLDM0Iik7ICBbc2VuZGlu ZyBhY2tdCltzZW50IGFja10KcHV0cGt0ICgiJEY0NzMzOyIpOyBbbG9va2luZyBmb3IgYWNrXQpb cmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBr dCAoInZGaWxlOnByZWFkOjUsNDdmZiwxY2UxYTEiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNr XQpwdXRwa3QgKCIkRjQ1NzsiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgy YildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJ2RmlsZTpwcmVhZDo1 LDQ3ZmYsYjQiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkRjQ3MzM7Iik7 IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJs ZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgidkZpbGU6ZnN0YXQ6NSIpOyAgW3NlbmRpbmcgYWNrXQpb c2VudCBhY2tdCnB1dHBrdCAoIiRGNDA7Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAn KycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgicVN5bWJv bDo6Iik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10KVHJ5aW5nIGhvc3QgbGlidGhyZWFkX2Ri IGxpYnJhcnk6IGxpYnRocmVhZF9kYi5zby4xLgpkbG9wZW4gZmFpbGVkOiBsaWJ0aHJlYWRfZGIu c28uMTogY2Fubm90IG9wZW4gc2hhcmVkIG9iamVjdCBmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGly ZWN0b3J5Lgp0aHJlYWRfZGJfbG9hZF9zZWFyY2ggcmV0dXJuaW5nIDAKcHV0cGt0ICgiJE9LIzlh Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3Nz aWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgicVN5bWJvbDo6Iik7ICBbc2VuZGluZyBhY2tdCltz ZW50IGFja10KVHJ5aW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnk6IGxpYnRocmVhZF9kYi5z by4xLgpkbG9wZW4gZmFpbGVkOiBsaWJ0aHJlYWRfZGIuc28uMTogY2Fubm90IG9wZW4gc2hhcmVk IG9iamVjdCBmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Lgp0aHJlYWRfZGJfbG9hZF9z ZWFyY2ggcmV0dXJuaW5nIDAKcHV0cGt0ICgiJE9LIzlhIik7IFtsb29raW5nIGZvciBhY2tdClty ZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0 ICgicVhmZXI6ZXhlYy1maWxlOnJlYWQ6NjE6MCwxMDAwIik7ICBbc2VuZGluZyBhY2tdCltzZW50 IGFja10KcHV0cGt0ICgiJGwvdXNyL2Jpbi9idXN5Ym94Izk4Iik7IFtsb29raW5nIGZvciBhY2td CltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwgZXZlbnQKZ2V0 cGt0ICgicU9mZnNldHMiKTsgIFtzZW5kaW5nIGFja10KW3NlbnQgYWNrXQpwdXRwa3QgKCIkIzAw Iik7IFtsb29raW5nIGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3Nz aWJsZSBzZXJpYWwgZXZlbnQKZ2V0cGt0ICgiSGdwNjEuNjEiKTsgIFtzZW5kaW5nIGFja10KW3Nl bnQgYWNrXQpwdXRwa3QgKCIkT0sjOWEiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcr JyAoMHgyYildCmhhbmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJxWGZlcjpm ZWF0dXJlczpyZWFkOnRhcmdldC54bWw6MCwxMDAwIik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFj a10KcHV0cGt0ICgiJGw8P3htbCB2ZXJzaW9uPSIxLjAiPz4KPCFET0NUWVBFIHRhcmdldCBTWVNU RU0gImdkYi10YXJnZXQuZHRkIj4KPHRhcmdldD4KICA8YXJjaGl0ZWN0dXJlPnB1MzI8L2FyY2hp dGVjdHVyZT4KICA8b3NhYmk+R05VL0xpbnV4PC9vc2FiaT4KICA8ZmVhdHVyZSBuYW1lPSJvcmcu Z251LmdkYi5wdTMyLmNvcmUiPgogKiA8cmVnIG5hbWU9InNwIiBiaXRzaXplPSIzMiIgdHlwZT0i dWludDMyIiByZWdudW09IjAiLz4KICogPHJlZyBuYW1lPSJyMSIgYml0c2l6ZT0iMzIiIHR5cGU9 InVpbnQzMiIgcmVnbnVtPSIxIi8+CiAqIDxyZWcgbmFtZT0icjIiIGJpdHNpemU9IjMyIiB0eXBl PSJ1aW50MzIiIHJlZ251bT0iMiIvPgogKiA8cmVnIG5hbWU9InIzIiBiaXRzaXplPSIzMiIgdHlw ZT0idWludDMyIiByZWdudW09IjMiLz4KICogPHJlZyBuYW1lPSJyNCIgYml0c2l6ZT0iMzIiIHR5 cGU9InVpbnQzMiIgcmVnbnVtPSI0Ii8+CiAqIDxyZWcgbmFtZT0icjUiIGJpdHNpemU9IjMyIiB0 eXBlPSJ1aW50MzIiIHJlZ251bT0iNSIvPgogKiA8cmVnIG5hbWU9InI2IiBiaXRzaXplPSIzMiIg dHlwZT0idWludDMyIiByZWdudW09IjYiLz4KICogPHJlZyBuYW1lPSJyNyIgYml0c2l6ZT0iMzIi IHR5cGU9InVpbnQzMiIgcmVnbnVtPSI3Ii8+CiAqIDxyZWcgbmFtZT0icjgiIGJpdHNpemU9IjMy IiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iOCIvPgogKiA8cmVnIG5hbWU9InI5IiBiaXRzaXplPSIz MiIgdHlwZT0idWludDMyIiByZWdudW09IjkiLz4KICogPHJlZyBuYW1lPSJyMTAiIGJpdHNpemU9 IjMyIiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iMTAiLz4KICogPHJlZyBuYW1lPSJyMTEiIGJpdHNp emU9IjMyIiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iMTEiLz4KICogPHJlZyBuYW1lPSJyMTIiIGJp dHNpemU9IjMyIiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iMTIiLz4KICogPHJlZyBuYW1lPSJyMTMi IGJpdHNpemU9IjMyIiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iMTMiLz4KICogPHJlZyBuYW1lPSJy MTQiIGJpdHNpemU9IjMyIiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iMTQiLz4KICogPHJlZyBuYW1l PSJyMTUiIGJpdHNpemU9IjMyIiB0eXBlPSJ1aW50MzIiIHJlZ251bT0iMTUiLz4KICogPHJlZyBu YW1lPSJwYyIgYml0c2l6ZT0iMzIiIHR5cGU9InVpbnQzMiIgcmVnbnVtPSIxNiIvPgogIDwvZmVh dHVyZT4KPC90YXJnZXQ+CiNlZiIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgw eDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoInZGaWxlOnByZWFk OjQsNDdmZixiNCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRGNDczMzsi KTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhhbmRsaW5nIHBvc3Np YmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJnIik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10K cHV0cGt0ICgiJHgqfXgqQyMwNCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgw eDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoInFYZmVyOmxpYnJh cmllcy1zdnI0OnJlYWQ6OjAsMTAwMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBr dCAoIiRFMDEjYTYiKTsgW2xvb2tpbmcgZm9yIGFja10KW3JlY2VpdmVkICcrJyAoMHgyYildCmhh bmRsaW5nIHBvc3NpYmxlIHNlcmlhbCBldmVudApnZXRwa3QgKCJxWGZlcjphdXh2OnJlYWQ6OjAs MTAwMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiRsIik7IFtsb29raW5n IGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwg ZXZlbnQKZ2V0cGt0ICgibTUwMDAwMDM0LDIwIik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10K cHV0cGt0ICgiJDAxMCowNTAqIjA1MGY5Y2IxYzAwZjljYjFjMDAwNTAqIjAwMTAqISNjZSIpOyBb bG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUg c2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA1NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2Vu dCBhY2tdCnB1dHBrdCAoIiQwMTAqImZjY2IxYzAwZmNkYjFjNTBmY2RiMWM1MGE1MTUwKiAxYzM3 MCohNjAqIjAwMTAqISMxYyIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJi KV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA3NCwyMCIp OyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNDAqImI0MCoiYjQwKiA1MGI0 MCogNTAyMCoiMDIwKiIwMDQwKiIwNDAqIiM1OCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2 ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01 MDAwMDA5NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNzAqImZj Y2IxYzAwZmNkYjFjNTBmY2RiMWM1MDE4MCoiNTQwKiIwNDAqIjA0MCoiI2ZmIik7IFtsb29raW5n IGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwg ZXZlbnQKZ2V0cGt0ICgibTUwMDAwMDM0LDIwIik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10K cHV0cGt0ICgiJDAxMCowNTAqIjA1MGY5Y2IxYzAwZjljYjFjMDAwNTAqIjAwMTAqISNjZSIpOyBb bG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUg c2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA1NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2Vu dCBhY2tdCnB1dHBrdCAoIiQwMTAqImZjY2IxYzAwZmNkYjFjNTBmY2RiMWM1MGE1MTUwKiAxYzM3 MCohNjAqIjAwMTAqISMxYyIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJi KV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA3NCwyMCIp OyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNDAqImI0MCoiYjQwKiA1MGI0 MCogNTAyMCoiMDIwKiIwMDQwKiIwNDAqIiM1OCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2 ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01 MDAwMDA5NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNzAqImZj Y2IxYzAwZmNkYjFjNTBmY2RiMWM1MDE4MCoiNTQwKiIwNDAqIjA0MCoiI2ZmIik7IFtsb29raW5n IGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwg ZXZlbnQKZ2V0cGt0ICgibTUwMDAwMDM0LDIwIik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10K cHV0cGt0ICgiJDAxMCowNTAqIjA1MGY5Y2IxYzAwZjljYjFjMDAwNTAqIjAwMTAqISNjZSIpOyBb bG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUg c2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA1NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2Vu dCBhY2tdCnB1dHBrdCAoIiQwMTAqImZjY2IxYzAwZmNkYjFjNTBmY2RiMWM1MGE1MTUwKiAxYzM3 MCohNjAqIjAwMTAqISMxYyIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJi KV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA3NCwyMCIp OyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNDAqImI0MCoiYjQwKiA1MGI0 MCogNTAyMCoiMDIwKiIwMDQwKiIwNDAqIiM1OCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2 ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01 MDAwMDA5NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNzAqImZj Y2IxYzAwZmNkYjFjNTBmY2RiMWM1MDE4MCoiNTQwKiIwNDAqIjA0MCoiI2ZmIik7IFtsb29raW5n IGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQpoYW5kbGluZyBwb3NzaWJsZSBzZXJpYWwg ZXZlbnQKZ2V0cGt0ICgibTUwMDAwMDM0LDIwIik7ICBbc2VuZGluZyBhY2tdCltzZW50IGFja10K cHV0cGt0ICgiJDAxMCowNTAqIjA1MGY5Y2IxYzAwZjljYjFjMDAwNTAqIjAwMTAqISNjZSIpOyBb bG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUg c2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA1NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2Vu dCBhY2tdCnB1dHBrdCAoIiQwMTAqImZjY2IxYzAwZmNkYjFjNTBmY2RiMWM1MGE1MTUwKiAxYzM3 MCohNjAqIjAwMTAqISMxYyIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2ZWQgJysnICgweDJi KV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01MDAwMDA3NCwyMCIp OyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNDAqImI0MCoiYjQwKiA1MGI0 MCogNTAyMCoiMDIwKiIwMDQwKiIwNDAqIiM1OCIpOyBbbG9va2luZyBmb3IgYWNrXQpbcmVjZWl2 ZWQgJysnICgweDJiKV0KaGFuZGxpbmcgcG9zc2libGUgc2VyaWFsIGV2ZW50CmdldHBrdCAoIm01 MDAwMDA5NCwyMCIpOyAgW3NlbmRpbmcgYWNrXQpbc2VudCBhY2tdCnB1dHBrdCAoIiQwNzAqImZj Y2IxYzAwZmNkYjFjNTBmY2RiMWM1MDE4MCoiNTQwKiIwNDAqIjA0MCoiI2ZmIik7IFtsb29raW5n IGZvciBhY2tdCltyZWNlaXZlZCAnKycgKDB4MmIpXQoKcm9vdEBidWlsZHJvb3Q6fgo= --000000000000f0770b05d9366ffd--