# Format of RzCmdDesc/RzCmdDescHelp descriptor
# - name: same as RzCmdDesc.name (mandatory)
#   cname: >
#     name used in the generated C code for structures, handlers, etc. Make sure
#     this is a valid C name. It cannot contain special characters like `$`, `"`,
#     `=`, etc.
#   summary: same as RzCmdDescHelp.summary (mandatory)
#   description: same as RzCmdDescHelp.description
#   type: >
#     same as RzCmdDescType. GROUP and ARGV_MODES are automatically detected
#     based on the other fields, the rest must be specified. ARGV is the default
#     mode if not specified.
#   args_str: same as RzCmdDescHelp.args_str
#   usage: same as RzCmdDescHelp.usage
#   options: same as RzCmdDescHelp.options
#   modes: >
#     same as RzCmdDesc.modes. When present the type is automatically set to
#     ARGV_MODES.
#   details: >
#     an array of RzCmdDescDetail or a string referencing an already existing
#     RzCmdDescDetail array
#   args: >
#     an array of RzCmdDescArg or a string referencing an already existing
#     RzCmdDescArg array
#   handler: >
#     name of the C handler that handles the command. If not specified it is based
#     on the cname. For OLDINPUT, the handler has the form `rz_{cname}`, for all
#     other cases it is `rz_{cname}_handler`.
#   subcommands: >
#     array of RzCmdDesc/RzCmdDescHelp descriptors. When present the
#     type is RZ_CMD_DESC_TYPE_GROUP. Only the first subcommand can contain a
#     descriptor with the same name as this one.
#
# Format of RzCmdDescDetail:
#   details:
#     - name: same as RzCmdDescDetail.name (mandatory)
#       entries: array of RzCmdDescDetailEntry (mandatory)
#
# Format of RzCmdDescDetailEntry:
#   entries:
#     - text: same as RzCmdDescDetailEntry.text (mandatory)
#       comment: same as RzCmdDescDetailEntry.comment (mandatory)
#       arg_str: same as RzCmdDescDetailEntry.arg_str
#
# Format of RzCmdDescArg:
#   args:
#     - name: same as RzCmdDescArg.name (mandatory)
#       optional: same as RzCmdDescArg.optional
#       no_space: same as RzCmdDescArg.no_space
#       type: same as RzCmdDescArg.type (mandatory)
#       flags: same as RzCmdDescArg.flags
#       default_value: same as RzCmdDescArg.type
#       choices: same as RzCmdDescArg.choices (only valid if type is RZ_CMD_ARG_TYPE_CHOICES)
#
---
- name: "!"
  cname: cmd_system
  summary: Run given commands as in system(3)
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: _
  cname: last_output
  summary: Print last output
  args: []
- name: "#!"
  cname: hash_bang
  summary: List all available interpreters / Run interpreter
  args:
    - name: interpreter-name
      type: RZ_CMD_ARG_TYPE_STRING
      optional: true
      no_space: true
    - name: arg
      type: RZ_CMD_ARG_TYPE_STRING
      flags: RZ_CMD_ARG_FLAG_ARRAY
      optional: true
  details:
    - name: Examples
      entries:
        - text: "#!"
          arg_str: "python"
          comment: Run python commandline
        - text: "#!"
          arg_str: "python foo.py"
          comment: Run foo.py python script
        - text: "#!"
          arg_str: "python foo.py arg1"
          comment: Run foo.py python script and pass it arg1 as argument
- name: $
  cname: cmd_alias
  summary: Alias commands and strings
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: "%"
  cname: env_percentage
  summary: Get/set environment variables
  args_str: "[<varname>[=<varvalue>]]"
  args: env
  details: env
  handler: env
