HEX
Server: nginx/1.28.3
System: Linux ip-172-31-12-242 6.17.0-1007-aws #7~24.04.1-Ubuntu SMP Thu Jan 22 21:04:49 UTC 2026 x86_64
User: root (0)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/panel/BTPanel/static/editor/worker-php.js
'no use strict'
!(function (e) {
	function t(e, t) {
		var n = e,
			r = ''
		while (n) {
			var i = t[n]
			if (typeof i == 'string') return i + r
			if (i) return i.location.replace(/\/*$/, '/') + (r || i.main || i.name)
			if (i === !1) return ''
			var s = n.lastIndexOf('/')
			if (s === -1) break
			;(r = n.substr(s) + r), (n = n.slice(0, s))
		}
		return e
	}
	if (typeof e.window != 'undefined' && e.document) return
	if (e.require && e.define) return
	e.console ||
		((e.console = function () {
			var e = Array.prototype.slice.call(arguments, 0)
			postMessage({ type: 'log', data: e })
		}),
		(e.console.error = e.console.warn = e.console.log = e.console.trace = e.console)),
		(e.window = e),
		(e.ace = e),
		(e.onerror = function (e, t, n, r, i) {
			postMessage({
				type: 'error',
				data: { message: e, data: i.data, file: t, line: n, col: r, stack: i.stack },
			})
		}),
		(e.normalizeModule = function (t, n) {
			if (n.indexOf('!') !== -1) {
				var r = n.split('!')
				return e.normalizeModule(t, r[0]) + '!' + e.normalizeModule(t, r[1])
			}
			if (n.charAt(0) == '.') {
				var i = t.split('/').slice(0, -1).join('/')
				n = (i ? i + '/' : '') + n
				while (n.indexOf('.') !== -1 && s != n) {
					var s = n
					n = n
						.replace(/^\.\//, '')
						.replace(/\/\.\//, '/')
						.replace(/[^\/]+\/\.\.\//, '')
				}
			}
			return n
		}),
		(e.require = function (r, i) {
			i || ((i = r), (r = null))
			if (!i.charAt) throw new Error('worker.js require() accepts only (parentId, id) as arguments')
			i = e.normalizeModule(r, i)
			var s = e.require.modules[i]
			if (s)
				return s.initialized || ((s.initialized = !0), (s.exports = s.factory().exports)), s.exports
			if (!e.require.tlns) return console.log('unable to load ' + i)
			var o = t(i, e.require.tlns)
			return (
				o.slice(-3) != '.js' && (o += '.js'),
				(e.require.id = i),
				(e.require.modules[i] = {}),
				importScripts(o),
				e.require(r, i)
			)
		}),
		(e.require.modules = {}),
		(e.require.tlns = {}),
		(e.define = function (t, n, r) {
			arguments.length == 2
				? ((r = n), typeof t != 'string' && ((n = t), (t = e.require.id)))
				: arguments.length == 1 && ((r = t), (n = []), (t = e.require.id))
			if (typeof r != 'function') {
				e.require.modules[t] = { exports: r, initialized: !0 }
				return
			}
			n.length || (n = ['require', 'exports', 'module'])
			var i = function (n) {
				return e.require(t, n)
			}
			e.require.modules[t] = {
				exports: {},
				factory: function () {
					var e = this,
						t = r.apply(
							this,
							n.slice(0, r.length).map(function (t) {
								switch (t) {
									case 'require':
										return i
									case 'exports':
										return e.exports
									case 'module':
										return e
									default:
										return i(t)
								}
							})
						)
					return t && (e.exports = t), e
				},
			}
		}),
		(e.define.amd = {}),
		(require.tlns = {}),
		(e.initBaseUrls = function (t) {
			for (var n in t) require.tlns[n] = t[n]
		}),
		(e.initSender = function () {
			var n = e.require('ace/lib/event_emitter').EventEmitter,
				r = e.require('ace/lib/oop'),
				i = function () {}
			return (
				function () {
					r.implement(this, n),
						(this.callback = function (e, t) {
							postMessage({ type: 'call', id: t, data: e })
						}),
						(this.emit = function (e, t) {
							postMessage({ type: 'event', name: e, data: t })
						})
				}.call(i.prototype),
				new i()
			)
		})
	var n = (e.main = null),
		r = (e.sender = null)
	e.onmessage = function (t) {
		var i = t.data
		if (i.event && r) r._signal(i.event, i.data)
		else if (i.command)
			if (n[i.command]) n[i.command].apply(n, i.args)
			else {
				if (!e[i.command]) throw new Error('Unknown command:' + i.command)
				e[i.command].apply(e, i.args)
			}
		else if (i.init) {
			e.initBaseUrls(i.tlns), (r = e.sender = e.initSender())
			var s = require(i.module)[i.classname]
			n = e.main = new s(r)
		}
	}
})(this),
	ace.define('ace/lib/oop', [], function (e, t, n) {
		'use strict'
		;(t.inherits = function (e, t) {
			;(e.super_ = t),
				(e.prototype = Object.create(t.prototype, {
					constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 },
				}))
		}),
			(t.mixin = function (e, t) {
				for (var n in t) e[n] = t[n]
				return e
			}),
			(t.implement = function (e, n) {
				t.mixin(e, n)
			})
	}),
	ace.define('ace/range', [], function (e, t, n) {
		'use strict'
		var r = function (e, t) {
				return e.row - t.row || e.column - t.column
			},
			i = function (e, t, n, r) {
				;(this.start = { row: e, column: t }), (this.end = { row: n, column: r })
			}
		;(function () {
			;(this.isEqual = function (e) {
				return (
					this.start.row === e.start.row &&
					this.end.row === e.end.row &&
					this.start.column === e.start.column &&
					this.end.column === e.end.column
				)
			}),
				(this.toString = function () {
					return (
						'Range: [' +
						this.start.row +
						'/' +
						this.start.column +
						'] -> [' +
						this.end.row +
						'/' +
						this.end.column +
						']'
					)
				}),
				(this.contains = function (e, t) {
					return this.compare(e, t) == 0
				}),
				(this.compareRange = function (e) {
					var t,
						n = e.end,
						r = e.start
					return (
						(t = this.compare(n.row, n.column)),
						t == 1
							? ((t = this.compare(r.row, r.column)), t == 1 ? 2 : t == 0 ? 1 : 0)
							: t == -1
							  ? -2
							  : ((t = this.compare(r.row, r.column)), t == -1 ? -1 : t == 1 ? 42 : 0)
					)
				}),
				(this.comparePoint = function (e) {
					return this.compare(e.row, e.column)
				}),
				(this.containsRange = function (e) {
					return this.comparePoint(e.start) == 0 && this.comparePoint(e.end) == 0
				}),
				(this.intersects = function (e) {
					var t = this.compareRange(e)
					return t == -1 || t == 0 || t == 1
				}),
				(this.isEnd = function (e, t) {
					return this.end.row == e && this.end.column == t
				}),
				(this.isStart = function (e, t) {
					return this.start.row == e && this.start.column == t
				}),
				(this.setStart = function (e, t) {
					typeof e == 'object'
						? ((this.start.column = e.column), (this.start.row = e.row))
						: ((this.start.row = e), (this.start.column = t))
				}),
				(this.setEnd = function (e, t) {
					typeof e == 'object'
						? ((this.end.column = e.column), (this.end.row = e.row))
						: ((this.end.row = e), (this.end.column = t))
				}),
				(this.inside = function (e, t) {
					return this.compare(e, t) == 0 ? (this.isEnd(e, t) || this.isStart(e, t) ? !1 : !0) : !1
				}),
				(this.insideStart = function (e, t) {
					return this.compare(e, t) == 0 ? (this.isEnd(e, t) ? !1 : !0) : !1
				}),
				(this.insideEnd = function (e, t) {
					return this.compare(e, t) == 0 ? (this.isStart(e, t) ? !1 : !0) : !1
				}),
				(this.compare = function (e, t) {
					return !this.isMultiLine() && e === this.start.row
						? t < this.start.column
							? -1
							: t > this.end.column
							  ? 1
							  : 0
						: e < this.start.row
						  ? -1
						  : e > this.end.row
						    ? 1
						    : this.start.row === e
						      ? t >= this.start.column
										? 0
										: -1
						      : this.end.row === e
						        ? t <= this.end.column
											? 0
											: 1
						        : 0
				}),
				(this.compareStart = function (e, t) {
					return this.start.row == e && this.start.column == t ? -1 : this.compare(e, t)
				}),
				(this.compareEnd = function (e, t) {
					return this.end.row == e && this.end.column == t ? 1 : this.compare(e, t)
				}),
				(this.compareInside = function (e, t) {
					return this.end.row == e && this.end.column == t
						? 1
						: this.start.row == e && this.start.column == t
						  ? -1
						  : this.compare(e, t)
				}),
				(this.clipRows = function (e, t) {
					if (this.end.row > t) var n = { row: t + 1, column: 0 }
					else if (this.end.row < e) var n = { row: e, column: 0 }
					if (this.start.row > t) var r = { row: t + 1, column: 0 }
					else if (this.start.row < e) var r = { row: e, column: 0 }
					return i.fromPoints(r || this.start, n || this.end)
				}),
				(this.extend = function (e, t) {
					var n = this.compare(e, t)
					if (n == 0) return this
					if (n == -1) var r = { row: e, column: t }
					else var s = { row: e, column: t }
					return i.fromPoints(r || this.start, s || this.end)
				}),
				(this.isEmpty = function () {
					return this.start.row === this.end.row && this.start.column === this.end.column
				}),
				(this.isMultiLine = function () {
					return this.start.row !== this.end.row
				}),
				(this.clone = function () {
					return i.fromPoints(this.start, this.end)
				}),
				(this.collapseRows = function () {
					return this.end.column == 0
						? new i(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0)
						: new i(this.start.row, 0, this.end.row, 0)
				}),
				(this.toScreenRange = function (e) {
					var t = e.documentToScreenPosition(this.start),
						n = e.documentToScreenPosition(this.end)
					return new i(t.row, t.column, n.row, n.column)
				}),
				(this.moveBy = function (e, t) {
					;(this.start.row += e),
						(this.start.column += t),
						(this.end.row += e),
						(this.end.column += t)
				})
		}).call(i.prototype),
			(i.fromPoints = function (e, t) {
				return new i(e.row, e.column, t.row, t.column)
			}),
			(i.comparePoints = r),
			(i.comparePoints = function (e, t) {
				return e.row - t.row || e.column - t.column
			}),
			(t.Range = i)
	}),
	ace.define('ace/apply_delta', [], function (e, t, n) {
		'use strict'
		function r(e, t) {
			throw (console.log('Invalid Delta:', e), 'Invalid Delta: ' + t)
		}
		function i(e, t) {
			return t.row >= 0 && t.row < e.length && t.column >= 0 && t.column <= e[t.row].length
		}
		function s(e, t) {
			t.action != 'insert' &&
				t.action != 'remove' &&
				r(t, "delta.action must be 'insert' or 'remove'"),
				t.lines instanceof Array || r(t, 'delta.lines must be an Array'),
				(!t.start || !t.end) && r(t, 'delta.start/end must be an present')
			var n = t.start
			i(e, t.start) || r(t, 'delta.start must be contained in document')
			var s = t.end
			t.action == 'remove' &&
				!i(e, s) &&
				r(t, "delta.end must contained in document for 'remove' actions")
			var o = s.row - n.row,
				u = s.column - (o == 0 ? n.column : 0)
			;(o != t.lines.length - 1 || t.lines[o].length != u) &&
				r(t, 'delta.range must match delta lines')
		}
		t.applyDelta = function (e, t, n) {
			var r = t.start.row,
				i = t.start.column,
				s = e[r] || ''
			switch (t.action) {
				case 'insert':
					var o = t.lines
					if (o.length === 1) e[r] = s.substring(0, i) + t.lines[0] + s.substring(i)
					else {
						var u = [r, 1].concat(t.lines)
						e.splice.apply(e, u),
							(e[r] = s.substring(0, i) + e[r]),
							(e[r + t.lines.length - 1] += s.substring(i))
					}
					break
				case 'remove':
					var a = t.end.column,
						f = t.end.row
					r === f
						? (e[r] = s.substring(0, i) + s.substring(a))
						: e.splice(r, f - r + 1, s.substring(0, i) + e[f].substring(a))
			}
		}
	}),
	ace.define('ace/lib/event_emitter', [], function (e, t, n) {
		'use strict'
		var r = {},
			i = function () {
				this.propagationStopped = !0
			},
			s = function () {
				this.defaultPrevented = !0
			}
		;(r._emit = r._dispatchEvent =
			function (e, t) {
				this._eventRegistry || (this._eventRegistry = {}),
					this._defaultHandlers || (this._defaultHandlers = {})
				var n = this._eventRegistry[e] || [],
					r = this._defaultHandlers[e]
				if (!n.length && !r) return
				if (typeof t != 'object' || !t) t = {}
				t.type || (t.type = e),
					t.stopPropagation || (t.stopPropagation = i),
					t.preventDefault || (t.preventDefault = s),
					(n = n.slice())
				for (var o = 0; o < n.length; o++) {
					n[o](t, this)
					if (t.propagationStopped) break
				}
				if (r && !t.defaultPrevented) return r(t, this)
			}),
			(r._signal = function (e, t) {
				var n = (this._eventRegistry || {})[e]
				if (!n) return
				n = n.slice()
				for (var r = 0; r < n.length; r++) n[r](t, this)
			}),
			(r.once = function (e, t) {
				var n = this
				this.on(e, function r() {
					n.off(e, r), t.apply(null, arguments)
				})
				if (!t)
					return new Promise(function (e) {
						t = e
					})
			}),
			(r.setDefaultHandler = function (e, t) {
				var n = this._defaultHandlers
				n || (n = this._defaultHandlers = { _disabled_: {} })
				if (n[e]) {
					var r = n[e],
						i = n._disabled_[e]
					i || (n._disabled_[e] = i = []), i.push(r)
					var s = i.indexOf(t)
					s != -1 && i.splice(s, 1)
				}
				n[e] = t
			}),
			(r.removeDefaultHandler = function (e, t) {
				var n = this._defaultHandlers
				if (!n) return
				var r = n._disabled_[e]
				if (n[e] == t) r && this.setDefaultHandler(e, r.pop())
				else if (r) {
					var i = r.indexOf(t)
					i != -1 && r.splice(i, 1)
				}
			}),
			(r.on = r.addEventListener =
				function (e, t, n) {
					this._eventRegistry = this._eventRegistry || {}
					var r = this._eventRegistry[e]
					return (
						r || (r = this._eventRegistry[e] = []),
						r.indexOf(t) == -1 && r[n ? 'unshift' : 'push'](t),
						t
					)
				}),
			(r.off =
				r.removeListener =
				r.removeEventListener =
					function (e, t) {
						this._eventRegistry = this._eventRegistry || {}
						var n = this._eventRegistry[e]
						if (!n) return
						var r = n.indexOf(t)
						r !== -1 && n.splice(r, 1)
					}),
			(r.removeAllListeners = function (e) {
				e || (this._eventRegistry = this._defaultHandlers = undefined),
					this._eventRegistry && (this._eventRegistry[e] = undefined),
					this._defaultHandlers && (this._defaultHandlers[e] = undefined)
			}),
			(t.EventEmitter = r)
	}),
	ace.define('ace/anchor', [], function (e, t, n) {
		'use strict'
		var r = e('./lib/oop'),
			i = e('./lib/event_emitter').EventEmitter,
			s = (t.Anchor = function (e, t, n) {
				;(this.$onChange = this.onChange.bind(this)),
					this.attach(e),
					typeof n == 'undefined' ? this.setPosition(t.row, t.column) : this.setPosition(t, n)
			})
		;(function () {
			function e(e, t, n) {
				var r = n ? e.column <= t.column : e.column < t.column
				return e.row < t.row || (e.row == t.row && r)
			}
			function t(t, n, r) {
				var i = t.action == 'insert',
					s = (i ? 1 : -1) * (t.end.row - t.start.row),
					o = (i ? 1 : -1) * (t.end.column - t.start.column),
					u = t.start,
					a = i ? u : t.end
				return e(n, u, r)
					? { row: n.row, column: n.column }
					: e(a, n, !r)
					  ? { row: n.row + s, column: n.column + (n.row == a.row ? o : 0) }
					  : { row: u.row, column: u.column }
			}
			r.implement(this, i),
				(this.getPosition = function () {
					return this.$clipPositionToDocument(this.row, this.column)
				}),
				(this.getDocument = function () {
					return this.document
				}),
				(this.$insertRight = !1),
				(this.onChange = function (e) {
					if (e.start.row == e.end.row && e.start.row != this.row) return
					if (e.start.row > this.row) return
					var n = t(e, { row: this.row, column: this.column }, this.$insertRight)
					this.setPosition(n.row, n.column, !0)
				}),
				(this.setPosition = function (e, t, n) {
					var r
					n ? (r = { row: e, column: t }) : (r = this.$clipPositionToDocument(e, t))
					if (this.row == r.row && this.column == r.column) return
					var i = { row: this.row, column: this.column }
					;(this.row = r.row),
						(this.column = r.column),
						this._signal('change', { old: i, value: r })
				}),
				(this.detach = function () {
					this.document.off('change', this.$onChange)
				}),
				(this.attach = function (e) {
					;(this.document = e || this.document), this.document.on('change', this.$onChange)
				}),
				(this.$clipPositionToDocument = function (e, t) {
					var n = {}
					return (
						e >= this.document.getLength()
							? ((n.row = Math.max(0, this.document.getLength() - 1)),
							  (n.column = this.document.getLine(n.row).length))
							: e < 0
							  ? ((n.row = 0), (n.column = 0))
							  : ((n.row = e),
							    (n.column = Math.min(this.document.getLine(n.row).length, Math.max(0, t)))),
						t < 0 && (n.column = 0),
						n
					)
				})
		}).call(s.prototype)
	}),
	ace.define('ace/document', [], function (e, t, n) {
		'use strict'
		var r = e('./lib/oop'),
			i = e('./apply_delta').applyDelta,
			s = e('./lib/event_emitter').EventEmitter,
			o = e('./range').Range,
			u = e('./anchor').Anchor,
			a = function (e) {
				;(this.$lines = ['']),
					e.length === 0
						? (this.$lines = [''])
						: Array.isArray(e)
						  ? this.insertMergedLines({ row: 0, column: 0 }, e)
						  : this.insert({ row: 0, column: 0 }, e)
			}
		;(function () {
			r.implement(this, s),
				(this.setValue = function (e) {
					var t = this.getLength() - 1
					this.remove(new o(0, 0, t, this.getLine(t).length)), this.insert({ row: 0, column: 0 }, e)
				}),
				(this.getValue = function () {
					return this.getAllLines().join(this.getNewLineCharacter())
				}),
				(this.createAnchor = function (e, t) {
					return new u(this, e, t)
				}),
				'aaa'.split(/a/).length === 0
					? (this.$split = function (e) {
							return e.replace(/\r\n|\r/g, '\n').split('\n')
					  })
					: (this.$split = function (e) {
							return e.split(/\r\n|\r|\n/)
					  }),
				(this.$detectNewLine = function (e) {
					var t = e.match(/^.*?(\r\n|\r|\n)/m)
					;(this.$autoNewLine = t ? t[1] : '\n'), this._signal('changeNewLineMode')
				}),
				(this.getNewLineCharacter = function () {
					switch (this.$newLineMode) {
						case 'windows':
							return '\r\n'
						case 'unix':
							return '\n'
						default:
							return this.$autoNewLine || '\n'
					}
				}),
				(this.$autoNewLine = ''),
				(this.$newLineMode = 'auto'),
				(this.setNewLineMode = function (e) {
					if (this.$newLineMode === e) return
					;(this.$newLineMode = e), this._signal('changeNewLineMode')
				}),
				(this.getNewLineMode = function () {
					return this.$newLineMode
				}),
				(this.isNewLine = function (e) {
					return e == '\r\n' || e == '\r' || e == '\n'
				}),
				(this.getLine = function (e) {
					return this.$lines[e] || ''
				}),
				(this.getLines = function (e, t) {
					return this.$lines.slice(e, t + 1)
				}),
				(this.getAllLines = function () {
					return this.getLines(0, this.getLength())
				}),
				(this.getLength = function () {
					return this.$lines.length
				}),
				(this.getTextRange = function (e) {
					return this.getLinesForRange(e).join(this.getNewLineCharacter())
				}),
				(this.getLinesForRange = function (e) {
					var t
					if (e.start.row === e.end.row)
						t = [this.getLine(e.start.row).substring(e.start.column, e.end.column)]
					else {
						;(t = this.getLines(e.start.row, e.end.row)),
							(t[0] = (t[0] || '').substring(e.start.column))
						var n = t.length - 1
						e.end.row - e.start.row == n && (t[n] = t[n].substring(0, e.end.column))
					}
					return t
				}),
				(this.insertLines = function (e, t) {
					return (
						console.warn(
							'Use of document.insertLines is deprecated. Use the insertFullLines method instead.'
						),
						this.insertFullLines(e, t)
					)
				}),
				(this.removeLines = function (e, t) {
					return (
						console.warn(
							'Use of document.removeLines is deprecated. Use the removeFullLines method instead.'
						),
						this.removeFullLines(e, t)
					)
				}),
				(this.insertNewLine = function (e) {
					return (
						console.warn(
							"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."
						),
						this.insertMergedLines(e, ['', ''])
					)
				}),
				(this.insert = function (e, t) {
					return (
						this.getLength() <= 1 && this.$detectNewLine(t),
						this.insertMergedLines(e, this.$split(t))
					)
				}),
				(this.insertInLine = function (e, t) {
					var n = this.clippedPos(e.row, e.column),
						r = this.pos(e.row, e.column + t.length)
					return (
						this.applyDelta({ start: n, end: r, action: 'insert', lines: [t] }, !0),
						this.clonePos(r)
					)
				}),
				(this.clippedPos = function (e, t) {
					var n = this.getLength()
					e === undefined ? (e = n) : e < 0 ? (e = 0) : e >= n && ((e = n - 1), (t = undefined))
					var r = this.getLine(e)
					return (
						t == undefined && (t = r.length),
						(t = Math.min(Math.max(t, 0), r.length)),
						{ row: e, column: t }
					)
				}),
				(this.clonePos = function (e) {
					return { row: e.row, column: e.column }
				}),
				(this.pos = function (e, t) {
					return { row: e, column: t }
				}),
				(this.$clipPosition = function (e) {
					var t = this.getLength()
					return (
						e.row >= t
							? ((e.row = Math.max(0, t - 1)), (e.column = this.getLine(t - 1).length))
							: ((e.row = Math.max(0, e.row)),
							  (e.column = Math.min(Math.max(e.column, 0), this.getLine(e.row).length))),
						e
					)
				}),
				(this.insertFullLines = function (e, t) {
					e = Math.min(Math.max(e, 0), this.getLength())
					var n = 0
					e < this.getLength()
						? ((t = t.concat([''])), (n = 0))
						: ((t = [''].concat(t)), e--, (n = this.$lines[e].length)),
						this.insertMergedLines({ row: e, column: n }, t)
				}),
				(this.insertMergedLines = function (e, t) {
					var n = this.clippedPos(e.row, e.column),
						r = {
							row: n.row + t.length - 1,
							column: (t.length == 1 ? n.column : 0) + t[t.length - 1].length,
						}
					return this.applyDelta({ start: n, end: r, action: 'insert', lines: t }), this.clonePos(r)
				}),
				(this.remove = function (e) {
					var t = this.clippedPos(e.start.row, e.start.column),
						n = this.clippedPos(e.end.row, e.end.column)
					return (
						this.applyDelta({
							start: t,
							end: n,
							action: 'remove',
							lines: this.getLinesForRange({ start: t, end: n }),
						}),
						this.clonePos(t)
					)
				}),
				(this.removeInLine = function (e, t, n) {
					var r = this.clippedPos(e, t),
						i = this.clippedPos(e, n)
					return (
						this.applyDelta(
							{
								start: r,
								end: i,
								action: 'remove',
								lines: this.getLinesForRange({ start: r, end: i }),
							},
							!0
						),
						this.clonePos(r)
					)
				}),
				(this.removeFullLines = function (e, t) {
					;(e = Math.min(Math.max(0, e), this.getLength() - 1)),
						(t = Math.min(Math.max(0, t), this.getLength() - 1))
					var n = t == this.getLength() - 1 && e > 0,
						r = t < this.getLength() - 1,
						i = n ? e - 1 : e,
						s = n ? this.getLine(i).length : 0,
						u = r ? t + 1 : t,
						a = r ? 0 : this.getLine(u).length,
						f = new o(i, s, u, a),
						l = this.$lines.slice(e, t + 1)
					return (
						this.applyDelta({
							start: f.start,
							end: f.end,
							action: 'remove',
							lines: this.getLinesForRange(f),
						}),
						l
					)
				}),
				(this.removeNewLine = function (e) {
					e < this.getLength() - 1 &&
						e >= 0 &&
						this.applyDelta({
							start: this.pos(e, this.getLine(e).length),
							end: this.pos(e + 1, 0),
							action: 'remove',
							lines: ['', ''],
						})
				}),
				(this.replace = function (e, t) {
					e instanceof o || (e = o.fromPoints(e.start, e.end))
					if (t.length === 0 && e.isEmpty()) return e.start
					if (t == this.getTextRange(e)) return e.end
					this.remove(e)
					var n
					return t ? (n = this.insert(e.start, t)) : (n = e.start), n
				}),
				(this.applyDeltas = function (e) {
					for (var t = 0; t < e.length; t++) this.applyDelta(e[t])
				}),
				(this.revertDeltas = function (e) {
					for (var t = e.length - 1; t >= 0; t--) this.revertDelta(e[t])
				}),
				(this.applyDelta = function (e, t) {
					var n = e.action == 'insert'
					if (n ? e.lines.length <= 1 && !e.lines[0] : !o.comparePoints(e.start, e.end)) return
					n && e.lines.length > 2e4
						? this.$splitAndapplyLargeDelta(e, 2e4)
						: (i(this.$lines, e, t), this._signal('change', e))
				}),
				(this.$safeApplyDelta = function (e) {
					var t = this.$lines.length
					;((e.action == 'remove' && e.start.row < t && e.end.row < t) ||
						(e.action == 'insert' && e.start.row <= t)) &&
						this.applyDelta(e)
				}),
				(this.$splitAndapplyLargeDelta = function (e, t) {
					var n = e.lines,
						r = n.length - t + 1,
						i = e.start.row,
						s = e.start.column
					for (var o = 0, u = 0; o < r; o = u) {
						u += t - 1
						var a = n.slice(o, u)
						a.push(''),
							this.applyDelta(
								{
									start: this.pos(i + o, s),
									end: this.pos(i + u, (s = 0)),
									action: e.action,
									lines: a,
								},
								!0
							)
					}
					;(e.lines = n.slice(o)),
						(e.start.row = i + o),
						(e.start.column = s),
						this.applyDelta(e, !0)
				}),
				(this.revertDelta = function (e) {
					this.$safeApplyDelta({
						start: this.clonePos(e.start),
						end: this.clonePos(e.end),
						action: e.action == 'insert' ? 'remove' : 'insert',
						lines: e.lines.slice(),
					})
				}),
				(this.indexToPosition = function (e, t) {
					var n = this.$lines || this.getAllLines(),
						r = this.getNewLineCharacter().length
					for (var i = t || 0, s = n.length; i < s; i++) {
						e -= n[i].length + r
						if (e < 0) return { row: i, column: e + n[i].length + r }
					}
					return { row: s - 1, column: e + n[s - 1].length + r }
				}),
				(this.positionToIndex = function (e, t) {
					var n = this.$lines || this.getAllLines(),
						r = this.getNewLineCharacter().length,
						i = 0,
						s = Math.min(e.row, n.length)
					for (var o = t || 0; o < s; ++o) i += n[o].length + r
					return i + e.column
				})
		}).call(a.prototype),
			(t.Document = a)
	}),
	ace.define('ace/lib/lang', [], function (e, t, n) {
		'use strict'
		;(t.last = function (e) {
			return e[e.length - 1]
		}),
			(t.stringReverse = function (e) {
				return e.split('').reverse().join('')
			}),
			(t.stringRepeat = function (e, t) {
				var n = ''
				while (t > 0) {
					t & 1 && (n += e)
					if ((t >>= 1)) e += e
				}
				return n
			})
		var r = /^\s\s*/,
			i = /\s\s*$/
		;(t.stringTrimLeft = function (e) {
			return e.replace(r, '')
		}),
			(t.stringTrimRight = function (e) {
				return e.replace(i, '')
			}),
			(t.copyObject = function (e) {
				var t = {}
				for (var n in e) t[n] = e[n]
				return t
			}),
			(t.copyArray = function (e) {
				var t = []
				for (var n = 0, r = e.length; n < r; n++)
					e[n] && typeof e[n] == 'object' ? (t[n] = this.copyObject(e[n])) : (t[n] = e[n])
				return t
			}),
			(t.deepCopy = function s(e) {
				if (typeof e != 'object' || !e) return e
				var t
				if (Array.isArray(e)) {
					t = []
					for (var n = 0; n < e.length; n++) t[n] = s(e[n])
					return t
				}
				if (Object.prototype.toString.call(e) !== '[object Object]') return e
				t = {}
				for (var n in e) t[n] = s(e[n])
				return t
			}),
			(t.arrayToMap = function (e) {
				var t = {}
				for (var n = 0; n < e.length; n++) t[e[n]] = 1
				return t
			}),
			(t.createMap = function (e) {
				var t = Object.create(null)
				for (var n in e) t[n] = e[n]
				return t
			}),
			(t.arrayRemove = function (e, t) {
				for (var n = 0; n <= e.length; n++) t === e[n] && e.splice(n, 1)
			}),
			(t.escapeRegExp = function (e) {
				return e.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1')
			}),
			(t.escapeHTML = function (e) {
				return ('' + e)
					.replace(/&/g, '&#38;')
					.replace(/"/g, '&#34;')
					.replace(/'/g, '&#39;')
					.replace(/</g, '&#60;')
			}),
			(t.getMatchOffsets = function (e, t) {
				var n = []
				return (
					e.replace(t, function (e) {
						n.push({ offset: arguments[arguments.length - 2], length: e.length })
					}),
					n
				)
			}),
			(t.deferredCall = function (e) {
				var t = null,
					n = function () {
						;(t = null), e()
					},
					r = function (e) {
						return r.cancel(), (t = setTimeout(n, e || 0)), r
					}
				return (
					(r.schedule = r),
					(r.call = function () {
						return this.cancel(), e(), r
					}),
					(r.cancel = function () {
						return clearTimeout(t), (t = null), r
					}),
					(r.isPending = function () {
						return t
					}),
					r
				)
			}),
			(t.delayedCall = function (e, t) {
				var n = null,
					r = function () {
						;(n = null), e()
					},
					i = function (e) {
						n == null && (n = setTimeout(r, e || t))
					}
				return (
					(i.delay = function (e) {
						n && clearTimeout(n), (n = setTimeout(r, e || t))
					}),
					(i.schedule = i),
					(i.call = function () {
						this.cancel(), e()
					}),
					(i.cancel = function () {
						n && clearTimeout(n), (n = null)
					}),
					(i.isPending = function () {
						return n
					}),
					i
				)
			})
	}),
	ace.define('ace/worker/mirror', [], function (e, t, n) {
		'use strict'
		var r = e('../range').Range,
			i = e('../document').Document,
			s = e('../lib/lang'),
			o = (t.Mirror = function (e) {
				this.sender = e
				var t = (this.doc = new i('')),
					n = (this.deferredUpdate = s.delayedCall(this.onUpdate.bind(this))),
					r = this
				e.on('change', function (e) {
					var i = e.data
					if (i[0].start) t.applyDeltas(i)
					else
						for (var s = 0; s < i.length; s += 2) {
							if (Array.isArray(i[s + 1]))
								var o = { action: 'insert', start: i[s], lines: i[s + 1] }
							else var o = { action: 'remove', start: i[s], end: i[s + 1] }
							t.applyDelta(o, !0)
						}
					if (r.$timeout) return n.schedule(r.$timeout)
					r.onUpdate()
				})
			})
		;(function () {
			;(this.$timeout = 500),
				(this.setTimeout = function (e) {
					this.$timeout = e
				}),
				(this.setValue = function (e) {
					this.doc.setValue(e), this.deferredUpdate.schedule(this.$timeout)
				}),
				(this.getValue = function (e) {
					this.sender.callback(this.doc.getValue(), e)
				}),
				(this.onUpdate = function () {}),
				(this.isPending = function () {
					return this.deferredUpdate.isPending()
				})
		}).call(o.prototype)
	}),
	ace.define('ace/mode/php/php', [], function (e, t, n) {
		var r = { Constants: {} }
		;(r.Constants.T_INCLUDE = 259),
			(r.Constants.T_INCLUDE_ONCE = 260),
			(r.Constants.T_EVAL = 318),
			(r.Constants.T_REQUIRE = 261),
			(r.Constants.T_REQUIRE_ONCE = 262),
			(r.Constants.T_LOGICAL_OR = 263),
			(r.Constants.T_LOGICAL_XOR = 264),
			(r.Constants.T_LOGICAL_AND = 265),
			(r.Constants.T_PRINT = 266),
			(r.Constants.T_YIELD = 267),
			(r.Constants.T_DOUBLE_ARROW = 268),
			(r.Constants.T_YIELD_FROM = 269),
			(r.Constants.T_PLUS_EQUAL = 270),
			(r.Constants.T_MINUS_EQUAL = 271),
			(r.Constants.T_MUL_EQUAL = 272),
			(r.Constants.T_DIV_EQUAL = 273),
			(r.Constants.T_CONCAT_EQUAL = 274),
			(r.Constants.T_MOD_EQUAL = 275),
			(r.Constants.T_AND_EQUAL = 276),
			(r.Constants.T_OR_EQUAL = 277),
			(r.Constants.T_XOR_EQUAL = 278),
			(r.Constants.T_SL_EQUAL = 279),
			(r.Constants.T_SR_EQUAL = 280),
			(r.Constants.T_POW_EQUAL = 281),
			(r.Constants.T_COALESCE_EQUAL = 282),
			(r.Constants.T_COALESCE = 283),
			(r.Constants.T_BOOLEAN_OR = 284),
			(r.Constants.T_BOOLEAN_AND = 285),
			(r.Constants.T_IS_EQUAL = 286),
			(r.Constants.T_IS_NOT_EQUAL = 287),
			(r.Constants.T_IS_IDENTICAL = 288),
			(r.Constants.T_IS_NOT_IDENTICAL = 289),
			(r.Constants.T_SPACESHIP = 290),
			(r.Constants.T_IS_SMALLER_OR_EQUAL = 291),
			(r.Constants.T_IS_GREATER_OR_EQUAL = 292),
			(r.Constants.T_SL = 293),
			(r.Constants.T_SR = 294),
			(r.Constants.T_INSTANCEOF = 295),
			(r.Constants.T_INC = 319),
			(r.Constants.T_DEC = 320),
			(r.Constants.T_INT_CAST = 296),
			(r.Constants.T_DOUBLE_CAST = 297),
			(r.Constants.T_STRING_CAST = 298),
			(r.Constants.T_ARRAY_CAST = 299),
			(r.Constants.T_OBJECT_CAST = 300),
			(r.Constants.T_BOOL_CAST = 301),
			(r.Constants.T_UNSET_CAST = 302),
			(r.Constants.T_POW = 303),
			(r.Constants.T_NEW = 304),
			(r.Constants.T_CLONE = 305),
			(r.Constants.T_EXIT = 321),
			(r.Constants.T_IF = 322),
			(r.Constants.T_ELSEIF = 307),
			(r.Constants.T_ELSE = 308),
			(r.Constants.T_ENDIF = 323),
			(r.Constants.T_LNUMBER = 309),
			(r.Constants.T_DNUMBER = 310),
			(r.Constants.T_STRING = 311),
			(r.Constants.T_STRING_VARNAME = 316),
			(r.Constants.T_VARIABLE = 312),
			(r.Constants.T_NUM_STRING = 317),
			(r.Constants.T_INLINE_HTML = 313),
			(r.Constants.T_BAD_CHARACTER = 395),
			(r.Constants.T_ENCAPSED_AND_WHITESPACE = 314),
			(r.Constants.T_CONSTANT_ENCAPSED_STRING = 315),
			(r.Constants.T_ECHO = 324),
			(r.Constants.T_DO = 325),
			(r.Constants.T_WHILE = 326),
			(r.Constants.T_ENDWHILE = 327),
			(r.Constants.T_FOR = 328),
			(r.Constants.T_ENDFOR = 329),
			(r.Constants.T_FOREACH = 330),
			(r.Constants.T_ENDFOREACH = 331),
			(r.Constants.T_DECLARE = 332),
			(r.Constants.T_ENDDECLARE = 333),
			(r.Constants.T_AS = 334),
			(r.Constants.T_SWITCH = 335),
			(r.Constants.T_ENDSWITCH = 336),
			(r.Constants.T_CASE = 337),
			(r.Constants.T_DEFAULT = 338),
			(r.Constants.T_BREAK = 339),
			(r.Constants.T_CONTINUE = 340),
			(r.Constants.T_GOTO = 341),
			(r.Constants.T_FUNCTION = 342),
			(r.Constants.T_FN = 343),
			(r.Constants.T_CONST = 344),
			(r.Constants.T_RETURN = 345),
			(r.Constants.T_TRY = 346),
			(r.Constants.T_CATCH = 347),
			(r.Constants.T_FINALLY = 348),
			(r.Constants.T_THROW = 349),
			(r.Constants.T_USE = 350),
			(r.Constants.T_INSTEADOF = 351),
			(r.Constants.T_GLOBAL = 352),
			(r.Constants.T_STATIC = 353),
			(r.Constants.T_ABSTRACT = 354),
			(r.Constants.T_FINAL = 355),
			(r.Constants.T_PRIVATE = 356),
			(r.Constants.T_PROTECTED = 357),
			(r.Constants.T_PUBLIC = 358),
			(r.Constants.T_VAR = 359),
			(r.Constants.T_UNSET = 360),
			(r.Constants.T_ISSET = 361),
			(r.Constants.T_EMPTY = 362),
			(r.Constants.T_HALT_COMPILER = 363),
			(r.Constants.T_CLASS = 364),
			(r.Constants.T_TRAIT = 365),
			(r.Constants.T_INTERFACE = 366),
			(r.Constants.T_EXTENDS = 367),
			(r.Constants.T_IMPLEMENTS = 368),
			(r.Constants.T_OBJECT_OPERATOR = 369),
			(r.Constants.T_DOUBLE_ARROW = 268),
			(r.Constants.T_LIST = 370),
			(r.Constants.T_ARRAY = 371),
			(r.Constants.T_CALLABLE = 372),
			(r.Constants.T_CLASS_C = 376),
			(r.Constants.T_TRAIT_C = 377),
			(r.Constants.T_METHOD_C = 378),
			(r.Constants.T_FUNC_C = 379),
			(r.Constants.T_LINE = 373),
			(r.Constants.T_FILE = 374),
			(r.Constants.T_COMMENT = 380),
			(r.Constants.T_DOC_COMMENT = 381),
			(r.Constants.T_OPEN_TAG = 382),
			(r.Constants.T_OPEN_TAG_WITH_ECHO = 383),
			(r.Constants.T_CLOSE_TAG = 384),
			(r.Constants.T_WHITESPACE = 385),
			(r.Constants.T_START_HEREDOC = 386),
			(r.Constants.T_END_HEREDOC = 387),
			(r.Constants.T_DOLLAR_OPEN_CURLY_BRACES = 388),
			(r.Constants.T_CURLY_OPEN = 389),
			(r.Constants.T_PAAMAYIM_NEKUDOTAYIM = 390),
			(r.Constants.T_NAMESPACE = 391),
			(r.Constants.T_NS_C = 392),
			(r.Constants.T_DIR = 375),
			(r.Constants.T_NS_SEPARATOR = 393),
			(r.Constants.T_ELLIPSIS = 394),
			(r.Lexer = function (e, t) {
				var n,
					i,
					s = ['INITIAL'],
					o = 0,
					u = function (e) {
						s[o] = e
					},
					a = function (e) {
						s[++o] = e
					},
					f = function () {
						--o
					},
					l = t === undefined || /^(on|true|1)$/i.test(t.short_open_tag),
					c = l
						? /^(\<\?php(?:\r\n|[ \t\r\n])|<\?|\<script language\=('|")?php('|")?\>)/i
						: /^(\<\?php(?:\r\n|[ \t\r\n])|\<script language\=('|")?php('|")?\>)/i,
					h = l
						? /[^<]*(?:<(?!\?|script language\=('|")?php('|")?\>)[^<]*)*/i
						: /[^<]*(?:<(?!\?=|\?php[ \t\r\n]|script language\=('|")?php('|")?\>)[^<]*)*/i,
					p = '[a-zA-Z_\\x7f-\\uffff][a-zA-Z0-9_\\x7f-\\uffff]*',
					d = function (e) {
						return (
							'[^' +
							e +
							'\\\\${]*(?:(?:\\\\[\\s\\S]|\\$(?!\\{|[a-zA-Z_\\x7f-\\uffff])|\\{(?!\\$))[^' +
							e +
							'\\\\${]*)*'
						)
					},
					v = [
						{
							value: r.Constants.T_VARIABLE,
							re: new RegExp('^\\$' + p + '(?=\\[)'),
							func: function () {
								a('VAR_OFFSET')
							},
						},
						{
							value: r.Constants.T_VARIABLE,
							re: new RegExp('^\\$' + p + '(?=->' + p + ')'),
							func: function () {
								a('LOOKING_FOR_PROPERTY')
							},
						},
						{
							value: r.Constants.T_DOLLAR_OPEN_CURLY_BRACES,
							re: new RegExp('^\\$\\{(?=' + p + '[\\[}])'),
							func: function () {
								a('LOOKING_FOR_VARNAME')
							},
						},
						{ value: r.Constants.T_VARIABLE, re: new RegExp('^\\$' + p) },
						{
							value: r.Constants.T_DOLLAR_OPEN_CURLY_BRACES,
							re: /^\$\{/,
							func: function () {
								a('IN_SCRIPTING')
							},
						},
						{
							value: r.Constants.T_CURLY_OPEN,
							re: /^\{(?=\$)/,
							func: function () {
								a('IN_SCRIPTING')
							},
						},
					],
					m = {
						INITIAL: [
							{
								value: r.Constants.T_OPEN_TAG_WITH_ECHO,
								re: /^<\?=/i,
								func: function () {
									u('IN_SCRIPTING')
								},
							},
							{
								value: r.Constants.T_OPEN_TAG,
								re: c,
								func: function () {
									u('IN_SCRIPTING')
								},
							},
							{ value: r.Constants.T_INLINE_HTML, re: h },
						],
						IN_SCRIPTING: [
							{ value: r.Constants.T_WHITESPACE, re: /^[ \n\r\t]+/ },
							{ value: r.Constants.T_ABSTRACT, re: /^abstract\b/i },
							{ value: r.Constants.T_LOGICAL_AND, re: /^and\b/i },
							{ value: r.Constants.T_ARRAY, re: /^array\b/i },
							{ value: r.Constants.T_AS, re: /^as\b/i },
							{ value: r.Constants.T_BREAK, re: /^break\b/i },
							{ value: r.Constants.T_CALLABLE, re: /^callable\b/i },
							{ value: r.Constants.T_CASE, re: /^case\b/i },
							{ value: r.Constants.T_CATCH, re: /^catch\b/i },
							{ value: r.Constants.T_CLASS, re: /^class\b/i },
							{ value: r.Constants.T_CLONE, re: /^clone\b/i },
							{ value: r.Constants.T_CONST, re: /^const\b/i },
							{ value: r.Constants.T_CONTINUE, re: /^continue\b/i },
							{ value: r.Constants.T_DECLARE, re: /^declare\b/i },
							{ value: r.Constants.T_DEFAULT, re: /^default\b/i },
							{ value: r.Constants.T_DO, re: /^do\b/i },
							{ value: r.Constants.T_ECHO, re: /^echo\b/i },
							{ value: r.Constants.T_ELSE, re: /^else\b/i },
							{ value: r.Constants.T_ELSEIF, re: /^elseif\b/i },
							{ value: r.Constants.T_ENDDECLARE, re: /^enddeclare\b/i },
							{ value: r.Constants.T_ENDFOR, re: /^endfor\b/i },
							{ value: r.Constants.T_ENDFOREACH, re: /^endforeach\b/i },
							{ value: r.Constants.T_ENDIF, re: /^endif\b/i },
							{ value: r.Constants.T_ENDSWITCH, re: /^endswitch\b/i },
							{ value: r.Constants.T_ENDWHILE, re: /^endwhile\b/i },
							{ value: r.Constants.T_EMPTY, re: /^empty\b/i },
							{ value: r.Constants.T_EVAL, re: /^eval\b/i },
							{ value: r.Constants.T_EXIT, re: /^(?:exit|die)\b/i },
							{ value: r.Constants.T_EXTENDS, re: /^extends\b/i },
							{ value: r.Constants.T_FINAL, re: /^final\b/i },
							{ value: r.Constants.T_FINALLY, re: /^finally\b/i },
							{ value: r.Constants.T_FN, re: /^fn\b/i },
							{ value: r.Constants.T_FOR, re: /^for\b/i },
							{ value: r.Constants.T_FOREACH, re: /^foreach\b/i },
							{ value: r.Constants.T_FUNCTION, re: /^function\b/i },
							{ value: r.Constants.T_GLOBAL, re: /^global\b/i },
							{ value: r.Constants.T_GOTO, re: /^goto\b/i },
							{ value: r.Constants.T_IF, re: /^if\b/i },
							{ value: r.Constants.T_IMPLEMENTS, re: /^implements\b/i },
							{ value: r.Constants.T_INCLUDE, re: /^include\b/i },
							{ value: r.Constants.T_INCLUDE_ONCE, re: /^include_once\b/i },
							{ value: r.Constants.T_INSTANCEOF, re: /^instanceof\b/i },
							{ value: r.Constants.T_INSTEADOF, re: /^insteadof\b/i },
							{ value: r.Constants.T_INTERFACE, re: /^interface\b/i },
							{ value: r.Constants.T_ISSET, re: /^isset\b/i },
							{ value: r.Constants.T_LIST, re: /^list\b/i },
							{ value: r.Constants.T_NAMESPACE, re: /^namespace\b/i },
							{ value: r.Constants.T_NEW, re: /^new\b/i },
							{ value: r.Constants.T_LOGICAL_OR, re: /^or\b/i },
							{ value: r.Constants.T_PRINT, re: /^print\b/i },
							{ value: r.Constants.T_PRIVATE, re: /^private\b/i },
							{ value: r.Constants.T_PROTECTED, re: /^protected\b/i },
							{ value: r.Constants.T_PUBLIC, re: /^public\b/i },
							{ value: r.Constants.T_REQUIRE, re: /^require\b/i },
							{ value: r.Constants.T_REQUIRE_ONCE, re: /^require_once\b/i },
							{ value: r.Constants.T_STATIC, re: /^static\b/i },
							{ value: r.Constants.T_SWITCH, re: /^switch\b/i },
							{ value: r.Constants.T_THROW, re: /^throw\b/i },
							{ value: r.Constants.T_TRAIT, re: /^trait\b/i },
							{ value: r.Constants.T_TRY, re: /^try\b/i },
							{ value: r.Constants.T_UNSET, re: /^unset\b/i },
							{ value: r.Constants.T_USE, re: /^use\b/i },
							{ value: r.Constants.T_VAR, re: /^var\b/i },
							{ value: r.Constants.T_WHILE, re: /^while\b/i },
							{ value: r.Constants.T_LOGICAL_XOR, re: /^xor\b/i },
							{ value: r.Constants.T_YIELD_FROM, re: /^yield\s+from\b/i },
							{ value: r.Constants.T_YIELD, re: /^yield\b/i },
							{ value: r.Constants.T_RETURN, re: /^return\b/i },
							{ value: r.Constants.T_METHOD_C, re: /^__METHOD__\b/i },
							{ value: r.Constants.T_LINE, re: /^__LINE__\b/i },
							{ value: r.Constants.T_FILE, re: /^__FILE__\b/i },
							{ value: r.Constants.T_FUNC_C, re: /^__FUNCTION__\b/i },
							{ value: r.Constants.T_NS_C, re: /^__NAMESPACE__\b/i },
							{ value: r.Constants.T_TRAIT_C, re: /^__TRAIT__\b/i },
							{ value: r.Constants.T_DIR, re: /^__DIR__\b/i },
							{ value: r.Constants.T_CLASS_C, re: /^__CLASS__\b/i },
							{ value: r.Constants.T_AND_EQUAL, re: /^&=/ },
							{ value: r.Constants.T_ARRAY_CAST, re: /^\([ \t]*array[ \t]*\)/i },
							{ value: r.Constants.T_BOOL_CAST, re: /^\([ \t]*(?:bool|boolean)[ \t]*\)/i },
							{ value: r.Constants.T_DOUBLE_CAST, re: /^\([ \t]*(?:real|float|double)[ \t]*\)/i },
							{ value: r.Constants.T_INT_CAST, re: /^\([ \t]*(?:int|integer)[ \t]*\)/i },
							{ value: r.Constants.T_OBJECT_CAST, re: /^\([ \t]*object[ \t]*\)/i },
							{ value: r.Constants.T_STRING_CAST, re: /^\([ \t]*(?:binary|string)[ \t]*\)/i },
							{ value: r.Constants.T_UNSET_CAST, re: /^\([ \t]*unset[ \t]*\)/i },
							{ value: r.Constants.T_BOOLEAN_AND, re: /^&&/ },
							{ value: r.Constants.T_BOOLEAN_OR, re: /^\|\|/ },
							{
								value: r.Constants.T_CLOSE_TAG,
								re: /^(?:\?>|<\/script>)(\r\n|\r|\n)?/i,
								func: function () {
									u('INITIAL')
								},
							},
							{ value: r.Constants.T_DOUBLE_ARROW, re: /^=>/ },
							{ value: r.Constants.T_PAAMAYIM_NEKUDOTAYIM, re: /^::/ },
							{ value: r.Constants.T_INC, re: /^\+\+/ },
							{ value: r.Constants.T_DEC, re: /^--/ },
							{ value: r.Constants.T_CONCAT_EQUAL, re: /^\.=/ },
							{ value: r.Constants.T_DIV_EQUAL, re: /^\/=/ },
							{ value: r.Constants.T_XOR_EQUAL, re: /^\^=/ },
							{ value: r.Constants.T_MUL_EQUAL, re: /^\*=/ },
							{ value: r.Constants.T_MOD_EQUAL, re: /^%=/ },
							{ value: r.Constants.T_SL_EQUAL, re: /^<<=/ },
							{
								value: r.Constants.T_START_HEREDOC,
								re: new RegExp("^[bB]?<<<[ \\t]*'(" + p + ")'(?:\\r\\n|\\r|\\n)"),
								func: function (e) {
									;(n = e[1]), u('NOWDOC')
								},
							},
							{
								value: r.Constants.T_START_HEREDOC,
								re: new RegExp('^[bB]?<<<[ \\t]*("?)(' + p + ')\\1(?:\\r\\n|\\r|\\n)'),
								func: function (e) {
									;(n = e[2]), (i = !0), u('HEREDOC')
								},
							},
							{ value: r.Constants.T_SL, re: /^<</ },
							{ value: r.Constants.T_SPACESHIP, re: /^<=>/ },
							{ value: r.Constants.T_IS_SMALLER_OR_EQUAL, re: /^<=/ },
							{ value: r.Constants.T_SR_EQUAL, re: /^>>=/ },
							{ value: r.Constants.T_SR, re: /^>>/ },
							{ value: r.Constants.T_IS_GREATER_OR_EQUAL, re: /^>=/ },
							{ value: r.Constants.T_OR_EQUAL, re: /^\|=/ },
							{ value: r.Constants.T_PLUS_EQUAL, re: /^\+=/ },
							{ value: r.Constants.T_MINUS_EQUAL, re: /^-=/ },
							{
								value: r.Constants.T_OBJECT_OPERATOR,
								re: new RegExp('^->(?=[ \n\r	]*' + p + ')'),
								func: function () {
									a('LOOKING_FOR_PROPERTY')
								},
							},
							{ value: r.Constants.T_OBJECT_OPERATOR, re: /^->/i },
							{ value: r.Constants.T_ELLIPSIS, re: /^\.\.\./ },
							{ value: r.Constants.T_POW_EQUAL, re: /^\*\*=/ },
							{ value: r.Constants.T_POW, re: /^\*\*/ },
							{ value: r.Constants.T_COALESCE, re: /^\?\?/ },
							{ value: r.Constants.T_COMMENT, re: /^\/\*([\S\s]*?)(?:\*\/|$)/ },
							{
								value: r.Constants.T_COMMENT,
								re: /^(?:\/\/|#)[^\r\n?]*(?:\?(?!>)[^\r\n?]*)*(?:\r\n|\r|\n)?/,
							},
							{ value: r.Constants.T_IS_IDENTICAL, re: /^===/ },
							{ value: r.Constants.T_IS_EQUAL, re: /^==/ },
							{ value: r.Constants.T_IS_NOT_IDENTICAL, re: /^!==/ },
							{ value: r.Constants.T_IS_NOT_EQUAL, re: /^(!=|<>)/ },
							{
								value: r.Constants.T_DNUMBER,
								re: /^(?:[0-9]+\.[0-9]*|\.[0-9]+)(?:[eE][+-]?[0-9]+)?/,
							},
							{ value: r.Constants.T_DNUMBER, re: /^[0-9]+[eE][+-]?[0-9]+/ },
							{ value: r.Constants.T_LNUMBER, re: /^(?:0x[0-9A-F]+|0b[01]+|[0-9]+)/i },
							{ value: r.Constants.T_VARIABLE, re: new RegExp('^\\$' + p) },
							{
								value: r.Constants.T_CONSTANT_ENCAPSED_STRING,
								re: /^[bB]?'[^'\\]*(?:\\[\s\S][^'\\]*)*'/,
							},
							{
								value: r.Constants.T_CONSTANT_ENCAPSED_STRING,
								re: new RegExp('^[bB]?"' + d('"') + '"'),
							},
							{
								value: -1,
								re: /^[bB]?"/,
								func: function () {
									u('DOUBLE_QUOTES')
								},
							},
							{
								value: -1,
								re: /^`/,
								func: function () {
									u('BACKTICKS')
								},
							},
							{ value: r.Constants.T_NS_SEPARATOR, re: /^\\/ },
							{ value: r.Constants.T_STRING, re: /^[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ },
							{
								value: -1,
								re: /^\{/,
								func: function () {
									a('IN_SCRIPTING')
								},
							},
							{
								value: -1,
								re: /^\}/,
								func: function () {
									o > 0 && f()
								},
							},
							{ value: -1, re: /^[\[\];:?()!.,><=+-/*|&@^%"'$~]/ },
						],
						DOUBLE_QUOTES: v.concat([
							{
								value: -1,
								re: /^"/,
								func: function () {
									u('IN_SCRIPTING')
								},
							},
							{ value: r.Constants.T_ENCAPSED_AND_WHITESPACE, re: new RegExp('^' + d('"')) },
						]),
						BACKTICKS: v.concat([
							{
								value: -1,
								re: /^`/,
								func: function () {
									u('IN_SCRIPTING')
								},
							},
							{ value: r.Constants.T_ENCAPSED_AND_WHITESPACE, re: new RegExp('^' + d('`')) },
						]),
						VAR_OFFSET: [
							{
								value: -1,
								re: /^\]/,
								func: function () {
									f()
								},
							},
							{ value: r.Constants.T_NUM_STRING, re: /^(?:0x[0-9A-F]+|0b[01]+|[0-9]+)/i },
							{ value: r.Constants.T_VARIABLE, re: new RegExp('^\\$' + p) },
							{ value: r.Constants.T_STRING, re: new RegExp('^' + p) },
							{ value: -1, re: /^[;:,.\[()|^&+-/*=%!~$<>?@{}"`]/ },
						],
						LOOKING_FOR_PROPERTY: [
							{ value: r.Constants.T_OBJECT_OPERATOR, re: /^->/ },
							{
								value: r.Constants.T_STRING,
								re: new RegExp('^' + p),
								func: function () {
									f()
								},
							},
							{ value: r.Constants.T_WHITESPACE, re: /^[ \n\r\t]+/ },
						],
						LOOKING_FOR_VARNAME: [
							{
								value: r.Constants.T_STRING_VARNAME,
								re: new RegExp('^' + p + '(?=[\\[}])'),
								func: function () {
									u('IN_SCRIPTING')
								},
							},
						],
						NOWDOC: [
							{
								value: r.Constants.T_END_HEREDOC,
								matchFunc: function (e) {
									var t = new RegExp('^' + n + '(?=;?[\\r\\n])')
									return e.match(t) ? [e.substr(0, n.length)] : null
								},
								func: function () {
									u('IN_SCRIPTING')
								},
							},
							{
								value: r.Constants.T_ENCAPSED_AND_WHITESPACE,
								matchFunc: function (e) {
									var t = new RegExp('[\\r\\n]' + n + '(?=;?[\\r\\n])'),
										r = t.exec(e),
										i = r ? r.index + 1 : e.length
									return [e.substring(0, i)]
								},
							},
						],
						HEREDOC: v.concat([
							{
								value: r.Constants.T_END_HEREDOC,
								matchFunc: function (e) {
									if (!i) return null
									var t = new RegExp('^' + n + '(?=;?[\\r\\n])')
									return e.match(t) ? [e.substr(0, n.length)] : null
								},
								func: function () {
									u('IN_SCRIPTING')
								},
							},
							{
								value: r.Constants.T_ENCAPSED_AND_WHITESPACE,
								matchFunc: function (e) {
									var t = e.length,
										r = new RegExp('^' + d('')),
										s = r.exec(e)
									return (
										s && (t = s[0].length),
										(r = new RegExp('([\\r\\n])' + n + '(?=;?[\\r\\n])')),
										(s = r.exec(e.substring(0, t))),
										s ? ((t = s.index + 1), (i = !0)) : (i = !1),
										t == 0 ? null : [e.substring(0, t)]
									)
								},
							},
						]),
					},
					g = [],
					y = 1,
					b = !0
				if (e === null) return g
				typeof e != 'string' && (e = e.toString())
				while (e.length > 0 && b === !0) {
					var w = s[o],
						E = m[w]
					b = E.some(function (t) {
						var n = t.matchFunc !== undefined ? t.matchFunc(e) : e.match(t.re)
						if (n !== null) {
							if (n[0].length == 0) throw new Error('empty match')
							t.func !== undefined && t.func(n)
							if (t.value === -1) g.push(n[0])
							else {
								var r = n[0]
								g.push([parseInt(t.value, 10), r, y]), (y += r.split('\n').length - 1)
							}
							return (e = e.substring(n[0].length)), !0
						}
						return !1
					})
				}
				return g
			}),
			(r.Parser = function (e, t) {
				var n = this.yybase,
					i = this.yydefault,
					s = this.yycheck,
					o = this.yyaction,
					u = this.yylen,
					a = this.yygbase,
					f = this.yygcheck,
					l = this.yyp,
					c = this.yygoto,
					h = this.yylhs,
					p = this.terminals,
					d = this.translate,
					v = this.yygdefault
				;(this.pos = -1),
					(this.line = 1),
					(this.tokenMap = this.createTokenMap()),
					(this.dropTokens = {}),
					(this.dropTokens[r.Constants.T_WHITESPACE] = 1),
					(this.dropTokens[r.Constants.T_OPEN_TAG] = 1)
				var m = []
				e.forEach(function (e, t) {
					typeof e == 'object' && e[0] === r.Constants.T_OPEN_TAG_WITH_ECHO
						? (m.push([r.Constants.T_OPEN_TAG, e[1], e[2]]),
						  m.push([r.Constants.T_ECHO, e[1], e[2]]))
						: m.push(e)
				}),
					(this.tokens = m)
				var g = this.TOKEN_NONE
				;(this.startAttributes = { startLine: 1 }), (this.endAttributes = {})
				var y = [this.startAttributes],
					b = 0,
					w = [b]
				;(this.yyastk = []), (this.stackPos = 0)
				var E, S
				for (;;) {
					if (n[b] === 0) E = i[b]
					else {
						g === this.TOKEN_NONE &&
							((S = this.getNextToken()),
							(g = S >= 0 && S < this.TOKEN_MAP_SIZE ? d[S] : this.TOKEN_INVALID),
							(y[this.stackPos] = this.startAttributes))
						if (
							(((E = n[b] + g) >= 0 && E < this.YYLAST && s[E] === g) ||
								(b < this.YY2TBLSTATE &&
									(E = n[b + this.YYNLSTATES] + g) >= 0 &&
									E < this.YYLAST &&
									s[E] === g)) &&
							(E = o[E]) !== this.YYDEFAULT
						)
							if (E > 0) {
								++this.stackPos,
									(w[this.stackPos] = b = E),
									(this.yyastk[this.stackPos] = this.tokenValue),
									(y[this.stackPos] = this.startAttributes),
									(g = this.TOKEN_NONE)
								if (E < this.YYNLSTATES) continue
								E -= this.YYNLSTATES
							} else E = -E
						else E = i[b]
					}
					for (;;) {
						if (E === 0) return this.yyval
						if (E === this.YYUNEXPECTED) {
							if (t !== !0) {
								var T = []
								for (var N = 0; N < this.TOKEN_MAP_SIZE; ++N)
									if (
										((E = n[b] + N) >= 0 && E < this.YYLAST && s[E] == N) ||
										(b < this.YY2TBLSTATE &&
											(E = n[b + this.YYNLSTATES] + N) &&
											E < this.YYLAST &&
											s[E] == N)
									)
										if (o[E] != this.YYUNEXPECTED) {
											if (T.length == 4) {
												T = []
												break
											}
											T.push(this.terminals[N])
										}
								var C = ''
								throw (
									(T.length && (C = ', expecting ' + T.join(' or ')),
									new r.ParseError(
										'syntax error, unexpected ' + p[g] + C,
										this.startAttributes.startLine
									))
								)
							}
							return this.startAttributes.startLine
						}
						for (var x in this.endAttributes) y[this.stackPos - u[E]][x] = this.endAttributes[x]
						;(this.stackPos -= u[E]),
							(E = h[E]),
							(l = a[E] + w[this.stackPos]) >= 0 && l < this.YYGLAST && f[l] === E
								? (b = c[l])
								: (b = v[E]),
							++this.stackPos,
							(w[this.stackPos] = b),
							(this.yyastk[this.stackPos] = this.yyval),
							(y[this.stackPos] = this.startAttributes)
						if (b < this.YYNLSTATES) break
						E = b - this.YYNLSTATES
					}
				}
			}),
			(r.ParseError = function (e, t) {
				;(this.message = e), (this.line = t)
			}),
			(r.Parser.prototype.getNextToken = function () {
				;(this.startAttributes = {}), (this.endAttributes = {})
				var e, t
				while (this.tokens[++this.pos] !== undefined) {
					e = this.tokens[this.pos]
					if (typeof e == 'string')
						return (
							(this.startAttributes.startLine = this.line),
							(this.endAttributes.endLine = this.line),
							'b"' === e
								? ((this.tokenValue = 'b"'), '"'.charCodeAt(0))
								: ((this.tokenValue = e), e.charCodeAt(0))
						)
					this.line += (t = e[1].match(/\n/g)) === null ? 0 : t.length
					if (r.Constants.T_COMMENT === e[0])
						Array.isArray(this.startAttributes.comments) || (this.startAttributes.comments = []),
							this.startAttributes.comments.push({ type: 'comment', comment: e[1], line: e[2] })
					else if (r.Constants.T_DOC_COMMENT === e[0])
						this.startAttributes.comments.push(new PHPParser_Comment_Doc(e[1], e[2]))
					else if (this.dropTokens[e[0]] === undefined)
						return (
							(this.tokenValue = e[1]),
							(this.startAttributes.startLine = e[2]),
							(this.endAttributes.endLine = this.line),
							this.tokenMap[e[0]]
						)
				}
				return (this.startAttributes.startLine = this.line), 0
			}),
			(r.Parser.prototype.tokenName = function (e) {
				var t = [
						'T_INCLUDE',
						'T_INCLUDE_ONCE',
						'T_EVAL',
						'T_REQUIRE',
						'T_REQUIRE_ONCE',
						'T_LOGICAL_OR',
						'T_LOGICAL_XOR',
						'T_LOGICAL_AND',
						'T_PRINT',
						'T_YIELD',
						'T_DOUBLE_ARROW',
						'T_YIELD_FROM',
						'T_PLUS_EQUAL',
						'T_MINUS_EQUAL',
						'T_MUL_EQUAL',
						'T_DIV_EQUAL',
						'T_CONCAT_EQUAL',
						'T_MOD_EQUAL',
						'T_AND_EQUAL',
						'T_OR_EQUAL',
						'T_XOR_EQUAL',
						'T_SL_EQUAL',
						'T_SR_EQUAL',
						'T_POW_EQUAL',
						'T_COALESCE_EQUAL',
						'T_COALESCE',
						'T_BOOLEAN_OR',
						'T_BOOLEAN_AND',
						'T_IS_EQUAL',
						'T_IS_NOT_EQUAL',
						'T_IS_IDENTICAL',
						'T_IS_NOT_IDENTICAL',
						'T_SPACESHIP',
						'T_IS_SMALLER_OR_EQUAL',
						'T_IS_GREATER_OR_EQUAL',
						'T_SL',
						'T_SR',
						'T_INSTANCEOF',
						'T_INC',
						'T_DEC',
						'T_INT_CAST',
						'T_DOUBLE_CAST',
						'T_STRING_CAST',
						'T_ARRAY_CAST',
						'T_OBJECT_CAST',
						'T_BOOL_CAST',
						'T_UNSET_CAST',
						'T_POW',
						'T_NEW',
						'T_CLONE',
						'T_EXIT',
						'T_IF',
						'T_ELSEIF',
						'T_ELSE',
						'T_ENDIF',
						'T_LNUMBER',
						'T_DNUMBER',
						'T_STRING',
						'T_STRING_VARNAME',
						'T_VARIABLE',
						'T_NUM_STRING',
						'T_INLINE_HTML',
						'T_CHARACTER',
						'T_BAD_CHARACTER',
						'T_ENCAPSED_AND_WHITESPACE',
						'T_CONSTANT_ENCAPSED_STRING',
						'T_ECHO',
						'T_DO',
						'T_WHILE',
						'T_ENDWHILE',
						'T_FOR',
						'T_ENDFOR',
						'T_FOREACH',
						'T_ENDFOREACH',
						'T_DECLARE',
						'T_ENDDECLARE',
						'T_AS',
						'T_SWITCH',
						'T_ENDSWITCH',
						'T_CASE',
						'T_DEFAULT',
						'T_BREAK',
						'T_CONTINUE',
						'T_GOTO',
						'T_FUNCTION',
						'T_FN',
						'T_CONST',
						'T_RETURN',
						'T_TRY',
						'T_CATCH',
						'T_FINALLY',
						'T_THROW',
						'T_USE',
						'T_INSTEADOF',
						'T_GLOBAL',
						'T_STATIC',
						'T_ABSTRACT',
						'T_FINAL',
						'T_PRIVATE',
						'T_PROTECTED',
						'T_PUBLIC',
						'T_VAR',
						'T_UNSET',
						'T_ISSET',
						'T_EMPTY',
						'T_HALT_COMPILER',
						'T_CLASS',
						'T_TRAIT',
						'T_INTERFACE',
						'T_EXTENDS',
						'T_IMPLEMENTS',
						'T_OBJECT_OPERATOR',
						'T_DOUBLE_ARROW',
						'T_LIST',
						'T_ARRAY',
						'T_CALLABLE',
						'T_CLASS_C',
						'T_TRAIT_C',
						'T_METHOD_C',
						'T_FUNC_C',
						'T_LINE',
						'T_FILE',
						'T_COMMENT',
						'T_DOC_COMMENT',
						'T_OPEN_TAG',
						'T_OPEN_TAG_WITH_ECHO',
						'T_CLOSE_TAG',
						'T_WHITESPACE',
						'T_START_HEREDOC',
						'T_END_HEREDOC',
						'T_DOLLAR_OPEN_CURLY_BRACES',
						'T_CURLY_OPEN',
						'T_PAAMAYIM_NEKUDOTAYIM',
						'T_NAMESPACE',
						'T_NS_C',
						'T_DIR',
						'T_NS_SEPARATOR',
						'T_ELLIPSIS',
					],
					n = 'UNKNOWN'
				return (
					t.some(function (t) {
						return r.Constants[t] === e ? ((n = t), !0) : !1
					}),
					n
				)
			}),
			(r.Parser.prototype.createTokenMap = function () {
				var e = {},
					t,
					n
				for (n = 256; n < 1e3; ++n)
					r.Constants.T_OPEN_TAG_WITH_ECHO === n
						? (e[n] = r.Constants.T_ECHO)
						: r.Constants.T_CLOSE_TAG === n
						  ? (e[n] = 59)
						  : 'UNKNOWN' !== (t = this.tokenName(n)) && (e[n] = this[t])
				return e
			}),
			(r.Parser.prototype.TOKEN_NONE = -1),
			(r.Parser.prototype.TOKEN_INVALID = 159),
			(r.Parser.prototype.TOKEN_MAP_SIZE = 394),
			(r.Parser.prototype.YYLAST = 964),
			(r.Parser.prototype.YY2TBLSTATE = 348),
			(r.Parser.prototype.YYGLAST = 508),
			(r.Parser.prototype.YYNLSTATES = 602),
			(r.Parser.prototype.YYUNEXPECTED = 32767),
			(r.Parser.prototype.YYDEFAULT = -32766),
			(r.Parser.prototype.YYERRTOK = 256),
			(r.Parser.prototype.T_INCLUDE = 257),
			(r.Parser.prototype.T_INCLUDE_ONCE = 258),
			(r.Parser.prototype.T_EVAL = 259),
			(r.Parser.prototype.T_REQUIRE = 260),
			(r.Parser.prototype.T_REQUIRE_ONCE = 261),
			(r.Parser.prototype.T_LOGICAL_OR = 262),
			(r.Parser.prototype.T_LOGICAL_XOR = 263),
			(r.Parser.prototype.T_LOGICAL_AND = 264),
			(r.Parser.prototype.T_PRINT = 265),
			(r.Parser.prototype.T_YIELD = 266),
			(r.Parser.prototype.T_DOUBLE_ARROW = 267),
			(r.Parser.prototype.T_YIELD_FROM = 268),
			(r.Parser.prototype.T_PLUS_EQUAL = 269),
			(r.Parser.prototype.T_MINUS_EQUAL = 270),
			(r.Parser.prototype.T_MUL_EQUAL = 271),
			(r.Parser.prototype.T_DIV_EQUAL = 272),
			(r.Parser.prototype.T_CONCAT_EQUAL = 273),
			(r.Parser.prototype.T_MOD_EQUAL = 274),
			(r.Parser.prototype.T_AND_EQUAL = 275),
			(r.Parser.prototype.T_OR_EQUAL = 276),
			(r.Parser.prototype.T_XOR_EQUAL = 277),
			(r.Parser.prototype.T_SL_EQUAL = 278),
			(r.Parser.prototype.T_SR_EQUAL = 279),
			(r.Parser.prototype.T_POW_EQUAL = 280),
			(r.Parser.prototype.T_COALESCE_EQUAL = 281),
			(r.Parser.prototype.T_COALESCE = 282),
			(r.Parser.prototype.T_BOOLEAN_OR = 283),
			(r.Parser.prototype.T_BOOLEAN_AND = 284),
			(r.Parser.prototype.T_IS_EQUAL = 285),
			(r.Parser.prototype.T_IS_NOT_EQUAL = 286),
			(r.Parser.prototype.T_IS_IDENTICAL = 287),
			(r.Parser.prototype.T_IS_NOT_IDENTICAL = 288),
			(r.Parser.prototype.T_SPACESHIP = 289),
			(r.Parser.prototype.T_IS_SMALLER_OR_EQUAL = 290),
			(r.Parser.prototype.T_IS_GREATER_OR_EQUAL = 291),
			(r.Parser.prototype.T_SL = 292),
			(r.Parser.prototype.T_SR = 293),
			(r.Parser.prototype.T_INSTANCEOF = 294),
			(r.Parser.prototype.T_INC = 295),
			(r.Parser.prototype.T_DEC = 296),
			(r.Parser.prototype.T_INT_CAST = 297),
			(r.Parser.prototype.T_DOUBLE_CAST = 298),
			(r.Parser.prototype.T_STRING_CAST = 299),
			(r.Parser.prototype.T_ARRAY_CAST = 300),
			(r.Parser.prototype.T_OBJECT_CAST = 301),
			(r.Parser.prototype.T_BOOL_CAST = 302),
			(r.Parser.prototype.T_UNSET_CAST = 303),
			(r.Parser.prototype.T_POW = 304),
			(r.Parser.prototype.T_NEW = 305),
			(r.Parser.prototype.T_CLONE = 306),
			(r.Parser.prototype.T_EXIT = 307),
			(r.Parser.prototype.T_IF = 308),
			(r.Parser.prototype.T_ELSEIF = 309),
			(r.Parser.prototype.T_ELSE = 310),
			(r.Parser.prototype.T_ENDIF = 311),
			(r.Parser.prototype.T_LNUMBER = 312),
			(r.Parser.prototype.T_DNUMBER = 313),
			(r.Parser.prototype.T_STRING = 314),
			(r.Parser.prototype.T_STRING_VARNAME = 315),
			(r.Parser.prototype.T_VARIABLE = 316),
			(r.Parser.prototype.T_NUM_STRING = 317),
			(r.Parser.prototype.T_INLINE_HTML = 318),
			(r.Parser.prototype.T_CHARACTER = 319),
			(r.Parser.prototype.T_BAD_CHARACTER = 320),
			(r.Parser.prototype.T_ENCAPSED_AND_WHITESPACE = 321),
			(r.Parser.prototype.T_CONSTANT_ENCAPSED_STRING = 322),
			(r.Parser.prototype.T_ECHO = 323),
			(r.Parser.prototype.T_DO = 324),
			(r.Parser.prototype.T_WHILE = 325),
			(r.Parser.prototype.T_ENDWHILE = 326),
			(r.Parser.prototype.T_FOR = 327),
			(r.Parser.prototype.T_ENDFOR = 328),
			(r.Parser.prototype.T_FOREACH = 329),
			(r.Parser.prototype.T_ENDFOREACH = 330),
			(r.Parser.prototype.T_DECLARE = 331),
			(r.Parser.prototype.T_ENDDECLARE = 332),
			(r.Parser.prototype.T_AS = 333),
			(r.Parser.prototype.T_SWITCH = 334),
			(r.Parser.prototype.T_ENDSWITCH = 335),
			(r.Parser.prototype.T_CASE = 336),
			(r.Parser.prototype.T_DEFAULT = 337),
			(r.Parser.prototype.T_BREAK = 338),
			(r.Parser.prototype.T_CONTINUE = 339),
			(r.Parser.prototype.T_GOTO = 340),
			(r.Parser.prototype.T_FUNCTION = 341),
			(r.Parser.prototype.T_FN = 342),
			(r.Parser.prototype.T_CONST = 343),
			(r.Parser.prototype.T_RETURN = 344),
			(r.Parser.prototype.T_TRY = 345),
			(r.Parser.prototype.T_CATCH = 346),
			(r.Parser.prototype.T_FINALLY = 347),
			(r.Parser.prototype.T_THROW = 348),
			(r.Parser.prototype.T_USE = 349),
			(r.Parser.prototype.T_INSTEADOF = 350),
			(r.Parser.prototype.T_GLOBAL = 351),
			(r.Parser.prototype.T_STATIC = 352),
			(r.Parser.prototype.T_ABSTRACT = 353),
			(r.Parser.prototype.T_FINAL = 354),
			(r.Parser.prototype.T_PRIVATE = 355),
			(r.Parser.prototype.T_PROTECTED = 356),
			(r.Parser.prototype.T_PUBLIC = 357),
			(r.Parser.prototype.T_VAR = 358),
			(r.Parser.prototype.T_UNSET = 359),
			(r.Parser.prototype.T_ISSET = 360),
			(r.Parser.prototype.T_EMPTY = 361),
			(r.Parser.prototype.T_HALT_COMPILER = 362),
			(r.Parser.prototype.T_CLASS = 363),
			(r.Parser.prototype.T_TRAIT = 364),
			(r.Parser.prototype.T_INTERFACE = 365),
			(r.Parser.prototype.T_EXTENDS = 366),
			(r.Parser.prototype.T_IMPLEMENTS = 367),
			(r.Parser.prototype.T_OBJECT_OPERATOR = 368),
			(r.Parser.prototype.T_LIST = 369),
			(r.Parser.prototype.T_ARRAY = 370),
			(r.Parser.prototype.T_CALLABLE = 371),
			(r.Parser.prototype.T_CLASS_C = 372),
			(r.Parser.prototype.T_TRAIT_C = 373),
			(r.Parser.prototype.T_METHOD_C = 374),
			(r.Parser.prototype.T_FUNC_C = 375),
			(r.Parser.prototype.T_LINE = 376),
			(r.Parser.prototype.T_FILE = 377),
			(r.Parser.prototype.T_COMMENT = 378),
			(r.Parser.prototype.T_DOC_COMMENT = 379),
			(r.Parser.prototype.T_OPEN_TAG = 380),
			(r.Parser.prototype.T_OPEN_TAG_WITH_ECHO = 381),
			(r.Parser.prototype.T_CLOSE_TAG = 382),
			(r.Parser.prototype.T_WHITESPACE = 383),
			(r.Parser.prototype.T_START_HEREDOC = 384),
			(r.Parser.prototype.T_END_HEREDOC = 385),
			(r.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES = 386),
			(r.Parser.prototype.T_CURLY_OPEN = 387),
			(r.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM = 388),
			(r.Parser.prototype.T_NAMESPACE = 389),
			(r.Parser.prototype.T_NS_C = 390),
			(r.Parser.prototype.T_DIR = 391),
			(r.Parser.prototype.T_NS_SEPARATOR = 392),
			(r.Parser.prototype.T_ELLIPSIS = 393),
			(r.Parser.prototype.terminals = [
				'EOF',
				'error',
				'T_INCLUDE',
				'T_INCLUDE_ONCE',
				'T_EVAL',
				'T_REQUIRE',
				'T_REQUIRE_ONCE',
				"','",
				'T_LOGICAL_OR',
				'T_LOGICAL_XOR',
				'T_LOGICAL_AND',
				'T_PRINT',
				'T_YIELD',
				'T_DOUBLE_ARROW',
				'T_YIELD_FROM',
				"'='",
				'T_PLUS_EQUAL',
				'T_MINUS_EQUAL',
				'T_MUL_EQUAL',
				'T_DIV_EQUAL',
				'T_CONCAT_EQUAL',
				'T_MOD_EQUAL',
				'T_AND_EQUAL',
				'T_OR_EQUAL',
				'T_XOR_EQUAL',
				'T_SL_EQUAL',
				'T_SR_EQUAL',
				'T_POW_EQUAL',
				'T_COALESCE_EQUAL',
				"'?'",
				"':'",
				'T_COALESCE',
				'T_BOOLEAN_OR',
				'T_BOOLEAN_AND',
				"'|'",
				"'^'",
				"'&'",
				'T_IS_EQUAL',
				'T_IS_NOT_EQUAL',
				'T_IS_IDENTICAL',
				'T_IS_NOT_IDENTICAL',
				'T_SPACESHIP',
				"'<'",
				'T_IS_SMALLER_OR_EQUAL',
				"'>'",
				'T_IS_GREATER_OR_EQUAL',
				'T_SL',
				'T_SR',
				"'+'",
				"'-'",
				"'.'",
				"'*'",
				"'/'",
				"'%'",
				"'!'",
				'T_INSTANCEOF',
				"'~'",
				'T_INC',
				'T_DEC',
				'T_INT_CAST',
				'T_DOUBLE_CAST',
				'T_STRING_CAST',
				'T_ARRAY_CAST',
				'T_OBJECT_CAST',
				'T_BOOL_CAST',
				'T_UNSET_CAST',
				"'@'",
				'T_POW',
				"'['",
				'T_NEW',
				'T_CLONE',
				'T_EXIT',
				'T_IF',
				'T_ELSEIF',
				'T_ELSE',
				'T_ENDIF',
				'T_LNUMBER',
				'T_DNUMBER',
				'T_STRING',
				'T_STRING_VARNAME',
				'T_VARIABLE',
				'T_NUM_STRING',
				'T_INLINE_HTML',
				'T_ENCAPSED_AND_WHITESPACE',
				'T_CONSTANT_ENCAPSED_STRING',
				'T_ECHO',
				'T_DO',
				'T_WHILE',
				'T_ENDWHILE',
				'T_FOR',
				'T_ENDFOR',
				'T_FOREACH',
				'T_ENDFOREACH',
				'T_DECLARE',
				'T_ENDDECLARE',
				'T_AS',
				'T_SWITCH',
				'T_ENDSWITCH',
				'T_CASE',
				'T_DEFAULT',
				'T_BREAK',
				'T_CONTINUE',
				'T_GOTO',
				'T_FUNCTION',
				'T_FN',
				'T_CONST',
				'T_RETURN',
				'T_TRY',
				'T_CATCH',
				'T_FINALLY',
				'T_THROW',
				'T_USE',
				'T_INSTEADOF',
				'T_GLOBAL',
				'T_STATIC',
				'T_ABSTRACT',
				'T_FINAL',
				'T_PRIVATE',
				'T_PROTECTED',
				'T_PUBLIC',
				'T_VAR',
				'T_UNSET',
				'T_ISSET',
				'T_EMPTY',
				'T_HALT_COMPILER',
				'T_CLASS',
				'T_TRAIT',
				'T_INTERFACE',
				'T_EXTENDS',
				'T_IMPLEMENTS',
				'T_OBJECT_OPERATOR',
				'T_LIST',
				'T_ARRAY',
				'T_CALLABLE',
				'T_CLASS_C',
				'T_TRAIT_C',
				'T_METHOD_C',
				'T_FUNC_C',
				'T_LINE',
				'T_FILE',
				'T_START_HEREDOC',
				'T_END_HEREDOC',
				'T_DOLLAR_OPEN_CURLY_BRACES',
				'T_CURLY_OPEN',
				'T_PAAMAYIM_NEKUDOTAYIM',
				'T_NAMESPACE',
				'T_NS_C',
				'T_DIR',
				'T_NS_SEPARATOR',
				'T_ELLIPSIS',
				"';'",
				"'{'",
				"'}'",
				"'('",
				"')'",
				"'`'",
				"']'",
				"'\"'",
				"'$'",
				'???',
			]),
			(r.Parser.prototype.translate = [
				0, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 54, 157, 159, 158, 53,
				36, 159, 153, 154, 51, 48, 7, 49, 50, 52, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				30, 150, 42, 15, 44, 29, 66, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 68, 159, 156, 35, 159,
				155, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 151, 34, 152, 56, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
				159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 1, 2, 3, 4, 5, 6,
				8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33,
				37, 38, 39, 40, 41, 43, 45, 46, 47, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 69, 70, 71,
				72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 159, 159, 83, 84, 85, 86, 87, 88, 89, 90, 91,
				92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
				112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
				130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 159, 159, 159, 159, 159, 159, 140, 141,
				142, 143, 144, 145, 146, 147, 148, 149,
			]),
			(r.Parser.prototype.yyaction = [
				607, 608, 609, 610, 611, 685, 612, 613, 614, 650, 651, 0, 32, 103, 104, 105, 106, 107, 108,
				109, 110, 111, 112, 113, 114, 115, -32767, -32767, -32767, -32767, 94, 95, 96, 97, 98,
				-32766, -32766, -32766, 687, 491, -497, 904, 905, 906, 903, 902, 901, 904, 905, 906, 903,
				902, 901, 615, 938, 940, -32766, 9, -32766, -32766, -32766, -32766, -32766, -32766, -32766,
				-32766, -32766, 616, 617, 618, 619, 620, 621, 622, 333, 1104, 683, -32766, -32766, -32766,
				846, 1103, 119, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 653, 654, 655, 656,
				657, 645, 646, 647, 675, 648, 649, 634, 635, 636, 637, 638, 639, 640, 677, 678, 679, 680,
				681, 682, 641, 642, 643, 644, 674, 665, 663, 664, 660, 661, 402, 652, 658, 659, 666, 667,
				669, 668, 670, 671, 45, 46, 421, 47, 48, 662, 673, 672, 27, 49, 50, 233, 51, -32766, -32766,
				-32766, 96, 97, 98, 24, -32766, -32766, -32766, -458, 261, 121, 1023, -32766, -32766,
				-32766, 1091, 1073, -32766, -32766, -32766, 1039, -32766, -32766, -32766, -32766, -32766,
				-32766, -496, -32766, -32766, -32766, 52, 53, -32766, -497, -32766, -32766, 54, 687, 55,
				231, 232, 56, 57, 58, 59, 60, 61, 62, 63, 1016, 24, 242, 64, 369, -32766, -32766, -32766,
				226, 1040, 1041, 423, 1076, 1073, -493, 880, 508, 1039, 436, 1023, -458, 768, 1073, 239,
				333, -500, -32766, -500, -32766, -32766, -32766, -32766, 856, 253, -458, 276, 378, 372, 786,
				68, 1073, -458, 685, -461, 278, 1126, 403, 289, 1127, 288, 99, 100, 101, 303, 252, 433, 434,
				822, -32766, 69, 261, 237, 850, 851, 435, 436, 102, 1045, 1046, 1047, 1048, 1042, 1043, 256,
				1016, -456, -456, 306, 444, 1049, 1044, 375, 133, 561, -239, 363, 66, 237, 268, 692, 273,
				278, 422, -137, -137, -137, -4, 768, 1073, 310, 278, 1035, 757, 687, 362, 37, 20, 424, -137,
				425, -137, 426, -137, 427, -137, 127, 428, -295, 278, -295, 38, 39, 370, 371, -496, 271, 40,
				429, 277, 687, 65, 261, 1016, 302, 896, 430, 431, -456, -456, 333, -494, 432, 44, 42, 743,
				791, 373, 374, -457, -234, 562, -456, -456, 375, -32766, -32766, -32766, 882, -456, -456,
				124, -493, 75, 850, 851, 333, -273, -260, 422, 768, 770, 576, -137, 261, 125, -32766, 278,
				823, 757, 857, 1073, 37, 20, 424, 240, 425, -178, 426, 589, 427, 393, 503, 428, 687, 235,
				241, 38, 39, 370, 371, 125, 354, 40, 429, 260, 259, 65, 267, 687, 302, -457, 430, 431, -296,
				-177, -296, 24, 432, 305, 365, 700, 791, 373, 374, -457, 120, 118, 24, 1073, 30, 366, -457,
				1039, -460, 850, 851, 687, 367, 691, 1073, 422, 291, 768, 1039, 333, -83, 770, 576, -4, 467,
				757, 126, 368, 37, 20, 424, -92, 425, 278, 426, 444, 427, 1016, 375, 428, -219, -219, -219,
				38, 39, 370, 371, 333, 1016, 40, 429, 850, 851, 65, 435, 436, 302, 236, 430, 431, 225, 708,
				-494, 709, 432, 435, 436, 743, 791, 373, 374, 690, 387, 136, 1117, 578, 68, 413, 238, 8, 33,
				278, 1053, 227, 708, 687, 709, 68, 422, -260, 535, 21, 278, 770, 576, -219, 550, 551, 757,
				687, 116, 37, 20, 424, 117, 425, 358, 426, -178, 427, 132, 328, 428, -218, -218, -218, 38,
				39, 370, 371, 687, 333, 40, 429, 122, 768, 65, 383, 384, 302, 123, 430, 431, 29, 234, 333,
				-177, 432, 528, 529, 743, 791, 373, 374, 129, 850, 851, 135, 76, 77, 78, 1092, 881, 599,
				582, 254, 333, 137, 138, 782, 590, 593, 293, 767, 131, 252, 770, 576, -218, 31, 102, 79, 80,
				81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 43,
				252, 422, 558, 768, 687, 690, -32766, 471, 130, 476, 685, 757, 102, 553, 37, 20, 424, 526,
				425, 688, 426, 272, 427, 910, 1016, 428, 792, 1128, 793, 38, 39, 370, 583, 269, 570, 40,
				429, 536, 1052, 65, 275, 1055, 302, -415, 541, 270, -81, 10, 391, 768, 432, 542, 554, 784,
				594, 5, 0, 12, 577, 0, 0, 304, 0, 0, 0, 0, 336, 342, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 584,
				770, 576, 0, 0, 0, 757, 0, 0, 37, 20, 424, 343, 425, 0, 426, 0, 427, 768, 0, 428, 0, 0, 0,
				38, 39, 370, 347, 387, 473, 40, 429, 359, 360, 65, 744, 35, 302, 36, 597, 598, 748, 422,
				825, 809, 432, 816, 587, 876, 877, 806, 817, 757, 746, 804, 37, 20, 424, 885, 425, 888, 426,
				889, 427, 768, 886, 428, 887, 893, -485, 38, 39, 370, 579, 770, 576, 40, 429, 581, 585, 65,
				586, 588, 302, 592, 286, 287, 352, 353, 422, 580, 432, 1123, 591, 1125, 703, 790, 702, 712,
				757, 789, 713, 37, 20, 424, 710, 425, 1124, 426, 788, 427, 768, 1004, 428, 711, 777, 785,
				38, 39, 370, 808, 576, -483, 40, 429, 775, 814, 65, 815, 1122, 302, 1074, 1067, 1081, 1086,
				422, 1089, -237, 432, -461, -460, -459, 23, 25, 28, 757, 34, 41, 37, 20, 424, 67, 425, 70,
				426, 71, 427, 72, 73, 428, 74, 128, 134, 38, 39, 370, 139, 770, 576, 40, 429, 229, 230, 65,
				246, 247, 302, 248, 249, 250, 251, 290, 422, 355, 432, 357, -427, -235, -234, 14, 15, 16,
				757, 17, 19, 37, 20, 424, 325, 425, 404, 426, 406, 427, 409, 411, 428, 412, 419, 567, 38,
				39, 370, 770, 576, 1027, 40, 429, 977, 1037, 65, 858, 1008, 302, -32766, -32766, -32766,
				-92, 13, 18, 22, 432, 263, 324, 501, 522, 569, 981, 978, 0, 994, 0, 1036, 1065, 1066,
				-32766, 1080, -32766, -32766, -32766, -32766, -32766, -32766, -32767, -32767, -32767,
				-32767, -32767, 1120, 532, 770, 576, 1054,
			]),
			(r.Parser.prototype.yycheck = [
				2, 3, 4, 5, 6, 78, 8, 9, 10, 11, 12, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
				28, 42, 43, 44, 45, 46, 47, 48, 49, 50, 8, 9, 10, 78, 79, 7, 114, 115, 116, 117, 118, 119,
				114, 115, 116, 117, 118, 119, 55, 57, 58, 29, 7, 31, 32, 33, 34, 35, 36, 8, 9, 10, 69, 70,
				71, 72, 73, 74, 75, 114, 1, 78, 8, 9, 10, 1, 7, 13, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
				95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
				114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 30, 131,
				132, 133, 134, 135, 136, 137, 138, 139, 2, 3, 4, 5, 6, 145, 146, 147, 7, 11, 12, 36, 14, 8,
				9, 10, 48, 49, 50, 68, 8, 9, 10, 68, 29, 7, 1, 8, 9, 10, 1, 80, 8, 9, 29, 84, 31, 32, 33,
				34, 35, 29, 7, 31, 32, 33, 48, 49, 29, 154, 31, 32, 54, 78, 56, 57, 58, 59, 60, 61, 62, 63,
				64, 65, 66, 114, 68, 69, 70, 71, 8, 9, 10, 13, 76, 77, 78, 1, 80, 7, 1, 49, 84, 132, 1, 130,
				1, 80, 7, 114, 154, 29, 156, 31, 32, 33, 34, 1, 7, 144, 7, 103, 104, 1, 153, 80, 151, 78,
				153, 158, 78, 151, 114, 81, 7, 51, 52, 53, 7, 55, 122, 123, 30, 8, 149, 29, 36, 132, 133,
				131, 132, 67, 134, 135, 136, 137, 138, 139, 140, 114, 68, 68, 7, 145, 146, 147, 148, 13, 78,
				154, 125, 153, 36, 155, 1, 157, 158, 72, 73, 74, 75, 0, 1, 80, 7, 158, 1, 82, 78, 7, 85, 86,
				87, 88, 89, 90, 91, 92, 93, 94, 151, 96, 103, 158, 105, 100, 101, 102, 103, 154, 111, 106,
				107, 68, 78, 110, 29, 114, 113, 120, 115, 116, 130, 130, 114, 7, 121, 68, 68, 124, 125, 126,
				127, 68, 154, 145, 144, 144, 148, 8, 9, 10, 152, 151, 151, 30, 154, 151, 132, 133, 114, 152,
				7, 72, 1, 150, 151, 152, 29, 149, 29, 158, 150, 82, 154, 80, 85, 86, 87, 36, 89, 7, 91, 151,
				93, 130, 1, 96, 78, 36, 36, 100, 101, 102, 103, 149, 105, 106, 107, 130, 130, 110, 111, 78,
				113, 130, 115, 116, 103, 7, 105, 68, 121, 144, 7, 124, 125, 126, 127, 144, 151, 151, 68, 80,
				7, 7, 151, 84, 153, 132, 133, 78, 7, 150, 80, 72, 145, 1, 84, 114, 30, 150, 151, 152, 83,
				82, 151, 7, 85, 86, 87, 154, 89, 158, 91, 145, 93, 114, 148, 96, 97, 98, 99, 100, 101, 102,
				103, 114, 114, 106, 107, 132, 133, 110, 131, 132, 113, 36, 115, 116, 95, 103, 154, 105, 121,
				131, 132, 124, 125, 126, 127, 80, 148, 13, 83, 151, 153, 103, 36, 105, 13, 158, 141, 13,
				103, 78, 105, 153, 72, 154, 73, 74, 158, 150, 151, 152, 73, 74, 82, 78, 15, 85, 86, 87, 15,
				89, 148, 91, 154, 93, 98, 99, 96, 97, 98, 99, 100, 101, 102, 103, 78, 114, 106, 107, 15, 1,
				110, 103, 104, 113, 15, 115, 116, 142, 143, 114, 154, 121, 108, 109, 124, 125, 126, 127, 15,
				132, 133, 15, 8, 9, 10, 154, 150, 151, 30, 30, 114, 15, 15, 36, 30, 30, 34, 30, 30, 55, 150,
				151, 152, 29, 67, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
				49, 50, 51, 52, 53, 68, 55, 72, 75, 1, 78, 80, 83, 83, 68, 87, 78, 82, 67, 92, 85, 86, 87,
				111, 89, 78, 91, 112, 93, 80, 114, 96, 125, 81, 125, 100, 101, 102, 30, 128, 90, 106, 107,
				88, 141, 110, 128, 141, 113, 144, 94, 129, 95, 95, 95, 1, 121, 97, 97, 149, 152, 144, -1,
				144, 151, -1, -1, 144, -1, -1, -1, -1, 148, 148, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, 30,
				150, 151, -1, -1, -1, 82, -1, -1, 85, 86, 87, 148, 89, -1, 91, -1, 93, 1, -1, 96, -1, -1,
				-1, 100, 101, 102, 148, 148, 148, 106, 107, 148, 148, 110, 152, 150, 113, 150, 150, 150,
				150, 72, 150, 150, 121, 150, 30, 150, 150, 150, 150, 82, 150, 150, 85, 86, 87, 150, 89, 150,
				91, 150, 93, 1, 150, 96, 150, 150, 153, 100, 101, 102, 151, 150, 151, 106, 107, 151, 151,
				110, 151, 151, 113, 151, 151, 151, 151, 151, 72, 151, 121, 152, 30, 152, 152, 152, 152, 152,
				82, 152, 152, 85, 86, 87, 152, 89, 152, 91, 152, 93, 1, 152, 96, 152, 152, 152, 100, 101,
				102, 150, 151, 153, 106, 107, 152, 152, 110, 152, 152, 113, 152, 152, 152, 152, 72, 152,
				154, 121, 153, 153, 153, 153, 153, 153, 82, 153, 153, 85, 86, 87, 153, 89, 153, 91, 153, 93,
				153, 153, 96, 153, 153, 153, 100, 101, 102, 153, 150, 151, 106, 107, 153, 153, 110, 153,
				153, 113, 153, 153, 153, 153, 153, 72, 153, 121, 153, 155, 154, 154, 154, 154, 154, 82, 154,
				154, 85, 86, 87, 154, 89, 154, 91, 154, 93, 154, 154, 96, 154, 154, 154, 100, 101, 102, 150,
				151, 154, 106, 107, 154, 154, 110, 154, 154, 113, 8, 9, 10, 154, 154, 154, 154, 121, 154,
				154, 154, 154, 154, 154, 154, -1, 155, -1, 156, 156, 156, 29, 156, 31, 32, 33, 34, 35, 36,
				37, 38, 39, 40, 41, 156, 156, 150, 151, 157,
			]),
			(r.Parser.prototype.yybase = [
				0, 223, 299, 371, 444, 303, 208, 618, -2, -2, -73, -2, -2, 625, 718, 718, 764, 718, 552,
				671, 811, 811, 811, 228, 113, 113, 113, 254, 361, -40, 361, 333, 449, 470, 435, 435, 435,
				435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
				435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
				435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
				435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
				435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435,
				435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 291, 291, 230, 393, 495,
				779, 784, 781, 776, 775, 780, 785, 498, 678, 680, 562, 681, 682, 683, 685, 782, 804, 777,
				783, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
				253, 69, 162, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
				56, 56, 56, 349, 349, 349, 157, 210, 150, 200, 211, 143, 27, 917, 917, 917, 917, 917, -16,
				-16, -16, -16, 351, 351, 362, 217, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 163,
				313, 106, 106, 133, 133, 133, 133, 133, 133, 221, 305, 234, 347, 369, 523, 806, 167, 167,
				441, 93, 283, 202, 202, 202, 386, 547, 533, 533, 533, 533, 419, 419, 533, 533, 170, 214, 74,
				211, 211, 277, 211, 211, 211, 409, 409, 409, 452, 318, 352, 546, 318, 619, 640, 577, 675,
				578, 677, 278, 585, 145, 586, 145, 145, 145, 458, 445, 451, 774, 291, 522, 291, 291, 291,
				291, 722, 291, 291, 291, 291, 291, 291, 98, 291, 79, 430, 230, 240, 240, 556, 240, 452, 538,
				263, 635, 410, 425, 538, 538, 538, 636, 637, 336, 363, 198, 638, 382, 402, 173, 33, 549,
				549, 555, 555, 566, 551, 549, 549, 549, 549, 549, 690, 690, 555, 548, 555, 566, 695, 555,
				551, 551, 555, 555, 549, 555, 690, 551, 156, 415, 249, 273, 551, 551, 426, 528, 549, 535,
				535, 433, 555, 219, 555, 139, 539, 690, 690, 539, 229, 551, 231, 590, 591, 529, 527, 553,
				245, 553, 553, 300, 529, 553, 551, 553, 448, 50, 548, 295, 553, 11, 699, 701, 418, 703, 694,
				705, 731, 706, 530, 524, 526, 719, 720, 708, 692, 691, 561, 582, 513, 517, 534, 554, 689,
				581, 531, 531, 531, 554, 687, 531, 531, 531, 531, 531, 531, 531, 531, 787, 540, 545, 723,
				537, 541, 576, 543, 623, 520, 582, 582, 584, 732, 786, 564, 722, 762, 709, 587, 557, 741,
				725, 525, 542, 565, 726, 727, 745, 765, 628, 513, 766, 641, 563, 643, 582, 644, 531, 670,
				617, 788, 789, 688, 791, 736, 747, 749, 580, 645, 569, 803, 646, 768, 629, 631, 589, 737,
				684, 751, 647, 752, 754, 649, 592, 572, 734, 573, 733, 272, 729, 632, 650, 654, 656, 658,
				661, 710, 594, 738, 544, 740, 735, 595, 597, 560, 663, 488, 599, 570, 571, 600, 714, 558,
				550, 601, 602, 769, 664, 728, 604, 665, 756, 574, 581, 536, 532, 575, 567, 634, 755, 559,
				605, 609, 611, 613, 674, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				0, 0, 0, 0, 0, 0, 136, 136, 136, 136, -2, -2, -2, 0, 0, -2, 0, 0, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
				136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 568, 568, 568, 568,
				568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
				568, 568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 568, 568, 568, 568, 568, 568,
				568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568,
				568, 568, 568, 568, 568, -3, 568, 568, -3, 568, 568, 568, 568, 568, 568, 568, 202, 202, 202,
				202, 318, 318, 318, -67, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
				318, -67, 202, 202, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 419, 419, 419, 145,
				145, 318, 0, 0, 0, 0, 0, 549, 419, 318, 318, 318, 318, 0, 0, 318, 318, 548, 145, 0, 0, 0, 0,
				0, 0, 0, 549, 549, 549, 548, 0, 549, 419, 0, 240, 291, 440, 440, 440, 440, 0, 549, 0, 549,
				0, 0, 0, 0, 0, 0, 551, 0, 690, 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, 0, 0, 0, 548, 0, 0, 0, 0,
				548, 0, 0, 531, 0, 564, 0, 0, 531, 531, 531, 564, 564, 0, 0, 0, 564,
			]),
			(r.Parser.prototype.yydefault = [
				3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 92, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 510, 510, 510, 94,
				499, 32767, 499, 32767, 32767, 32767, 314, 314, 314, 32767, 454, 454, 454, 454, 454, 454,
				454, 32767, 32767, 32767, 32767, 32767, 394, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 92,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 506, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 377, 378, 380, 381, 313, 455, 509, 259, 505, 312, 130, 270, 261, 211,
				243, 310, 134, 342, 395, 344, 393, 397, 343, 319, 323, 324, 325, 326, 327, 328, 329, 330,
				331, 332, 333, 334, 335, 317, 318, 396, 398, 399, 374, 373, 372, 340, 316, 341, 345, 316,
				347, 346, 363, 364, 361, 362, 365, 366, 367, 368, 369, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 94, 32767, 32767, 32767, 293,
				354, 355, 250, 250, 250, 250, 250, 250, 32767, 250, 32767, 250, 32767, 32767, 32767, 32767,
				32767, 32767, 448, 371, 349, 350, 348, 32767, 426, 32767, 32767, 32767, 32767, 32767, 428,
				32767, 92, 32767, 32767, 32767, 337, 339, 420, 508, 320, 507, 32767, 32767, 94, 414, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 423, 32767, 32767, 92, 32767,
				32767, 92, 174, 230, 232, 179, 32767, 431, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				414, 359, 517, 32767, 456, 32767, 351, 352, 353, 32767, 32767, 456, 456, 456, 32767, 456,
				32767, 456, 456, 32767, 32767, 32767, 32767, 32767, 179, 32767, 32767, 32767, 32767, 94,
				429, 429, 92, 92, 92, 92, 424, 32767, 179, 179, 32767, 32767, 32767, 32767, 32767, 179, 91,
				91, 91, 91, 179, 179, 91, 194, 32767, 192, 192, 91, 32767, 93, 32767, 93, 196, 32767, 470,
				196, 91, 179, 91, 216, 216, 405, 181, 252, 93, 252, 252, 93, 405, 252, 179, 252, 91, 91,
				32767, 91, 252, 32767, 32767, 32767, 85, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 416, 32767, 436, 32767, 449, 468, 32767,
				357, 358, 360, 32767, 458, 382, 383, 384, 385, 386, 387, 388, 390, 32767, 419, 32767, 32767,
				32767, 87, 121, 269, 32767, 515, 87, 417, 32767, 515, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 87, 87, 32767, 32767, 32767, 32767, 32767, 495, 32767,
				516, 32767, 456, 418, 32767, 356, 432, 475, 32767, 32767, 457, 32767, 32767, 32767, 32767,
				87, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 436, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 456, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 32767, 32767, 32767, 32767, 456, 32767, 32767, 242, 32767, 32767,
				32767, 309, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 85, 60, 32767, 289, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
				32767, 32767, 32767, 136, 136, 3, 272, 3, 272, 136, 136, 136, 272, 272, 136, 136, 136, 136,
				136, 136, 136, 169, 224, 227, 216, 216, 281, 136, 136,
			]),
			(r.Parser.prototype.yygoto = [
				171, 144, 144, 144, 171, 152, 153, 152, 155, 187, 172, 168, 168, 168, 168, 169, 169, 169,
				169, 169, 169, 169, 164, 165, 166, 167, 184, 182, 185, 445, 446, 334, 447, 450, 451, 452,
				453, 454, 455, 456, 457, 924, 141, 145, 146, 147, 170, 148, 149, 143, 150, 151, 154, 181,
				183, 186, 206, 209, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 244,
				245, 264, 265, 266, 339, 340, 341, 496, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
				198, 199, 200, 201, 202, 156, 203, 157, 173, 174, 175, 207, 176, 158, 159, 160, 177, 161,
				208, 142, 204, 162, 178, 205, 179, 180, 163, 563, 210, 463, 210, 516, 516, 1038, 572, 1038,
				1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 468, 468, 468, 514,
				537, 468, 297, 489, 521, 489, 498, 274, 533, 534, 698, 483, 258, 468, 448, 448, 448, 725,
				448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 449, 449, 449, 699, 449,
				449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, 1114, 1114, 734, 725, 899, 725,
				315, 319, 475, 499, 500, 502, 1083, 1084, 468, 468, 760, 1114, 761, 900, 482, 506, 468, 468,
				468, 329, 330, 686, 481, 545, 495, 332, 510, 596, 523, 525, 294, 469, 538, 556, 559, 835,
				566, 574, 831, 765, 729, 717, 864, 494, 807, 868, 490, 860, 716, 716, 810, 697, 1013, 1105,
				726, 726, 726, 728, 715, 840, 1093, 800, 824, 805, 805, 803, 805, 595, 313, 460, 833, 828,
				459, 3, 4, 907, 733, 539, 1009, 487, 317, 461, 459, 497, 892, 575, 972, 474, 843, 557, 890,
				1129, 484, 485, 505, 517, 519, 520, 568, 801, 801, 801, 801, 465, 855, 795, 802, 1002, 787,
				405, 1003, 799, 327, 571, 356, 1082, 530, 1014, 848, 346, 540, 350, 11, 337, 337, 280, 281,
				283, 493, 344, 284, 345, 285, 348, 524, 351, 1015, 1069, 1113, 1113, 543, 301, 298, 299,
				721, 560, 838, 838, 1100, 295, 865, 718, 600, 323, 544, 1113, 1010, 1017, 511, 1005, 869,
				849, 849, 849, 849, 849, 849, 1017, 849, 849, 849, 720, 730, 1116, 714, 812, 849, 1088,
				1088, 909, 465, 398, 513, 414, 1017, 1017, 1017, 1017, 0, 1079, 1017, 1017, 0, 701, 0, 0, 0,
				0, 0, 1079, 0, 0, 0, 0, 0, 773, 1090, 1090, 774, 706, 0, 756, 751, 752, 766, 0, 707, 753,
				704, 754, 755, 705, 0, 759, 0, 1075, 0, 0, 0, 0, 0, 1012, 0, 0, 0, 480, 0, 0, 0, 0, 0, 0, 0,
				0, 0, 0, 0, 0, 0, 867, 0, 1077, 1077, 867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				0, 0, 462, 478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 462, 0, 478, 0, 0, 316, 0, 0, 466, 386, 0, 388,
				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 724, 0, 1121,
			]),
			(r.Parser.prototype.yygcheck = [
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 63, 56, 10, 56, 86, 86, 86, 8, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
				10, 10, 10, 46, 46, 10, 80, 85, 73, 85, 97, 134, 73, 73, 17, 10, 134, 10, 135, 135, 135, 26,
				135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 137, 137, 137, 18, 137,
				137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 148, 148, 36, 26, 111, 26, 49,
				49, 49, 49, 49, 49, 141, 141, 10, 10, 55, 148, 55, 111, 10, 10, 10, 10, 10, 69, 69, 5, 39,
				69, 2, 69, 2, 39, 39, 39, 69, 10, 39, 39, 39, 39, 39, 39, 39, 13, 14, 14, 14, 10, 40, 14,
				136, 94, 26, 26, 14, 16, 92, 146, 26, 26, 26, 26, 26, 14, 143, 14, 16, 16, 16, 16, 16, 16,
				52, 16, 16, 16, 75, 37, 37, 14, 14, 54, 14, 53, 65, 65, 75, 7, 7, 7, 118, 65, 88, 7, 7, 12,
				65, 65, 68, 68, 68, 68, 68, 75, 75, 75, 75, 12, 90, 75, 75, 67, 67, 65, 67, 76, 76, 76, 89,
				139, 24, 92, 91, 56, 56, 56, 65, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 92, 92,
				147, 147, 12, 20, 80, 80, 30, 12, 85, 85, 85, 11, 96, 28, 82, 19, 23, 147, 127, 63, 15, 124,
				99, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 15, 32, 147, 15, 79, 63, 8, 8, 114, 12, 71, 72,
				122, 63, 63, 63, 63, -1, 97, 63, 63, -1, 13, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, 63,
				97, 97, 63, 13, -1, 13, 13, 13, 13, -1, 13, 13, 13, 13, 13, 13, -1, 13, -1, 97, -1, -1, -1,
				-1, -1, 12, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 97,
				97, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, 8, -1,
				-1, -1, -1, -1, -1, -1, -1, -1, 8, -1, 8, -1, -1, 8, -1, -1, 8, 8, -1, 8, -1, -1, -1, -1,
				-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, 8,
			]),
			(r.Parser.prototype.yygbase = [
				0, 0, -358, 0, 0, 207, 0, 274, 114, 0, -148, 54, 10, 94, -144, -40, 245, 150, 174, 48, 70,
				0, 0, -3, 25, 0, -108, 0, 44, 0, 52, 0, 3, -23, 0, 0, 183, -331, 0, -359, 221, 0, 0, 0, 0,
				0, 106, 0, 0, 157, 0, 0, 227, 45, 47, 191, 90, 0, 0, 0, 0, 0, 0, 111, 0, -95, 0, -26, 43,
				-193, 0, -12, -20, -435, 0, 26, 37, 0, 0, 4, -259, 0, 20, 0, 0, 117, -104, 0, 31, 55, 46,
				53, -64, 0, 216, 0, 40, 143, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 7, 0, 0, 0,
				30, 0, 0, 0, -32, 0, -9, 0, 0, -5, 0, 0, 0, 0, 0, 0, -119, -69, 217, -52, 0, 51, 0, -102, 0,
				226, 0, 0, 223, 77, -67, 0, 0,
			]),
			(r.Parser.prototype.yygdefault = [
				-32768, 420, 603, 2, 604, 676, 684, 548, 437, 573, 438, 464, 335, 758, 913, 778, 740, 741,
				742, 320, 361, 311, 318, 531, 518, 410, 727, 381, 719, 407, 722, 380, 731, 140, 549, 416,
				735, 1, 737, 470, 769, 308, 745, 309, 552, 747, 477, 749, 750, 314, 321, 322, 917, 486, 515,
				762, 213, 479, 763, 307, 764, 772, 331, 312, 392, 417, 326, 894, 504, 527, 376, 395, 512,
				507, 488, 1024, 797, 401, 390, 811, 296, 819, 601, 827, 830, 439, 440, 399, 842, 400, 853,
				847, 1032, 394, 859, 382, 866, 1064, 385, 870, 228, 873, 255, 546, 349, 878, 879, 6, 884,
				564, 565, 7, 243, 415, 908, 547, 379, 923, 364, 991, 993, 472, 408, 1006, 389, 555, 418,
				1011, 1068, 377, 441, 396, 282, 300, 257, 442, 458, 262, 443, 397, 1071, 1078, 338, 1094,
				279, 26, 1106, 1115, 292, 492, 509,
			]),
			(r.Parser.prototype.yylhs = [
				0, 1, 3, 3, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
				5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
				5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 9, 10, 10, 11, 12, 13, 13,
				14, 14, 15, 15, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 20, 20, 21, 21, 21, 21, 23, 25, 25, 19, 27,
				27, 24, 29, 29, 26, 26, 28, 28, 30, 30, 22, 31, 31, 32, 34, 35, 35, 36, 37, 37, 39, 38, 38,
				38, 38, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
				40, 40, 40, 40, 16, 16, 59, 59, 62, 62, 61, 60, 60, 53, 64, 64, 65, 65, 66, 66, 67, 67, 17,
				18, 18, 18, 70, 70, 70, 71, 71, 74, 74, 72, 72, 76, 77, 77, 47, 47, 55, 55, 58, 58, 58, 57,
				78, 78, 79, 48, 48, 48, 48, 80, 80, 81, 81, 82, 82, 45, 45, 41, 41, 83, 43, 43, 84, 42, 42,
				44, 44, 54, 54, 54, 54, 68, 68, 87, 87, 88, 88, 88, 90, 90, 91, 91, 91, 89, 89, 69, 69, 69,
				92, 92, 93, 93, 94, 94, 94, 50, 95, 95, 96, 51, 98, 98, 99, 99, 100, 100, 73, 101, 101, 101,
				101, 101, 106, 106, 107, 107, 108, 108, 108, 108, 108, 109, 110, 110, 105, 105, 102, 102,
				104, 104, 112, 112, 111, 111, 111, 111, 111, 111, 103, 113, 113, 115, 114, 114, 52, 116,
				116, 46, 46, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
				33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 123, 117,
				117, 122, 122, 125, 126, 126, 127, 128, 128, 128, 75, 75, 63, 63, 63, 118, 118, 118, 130,
				130, 119, 119, 121, 121, 121, 124, 124, 135, 135, 135, 86, 137, 137, 137, 120, 120, 120,
				120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 49, 49, 133, 133, 133, 129,
				129, 129, 138, 138, 138, 138, 138, 138, 56, 56, 56, 97, 97, 97, 97, 141, 140, 132, 132, 132,
				132, 132, 132, 131, 131, 131, 139, 139, 139, 139, 85, 142, 142, 143, 143, 143, 143, 143,
				143, 143, 136, 145, 145, 144, 144, 146, 146, 146, 146, 146, 146, 134, 134, 134, 134, 148,
				149, 147, 147, 147, 147, 147, 147, 147, 150, 150, 150, 150,
			]),
			(r.Parser.prototype.yylen = [
				1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
				1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 0, 1,
				0, 1, 1, 1, 1, 1, 3, 5, 4, 3, 4, 2, 3, 1, 1, 7, 8, 6, 7, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1,
				2, 1, 2, 2, 3, 1, 3, 2, 3, 1, 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, 3,
				3, 1, 2, 5, 7, 9, 6, 5, 6, 3, 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, 4, 2, 1, 3, 0, 1, 0, 1, 3, 1,
				8, 7, 6, 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, 2, 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, 3, 3, 3, 4, 4, 5,
				0, 2, 4, 3, 1, 1, 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, 4, 6, 4, 1, 2,
				1, 1, 1, 0, 1, 0, 2, 2, 2, 4, 1, 3, 1, 2, 2, 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, 0, 1, 4, 4, 9, 3,
				1, 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1,
				1, 3, 2, 3, 1, 0, 1, 1, 3, 3, 3, 4, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2,
				3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
				3, 5, 4, 3, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, 2, 8, 9, 8, 9,
				7, 3, 2, 0, 4, 2, 1, 3, 2, 2, 2, 4, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, 1, 3,
				3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 3, 0, 1, 1, 3, 1, 1, 3, 1, 1, 4,
				4, 4, 1, 4, 1, 1, 3, 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, 4, 3, 1, 1, 2,
				1, 3, 4, 3, 0, 1, 1, 1, 3, 1, 3, 1, 4, 2, 2, 0, 2, 2, 1, 2, 1, 1, 1, 4, 3, 3, 3, 6, 3, 1, 1,
				2, 1,
			]),
			(t.PHP = r)
	}),
	ace.define('ace/mode/php_worker', [], function (e, t, n) {
		'use strict'
		var r = e('../lib/oop'),
			i = e('../worker/mirror').Mirror,
			s = e('./php/php').PHP,
			o = (t.PhpWorker = function (e) {
				i.call(this, e), this.setTimeout(500)
			})
		r.inherits(o, i),
			function () {
				;(this.setOptions = function (e) {
					this.inlinePhp = e && e.inline
				}),
					(this.onUpdate = function () {
						var e = this.doc.getValue(),
							t = []
						this.inlinePhp && (e = '<?' + e + '?>')
						var n = s.Lexer(e, { short_open_tag: 1 })
						try {
							new s.Parser(n)
						} catch (r) {
							t.push({
								row: r.line - 1,
								column: null,
								text: r.message.charAt(0).toUpperCase() + r.message.substring(1),
								type: 'error',
							})
						}
						this.sender.emit('annotate', t)
					})
			}.call(o.prototype)
	})