force use of pandoc version >= 3.1.12.2
The `bin/pandoc-wrapper.sh` tool will verify that the ssytem has a recent enough version of `pandoc(1)`. We explain why we insist on `pandoc(1)`. version >= 3.1.12.2 in comments where the $PANDOC_MIN_VERSION is set. Added `--wrap=preserve` as a default argument to `pandoc(1)`. While this change will impact every HTML file generated, we believe this will improve the ability of someone to look at the generated HTML and correlate with the original markdown. Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17" to "1.4.3 2024-03-18". Performed `make www` to achieve all of the above and to generate HTML using the new `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+82
-122
@@ -130,8 +130,8 @@
|
||||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||||
<ul>
|
||||
<li>Name: <a href="../../authors.html#Don_Yang">Don Yang</a><br>
|
||||
Location: <a href="../../location.html#US">US</a> - <em>United States of
|
||||
America</em> (<em>United States</em>) <br><br></li>
|
||||
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||||
@@ -141,11 +141,10 @@ America</em> (<em>United States</em>) <br><br></li>
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span></span></code></pre></div>
|
||||
<p>There is an alternate version that will read from the compiled file
|
||||
itself, in case you don’t have a <code>/dev/urandom</code> file. There
|
||||
is also a version that should theoretically work with Windows which
|
||||
distinguishes binary and text. See <a href="#alternate-code">alternate
|
||||
code</a> below.</p>
|
||||
<p>There is an alternate version that will read from the compiled file itself, in
|
||||
case you don’t have a <code>/dev/urandom</code> file. There is also a version that should
|
||||
theoretically work with Windows which distinguishes binary and text. See
|
||||
<a href="#alternate-code">alternate code</a> below.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> <span class="pp">[</span><span class="ss">seed.txt</span><span class="pp">]</span> <span class="op"><</span> original.bin <span class="op">></span> output.c</span>
|
||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">bash</span> output.c <span class="op">></span> key.c</span>
|
||||
@@ -155,102 +154,89 @@ code</a> below.</p>
|
||||
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> output.c <span class="at">-o</span> output</span>
|
||||
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a><span class="ex">./output</span> <span class="op">></span> regenerated.bin</span></code></pre></div>
|
||||
<p>NOTE: if your OS does not have <code>/dev/urandom</code> then you
|
||||
should specify a seed file or use the <a
|
||||
href="#alternate-code">alternate version</a> which reads in the compiled
|
||||
<p>NOTE: if your OS does not have <code>/dev/urandom</code> then you should specify a seed
|
||||
file or use the <a href="#alternate-code">alternate version</a> which reads in the compiled
|
||||
binary itself.</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<p>The script <a href="try.sh">try.sh</a> will check if you have perl
|
||||
before trying to use the perl parts of the script.</p>
|
||||
<p>The script <a href="try.sh">try.sh</a> will check if you have perl before trying to use the
|
||||
perl parts of the script.</p>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>The alternate version will, if no file is specified, read in the
|
||||
compiled binary itself rather than trying to open
|
||||
<code>/dev/urandom</code>, which is the default for the original entry.
|
||||
This is useful if your system does not have a <code>/dev/urandom</code>
|
||||
file and you do not want to specify an extra file. The second alternate
|
||||
version is like the first except it also should theoretically work with
|
||||
Windows, setting binary mode on <code>stdin</code> and
|
||||
<code>stdout</code>.</p>
|
||||
<p>The alternate version will, if no file is specified, read in the compiled binary
|
||||
itself rather than trying to open <code>/dev/urandom</code>, which is the default for the
|
||||
original entry. This is useful if your system does not have a <code>/dev/urandom</code>
|
||||
file and you do not want to specify an extra file. The second alternate version
|
||||
is like the first except it also should theoretically work with Windows, setting
|
||||
binary mode on <code>stdin</code> and <code>stdout</code>.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<p>For the first version:</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt</span></code></pre></div>
|
||||
<p>For the second version:</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt2</span></code></pre></div>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>nyaruko.alt</code> or <code>nyaruko.alt2</code> as you
|
||||
would <code>nyaruko</code> above.</p>
|
||||
<p>Use <code>nyaruko.alt</code> or <code>nyaruko.alt2</code> as you would <code>nyaruko</code> above.</p>
|
||||
<h3 id="alternate-try">Alternate try:</h3>
|
||||
<p>For the first alternate version:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.alt.sh</span></span></code></pre></div>
|
||||
<p>We have no way to test the second version, sorry (tm Canada :-)
|
||||
)!</p>
|
||||
<p>We have no way to test the second version, sorry (tm Canada :-) )!</p>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>The judges have nothing to add that has not already been written
|
||||
about in the <a href="spoiler.html">spoiler.html</a> (requires
|
||||
JavaScript) file! :-)</p>
|
||||
<p>The judges have nothing to add that has not already been written about in the
|
||||
<a href="spoiler.html">spoiler.html</a> (requires JavaScript) file! :-)</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="usage">Usage</h3>
|
||||
<p><code>Nyaruko</code> is a binary to text filter. Given some input on
|
||||
<code>stdin</code>, <code>Nyaruko</code> will produce C code that
|
||||
reproduces this input on <code>stdout</code>:</p>
|
||||
<p><code>Nyaruko</code> is a binary to text filter. Given some input on <code>stdin</code>,
|
||||
<code>Nyaruko</code> will produce C code that reproduces this input on <code>stdout</code>:</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> <span class="op"><</span> original.bin <span class="op">></span> output.c</span>
|
||||
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="fu">gcc</span> output.c <span class="at">-o</span> output</span>
|
||||
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="ex">./output</span> <span class="op">></span> regenerated.bin</span></code></pre></div>
|
||||
<p>Output is encrypted, but both key and data are included in the
|
||||
output. To separate the key from the data, run these commands:</p>
|
||||
<p>Output is encrypted, but both key and data are included in the output.
|
||||
To separate the key from the data, run these commands:</p>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">bash</span> output.c <span class="op">></span> key.c</span>
|
||||
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="fu">perl</span> output.c <span class="op">></span> data.c</span></code></pre></div>
|
||||
<p>The key-less <code>data.c</code> still compiles, but produces a
|
||||
different message on <code>stdout</code> instead of the original input.
|
||||
This message is a hint to why the code is formatted the way it is.</p>
|
||||
<p>The key-less <code>data.c</code> still compiles, but produces a different message
|
||||
on <code>stdout</code> instead of the original input. This message is a hint to
|
||||
why the code is formatted the way it is.</p>
|
||||
<p>To combine the key and data, concatenate them together in either
|
||||
order:</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> key.c data.c <span class="op">></span> output.c</span>
|
||||
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> data.c key.c <span class="op">></span> output.c</span></code></pre></div>
|
||||
<p>By default, <code>Nyaruko</code> generates a unique random key for
|
||||
every message, using <code>/dev/urandom</code> as the seed. If given an
|
||||
extra command line argument, <code>Nyaruko</code> will seed using that
|
||||
file instead of <code>/dev/urandom</code>:</p>
|
||||
<div class="sourceCode" id="cb10"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> seed.txt <span class="op"><</span> input.bin <span class="op">></span> output.c</span></code></pre></div>
|
||||
<p>This makes the output key deterministic, allowing the same key to be
|
||||
shared across different files. On operating systems that do not have
|
||||
<code>/dev/urandom</code>, users should always specify this extra seed
|
||||
argument to avoid indeterministic keys, or else use the alternate
|
||||
version which will by default read the compiled alternate version
|
||||
itself, which might or might not be deterministic, depending on where
|
||||
and how it’s used.</p>
|
||||
<p>By default, <code>Nyaruko</code> generates a unique random key for every message,
|
||||
using <code>/dev/urandom</code> as the seed. If given an extra command line
|
||||
argument, <code>Nyaruko</code> will seed using that file instead of <code>/dev/urandom</code>:</p>
|
||||
<div class="sourceCode" id="cb10"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> seed.txt <span class="op"><</span> input.bin <span class="op">></span> output.c</span></code></pre></div>
|
||||
<p>This makes the output key deterministic, allowing the same key to be shared
|
||||
across different files. On operating systems that do not have <code>/dev/urandom</code>,
|
||||
users should always specify this extra seed argument to avoid indeterministic
|
||||
keys, or else use the alternate version which will by default read the compiled
|
||||
alternate version itself, which might or might not be deterministic, depending
|
||||
on where and how it’s used.</p>
|
||||
<h3 id="features">Features</h3>
|
||||
<p>Implementation details that make <code>Nyaruko</code> more obfuscated
|
||||
than usual programs:</p>
|
||||
<p>Implementation details that make <code>Nyaruko</code> more obfuscated than usual
|
||||
programs:</p>
|
||||
<ul>
|
||||
<li><code>Nyaruko</code> recycles variables and buffers to reduce
|
||||
internal state. The variable names are also carefully chosen for
|
||||
mixed-case madness.</li>
|
||||
<li><code>Nyaruko</code> employs some preprocessor magic to share much
|
||||
of the same code and state between the encoder and decoder, and to
|
||||
increase occurrences of smileys ;)</li>
|
||||
<li><code>Nyaruko</code> recycles variables and buffers to reduce internal state.
|
||||
The variable names are also carefully chosen for mixed-case
|
||||
madness.</li>
|
||||
<li><code>Nyaruko</code> employs some preprocessor magic to share much of the same
|
||||
code and state between the encoder and decoder, and to increase
|
||||
occurrences of smileys ;)</li>
|
||||
</ul>
|
||||
<p>Output code has these features:</p>
|
||||
<ul>
|
||||
<li>Fits nicely under 80 columns, and does not contain any
|
||||
trigraphs.</li>
|
||||
<li>Uses a fairly efficient encoding scheme, better than
|
||||
<code>uuencode</code> for files larger than ~13K, and better than
|
||||
<code>base64</code> for files larger than 20K.</li>
|
||||
<li>Encryption with <a
|
||||
href="https://en.wikipedia.org/wiki/ISAAC_(cipher)">ISAAC</a>, a
|
||||
<li>Fits nicely under 80 columns, and does not contain any trigraphs.</li>
|
||||
<li>Uses a fairly efficient encoding scheme, better than <code>uuencode</code> for
|
||||
files larger than ~13K, and better than <code>base64</code> for files larger
|
||||
than 20K.</li>
|
||||
<li>Encryption with <a href="https://en.wikipedia.org/wiki/ISAAC_(cipher)">ISAAC</a>, a
|
||||
cryptographically secure pseudorandom number generator.</li>
|
||||
<li>Trivial 3 language polyglot.</li>
|
||||
</ul>
|
||||
<p>Code layout is meant to resemble <a
|
||||
href="https://en.wikipedia.org/wiki/Nyarlathotep">Nyaruko</a>, also
|
||||
known as <code>Nyarlathotep</code>, the Crawling Chaos. The most obvious
|
||||
thing to do with chaos is to make a random number generator, and the
|
||||
most obvious thing to do with a random number generator is to make <a
|
||||
href="https://en.wikipedia.org/wiki/One-time_pad">one-time-pads</a> for
|
||||
encryption.</p>
|
||||
<p>Code layout is meant to resemble
|
||||
<a href="https://en.wikipedia.org/wiki/Nyarlathotep">Nyaruko</a>, also known as
|
||||
<code>Nyarlathotep</code>, the Crawling Chaos. The most obvious thing to do with chaos is
|
||||
to make a random number generator, and the most obvious thing to do with a
|
||||
random number generator is to make
|
||||
<a href="https://en.wikipedia.org/wiki/One-time_pad">one-time-pads</a> for encryption.</p>
|
||||
<h3 id="compatibility">Compatibility</h3>
|
||||
<p><code>Nyaruko</code> has these environment dependencies:</p>
|
||||
<ul>
|
||||
@@ -260,11 +246,11 @@ encryption.</p>
|
||||
</ul>
|
||||
<p>Output code has the same dependencies, with the additional
|
||||
requirement that the compiler must support arbitrarily long string
|
||||
literals. Maximum input size that can be encoded while still producing
|
||||
standard-compliant output is ~276 bytes for C89, and ~3168 bytes for
|
||||
C99.</p>
|
||||
<p><code>Nyaruko</code> has been to verified to work with these
|
||||
compiler/OS combinations:</p>
|
||||
literals. Maximum input size that can be encoded while still
|
||||
producing standard-compliant output is ~276 bytes for C89, and ~3168
|
||||
bytes for C99.</p>
|
||||
<p><code>Nyaruko</code> has been to verified to work with these compiler/OS
|
||||
combinations:</p>
|
||||
<ul>
|
||||
<li>gcc 4.4.5 on Linux (32bit and 64bit)</li>
|
||||
<li>clang 3.1 on Windows (Cygwin)</li>
|
||||
@@ -273,70 +259,44 @@ compiler/OS combinations:</p>
|
||||
<li>gcc 4.3.5 on JSLinux</li>
|
||||
<li>tcc 0.9.25 on JSLinux</li>
|
||||
</ul>
|
||||
<p>Note that on MingW, <code>stdin</code> and <code>stdout</code> are
|
||||
not opened in binary mode by default, this means <code>Nyaruko</code>
|
||||
may not faithfully encode files on MingW.</p>
|
||||
<p>Note that on MingW, <code>stdin</code> and <code>stdout</code> are not opened in binary mode by
|
||||
default, this means <code>Nyaruko</code> may not faithfully encode files on MingW.</p>
|
||||
<h3 id="extra-files">Extra files</h3>
|
||||
<p><a href="spoiler.html">spoiler.html</a> - Contains full recording of
|
||||
how the code went from blank state to an obfuscated program, gzipped to
|
||||
fit under 1MB. Requires JavaScript.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
|
||||
License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
|
||||
Reserved. You are free to share and adapt this file under the terms of
|
||||
this license:</p>
|
||||
<p><a href="spoiler.html">spoiler.html</a> - Contains full recording of how the code went from
|
||||
blank state to an obfuscated program, gzipped to fit under 1MB. Requires
|
||||
JavaScript.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0 License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
|
||||
You are free to share and adapt this file under the terms of this license:</p>
|
||||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||||
<p>For more information, see:
|
||||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
<h1 id="inventory-for-2012omoikane"><a name="inventory"></a>Inventory
|
||||
for 2012/omoikane</h1>
|
||||
<h1 id="inventory-for-2012omoikane"><a name="inventory"></a>Inventory for 2012/omoikane</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/Makefile">Makefile</a>
|
||||
- entry Makefile</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.alt.c">omoikane.alt.c</a>
|
||||
- alternative source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.alt2.c">omoikane.alt2.c</a>
|
||||
- alternate alternative source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.orig.c">omoikane.orig.c</a>
|
||||
- original source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.c">omoikane.c</a>
|
||||
- source to generate random data</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.alt.sh">try.alt.sh</a>
|
||||
- how to run alternative code</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.sh">try.sh</a>
|
||||
- how to run</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.alt.c">omoikane.alt.c</a> - alternative source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.alt2.c">omoikane.alt2.c</a> - alternate alternative source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.orig.c">omoikane.orig.c</a> - original source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/omoikane.c">omoikane.c</a> - source to generate random data</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.alt.sh">try.alt.sh</a> - how to run alternative code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.sh">try.sh</a> - how to run</li>
|
||||
<li><a href="spoiler.html">spoiler.html</a> - SPOILER WARNING</li>
|
||||
<li><a href="2012_omoikane.tar.bz2">2012_omoikane.tar.bz2</a> - download
|
||||
entry source</li>
|
||||
<li><a href="2012_omoikane.tar.bz2">2012_omoikane.tar.bz2</a> - download entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.gitignore">.gitignore</a>
|
||||
- list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href=".path">.path</a> - directory path from top directory</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/README.md">README.md</a> - markdown source for index.html</li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
Reference in new issue
Block a user