haveapi 0.29.12 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Rakefile +1 -0
- data/doc/client-examples.md +198 -0
- data/haveapi.gemspec +1 -1
- data/lib/haveapi/client_example.rb +47 -1
- data/lib/haveapi/client_examples/dynamic_helpers.rb +129 -0
- data/lib/haveapi/client_examples/go_client.rb +37 -0
- data/lib/haveapi/client_examples/js_async_client.rb +14 -0
- data/lib/haveapi/client_examples/js_client.rb +179 -135
- data/lib/haveapi/client_examples/python_async_client.rb +14 -0
- data/lib/haveapi/client_examples/python_client.rb +172 -0
- data/lib/haveapi/client_examples/rust_client.rb +59 -0
- data/lib/haveapi/client_examples/ts_async_client.rb +14 -0
- data/lib/haveapi/client_examples/ts_client.rb +14 -0
- data/lib/haveapi/documentation_clients.rb +249 -0
- data/lib/haveapi/documentation_context.rb +47 -0
- data/lib/haveapi/documentation_schema.rb +73 -0
- data/lib/haveapi/public/js/highlight-LICENSE +29 -0
- data/lib/haveapi/public/js/highlight.pack.js +2 -2
- data/lib/haveapi/public/js/highlighter.js +16 -6
- data/lib/haveapi/public/js/main.js +9 -1
- data/lib/haveapi/public/js/nojs-tabs.js +37 -3
- data/lib/haveapi/server.rb +39 -0
- data/lib/haveapi/version.rb +1 -1
- data/lib/haveapi/views/main_layout.erb +11 -0
- data/lib/haveapi/views/version_page/auth_body.erb +3 -3
- data/lib/haveapi/views/version_page/client_auth.erb +2 -2
- data/lib/haveapi/views/version_page/client_example.erb +2 -11
- data/lib/haveapi/views/version_page/client_init.erb +2 -2
- data/lib/haveapi/views/version_page/client_result.erb +5 -0
- data/lib/haveapi/views/version_page/resource_body.erb +3 -7
- data/lib/haveapi/views/version_page.erb +13 -9
- data/spec/client_examples/assets/highlighter_test.cjs +26 -0
- data/spec/client_examples/assets/tabs_test.cjs +54 -0
- data/spec/client_examples/context_spec.rb +68 -0
- data/spec/client_examples/dynamic_acceptance.md +83 -0
- data/spec/client_examples/dynamic_acceptance.rb +151 -0
- data/spec/client_examples/dynamic_acceptance_spec.rb +76 -0
- data/spec/client_examples/dynamic_fixture.rb +36 -0
- data/spec/client_examples/dynamic_js_spec.rb +196 -0
- data/spec/client_examples/dynamic_metadata_spec.rb +52 -0
- data/spec/client_examples/dynamic_mounted_paths_spec.rb +65 -0
- data/spec/client_examples/dynamic_python_spec.rb +123 -0
- data/spec/client_examples/go_spec.rb +57 -0
- data/spec/client_examples/profile_mount_spec.rb +215 -0
- data/spec/client_examples/profiles_spec.rb +265 -0
- data/spec/client_examples/rust_client_spec.rb +75 -0
- data/spec/client_examples/structural_schema_spec.rb +48 -0
- data/spec/client_examples/syntax_spec.rb +2 -1
- data/spec/documentation/auth_filtering_spec.rb +12 -0
- data/spec/documentation/client_examples_spec.rb +92 -0
- data/spec/packaging_spec.rb +13 -4
- data/test_support/dynamic_documentation_api.rb +171 -0
- data/test_support/dynamic_protocol_spec.rb +133 -0
- data/test_support/dynamic_python_login_spec.rb +75 -0
- metadata +37 -4
- data/lib/haveapi/client_examples/fs_client.rb +0 -119
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'haveapi/documentation_context'
|
|
3
|
+
require 'haveapi/documentation_schema'
|
|
4
|
+
|
|
5
|
+
module HaveAPI
|
|
6
|
+
class ClientExample
|
|
7
|
+
class Profile
|
|
8
|
+
attr_reader :language, :package_name, :package_version, :adapter
|
|
9
|
+
|
|
10
|
+
def initialize(language:, package_name:, package_version:, adapter:)
|
|
11
|
+
@language = language
|
|
12
|
+
@package_name = package_name.dup.freeze
|
|
13
|
+
@package_version = package_version&.dup&.freeze
|
|
14
|
+
@adapter = adapter.freeze
|
|
15
|
+
freeze
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class Profiles
|
|
20
|
+
class Invalid < ArgumentError; end
|
|
21
|
+
|
|
22
|
+
KEYS = {
|
|
23
|
+
go: %i[import_path module_version description_path generator_version],
|
|
24
|
+
rust: %i[crate_name crate_version source snapshot_path generator_config_path generator_version]
|
|
25
|
+
}.freeze
|
|
26
|
+
|
|
27
|
+
def initialize
|
|
28
|
+
@registrations = {}
|
|
29
|
+
@profiles = {}.freeze
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def register(version, **languages)
|
|
33
|
+
raise Invalid, 'Documentation client profiles are already mounted' if @closed
|
|
34
|
+
raise Invalid, 'Unknown documentation client language' unless (languages.keys - KEYS.keys).empty?
|
|
35
|
+
|
|
36
|
+
selected = @registrations.fetch(version.to_s, {})
|
|
37
|
+
additions = {}
|
|
38
|
+
languages.each do |language, config|
|
|
39
|
+
next if config.nil?
|
|
40
|
+
raise Invalid, 'Duplicate documentation client profile' if selected.has_key?(language)
|
|
41
|
+
|
|
42
|
+
additions[language] = load_profile(language, config)
|
|
43
|
+
end
|
|
44
|
+
@registrations[version.to_s] = selected.merge(additions)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def mount(versions)
|
|
48
|
+
raise Invalid, 'Documentation client profiles are already mounted' if @closed
|
|
49
|
+
|
|
50
|
+
@closed = true
|
|
51
|
+
unknown = @registrations.keys - Array(versions).map(&:to_s)
|
|
52
|
+
raise Invalid, 'Documentation client profile selects an unavailable API version' unless unknown.empty?
|
|
53
|
+
|
|
54
|
+
@registrations.each do |version, languages|
|
|
55
|
+
snapshot = languages.dig(:rust, :snapshot)
|
|
56
|
+
if snapshot && snapshot.fetch('api_version').to_s != version
|
|
57
|
+
raise Invalid, 'Documentation Rust snapshot API version mismatch'
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Publish only after every adapter succeeds, using the complete mounted DSL.
|
|
63
|
+
def finalize(server)
|
|
64
|
+
raise Invalid, 'Documentation client profiles are not ready to finalize' unless @closed && !@finalized
|
|
65
|
+
|
|
66
|
+
completed = @registrations.to_h do |version, languages|
|
|
67
|
+
description = if languages.any? { |_language, config| !config[:profile] }
|
|
68
|
+
safely do
|
|
69
|
+
context = HaveAPI::Context.new(
|
|
70
|
+
server, version: server.versions.find { |v| v.to_s == version }, user: nil, endpoint: false, doc: true
|
|
71
|
+
)
|
|
72
|
+
StructuralSchema.copy(server.describe_version(context))
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
profiles = languages.to_h do |language, config|
|
|
76
|
+
profile = config[:profile] || safely { build_profile(language, config, description, server, version) }
|
|
77
|
+
[language, profile]
|
|
78
|
+
end
|
|
79
|
+
[version, profiles.freeze]
|
|
80
|
+
end
|
|
81
|
+
@profiles = completed.freeze
|
|
82
|
+
@registrations = nil
|
|
83
|
+
@finalized = true
|
|
84
|
+
rescue StandardError
|
|
85
|
+
abort_mount
|
|
86
|
+
raise
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def abort_mount
|
|
90
|
+
@profiles = {}.freeze
|
|
91
|
+
@registrations = nil
|
|
92
|
+
@closed = true
|
|
93
|
+
@finalized = true
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def for_version(version)
|
|
97
|
+
@profiles.fetch(version.to_s, {}).dup.freeze
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
private
|
|
101
|
+
|
|
102
|
+
def validate_config(language, config)
|
|
103
|
+
unless config.is_a?(Hash) && (config.keys - KEYS.fetch(language)).empty? &&
|
|
104
|
+
config.all? { |key, value| %i[source module_version crate_version].include?(key) || nonempty_string?(value) }
|
|
105
|
+
raise Invalid, 'Invalid documentation client profile fields'
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
config = config.dup
|
|
109
|
+
config[:generator_version] = config.fetch(:generator_version, HaveAPI::VERSION)
|
|
110
|
+
return config if config[:generator_version].match?(/\A\d+\.\d+\.\d+(?:[-+][\w.-]+)?\z/)
|
|
111
|
+
|
|
112
|
+
raise Invalid, 'Invalid documentation generator version'
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def nonempty_string?(value)
|
|
116
|
+
value.is_a?(String) && !value.strip.empty?
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def local_file(path)
|
|
120
|
+
raise Invalid, 'Documentation profiles require absolute local files' unless path.start_with?('/') && File.file?(path)
|
|
121
|
+
|
|
122
|
+
path
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def load_profile(language, config)
|
|
126
|
+
safely do
|
|
127
|
+
config = validate_config(language, config)
|
|
128
|
+
language == :go ? load_go(config) : load_rust(config)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def safely
|
|
133
|
+
yield
|
|
134
|
+
rescue LoadError
|
|
135
|
+
raise Invalid, 'Configured documentation client generator is not installed'
|
|
136
|
+
rescue JSON::ParserError, SystemCallError
|
|
137
|
+
raise Invalid, 'Cannot read configured documentation client data'
|
|
138
|
+
rescue Invalid
|
|
139
|
+
raise
|
|
140
|
+
rescue StandardError
|
|
141
|
+
raise Invalid, 'Configured documentation client schema or configuration is invalid'
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def load_go(config)
|
|
145
|
+
name = config[:import_path]
|
|
146
|
+
version = config[:module_version]
|
|
147
|
+
unless nonempty_string?(name) && name.match?(%r{\A[a-zA-Z0-9][a-zA-Z0-9._~/-]*\z}) &&
|
|
148
|
+
name.split('/').none? { |part| part.empty? || %w[. ..].include?(part) } &&
|
|
149
|
+
(version.nil? || (version.is_a?(String) && version.match?(/\Av\d+\.\d+\.\d+(?:[-+][\w.-]+)?\z/)))
|
|
150
|
+
raise Invalid, 'Invalid Go documentation client package'
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
require 'haveapi/go_client/documentation'
|
|
154
|
+
unless config.fetch(:generator_version) == HaveAPI::GoClient::VERSION
|
|
155
|
+
raise Invalid, 'Documentation Go generator version mismatch'
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
prepared = { name: name.dup.freeze, version: version&.dup&.freeze }.freeze
|
|
159
|
+
return prepared unless config.has_key?(:description_path)
|
|
160
|
+
|
|
161
|
+
description = JSON.parse(File.read(local_file(config[:description_path])))
|
|
162
|
+
{ profile: go_profile(prepared, description) }.freeze
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def go_profile(config, description)
|
|
166
|
+
adapter = HaveAPI::GoClient::Documentation.new(description:, import_path: config[:name], module_version: config[:version])
|
|
167
|
+
profile(:go, config, adapter)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def load_rust(config)
|
|
171
|
+
require 'haveapi/rust_client/documentation'
|
|
172
|
+
unless config.fetch(:generator_version) == HaveAPI::RustClient::VERSION
|
|
173
|
+
raise Invalid, 'Documentation Rust generator version mismatch'
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
legacy = config.has_key?(:generator_config_path)
|
|
177
|
+
if legacy && (config.has_key?(:crate_name) || config.has_key?(:crate_version))
|
|
178
|
+
raise Invalid, 'Conflicting Rust documentation client identities'
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
documentation = HaveAPI::RustClient::Documentation
|
|
182
|
+
snapshot = JSON.parse(File.read(local_file(config[:snapshot_path]))) if config.has_key?(:snapshot_path)
|
|
183
|
+
if (!legacy || !snapshot) && !(documentation.respond_to?(:from_description) && documentation.respond_to?(:from_snapshot))
|
|
184
|
+
raise Invalid, 'Documentation Rust generator does not support automatic or inline profiles'
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
source = if config.has_key?(:source)
|
|
188
|
+
raise Invalid, 'Documentation Rust generator does not support source metadata' unless documentation.respond_to?(:validate_source)
|
|
189
|
+
|
|
190
|
+
documentation.validate_source(config[:source])
|
|
191
|
+
end
|
|
192
|
+
generator_config = Tomlrb.load_file(local_file(config[:generator_config_path])) if legacy
|
|
193
|
+
if legacy
|
|
194
|
+
HaveAPI::RustClient::Generator.validate_config(generator_config) unless snapshot
|
|
195
|
+
name = generator_config.fetch('crate_name')
|
|
196
|
+
version = generator_config.fetch('crate_version')
|
|
197
|
+
else
|
|
198
|
+
name = config[:crate_name]
|
|
199
|
+
version = config[:crate_version]
|
|
200
|
+
HaveAPI::RustClient::Model.validate_package(crate_name: name, crate_version: version)
|
|
201
|
+
end
|
|
202
|
+
prepared = { name: name.dup.freeze, version: version&.dup&.freeze,
|
|
203
|
+
snapshot:, generator_config:, source: }.freeze
|
|
204
|
+
return prepared unless snapshot
|
|
205
|
+
|
|
206
|
+
prepared.merge(profile: rust_profile(prepared, snapshot:)).freeze
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def build_profile(language, config, description, server, version)
|
|
210
|
+
return go_profile(config, description) if language == :go
|
|
211
|
+
|
|
212
|
+
arguments = { description:, api_version: version, protocol_version: HaveAPI::PROTOCOL_VERSION,
|
|
213
|
+
mount_path: server.root }
|
|
214
|
+
if config[:generator_config]
|
|
215
|
+
snapshot = HaveAPI::RustClient::Snapshot.from_description(
|
|
216
|
+
**arguments, source_url: "https://haveapi.invalid#{server.root}v#{version}/", profile: 'server-documentation'
|
|
217
|
+
)
|
|
218
|
+
return rust_profile(config, snapshot:)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
adapter = HaveAPI::RustClient::Documentation.from_description(
|
|
222
|
+
**arguments, crate_name: config[:name], crate_version: config[:version], source: config[:source]
|
|
223
|
+
)
|
|
224
|
+
profile(:rust, config, adapter)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def rust_profile(config, snapshot:)
|
|
228
|
+
adapter = if config[:generator_config]
|
|
229
|
+
arguments = { snapshot:, config: config[:generator_config] }
|
|
230
|
+
arguments[:source] = config[:source] if config[:source]
|
|
231
|
+
HaveAPI::RustClient::Documentation.new(**arguments)
|
|
232
|
+
else
|
|
233
|
+
HaveAPI::RustClient::Documentation.from_snapshot(
|
|
234
|
+
snapshot:, crate_name: config[:name], crate_version: config[:version], source: config[:source]
|
|
235
|
+
)
|
|
236
|
+
end
|
|
237
|
+
profile(:rust, config, adapter)
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
def profile(language, config, adapter)
|
|
241
|
+
unless adapter.respond_to?(:resolve) && adapter.respond_to?(:render)
|
|
242
|
+
raise Invalid, 'Documentation client generator has an incompatible adapter interface'
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
Profile.new(language:, package_name: config[:name], package_version: config[:version], adapter:)
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'haveapi/client_example'
|
|
2
|
+
|
|
3
|
+
module HaveAPI
|
|
4
|
+
class ClientExample
|
|
5
|
+
# A request-local snapshot: never freeze or retain the server's shared help.
|
|
6
|
+
class Context
|
|
7
|
+
FIELDS = %i[version host base_url version_url description resource_path resource action_name action sample profile].freeze
|
|
8
|
+
attr_reader(*FIELDS)
|
|
9
|
+
|
|
10
|
+
def initialize(version:, host:, base_url:, version_url:, description:,
|
|
11
|
+
resource_path: [], resource: nil, action_name: nil, action: nil,
|
|
12
|
+
sample: nil, profile: nil)
|
|
13
|
+
@version = version.to_s.dup.freeze
|
|
14
|
+
@host = host.to_s.dup.freeze
|
|
15
|
+
@base_url = base_url.to_s.dup.freeze
|
|
16
|
+
@version_url = version_url.to_s.dup.freeze
|
|
17
|
+
@description = copy(description)
|
|
18
|
+
@resource_path = copy(resource_path.map(&:to_s))
|
|
19
|
+
@resource = copy(resource)
|
|
20
|
+
@action_name = action_name.nil? ? nil : action_name.to_s.dup.freeze
|
|
21
|
+
@action = copy(action)
|
|
22
|
+
@sample = copy(sample)
|
|
23
|
+
@profile = profile
|
|
24
|
+
freeze
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def with(**changes)
|
|
28
|
+
self.class.new(**FIELDS.to_h { |field| [field, public_send(field)] }, **changes)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def copy(value)
|
|
34
|
+
case value
|
|
35
|
+
when Hash
|
|
36
|
+
value.to_h { |key, item| [copy(key), copy(item)] }.freeze
|
|
37
|
+
when Array
|
|
38
|
+
value.map { |item| copy(item) }.freeze
|
|
39
|
+
when String
|
|
40
|
+
value.dup.freeze
|
|
41
|
+
else
|
|
42
|
+
value
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
module HaveAPI
|
|
4
|
+
class ClientExample
|
|
5
|
+
# Private naming/type input, never a request's authorized help or samples.
|
|
6
|
+
module StructuralSchema
|
|
7
|
+
BUILTIN_VALIDATORS = %w[present number include exclude format length confirm accept].freeze
|
|
8
|
+
|
|
9
|
+
def self.copy(description)
|
|
10
|
+
result = JSON.parse(JSON.generate(description))
|
|
11
|
+
resources(result['resources'])
|
|
12
|
+
result.fetch('authentication', {}).each_value do |provider|
|
|
13
|
+
prose(provider)
|
|
14
|
+
resources(provider['resources'])
|
|
15
|
+
end
|
|
16
|
+
freeze_data(result)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.resources(map)
|
|
20
|
+
return unless map
|
|
21
|
+
|
|
22
|
+
map.each_value do |resource|
|
|
23
|
+
prose(resource)
|
|
24
|
+
resource.fetch('actions', {}).each_value do |action|
|
|
25
|
+
prose(action)
|
|
26
|
+
action.delete('examples')
|
|
27
|
+
parameters(action['input'])
|
|
28
|
+
parameters(action['output'])
|
|
29
|
+
action.fetch('meta', nil)&.each_value do |metadata|
|
|
30
|
+
next unless metadata
|
|
31
|
+
|
|
32
|
+
parameters(metadata['input'])
|
|
33
|
+
parameters(metadata['output'])
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
resources(resource['resources'])
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.parameters(group)
|
|
41
|
+
return unless group
|
|
42
|
+
|
|
43
|
+
group.fetch('parameters', {}).each_value do |parameter|
|
|
44
|
+
prose(parameter)
|
|
45
|
+
parameter.delete('default')
|
|
46
|
+
parameter.fetch('validators', {}).each do |name, validator|
|
|
47
|
+
prose(validator) if BUILTIN_VALIDATORS.include?(name) && validator.is_a?(Hash)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.prose(object)
|
|
53
|
+
%w[label description message].each { |key| object.delete(key) }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def self.freeze_data(value)
|
|
57
|
+
case value
|
|
58
|
+
when Hash
|
|
59
|
+
value.each do |key, item|
|
|
60
|
+
freeze_data(key)
|
|
61
|
+
freeze_data(item)
|
|
62
|
+
end
|
|
63
|
+
when Array
|
|
64
|
+
value.each { |item| freeze_data(item) }
|
|
65
|
+
end
|
|
66
|
+
value.freeze
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
private_class_method :resources, :parameters, :prose, :freeze_data
|
|
70
|
+
end
|
|
71
|
+
private_constant :StructuralSchema
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2006, Ivan Sagalaev.
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
* Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! highlight.js
|
|
2
|
-
!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/[&<>]/gm,function(e){return I[e]})}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return R(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||R(i))return i}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset<r[0].offset?e:r:"start"===r[0].event?e:r:e.length?e:r}function o(e){function r(e){return" "+e.nodeName+'="'+n(e.value)+'"'}l+="<"+t(e)+w.map.call(e.attributes,r).join("")+">"}function u(e){l+="</"+t(e)+">"}function c(e){("start"===e.event?o:u)(e.node)}for(var s=0,l="",f=[];e.length||r.length;){var g=i();if(l+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return l+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");u[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?c("keyword",a.k):E(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push("self"===e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=l.length?t(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function l(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var a=r?"":y.classPrefix,i='<span class="'+a,o=t?"":C;return i+=e+'">',i+n+o}function p(){var e,t,r,a;if(!E.k)return n(B);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(B);r;)a+=n(B.substr(t,r.index-t)),e=g(E,r),e?(M+=e[1],a+=h(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(B);return a+n(B.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!x[E.sL])return n(B);var t=e?l(E.sL,B,!0,L[E.sL]):f(B,E.sL.length?E.sL:void 0);return E.r>0&&(M+=t.r),e&&(L[E.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){k+=null!=E.sL?d():p(),B=""}function v(e){k+=e.cN?h(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(B+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?B+=n:(t.eB&&(B+=n),b(),t.rB||t.eB||(B=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?B+=n:(a.rE||a.eE||(B+=n),b(),a.eE&&(B=n));do E.cN&&(k+=C),E.skip||(M+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"<unnamed>")+'"');return B+=n,n.length||1}var N=R(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var w,E=i||N,L={},k="";for(w=E;w!==N;w=w.parent)w.cN&&(k=h(w.cN,"",!0)+k);var B="",M=0;try{for(var I,j,O=0;;){if(E.t.lastIndex=O,I=E.t.exec(t),!I)break;j=m(t.substr(O,I.index-O),I[0]),O=I.index+j}for(m(t.substr(O)),w=E;w.parent;w=w.parent)w.cN&&(k+=C);return{r:M,value:k,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function f(e,t){t=t||y.languages||E(x);var r={r:0,value:n(e)},a=r;return t.filter(R).forEach(function(n){var t=l(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function g(e){return y.tabReplace||y.useBR?e.replace(M,function(e,n){return y.useBR&&"\n"===e?"<br>":y.tabReplace?n.replace(/\t/g,y.tabReplace):void 0}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function p(e){var n,t,r,o,s,p=i(e);a(p)||(y.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):n=e,s=n.textContent,r=p?l(p,s,!0):f(s),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),s)),r.value=g(r.value),e.innerHTML=r.value,e.className=h(e.className,p,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function d(e){y=o(y,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");w.forEach.call(e,p)}}function v(){addEventListener("DOMContentLoaded",b,!1),addEventListener("load",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function N(){return E(x)}function R(e){return e=(e||"").toLowerCase(),x[e]||x[L[e]]}var w=[],E=Object.keys,x={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="</span>",y={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},I={"&":"&","<":"<",">":">"};return e.highlight=l,e.highlightAuto=f,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=R,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/</,r:0,c:[{cN:"attr",b:e,r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("<!--","-->",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[t],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[t],starts:{e:"</script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+")\\s*",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",w="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",u=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+w+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(u).concat(d)}});
|
|
1
|
+
/*! highlight.js 11.12.0 | BSD-3-Clause | See highlight-LICENSE */
|
|
2
|
+
var hljs=(()=>{var z=(e,n)=>()=>{try{return n||e((n={exports:{}}).exports,n),n.exports}catch(t){throw n=0,t}};var Qe=z((Yt,qe)=>{function Pe(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(n=>{let t=e[n],s=typeof t;(s==="object"||s==="function")&&!Object.isFrozen(t)&&Pe(t)}),e}var ge=class{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Ue(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function ee(e,...n){let t=Object.create(null);for(let s in e)t[s]=e[s];return n.forEach(function(s){for(let u in s)t[u]=s[u]}),t}var $n="</span>",Ce=e=>!!e.scope,Fn=(e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let t=e.split(".");return["".concat(n).concat(t.shift()),...t.map((s,u)=>"".concat(s).concat("_".repeat(u+1)))].join(" ")}return"".concat(n).concat(e)},Ne=class{constructor(n,t){this.buffer="",this.classPrefix=t.classPrefix,n.walk(this)}addText(n){this.buffer+=Ue(n)}openNode(n){if(!Ce(n))return;let t=Fn(n.scope,{prefix:this.classPrefix});this.span(t)}closeNode(n){Ce(n)&&(this.buffer+=$n)}value(){return this.buffer}span(n){this.buffer+='<span class="'.concat(n,'">')}},ve=(e={})=>{let n={children:[]};return Object.assign(n,e),n},Ae=class e{constructor(){this.rootNode=ve(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(n){this.top.children.push(n)}openNode(n){let t=ve({scope:n});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(n){return this.constructor._walk(n,this.rootNode)}static _walk(n,t){return typeof t=="string"?n.addText(t):t.children&&(n.openNode(t),t.children.forEach(s=>this._walk(n,s)),n.closeNode(t)),n}static _collapse(n){typeof n!="string"&&n.children&&(n.children.every(t=>typeof t=="string")?n.children=[n.children.join("")]:n.children.forEach(t=>{e._collapse(t)}))}},Te=class extends Ae{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,t){let s=n.root;t&&(s.scope="language:".concat(t)),this.add(s)}toHTML(){return new Ne(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function re(e){return e?typeof e=="string"?e:e.source:null}function $e(e){return se("(?=",e,")")}function Hn(e){return se("(?:",e,")*")}function zn(e){return se("(?:",e,")?")}function se(...e){return e.map(t=>re(t)).join("")}function Gn(e){let n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function Ee(...e){return"("+(Gn(e).capture?"":"?:")+e.map(s=>re(s)).join("|")+")"}function Fe(e){return new RegExp(e.toString()+"|").exec("").length-1}function Kn(e,n){let t=e&&e.exec(n);return t&&t.index===0}var Zn=new RegExp(Ee(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function Re(e,{joinWith:n}){let t=0;return e.map(s=>{t+=1;let u=t,b=re(s),r="";for(;b.length>0;){let a=Zn.exec(b);if(!a){r+=b;break}r+=b.substring(0,a.index),b=b.substring(a.index+a[0].length),a[0][0]==="\\"&&a[1]?r+="\\"+String(Number(a[1])+u):(r+=a[0],(a[0]==="("||/^\(\?[<']/.test(a[0]))&&t++)}return r}).map(s=>"(".concat(s,")")).join(n)}var Wn=/\b\B/,He="[a-zA-Z]\\w*",Oe="[a-zA-Z_]\\w*",ze="\\b\\d+(\\.\\d+)?",Ge="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ke="\\b(0b[01]+)",Xn="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Yn=(e={})=>{let n=/^#![ ]*\//;return e.binary&&(e.begin=se(n,/.*\b/,e.binary,/\b.*/)),ee({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(t,s)=>{t.index!==0&&s.ignoreMatch()}},e)},ce={begin:"\\\\[\\s\\S]",relevance:0},qn={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ce]},Qn={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ce]},Jn={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},be=function(e,n,t={}){let s=ee({scope:"comment",begin:e,end:n,contains:[]},t);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let u=Ee("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:se(/[ ]+/,"(",u,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},Vn=be("//","$"),jn=be("/\\*","\\*/"),et=be("#","$"),nt={scope:"number",begin:ze,relevance:0},tt={scope:"number",begin:Ge,relevance:0},st={scope:"number",begin:Ke,relevance:0},at={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[ce,{begin:/\[/,end:/\]/,relevance:0,contains:[ce]}]},it={scope:"title",begin:He,relevance:0},rt={scope:"title",begin:Oe,relevance:0},ct={begin:"\\.\\s*"+Oe,relevance:0},ot=function(e){return Object.assign(e,{"on:begin":(n,t)=>{t.data._beginMatch=n[1]},"on:end":(n,t)=>{t.data._beginMatch!==n[1]&&t.ignoreMatch()}})},ue=Object.freeze({__proto__:null,APOS_STRING_MODE:qn,BACKSLASH_ESCAPE:ce,BINARY_NUMBER_MODE:st,BINARY_NUMBER_RE:Ke,COMMENT:be,C_BLOCK_COMMENT_MODE:jn,C_LINE_COMMENT_MODE:Vn,C_NUMBER_MODE:tt,C_NUMBER_RE:Ge,END_SAME_AS_BEGIN:ot,HASH_COMMENT_MODE:et,IDENT_RE:He,MATCH_NOTHING_RE:Wn,METHOD_GUARD:ct,NUMBER_MODE:nt,NUMBER_RE:ze,PHRASAL_WORDS_MODE:Jn,QUOTE_STRING_MODE:Qn,REGEXP_MODE:at,RE_STARTERS_RE:Xn,SHEBANG:Yn,TITLE_MODE:it,UNDERSCORE_IDENT_RE:Oe,UNDERSCORE_TITLE_MODE:rt});function lt(e,n){e.input[e.index-1]==="."&&n.ignoreMatch()}function ut(e,n){e.className!==void 0&&(e.scope=e.className,delete e.className)}function gt(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=lt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function dt(e,n){Array.isArray(e.illegal)&&(e.illegal=Ee(...e.illegal))}function Et(e,n){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function bt(e,n){e.relevance===void 0&&(e.relevance=1)}var _t=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let t=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=t.keywords,e.begin=se(t.beforeMatch,$e(t.begin)),e.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},e.relevance=0,delete t.beforeMatch},ft=["of","and","for","in","not","or","if","then","parent","list","value"],pt="keyword";function Ze(e,n,t=pt){let s=Object.create(null);return typeof e=="string"?u(t,e.split(" ")):Array.isArray(e)?u(t,e):Object.keys(e).forEach(function(b){Object.assign(s,Ze(e[b],n,b))}),s;function u(b,r){n&&(r=r.map(a=>a.toLowerCase())),r.forEach(function(a){let c=a.split("|");s[c[0]]=[b,ht(c[0],c[1])]})}}function ht(e,n){return n?Number(n):St(e)?0:1}function St(e){return ft.includes(e.toLowerCase())}var Le={},te=e=>{console.error(e)},De=(e,...n)=>{console.log("WARN: ".concat(e),...n)},ae=(e,n)=>{Le["".concat(e,"/").concat(n)]||(console.log("Deprecated as of ".concat(e,". ").concat(n)),Le["".concat(e,"/").concat(n)]=!0)},de=new Error;function We(e,n,{key:t}){let s=0,u=e[t],b={},r={};for(let a=1;a<=n.length;a++)r[a+s]=u[a],b[a+s]=!0,s+=Fe(n[a-1]);e[t]=r,e[t]._emit=b,e[t]._multi=!0}function Nt(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw te("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),de;if(typeof e.beginScope!="object"||e.beginScope===null)throw te("beginScope must be object"),de;We(e,e.begin,{key:"beginScope"}),e.begin=Re(e.begin,{joinWith:""})}}function At(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw te("skip, excludeEnd, returnEnd not compatible with endScope: {}"),de;if(typeof e.endScope!="object"||e.endScope===null)throw te("endScope must be object"),de;We(e,e.end,{key:"endScope"}),e.end=Re(e.end,{joinWith:""})}}function Tt(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function mt(e){Tt(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Nt(e),At(e)}function Rt(e){function n(r,a){return new RegExp(re(r),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(a?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(a,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,a]),this.matchAt+=Fe(a)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let a=this.regexes.map(c=>c[1]);this.matcherRe=n(Re(a,{joinWith:"|"}),!0),this.lastIndex=0}exec(a){this.matcherRe.lastIndex=this.lastIndex;let c=this.matcherRe.exec(a);if(!c)return null;let E=c.findIndex((m,S)=>S>0&&m!==void 0),_=this.matchIndexes[E];return c.splice(0,E),Object.assign(c,_)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(a){if(this.multiRegexes[a])return this.multiRegexes[a];let c=new t;return this.rules.slice(a).forEach(([E,_])=>c.addRule(E,_)),c.compile(),this.multiRegexes[a]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(a,c){this.rules.push([a,c]),c.type==="begin"&&this.count++}exec(a){let c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let E=c.exec(a);if(this.resumingScanAtSamePosition()&&!(E&&E.index===this.lastIndex)){let _=this.getMatcher(0);_.lastIndex=this.lastIndex+1,E=_.exec(a)}return E&&(this.regexIndex+=E.position+1,this.regexIndex===this.count&&this.considerAll()),E}}function u(r){let a=new s;return r.contains.forEach(c=>a.addRule(c.begin,{rule:c,type:"begin"})),r.terminatorEnd&&a.addRule(r.terminatorEnd,{type:"end"}),r.illegal&&a.addRule(r.illegal,{type:"illegal"}),a}function b(r,a){let c=r;if(r.isCompiled)return c;[ut,Et,mt,_t].forEach(_=>_(r,a)),e.compilerExtensions.forEach(_=>_(r,a)),r.__beforeBegin=null,[gt,dt,bt].forEach(_=>_(r,a)),r.isCompiled=!0;let E=null;return typeof r.keywords=="object"&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),E=r.keywords.$pattern,delete r.keywords.$pattern),E=E||/\w+/,r.keywords&&(r.keywords=Ze(r.keywords,e.case_insensitive)),c.keywordPatternRe=n(E,!0),a&&(r.begin||(r.begin=/\B|\b/),c.beginRe=n(c.begin),!r.end&&!r.endsWithParent&&(r.end=/\B|\b/),r.end&&(c.endRe=n(c.end)),c.terminatorEnd=re(c.end)||"",r.endsWithParent&&a.terminatorEnd&&(c.terminatorEnd+=(r.end?"|":"")+a.terminatorEnd)),r.illegal&&(c.illegalRe=n(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map(function(_){return Ot(_==="self"?r:_)})),r.contains.forEach(function(_){b(_,c)}),r.starts&&b(r.starts,a),c.matcher=u(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=ee(e.classNameAliases||{}),b(e)}function Xe(e){return e?e.endsWithParent||Xe(e.starts):!1}function Ot(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(n){return ee(e,{variants:null},n)})),e.cachedVariants?e.cachedVariants:Xe(e)?ee(e,{starts:e.starts?ee(e.starts):null}):Object.isFrozen(e)?ee(e):e}var yt="11.12.0",me=class extends Error{constructor(n,t){super(n),this.name="HTMLInjectionError",this.html=t}},Se=Ue,ke=ee,Be=Symbol("nomatch"),Mt=7,Ye=function(e){let n=Object.create(null),t=Object.create(null),s=[],u=!0,b="Could not find the language '{}', did you forget to load/include a language module?",r={disableAutodetect:!0,name:"Plain text",contains:[]},a={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Te};function c(i){return a.noHighlightRe.test(i)}function E(i){let g=i.className+" ";g+=i.parentNode?i.parentNode.className:"";let l=a.languageDetectRe.exec(g);if(l){let p=w(l[1]);return p||(De(b.replace("{}",l[1])),De("Falling back to no-highlight mode for this block.",i)),p?l[1]:"no-highlight"}return g.split(/\s+/).find(p=>c(p)||w(p))}function _(i,g,l){let p="",A="";typeof g=="object"?(p=i,l=g.ignoreIllegals,A=g.language):(ae("10.7.0","highlight(lang, code, ...args) has been deprecated."),ae("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),A=i,p=g),l===void 0&&(l=!0);let I={code:p,language:A};L("before:highlight",I);let P=I.result?I.result:m(I.language,I.code,l);return P.code=I.code,L("after:highlight",P),P}function m(i,g,l,p){let A=Object.create(null);function I(o,d){return o.keywords[d]}function P(){if(!f.keywords){k.addText(R);return}let o=0;f.keywordPatternRe.lastIndex=0;let d=f.keywordPatternRe.exec(R),h="";for(;d;){h+=R.substring(o,d.index);let T=Y.case_insensitive?d[0].toLowerCase():d[0],U=I(f,T);if(U){let[Q,Pn]=U;if(k.addText(h),h="",A[T]=(A[T]||0)+1,A[T]<=Mt&&(le+=Pn),Q.startsWith("_"))h+=d[0];else{let Un=Y.classNameAliases[Q]||Q;X(d[0],Un)}}else h+=d[0];o=f.keywordPatternRe.lastIndex,d=f.keywordPatternRe.exec(R)}h+=R.substring(o),k.addText(h)}function W(){if(R==="")return;let o=null;if(typeof f.subLanguage=="string"){if(!n[f.subLanguage]){k.addText(R);return}o=m(f.subLanguage,R,!0,xe[f.subLanguage]),xe[f.subLanguage]=o._top}else o=y(R,f.subLanguage.length?f.subLanguage:null);f.relevance>0&&(le+=o.relevance),k.__addSublanguage(o._emitter,o.language)}function H(){f.subLanguage!=null?W():P(),R=""}function X(o,d){o!==""&&(k.startScope(d),k.addText(o),k.endScope())}function ye(o,d){let h=1,T=d.length-1;for(;h<=T;){if(!o._emit[h]){h++;continue}let U=Y.classNameAliases[o[h]]||o[h],Q=d[h];U?X(Q,U):(R=Q,P(),R=""),h++}}function Me(o,d){return o.scope&&typeof o.scope=="string"&&k.openNode(Y.classNameAliases[o.scope]||o.scope),o.beginScope&&(o.beginScope._wrap?(X(R,Y.classNameAliases[o.beginScope._wrap]||o.beginScope._wrap),R=""):o.beginScope._multi&&(ye(o.beginScope,d),R="")),f=Object.create(o,{parent:{value:f}}),f}function Ie(o,d,h){let T=Kn(o.endRe,h);if(T){if(o["on:end"]){let U=new ge(o);o["on:end"](d,U),U.isMatchIgnored&&(T=!1)}if(T){for(;o.endsParent&&o.parent;)o=o.parent;return o}}if(o.endsWithParent)return Ie(o.parent,d,h)}function vn(o){return f.matcher.regexIndex===0?(R+=o[0],1):(he=!0,0)}function Ln(o){let d=o[0],h=o.rule,T=new ge(h),U=[h.__beforeBegin,h["on:begin"]];for(let Q of U)if(Q&&(Q(o,T),T.isMatchIgnored))return vn(d);return h.skip?R+=d:(h.excludeBegin&&(R+=d),H(),!h.returnBegin&&!h.excludeBegin&&(R=d)),Me(h,o),h.returnBegin?0:d.length}function Dn(o){let d=o[0],h=g.substring(o.index),T=Ie(f,o,h);if(!T)return Be;let U=f;f.endScope&&f.endScope._wrap?(H(),X(d,f.endScope._wrap)):f.endScope&&f.endScope._multi?(H(),ye(f.endScope,o)):U.skip?R+=d:(U.returnEnd||U.excludeEnd||(R+=d),H(),U.excludeEnd&&(R=d));do f.scope&&k.closeNode(),!f.skip&&!f.subLanguage&&(le+=f.relevance),f=f.parent;while(f!==T.parent);return T.starts&&Me(T.starts,o),U.returnEnd?0:d.length}function kn(){let o=[];for(let d=f;d!==Y;d=d.parent)d.scope&&o.unshift(d.scope);o.forEach(d=>k.openNode(d))}let oe={};function we(o,d){let h=d&&d[0];if(R+=o,h==null)return H(),0;if(oe.type==="begin"&&d.type==="end"&&oe.index===d.index&&h===""){if(R+=g.slice(d.index,d.index+1),!u){let T=new Error("0 width match regex (".concat(i,")"));throw T.languageName=i,T.badRule=oe.rule,T}return 1}if(oe=d,d.type==="begin")return Ln(d);if(d.type==="illegal"&&!l){let T=new Error('Illegal lexeme "'+h+'" for mode "'+(f.scope||"<unnamed>")+'"');throw T.mode=f,T}else if(d.type==="end"){let T=Dn(d);if(T!==Be)return T}if(d.type==="illegal"&&h==="")return d.index===g.length||(R+="\n"),1;if(pe>1e5&&pe>d.index*3)throw new Error("potential infinite loop, way more iterations than matches");return R+=h,h.length}let Y=w(i);if(!Y)throw te(b.replace("{}",i)),new Error('Unknown language: "'+i+'"');let Bn=Rt(Y),fe="",f=p||Bn,xe={},k=new a.__emitter(a);kn();let R="",le=0,ne=0,pe=0,he=!1;try{if(Y.__emitTokens)Y.__emitTokens(g,k);else{for(f.matcher.considerAll();;){pe++,he?he=!1:f.matcher.considerAll(),f.matcher.lastIndex=ne;let o=f.matcher.exec(g);if(!o)break;let d=g.substring(ne,o.index),h=we(d,o);ne=o.index+h}we(g.substring(ne))}return k.finalize(),fe=k.toHTML(),{language:i,value:fe,relevance:le,illegal:!1,_emitter:k,_top:f}}catch(o){if(o.message&&o.message.includes("Illegal"))return{language:i,value:Se(g),illegal:!0,relevance:0,_illegalBy:{message:o.message,index:ne,context:g.slice(ne-100,ne+100),mode:o.mode,resultSoFar:fe},_emitter:k};if(u)return{language:i,value:Se(g),illegal:!1,relevance:0,errorRaised:o,_emitter:k,_top:f};throw o}}function S(i){let g={value:Se(i),illegal:!1,relevance:0,_top:r,_emitter:new a.__emitter(a)};return g._emitter.addText(i),g}function y(i,g){g=g||a.languages||Object.keys(n);let l=S(i),p=g.filter(w).filter(K).map(H=>m(H,i,!1));p.unshift(l);let A=p.sort((H,X)=>{if(H.relevance!==X.relevance)return X.relevance-H.relevance;if(H.language&&X.language){if(w(H.language).supersetOf===X.language)return 1;if(w(X.language).supersetOf===H.language)return-1}return 0}),[I,P]=A,W=I;return W.secondBest=P,W}function O(i,g,l){let p=g&&t[g]||l;i.classList.add("hljs"),i.classList.add("language-".concat(p))}function N(i){let g=null,l=E(i);if(c(l))return;if(L("before:highlightElement",{el:i,language:l}),i.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",i);return}if(i.children.length>0&&(a.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(i)),a.throwUnescapedHTML))throw new me("One of your code blocks includes unescaped HTML.",i.innerHTML);g=i;let p=g.textContent,A=l?_(p,{language:l,ignoreIllegals:!0}):y(p);i.innerHTML=A.value,i.dataset.highlighted="yes",O(i,l,A.language),i.result={language:A.language,re:A.relevance,relevance:A.relevance},A.secondBest&&(i.secondBest={language:A.secondBest.language,relevance:A.secondBest.relevance}),L("after:highlightElement",{el:i,result:A,text:p})}function C(i){a=ke(a,i)}let $=()=>{v(),ae("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function x(){v(),ae("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let F=!1;function v(){function i(){v()}if(document.readyState==="loading"){F||window.addEventListener("DOMContentLoaded",i,!1),F=!0;return}document.querySelectorAll(a.cssSelector).forEach(N)}function B(i,g){let l=null;try{l=g(e)}catch(p){if(te("Language definition for '{}' could not be registered.".replace("{}",i)),u)te(p);else throw p;l=r}l.name||(l.name=i),n[i]=l,l.rawDefinition=g.bind(null,e),l.aliases&&Z(l.aliases,{languageName:i})}function M(i){delete n[i];for(let g of Object.keys(t))t[g]===i&&delete t[g]}function q(){return Object.keys(n)}function w(i){return i=(i||"").toLowerCase(),n[i]||n[t[i]]}function Z(i,{languageName:g}){typeof i=="string"&&(i=[i]),i.forEach(l=>{t[l.toLowerCase()]=g})}function K(i){let g=w(i);return g&&!g.disableAutodetect}function J(i){i["before:highlightBlock"]&&!i["before:highlightElement"]&&(i["before:highlightElement"]=g=>{i["before:highlightBlock"](Object.assign({block:g.el},g))}),i["after:highlightBlock"]&&!i["after:highlightElement"]&&(i["after:highlightElement"]=g=>{i["after:highlightBlock"](Object.assign({block:g.el},g))})}function V(i){J(i),s.push(i)}function j(i){let g=s.indexOf(i);g!==-1&&s.splice(g,1)}function L(i,g){let l=i;s.forEach(function(p){p[l]&&p[l](g)})}function D(i){return ae("10.7.0","highlightBlock will be removed entirely in v12.0"),ae("10.7.0","Please use highlightElement now."),N(i)}Object.assign(e,{highlight:_,highlightAuto:y,highlightAll:v,highlightElement:N,highlightBlock:D,configure:C,initHighlighting:$,initHighlightingOnLoad:x,registerLanguage:B,unregisterLanguage:M,listLanguages:q,getLanguage:w,registerAliases:Z,autoDetection:K,inherit:ke,addPlugin:V,removePlugin:j}),e.debugMode=function(){u=!1},e.safeMode=function(){u=!0},e.versionString=yt,e.regex={concat:se,lookahead:$e,either:Ee,optional:zn,anyNumberOfTimes:Hn};for(let i in ue)typeof ue[i]=="object"&&Pe(ue[i]);return Object.assign(e,ue),e},ie=Ye({});ie.newInstance=()=>Ye({});qe.exports=ie;ie.HighlightJS=ie;ie.default=ie});var Ve=z((qt,Je)=>{function It(e){let n=e.regex,t={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});let u={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},b=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),r={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,u]};u.contains.push(a);let c={match:/\\"/},E={className:"string",begin:/'/,end:/'/},_={match:/\\'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},S=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],y=e.SHEBANG({binary:"(".concat(S.join("|"),")"),relevance:10}),O={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},N=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],C=["true","false"],$={match:/(\/[a-z._-]+)+/},x=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],F=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],v=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],B=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:N,literal:C,built_in:[...x,...F,"set","shopt",...v,...B]},contains:[y,e.SHEBANG(),O,m,b,r,$,a,c,E,_,t]}}Je.exports=It});var en=z((Qt,je)=>{function wt(e){let n=e.regex,t="HTTP/([32]|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,u={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},b=[u,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+t+" \\d{3})",end:/$/,contains:[{className:"meta",begin:t},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:b}},{begin:"(?=^[A-Z]+ (.*?) "+t+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:t},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:b}},e.inherit(u,{relevance:0})]}}je.exports=wt});var tn=z((Jt,nn)=>{function xt(e){let n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,u={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},b={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(b,{begin:/\(/,end:/\)/}),a=e.inherit(e.APOS_STRING_MODE,{className:"string"}),c=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),E={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[u]},{begin:/'/,end:/'/,contains:[u]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[b,c,a,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[b,r,c,a]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},u,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[E],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:"css"}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[E],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:"javascript"}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:E}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}nn.exports=xt});var an=z((Vt,sn)=>{function Ct(e){let n=e.regex,t=/(?![A-Za-z0-9])(?![$])/,s=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,t),u=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,t),b=n.concat(/[A-Z]+/,t),r={scope:"variable",match:"\\$+"+s},a={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},E=e.inherit(e.APOS_STRING_MODE,{illegal:null}),_=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(c)}),m={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(L,D)=>{D.data._beginMatch=L[1]||L[2]},"on:end":(L,D)=>{D.data._beginMatch!==L[1]&&D.ignoreMatch()}},S=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),y="[ \n]",O={scope:"string",variants:[_,E,m,S]},N={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},C=["false","null","true"],$=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],x=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],v={keyword:$,literal:(L=>{let D=[];return L.forEach(i=>{D.push(i),i.toLowerCase()===i?D.push(i.toUpperCase()):D.push(i.toLowerCase())}),D})(C),built_in:x},B=L=>L.map(D=>D.replace(/\|\d+$/,"")),M={variants:[{match:[/new/,n.concat(y,"+"),n.concat("(?!",B(x).join("\\b|"),"\\b)"),u],scope:{1:"keyword",4:"title.class"}}]},q=n.concat(s,"\\b(?!\\()"),w={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),q],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[u,n.concat(/::/,n.lookahead(/(?!class\b)/)),q],scope:{1:"title.class",3:"variable.constant"}},{match:[u,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[u,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},Z={scope:"attr",match:n.concat(s,n.lookahead(":"),n.lookahead(/(?!::)/))},K={relevance:0,begin:/\(/,end:/\)/,keywords:v,contains:[Z,r,w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,O,N,M]},J={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",B($).join("\\b|"),"|",B(x).join("\\b|"),"\\b)"),s,n.concat(y,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[K]};K.contains.push(J);let V=[Z,w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,O,N,M],j={begin:n.concat(/#\[\s*\\?/,n.either(u,b)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:C,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:C,keyword:["new","array"]},contains:["self",...V]},...V,{scope:"meta",variants:[{match:u},{match:b}]}]};return{case_insensitive:!1,keywords:v,contains:[j,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},a,{scope:"variable.language",match:/\$this\b/},r,J,w,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},M,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:v,contains:["self",j,r,w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.HASH_COMMENT_MODE,O,N]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},O,N]}}sn.exports=Ct});var cn=z((jt,rn)=>{var vt="([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",Lt={scope:"number",match:vt,relevance:0};function Dt(e){let n={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},t={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],u={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:s},contains:[n,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,Lt,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}rn.exports=Dt});var En=z((es,dn)=>{var on="[A-Za-z$_][0-9A-Za-z$_]*",kt=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Bt=["true","false","null","undefined","NaN","Infinity"],ln=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],un=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],gn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Pt=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],Ut=[].concat(gn,ln,un);function $t(e){let n=e.regex,t=(l,{after:p})=>{let A="</"+l[0].slice(1);return l.input.indexOf(A,p)!==-1},s=on,u={begin:"<>",end:"</>"},b=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(l,p)=>{let A=l[0].length+l.index,I=l.input[A];if(I==="<"||I===","){p.ignoreMatch();return}I===">"&&(t(l,{after:A})||p.ignoreMatch());let P,W=l.input.substring(A);if(P=W.match(/^\s*=/)){p.ignoreMatch();return}if((P=W.match(/^\s+extends\s+/))&&P.index===0){p.ignoreMatch();return}}},a={$pattern:on,keyword:kt,literal:Bt,built_in:Ut,"variable.language":Pt},c="[0-9](_?[0-9])*",E="\\.(".concat(c,")"),_="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:"(\\b(".concat(_,")((").concat(E,")|\\.)?|(").concat(E,"))")+"[eE][+-]?(".concat(c,")\\b")},{begin:"\\b(".concat(_,")\\b((").concat(E,")\\b|\\.)?|(").concat(E,")\\b")},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},S={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},y={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"css"}},N={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"graphql"}},C={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,S]},x={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},F=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,{match:/\$\d+/},m];S.contains=F.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(F)});let v=[].concat(x,S.contains),B=v.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(v)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},q={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,n.concat(s,"(",n.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...ln,...un]}},Z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},K={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},J={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function V(l){return n.concat("(?!",l.join("|"),")")}let j={match:n.concat(/\b/,V([...gn,"super","import","await"].map(l=>"".concat(l,"\\s*\\("))),s,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},L={begin:n.concat(/\./,n.lookahead(n.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},D={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},i="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(i)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:w},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),Z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,x,{match:/\$\d+/},m,w,{scope:"attr",match:s+n.lookahead(":"),relevance:0},g,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[x,e.REGEXP_MODE,{className:"function",begin:i,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:u.begin,end:u.end},{match:b},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},K,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},L,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},j,J,q,D,{match:/\$[(.]/}]}}dn.exports=$t});var _n=z((ns,bn)=>{function Ft(e){let n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),u=n.concat(s,/(::\w+)*/),r={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},a={className:"doctag",begin:"@[A-Za-z]+"},c={begin:"#<",end:">"},E=[e.COMMENT("#","$",{contains:[a]}),e.COMMENT("^=begin","^=end",{contains:[a],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],_={className:"subst",begin:/#\{/,end:/\}/,keywords:r},m={className:"string",contains:[e.BACKSLASH_ESCAPE,_],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,_]})]}]},S="[1-9](_?[0-9])*|0",y="[0-9](_?[0-9])*",O={className:"number",relevance:0,variants:[{begin:"\\b(".concat(S,")(\\.(").concat(y,"))?([eE][+-]?(").concat(y,")|r)?i?\\b")},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},N={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:r}]},M=[m,{variants:[{match:[/class\s+/,u,/\s+<\s+/,u]},{match:[/\b(class|module)\s+/,u]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,u],scope:{2:"title.class"},keywords:r},{relevance:0,match:[u,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[N]},{begin:"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[m,{begin:t}],relevance:0},O,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:r},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,_],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(c,E),relevance:0}].concat(c,E);_.contains=M,N.contains=M;let K=[{begin:/^\s*=>/,starts:{end:"$",contains:M}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:r,contains:M}}];return E.unshift(c),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:r,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(K).concat(E).concat(M)}}bn.exports=Ft});var pn=z((ts,fn)=>{function Ht(e){let b={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:b,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\b0[bB](_?[01])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:b,illegal:/["']/}]}]}}fn.exports=Ht});var Sn=z((ss,hn)=>{function zt(e){let n=e.regex,t=/(r#)?/,s=n.concat(t,e.UNDERSCORE_IDENT_RE),u=n.concat(t,e.IDENT_RE),b={scope:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!(?:let|for|while|if|else|match)\b)/,u,n.lookahead(/\s*\(/))},r="([ui](8|16|32|64|128|size)|f(16|32|64|128))?",a=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","raw","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],c=["true","false","Some","None","Ok","Err"],E=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],_=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f16","f32","f64","f128","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:_,keyword:a,literal:c,built_in:E},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{scope:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|"|\\|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{scope:"number",variants:[{begin:"\\b0b([01_]+)"+r},{begin:"\\b0o([0-7_]+)"+r},{begin:"\\b0x([A-Fa-f0-9_]+)"+r},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+r}],relevance:0},{begin:[/\bsafe/,/\s+/,/extern/],scope:{1:"keyword",3:"keyword"}},{begin:[/fn/,/\s+/,s],scope:{1:"keyword",3:"title.function"}},{scope:"meta",begin:"#!?\\[",end:"\\]",contains:[{scope:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],scope:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],scope:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],scope:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],scope:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:E,type:_}},{scope:"punctuation",begin:"->"},b]}}hn.exports=zt});var An=z((as,Nn)=>{function Gt(e){let n=e.regex,t=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","lazy","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],a={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","aiter","all","anext","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozendict","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","sentinel","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},c={className:"meta",begin:/^(>>>|\.\.\.) /},E={className:"subst",begin:/\{/,end:/\}/,keywords:a,illegal:/#/},_={begin:/\{\{/,relevance:0},m={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,c,_,E]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,c,_,E]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,_,E]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,_,E]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},S="[0-9](_?[0-9])*",y="(\\b(".concat(S,"))?\\.(").concat(S,")|\\b(").concat(S,")\\."),O="\\b|".concat(s.join("|")),N={className:"number",relevance:0,variants:[{begin:"(\\b(".concat(S,")|(").concat(y,"))[eE][+-]?(").concat(S,")[jJ]?(?=").concat(O,")")},{begin:"(".concat(y,")[jJ]?")},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=".concat(O,")")},{begin:"\\b0[bB](_?[01])+[lL]?(?=".concat(O,")")},{begin:"\\b0[oO](_?[0-7])+[lL]?(?=".concat(O,")")},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=".concat(O,")")},{begin:"\\b(".concat(S,")[jJ](?=").concat(O,")")}]},C={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:a,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},$={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",c,N,m,e.HASH_COMMENT_MODE]}]};return E.contains=[m,N,c],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,illegal:/(<\/|\?)|=>/,contains:[c,N,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},m,C,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[$]},{variants:[{match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[N,$,m]}]}}Nn.exports=Gt});var xn=z((is,wn)=>{var _e="[A-Za-z$_][0-9A-Za-z$_]*",Tn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],mn=["true","false","null","undefined","NaN","Infinity"],Rn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],On=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],yn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Mn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],In=[].concat(yn,Rn,On);function Kt(e){let n=e.regex,t=(l,{after:p})=>{let A="</"+l[0].slice(1);return l.input.indexOf(A,p)!==-1},s=_e,u={begin:"<>",end:"</>"},b=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(l,p)=>{let A=l[0].length+l.index,I=l.input[A];if(I==="<"||I===","){p.ignoreMatch();return}I===">"&&(t(l,{after:A})||p.ignoreMatch());let P,W=l.input.substring(A);if(P=W.match(/^\s*=/)){p.ignoreMatch();return}if((P=W.match(/^\s+extends\s+/))&&P.index===0){p.ignoreMatch();return}}},a={$pattern:_e,keyword:Tn,literal:mn,built_in:In,"variable.language":Mn},c="[0-9](_?[0-9])*",E="\\.(".concat(c,")"),_="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:"(\\b(".concat(_,")((").concat(E,")|\\.)?|(").concat(E,"))")+"[eE][+-]?(".concat(c,")\\b")},{begin:"\\b(".concat(_,")\\b((").concat(E,")\\b|\\.)?|(").concat(E,")\\b")},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},S={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},y={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"xml"}},O={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"css"}},N={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,S],subLanguage:"graphql"}},C={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,S]},x={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},F=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,{match:/\$\d+/},m];S.contains=F.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(F)});let v=[].concat(x,S.contains),B=v.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(v)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B},q={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,n.concat(s,"(",n.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},w={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Rn,...On]}},Z={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},K={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},J={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function V(l){return n.concat("(?!",l.join("|"),")")}let j={match:n.concat(/\b/,V([...yn,"super","import","await"].map(l=>"".concat(l,"\\s*\\("))),s,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},L={begin:n.concat(/\./,n.lookahead(n.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},D={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},i="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",g={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(i)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:w},illegal:/#(?![$_A-Za-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),Z,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,O,N,C,x,{match:/\$\d+/},m,w,{scope:"attr",match:s+n.lookahead(":"),relevance:0},g,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[x,e.REGEXP_MODE,{className:"function",begin:i,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:u.begin,end:u.end},{match:b},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},K,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},L,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},j,J,q,D,{match:/\$[(.]/}]}}function Zt(e){let n=e.regex,t=Kt(e),s=_e,u=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],b={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},r={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:u},contains:[t.exports.CLASS_REFERENCE]},a={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],E={$pattern:_e,keyword:Tn.concat(c),literal:mn,built_in:In.concat(u),"variable.language":Mn},_={className:"meta",begin:"@"+s},m=(N,C,$)=>{let x=N.contains.findIndex(F=>F.label===C);if(x===-1)throw new Error("can not find mode to replace");N.contains.splice(x,1,$)};Object.assign(t.keywords,E),t.exports.PARAMS_CONTAINS.push(_);let S=t.contains.find(N=>N.scope==="attr"),y=Object.assign({},S,{match:n.concat(s,n.lookahead(/\s*\?:/))});t.exports.PARAMS_CONTAINS.push([t.exports.CLASS_REFERENCE,S,y]),t.contains=t.contains.concat([_,b,r,y]),m(t,"shebang",e.SHEBANG()),m(t,"use_strict",a);let O=t.contains.find(N=>N.label==="func.def");return O.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t}wn.exports=Zt});var Wt=z((rs,Cn)=>{var G=Qe();G.registerLanguage("bash",Ve());G.registerLanguage("http",en());G.registerLanguage("xml",tn());G.registerLanguage("php",an());G.registerLanguage("json",cn());G.registerLanguage("javascript",En());G.registerLanguage("ruby",_n());G.registerLanguage("go",pn());G.registerLanguage("rust",Sn());G.registerLanguage("python",An());G.registerLanguage("typescript",xn());Cn.exports=G});return Wt();})();
|