o=s:option(Value,"bootstrap_resolvers",translate("Fallback resolvers"),translate("DNS resolver on query fails or for forced forwarding domain list.")..translate("Split MultiValues by a comma"))
o=s:option(DynamicList,"blocked_named",translate("Domain Black List"),translate("Domains to blacklist, [.conf|.adblock] file treat like dnsmasq configure: ").."https://download.dnscrypt.info/blacklists/domains/mybase.txt")
o=s:option(Value,"server_names",translate("Resolver White List"),"%s %s"%{translate("Resolver white list by name, Allow *ALL* in default."),translate("Split MultiValues by a comma")})
o.optional=true
o.rmempty=true
o.placeholder="eg: goodguy1,goodguy2"
o=s:option(Value,"disabled_server_names",translate("Resolver Black List"),"%s %s"%{translate("Resolver black list by name, disable specified resolver."),translate("Split MultiValues by a comma")})
o.optional=true
o.rmempty=true
o.placeholder="eg: badguy1,badguy2"
o=s:option(Value,"max_clients",translate("Simulaneous"),translate("Maximum number of simultaneous client connections to accept."))
o.optional=true
o.rmempty=true
o.datatype="uinteger"
o.default=500
o.placeholder=o.default
o=s:option(Value,"keepalive",translate("Keep Alive"),translate("Keepalive for HTTP (HTTPS, HTTP/2) queries, in seconds."))
o.optional=true
o.rmempty=true
o.datatype="uinteger"
o.default=30
o.placeholder=o.default
o=s:option(Value,"cert_refresh_delay",translate("Cert refresh delay"),translate("Delay, in minutes, after which certificates are reloaded."))
o.optional=true
o.rmempty=true
o.datatype="uinteger"
o.default=240
o.placeholder=o.default
o=s:option(Value,"netprobe_timeout",translate("Net probe timer"),translate("Maximum time (in seconds) to wait for network connectivity before initializing the proxy."))
o.optional=true
o.rmempty=true
o.datatype="uinteger"
o.default=60
o.placeholder=o.default
o=s:option(Value,"reject_ttl",translate("Reject TTL"),translate("TTL for synthetic responses sent when a request has been blocked (due to IPv6 or blacklists)."))
o.optional=true
o.rmempty=true
o.datatype="uinteger"
o.default=60
o.placeholder=o.default
o=s:option(Value,"cache_size",translate("Cache size"),translate("Cache size for queries."))
o.optional=true
o.rmempty=true
o.datatype="uinteger"
o.default=512
o.placeholder=o.default
o=s:option(Value,"query_meta",translate("Additional TXT records"),translate("Additional data to attach to outgoing queries.")..[[<br />]]..translate("Split MultiValues by a comma"))
o.optional=true
o.rmempty=true
o.placeholder="eg: key1:value1,key2:value2"
o=s:option(Value,"proxy",translate("SOCKS proxy"),translate("Tor doesn't support UDP, so set `force_tcp` to `true` as well."))
o.optional=true
o.rmempty=true
o.placeholder="eg: socks5://127.0.0.1:9050"
o=s:option(Value,"http_proxy",translate("HTTP/HTTPS proxy"),translate("Only for DoH servers."))
o.optional=true
o.rmempty=true
o.placeholder="eg: http://127.0.0.1:8888"
o=s:option(DynamicList,"cloaking_rules",translate("Cloaking rules"),translate("Cloaking returns a predefined address for a specific name."))
o=s:option(Value,"addr_filter",translate("Address filter list(ipset)"),translate("The ipset list name that DNSCrypt server addresses try appending to if any."))
o:value("auto",translate("Follwing available one (auto)"))
o:value("vpsiplist",translate("PassWall direct (vpsiplist)"))
o:value("localnetwork",translate("Clash direct (localnetwork)"))
o:value("ss_spec_wan_ac",translate("SSR-Plus direct (ss_spec_wan_ac)"))