rust

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
rust [2024/05/16 16:00] – [Web Framework] ともやんrust [2024/06/19 00:34] (現在) – [クレート] ともやん
行 787: 行 787:
 <WRAP color_command><html><pre> <WRAP color_command><html><pre>
 <b class=GRN>$</b> <b class=HIY>mkdir</b> <b class=HIK>-p</b> rs_projects/hello_world <b class=GRN>$</b> <b class=HIY>mkdir</b> <b class=HIK>-p</b> rs_projects/hello_world
-</pre></html></WRAP> 
-<WRAP color_result><html><pre> 
 </pre></html></WRAP> </pre></html></WRAP>
 <WRAP color_command><html><pre> <WRAP color_command><html><pre>
 <b class=GRN>$</b> <b class=HIY>cd</b> rs_projects/hello_world <b class=GRN>$</b> <b class=HIY>cd</b> rs_projects/hello_world
-</pre></html></WRAP> 
-<WRAP color_result><html><pre> 
 </pre></html></WRAP> </pre></html></WRAP>
 <WRAP color_command><html><pre> <WRAP color_command><html><pre>
-<b class=GRN>$</b> <b class=HIY>cat</b> << EOF main.rs+<b class=GRN>$</b> <b class=HIY>cat</b> &lt;&lt; EOF &gt; main.rs
 <b class=GRN>fn</b> <b class=HIB>main</b>() { <b class=GRN>fn</b> <b class=HIB>main</b>() {
     <b class=HIC>// ようこそ、はるおわ〜るどへ!</b>     <b class=HIC>// ようこそ、はるおわ〜るどへ!</b>
行 802: 行 798:
 } }
 EOF EOF
-</pre></html></WRAP> 
-<WRAP color_result><html><pre> 
 </pre></html></WRAP> </pre></html></WRAP>
 <WRAP color_command><html><pre> <WRAP color_command><html><pre>