- name: "&"
  summary: Manage tasks
  subcommands:
    - name: "&"
      cname: tasks
      summary: List all tasks / Run <cmd> in a new background task
      args:
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
      modes:
        - RZ_OUTPUT_MODE_STANDARD
        - RZ_OUTPUT_MODE_JSON
    - name: "&t"
      cname: tasks_transient
      summary: Run <cmd> in a new transient background task (auto-delete when it is finished)
      args:
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
    - name: "&="
      cname: tasks_output
      summary: Show output of task <n>
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
    - name: "&b"
      cname: tasks_break
      summary: Break task <n>
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
    - name: "&-"
      cname: tasks_delete
      summary: Delete task <n> or schedule for deletion when it is finished
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
    - name: "&-*"
      cname: tasks_delete_all
      summary: Delete all done tasks
      args: []
    - name: "&&"
      cname: tasks_wait
      summary: Wait until task <n> is finished / all tasks are finished
      args:
        - name: name
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
- name: (
  cname: cmd_macro
  summary: Manage scripting macros
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: "*"
  cname: pointer
  summary: Pointer read/write data/values
  description: >
    Read or write values at a given address. When the value starts with `0x`,
    a 4-bytes value or 8-bytes value is written in the memory at address,
    depending on the size of the value. When value does not start with `0x`
    an hexstring with arbitrary length is expected and it is written starting
    from the specified address.
  args_str: "<addr>[=<0xvalue>|<hexstring>]"
  args:
    - name: addr
      type: RZ_CMD_ARG_TYPE_RZNUM
    - name: value
      type: RZ_CMD_ARG_TYPE_NUM
      optional: true
  details:
    - name: Examples
      entries:
        - text: "*"
          arg_str: "entry0=cc"
          comment: write trap in entrypoint
        - text: "*"
          arg_str: "entry0+10=0x804800"
          comment: write 0x804800 as a 4-byte value at 10 bytes from the entrypoint
        - text: "*"
          arg_str: "entry0"
          comment: read the value contained at the entrypoint
- name: "-"
  cname: cmd_stdin
  summary: Open cfg.editor and run script
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: .
  summary: Interpret commands
  subcommands:
    - name: .
      cname: interpret
      summary: >
        Repeat last executed command backward / Interpret the output of the
        command as rizin commands
      args:
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
          no_space: true
    - name: ". "
      cname: interpret_script
      summary: Interpret script
      args:
        - name: file.rz
          type: RZ_CMD_ARG_TYPE_FILE
          no_space: true
    - name: ...
      cname: repeat_forward
      summary: Repeat last executed command forward (same as \\n)
      args: []
    - name: ..
      cname: interpret_output
      summary: Run the output of the execution of a script as rizin commands
      args:
        - name: file
          type: RZ_CMD_ARG_TYPE_FILE
    - name: .-
      cname: interpret_editor_2
      summary: Open cfg.editor and interpret tmp file
      args: []
    - name: .*
      cname: interpret_pipe
      summary: >
        Same as #!pipe open cfg.editor and interpret tmp file
      args:
        - name: file
          type: RZ_CMD_ARG_TYPE_FILE
    - name: .!
      cname: interpret_system
      summary: Interpret output of command
      args:
        - name: bin
          type: RZ_CMD_ARG_TYPE_FILE
          no_space: true
        - name: arg
          type: RZ_CMD_ARG_TYPE_STRING
          flags: RZ_CMD_ARG_FLAG_ARRAY
          optional: true
    - name: .(
      cname: interpret_macro
      summary: Interpret output of macro
      args:
        - name: macro-name
          type: RZ_CMD_ARG_TYPE_MACRO
          no_space: true
        - name: macro-arg
          type: RZ_CMD_ARG_TYPE_STRING
          flags: RZ_CMD_ARG_FLAG_ARRAY
          optional: true
        - name: )
          type: RZ_CMD_ARG_TYPE_FAKE
- name: /
  cname: cmd_search
  summary: Search for bytes, regexps, patterns, ..
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: "="
  summary: Connect with other instances of rizin
  subcommands:
    - name: "="
      cname: remote
      summary: List all open connections / Exec <cmd> at remote <fd>
      args_str: " [[<fd>] <cmd>]"
      args:
        - name: fd
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
    - name: =<
      cname: remote_send
      summary: Send output of local <cmd> to remote <fd>
      args:
        - name: fd
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
    - name: =!
      cname: io_system_run
      summary: Run <cmd> via rz_io_system
      args:
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
    - name: =+
      cname: remote_add
      summary: Connect to remote host:port
      args:
        - name: "[proto://]host:port"
          type: RZ_CMD_ARG_TYPE_STRING
    - name: =-
      cname: remote_del
      summary: remove all hosts or host 'fd'
      args:
        - name: fd
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
    - name: ==
      cname: remote_open
      summary: Open remote session with host 'fd', 'q' to quit
      args:
        - name: fd
          type: RZ_CMD_ARG_TYPE_NUM
    - name: =!=
      cname: remote_mode_enable
      summary: Enable remote cmd mode
      args: []
    - name: "!=!"
      cname: remote_mode_disable
      summary: Disable remote cmd mode
      args: []
    - name: "=:"
      cname: remote_rap
      summary: Start the rap server (o rap://9999) / Execute <cmd> on rap server
      args:
        - name: "[host:]port"
          type: RZ_CMD_ARG_TYPE_STRING
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
    - name: =g
      cname: equal_g_handler_old
      summary: Start the gdbserver
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: =h
      cname: equal_h_handler_old
      summary: Start the http webserver
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: =H
      cname: equal_H_handler_old
      summary: Start the http webserver (and launch the web browser)
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: =t
      cname: remote_tcp
      summary: Start the tcp server
      args:
        - name: "[host:]port"
          type: RZ_CMD_ARG_TYPE_STRING
        - name: cmd
          type: RZ_CMD_ARG_TYPE_CMD
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
    - name: "=&:"
      cname: remote_rap_bg
      summary: Start rap server in background (same as '&_=h')
      args:
        - name: port
          type: RZ_CMD_ARG_TYPE_NUM
- name: "?"
  cname: cmd_help
  options: "[??]"
  summary: Help or evaluate math expression
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: <
  cname: push_escaped
  summary: Push escaped string into the RzCons.readChar buffer
  args:
    - name: characters
      type: RZ_CMD_ARG_TYPE_STRING
- name: "0"
  cname: cmd_ox
  summary: Alias for `s 0x...`
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: a
  cname: cmd_analysis
  summary: Analysis commands
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: b
  cname: cmd_bsize
  summary: Display or change the block size
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: c
  cname: cmd_cmp
  summary: Compare block with given data
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: C
  cname: cmd_meta
  summary: Code metadata (comments, format, hints, ..)
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: d
  cname: cmd_debug
  summary: Debugger commands
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: e
  summary: List/get/set config evaluable vars
  subcommands:
    - name: e
      cname: eval_getset
      summary: Get/Set value of config variable <key>
      args_str: " <key>[=<val|?>] [<key>[=<val|?>] ...]]"
      args:
        - name: key=value
          type: RZ_CMD_ARG_TYPE_EVAL_FULL
          flags: RZ_CMD_ARG_FLAG_ARRAY
      details:
        - name: Examples
          entries:
            - text: e
              arg_str: " asm.bytes"
              comment: "Show current value of config variable `asm.bytes`"
            - text: e
              arg_str: " asm.bytes=true"
              comment: "Set config variable `asm.bytes` to `true`"
            - text: e
              arg_str: " search.in=?"
              comment: "Show all possible values for config variable `search.in`"
            - text: e
              arg_str: " search.in=??"
              comment: "Show all possible values for config variable `search.in` together with description"
            - text: e
              arg_str: " asm.bytes=true asm.offset=false"
              comment: "Set asm.bytes to true and asm.offset to false"
    - name: el
      cname: eval_list
      summary: List config variables with their descriptions
      modes:
        - RZ_OUTPUT_MODE_STANDARD
        - RZ_OUTPUT_MODE_RIZIN
        - RZ_OUTPUT_MODE_JSON
        - RZ_OUTPUT_MODE_QUIET
        - RZ_OUTPUT_MODE_LONG
        - RZ_OUTPUT_MODE_LONG_JSON
      args:
        - name: key
          type: RZ_CMD_ARG_TYPE_EVAL_KEY
          optional: true
    - name: e-
      cname: eval_reset
      summary: Reset config variables
      args: []
    - name: e!
      cname: eval_bool_invert
      summary: Invert the boolean value of config variable <key>
      args:
        - name: key
          type: RZ_CMD_ARG_TYPE_EVAL_KEY
    - name: ec
      cname: eval_color
      summary: Set color for given key (prompt, offset, ...)
      type: RZ_CMD_DESC_TYPE_OLDINPUT
      args: []
    - name: ee
      cname: eval_editor
      summary: Open editor to change the value of config variable <key>
      args:
        - name: key
          type: RZ_CMD_ARG_TYPE_EVAL_KEY
    - name: er
      cname: eval_readonly
      summary: Set config variable <key> as read-only
      args:
        - name: key
          type: RZ_CMD_ARG_TYPE_EVAL_KEY
    - name: es
      cname: eval_spaces
      summary: List all config variable spaces or sub-keys/sub-spaces if a <key> is provided
      args:
        - name: key
          type: RZ_CMD_ARG_TYPE_EVAL_KEY
          optional: true
    - name: et
      cname: eval_type
      summary: Show type of given config variable <key>
      args:
        - name: key
          type: RZ_CMD_ARG_TYPE_EVAL_KEY
    - name: env
      cname: env
      summary: Get/set environment variables
      args_str: " [<varname>[=<varvalue>]]"
      args:
        - name: varname
          optional: true
          type: RZ_CMD_ARG_TYPE_ENV
        - name: varvalue
          optional: true
          type: RZ_CMD_ARG_TYPE_STRING
      details:
        - name: Examples
          entries:
            - text: "%"
              comment: List all environment variables
            - text: "%"
              arg_str: "SHELL"
              comment: Print value of SHELL variable
            - text: "%"
              arg_str: "TMPDIR=/tmp"
              comment: Set TMPDIR to "/tmp"
            - text: "env"
              arg_str: " SHELL"
              comment: Same as `%SHELL`
        - name: Environment
          entries:
            - text: "RZ_FILE"
              comment: "currently opened file name"
            - text: "RZ_OFFSET"
              comment: "10base offset 64bit value"
            - text: "RZ_BYTES"
              comment: "TODO: variable with bytes in curblock"
            - text: "RZ_XOFFSET"
              comment: "same as above, but in 16 base"
            - text: "RZ_BSIZE"
              comment: "block size"
            - text: "RZ_ENDIAN"
              comment: "'big' or 'little'"
            - text: "RZ_IOVA"
              comment: "is io.va true? virtual addressing (1,0)"
            - text: "RZ_DEBUG"
              comment: "debug mode enabled? (1,0)"
            - text: "RZ_BLOCK"
              comment: "TODO: dump current block to tmp file"
            - text: "RZ_SIZE"
              comment: "file size"
            - text: "RZ_ARCH"
              comment: "value of asm.arch"
            - text: "RZ_BITS"
              comment: "arch reg size (8, 16, 32, 64)"
            - text: "RZ_BIN_LANG"
              comment: "assume this lang to demangle"
            - text: "RZ_BIN_DEMANGLE"
              comment: "demangle or not"
            - text: "RZ_BIN_PDBSERVER"
              comment: "e pdb.server"
- name: f
  cname: cmd_flag
  summary: Manage flags
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: g
  cname: cmd_egg
  summary: Generate shellcodes with rz_egg
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: i
  cname: cmd_info
  summary: Get info about opened binary file
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: k
  cname: cmd_kuery
  summary: Run sdb-query
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: ls
  cname: ls
  summary: List files and directories
  args:
    - name: arg
      type: RZ_CMD_ARG_TYPE_STRING
      flags: RZ_CMD_ARG_FLAG_ARRAY
      optional: true
- name: m
  cname: cmd_m
  summary: Make directories and move files
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: L
  cname: cmd_plugins
  summary: List, unload, load rizin plugins
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: o
  cname: cmd_open
  summary: Open file at optional address
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: p
  cname: cmd_print
  summary: Print commands
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: P
  summary: Project management
  subcommands:
    - name: Ps
      cname: project_save
      summary: Save a project
      args:
        - name: project.rzdb
          type: RZ_CMD_ARG_TYPE_FILE
          optional: true
    - name: Po
      cname: project_open
      summary: Open a project
      args:
        - name: project.rzdb
          type: RZ_CMD_ARG_TYPE_FILE
    - name: Poo
      cname: project_open_no_bin_io
      summary: Open a project on top of currently loaded binaries
      args:
        - name: project.rzdb
          type: RZ_CMD_ARG_TYPE_FILE
- name: q
  cname: cmd_quit
  summary: Quit program with a return value
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: r
  cname: cmd_resize
  summary: Resize file
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: s
  summary: Seek commands
  subcommands:
    - name: s
      cname: seek
      summary: Print current address / Seek to address
      args:
        - name: addr
          type: RZ_CMD_ARG_TYPE_RZNUM
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
    - name: "s:"
      cname: seek_padded
      summary: Print current address with <n> padded zeros (defaults to 8)
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
    - name: s.
      cname: seek_base
      summary: Seek honoring a base from core->offset
      args:
        - name: hex_offset
          type: RZ_CMD_ARG_TYPE_NUM
    - name: sd
      cname: seek_delta
      summary: Seek to a delta relative to current offset
      args:
        - name: delta
          type: RZ_CMD_ARG_TYPE_NUM
    - name: s--
      cname: seek_blocksize_backward
      summary: Seek blocksize bytes backward (/=n)
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
    - name: s++
      cname: seek_blocksize_forward
      summary: Seek blocksize bytes forward (/=n)
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
    - name: sH
      summary: Seek history commands
      subcommands:
        - name: sH
          cname: seek_history_list
          summary: List undo seek history
          args: []
          modes:
            - RZ_OUTPUT_MODE_STANDARD
            - RZ_OUTPUT_MODE_JSON
            - RZ_OUTPUT_MODE_RIZIN
        - name: sHr
          cname: seek_redo
          summary: Go to position before the last undo (forward in history)
          args: []
        - name: sHu
          cname: seek_undo
          summary: Go to last seek in seek history (back in history)
          args: []
        - name: sH-
          cname: seek_undo_reset
          summary: Clear seek history
          args: []
    - name: s/
      cname: seek_search
      summary: Seek to the first hit of a search
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: sa
      cname: seek_asz
      summary: Seek to current offset (or <addr>) aligned to <align>
      args:
        - name: align
          type: RZ_CMD_ARG_TYPE_NUM
        - name: addr
          type: RZ_CMD_ARG_TYPE_RZNUM
          flags: RZ_CMD_ARG_FLAG_LAST
          optional: true
    - name: sb
      cname: seek_basicblock
      summary: Seek aligned to bb start
      args: []
    - name: sf
      cname: seek_function
      summary: Seek to next function / Seek to specific function
      args:
        - name: fcn
          type: RZ_CMD_ARG_TYPE_FCN
          optional: true
    - name: sf.
      cname: seek_function_current
      summary: Seek to the beginning of current function
      args: []
    - name: sg
      cname: seek_begin
      summary: Seek to begin of section/file
      args: []
    - name: sG
      cname: seek_end
      summary: Seek to end of section/file
      args: []
    - name: sn
      cname: seek_next
      summary: Seek to next location of the given <type> or scr.nkey otherwise
      description: <type> and scr.nkey can be one of "opcodes", "function", "hit", "flags".
      args:
        - name: type
          type: RZ_CMD_ARG_TYPE_CHOICES
          optional: true
          choices: ["opcodes", "function", "hit", "flags"]
    - name: sp
      cname: seek_prev
      summary: Seek to prev location
      description: <type> and scr.nkey can be one of "opcodes", "function", "hit", "flags".
      args:
        - name: type
          type: RZ_CMD_ARG_TYPE_CHOICES
          optional: true
          choices: ["opcodes", "function", "hit", "flags"]
    - name: so
      cname: seek_opcode
      summary: Seek to <n> next opcodes
      args:
        - name: n
          type: RZ_CMD_ARG_TYPE_NUM
          optional: true
    - name: sr
      cname: seek_register
      summary: Seek to register
      args:
        - name: reg
          type: RZ_CMD_ARG_TYPE_STRING
    - name: sleep
      cname: sleep
      summary: Sleep for the specified amount of seconds
      args:
        - name: seconds
          type: RZ_CMD_ARG_TYPE_NUM
- name: t
  cname: cmd_type
  summary: Types, noreturn, signatures, C parser and more
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: uniq
  cname: uniq
  summary: List uniq strings in file
  args:
    - name: filename
      type: RZ_CMD_ARG_TYPE_FILE
- name: uname
  cname: uname
  summary: Provide system info
  args:
    - name: r
      type: RZ_CMD_ARG_TYPE_STRING
      flags: RZ_CMD_ARG_FLAG_OPTION
      optional: true
- name: V
  cname: cmd_visual
  summary: Enter visual mode
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: v
  cname: cmd_panels
  summary: Enter visual panel mode
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: w
  summary: Write commands
  subcommands:
    - name: w
      cname: write
      summary: Write string
      args:
        - name: string
          type: RZ_CMD_ARG_TYPE_STRING
          flags: RZ_CMD_ARG_FLAG_LAST
    - name: wB
      summary: Set or unset bits with given value
      subcommands:
        - name: wB
          cname: write_bits
          summary: Set bits with given value
          description: >
            Set the bits that are set in the value passed as arguments. 0
            bits in the value argument are ignored, while the others are set
            at the current offset.
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
        - name: wB-
          cname: write_unset_bits
          summary: Unset bits with given value
          description: >
            Unset the bits that are set in the value passed as arguments. 0
            bits in the value argument are ignored, while the others are
            unset at the current offset
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
      details:
        - name: Examples
          entries:
            - text: wB
              arg_str: " 0x20"
              comment: Sets the 5th bit at current offset, leaving all other bits intact.
    - name: wv
      summary: Write value of given size
      subcommands:
        - name: wv
          cname: write_value
          summary: Write value as 4-bytes/8-bytes based on value
          description: >
            Write the number passed as argument at the current offset as a 4
            - bytes value or 8 - bytes value if the input is bigger than
            UT32_MAX, respecting the cfg.bigendian variable
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
        - name: wv1
          cname: write_value1
          summary: Write value of 1 byte
          description: >
            Write the number passed as argument at the current offset as 1 -
            byte, respecting the cfg.bigendian variable
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
        - name: wv2
          cname: write_value2
          summary: Write value of 2 byte
          description: >
            Write the number passed as argument at the current offset as 2 -
            bytes, respecting the cfg.bigendian variable
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
        - name: wv4
          cname: write_value4
          summary: Write value of 4 byte
          description: >
            Write the number passed as argument at the current offset as 4 -
            bytes, respecting the cfg.bigendian variable
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
        - name: wv8
          cname: write_value8
          summary: Write value of 8 byte
          description: >
            Write the number passed as argument at the current offset as 8 -
            bytes, respecting the cfg.bigendian variable
          args:
            - name: value
              type: RZ_CMD_ARG_TYPE_NUM
      details:
        - name: Examples
          entries:
            - text: wv
              arg_str: " 0xdeadbeef"
              comment: Write the value 0xdeadbeef at current offset
            - text: wv2
              arg_str: " 0xdead"
              comment: Write the word 0xdead at current offset
            - text: wv1
              arg_str: " 0xde"
              comment: Write the byte 0xde at current offset
    - name: w0
      cname: write_zero
      summary: Write <len> bytes with value 0x00
      description: Fill len bytes starting from the current offset with the value 0.
      args:
        - name: len
          type: RZ_CMD_ARG_TYPE_NUM
    - name: w
      cname: write_incdec
      summary: increment/decrement byte, word, ..
      options: <1248><+->
      args_str: " [<n>]"
      type: RZ_CMD_DESC_TYPE_INNER
      subcommands:
        - name: w1
          summary: Increment/decrement a byte
          subcommands:
            - name: w1+
              cname: write_1_inc
              summary: Increment a byte
              description: Increment a byte at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
            - name: w1-
              cname: write_1_dec
              summary: Decrement a byte
              description: Decrement a byte at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
          details:
            - name: Examples
              entries:
                - text: "w1+"
                  comment: Add 1 to the byte at the current offset.
                - text: "w1-"
                  comment: Subtract 1 to the byte at the current offset.
                - text: "w1-"
                  arg_str: " 9"
                  comment: Subtract 9 to the byte at the current offset.
        - name: w2
          summary: Increment/decrement a word
          subcommands:
            - name: w2+
              cname: write_2_inc
              summary: Increment a word
              description: Increment a word at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
            - name: w2-
              cname: write_2_dec
              summary: Decrement a word
              description: Decrement a word at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
          details:
            - name: Examples
              entries:
                - text: "w2+"
                  comment: Add 1 to the word at the current offset.
                - text: "w2-"
                  comment: Subtract 1 to the word at the current offset.
                - text: "w2-"
                  arg_str: " 9"
                  comment: Subtract 9 to the word at the current offset.
        - name: w4
          summary: Increment/decrement a dword
          subcommands:
            - name: w4+
              cname: write_4_inc
              summary: Increment a dword
              description: Increment a dword at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
            - name: w4-
              cname: write_4_dec
              summary: Decrement a dword
              description: Decrement a dword at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
          details:
            - name: Examples
              entries:
                - text: "w4+"
                  comment: Add 1 to the dword at the current offset.
                - text: "w4-"
                  comment: Subtract 1 to the dword at the current offset.
                - text: "w4-"
                  arg_str: " 9"
                  comment: Subtract 9 to the dword at the current offset.
        - name: w8
          summary: Increment/decrement a qword
          subcommands:
            - name: w8+
              cname: write_8_inc
              summary: Increment a qword
              description: Increment a qword at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
            - name: w8-
              cname: write_8_dec
              summary: Decrement a qword
              description: Decrement a qword at the current offset by 1 or n, if specified
              args:
                - name: n
                  type: RZ_CMD_ARG_TYPE_NUM
                  optional: true
          details:
            - name: Examples
              entries:
                - text: "w8+"
                  comment: Add 1 to the qword at the current offset.
                - text: "w8-"
                  comment: Subtract 1 to the qword at the current offset.
                - text: "w8-"
                  arg_str: " 9"
                  comment: Subtract 9 to the qword at the current offset.
    - name: w6
      summary: Write base64 [d]ecoded or [e]ncoded string
      subcommands:
        - name: w6d
          cname: write_base64_decode
          summary: Write the base64-decoded bytes
          description: >
            Base64-Decode the string passed as argument and write it at the
            current offset.
          args:
            - name: base64
              type: RZ_CMD_ARG_TYPE_STRING
        - name: w6e
          cname: write_base64_encode
          summary: Write the base64-encoded bytes
          description: >
            Base64-Encode the hex string passed as argument and write it at
            the current offset
          args:
            - name: hexstring
              type: RZ_CMD_ARG_TYPE_STRING
      details:
        - name: Examples
          entries:
            - text: w6d
              arg_str: " SGVsbG9Xb3JsZAo="
              comment: Write the string "HelloWorld" (without quotes) at current offset.
            - text: w6e
              arg_str: " 48656c6c6f576f726c64"
              comment: Write the string "SGVsbG9Xb3JsZAo=" (without quotes) at current offset.
    - name: wh
      cname: wh_handler_old
      summary: whereis/which shell command
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: we
      cname: we_handler_old
      summary: Extend write operations (insert bytes instead of replacing)
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wu
      cname: wu_handler_old
      summary: Apply unified hex patch (see output of cu)
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wr
      cname: wr_handler_old
      summary: Write <num> random bytes
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wA
      cname: wA_handler_old
      summary: Alter/modify opcode at current seek (see wA?)
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wc
      cname: wc_handler_old
      summary: Write cache commands
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wz
      cname: wz_handler_old
      summary: Write zero-terminated string
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wt
      cname: wt_handler_old
      summary: Write to file
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wf
      cname: wf_handler_old
      summary: Write data from file, socket, offset
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: ww
      cname: ww_handler_old
      summary: Write wide string
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wx
      cname: wx_handler_old
      summary: Write hexadecimal
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wa
      cname: wa_handler_old
      summary: Write opcode, separated by ';'
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wb
      cname: wb_handler_old
      summary: Write in current block with cyclic hexstring
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wm
      cname: wm_handler_old
      summary: Set binary mask hexpair to be used as cyclic write mask
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wo
      cname: wo_handler_old
      summary: Write in block with operation
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: wd
      cname: wd_handler_old
      summary: Duplicate N bytes from offset at current seek
      type: RZ_CMD_DESC_TYPE_OLDINPUT
    - name: ws
      cname: ws_handler_old
      summary: Write 1 byte for length and then the string
      type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: x
  cname: cmd_hexdump
  summary: Alias for 'px' (print hexadecimal)
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: y
  cname: cmd_yank
  summary: Yank/paste bytes from/to memory
  type: RZ_CMD_DESC_TYPE_OLDINPUT
- name: z
  summary: Zignatures management
  subcommands:
    - name: z
      cname: zign_show
      summary: Show zignatures
      args: []
      modes:
        - RZ_OUTPUT_MODE_STANDARD
        - RZ_OUTPUT_MODE_QUIET
        - RZ_OUTPUT_MODE_RIZIN
        - RZ_OUTPUT_MODE_JSON
        - RZ_OUTPUT_MODE_SDB
    - name: z.
      cname: zign_find
      summary: Find matching zignatures
      args: []
      modes:
        - RZ_OUTPUT_MODE_STANDARD
        - RZ_OUTPUT_MODE_RIZIN
    - name: zb
      summary: Search for best match
      subcommands:
        - name: zb
          cname: zign_best
          summary: >
            Find <n> closest matching zignatures to function at current offset
          args:
            - name: n
              type: RZ_CMD_ARG_TYPE_NUM
              optional: true
              default: 5
        - name: zbr
          cname: zign_best_name
          summary: Search for <n> most similar functions to zigname
          args:
            - name: zigname
              type: RZ_CMD_ARG_TYPE_ZIGN
            - name: n
              type: RZ_CMD_ARG_TYPE_NUM
              optional: true
              default: 5
    - name: z-
      cname: zign_delete
      summary: Delete zignature
      args:
        - name: zigname|*
          type: RZ_CMD_ARG_TYPE_ZIGN
    - name: za
      summary: Add zignature
      subcommands:
        - name: za
          cname: zign_add
          summary: Add zignature
          args:
            - name: zigname
              type: RZ_CMD_ARG_TYPE_STRING
            - name: type
              type: RZ_CMD_ARG_TYPE_CHOICES
              choices:
                - a
                - b
                - c
                - n
                - g
                - o
                - r
                - x
                - h
                - v
            - name: param
              type: RZ_CMD_ARG_TYPE_STRING
              flags: RZ_CMD_ARG_FLAG_ARRAY
          details:
            - name: Zignature types
              entries:
                - text: "a"
                  comment: "bytes pattern (analysis mask)"
                - text: "b"
                  comment: "bytes pattern"
                - text: "c"
                  comment: "base64 comment"
                - text: "n"
                  comment: "real function name"
                - text: "g"
                  comment: "graph metrics"
                - text: "o"
                  comment: "original offset"
                - text: "r"
                  comment: "references"
                - text: "x"
                  comment: "cross references"
                - text: "h"
                  comment: "bbhash (hashing of function basic blocks)"
                - text: "v"
                  comment: "vars (and args)"
            - name: Bytes patterns
              entries:
                - text: ""
                  comment: bytes can contain '..' (dots) to specify a binary mask
            - name: Graph metrics
              entries:
                - text: cc
                  comment: cyclomatic complexity
                - text: edges
                  comment: number of edges
                - text: nbbs
                  comment: number of basic blocks
                - text: ebbs
                  comment: number of end basic blocks
            - name: Examples
              entries:
                - text: "za"
                  arg_str: " foo b 558bec..e8........"
                  comment: ""
                - text: "za"
                  arg_str: " foo a e811223344"
                  comment: ""
                - text: "za"
                  arg_str: " foo g cc=2 nbbs=3 edges=3 ebbs=1"
                  comment: ""
                - text: "za"
                  arg_str: " foo g nbbs=3 edges=3"
                  comment: ""
                - text: "za"
                  arg_str: " foo v b-32 b-48 b-64"
                  comment: ""
                - text: "za"
                  arg_str: " foo o 0x08048123"
                  comment: ""
                - text: "za"
                  arg_str: " foo c this is a comment (base64?)"
                  comment: ""
                - text: "za"
                  arg_str: " foo r sym.imp.strcpy sym.imp.sprintf sym.imp.strlen"
                  comment: ""
                - text: "za"
                  arg_str: " foo h 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
                  comment: ""
        - name: zaf
          cname: zign_add_fcn
          summary: Create zignature for function
          args:
            - name: fcnname
              type: RZ_CMD_ARG_TYPE_FCN
              optional: true
            - name: zigname
              type: RZ_CMD_ARG_TYPE_STRING
              optional: true
        - name: zaF
          cname: zign_add_all_fcns
          summary: Generate zignatures for all functions
          args: []
    - name: zg
      cname: zign_generate
      summary: Generate zignatures (alias for zaF)
      args: []
    - name: zo
      summary: Manage zignature files
      subcommands:
        - name: zo
          cname: zign_load_sdb
          summary: Load zinatures from sdb file
          args:
            - name: filename
              type: RZ_CMD_ARG_TYPE_FILE
        - name: zos
          cname: zign_save_sdb
          summary: Save zinatures to sdb file
          args:
            - name: filename
              type: RZ_CMD_ARG_TYPE_FILE
        - name: zoz
          cname: zign_load_gzip_sdb
          summary: Load zinatures from gzipped sdb file
          args:
            - name: filename
              type: RZ_CMD_ARG_TYPE_FILE
    - name: zf
      summary: Manage FLIRT signatures
      subcommands:
        - name: zfd
          cname: zign_flirt_dump
          summary: Open FLIRT file and dump
          args:
            - name: filename
              type: RZ_CMD_ARG_TYPE_FILE
        - name: zfs
          cname: zign_flirt_scan
          summary: Open FLIRT file and scan
          args:
            - name: filename
              type: RZ_CMD_ARG_TYPE_FILE
    - name: z/
      summary: Search zignatures
      subcommands:
        - name: z/
          cname: zign_search
          summary: Search zignatures on range and flag matches
          args: []
          modes:
            - RZ_OUTPUT_MODE_STANDARD
            - RZ_OUTPUT_MODE_RIZIN
        - name: z/f
          cname: zign_search_fcn
          summary: Search only function zignatures
          args: []
          modes:
            - RZ_OUTPUT_MODE_STANDARD
            - RZ_OUTPUT_MODE_RIZIN
    - name: zc
      summary: Compare zignatures in current zignspace with another one
      subcommands:
        - name: zc
          cname: zign_cmp
          summary: Compare all zignatures in current space with <zignspace>
          args:
            - name: zignspace
              type: RZ_CMD_ARG_TYPE_ZIGN_SPACE
        - name: zcn
          summary: Compare current zignspace with zigns on other <zignspace>
          subcommands:
            - name: zcn
              cname: zign_cmp_name
              summary: >
                Compare current zignspace with zigns with same name on other
                <zignspace>
              args:
                - name: zignspace
                  type: RZ_CMD_ARG_TYPE_ZIGN_SPACE
            - name: zcn!
              cname: zign_cmp_diff_name
              summary: >
                Compare current zignspace with zigns with different name on
                other <zignspace>
              args:
                - name: zignspace
                  type: RZ_CMD_ARG_TYPE_ZIGN_SPACE
    - name: zs
      summary: Manage zignspaces
      subcommands:
        - name: zs
          cname: zign_space_select
          summary: Display/select zignspaces
          args:
            - name: zignspace
              type: RZ_CMD_ARG_TYPE_ZIGN_SPACE
              optional: true
          modes:
            - RZ_OUTPUT_MODE_STANDARD
            - RZ_OUTPUT_MODE_JSON
            - RZ_OUTPUT_MODE_RIZIN
        - name: zs-
          cname: zign_space_delete
          summary: Pop last zignspace or delete <zignspace>
          args:
            - name: zignspace
              type: RZ_CMD_ARG_TYPE_ZIGN_SPACE
              optional: true
        - name: zs+
          cname: zign_space_add
          summary: Push previous zignspace and set
          args:
            - name: zignspace
              type: RZ_CMD_ARG_TYPE_ZIGN_SPACE
        - name: zsr
          cname: zign_space_rename
          summary: Rename selected zignspace
          args:
            - name: newname
              type: RZ_CMD_ARG_TYPE_STRING
    - name: zi
      summary: Show zignatures matching information
      subcommands:
        - name: zi
          cname: zign_info
          summary: Show zignatures matching information
          args:
            - name: commens
              type: RZ_CMD_ARG_TYPE_STRING
              optional: true
          modes:
            - RZ_OUTPUT_MODE_STANDARD
            - RZ_OUTPUT_MODE_JSON
            - RZ_OUTPUT_MODE_RIZIN
            - RZ_OUTPUT_MODE_QUIET
        - name: zii
          cname: zign_info_range
          summary: Show zignatures matching information in range
          args:
            - name: from
              type: RZ_CMD_ARG_TYPE_NUM
            - name: to
              type: RZ_CMD_ARG_TYPE_NUM
- name: "@"
  cname: tmp_modifiers
  options: "[?]"
  summary: "'@' help, temporary modifiers"
  type: RZ_CMD_DESC_TYPE_FAKE
  usage: "<cmd> <@> <args>"
  details:
    - name: ""
      entries:
        - text: "<cmd> @"
          arg_str: " <addr>"
          comment: "Temporary seek to <addr>"
        - text: "<cmd> @"
          arg_str: " <addr>!<blocksize>"
          comment: "Temporary seek to <addr> and set blocksize to <blocksize>"
        - text: "<cmd> @.."
          arg_str: "<addr>"
          comment: "Temporary partial address seek (see s..)"
        - text: "<cmd> @!"
          arg_str: "<blocksize>"
          comment: "Temporary change the block size"
        - text: "<cmd> @{"
          arg_str: "<from> <to>}"
          comment: "Temporary set from and to for commands supporting ranges"
        - text: "<cmd> @a:"
          arg_str: "<arch>[:<bits>]"
          comment: "Temporary set arch and bits, if specified"
        - text: "<cmd> @b:"
          arg_str: "<bits>"
          comment: "Temporary set asm.bits"
        - text: "<cmd> @B:"
          arg_str: "<nth>"
          comment: >
            Temporary seek to nth instruction in current basic block
            (negative numbers too)
        - text: "<cmd> @e:"
          arg_str: "<k>=<v>[<k>=<v>]"
          comment: >
            Temporary change eval vars (multiple vars separated by comma)
        - text: "<cmd> @f:"
          arg_str: "<file>"
          comment: "Temporary replace block with file contents"
        - text: "<cmd> @F:"
          arg_str: "<flagspace>"
          comment: "Temporary change flag space"
        - text: "<cmd> @i:"
          arg_str: "<nth.op>"
          comment: "Temporary seek to the Nth relative instruction"
        - text: "<cmd> @k:"
          arg_str: "<key>"
          comment: "Temporary seek at value of sdb key `key`"
        - text: "<cmd> @o:"
          arg_str: "<fd>"
          comment: "Temporary switch to another fd"
        - text: "<cmd> @r:"
          arg_str: "<reg>"
          comment: "Temporary seek to register value"
        - text: "<cmd> @s:"
          arg_str: "<string>"
          comment: "Temporary replace block with string"
        - text: "<cmd> @v:"
          arg_str: "<value>"
          comment: "Temporary replace block with value, written according to asm.bits and cfg.bigendian"
        - text: "<cmd> @x:"
          arg_str: "<hexstring>"
          comment: "Temporary replace block with hexstring"
- name: "@@"
  cname: iterators
  options: "[?]"
  summary: "'@@' help, iterators"
  type: RZ_CMD_DESC_TYPE_FAKE
  usage: "<cmd> <@@> <args>"
  details:
    - name: ""
      entries:
        - text: "<cmd> @@."
          arg_str: " <file>"
          comment: >
            Run <cmd> over the offsets specified in <file>, one per line
        - text: "<cmd> @@="
          arg_str: "<addr1> [<addr2> ...]"
          comment: "Run <cmd> over the listed addresses"
        - text: "<cmd> @@@="
          arg_str: "<addr1> <blksz1> [<addr2> <blksz2> ...]"
          comment: >
            Run <cmd> over the listed addresses and set the proper block size
        - text: "<cmd> @@/"
          arg_str: "<search-cmd>"
          comment: "Run <cmd> over the search results of /<search-cmd>"
        - text: "<cmd> @@c:"
          arg_str: "<cmd2>"
          comment: "Run <cmd> on all addresses in the output of <cmd2>"
        - text: "<cmd> @@@c:"
          arg_str: "<cmd2>"
          comment:
            Run <cmd> on all addresses/blocksizes in the output of <cmd2>,
            similar to @@@=
        - text: "<cmd> @@C"
          arg_str: "[:<glob>]"
          comment:
            Run <cmd> over all comments matching <glob>. <glob> may contain
            `*` to indicate multiple chars. If not specified all comments are
            considered.
        - text: "<cmd> @@dbt[abs]"
          arg_str: ""
          comment: "Run <cmd> on every backtrace address, bp or sp"
        - text: "<cmd> @@t"
          arg_str: ""
          comment: "Run <cmd> over all threads"
        - text: "<cmd> @@b"
          arg_str: ""
          comment: "Run <cmd> over all basic blocks of the current function"
        - text: "<cmd> @@i"
          arg_str: ""
          comment: "Run <cmd> over all instructions of the current basic block"
        - text: "<cmd> @@iS"
          arg_str: ""
          comment: "Run <cmd> over all sections"
        - text: "<cmd> @@iSS"
          arg_str: ""
          comment: "Run <cmd> over all segments"
        - text: "<cmd> @@is"
          arg_str: ""
          comment: "Run <cmd> over all symbols"
        - text: "<cmd> @@iz"
          arg_str: ""
          comment: "Run <cmd> over all strings"
        - text: "<cmd> @@f"
          arg_str: "[:<glob>]"
          comment:
            Run <cmd> over all flags matching <glob>. <glob> may contain `*`
            to indicate multiple chars. If not specified all flags are
            considered.
        - text: "<cmd> @@F"
          arg_str: "[:<glob>]"
          comment:
            Run <cmd> over all functions matching <glob>. <glob> may contain
            `*` to indicate multiple chars. If not specified all functions
            are considered.
        - text: "<cmd> @@om"
          arg_str: ""
          comment: "Run <cmd> over all iomap (see `om`)"
        - text: "<cmd> @@dm"
          arg_str: ""
          comment: "Run <cmd> over all debug maps (see `dm`)"
        - text: "<cmd> @@r"
          arg_str: ""
          comment: "Run <cmd> over all registers"
        - text: "<cmd> @@s:"
          arg_str: "<from> <to> <step>"
          comment:
            Run <cmd> on all addresses starting from <from> and going up to
            <to> (excluded), with a step <step>.
- name: ">"
  cname: redirection
  options: "[?]"
  summary: Redirection help ('>')
  type: RZ_CMD_DESC_TYPE_FAKE
  usage: "<cmd> > <arg>"
  details:
    - name: ""
      entries:
        - text: "<cmd> >"
          arg_str: " <file>|<$alias>"
          comment:
            Redirect STDOUT of <cmd> to <file> or save it to an alias (see
            $?)
        - text: "<cmd> 2>"
          arg_str: " <file>|<$alias>"
          comment:
            Redirect STDERR of <cmd> to <file> or save it to an alias (see
            $?)
        - text: "<cmd> H>"
          arg_str: " <file>|<$alias>"
          comment:
            Redirect HTML output of <cmd> to <file> or save it to an alias
            (see $?)
- name: "|"
  cname: pipe
  options: "[?]"
  summary: Pipe help ('|')
  type: RZ_CMD_DESC_TYPE_FAKE
  usage: "<cmd> |[<program>|H|T|.|]"
  details:
    - name: ""
      entries:
        - text: "<cmd> |"
          comment: "Disable scr.html and scr.color"
        - text: "<cmd> |H"
          comment: "Enable scr.html, respect scr.color"
        - text: "<cmd> |"
          arg_str: " <program>"
          comment: "Pipe output of command to program"
        - text: "<cmd> |."
          comment: "Alias for .<cmd>"
- name: "~"
  cname: grep
  options: "[?]"
  summary: Internal grep help ('~')
  type: RZ_CMD_DESC_TYPE_FAKE
  usage: "<command>~[modifier][word,word][endmodifier][[column]][:line]"
  details:
    - name: Modifiers
      entries:
        - text: "&"
          comment: "All words must match to grep the line"
        - text: "$[n]"
          comment: "Sort numerically / alphabetically the Nth column"
        - text: "$!"
          comment: "Sort in inverse order"
        - text: ","
          comment: "Token to define another keyword"
        - text: "+"
          comment: "Case insensitive grep (grep -i)"
        - text: "^"
          comment: "Words must be placed at the beginning of line"
        - text: "<"
          comment: "Perform zoom operation on the buffer"
        - text: "!"
          comment: "Negate grep"
        - text: "?"
          comment: "Count number of matching lines"
        - text: "?."
          comment: "Count number chars"
        - text: ":s..e"
          comment: "Show lines s-e"
        - text: ".."
          comment: "Internal 'less'"
        - text: "..."
          comment: "Internal 'hud' (like V_)"
        - text: "{:"
          comment: "Human friendly indentation (yes, it's a smiley)"
        - text: "{:.."
          comment: "Less the output of {:"
        - text: "{:..."
          comment: "Hud the output of {:"
        - text: "{}"
          comment: "Json indentation"
        - text: "{}.."
          comment: "Less json indentation"
        - text: "{}..."
          comment: "Hud json indentation"
        - text: "{path}"
          comment: "Json path grep"
    - name: EndModifiers
      entries:
        - text: "$"
          comment: Words must be placed at the end of line
    - name: Columns
      entries:
        - text: "[n]"
          comment: Show only columns n
        - text: "[n-m]"
          comment: Show column n to m
        - text: "[n-]"
          comment: Show all columns starting from column n
        - text: "[i,j,k]"
          comment: Show the columns i, j and k
    - name: Examples
      entries:
        - text: i
          arg_str: "~:0"
          comment: Show first line of 'i' output
        - text: i
          arg_str: "~:-2"
          comment: Show from the second to the last line of 'i' output
        - text: i
          arg_str: "~:0..3"
          comment: Show first three lines of 'i' output
        - text: pd
          arg_str: "~mov"
          comment: Disasm and grep for mov
        - text: pi
          arg_str: "~[0]"
          comment: Show only opcode
        - text: i
          arg_str: "~0x400$"
          comment: Show lines ending with 0x400
