local s = {}
local 简文件库 = require("lfs")
local ffi = require("ffi")
--~ 排
--~ 办排中值的能
--~ 入参2
--~ 入参3
--~ 入参4
function s.历排(u1_0, u1, u2, u3, u4)
  local k1_0
  --~ 集排
  k1_0 = {}
  for o5 = 1, #u1_0 do
    k1_0[#k1_0 + 1] = u1(u1_0[o5], u2, u3, u4)
    end
  return k1_0
  end
--~ 文
--~ 历文的能
--~ 入参2
--~ 入参3
function s.历文(u1, u2, u3, u4)
  local k1_0
  --~ 集排
  k1_0 = {}
  for o5 in u2(u1, u3, u4) do
    k1_0[#k1_0 + 1] = o5
    end
  return k1_0
  end
--~ 排
--~ 能
function s.历排取一(u1_0, u1)
  local k1
  for u2 = 1, #u1_0 do
    --~ 值
    k1 = s.历排取一的模(k1, u1_0[u2], u1)
    end
  return k1
  end
--~ 值
--~ 排中值
function s.历排取一的模(u1, u2, u3)
  if u1 == nil then
    return u2
  elseif u3(u1, u2) then
    return u2
  else
    return u1
    end
  end
--~ 对
--~ 能
function s.历对取一(u1_0, u1)
  local k1, k2
  for u2, u2_0 in pairs(u1_0) do
    --~ 键
    --~ 值
    k1, k2 = s.历对取一的模(k1, k2, u2, u2_0, u1)
    end
  return k1, k2
  end
function s.历对取一的模(u1, u2, u3, u4, o5)
  if u1 == nil then
    return u3, u4
  elseif o5(u1, u2, u3, u4) then
    return u3, u4
  else
    return u1, u2
    end
  end
function s.历对(u1_0, u1, u2)
  local k1
  local k1_0, k2_0
  --~ 对
  k1_0 = {}
  for u3, u2_0 in pairs(u1_0) do
    --~ 键
    --~ 值
    k1, k2_0 = u1(u3, u2_0, u2)
    if k1 then
      k1_0[k1] = k2_0
    else
      end
    end
  return k1_0
  end
--~ 排中值
--~ 值类
--~ 办值的能
function s.操类(u1_0, u1, u2)
  if type(u1_0) == u1 then
    return u2(u1_0)
  else
    return u1_0
    end
  end
--~ 排中文
--~ 入参2
--~ 入参3
--~ 入参4
function s.全筛文(u1, u2, u3, u4)
  print(4)
  if string.find(u1, u2, u3, u4) then
    return u1
    end
  end
--~ 文
--~ 前缀
function s.加前缀(u1, u2)
  return (u2 or "") .. u1
  end
--~ 文
--~ 后缀
function s.加后缀(u1, u2)
  return u1 .. (u2 or "")
  end
--~ 令
function s.办令(u1)
  print(u1)
  os.execute(u1)
  end
--~ 文
--~ 前缀
function s.全筛前缀(u1, u2)
  if string.sub(u1, 1, #u2) == u2 then
    return u1
    end
  end
--~ 文
--~ 后缀
function s.全筛后缀(u1, u2)
  if string.sub(u1, -#u2) == u2 then
    return u1
    end
  end
--~ 目对
function s.用令行工具操文件(u1_0)
  local k1_9
  --~ 令行排
  k1_9 = s.历文(u1_0.文件目, 简文件库.dir)
  k1_9 = s.历排(k1_9, s.全筛后缀, u1_0.文件类)
  for u1 = 1, #k1_9 do
    k1_9[u1] = s.加前缀(k1_9[u1], u1_0.文件目)
    k1_9[u1] = s.加前缀(k1_9[u1], [["]])
    k1_9[u1] = s.加后缀(k1_9[u1], [["]])
    k1_9[u1] = s.加前缀(k1_9[u1], u1_0.令行前缀)
    s.办令(k1_9[u1])
    end
  end
--~ 文件路
--~ 式
function s.读文件(u1, u2)
  local k1
  local k1_3
  --~ 文件
  k1_3 = io.open(u1, u2 or "r")
  --~ 文
  k1 = k1_3:read("a")
  k1_3:flush()
  k1_3:close()
  return k1
  end
--~ 常量排
function s.加对限(u1_0)
  table.insert(u1_0, 1, "local k1_0 = {}")
  table.insert(u1_0, "return k1_0")
  return table.concat(u1_0, "\n")
  end
--~ 文
--~ 文件路
--~ 式
function s.写文件(u1, u2, u3)
  local k1_3
  --~ 文件
  k1_3 = io.open(u2, u3 or "w")
  k1_3:write(u1)
  k1_3:flush()
  k1_3:close()
  end
--~ 文
function s.删左右空白(u1)
  u1 = string.gsub(u1, "^%s+", "")
  return string.gsub(u1, "%s+$", "")
  end
--~ 对
--~ 对
function s.连两对(u1_0, u2_0)
  for u3_0, u4_0 in pairs(u2_0) do
    u1_0[u3_0] = u4_0
    end
  return u1_0
  end
--~ 键
--~ 值
function s.修对类(u1_0, u2_0)
  if tonumber(u1_0) then
    return tonumber(u1_0), u2_0
  else
    return u1_0, u2_0
    end
  end
do
  --~ 加数
  local k1 = 0
  function s.递增()
    k1 = k1 + 1
    return k1
    end
  end
--~ 左加数
--~ 右加数
function s.加法(u1, u2)
  return u1 + u2
  end
--~ 左减数
--~ 右减数
function s.减法(u1, u2)
  return u1 - u2
  end
--~ 左乘数
--~ 右乘数
function s.乘法(u1, u2)
  return u1 * u2
  end
--~ 左除数
--~ 右除数
function s.除法(u1, u2)
  return u1 / u2
  end
--~ 左数
--~ 右数
function s.位和(u1, u2)
  return bit.band(u1, u2)
  end
--~ 数
--~ 右移几位
function s.位右移(u1, u2)
  return bit.rshift(u1, u2)
  end
--~ 键
--~ 最大值
--~ 键
--~ 值
function s.筛对中最大值(u1, u2, u3, u4)
  if u2 < u4 then
    return true
    end
  end
--~ 最短键
--~ 值
--~ 键
--~ 值
function s.筛对中最短键(u1, u2, u3, u4)
  if #u1 > #u3 then
    return true
    end
  end
--~ 最短文
--~ 值
function s.筛排中最短文(u1, u2)
  if #u1 > #u2 then
    return true
    end
  end
--~ 内数
function s.to_uint64(u1)
  local uint64_pointer = ffi.new("uint64_t[1]", u1)
  return uint64_pointer[0]
  end
--~ 键
--~ 值
--~ 要找的值
function s.全等筛对中值(u1, u2, u3)
  if u2 == u3 then
    return u1, u2
  else
    end
  end
return s