行 957: 行 951:
  
 <b>info: </b>cleaning up downloads &amp; tmp directories <b>info: </b>cleaning up downloads &amp; tmp directories
 +</pre></html></WRAP>
 +</WRAP>
 +
 +===== Cargo 拡張機能 =====
 +
 +==== cargo-cache ====
 +公式: [[https://github.com/matthiaskrgr/cargo-cache|matthiaskrgr/cargo-cache: manage cargo cache (${CARGO_HOME}, ~/.cargo/), print sizes of dirs and remove dirs selectively]]\\
 +<WRAP color_term>
 +<WRAP color_command><html><pre>
 +<font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> cache
 +</pre></html></WRAP>
 +<WRAP color_result><html><pre>
 +Cargo cache &apos;/home/tomoyan/.cargo&apos;:
 +
 +Total:                               4.33 GB
 +  55 installed binaries:           598.06 MB
 +  Registry:                          3.06 GB
 +    2 registry indices:              1.05 GB
 +    2350 crate archives:           327.96 MB
 +    2350 crate source checkouts:     1.68 GB
 +  Git db:                          674.12 MB
 +    8 bare git repos:              111.93 MB
 +    12 git repo checkouts:         562.19 MB
 +</pre></html></WRAP>
 +</WRAP>
 +
 +=== ヘルプ ===
 +<WRAP color_term>
 +<WRAP color_command><html><pre>
 +<font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> cache <font color="#A347BA">--help</font>
 +</pre></html></WRAP>
 +<WRAP color_result_hlong><html><pre>
 +<font color="#26A269">cargo-cache</font> 0.8.3
 +matthiaskrgr
 +Manage cargo cache
 +
 +<font color="#A2734C">USAGE:</font>
 +    cargo cache [OPTIONS] [SUBCOMMAND]
 +
 +<font color="#A2734C">OPTIONS:</font>
 +    <font color="#26A269">-a</font>, <font color="#26A269">--autoclean</font>                        Removes crate source checkouts and git repo checkouts
 +    <font color="#26A269">-e</font>, <font color="#26A269">--autoclean-expensive</font>              As --autoclean, but also recompresses git repositories
 +    <font color="#26A269">-f</font>, <font color="#26A269">--fsck</font>                             Fsck git repositories
 +    <font color="#26A269">-g</font>, <font color="#26A269">--gc</font>                               Recompress git repositories (may take some time)
 +    <font color="#26A269">-h</font>, <font color="#26A269">--help</font>                             Print help information
 +    <font color="#26A269">-i</font>, <font color="#26A269">--info</font>                             Print information cache directories, what they are for and what can
 +                                           be safely deleted
 +    <font color="#26A269">-k</font>, <font color="#26A269">--keep-duplicate-crates</font> <font color="#26A269">&lt;N&gt;</font>        Remove all but N versions of crate in the source archives directory
 +    <font color="#26A269">-l</font>, <font color="#26A269">--list-dirs</font>                        List all found directory paths
 +    <font color="#26A269">-n</font>, <font color="#26A269">--dry-run</font>                          Don&apos;t remove anything, just pretend
 +    <font color="#26A269">-o</font>, <font color="#26A269">--remove-if-older-than</font> <font color="#26A269">&lt;date&gt;</font>      Removes items older than specified date: YYYY.MM.DD or HH:MM:SS
 +    <font color="#26A269">-r</font>, <font color="#26A269">--remove-dir</font> <font color="#26A269">&lt;dir1,dir2,dir3&gt;</font>      Remove directories, accepted values: all,git-db,git-repos,
 +                                           registry-sources,registry-crate-cache,registry-index,registry
 +    <font color="#26A269">-t</font>, <font color="#26A269">--top-cache-items</font> <font color="#26A269">&lt;N&gt;</font>              List the top N items taking most space in the cache
 +    <font color="#26A269">-V</font>, <font color="#26A269">--version</font>                          Print version information
 +    <font color="#26A269">-y</font>, <font color="#26A269">--remove-if-younger-than</font> <font color="#26A269">&lt;date&gt;</font>    Removes items younger than the specified date: YYYY.MM.DD or
 +                                           HH:MM:SS
 +
 +<font color="#A2734C">SUBCOMMANDS:</font>
 +    <font color="#26A269">clean-unref</font>    remove crates that are not referenced in a Cargo.toml from the cache
 +    <font color="#26A269">help</font>           Print this message or the help of the given subcommand(s)
 +    <font color="#26A269">l</font>              check local build cache (target) of a rust project
 +    <font color="#26A269">local</font>          check local build cache (target) of a rust project
 +    <font color="#26A269">q</font>              run a query
 +    <font color="#26A269">query</font>          run a query
 +    <font color="#26A269">r</font>              query each package registry separately
 +    <font color="#26A269">registry</font>       query each package registry separately
 +    <font color="#26A269">sc</font>             gather stats on a local sccache cache
 +    <font color="#26A269">sccache</font>        gather stats on a local sccache cache
 +    <font color="#26A269">toolchain</font>      print stats on installed toolchains
 +    <font color="#26A269">trim</font>           trim old items from the cache until maximum cache size limit is reached
 +    <font color="#26A269">verify</font>         verify crate sources
 +</pre></html></WRAP>
 +</WRAP>
 +
 +=== インストール ===
 +<WRAP color_term>
 +<WRAP color_command><html><pre>
 +<font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> install cargo-cache
 +</pre></html></WRAP>
 +<WRAP color_result_hlong><html><pre>
 +<font color="#26A269"><b>    Updating</b></font> crates.io index
 +<font color="#26A269"><b>  Downloaded</b></font> cargo-cache v0.8.3
 +<font color="#26A269"><b>  Downloaded</b></font> 1 crate (243.9 KB) in 0.36s
 +<font color="#26A269"><b>  Installing</b></font> cargo-cache v0.8.3
 +<font color="#26A269"><b>    Updating</b></font> crates.io index
 +<font color="#26A269"><b>  Downloaded</b></font> adler v1.0.2
 +<font color="#26A269"><b>  Downloaded</b></font> bitflags v1.3.2
 +<font color="#26A269"><b>  Downloaded</b></font> autocfg v1.3.0
 +<font color="#26A269"><b>  Downloaded</b></font> camino v1.1.7
 +<font color="#26A269"><b>  Downloaded</b></font> bitflags v2.5.0
 +<font color="#26A269"><b>  Downloaded</b></font> atty v0.2.14
 +<font color="#26A269"><b>  Downloaded</b></font> cfg-if v1.0.0
 +<font color="#26A269"><b>  Downloaded</b></font> cargo-platform v0.1.8
 +<font color="#26A269"><b>  Downloaded</b></font> rustc_tools_util v0.2.1
 +<font color="#26A269"><b>  Downloaded</b></font> tinyvec_macros v0.1.1
 +<font color="#26A269"><b>  Downloaded</b></font> clap_lex v0.2.4
 +<font color="#26A269"><b>  Downloaded</b></font> dirs-next v2.0.0
 +<font color="#26A269"><b>  Downloaded</b></font> cargo_metadata v0.15.4
 +<font color="#26A269"><b>  Downloaded</b></font> filetime v0.2.23
 +<font color="#26A269"><b>  Downloaded</b></font> dirs-sys-next v0.1.2
 +<font color="#26A269"><b>  Downloaded</b></font> itoa v1.0.11
 +<font color="#26A269"><b>  Downloaded</b></font> humansize v1.1.1
 +<font color="#26A269"><b>  Downloaded</b></font> home v0.5.9
 +<font color="#26A269"><b>  Downloaded</b></font> form_urlencoded v1.2.1
 +<font color="#26A269"><b>  Downloaded</b></font> pkg-config v0.3.30
 +<font color="#26A269"><b>  Downloaded</b></font> either v1.12.0
 +<font color="#26A269"><b>  Downloaded</b></font> percent-encoding v2.3.1
 +<font color="#26A269"><b>  Downloaded</b></font> errno v0.3.9
 +<font color="#26A269"><b>  Downloaded</b></font> remove_dir_all v0.7.0
 +<font color="#26A269"><b>  Downloaded</b></font> strsim v0.10.0
 +<font color="#26A269"><b>  Downloaded</b></font> crossbeam-deque v0.8.5
 +<font color="#26A269"><b>  Downloaded</b></font> termcolor v1.4.1
 +<font color="#26A269"><b>  Downloaded</b></font> xattr v1.3.1
 +<font color="#26A269"><b>  Downloaded</b></font> walkdir v2.5.0
 +<font color="#26A269"><b>  Downloaded</b></font> thiserror-impl v1.0.61
 +<font color="#26A269"><b>  Downloaded</b></font> terminal_size v0.2.6
 +<font color="#26A269"><b>  Downloaded</b></font> crc32fast v1.4.2
 +<font color="#26A269"><b>  Downloaded</b></font> io-lifetimes v1.0.11
 +<font color="#26A269"><b>  Downloaded</b></font> same-file v1.0.6
 +<font color="#26A269"><b>  Downloaded</b></font> jobserver v0.1.31
 +<font color="#26A269"><b>  Downloaded</b></font> os_str_bytes v6.6.1
 +<font color="#26A269"><b>  Downloaded</b></font> once_cell v1.19.0
 +<font color="#26A269"><b>  Downloaded</b></font> semver v1.0.23
 +<font color="#26A269"><b>  Downloaded</b></font> crossbeam-epoch v0.9.18
 +<font color="#26A269"><b>  Downloaded</b></font> iana-time-zone v0.1.60
 +<font color="#26A269"><b>  Downloaded</b></font> miniz_oxide v0.7.3
 +<font color="#26A269"><b>  Downloaded</b></font> proc-macro2 v1.0.84
 +<font color="#26A269"><b>  Downloaded</b></font> thiserror v1.0.61
 +<font color="#26A269"><b>  Downloaded</b></font> serde_derive v1.0.203
 +<font color="#26A269"><b>  Downloaded</b></font> ryu v1.0.18
 +<font color="#26A269"><b>  Downloaded</b></font> tinyvec v1.6.0
 +<font color="#26A269"><b>  Downloaded</b></font> unicode-ident v1.0.12
 +<font color="#26A269"><b>  Downloaded</b></font> textwrap v0.16.1
 +<font color="#26A269"><b>  Downloaded</b></font> crossbeam-utils v0.8.20
 +<font color="#26A269"><b>  Downloaded</b></font> tar v0.4.40
 +<font color="#26A269"><b>  Downloaded</b></font> aho-corasick v1.1.3
 +<font color="#26A269"><b>  Downloaded</b></font> quote v1.0.36
 +<font color="#26A269"><b>  Downloaded</b></font> rayon-core v1.12.1
 +<font color="#26A269"><b>  Downloaded</b></font> num-traits v0.2.19
 +<font color="#26A269"><b>  Downloaded</b></font> unicode-bidi v0.3.15
 +<font color="#26A269"><b>  Downloaded</b></font> log v0.4.21
 +<font color="#26A269"><b>  Downloaded</b></font> cc v1.0.98
 +<font color="#26A269"><b>  Downloaded</b></font> flate2 v1.0.30
 +<font color="#26A269"><b>  Downloaded</b></font> indexmap v1.9.3
 +<font color="#26A269"><b>  Downloaded</b></font> serde v1.0.203
 +<font color="#26A269"><b>  Downloaded</b></font> url v2.5.0
 +<font color="#26A269"><b>  Downloaded</b></font> memchr v2.7.2
 +<font color="#26A269"><b>  Downloaded</b></font> hashbrown v0.12.3
 +<font color="#26A269"><b>  Downloaded</b></font> unicode-normalization v0.1.23
 +<font color="#26A269"><b>  Downloaded</b></font> serde_json v1.0.117
 +<font color="#26A269"><b>  Downloaded</b></font> rayon v1.10.0
 +<font color="#26A269"><b>  Downloaded</b></font> git2 v0.14.4
 +<font color="#26A269"><b>  Downloaded</b></font> clap v3.2.25
 +<font color="#26A269"><b>  Downloaded</b></font> vcpkg v0.2.15
 +<font color="#26A269"><b>  Downloaded</b></font> syn v2.0.66
 +<font color="#26A269"><b>  Downloaded</b></font> idna v0.5.0
 +<font color="#26A269"><b>  Downloaded</b></font> rustix v0.38.34
 +<font color="#26A269"><b>  Downloaded</b></font> rustix v0.37.27
 +<font color="#26A269"><b>  Downloaded</b></font> regex-automata v0.4.6
 +<font color="#26A269"><b>  Downloaded</b></font> libz-sys v1.1.18
 +<font color="#26A269"><b>  Downloaded</b></font> linux-raw-sys v0.3.8
 +<font color="#26A269"><b>  Downloaded</b></font> libc v0.2.155
 +<font color="#26A269"><b>  Downloaded</b></font> regex-syntax v0.8.3
 +<font color="#26A269"><b>  Downloaded</b></font> regex v1.10.4
 +<font color="#26A269"><b>  Downloaded</b></font> libgit2-sys v0.13.5+1.4.5
 +<font color="#26A269"><b>  Downloaded</b></font> linux-raw-sys v0.4.14
 +<font color="#26A269"><b>  Downloaded</b></font> chrono v0.4.38
 +<font color="#26A269"><b>  Downloaded</b></font> 82 crates (12.1 MB) in 1.78s (largest was `linux-raw-sys` at 1.8 MB)
 +<font color="#26A269"><b>   Compiling</b></font> libc v0.2.155
 +<font color="#26A269"><b>   Compiling</b></font> proc-macro2 v1.0.84
 +<font color="#26A269"><b>   Compiling</b></font> unicode-ident v1.0.12
 +<font color="#26A269"><b>   Compiling</b></font> quote v1.0.36
 +<font color="#26A269"><b>   Compiling</b></font> syn v2.0.66
 +<font color="#26A269"><b>   Compiling</b></font> jobserver v0.1.31
 +<font color="#26A269"><b>   Compiling</b></font> once_cell v1.19.0
 +<font color="#26A269"><b>   Compiling</b></font> autocfg v1.3.0
 +<font color="#26A269"><b>   Compiling</b></font> cc v1.0.98
 +<font color="#26A269"><b>   Compiling</b></font> serde v1.0.203
 +<font color="#26A269"><b>   Compiling</b></font> pkg-config v0.3.30
 +<font color="#26A269"><b>   Compiling</b></font> serde_derive v1.0.203
 +<font color="#26A269"><b>   Compiling</b></font> crossbeam-utils v0.8.20
 +<font color="#26A269"><b>   Compiling</b></font> io-lifetimes v1.0.11
 +<font color="#26A269"><b>   Compiling</b></font> vcpkg v0.2.15
 +<font color="#26A269"><b>   Compiling</b></font> libz-sys v1.1.18
 +<font color="#26A269"><b>   Compiling</b></font> cfg-if v1.0.0
 +<font color="#26A269"><b>   Compiling</b></font> bitflags v1.3.2
 +<font color="#26A269"><b>   Compiling</b></font> tinyvec_macros v0.1.1
 +<font color="#26A269"><b>   Compiling</b></font> rustix v0.37.27
 +<font color="#26A269"><b>   Compiling</b></font> tinyvec v1.6.0
 +<font color="#26A269"><b>   Compiling</b></font> linux-raw-sys v0.3.8
 +<font color="#26A269"><b>   Compiling</b></font> rustix v0.38.34
 +<font color="#26A269"><b>   Compiling</b></font> crossbeam-epoch v0.9.18
 +<font color="#26A269"><b>   Compiling</b></font> unicode-normalization v0.1.23
 +<font color="#26A269"><b>   Compiling</b></font> libgit2-sys v0.13.5+1.4.5
 +<font color="#26A269"><b>   Compiling</b></font> num-traits v0.2.19
 +<font color="#26A269"><b>   Compiling</b></font> indexmap v1.9.3
 +<font color="#26A269"><b>   Compiling</b></font> thiserror v1.0.61
 +<font color="#26A269"><b>   Compiling</b></font> camino v1.1.7
 +<font color="#26A269"><b>   Compiling</b></font> semver v1.0.23
 +<font color="#26A269"><b>   Compiling</b></font> percent-encoding v2.3.1
 +<font color="#26A269"><b>   Compiling</b></font> serde_json v1.0.117
 +<font color="#26A269"><b>   Compiling</b></font> linux-raw-sys v0.4.14
 +<font color="#26A269"><b>   Compiling</b></font> unicode-bidi v0.3.15
 +<font color="#26A269"><b>   Compiling</b></font> memchr v2.7.2
 +<font color="#26A269"><b>   Compiling</b></font> rayon-core v1.12.1
 +<font color="#26A269"><b>   Compiling</b></font> bitflags v2.5.0
 +<font color="#26A269"><b>   Compiling</b></font> aho-corasick v1.1.3
 +<font color="#26A269"><b>   Compiling</b></font> idna v0.5.0
 +<font color="#26A269"><b>   Compiling</b></font> form_urlencoded v1.2.1
 +<font color="#26A269"><b>   Compiling</b></font> terminal_size v0.2.6
 +<font color="#26A269"><b>   Compiling</b></font> crossbeam-deque v0.8.5
 +<font color="#26A269"><b>   Compiling</b></font> thiserror-impl v1.0.61
 +<font color="#26A269"><b>   Compiling</b></font> rustc_tools_util v0.2.1
 +<font color="#26A269"><b>   Compiling</b></font> ryu v1.0.18
 +<font color="#26A269"><b>   Compiling</b></font> hashbrown v0.12.3
 +<font color="#26A269"><b>   Compiling</b></font> itoa v1.0.11
 +<font color="#26A269"><b>   Compiling</b></font> regex-syntax v0.8.3
 +<font color="#26A269"><b>   Compiling</b></font> os_str_bytes v6.6.1
 +<font color="#26A269"><b>   Compiling</b></font> adler v1.0.2
 +<font color="#26A269"><b>   Compiling</b></font> miniz_oxide v0.7.3
 +<font color="#26A269"><b>   Compiling</b></font> clap_lex v0.2.4
 +<font color="#26A269"><b>   Compiling</b></font> regex-automata v0.4.6
 +<font color="#26A269"><b>   Compiling</b></font> cargo-cache v0.8.3
 +<font color="#26A269"><b>   Compiling</b></font> textwrap v0.16.1
 +<font color="#26A269"><b>   Compiling</b></font> url v2.5.0
 +<font color="#26A269"><b>   Compiling</b></font> xattr v1.3.1
 +<font color="#26A269"><b>   Compiling</b></font> cargo-platform v0.1.8
 +<font color="#26A269"><b>   Compiling</b></font> crc32fast v1.4.2
 +<font color="#26A269"><b>   Compiling</b></font> filetime v0.2.23
 +<font color="#26A269"><b>   Compiling</b></font> dirs-sys-next v0.1.2
 +<font color="#26A269"><b>   Compiling</b></font> atty v0.2.14
 +<font color="#26A269"><b>   Compiling</b></font> same-file v1.0.6
 +<font color="#26A269"><b>   Compiling</b></font> termcolor v1.4.1
 +<font color="#26A269"><b>   Compiling</b></font> iana-time-zone v0.1.60
 +<font color="#26A269"><b>   Compiling</b></font> log v0.4.21
 +<font color="#26A269"><b>   Compiling</b></font> either v1.12.0
 +<font color="#26A269"><b>   Compiling</b></font> strsim v0.10.0
 +<font color="#26A269"><b>   Compiling</b></font> clap v3.2.25
 +<font color="#26A269"><b>   Compiling</b></font> rayon v1.10.0
 +<font color="#26A269"><b>   Compiling</b></font> chrono v0.4.38
 +<font color="#26A269"><b>   Compiling</b></font> walkdir v2.5.0
 +<font color="#26A269"><b>   Compiling</b></font> dirs-next v2.0.0
 +<font color="#26A269"><b>   Compiling</b></font> tar v0.4.40
 +<font color="#26A269"><b>   Compiling</b></font> flate2 v1.0.30
 +<font color="#26A269"><b>   Compiling</b></font> cargo_metadata v0.15.4
 +<font color="#26A269"><b>   Compiling</b></font> regex v1.10.4
 +<font color="#26A269"><b>   Compiling</b></font> remove_dir_all v0.7.0
 +<font color="#26A269"><b>   Compiling</b></font> home v0.5.9
 +<font color="#26A269"><b>   Compiling</b></font> humansize v1.1.1
 +<font color="#26A269"><b>   Compiling</b></font> git2 v0.14.4
 +<font color="#26A269"><b>    Finished</b></font> `release` profile [optimized] target(s) in 8m 28s
 +<font color="#26A269"><b>  Installing</b></font> /home/tomoyan/.cargo/bin/cargo-cache
 +<font color="#26A269"><b>   Installed</b></font> package `cargo-cache v0.8.3` (executable `cargo-cache`)
 </pre></html></WRAP> </pre></html></WRAP>
 </WRAP> </WRAP>
行 1554: 行 1802:
 info: rustup is uninstalled info: rustup is uninstalled
 </pre></html></WRAP> </pre></html></WRAP>
 +</WRAP>
 +
 +===== クレート =====
 +<html><style>
 +  .wrap_crates_list div.wrap_color_term {
 +    margin: 0;
 +    padding: .2em;
 +  }
 +  .wrap_crates_list .wrap_color_command pre {
 +    min-width: unset;
 +  }
 +  .wrap_crates_list .col0,
 +  .wrap_crates_list .col1 pre {
 +    white-space: nowrap;
 +  }
 +</style></html>
 +<WRAP mintbl crates_list>
 +^ ドキュメント\\ リポジトリ  ^ クレート追加\\ サンプル (<wrap em>examples</wrap> ^ 説明  ^
 +| [[https://docs.rs/clap|clap - Rust]]\\ [[git>clap-rs/clap|clap]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add clap <font color="#A347BA">-F</font><font color="#999999"> derive</font></pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/clap-rs/clap.git</pre></html></WRAP></WRAP>  | Command Line Argument Parser for Rust  |
 +| [[https://docs.rs/walkdir|walkdir - Rust]]\\ [[git>BurntSushi/walkdir|walkdir]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add walkdir</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/BurntSushi/walkdir.git</pre></html></WRAP></WRAP>  | Rust library for walking directories recursively.  |
 +| [[https://docs.rs/dotenv|dotenv - Rust]]\\ [[git>dotenv-rs/dotenv|rust-dotenv]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add dotenv</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/dotenv-rs/dotenv.git</pre></html></WRAP></WRAP>  | It loads environment variables from a .env file.  |
 +| [[https://docs.rs/colored|colored - Rust]]\\ [[git>mackwic/colored|Colored]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add colored</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/colored-rs/colored.git</pre></html></WRAP></WRAP>  | colored: (Rust) Coloring terminal so simple you already know how to do it !.  |
 +| [[https://docs.rs/diesel|diesel - Rust]]\\ [[git>diesel-rs/diesel|diesel ORM]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add diesel</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/diesel-rs/diesel.git</pre></html></WRAP></WRAP>  | diesel: A safe, extensible ORM and Query Builder for Rust.  |
 +| [[https://docs.rs/env_logger|env_logger - Rust]]\\ [[git>rust-cli/env_logger|env_logger]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add env_logger</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/rust-cli/env_logger.git</pre></html></WRAP></WRAP>  | rust-cli/env_logger: A logging implementation for `log` which is configured via an environment variable.  |
 +| [[https://docs.rs/exif|exif - Rust]]\\ [[glb>dcuddeback/exif|exif]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add exif</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://gitlab.com/dcuddeback/exif.git</pre></html></WRAP></WRAP>  | Rust wrapper for libexif.  |
 +| [[https://docs.rs/numfmt|numfmt - Rust]]\\ [[git>kurtlawrence/numfmt|numfmt]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add numfmt</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/kurtlawrence/numfmt.git</pre></html></WRAP></WRAP>  | kurtlawrence/numfmt: Fast and friendly Rust number formatting  |
 +| [[https://docs.rs/pathdiff|pathdiff - Rust]]\\ [[git>Manishearth/pathdiff|pathdiff]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add pathdiff</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/Manishearth/pathdiff.git</pre></html></WRAP></WRAP>  | Manishearth/pathdiff  |
 +| [[https://docs.rs/spinners|spinners - Rust]]\\ [[git>fgribreau/spinners|spinners]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add spinners</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/FGRibreau/spinners.git</pre></html></WRAP></WRAP>  | FGRibreau/spinners: 🛎 60+ Elegant terminal spinners for Rust  |
 +| [[https://docs.rs/substring|substring - Rust]]\\ [[git>Anders429/substring|substring]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add substring</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/Anders429/substring.git</pre></html></WRAP></WRAP>  | Anders429/substring: A substring method for string types.  |
 +| [[https://docs.rs/termion|termion - Rust]]\\ [[glbc>redox-os.org/redox-os/termion|termion]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add termion</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://gitlab.redox-os.org/redox-os/termion.git</pre></html></WRAP></WRAP>  | A bindless library for controlling terminals/TTY.  |
 +| [[https://docs.rs/axum|axum - Rust]]\\ [[git>tokio-rs/axum|axum]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add axum</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/tokio-rs/axum.git</pre></html></WRAP></WRAP>  | tokio-rs/axum: Ergonomic and modular web framework built with Tokio, Tower, and Hyper  |
 +| [[https://docs.rs/tera|tera - Rust]]\\ [[git>Keats/tera|tera]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add tera</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/Keats/tera.git</pre></html></WRAP></WRAP>  | Keats/tera: A template engine for Rust based on Jinja2/Django  |
 +| [[https://docs.rs/yew|yew - Rust]]\\ [[git>yewstack/yew|yew]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add yew</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/yewstack/yew.git</pre></html></WRAP></WRAP>  | yewstack/yew: Rust / Wasm framework for creating reliable and efficient web applications.  |
 +| [[https://docs.rs/lazy_static|lazy_static - Rust]]\\ [[git>rust-lang-nursery/lazy-static.rs|lazy_static]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add lazy_static</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/rust-lang-nursery/lazy-static.rs.git</pre></html></WRAP></WRAP>  | rust-lang-nursery/lazy-static.rs: A small macro for defining lazy evaluated static variables in Rust.  |
 +| [[https://docs.rs/tokio|tokio - Rust]]\\ [[git>tokio-rs/tokio|tokio]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add tokio</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/ratatui-org/ratatui.git</pre></html></WRAP></WRAP>  | tokio-rs/tokio: A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...  |
 +| [[https://docs.rs/ratatui|ratatui - Rust]]\\ [[git>ratatui-org/ratatui|ratatui]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add ratatui</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/ratatui-org/ratatui.git</pre></html></WRAP></WRAP>  | ratatui-org/ratatui: Rust library that's all about cooking up terminal user interfaces (TUIs) 👨‍🍳🐀  |
 +| [[https://docs.rs/crossterm|crossterm - Rust]]\\ [[git>crossterm-rs/crossterm|crossterm]]  | <WRAP color_term><WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">cargo</font> add crossterm</pre></html></WRAP>  <WRAP color_command><html><pre><font color="#0087FF"><b>$</b></font> <font color="#26A269">git</font> clone <font color="#A347BA">--depth</font> 1 https://github.com/crossterm-rs/crossterm.git</pre></html></WRAP></WRAP>  | crossterm-rs/crossterm: Cross platform terminal library rust  |
 </WRAP> </WRAP>
  
行 1999: 行 2284:
 [[https://langserver.org/|Langserver.org]]\\ [[https://langserver.org/|Langserver.org]]\\
  
-==== Web Framework ====+==== Application Frameworks ====
 [[https://trends.google.com/trends/explore?cat=31&date=2015-01-01%202023-09-07&q=Actix%20Web,Axum%20Rust,Rocket%20Rust,Gotham%20Rust,Tide%20Rust&hl=ja|Actix Web, Axum Rust, Rocket Rust, Gotham Rust, Tide Rust - 調べる - Google トレンド]]\\ [[https://trends.google.com/trends/explore?cat=31&date=2015-01-01%202023-09-07&q=Actix%20Web,Axum%20Rust,Rocket%20Rust,Gotham%20Rust,Tide%20Rust&hl=ja|Actix Web, Axum Rust, Rocket Rust, Gotham Rust, Tide Rust - 調べる - Google トレンド]]\\
-[[https://www.shuttle.rs/blog/2023/08/23/rust-web-framework-comparison|Best Rust Web Frameworks to Use in 2023]] [[gtr>https://www.shuttle.rs/blog/2023/08/23/rust-web-framework-comparison|翻訳]]\\+参考: [[https://www.shuttle.rs/blog/2023/08/23/rust-web-framework-comparison|Best Rust Web Frameworks to Use in 2023]] [[gtr>https://www.shuttle.rs/blog/2023/08/23/rust-web-framework-comparison|翻訳]]\\ 
 +  [[https://fettblog.eu/slides/microservices-with-rust-and-tokio/|Microservices with Rust and Tokio | Slides + Coverage]]\\
  
 以下は 2024/05/16 現在 [[https://www.shuttle.rs/|Shuttle - Build Backends Fast]] のテンプレートで選択できるフレームワークの一覧...🤔\\ 以下は 2024/05/16 現在 [[https://www.shuttle.rs/|Shuttle - Build Backends Fast]] のテンプレートで選択できるフレームワークの一覧...🤔\\
-[[https://actix.rs/|Actix]] 強力で高速な Web フレームワーク\\ +<html><style> 
-[[https://docs.rs/axum/|axum - Rust]] Tokio エコシステムのモジュラー Web フレームワーク\\ +  .wrap_rust-framework table .col0 { 
-[[https://bevyengine.org/|Bevy Engine]] WASM にコンパイルされるデータ駆動型ゲーム エンジン\\ +    width: 230px; 
-[[https://loco.rs/|Loco | Loco]] バッテリー付属の Axum に基づく Web フレームワーク\\ +  } 
-[[https://docs.rs/poem/|poem - Rust]] フル機能を備えた使いやすい Web フレームワーク\\ +</style></html> 
-[[https://docs.rs/poise/|poise - Rust]] 優れたスラッシュコマンドサポートを備えた Discord Bot フレームワーク\\ +<WRAP mintbl rust-framework> 
-[[https://rocket.rs/|Rocket - Simple, Fast, Type-Safe Web Framework for Rust]] シンプルで使いやすいWebフレームワーク\\ +[[https://actix.rs/|Actix]]  強力で高速な Web フレームワーク  | 
-[[https://salvo.rs/|Home | Salvo]] フル機能を備えた使いやすい Web フレームワーク\\ +[[https://docs.rs/axum/|axum - Rust]]  Tokio エコシステムのモジュラー Web フレームワーク  | 
-[[https://docs.rs/serenity/|serenity - Rust]] Discordボットフレームワーク\\ +[[https://bevyengine.org/|Bevy Engine]]  WASM にコンパイルされるデータ駆動型ゲーム エンジン  | 
-[[https://docs.rs/thruster/|thruster - Rust]] Web フレームワーク\\ +[[https://loco.rs/|Loco | Loco]]  バッテリー付属の Axum に基づく Web フレームワーク  | 
-[[https://docs.rs/tide/|tide - Rust]] Web フレームワーク\\ +[[https://docs.rs/poem/|poem - Rust]]  フル機能を備えた使いやすい Web フレームワーク  | 
-[[https://docs.rs/tower/|tower - Rust]] モジュラーサービスライブラリ\\ +[[https://docs.rs/poise/|poise - Rust]]  優れたスラッシュコマンドサポートを備えた Discord Bot フレームワーク  | 
-[[https://docs.rs/warp/|warp - Rust]] - Web フレームワーク\\+[[https://rocket.rs/|Rocket - Simple, Fast, Type-Safe Web Framework for Rust]]  シンプルで使いやすいWebフレームワーク  | 
 +[[https://salvo.rs/|Home | Salvo]]  フル機能を備えた使いやすい Web フレームワーク  | 
 +[[https://docs.rs/serenity/|serenity - Rust]]  Discordボットフレームワーク  | 
 +[[https://docs.rs/thruster/|thruster - Rust]]  Web フレームワーク  | 
 +[[https://docs.rs/tide/|tide - Rust]]  Web フレームワーク  | 
 +[[https://docs.rs/tower/|tower - Rust]]  モジュラーサービスライブラリ  | 
 +[[https://docs.rs/warp/|warp - Rust]]  | Web フレームワーク 
 +</WRAP> 
 +[[git>tokio-rs/axum/blob/main/ECOSYSTEM.md|axum/ECOSYSTEM.md at main · tokio-rs/axum]]\\ 
 + 
 +=== テンプレートエンジン === 
 +[[https://keats.github.io/tera/|Tera - Inspired by Jinja2 and Django templates]]\\ 
 +[[https://docs.rs/handlebars/|handlebars-rust]]\\ 
 +[[https://docs.rs/minijinja/|MiniJinja]]\\ 
 + 
 +=== Wasm Web アプリケーション フレームワーク === 
 +Rust / Wasm クライアント Web アプリケーション フレームワーク\\ 
 +[[https://yew.rs/|Yew]]\\ 
 + 
 +=== 非同期ランタイム === 
 +[[https://tokio.rs/|Tokio - An asynchronous Rust runtime]]\\ 
 +Rust 用の WebAssembly (WASM) Web アプリケーション バンドラー\\ 
 +[[https://trunkrs.dev/|Trunk | Build, bundle & ship your Rust WASM application to the web]]\\ 
 + 
 +=== TUI ライブラリ === 
 +ratatui: ターミナル ユーザー インターフェイス (TUI) を作成するための Rust ライブラリ 👨‍🍳🐀\\ 
 +[[https://ratatui.rs/|Ratatui | Ratatui]]\\ 
 +[[git>ratatui-org/ratatui|ratatui-org/ratatui: Rust library that's all about cooking up terminal user interfaces (TUIs) 👨‍🍳🐀]]\\ 
 + 
 +=== GUI ライブラリ === 
 +Rust 用のエレガントな GUI ライブラリ\\ 
 +[[https://dioxuslabs.com/|Dioxus | An elegant GUI library for Rust]]\\ 
 + 
 +[[.rust:axum|Axum]]\\ 
 + 
 +==== ORM - Object Relational Mapper ==== 
 +参考: [[https://www.shuttle.rs/blog/2024/01/16/best-orm-rust|A Guide to Rust ORMs in 2024]] [[gtr>https://www.shuttle.rs/blog/2024/01/16/best-orm-rust|翻訳]]\\ 
 + 
 +=== SeaORM === 
 +公式: [[https://www.sea-ql.org/SeaORM/|SeaORM 🐚 An async & dynamic ORM for Rust]]\\ 
 +ソースコード: [[git>SeaQL/sea-orm|SeaQL/sea-orm: 🐚 An async & dynamic ORM for Rust]]\\ 
 + 
 +=== Diesel === 
 +公式: [[https://diesel.rs/|Diesel is a Safe, Extensible ORM and Query Builder for Rust]]\\ 
 +ソースコード: [[git>diesel-rs/diesel|diesel-rs/diesel: A safe, extensible ORM and Query Builder for Rust]]\\ 
 + 
 +[[.rust:diesel|Diesel]]\\
  
 ==== Web ベースの Rust シミュレーター ==== ==== Web ベースの Rust シミュレーター ====
行 2506: 行 2838:
 </pre></html></WRAP> </pre></html></WRAP>
 </WRAP> </WRAP>
 +
 +===== 実装方法に迷ったら... =====
 +[[https://www.oreilly.com/library/view/command-line-rust/9781098109424/|Command-Line Rust [Book]]]\\
 +[[git>kyclark/command-line-rust|kyclark/command-line-rust: Code for Command-Line Rust (O'Reilly, 2022, ISBN 9781098109417)]]\\
 +
 +[[https://www.oreilly.com/library/view/programming-rust/9781491927274/|Programming Rust [Book]]]\\
 +[[git>ProgrammingRust|Programming Rust]]\\
 +
 +[[https://www.manning.com/books/rust-in-action|Rust in Action]]\\
 +[[git>rust-in-action/code|rust-in-action/code: Source code for the book Rust in Action]]\\
  
 ===== トラブルシューティング ===== ===== トラブルシューティング =====
行 2732: 行 3074:
 [[dt>kgrech/6-things-you-can-do-with-the-cow-in-rust-4l55|6 things you can do with the Cow 🐄 in Rust 🦀 - DEV Community]] [[gtr>https://dev.to/kgrech/6-things-you-can-do-with-the-cow-in-rust-4l55|翻訳]]\\ [[dt>kgrech/6-things-you-can-do-with-the-cow-in-rust-4l55|6 things you can do with the Cow 🐄 in Rust 🦀 - DEV Community]] [[gtr>https://dev.to/kgrech/6-things-you-can-do-with-the-cow-in-rust-4l55|翻訳]]\\
 [[https://gihyo.jp/article/2023/07/monthly-python-2307|PythonとRustの融合:PyO3/maturinを使ったPythonバインディングの作成入門 | gihyo.jp]]\\ [[https://gihyo.jp/article/2023/07/monthly-python-2307|PythonとRustの融合:PyO3/maturinを使ったPythonバインディングの作成入門 | gihyo.jp]]\\
 +[[https://users.rust-lang.org/t/rust-official-ide/103656|Rust official IDE - community - The Rust Programming Language Forum]]\\
 +[[https://rapidrehita.health.nz/blog/extending-django-with-rust/|Rapid Rēhita | Extending Django with Rust]]\\
  
 ==== 付録 ==== ==== 付録 ====
 インストーラスクリプトの内容\\ インストーラスクリプトの内容\\
-<WRAP mincode><code+<WRAP color_term> 
-$ curl --proto '=https--tlsv1.2 -sSf https://sh.rustup.rs | cat +<WRAP color_command><html><pre
-</code></WRAP> +<font color="#0087FF"><b>$</b></font> <font color="#26A269">curl</font> <font color="#A347BA">--proto</font> <font color="#A2734C">&apos;=https&apos;</font> <font color="#A347BA">--tlsv1.2</font> <font color="#A347BA">-sSf</font> https://sh.rustup.rs <font color="#12488B"><b>|</b></font> <font color="#26A269">bat</font> <font color="#A347BA">-p</font> <font color="#A347BA">-l</font> sh <font color="#A347BA">--pager</font> never 
-<WRAP mincode_long><code bash+</pre></html></WRAP> 
-#!/bin/sh +<WRAP color_result_long><html><pre class=bat
-# shellcheck shell=dash+<font color="#7C7865">#!/bin/sh</font> 
 +<font color="#7C7865"># shellcheck shell=dash</font> 
 +<font color="#7C7865"># shellcheck disable=SC2039  # local is non-POSIX</font>
  
-# This is just a little script that can be downloaded from the internet to +<font color="#7C7865"># This is just a little script that can be downloaded from the internet to</font> 
-# install rustup. It just does platform detection, downloads the installer +<font color="#7C7865"># install rustup. It just does platform detection, downloads the installer</font> 
-# and runs it.+<font color="#7C7865"># and runs it.</font>
  
-# It runs on Unix shells like {a,ba,da,k,z}sh. It uses the common `local` +<font color="#7C7865"># It runs on Unix shells like {a,ba,da,k,z}sh. It uses the common `local`</font> 
-# extension. Note: Most shells limit `local` to 1 var per line, contra bash.+<font color="#7C7865"># extension. Note: Most shells limit `local` to 1 var per line, contra bash.</font>
  
-if [ "$KSH_VERSION" = 'Version JM 93t+ 2010-03-05' ]; then +<font color="#7C7865"># Some versions of ksh have no `local` keyword. Alias it to `typeset`, but</font> 
-    The version of ksh93 that ships with many illumos systems does not +<font color="#7C7865"># beware this makes variables global with f()-style function syntax in ksh93.</font> 
-    support the "localextension.  Print a message rather than fail in +<font color="#7C7865"># mksh has this alias by default.</font> 
-    # subtle ways later on: +<font color="#A6E22E">has_local</font><font color="#FFFFFF">() {</font> 
-    echo 'rustup does not work with this ksh93 version; please try bash!' >&2 +<font color="#FFFFFF">    </font><font color="#7C7865"># shellcheck disable=SC2034  # deliberately unused</font> 
-    exit 1 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _has_local</font
-fi+<font color="#FFFFFF">}</font>
  
 +<font color="#FFFFFF">has_local </font><font color="#BE84FF">2</font><font color="#F92672">&gt;</font><font color="#FFFFFF">/dev/null </font><font color="#F92672">||</font><font color="#FFFFFF"> </font><font color="#66D9EF">alias</font><font color="#FFFFFF"> </font><font color="#A6E22E">local</font><font color="#F92672">=</font><font color="#E6DB74">typeset</font>
  
-set -u+<font color="#A6E22E">is_zsh</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">ZSH_VERSION</font><font color="#F92672">-</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font> 
 +<font color="#FFFFFF">}</font>
  
-If RUSTUP_UPDATE_ROOT is unset or empty, default it. +<font color="#66D9EF">set</font><font color="#FFFFFF"> </font><font color="#FD971F">-u</font>
-RUSTUP_UPDATE_ROOT="${RUSTUP_UPDATE_ROOT:-https://static.rust-lang.org/rustup}"+
  
-#XXX: If you change anything hereplease make the same changes in setup_mode.rs +<font color="#7C7865"># If RUSTUP_UPDATE_ROOT is unset or emptydefault it.</font> 
-usage() { +<font color="#FFFFFF">RUSTUP_UPDATE_ROOT</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">RUSTUP_UPDATE_ROOT</font><font color="#F92672">:-</font><font color="#E6DB74">https://static.rust-lang.org/rustup}</font><font color="#FFFFFF">&quot;</font>
-    cat 1>&<<EOF +
-rustup-init 1.24.3 (c1c769109 2021-05-31) +
-The installer for rustup+
  
-USAGE+<font color="#7C7865"># NOTICEIf you change anything here, please make the same changes in setup_mode.rs</font> 
-    rustup-init [FLAGS] [OPTIONS]+<font color="#A6E22E">usage</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    cat </font><font color="#F92672">&lt;&lt;EOF</font> 
 +<font color="#E6DB74">rustup-init 1.27.1 (a8e4f5c64 2024-04-24)</font>
  
-FLAGS: +<font color="#E6DB74">The installer for rustup</font>
-    -v, --verbose           Enable verbose output +
-    -q, --quiet             Disable progress output +
-    -y                      Disable confirmation prompt. +
-        --no-modify-path    Don't configure the PATH environment variable +
-    -h, --help              Prints help information +
-    -V, --version           Prints version information+
  
-OPTIONS: +<font color="#E6DB74">Usage: rustup-init[EXE] [OPTIONS]</font>
-        --default-host <default-host             Choose a default host triple +
-        --default-toolchain <default-toolchain>    Choose a default toolchain to install +
-        --default-toolchain none                   Do not install any toolchains +
-        --profile [minimal|default|complete      Choose a profile +
-    -c, --component <components>...                Component name to also install +
-    -t, --target <targets>...                      Target name to also install +
-EOF +
-}+
  
-main() { +<font color="#E6DB74">Options:</font> 
-    downloader --check +<font color="#E6DB74">  -v, --verbose</font> 
-    need_cmd uname +<font color="#E6DB74">          Enable verbose output</font> 
-    need_cmd mktemp +<font color="#E6DB74">  -q, --quiet</font> 
-    need_cmd chmod +<font color="#E6DB74">          Disable progress output</font> 
-    need_cmd mkdir +<font color="#E6DB74">  -y</font> 
-    need_cmd rm +<font color="#E6DB74">          Disable confirmation prompt.</font> 
-    need_cmd rmdir+<font color="#E6DB74">      --default-host &lt;default-host&gt;</font> 
 +<font color="#E6DB74">          Choose a default host triple</font> 
 +<font color="#E6DB74">      --default-toolchain &lt;default-toolchain&gt;</font> 
 +<font color="#E6DB74">          Choose a default toolchain to install. Use &apos;none&apos; to not install any toolchains at all</font> 
 +<font color="#E6DB74">      --profile &lt;profile&gt;</font> 
 +<font color="#E6DB74">          [default: default] [possible values: minimal, default, complete]</font> 
 +<font color="#E6DB74">  -c, --component &lt;components&gt;...</font> 
 +<font color="#E6DB74">          Component name to also install</font> 
 +<font color="#E6DB74">  -t, --target &lt;targets&gt;...</font> 
 +<font color="#E6DB74">          Target name to also install</font> 
 +<font color="#E6DB74">      --no-update-default-toolchain</font> 
 +<font color="#E6DB74">          Don&apos;t update any existing default toolchain after install</font> 
 +<font color="#E6DB74">      --no-modify-path</font> 
 +<font color="#E6DB74">          Don&apos;t configure the PATH environment variable</font> 
 +<font color="#E6DB74">  -h, --help</font> 
 +<font color="#E6DB74">          Print help</font> 
 +<font color="#E6DB74">  -V, --version</font> 
 +<font color="#E6DB74">          Print version</font> 
 +<font color="#F92672">EOF</font> 
 +<font color="#FFFFFF">}</font>
  
-    get_architecture || return 1 +<font color="#A6E22E">main</font><font color="#FFFFFF">() {</font> 
-    local _arch="$RETVAL+<font color="#FFFFFF">    downloader</font><font color="#FD971F"> --check</font> 
-    assert_nz "$_arch" "arch"+<font color="#FFFFFF">    need_cmd uname</font> 
 +<font color="#FFFFFF">    need_cmd mktemp</font> 
 +<font color="#FFFFFF">    need_cmd chmod</font> 
 +<font color="#FFFFFF">    need_cmd mkdir</font> 
 +<font color="#FFFFFF">    need_cmd rm</font> 
 +<font color="#FFFFFF">    need_cmd rmdir</font>
  
-    local _ext="" +<font color="#FFFFFF">    get_architecture </font><font color="#F92672">||</font><font color="#FFFFFF"> </font><font color="#F92672">return</font><font color="#FFFFFF"> 1</font> 
-    case "$_arch" in +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _arch</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RETVAL&quot;</font> 
-        *windows*) +<font color="#FFFFFF">    assert_nz &quot;$_arch&quot; &quot;</font><font color="#E6DB74">arch</font><font color="#FFFFFF">&quot;</font>
-            _ext=".exe" +
-            ;; +
-    esac+
  
-    local _url="${RUSTUP_UPDATE_ROOT}/dist/${_arch}/rustup-init${_ext}"+<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _ext</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$_arch&quot; </font><font color="#F92672">in</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">*</font><font color="#FFFFFF">windows</font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">            _ext</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">.exe</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">esac</font>
  
-    local _dir +<font color="#FFFFFF"   </font><font color="#F92672">local</font><font color="#FFFFFF"> _url</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">RUSTUP_UPDATE_ROOT</font><font color="#E6DB74">}/dist/</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_arch</font><font color="#E6DB74">}/rustup-init</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ext</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot;</font>
-    _dir="$(ensure mktemp -d)" +
-    local _file="${_dir}/rustup-init${_ext}"+
  
-    local _ansi_escapes_are_valid=false +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _dir</font> 
-    if [ -t 2 ]; then +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> _dir</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">ensure</font><font color="#E6DB74"> mktemp</font><font color="#FD971F"> -d</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-        if [ "${TERM+set}" = 'set' ]; then +<font color="#FFFFFF">        </font><font color="#7C7865"># Because the previous command ran in a subshell, we must manually</font> 
-            case "$TERM" in +<font color="#FFFFFF">        </font><font color="#7C7865"># propagate exit status.</font> 
-                xterm*|rxvt*|urxvt*|linux*|vt*) +<font color="#FFFFFF">        </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 1</font> 
-                    _ansi_escapes_are_valid=true +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
-                ;; +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _file</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_dir</font><font color="#E6DB74">}/rustup-init</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ext</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot;</font>
-            esac +
-        fi +
-    fi+
  
-    check if we have to use /dev/tty to prompt the user +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _ansi_escapes_are_valid</font><font color="#F92672">=</font><font color="#E6DB74">false</font> 
-    local need_tty=yes +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-t</font><font color="#FFFFFF"> 2 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    for arg in "$@"; do +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">TERM</font><font color="#F92672">+</font><font color="#E6DB74">set}</font><font color="#FFFFFF">&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">set</font><font color="#FFFFFF">&apos; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-        case "$argin +<font color="#FFFFFF">            </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$TERM&quot</font><font color="#F92672">in</font> 
-            -h|--help) +<font color="#FFFFFF">                xterm</font><font color="#F92672">*|</font><font color="#FFFFFF">rxvt</font><font color="#F92672">*|</font><font color="#FFFFFF">urxvt</font><font color="#F92672">*|</font><font color="#FFFFFF">linux</font><font color="#F92672">*|</font><font color="#FFFFFF">vt</font><font color="#F92672">*)</font> 
-                usage +<font color="#FFFFFF">                    _ansi_escapes_are_valid</font><font color="#F92672">=</font><font color="#E6DB74">true</font> 
-                exit 0 +<font color="#FFFFFF">                ;;</font> 
-                ;; +<font color="#FFFFFF">            </font><font color="#F92672">esac</font> 
-            -y) +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
-                # user wants to skip the prompt -- we don't need /dev/tty +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
-                need_tty=no +
-                ;; +
-            *) +
-                ;; +
-        esac +
-    done+
  
-    if $_ansi_escapes_are_validthen +<font color="#FFFFFF">    </font><font color="#7C7865"># check if we have to use /dev/tty to prompt the user</font> 
-        printf "\33[1minfo:\33[0m downloading installer\n1>&2 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> need_tty</font><font color="#F92672">=</font><font color="#E6DB74">yes</font> 
-    else +<font color="#FFFFFF">    </font><font color="#F92672">for</font><font color="#FFFFFF"> arg </font><font color="#F92672">in</font><font color="#FFFFFF"> &quot;$@&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">do</font> 
-        printf '%s\n' 'infodownloading installer' 1>&2 +<font color="#FFFFFF">        </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$arg&quot; </font><font color="#F92672">in</font> 
-    fi+<font color="#FFFFFF">            --help</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                usage</font> 
 +<font color="#FFFFFF">                </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 0</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">                OPTIND</font><font color="#F92672">=</font><font color="#E6DB74">1</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">arg</font><font color="#F92672">%%</font><font color="#E6DB74">--</font><font color="#F92672">*</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># Long option (other than --help);</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># don&apos;t attempt to interpret it.</font> 
 +<font color="#FFFFFF">                    </font><font color="#F92672">continue</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">while</font><font color="#FFFFFF"> </font><font color="#66D9EF">getopts</font><font color="#FFFFFF"> :hy sub_arg &quot;$arg&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">do</font> 
 +<font color="#FFFFFF">                    </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$sub_arg&quot; </font><font color="#F92672">in</font> 
 +<font color="#FFFFFF">                        h</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                            usage</font> 
 +<font color="#FFFFFF">                            </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 0</font> 
 +<font color="#FFFFFF">                            ;;</font> 
 +<font color="#FFFFFF">                        y</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                            </font><font color="#7C7865"># user wants to skip the prompt --</font> 
 +<font color="#FFFFFF">                            </font><font color="#7C7865"># we don&apos;t need /dev/tty</font> 
 +<font color="#FFFFFF">                            need_tty</font><font color="#F92672">=</font><font color="#E6DB74">no</font> 
 +<font color="#FFFFFF">                            ;;</font> 
 +<font color="#FFFFFF">                        </font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">                            ;;</font> 
 +<font color="#FFFFFF">                        </font><font color="#F92672">esac</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">done</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">esac</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">done</font>
  
-    ensure mkdir -p "$_dir" +<font color="#FFFFFF"   </font><font color="#F92672">if</font><font color="#FFFFFF"$_ansi_escapes_are_valid</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    ensure downloader "$_url" "$_file" "$_arch" +<font color="#FFFFFF">        </font><font color="#66D9EF">printf</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">\33[1minfo:\33[0m downloading installer\n</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
-    ensure chmod u+x "$_file" +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
-    if [ ! -x "$_file]; then +<font color="#FFFFFF">        </font><font color="#66D9EF">printf</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">%s\n</font><font color="#FFFFFF">&apos; &apos;</font><font color="#E6DB74">info: downloading installer</font><font color="#FFFFFF">&apos; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
-        printf '%s\n"Cannot execute $_file (likely because of mounting /tmp as noexec)." 1>&+<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
-        printf '%s\n"Please copy the file to a location where you can execute binaries and run ./rustup-init${_ext}." 1>&+
-        exit 1 +
-    fi+
  
-    if [ "$need_tty" = "yes" ]; then +<font color="#FFFFFF">    ensure mkdir</font><font color="#FD971F"> -p</font><font color="#FFFFFF"> &quot;$_dir&quot;</font> 
-        The installer is going to want to ask for confirmation by +<font color="#FFFFFF">    ensure downloader &quot;$_url&quot; &quot;$_file&quot; &quot;$_arch&quot;</font> 
-        # reading stdin.  This script was piped into `sh` though and +<font color="#FFFFFF">    ensure chmod u+x &quot;$_file&quot;</font> 
-        doesn't have stdin to pass to its childrenInstead we're going +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> </font><font color="#FD971F">-x</font><font color="#FFFFFF"> &quot;$_file&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-        # to explicitly connect /dev/tty to the installer'stdin. +<font color="#FFFFFF">        </font><font color="#66D9EF">printf</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">%s\n</font><font color="#FFFFFF">&apos; &quot;</font><font color="#E6DB74">Cannot execute </font><font color="#FFFFFF">$_file</font><font color="#E6DB74"> (likely because of mounting /tmp as noexec).</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
-        if [ ! -t 1 ]then +<font color="#FFFFFF">        </font><font color="#66D9EF">printf</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">%s\n</font><font color="#FFFFFF">&apos&quot;</font><font color="#E6DB74">Please copy the file to a location where you can execute binaries and run ./rustup-init</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ext</font><font color="#E6DB74">}.</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
-            err "Unable to run interactivelyRun with -y to accept defaults, --help for additional options+<font color="#FFFFFF">        </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 1</font> 
-        fi+<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-        ignore "$_file" "$@" < /dev/tty +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$need_tty&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#FFFFFF"> </font><font color="#F92672">&amp;&amp;</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> </font><font color="#FD971F">-t</font><font color="#FFFFFF"> 0 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    else +<font color="#FFFFFF">        </font><font color="#7C7865"># The installer is going to want to ask for confirmation by</font> 
-        ignore "$_file" "$@+<font color="#FFFFFF">        </font><font color="#7C7865"># reading stdin.  This script was piped into `sh` though and</font> 
-    fi+<font color="#FFFFFF">        </font><font color="#7C7865"># doesn&apos;t have stdin to pass to its children. Instead we&apos;re going</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># to explicitly connect /dev/tty to the installer&apos;s stdin.</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> </font><font color="#FD971F">-t</font><font color="#FFFFFF"> 1 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            err &quot;</font><font color="#E6DB74">Unable to run interactively. Run with -y to accept defaults, --help for additional options</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font>
  
-    local _retval=$?+<font color="#FFFFFF">        ignore &quot;$_file&quot; &quot;$@&quot; </font><font color="#F92672">&lt;</font><font color="#FFFFFF"> /dev/tty</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">        ignore &quot;$_file&quot; &quot;$@&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-    ignore rm "$_file" +<font color="#FFFFFF"   </font><font color="#F92672">local</font><font color="#FFFFFF"> _retval</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font>
-    ignore rmdir "$_dir"+
  
-    return "$_retval+<font color="#FFFFFF">    ignore rm &quot;$_file&quot;</font> 
-}+<font color="#FFFFFF">    ignore rmdir &quot;$_dir&quot;</font>
  
-check_proc() { +<font color="#FFFFFF">    </font><font color="#F92672">return</font><font color="#FFFFFF"> &quot;$_retval&quot;</font> 
-    # Check for /proc by looking for the /proc/self/exe link +<font color="#FFFFFF">}</font>
-    This is only run on Linux +
-    if ! test -L /proc/self/exe ; then +
-        err "fatal: Unable to find /proc/self/exe.  Is /proc mounted?  Installation cannot proceed without /proc." +
-    fi +
-}+
  
-get_bitness() { +<font color="#A6E22E">check_proc</font><font color="#FFFFFF">() {</font> 
-    need_cmd head +<font color="#FFFFFF">    </font><font color="#7C7865">Check for /proc by looking for the /proc/self/exe link</font> 
-    Architecture detection without dependencies beyond coreutils. +<font color="#FFFFFF">    </font><font color="#7C7865"># This is only run on Linux</font> 
-    # ELF files start out "\x7fELF", and the following byte is +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> test</font><font color="#FD971F"> -L</font><font color="#FFFFFF"> /proc/self/exe </font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-      0x01 for 32-bit and +<font color="#FFFFFF">        err &quot;</font><font color="#E6DB74">fatal: Unable to find /proc/self/exe.  Is /proc mounted?  Installation cannot proceed without /proc.</font><font color="#FFFFFF">&quot;</font> 
-    #   0x02 for 64-bit. +<font color="#FFFFFF"   </font><font color="#F92672">fi</font> 
-    # The printf builtin on some shells like dash only supports octal +<font color="#FFFFFF">}</font>
-    escape sequences, so we use those. +
-    local _current_exe_head +
-    _current_exe_head=$(head -c 5 /proc/self/exe +
-    if [ "$_current_exe_head" = "$(printf '\177ELF\001')]; then +
-        echo 32 +
-    elif [ "$_current_exe_head" = "$(printf '\177ELF\002')]then +
-        echo 64 +
-    else +
-        err "unknown platform bitness" +
-    fi +
-}+
  
-is_host_amd64_elf() { +<font color="#A6E22E">get_bitness</font><font color="#FFFFFF">() {</font> 
-    need_cmd head +<font color="#FFFFFF">    need_cmd head</font> 
-    need_cmd tail +<font color="#FFFFFF">    </font><font color="#7C7865"># Architecture detection without dependencies beyond coreutils.</font> 
-    ELF e_machine detection without dependencies beyond coreutils. +<font color="#FFFFFF">    </font><font color="#7C7865"># ELF files start out &quot;\x7fELF&quot;and the following byte is</font> 
-    # Two-byte field at offset 0x12 indicates the CPU+<font color="#FFFFFF">    </font><font color="#7C7865">#   0x01 for 32-bit and</font> 
-    # but we're interested in it being 0x3E to indicate amd64or not that+<font color="#FFFFFF">    </font><font color="#7C7865">#   0x02 for 64-bit.</font> 
-    local _current_exe_machine +<font color="#FFFFFF">    </font><font color="#7C7865"># The printf builtin on some shells like dash only supports octal</font> 
-    _current_exe_machine=$(head -c 19 /proc/self/exe | tail -c 1+<font color="#FFFFFF">    </font><font color="#7C7865"># escape sequencesso we use those.</font> 
-    [ "$_current_exe_machine" = "$(printf '\076')" ] +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _current_exe_head</font> 
-}+<font color="#FFFFFF">    _current_exe_head</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">head</font><font color="#FD971F"> -c</font><font color="#E6DB74">/proc/self/exe )</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_current_exe_head&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#66D9EF">printf</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">\177ELF\001</font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> 32</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_current_exe_head&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#66D9EF">printf</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">\177ELF\002</font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> 64</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">        err &quot;</font><font color="#E6DB74">unknown platform bitness</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">}</font>
  
-get_endianness() { +<font color="#A6E22E">is_host_amd64_elf</font><font color="#FFFFFF">() {</font> 
-    local cputype=$1 +<font color="#FFFFFF">    need_cmd head</font> 
-    local suffix_eb=$2 +<font color="#FFFFFF">    need_cmd tail</font> 
-    local suffix_el=$3+<font color="#FFFFFF">    </font><font color="#7C7865"># ELF e_machine detection without dependencies beyond coreutils.</font> 
 +<font color="#FFFFFF">    </font><font color="#7C7865"># Two-byte field at offset 0x12 indicates the CPU,</font> 
 +<font color="#FFFFFF">    </font><font color="#7C7865"># but we&apos;re interested in it being 0x3E to indicate amd64, or not that.</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _current_exe_machine</font> 
 +<font color="#FFFFFF">    _current_exe_machine</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">head</font><font color="#FD971F"> -c</font><font color="#E6DB74"> 19 /proc/self/exe </font><font color="#F92672">|</font><font color="#E6DB74"> </font><font color="#FFFFFF">tail</font><font color="#FD971F"> -c</font><font color="#E6DB74"> 1)</font> 
 +<font color="#FFFFFF">    </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_current_exe_machine&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#66D9EF">printf</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">\076</font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font> 
 +<font color="#FFFFFF">}</font>
  
-    detect endianness without od/hexdump, like get_bitness() does. +<font color="#A6E22E">get_endianness</font><font color="#FFFFFF">() {</font> 
-    need_cmd head +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> cputype</font><font color="#F92672">=</font><font color="#FFFFFF">$1</font> 
-    need_cmd tail+<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> suffix_eb</font><font color="#F92672">=</font><font color="#FFFFFF">$2</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> suffix_el</font><font color="#F92672">=</font><font color="#FFFFFF">$3</font>
  
-    local _current_exe_endianness +<font color="#FFFFFF"   </font><font color="#7C7865"># detect endianness without od/hexdump, like get_bitness() does.</font> 
-    _current_exe_endianness="$(head -c 6 /proc/self/exe | tail -c 1)" +<font color="#FFFFFF"   need_cmd head</font> 
-    if [ "$_current_exe_endianness= "$(printf '\001')" ]; then +<font color="#FFFFFF"   need_cmd tail</font>
-        echo "${cputype}${suffix_el}" +
-    elif [ "$_current_exe_endianness" = "$(printf '\002')]; then +
-        echo "${cputype}${suffix_eb}" +
-    else +
-        err "unknown platform endianness" +
-    fi +
-}+
  
-get_architecture() { +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _current_exe_endianness</font> 
-    local _ostype _cputype _bitness _arch _clibtype +<font color="#FFFFFF">    _current_exe_endianness</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">head</font><font color="#FD971F"> -c</font><font color="#E6DB74"> 6 /proc/self/exe </font><font color="#F92672">|</font><font color="#E6DB74"> </font><font color="#FFFFFF">tail</font><font color="#FD971F"> -c</font><font color="#E6DB74"> 1)</font><font color="#FFFFFF">&quot;</font> 
-    _ostype="$(uname -s)" +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_current_exe_endianness&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#66D9EF">printf</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">\001</font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    _cputype="$(uname -m)" +<font color="#FFFFFF">        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">cputype</font><font color="#E6DB74">}</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">suffix_el</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot;</font> 
-    _clibtype="gnu"+<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_current_exe_endianness&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#66D9EF">printf</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">\002</font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">cputype</font><font color="#E6DB74">}</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">suffix_eb</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">        err &quot;</font><font color="#E6DB74">unknown platform endianness</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">}</font>
  
-    if [ "$_ostypeLinux ]; then +<font color="#7C7865"># Detect the Linux/LoongArch UAPI flavor, with all errors being non-fatal.</font> 
-        if [ "$(uname -o)= Android ]; then +<font color="#7C7865"># Returns 0 or 234 in case of successful detection, 1 otherwise (/tmp being</font> 
-            _ostype=Android +<font color="#7C7865"># noexec, or other causes).</font
-        fi +<font color="#A6E22E">check_loongarch_uapi</font><font color="#FFFFFF">() {</font> 
-        if ldd --version 2>&1 | grep -q 'musl'; then +<font color="#FFFFFF">    need_cmd base64</font>
-            _clibtype="musl+
-        fi +
-    fi+
  
-    if "$_ostype" = Darwin ] && [ "$_cputype" = i386 ]then +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _tmp</font> 
-        Darwin `uname -m` lies +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> _tmp</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">ensure</font><font color="#E6DB74"> mktemp)</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-        if sysctl hw.optional.x86_64 | grep -q ': 1'; then +<font color="#FFFFFF">        </font><font color="#F92672">return</font><font color="#FFFFFF"> 1</font> 
-            _cputype=x86_64 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
-        fi +
-    fi+
  
-    if [ "$_ostype" = SunOS ]; then +<font color="#FFFFFF">    </font><font color="#7C7865"># Minimal Linux/LoongArch UAPI detection, exiting with 0 in case of</font> 
-        Both Solaris and illumos presently announce as "SunOSin "uname -s" +<font color="#FFFFFF">    </font><font color="#7C7865"># upstream (&quot;new world&quot;) UAPI, and 234 (-EINVAL truncated) in case of</font> 
-        so use "uname -oto disambiguate We use the full path to the +<font color="#FFFFFF">    </font><font color="#7C7865"># old-world (as deployed on several early commercial Linux distributions</font> 
-        system uname in case the user has coreutils uname first in PATH, +<font color="#FFFFFF">    </font><font color="#7C7865"># for LoongArch).</font> 
-        which has historically sometimes printed the wrong value here+<font color="#FFFFFF">    </font><font color="#7C7865">#</font> 
-        if [ "$(/usr/bin/uname -o)" = illumos ]then +<font color="#FFFFFF">    </font><font color="#7C7865"># See https://gist.github.com/xen0n/5ee04aaa6cecc5c7794b9a0c3b65fc7f for</font> 
-            _ostype=illumos +<font color="#FFFFFF">    </font><font color="#7C7865"># source to this helper binary.</font> 
-        fi+<font color="#FFFFFF">    ignore base64</font><font color="#FD971F"> -d</font><font color="#FFFFFF"> </font><font color="#F92672">&gt;</font><font color="#FFFFFF"> &quot;$_tmp&quot; </font><font color="#F92672">&lt;&lt;EOF</font> 
 +<font color="#E6DB74">f0VMRgIBAQAAAAAAAAAAAAIAAgEBAAAAeAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAQQAAAEAAOAAB</font> 
 +<font color="#E6DB74">AAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAJAAAAAAAAAAkAAAAAAAAAAAA</font> 
 +<font color="#E6DB74">AQAAAAAABCiAAwUAFQAGABUAByCAAwsYggMAACsAC3iBAwAAKwAxen0n</font> 
 +<font color="#F92672">EOF</font>
  
-        illumos systems have multi-arch userlands, and "uname -m" reports the +<font color="#FFFFFF">    ignore chmod u+x &quot;$_tmp&quot;</font> 
-        machine hardware name; e.g., "i86pcon both 32- and 64-bit x86 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> </font><font color="#FD971F">-x</font><font color="#FFFFFF"> &quot;$_tmp&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-        systems.  Check for the native (widest) instruction set on the +<font color="#FFFFFF">        ignore rm &quot;$_tmp&quot;</font> 
-        # running kernel: +<font color="#FFFFFF">        </font><font color="#F92672">return</font><font color="#FFFFFF"> 1</font> 
-        if [ "$_cputype" = i86pc ]; then +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
-            _cputype="$(isainfo -n)+
-        fi +
-    fi+
  
-    case "$_ostypein+<font color="#FFFFFF">    &quot;$_tmp&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _retval</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font>
  
-        Android) +<font color="#FFFFFF">    ignore rm &quot;$_tmp&quot;</font> 
-            _ostype=linux-android +<font color="#FFFFFF">    </font><font color="#F92672">return</font><font color="#FFFFFF"> &quot;$_retval&quot;</font> 
-            ;;+<font color="#FFFFFF">}</font>
  
-        Linux+<font color="#A6E22E">ensure_loongarch_uapi</font><font color="#FFFFFF">({</font> 
-            check_proc +<font color="#FFFFFF">    check_loongarch_uapi</font> 
-            _ostype=unknown-linux-$_clibtype +<font color="#FFFFFF">    </font><font color="#F92672">case</font><font color="#FFFFFF"> $? </font><font color="#F92672">in</font> 
-            _bitness=$(get_bitness+<font color="#FFFFFF">        0</font><font color="#F92672">)</font> 
-            ;;+<font color="#FFFFFF">            </font><font color="#F92672">return</font><font color="#FFFFFF"> 0</font> 
 +<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">        234</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">Your Linux kernel does not provide the ABI required by this Rust</font><font color="#FFFFFF">&apos; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">distribution.  Please check with your OS provider for how to obtain a</font><font color="#FFFFFF">&apos; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">compatible Rust package for your system.</font><font color="#FFFFFF">&apos; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 1</font> 
 +<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Cannot determine current system&apos;s ABI flavor, continuing anyway.</font><font color="#FFFFFF">&quot; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">Note that the official Rust distribution only works with the upstream</font><font color="#FFFFFF">&apos; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">kernel ABI.  Installation will fail if your running kernel happens to be</font><font color="#FFFFFF">&apos; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">incompatible.</font><font color="#FFFFFF">&apos; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">esac</font> 
 +<font color="#FFFFFF">}</font>
  
-        FreeBSD+<font color="#A6E22E">get_architecture</font><font color="#FFFFFF">({</font> 
-            _ostype=unknown-freebsd +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _ostype _cputype _bitness _arch _clibtype</font> 
-            ;;+<font color="#FFFFFF">    _ostype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">uname</font><font color="#FD971F"> -s</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    _cputype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">uname</font><font color="#FD971F"> -m</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    _clibtype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">gnu</font><font color="#FFFFFF">&quot;</font>
  
-        NetBSD+<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> Linux </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            _ostype=unknown-netbsd +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">uname</font><font color="#FD971F"> -o</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> Android </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            ;;+<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">Android</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> ldd</font><font color="#FD971F"> --version</font><font color="#FFFFFF"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">musl</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _clibtype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">musl</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-        DragonFly+<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> Darwin </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            _ostype=unknown-dragonfly +<font color="#FFFFFF">        </font><font color="#7C7865"># Darwin `uname -m` can lie due to Rosetta shenanigans. If you manage to</font> 
-            ;;+<font color="#FFFFFF">        </font><font color="#7C7865"># invoke a native shell binary and then a native uname binary, you can</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># get the real answer, but that&apos;s hard to ensure, so instead we use</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># `sysctl` (which doesn&apos;t lieto check for the actual architecture.</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_cputype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> i386 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># Handling i386 compatibility mode in older macOS versions (&lt;10.15)</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># running on x86_64-based Macs.</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># Starting from 10.15, macOS explicitly bans all i386 binaries from running.</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># See: &lt;https://support.apple.com/en-us/HT208436&gt;</font>
  
-        Darwin) +<font color="#FFFFFF">            </font><font color="#7C7865"># Avoid `sysctl: unknown oid` stderr output and/or non-zero exit code.</font> 
-            _ostype=apple-darwin +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> sysctl hw.optional.x86_64 </font><font color="#BE84FF">2</font><font color="#F92672">&gt;</font><font color="#FFFFFF"> /dev/null </font><font color="#F92672">||</font><font color="#FFFFFF"> true </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">: 1</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            ;;+<font color="#FFFFFF">                _cputype</font><font color="#F92672">=</font><font color="#E6DB74">x86_64</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_cputype&quot</font><font color="#F92672">=</font><font color="#FFFFFF"> x86_64 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># Handling x86-64 compatibility mode (a.k.a. Rosetta 2)</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># in newer macOS versions (&gt;=11) running on arm64-based Macs.</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># Rosetta 2 is built exclusively for x86-64 and cannot run i386 binaries.</font>
  
-        illumos) +<font color="#FFFFFF">            </font><font color="#7C7865"># Avoid `sysctl: unknown oid` stderr output and/or non-zero exit code.</font> 
-            _ostype=unknown-illumos +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> sysctl hw.optional.arm64 </font><font color="#BE84FF">2</font><font color="#F92672">&gt;</font><font color="#FFFFFF"> /dev/null </font><font color="#F92672">||</font><font color="#FFFFFF"> true </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">: 1</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            ;;+<font color="#FFFFFF">                _cputype</font><font color="#F92672">=</font><font color="#E6DB74">arm64</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-        MINGW* | MSYS* | CYGWIN*) +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> SunOS </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            _ostype=pc-windows-gnu +<font color="#FFFFFF">        </font><font color="#7C7865"># Both Solaris and illumos presently announce as &quot;SunOS&quot; in &quot;uname -s&quot;</font> 
-            ;;+<font color="#FFFFFF">        </font><font color="#7C7865"># so use &quot;uname -o&quot; to disambiguate.  We use the full path to the</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># system uname in case the user has coreutils uname first in PATH,</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># which has historically sometimes printed the wrong value here.</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">/usr/bin/uname</font><font color="#FD971F"> -o</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot</font><font color="#F92672">=</font><font color="#FFFFFF"> illumos </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">illumos</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font>
  
-        *+<font color="#FFFFFF">        </font><font color="#7C7865"># illumos systems have multi-arch userlands, and &quot;uname -m&quot; reports the</font> 
-            err "unrecognized OS type: $_ostype+<font color="#FFFFFF">        </font><font color="#7C7865"># machine hardware name; e.g., &quot;i86pc&quot; on both 32- and 64-bit x86</font> 
-            ;;+<font color="#FFFFFF">        </font><font color="#7C7865"># systems.  Check for the native (widestinstruction set on the</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># running kernel:</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_cputype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> i86pc </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">isainfo</font><font color="#FD971F"> -n</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-    esac+<font color="#FFFFFF">    </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">in</font>
  
-    case "$_cputypein+<font color="#FFFFFF">        Android</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">linux-android</font> 
 +<font color="#FFFFFF">            ;;</font>
  
-        i386 | i486 | i686 | i786 | x86+<font color="#FFFFFF">        Linux</font><font color="#F92672">)</font> 
-            _cputype=i686 +<font color="#FFFFFF">            check_proc</font> 
-            ;;+<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">unknown-linux-</font><font color="#FFFFFF">$_clibtype</font> 
 +<font color="#FFFFFF">            _bitness</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_bitness</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">            ;;</font>
  
-        xscale | arm) +<font color="#FFFFFF">        FreeBSD</font><font color="#F92672">)</font> 
-            _cputype=arm +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">unknown-freebsd</font> 
-            if [ "$_ostype" = "linux-android]; then +<font color="#FFFFFF">            ;;</font>
-                _ostype=linux-androideabi +
-            fi +
-            ;;+
  
-        armv6l+<font color="#FFFFFF">        NetBSD</font><font color="#F92672">)</font> 
-            _cputype=arm +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">unknown-netbsd</font> 
-            if [ "$_ostype" = "linux-android]; then +<font color="#FFFFFF"           ;;</font>
-                _ostype=linux-androideabi +
-            else +
-                _ostype="${_ostype}eabihf" +
-            fi +
-            ;;+
  
-        armv7l | armv8l+<font color="#FFFFFF">        DragonFly</font><font color="#F92672">)</font> 
-            _cputype=armv7 +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">unknown-dragonfly</font> 
-            if [ "$_ostype" = "linux-android]; then +<font color="#FFFFFF"           ;;</font>
-                _ostype=linux-androideabi +
-            else +
-                _ostype="${_ostype}eabihf" +
-            fi +
-            ;;+
  
-        aarch64 | arm64+<font color="#FFFFFF">        Darwin</font><font color="#F92672">)</font> 
-            _cputype=aarch64 +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">apple-darwin</font> 
-            ;;+<font color="#FFFFFF">            ;;</font>
  
-        x86_64 | x86-64 | x64 | amd64+<font color="#FFFFFF">        illumos</font><font color="#F92672">)</font> 
-            _cputype=x86_64 +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">unknown-illumos</font> 
-            ;;+<font color="#FFFFFF">            ;;</font>
  
-        mips+<font color="#FFFFFF">        MINGW</font><font color="#F92672">*</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> MSYS</font><font color="#F92672">*</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> CYGWIN</font><font color="#F92672">*</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> Windows_NT</font><font color="#F92672">)</font> 
-            _cputype=$(get_endianness mips '' el) +<font color="#FFFFFF">            _ostype</font><font color="#F92672">=</font><font color="#E6DB74">pc-windows-gnu</font> 
-            ;;+<font color="#FFFFFF">            ;;</font>
  
-        mips64+<font color="#FFFFFF">        </font><font color="#F92672">*)</font> 
-            if [ "$_bitness-eq 64 ]then +<font color="#FFFFFF">            err &quot;</font><font color="#E6DB74">unrecognized OS type: </font><font color="#FFFFFF">$_ostype&quot;</font> 
-                only n64 ABI is supported for now +<font color="#FFFFFF">            ;;</font>
-                _ostype="${_ostype}abi64" +
-                _cputype=$(get_endianness mips64 '' el) +
-            fi +
-            ;;+
  
-        ppc) +<font color="#FFFFFF">    </font><font color="#F92672">esac</font>
-            _cputype=powerpc +
-            ;;+
  
-        ppc64) +<font color="#FFFFFF">    </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$_cputype&quot</font><font color="#F92672">in</font>
-            _cputype=powerpc64 +
-            ;;+
  
-        ppc64le+<font color="#FFFFFF">        i386 </font><font color="#F92672">|</font><font color="#FFFFFF"> i486 </font><font color="#F92672">|</font><font color="#FFFFFF"> i686 </font><font color="#F92672">|</font><font color="#FFFFFF"> i786 </font><font color="#F92672">|</font><font color="#FFFFFF"> x86</font><font color="#F92672">)</font> 
-            _cputype=powerpc64le +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">i686</font> 
-            ;;+<font color="#FFFFFF">            ;;</font>
  
-        s390x+<font color="#FFFFFF">        xscale </font><font color="#F92672">|</font><font color="#FFFFFF"> arm</font><font color="#F92672">)</font> 
-            _cputype=s390x +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">arm</font> 
-            ;; +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot</font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">linux-android</font><font color="#FFFFFF">&quot</font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-        riscv64) +<font color="#FFFFFF">                _ostype</font><font color="#F92672">=</font><font color="#E6DB74">linux-androideabi</font> 
-            _cputype=riscv64gc +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
-            ;; +<font color="#FFFFFF">            ;;</font>
-        *) +
-            err "unknown CPU type: $_cputype"+
  
-    esac+<font color="#FFFFFF">        armv6l</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">arm</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">linux-android</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                _ostype</font><font color="#F92672">=</font><font color="#E6DB74">linux-androideabi</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">                _ostype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ostype</font><font color="#E6DB74">}eabihf</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">            ;;</font>
  
-    Detect 64-bit linux with 32-bit userland +<font color="#FFFFFF">        armv7l </font><font color="#F92672">|</font><font color="#FFFFFF"> armv8l</font><font color="#F92672">)</font> 
-    if [ "${_ostype}" = unknown-linux-gnu ] && [ "${_bitness}-eq 32 ]; then +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">armv7</font> 
-        case $_cputype in +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">linux-android</font><font color="#FFFFFF">&quot</font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            x86_64+<font color="#FFFFFF">                _ostype</font><font color="#F92672">=</font><font color="#E6DB74">linux-androideabi</font> 
-                if [ -n "${RUSTUP_CPUTYPE:-}]; then +<font color="#FFFFFF">            </font><font color="#F92672">else</font> 
-                    _cputype="$RUSTUP_CPUTYPE" +<font color="#FFFFFF">                _ostype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ostype</font><font color="#E6DB74">}eabihf</font><font color="#FFFFFF">&quot;</font> 
-                else { +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
-                    32-bit executable for amd64 x32 +<font color="#FFFFFF">            ;;</font>
-                    if is_host_amd64_elf; then { +
-                         echo "This host is running an x32 userland; as it stands, x32 support is poor,1>&2 +
-                         echo "and there isn't a native toolchain -- you will have to install1>&2 +
-                         echo "multiarch compatibility with i686 and/or amd64, then select one1>&2 +
-                         echo "by re-running this script with the RUSTUP_CPUTYPE environment variable1>&2 +
-                         echo "set to i686 or x86_64, respectively.1>&+
-                         echo 1>&+
-                         echo "You will be able to add an x32 target after installation by running1>&+
-                         echo  rustup target add x86_64-unknown-linux-gnux321>&+
-                         exit 1 +
-                    }else +
-                        _cputype=i686 +
-                    fi +
-                }; fi +
-                ;; +
-            mips64) +
-                _cputype=$(get_endianness mips '' el) +
-                ;+
-            powerpc64) +
-                _cputype=powerpc +
-                ;; +
-            aarch64) +
-                _cputype=armv7 +
-                if [ "$_ostype" = "linux-android]; then +
-                    _ostype=linux-androideabi +
-                else +
-                    _ostype="${_ostype}eabihf" +
-                fi +
-                ;+
-            riscv64gc) +
-                err "riscv64 with 32-bit userland unsupported+
-                ;; +
-        esac +
-    fi+
  
-    Detect armv7 but without the CPU features Rust needs in that build, +<font color="#FFFFFF">        aarch64 </font><font color="#F92672">|</font><font color="#FFFFFF"> arm64</font><font color="#F92672">)</font> 
-    and fall back to arm. +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">aarch64</font> 
-    See https://github.com/rust-lang/rustup.rs/issues/587. +<font color="#FFFFFF">            ;;</font>
-    if [ "$_ostype" = "unknown-linux-gnueabihf] && [ "$_cputype= armv7 ]; then +
-        if ensure grep '^Features' /proc/cpuinfo | grep -q -v neon; then +
-            At least one processor does not have NEON. +
-            _cputype=arm +
-        fi +
-    fi+
  
-    _arch="${_cputype}-${_ostype}"+<font color="#FFFFFF">        x86_64 </font><font color="#F92672">|</font><font color="#FFFFFF"> x86-64 </font><font color="#F92672">|</font><font color="#FFFFFF"> x64 </font><font color="#F92672">|</font><font color="#FFFFFF"> amd64</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">x86_64</font> 
 +<font color="#FFFFFF">            ;;</font>
  
-    RETVAL="$_arch+<font color="#FFFFFF">        mips</font><font color="#F92672">)</font> 
-}+<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_endianness</font><font color="#E6DB74"> mips </font><font color="#FFFFFF">&apos;&apos;</font><font color="#E6DB74"> el)</font> 
 +<font color="#FFFFFF">            ;;</font>
  
-say({ +<font color="#FFFFFF">        mips64</font><font color="#F92672">)</font> 
-    printf 'rustup: %s\n' "$1+<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_bitness&quot; </font><font color="#FD971F">-eq</font><font color="#FFFFFF"> 64 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-}+<font color="#FFFFFF">                </font><font color="#7C7865"># only n64 ABI is supported for now</font> 
 +<font color="#FFFFFF">                _ostype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ostype</font><font color="#E6DB74">}abi64</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                _cputype</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_endianness</font><font color="#E6DB74"> mips64 </font><font color="#FFFFFF">&apos;&apos;</font><font color="#E6DB74"> el)</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">            ;;</font>
  
-err({ +<font color="#FFFFFF">        ppc</font><font color="#F92672">)</font> 
-    say "$1" >&2 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">powerpc</font> 
-    exit 1 +<font color="#FFFFFF">            ;;</font>
-}+
  
-need_cmd() { +<font color="#FFFFFF"       ppc64</font><font color="#F92672">)</font> 
-    if ! check_cmd "$1"; then +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">powerpc64</font> 
-        err "need '$1' (command not found)" +<font color="#FFFFFF">            ;;</font>
-    fi +
-}+
  
-check_cmd({ +<font color="#FFFFFF">        ppc64le</font><font color="#F92672">)</font> 
-    command -v "$1" > /dev/null 2>&1 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">powerpc64le</font
-}+<font color="#FFFFFF">            ;;</font>
  
-assert_nz({ +<font color="#FFFFFF">        s390x</font><font color="#F92672">)</font> 
-    if [ -z "$1]then err "assert_nz $2"; fi +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">s390x</font> 
-}+<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">        riscv64</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">riscv64gc</font> 
 +<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">        loongarch64</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">loongarch64</font> 
 +<font color="#FFFFFF">            ensure_loongarch_uapi</font> 
 +<font color="#FFFFFF">            ;;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">            err &quot;</font><font color="#E6DB74">unknown CPU type: </font><font color="#FFFFFF">$_cputype&quot;</font>
  
-Run a command that should never fail. If the command fails execution +<font color="#FFFFFF">    </font><font color="#F92672">esac</font>
-# will immediately terminate with an error showing the failing +
-# command. +
-ensure() { +
-    if ! "$@"; then err "command failed: $*"; fi +
-}+
  
-# This is just for indicating that commands' results are being +<font color="#FFFFFF">    </font><font color="#7C7865"># Detect 64-bit linux with 32-bit userland</font> 
-intentionally ignored. Usuallybecause it's being executed +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ostype</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> unknown-linux-gnu </font><font color="#66D9EF">]</font><font color="#FFFFFF"> </font><font color="#F92672">&amp;&amp;</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_bitness</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#FD971F">-eq</font><font color="#FFFFFF"> 32 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-as part of error handling+<font color="#FFFFFF">        </font><font color="#F92672">case</font><font color="#FFFFFF"> $_cputype </font><font color="#F92672">in</font> 
-ignore() { +<font color="#FFFFFF">            x86_64</font><font color="#F92672">)</font> 
-    "$@+<font color="#FFFFFF">                </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">RUSTUP_CPUTYPE</font><font color="#F92672">:-</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-}+<font color="#FFFFFF">                    _cputype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RUSTUP_CPUTYPE&quot;</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">else</font><font color="#FFFFFF"> {</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># 32-bit executable for amd64 = x32</font> 
 +<font color="#FFFFFF">                    </font><font color="#F92672">if</font><font color="#FFFFFF"> is_host_amd64_elf</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font><font color="#FFFFFF"> {</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">This host is running an x32 userland; as it stands, x32 support is poor,</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">and there isn&apos;t a native toolchain -- you will have to install</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">multiarch compatibility with i686 and/or amd64then select one</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">by re-running this script with the RUSTUP_CPUTYPE environment variable</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">set to i686 or x86_64, respectively.</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">You will be able to add an x32 target after installation by running</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">  rustup target add x86_64-unknown-linux-gnux32</font><font color="#FFFFFF">&quot; </font><font color="#BE84FF">1</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">                         </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 1</font> 
 +<font color="#FFFFFF">                    }</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">                        _cputype</font><font color="#F92672">=</font><font color="#E6DB74">i686</font> 
 +<font color="#FFFFFF">                    </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">                }</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">            mips64</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                _cputype</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_endianness</font><font color="#E6DB74"> mips </font><font color="#FFFFFF">&apos;&apos;</font><font color="#E6DB74"> el)</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">            powerpc64</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                _cputype</font><font color="#F92672">=</font><font color="#E6DB74">powerpc</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">            aarch64</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                _cputype</font><font color="#F92672">=</font><font color="#E6DB74">armv7</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">linux-android</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                    _ostype</font><font color="#F92672">=</font><font color="#E6DB74">linux-androideabi</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">                    _ostype</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ostype</font><font color="#E6DB74">}eabihf</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">            riscv64gc</font><font color="#F92672">)</font> 
 +<font color="#FFFFFF">                err &quot;</font><font color="#E6DB74">riscv64 with 32-bit userland unsupported</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                ;;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">esac</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-This wraps curl or wget. Try curl first, if not installed+<font color="#FFFFFF">    </font><font color="#7C7865"># Detect armv7 but without the CPU features Rust needs in that build,</font> 
-use wget instead+<font color="#FFFFFF">    </font><font color="#7C7865"># and fall back to arm.</font> 
-downloader() { +<font color="#FFFFFF">    </font><font color="#7C7865"># See https://github.com/rust-lang/rustup.rs/issues/587.</font> 
-    local _dld +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_ostype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">unknown-linux-gnueabihf</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#FFFFFF"> </font><font color="#F92672">&amp;&amp;</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_cputype&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> armv7 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    local _ciphersuites +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> ensure grep &apos;</font><font color="#E6DB74">^Features</font><font color="#FFFFFF">&apos; /proc/cpuinfo </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -E -q -v</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">neon|simd</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    local _err +<font color="#FFFFFF">            </font><font color="#7C7865"># At least one processor does not have NEON (which is asimd on armv8+).</font> 
-    local _status +<font color="#FFFFFF">            _cputype</font><font color="#F92672">=</font><font color="#E6DB74">arm</font> 
-    if check_cmd curl; then +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
-        _dld=curl +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
-    elif check_cmd wget; then +
-        _dld=wget +
-    else +
-        _dld='curl or wget' to be used in error message of need_cmd +
-    fi+
  
-    if [ "$1" --check ]; then +<font color="#FFFFFF"   _arch</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_cputype</font><font color="#E6DB74">}-</font><font color="#FFFFFF">$</font><font color="#E6DB74">{</font><font color="#FFFFFF">_ostype</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot;</font>
-        need_cmd "$_dld" +
-    elif [ "$_dld" = curl ]; then +
-        get_ciphersuites_for_curl +
-        _ciphersuites="$RETVAL" +
-        if [ -n "$_ciphersuites" ]; then +
-            _err=$(curl --proto '=https' --tlsv1.2 --ciphers "$_ciphersuites" --silent --show-error --fail --location "$1" --output "$22>&1) +
-            _status=$? +
-        else +
-            echo "Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure" +
-            if ! check_help_for "$3" curl --proto --tlsv1.2then +
-                echo "Warning: Not enforcing TLS v1.2, this is potentially less secure" +
-                _err=$(curl --silent --show-error --fail --location "$1" --output "$2" 2>&1) +
-                _status=$? +
-            else +
-                _err=$(curl --proto '=https' --tlsv1.2 --silent --show-error --fail --location "$1--output "$2" 2>&1) +
-                _status=$? +
-            fi +
-        fi +
-        if [ -n "$_err" ]; then +
-            echo "$_err" >&2 +
-            if echo "$_err" | grep -q 404$; then +
-                err "installer for platform '$3' not found, this may be unsupported" +
-            fi +
-        fi +
-        return $_status +
-    elif [ "$_dld" = wget ]; then +
-        get_ciphersuites_for_wget +
-        _ciphersuites="$RETVAL" +
-        if [ -n "$_ciphersuites" ]; then +
-            _err=$(wget --https-only --secure-protocol=TLSv1_2 --ciphers "$_ciphersuites" "$1" -O "$2" 2>&1) +
-            _status=$? +
-        else +
-            echo "Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure" +
-            if ! check_help_for "$3" wget --https-only --secure-protocol; then +
-                echo "Warning: Not enforcing TLS v1.2, this is potentially less secure" +
-                _err=$(wget "$1-O "$2" 2>&1) +
-                _status=$? +
-            else +
-                _err=$(wget --https-only --secure-protocol=TLSv1_2 "$1-O "$2" 2>&1) +
-                _status=$? +
-            fi +
-        fi +
-        if [ -n "$_err" ]; then +
-            echo "$_err" >&+
-            if echo "$_err" | grep -q ' 404 Not Found$'then +
-                err "installer for platform '$3' not found, this may be unsupported" +
-            fi +
-        fi +
-        return $_status +
-    else +
-        err "Unknown downloader"   # should not reach here +
-    fi +
-}+
  
-check_help_for() { +<font color="#FFFFFF"   RETVAL</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$_arch&quot;</font> 
-    local _arch +<font color="#FFFFFF">}</font>
-    local _cmd +
-    local _arg +
-    _arch="$1" +
-    shift +
-    _cmd="$1" +
-    shift+
  
-    local _category +<font color="#A6E22E">say</font><font color="#FFFFFF">() {</font> 
-    if "$_cmd--help | grep -q 'For all options use the manual or "--help all".'then +<font color="#FFFFFF">    </font><font color="#66D9EF">printf</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">rustup: %s\n</font><font color="#FFFFFF">&apos; &quot;$1&quot;</font> 
-      _category="all" +<font color="#FFFFFF">}</font>
-    else +
-      _category="" +
-    fi+
  
-    case "$_archin+<font color="#A6E22E">err</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    say &quot;$1&quot; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">    </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 1</font> 
 +<font color="#FFFFFF">}</font>
  
-        *darwin*) +<font color="#A6E22E">need_cmd</font><font color="#FFFFFF">() {</font> 
-        if check_cmd sw_vers; then +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> check_cmd &quot;$1&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            case $(sw_vers -productVersionin +<font color="#FFFFFF">        err &quot;</font><font color="#E6DB74">need &apos;</font><font color="#FFFFFF">$1</font><font color="#E6DB74">&apos; (command not found)</font><font color="#FFFFFF">&quot;</font> 
-                10.*) +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
-                    If we're running on macOS, older than 10.13, then we always +<font color="#FFFFFF">}</font>
-                    fail to find these options to force fallback +
-                    if "$(sw_vers -productVersion | cut -d. -f2)-lt 13 ]; then +
-                        Older than 10.13 +
-                        echo "Warning: Detected macOS platform older than 10.13" +
-                        return 1 +
-                    fi +
-                    ;; +
-                11.*) +
-                    We assume Big Sur will be OK for now +
-                    ;; +
-                *) +
-                    Unknown product version, warn and continue +
-                    echo "Warning: Detected unknown macOS major version: $(sw_vers -productVersion)" +
-                    echo "Warning TLS capabilities detection may fail" +
-                    ;+
-            esac +
-        fi +
-        ;;+
  
-    esac+<font color="#A6E22E">check_cmd</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#66D9EF">command</font><font color="#FFFFFF"> </font><font color="#FD971F">-v</font><font color="#FFFFFF"> &quot;$1&quot; </font><font color="#F92672">&gt;</font><font color="#FFFFFF"> /dev/null </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font> 
 +<font color="#FFFFFF">}</font>
  
-    for _arg in "$@"; do +<font color="#A6E22E">assert_nz</font><font color="#FFFFFF">() {</font> 
-        if "$_cmd" --help $_category | grep -q -- "$_arg"; then +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-z</font><font color="#FFFFFF"> &quot;$1&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font><font color="#FFFFFF"> err &quot;</font><font color="#E6DB74">assert_nz </font><font color="#FFFFFF">$2&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">fi</font> 
-            return 1 +<font color="#FFFFFF">}</font>
-        fi +
-    done+
  
-    true not strictly needed +<font color="#7C7865"># Run a command that should never fail. If the command fails execution</font> 
-}+<font color="#7C7865"># will immediately terminate with an error showing the failing</font> 
 +<font color="#7C7865"># command.</font> 
 +<font color="#A6E22E">ensure</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> &quot;$@&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font><font color="#FFFFFF"> err &quot;</font><font color="#E6DB74">command failed: </font><font color="#FFFFFF">$*&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">}</font>
  
-Return cipher suite string specified by user, otherwise return strong TLS 1.2-1.3 cipher suites +<font color="#7C7865">This is just for indicating that commands&apos; results are being</font> 
-if support by local tools is detectedDetection currently supports these curl backends: +<font color="#7C7865"># intentionally ignoredUsually, because it&apos;s being executed</font> 
-GnuTLS and OpenSSL (possibly also LibreSSL and BoringSSL). Return value can be empty+<font color="#7C7865"># as part of error handling.</font> 
-get_ciphersuites_for_curl() { +<font color="#A6E22E">ignore</font><font color="#FFFFFF">() {</font> 
-    if [ -n "${RUSTUP_TLS_CIPHERSUITES-}]then +<font color="#FFFFFF">    &quot;$@&quot;</font> 
-        # user specified custom cipher suites, assume they know what they're doing +<font color="#FFFFFF">}</font>
-        RETVAL="$RUSTUP_TLS_CIPHERSUITES" +
-        return +
-    fi+
  
-    local _openssl_syntax="no+<font color="#7C7865"># This wraps curl or wget. Try curl first, if not installed,</font> 
-    local _gnutls_syntax="no+<font color="#7C7865"># use wget instead.</font> 
-    local _backend_supported="yes" +<font color="#A6E22E">downloader</font><font color="#FFFFFF">() {</font> 
-    if curl -V | grep -q ' OpenSSL/'; then +<font color="#FFFFFF"   </font><font color="#7C7865"># zsh does not split words by default, Required for curl retry arguments below.</font> 
-        _openssl_syntax="yes" +<font color="#FFFFFF"   is_zsh </font><font color="#F92672">&amp;&amp;</font><font color="#FFFFFF"> setopt local_options shwordsplit</font>
-    elif curl -V | grep -iq ' LibreSSL/'; then +
-        _openssl_syntax="yes" +
-    elif curl -V | grep -iq ' BoringSSL/'; then +
-        _openssl_syntax="yes" +
-    elif curl -V | grep -iq ' GnuTLS/'; then +
-        _gnutls_syntax="yes" +
-    else +
-        _backend_supported="no" +
-    fi+
  
-    local _args_supported="no+<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _dld</font> 
-    if "$_backend_supported" = "yes]then +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _ciphersuites</font> 
-        # "unspecifiedis for arch, allows for possibility old OS using macports, homebrew, etc. +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _err</font> 
-        if check_help_for "notspecified" "curl" "--tlsv1.2" "--ciphers" "--proto"; then +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _status</font> 
-            _args_supported="yes+<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _retry</font> 
-        fi +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> check_cmd curl</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    fi+<font color="#FFFFFF">        _dld</font><font color="#F92672">=</font><font color="#E6DB74">curl</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> check_cmd wget</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        _dld</font><font color="#F92672">=</font><font color="#E6DB74">wget</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">        _dld</font><font color="#F92672">=</font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">curl or wget</font><font color="#FFFFFF">&apos; </font><font color="#7C7865"># to be used in error message of need_cmd</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
  
-    local _cs="" +<font color="#FFFFFF"   </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$1&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> --check </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-    if [ "$_args_supported" = "yes" ]; then +<font color="#FFFFFF">        need_cmd &quot;$_dld&quot;</font> 
-        if [ "$_openssl_syntax" = "yes" ]; then +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_dld&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> curl </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-            _cs=$(get_strong_ciphersuites_for "openssl") +<font color="#FFFFFF">        check_curl_for_retry_support</font> 
-        elif [ "$_gnutls_syntax" = "yes" ]; then +<font color="#FFFFFF">        _retry</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RETVAL&quot;</font> 
-            _cs=$(get_strong_ciphersuites_for "gnutls") +<font color="#FFFFFF">        get_ciphersuites_for_curl</font> 
-        fi +<font color="#FFFFFF">        _ciphersuites</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RETVAL&quot;</font> 
-    fi+<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$_ciphersuites&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">curl</font><font color="#E6DB74"> </font><font color="#FFFFFF">$_retry</font><font color="#FD971F"> --proto</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">=https</font><font color="#FFFFFF">&apos;</font><font color="#FD971F"> --tlsv1</font><font color="#E6DB74">.2</font><font color="#FD971F"> --ciphers</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$_ciphersuites&quot;</font><font color="#FD971F"> --silent --show-error --fail --location</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> --output</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">            _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> check_help_for &quot;$3&quot; curl</font><font color="#FD971F"> --proto --tlsv1</font><font color="#FFFFFF">.2</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Not enforcing TLS v1.2, this is potentially less secure</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">curl</font><font color="#E6DB74"> </font><font color="#FFFFFF">$_retry</font><font color="#FD971F"> --silent --show-error --fail --location</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> --output</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">                _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">                _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">curl</font><font color="#E6DB74"> </font><font color="#FFFFFF">$_retry</font><font color="#FD971F"> --proto</font><font color="#E6DB74"> </font><font color="#FFFFFF">&apos;</font><font color="#E6DB74">=https</font><font color="#FFFFFF">&apos;</font><font color="#FD971F"> --tlsv1</font><font color="#E6DB74">.2</font><font color="#FD971F"> --silent --show-error --fail --location</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> --output</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">                _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$_err&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;$_err&quot; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;$_err&quot; </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> 404$</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                err &quot;</font><font color="#E6DB74">installer for platform &apos;</font><font color="#FFFFFF">$3</font><font color="#E6DB74">&apos; not found, this may be unsupported</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">return</font><font color="#FFFFFF"> $_status</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_dld&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> wget </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">wget</font><font color="#FD971F"> -V</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#F92672">|</font><font color="#FFFFFF">head</font><font color="#FD971F"> -2</font><font color="#F92672">|</font><font color="#FFFFFF">tail</font><font color="#FD971F"> -1</font><font color="#F92672">|</font><font color="#FFFFFF">cut</font><font color="#FD971F"> -f1 -d</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">BusyBox</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: using the BusyBox version of wget.  Not enforcing strong cipher suites for TLS or TLS v1.2, this is potentially less secure</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">            _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">wget</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> -O</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">            _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">            get_ciphersuites_for_wget</font> 
 +<font color="#FFFFFF">            _ciphersuites</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RETVAL&quot;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$_ciphersuites&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">wget</font><font color="#FD971F"> --https-only --secure-protocol</font><font color="#F92672">=</font><font color="#E6DB74">TLSv1_2</font><font color="#FD971F"> --ciphers</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$_ciphersuites&quot;</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> -O</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">                _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">                </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> check_help_for &quot;$3&quot; wget</font><font color="#FD971F"> --https-only --secure-protocol</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                    </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Not enforcing TLS v1.2, this is potentially less secure</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                    _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">wget</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> -O</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">                    _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">                    _err</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">wget</font><font color="#FD971F"> --https-only --secure-protocol</font><font color="#F92672">=</font><font color="#E6DB74">TLSv1_2 </font><font color="#FFFFFF">&quot;$1&quot;</font><font color="#FD971F"> -O</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;$2&quot;</font><font color="#E6DB74"> </font><font color="#BE84FF">2</font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">1</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">                    _status</font><font color="#F92672">=</font><font color="#FFFFFF">$?</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$_err&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;$_err&quot; </font><font color="#F92672">&gt;&amp;</font><font color="#BE84FF">2</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;$_err&quot; </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74"> 404 Not Found$</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                err &quot;</font><font color="#E6DB74">installer for platform &apos;</font><font color="#FFFFFF">$3</font><font color="#E6DB74">&apos; not found, this may be unsupported</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">return</font><font color="#FFFFFF"> $_status</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">        err &quot;</font><font color="#E6DB74">Unknown downloader</font><font color="#FFFFFF">&quot;   </font><font color="#7C7865"># should not reach here</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">}</font>
  
-    RETVAL="$_cs+<font color="#A6E22E">check_help_for</font><font color="#FFFFFF">() {</font> 
-}+<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _arch</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _cmd</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _arg</font> 
 +<font color="#FFFFFF">    _arch</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$1&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#66D9EF">shift</font> 
 +<font color="#FFFFFF">    _cmd</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$1&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#66D9EF">shift</font>
  
-Return cipher suite string specified by user, otherwise return strong TLS 1.2-1.3 cipher suites +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _category</font> 
-if support by local tools is detected. Detection currently supports these wget backends: +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> &quot;$_cmd&quot;</font><font color="#FD971F"> --help</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">For all options use the manual or &quot;--help all&quot;.</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-GnuTLS and OpenSSL (possibly also LibreSSL and BoringSSL). Return value can be empty. +<font color="#FFFFFF">      _category</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">all</font><font color="#FFFFFF">&quot;</font> 
-get_ciphersuites_for_wget() { +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
-    if [ -n "${RUSTUP_TLS_CIPHERSUITES-}]; then +<font color="#FFFFFF">      _category</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;&quot;</font> 
-        user specified custom cipher suites, assume they know what they're doing +<font color="#FFFFFF">    </font><font color="#F92672">fi</font>
-        RETVAL="$RUSTUP_TLS_CIPHERSUITES+
-        return +
-    fi+
  
-    local _cs="" +<font color="#FFFFFF"   </font><font color="#F92672">case</font><font color="#FFFFFF"> &quot;$_arch&quot</font><font color="#F92672">in</font>
-    if wget -V | grep -q '\-DHAVE_LIBSSL'; then +
-        # "unspecifiedis for arch, allows for possibility old OS using macports, homebrew, etc. +
-        if check_help_for "notspecified" "wget" "TLSv1_2" "--ciphers" "--https-only" "--secure-protocol"; then +
-            _cs=$(get_strong_ciphersuites_for "openssl"+
-        fi +
-    elif wget -V | grep -q '\-DHAVE_LIBGNUTLS'then +
-        # "unspecified" is for arch, allows for possibility old OS using macports, homebrew, etc. +
-        if check_help_for "notspecified" "wget" "TLSv1_2" "--ciphers" "--https-only" "--secure-protocol"; then +
-            _cs=$(get_strong_ciphersuites_for "gnutls"+
-        fi +
-    fi+
  
-    RETVAL="$_cs+<font color="#FFFFFF">        </font><font color="#F92672">*</font><font color="#FFFFFF">darwin</font><font color="#F92672">*)</font> 
-}+<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> check_cmd sw_vers</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">case</font><font color="#FFFFFF"> $(sw_vers</font><font color="#FD971F"> -productVersion</font><font color="#FFFFFF">) </font><font color="#F92672">in</font> 
 +<font color="#FFFFFF">                10.</font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># If we&apos;re running on macOS, older than 10.13, then we always</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># fail to find these options to force fallback</font> 
 +<font color="#FFFFFF">                    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">(</font><font color="#FFFFFF">sw_vers</font><font color="#FD971F"> -productVersion</font><font color="#E6DB74"> </font><font color="#F92672">|</font><font color="#E6DB74"> </font><font color="#FFFFFF">cut</font><font color="#FD971F"> -d</font><font color="#E6DB74">.</font><font color="#FD971F"> -f2</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot; </font><font color="#FD971F">-lt</font><font color="#FFFFFF"> 13 </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">                        </font><font color="#7C7865"># Older than 10.13</font> 
 +<font color="#FFFFFF">                        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Detected macOS platform older than 10.13</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                        </font><font color="#F92672">return</font><font color="#FFFFFF"> 1</font> 
 +<font color="#FFFFFF">                    </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">                    ;;</font> 
 +<font color="#FFFFFF">                11.</font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># We assume Big Sur will be OK for now</font> 
 +<font color="#FFFFFF">                    ;;</font> 
 +<font color="#FFFFFF">                </font><font color="#F92672">*)</font> 
 +<font color="#FFFFFF">                    </font><font color="#7C7865"># Unknown product version, warn and continue</font> 
 +<font color="#FFFFFF">                    </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning: Detected unknown macOS major version: </font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">sw_vers</font><font color="#FD971F"> -productVersion</font><font color="#E6DB74">)</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                    </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">Warning TLS capabilities detection may fail</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">                    ;;</font> 
 +<font color="#FFFFFF">            </font><font color="#F92672">esac</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">        ;;</font>
  
-Return strong TLS 1.2-1.3 cipher suites in OpenSSL or GnuTLS syntax. TLS 1.2 +<font color="#FFFFFF">    </font><font color="#F92672">esac</font> 
-excludes non-ECDHE and non-AEAD cipher suites. DHE is excluded due to bad + 
-# DH params often found on servers (see RFC 7919). Sequence matches or is +<font color="#FFFFFF">    </font><font color="#F92672">for</font><font color="#FFFFFF"> _arg </font><font color="#F92672">in</font><font color="#FFFFFF"> &quot;$@&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">do</font> 
-similar to Firefox 68 ESR with weak cipher suites disabled via about:config. +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#F92672">!</font><font color="#FFFFFF"> &quot;$_cmd&quot;</font><font color="#FD971F"--help</font><font color="#FFFFFF"> &quot;$_category&quot; </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#F92672"> --</font><font color="#FFFFFF"> &quot;$_arg&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
-# $1 must be openssl or gnutls. +<font color="#FFFFFF">            </font><font color="#F92672">return</font><font color="#FFFFFF"> 1</font> 
-get_strong_ciphersuites_for() { +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
-    if "$1" = "openssl]then +<font color="#FFFFFF"   </font><font color="#F92672">done</font>
-        OpenSSL is forgiving of unknown values, no problems with TLS 1.3 values on versions that don't support it yet. +
-        echo "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384" +
-    elif [ "$1" = "gnutls]; then +
-        GnuTLS isn't forgiving of unknown values, so this may require a GnuTLS version that supports TLS 1.3 even if wget doesn't. +
-        # Begin with SECURE128 (and higher) then remove/add to build cipher suites. Produces same 9 cipher suites as OpenSSL but in slightly different order. +
-        echo "SECURE128:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-DTLS-ALL:-CIPHER-ALL:-MAC-ALL:-KX-ALL:+AEAD:+ECDHE-ECDSA:+ECDHE-RSA:+AES-128-GCM:+CHACHA20-POLY1305:+AES-256-GCM" +
-    fi +
-}+
  
-main "$@" || exit 1 +<font color="#FFFFFF">    true </font><font color="#7C7865"># not strictly needed</font> 
-</code></WRAP>+<font color="#FFFFFF">}</font> 
 + 
 +<font color="#7C7865"># Check if curl supports the --retry flag, then pass it to the curl invocation.</font> 
 +<font color="#A6E22E">check_curl_for_retry_support</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _retry_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#7C7865"># &quot;unspecified&quot; is for arch, allows for possibility old OS using macports, homebrew, etc.</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> check_help_for &quot;</font><font color="#E6DB74">notspecified</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">curl</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--retry</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        _retry_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">--retry 3</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> check_help_for &quot;</font><font color="#E6DB74">notspecified</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">curl</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--continue-at</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            </font><font color="#7C7865"># &quot;-C -&quot; tells curl to automatically find where to resume the download when retrying.</font> 
 +<font color="#FFFFFF">            _retry_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">--retry 3 -C -</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    RETVAL</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$_retry_supported&quot;</font> 
 +<font color="#FFFFFF">}</font> 
 + 
 +<font color="#7C7865"># Return cipher suite string specified by user, otherwise return strong TLS 1.2-1.3 cipher suites</font> 
 +<font color="#7C7865"># if support by local tools is detected. Detection currently supports these curl backends:</font> 
 +<font color="#7C7865"># GnuTLS and OpenSSL (possibly also LibreSSL and BoringSSL). Return value can be empty.</font> 
 +<font color="#A6E22E">get_ciphersuites_for_curl</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">RUSTUP_TLS_CIPHERSUITES</font><font color="#F92672">-</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># user specified custom cipher suites, assume they know what they&apos;re doing</font> 
 +<font color="#FFFFFF">        RETVAL</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RUSTUP_TLS_CIPHERSUITES&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">return</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _openssl_syntax</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">no</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _gnutls_syntax</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">no</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _backend_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> curl</font><font color="#FD971F"> -V</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74"> OpenSSL/</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        _openssl_syntax</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> curl</font><font color="#FD971F"> -V</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -iq</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74"> LibreSSL/</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        _openssl_syntax</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> curl</font><font color="#FD971F"> -V</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -iq</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74"> BoringSSL/</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        _openssl_syntax</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> curl</font><font color="#FD971F"> -V</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -iq</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74"> GnuTLS/</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        _gnutls_syntax</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">else</font> 
 +<font color="#FFFFFF">        _backend_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">no</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _args_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">no</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_backend_supported&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># &quot;unspecified&quot; is for arch, allows for possibility old OS using macports, homebrew, etc.</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> check_help_for &quot;</font><font color="#E6DB74">notspecified</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">curl</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--tlsv1.2</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--ciphers</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--proto</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _args_supported</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _cs</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_args_supported&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_openssl_syntax&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _cs</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_strong_ciphersuites_for</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">openssl</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$_gnutls_syntax&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">yes</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _cs</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_strong_ciphersuites_for</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">gnutls</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    RETVAL</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$_cs&quot;</font> 
 +<font color="#FFFFFF">}</font> 
 + 
 +<font color="#7C7865"># Return cipher suite string specified by user, otherwise return strong TLS 1.2-1.3 cipher suites</font> 
 +<font color="#7C7865"># if support by local tools is detected. Detection currently supports these wget backends:</font> 
 +<font color="#7C7865"># GnuTLS and OpenSSL (possibly also LibreSSL and BoringSSL). Return value can be empty.</font> 
 +<font color="#A6E22E">get_ciphersuites_for_wget</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> </font><font color="#FD971F">-n</font><font color="#FFFFFF"> &quot;$</font><font color="#E6DB74">{</font><font color="#FFFFFF">RUSTUP_TLS_CIPHERSUITES</font><font color="#F92672">-</font><font color="#E6DB74">}</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># user specified custom cipher suites, assume they know what they&apos;re doing</font> 
 +<font color="#FFFFFF">        RETVAL</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$RUSTUP_TLS_CIPHERSUITES&quot;</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">return</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    </font><font color="#F92672">local</font><font color="#FFFFFF"> _cs</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> wget</font><font color="#FD971F"> -V</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">\-DHAVE_LIBSSL</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># &quot;unspecified&quot; is for arch, allows for possibility old OS using macports, homebrew, etc.</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> check_help_for &quot;</font><font color="#E6DB74">notspecified</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">wget</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">TLSv1_2</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--ciphers</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--https-only</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--secure-protocol</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _cs</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_strong_ciphersuites_for</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">openssl</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> wget</font><font color="#FD971F"> -V</font><font color="#FFFFFF"> </font><font color="#F92672">|</font><font color="#FFFFFF"> grep</font><font color="#FD971F"> -q</font><font color="#FFFFFF"> &apos;</font><font color="#E6DB74">\-DHAVE_LIBGNUTLS</font><font color="#FFFFFF">&apos;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># &quot;unspecified&quot; is for arch, allows for possibility old OS using macports, homebrew, etc.</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">if</font><font color="#FFFFFF"> check_help_for &quot;</font><font color="#E6DB74">notspecified</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">wget</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">TLSv1_2</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--ciphers</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--https-only</font><font color="#FFFFFF">&quot; &quot;</font><font color="#E6DB74">--secure-protocol</font><font color="#FFFFFF">&quot;</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">            _cs</font><font color="#F92672">=</font><font color="#FFFFFF">$</font><font color="#E6DB74">(</font><font color="#FFFFFF">get_strong_ciphersuites_for</font><font color="#E6DB74"> </font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">gnutls</font><font color="#FFFFFF">&quot;</font><font color="#E6DB74">)</font> 
 +<font color="#FFFFFF">        </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 + 
 +<font color="#FFFFFF">    RETVAL</font><font color="#F92672">=</font><font color="#FFFFFF">&quot;$_cs&quot;</font> 
 +<font color="#FFFFFF">}</font> 
 + 
 +<font color="#7C7865"># Return strong TLS 1.2-1.3 cipher suites in OpenSSL or GnuTLS syntax. TLS 1.2</font> 
 +<font color="#7C7865"># excludes non-ECDHE and non-AEAD cipher suites. DHE is excluded due to bad</font> 
 +<font color="#7C7865"># DH params often found on servers (see RFC 7919). Sequence matches or is</font> 
 +<font color="#7C7865"># similar to Firefox 68 ESR with weak cipher suites disabled via about:config.</font> 
 +<font color="#7C7865"># $1 must be openssl or gnutls.</font> 
 +<font color="#A6E22E">get_strong_ciphersuites_for</font><font color="#FFFFFF">() {</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">if</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$1&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">openssl</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># OpenSSL is forgiving of unknown values, no problems with TLS 1.3 values on versions that don&apos;t support it yet.</font> 
 +<font color="#FFFFFF">        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">elif</font><font color="#FFFFFF"> </font><font color="#66D9EF">[</font><font color="#FFFFFF"> &quot;$1&quot; </font><font color="#F92672">=</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">gnutls</font><font color="#FFFFFF">&quot; </font><font color="#66D9EF">]</font><font color="#F92672">;</font><font color="#FFFFFF"> </font><font color="#F92672">then</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># GnuTLS isn&apos;t forgiving of unknown values, so this may require a GnuTLS version that supports TLS 1.3 even if wget doesn&apos;t.</font> 
 +<font color="#FFFFFF">        </font><font color="#7C7865"># Begin with SECURE128 (and higher) then remove/add to build cipher suites. Produces same 9 cipher suites as OpenSSL but in slightly different order.</font> 
 +<font color="#FFFFFF">        </font><font color="#66D9EF">echo</font><font color="#FFFFFF"> &quot;</font><font color="#E6DB74">SECURE128:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-DTLS-ALL:-CIPHER-ALL:-MAC-ALL:-KX-ALL:+AEAD:+ECDHE-ECDSA:+ECDHE-RSA:+AES-128-GCM:+CHACHA20-POLY1305:+AES-256-GCM</font><font color="#FFFFFF">&quot;</font> 
 +<font color="#FFFFFF">    </font><font color="#F92672">fi</font> 
 +<font color="#FFFFFF">}</font> 
 + 
 +<font color="#FFFFFF">main &quot;$@&quot; </font><font color="#F92672">||</font><font color="#FFFFFF"> </font><font color="#66D9EF">exit</font><font color="#FFFFFF"> 1</font> 
 +</pre></html></WRAP>
  
  • rust.1715842844.txt.gz
  • 最終更新: 2024/05/16 16:00
  • by ともやん