INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(704, 0x7075626c6963, 0x617070726f76616c5f6974656d5f706f7374, 0, '<xf:macro id=\"approval_queue_macros::item_message_type\"\n	arg-content=\"{$content}\"\n	arg-user=\"{$content.User}\"\n	arg-messageHtml=\"{{ bb_code($content.message, \'post\', $content) }}\"\n	arg-typePhraseHtml=\"{{ phrase(\'post_noun\') }}\"\n	arg-spamDetails=\"{$spamDetails}\"\n	arg-unapprovedItem=\"{$unapprovedItem}\"\n	arg-handler=\"{$handler}\"\n	arg-headerPhraseHtml=\"{{ phrase(\'posted_in_thread_x_in_forum_y\', {\n		\'postLink\': link(\'posts\', $content),\n		\'threadTitle\': $content.Thread.title,\n		\'forumLink\': link(\'forums\', $content.Thread.Forum),\n		\'forumTitle\': $content.Thread.Forum.title\n	}) }}\" />\n', 0x[encoded data, 9852 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057),
(705, 0x7075626c6963, 0x617070726f76616c5f6974656d5f70726f66696c655f706f7374, 0, '<xf:macro id=\"approval_queue_macros::item_message_type\"\n	arg-content=\"{$content}\"\n	arg-user=\"{$content.User}\"\n	arg-messageHtml=\"{{ bb_code($content.message, \'profile_post\', $content) }}\"\n	arg-typePhraseHtml=\"{{ phrase(\'profile_post\') }}\"\n	arg-spamDetails=\"{$spamDetails}\"\n	arg-unapprovedItem=\"{$unapprovedItem}\"\n	arg-handler=\"{$handler}\"\n	arg-headerPhraseHtml=\"{{ phrase(\'posted_on_profile_x\', {\n		\'profilePostLink\': link(\'profile-posts\', $content),\n		\'user\': $content.ProfileUser.username\n	}) }}\"/>', 0x[encoded data, 7210 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057),
(706, 0x7075626c6963, 0x617070726f76616c5f6974656d5f70726f66696c655f706f73745f636f6d6d656e74, 0, '<xf:macro id=\"approval_queue_macros::item_message_type\"\n	arg-content=\"{$content}\"\n	arg-contentDate=\"{$content.comment_date}\"\n	arg-user=\"{$content.User}\"\n	arg-messageHtml=\"{{ bb_code($content.message, \'profile_post_comment\', $content) }}\"\n	arg-typePhraseHtml=\"{{ phrase(\'profile_post_comment\') }}\"\n	arg-spamDetails=\"{$spamDetails}\"\n	arg-unapprovedItem=\"{$unapprovedItem}\"\n	arg-handler=\"{$handler}\"\n	arg-headerPhraseHtml=\"{{ phrase(\'posted_on_profile_post_by_x\', {\n		\'commentLink\': link(\'profile-posts/comments\', $content),\n		\'user\': $content.ProfilePost.username})\n	}}\"/>', 0x[encoded data, 7826 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057),
(707, 0x7075626c6963, 0x617070726f76616c5f6974656d5f746872656164, 0, '<xf:set var=\"$messageHtml\">\n	<h4 class=\"message-title\"><a href=\"{{ link(\'threads\', $content) }}\">{$content.title}</a></h4>\n	{{ bb_code($content.FirstPost.message, \'post\', $content.FirstPost) }}\n</xf:set>\n\n<xf:macro id=\"approval_queue_macros::item_message_type\"\n	arg-content=\"{$content}\"\n	arg-user=\"{$content.User}\"\n	arg-messageHtml=\"{$messageHtml}\"\n	arg-typePhraseHtml=\"{{ phrase(\'thread\') }}\"\n	arg-spamDetails=\"{$spamDetails}\"\n	arg-unapprovedItem=\"{$unapprovedItem}\"\n	arg-handler=\"{$handler}\"\n	arg-headerPhraseHtml=\"{{ phrase(\'thread_x_posted_in_forum_y\', {\n		\'threadLink\': link(\'threads\', $content),\n		\'threadTitle\': $content.title,\n		\'forumLink\': link(\'forums\', $content.Forum),\n		\'forumTitle\': $content.Forum.title\n	}) }}\"/>', 0x[encoded data, 12610 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(708, 0x7075626c6963, 0x617070726f76616c5f6974656d5f75736572, 0, '<xf:set var=\"$userIp\" value=\"{{ $user.getIp(\'register\') }}\" />\n<xf:set var=\"$headerPhraseHtml\"><xf:trim>\n	<xf:if is=\"$xf.visitor.canViewIps() AND $userIp\">\n		<a href=\"{{ link(\'misc/ip-info\', null, {\'ip\': $userIp|ip}) }}\" target=\"_blank\">{$userIp|ip}</a>\n	</xf:if>\n	<xf:if is=\"$xf.visitor.canBypassUserPrivacy() AND $user.email\">\n		{$user.email|email_display}\n	</xf:if>\n</xf:trim></xf:set>\n\n<xf:set var=\"$messageHtml\"><xf:trim>\n\n	<xf:macro id=\"custom_fields_macros::custom_fields_view\"\n		arg-type=\"users\" arg-group=\"{{ null }}\"\n		arg-set=\"{$user.Profile.custom_fields}\"\n		arg-additionalFilters=\"{{ [\'registration\'] }}\" />\n\n	<xf:if is=\"$preRegAction AND $preRegHandler\">\n		{$preRegHandler.renderApprovalQueueInfo($preRegAction)|raw}\n	</xf:if>\n\n	<xf:if is=\"$changesGrouped\">\n		<br />\n		<xf:datalist data-xf-init=\"responsive-data-list\" class=\"dataList--separated\">\n			<thead>\n			<xf:datarow rowtype=\"subSection\">\n				<xf:cell colspan=\"3\">{{ phrase(\'change_log\') }}</xf:cell>\n			</xf:datarow>\n			<xf:datarow rowtype=\"header\">\n				<xf:cell>{{ phrase(\'field_name\') }}</xf:cell>\n				<xf:cell>{{ phrase(\'old_value\') }}</xf:cell>\n				<xf:cell>{{ phrase(\'new_value\') }}</xf:cell>\n			</xf:datarow>\n			</thead>\n			<xf:foreach loop=\"$changesGrouped\" value=\"$group\">\n				<tbody class=\"dataList-rowGroup\">\n				<xf:foreach loop=\"$group.changes\" value=\"$change\">\n					<xf:datarow>\n						<xf:cell>{$change.label}</xf:cell>\n						<xf:cell>{$change.old}</xf:cell>\n						<xf:cell>{$change.new}</xf:cell>\n					</xf:datarow>\n				</xf:foreach>\n				</tbody>\n			</xf:foreach>\n		</xf:datalist>\n	</xf:if>\n\n</xf:trim></xf:set>\n\n<xf:set var=\"$actionsHtml\">\n\n	<xf:radio name=\"queue[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\">\n\n		<xf:option value=\"\" checked=\"checked\" label=\"{{ phrase(\'do_nothing\') }}\" data-xf-click=\"approval-control\" />\n		<xf:option value=\"approve\" label=\"{{ phrase(\'approve\') }}\" data-xf-click=\"approval-control\" />\n		<xf:if is=\"$xf.visitor.canCleanSpam() AND $unapprovedItem.Content.isPossibleSpammer()\">\n			<xf:option value=\"spam_clean\" label=\"{{ phrase(\'spam_clean\') }}\" data-xf-click=\"approval-control\" />\n		</xf:if>\n		<xf:option value=\"reject\" label=\"{{ phrase(\'reject_with_reason:\') }}\"\n			title=\"{{ phrase(\'rejected_users_will_not_be_deleted_user_state_will_be_set_to_rejected\') }}\"\n			data-xf-init=\"tooltip\"\n			data-xf-click=\"approval-control\">\n			<xf:textbox name=\"reason[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\"\n				maxlength=\"{{ max_length(\'XF:UserReject\', \'reject_reason\') }}\"\n				placeholder=\"{{ phrase(\'optional\') }}\" />\n			<xf:html>\n				<div class=\"formRow-explain\">{{ phrase(\'this_will_be_shown_to_user_if_provided\') }}</div>\n			</xf:html>\n		</xf:option>\n	</xf:radio>\n\n	<xf:checkbox>\n		<xf:option name=\"notify[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\" value=\"1\" checked=\"{{ !$spamDetails }}\">\n			{{ phrase(\'notify_user_if_action_was_taken\') }}\n		</xf:option>\n	</xf:checkbox>\n\n</xf:set>\n\n<xf:macro id=\"approval_queue_macros::item_message_type\"\n	arg-content=\"{$content}\"\n	arg-contentDate=\"{$user.register_date}\"\n	arg-user=\"{$user}\"\n	arg-messageHtml=\"{$messageHtml}\"\n	arg-typePhraseHtml=\"{{ phrase(\'user\') }}\"\n	arg-actionsHtml=\"{$actionsHtml}\"\n	arg-spamDetails=\"{$spamDetails}\"\n	arg-headerPhraseHtml=\"{$headerPhraseHtml}\"/>', 0x[encoded data, 55578 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(709, 0x7075626c6963, 0x617070726f76616c5f6974656d5f757365726e616d655f6368616e6765, 0, '<xf:set var=\"$messageHtml\"><xf:trim>\n\n	<div class=\"pairWrapper pairWrapper--spaced\">\n		<dl class=\"pairs pairs--columns pairs--fixedSmall\">\n			<dt>{{ phrase(\'current_username\') }}</dt>\n			<dd>{$content.old_username}</dd>\n		</dl>\n\n		<dl class=\"pairs pairs--columns pairs--fixedSmall\">\n			<dt>{{ phrase(\'new_username\') }}</dt>\n			<dd>{$content.new_username}</dd>\n		</dl>\n\n		<dl class=\"pairs pairs--columns pairs--fixedSmall\">\n			<dt>{{ phrase(\'change_reason\') }}</dt>\n			<dd>{$content.change_reason|nl2br}</dd>\n		</dl>\n	</div>\n\n	<xf:if is=\"$previousChanges is not empty\">\n		<br />\n\n		<xf:datalist data-xf-init=\"responsive-data-list\" class=\"dataList--separated\">\n			<thead>\n			<xf:datarow rowtype=\"subSection\">\n				<xf:cell colspan=\"4\">{{ phrase(\'username_change_log\') }}</xf:cell>\n			</xf:datarow>\n			<xf:datarow rowtype=\"header\">\n				<xf:cell>{{ phrase(\'old_username\') }}</xf:cell>\n				<xf:cell>{{ phrase(\'new_username\') }}</xf:cell>\n				<xf:cell>{{ phrase(\'change_state\') }}</xf:cell>\n				<xf:cell>{{ phrase(\'date\') }}</xf:cell>\n			</xf:datarow>\n			</thead>\n			<tbody class=\"dataList-rowGroup\">\n			<xf:foreach loop=\"$previousChanges\" value=\"$change\">\n				<xf:datarow rowclass=\"dataList-row--noHover\">\n					<xf:cell class=\"{{ $change.visible ? \'\' : \'dataList-cell--alt\' }}\">\n						{$change.old_username}\n					</xf:cell>\n					<xf:cell class=\"{{ $change.visible ? \'\' : \'dataList-cell--alt\' }}\">\n						{$change.new_username}\n						<xf:if is=\"$change.change_reason\">\n							<a role=\"button\"\n									tabindex=\"0\"\n									data-xf-init=\"tooltip\"\n									data-trigger=\"hover focus click\"\n									title=\"{{ phrase(\'change_reason:\') }} {$change.change_reason}\"><xf:trim>\n									<xf:fa icon=\"fa-info-circle\" />\n								</xf:trim></a>\n						</xf:if>\n					</xf:cell>\n					<xf:cell class=\"{{ $change.visible ? \'\' : \'dataList-cell--alt\' }}\">\n						<xf:if is=\"$change.change_state == \'approved\'\">\n							{{ phrase(\'approved\') }}\n						<xf:elseif is=\"$change.change_state == \'moderated\'\" />\n							{{ phrase(\'awaiting_approval\') }}\n						<xf:elseif is=\"$change.change_state == \'rejected\'\" />\n							{{ phrase(\'rejected\') }}\n							<xf:if is=\"$change.reject_reason\">\n								<a role=\"button\"\n									tabindex=\"0\"\n									data-xf-init=\"tooltip\"\n									data-trigger=\"hover focus click\"\n									title=\"{{ phrase(\'reason:\') }} {$change.reject_reason}\"><xf:trim>\n									<xf:fa icon=\"fa-info-circle\" />\n								</xf:trim></a>\n							</xf:if>\n						</xf:if>\n					</xf:cell>\n					<xf:cell class=\"{{ $change.visible ? \'\' : \'dataList-cell--alt\' }}\">\n						<xf:date time=\"{$change.change_date}\" />\n					</xf:cell>\n				</xf:datarow>\n			</xf:foreach>\n			</tbody>\n		</xf:datalist>\n	</xf:if>\n\n</xf:trim></xf:set>\n\n<xf:set var=\"$actionsHtml\">\n\n	<xf:radio name=\"queue[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\">\n\n		<xf:option value=\"\" checked=\"checked\" label=\"{{ phrase(\'do_nothing\') }}\" data-xf-click=\"approval-control\" />\n		<xf:option value=\"approve\" label=\"{{ phrase(\'approve\') }}\" data-xf-click=\"approval-control\" />\n		<xf:option value=\"reject\" label=\"{{ phrase(\'reject_with_reason:\') }}\" data-xf-click=\"approval-control\">\n			<xf:textbox name=\"reason[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\"\n				maxlength=\"100\"\n				placeholder=\"{{ phrase(\'optional\') }}\" />\n			<xf:html>\n				<div class=\"formRow-explain\">{{ phrase(\'this_will_be_shown_to_user_if_provided\') }}</div>\n			</xf:html>\n		</xf:option>\n	</xf:radio>\n\n	<xf:checkbox>\n		<xf:option name=\"notify[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\" value=\"1\" checked=\"{{ true }}\">\n			{{ phrase(\'notify_user_if_action_was_taken\') }}\n		</xf:option>\n	</xf:checkbox>\n\n</xf:set>\n\n<xf:macro id=\"approval_queue_macros::item_message_type\"\n	arg-content=\"{$content}\"\n	arg-contentDate=\"{$content.change_date}\"\n	arg-user=\"{$content.User}\"\n	arg-messageHtml=\"{$messageHtml}\"\n	arg-typePhraseHtml=\"{{ phrase(\'username_change\') }}\"\n	arg-actionsHtml=\"{$actionsHtml}\" />', 0x[encoded data, 64012 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(710, 0x7075626c6963, 0x617070726f76616c5f7175657565, 0, '<xf:title>{{ phrase(\'approval_queue\') }}</xf:title>\n\n<xf:css src=\"approval_queue.less\" />\n<xf:js src=\"xf/approval_queue.js\" />\n\n<xf:set var=\"$sortOrders\" value=\"{{ {\n	\'content_date\': phrase(\'content_date\')\n} }}\" />\n\n<div class=\"block\">\n	<div class=\"block-container block-container--none\">\n		<div class=\"block-filterBar block-filterBar--standalone\">\n			<div class=\"filterBar\">\n				<xf:if contentcheck=\"true\">\n					<ul class=\"filterBar-filters\">\n						<xf:contentcheck>\n							<xf:if is=\"$filters.content_type\">\n								<li><a href=\"{{ link(\'approval-queue\', null, $filters|replace({\'content_type\': null})) }}\"\n									class=\"filterBar-filterToggle\" data-xf-init=\"tooltip\" title=\"{{ phrase(\'remove_this_filter\')|for_attr }}\">\n									<span class=\"filterBar-filterToggle-label\">{{ phrase(\'content_type:\') }}</span>\n									{{ $xf.app.getContentTypePhrase($filters.content_type) ?: $filters.content_type }}\n								</a></li>\n							</xf:if>\n							<xf:if is=\"$filters.order AND {$sortOrders.{$filters.order}}\">\n								<li><a href=\"{{ link(\'approval-queue\', null, $filters|replace({\'order\': null, \'direction\': null})) }}\"\n									class=\"filterBar-filterToggle\" data-xf-init=\"tooltip\" title=\"{{ phrase(\'return_to_default_order\')|for_attr }}\">\n									<span class=\"filterBar-filterToggle-label\">{{ phrase(\'sort_by:\') }}</span>\n									{$sortOrders.{$filters.order}}\n									<xf:fa icon=\"{{ $filters.direction == \'asc\' ? \'fa-angle-up\' : \'fa-angle-down\' }}\" />\n									<span class=\"u-srOnly\"><xf:if is=\"$filters.direction == \'asc\'\">{{ phrase(\'ascending\') }}<xf:else />{{ phrase(\'descending\') }}</xf:if></span>\n								</a></li>\n							</xf:if>\n						</xf:contentcheck>\n					</ul>\n				</xf:if>\n\n				<a class=\"filterBar-menuTrigger\" data-xf-click=\"menu\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"true\">{{ phrase(\'filters\') }}</a>\n				<div class=\"menu menu--wide\" data-menu=\"menu\" aria-hidden=\"true\"\n					data-href=\"{{ link(\'approval-queue/filters\', null, $filters) }}\"\n					data-load-target=\".js-filterMenuBody\">\n					<div class=\"menu-content\">\n						<h4 class=\"menu-header\">{{ phrase(\'show_only:\') }}</h4>\n						<div class=\"js-filterMenuBody\">\n							<div class=\"menu-row\">{{ phrase(\'loading...\') }}</div>\n						</div>\n					</div>\n				</div>\n			</div>\n		</div>\n	</div>\n</div>\n\n<xf:if is=\"$unapprovedItems is not empty\">\n	<xf:form action=\"{{ link(\'approval-queue/process\') }}\" ajax=\"true\" class=\"js-stickyParent approvalQueue\">\n		<div class=\"blocks\">\n			<xf:foreach loop=\"$unapprovedItems\" value=\"$unapprovedItem\" i=\"$i\" count=\"$count\">\n				<div class=\"block\">\n					<div class=\"block-container approvalQueue-item js-approvalQueue-item\">\n						<div class=\"block-body\">\n							{$unapprovedItem.getHandler().render($unapprovedItem)|raw}\n						</div>\n					</div>\n				</div>\n			</xf:foreach>\n\n			<div class=\"block\">\n				<div class=\"block-container block-container--none\">\n					<xf:submitrow icon=\"save\" sticky=\".js-stickyParent\" rowtype=\"standalone\" />\n				</div>\n			</div>\n		</div>\n	</xf:form>\n<xf:elseif is=\"$filters\" />\n	<div class=\"blockMessage\">{{ phrase(\'no_items_matched_your_filter\') }}</div>\n<xf:else />\n	<div class=\"blockMessage\">{{ phrase(\'there_is_no_content_currently_awaiting_approval\') }}</div>\n</xf:if>', 0x[encoded data, 41036 characters], 0x5846, 2010033, '2.1.0 Beta 3', 1748686057),
(711, 0x7075626c6963, 0x617070726f76616c5f71756575652e6c657373, 0, '.approvalQueue\n{\n	.block-container.approvalQueue-item--approve\n	{\n		.message,\n		.message-cell--user,\n		.message-cell--extra\n		{\n			background: @xf-inlineModHighlightColor;\n		}\n\n		.message .message-userArrow:after\n		{\n			border-right-color: @xf-inlineModHighlightColor;\n		}\n	}\n\n	.block-container.approvalQueue-item--delete\n	{\n		.message-cell--user,\n		.message-cell--main\n		{\n			opacity: 0.25;\n		}\n	}\n\n	.block-container.approvalQueue-item--spam\n	{\n		border-color: red;\n\n		.message-cell--user,\n		.message-cell--main\n		{\n			opacity: 0.25;\n		}\n	}\n}', 0x4f3a32343a2258465c54656d706c6174655c436f6d70696c65725c417374223a313a7b733a383a226368696c6472656e223b613a313a7b693a303b4f3a33313a2258465c54656d706c6174655c436f6d70696c65725c53796e7461785c537472223a323a7b733a343a226c696e65223b693a313b733a373a22636f6e74656e74223b733a3534333a222e617070726f76616c51756575650a7b0a092e626c6f636b2d636f6e7461696e65722e617070726f76616c51756575652d6974656d2d2d617070726f76650a097b0a09092e6d6573736167652c0a09092e6d6573736167652d63656c6c2d2d757365722c0a09092e6d6573736167652d63656c6c2d2d65787472610a09097b0a0909096261636b67726f756e643a204078662d696e6c696e654d6f64486967686c69676874436f6c6f723b0a09097d0a0a09092e6d657373616765202e6d6573736167652d757365724172726f773a61667465720a09097b0a090909626f726465722d72696768742d636f6c6f723a204078662d696e6c696e654d6f64486967686c69676874436f6c6f723b0a09097d0a097d0a0a092e626c6f636b2d636f6e7461696e65722e617070726f76616c51756575652d6974656d2d2d64656c6574650a097b0a09092e6d6573736167652d63656c6c2d2d757365722c0a09092e6d6573736167652d63656c6c2d2d6d61696e0a09097b0a0909096f7061636974793a20302e32353b0a09097d0a097d0a0a092e626c6f636b2d636f6e7461696e65722e617070726f76616c51756575652d6974656d2d2d7370616d0a097b0a0909626f726465722d636f6c6f723a207265643b0a0a09092e6d6573736167652d63656c6c2d2d757365722c0a09092e6d6573736167652d63656c6c2d2d6d61696e0a09097b0a0909096f7061636974793a20302e32353b0a09097d0a097d0a7d223b7d7d7d, 0x5846, 2010010, '2.1.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(712, 0x7075626c6963, 0x617070726f76616c5f71756575655f66696c74657273, 0, '<xf:form action=\"{{ link(\'approval-queue/filters\') }}\">\n	<!--[XF:above_content_type]-->\n	<div class=\"menu-row menu-row--separated\">\n		<label for=\"ctrl_content_type\">{{ phrase(\'content_type:\') }}</label>\n		<div class=\"u-inputSpacer\">\n			<xf:select name=\"content_type\" value=\"{$filters.content_type}\" id=\"ctrl_content_type\">\n				<xf:option value=\"\">{{ phrase(\'(any)\') }}</xf:option>\n				<xf:foreach loop=\"$contentTypes\" value=\"$contentType\">\n					<xf:option value=\"{$contentType}\">{$xf.app.getContentTypePhrase($contentType)}</xf:option>\n				</xf:foreach>\n			</xf:select>\n		</div>\n	</div>\n	\n	<!--[XF:above_sort_direction]-->\n	<div class=\"menu-row menu-row--separated\">\n		{{ phrase(\'sort_direction:\') }}\n		<div class=\"inputGroup u-inputSpacer\">\n			<xf:select name=\"direction\" value=\"{{ $filters.direction ?: \'asc\' }}\" aria-labelledby=\"ctrl_sort_direction\">\n				<xf:option value=\"asc\">{{ phrase(\'ascending\') }}</xf:option>\n				<xf:option value=\"desc\">{{ phrase(\'descending\') }}</xf:option>\n			</xf:select>\n		</div>\n	</div>\n	<xf:hiddenval name=\"order\">{{ $filters.order ?: \'content_date\' }}</xf:hiddenval>\n\n	<div class=\"menu-footer\">\n		<span class=\"menu-footer-controls\">\n			<xf:button type=\"submit\" class=\"button--primary\">{{ phrase(\'filter\') }}</xf:button>\n		</span>\n	</div>\n	<xf:hiddenval name=\"apply\">1</xf:hiddenval>\n</xf:form>', 0x[encoded data, 19124 characters], 0x5846, 2010010, '2.1.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(713, 0x7075626c6963, 0x617070726f76616c5f71756575655f6d6163726f73, 0, '<xf:macro id=\"spam_log\" arg-spamDetails=\"!\">\n	<xf:if is=\"$spamDetails\">\n		<xf:formrow label=\"{{ phrase(\'spam_log\') }}\">\n			{$spamDetails}\n		</xf:formrow>\n	</xf:if>\n</xf:macro>\n\n<xf:macro id=\"action_row\" arg-unapprovedItem=\"!\" arg-handler=\"!\">\n	<xf:formrow label=\"{{ phrase(\'action\') }}\" class=\"js-approvalQueue-itemControls\">\n		<xf:macro id=\"action_radio\" arg-unapprovedItem=\"{$unapprovedItem}\" arg-handler=\"{$handler}\" />\n	</xf:formrow>\n</xf:macro>\n\n<xf:macro id=\"action_radio\" arg-unapprovedItem=\"!\" arg-handler=\"!\">\n	<div class=\"js-approvalQueue-itemControls\">\n		<xf:radio name=\"queue[{$unapprovedItem.content_type}][{$unapprovedItem.content_id}]\">\n\n			<xf:foreach loop=\"$unapprovedItem.getDefaultActions()\" key=\"$action\" value=\"$label\">\n				<xf:option value=\"{$action}\" checked=\"{{ !$action ? \'checked\' : \'\' }}\" data-xf-click=\"approval-control\">{$label}</xf:option>\n			</xf:foreach>\n\n		</xf:radio>\n	</div>\n</xf:macro>\n\n<xf:macro id=\"item_message_type\"\n	arg-content=\"!\"\n	arg-contentDate=\"\"\n	arg-user=\"!\"\n	arg-typePhraseHtml=\"!\"\n	arg-headerPhraseHtml=\"\"\n	arg-spamDetails=\"\"\n	arg-messageHtml=\"!\"\n	arg-unapprovedItem=\"\"\n	arg-handler=\"\"\n	arg-actionsHtml=\"\">\n\n	<div class=\"message\">\n		<xf:css src=\"message.less\" />\n		<div class=\"message-inner\">\n			<div class=\"message-cell message-cell--user\">\n\n				<section class=\"message-user\"\n					itemscope itemtype=\"https://schema.org/Person\"\n					{{ $user ? \'itemid=\"\' . link(\'canonical:members\', $user) . \'\"\' : \'\' }}>\n\n					<xf:if is=\"$user\">\n						<meta itemprop=\"url\" content=\"{{ link(\'canonical:members\', $user) }}\" />\n					</xf:if>\n\n					<div class=\"message-avatar\">\n						<div class=\"message-avatar-wrapper\">\n							<xf:avatar user=\"$user\" size=\"m\" itemprop=\"image\" />\n						</div>\n					</div>\n					<div class=\"message-userDetails\">\n						<h4 class=\"message-name\"><xf:username user=\"$user\" rich=\"true\" itemprop=\"name\" defaultname=\"{{ $content.isValidKey(\'username\') ? $content.username : \'\' }}\" /></h4>\n					</div>\n\n					<span class=\"message-userArrow\"></span>\n				</section>\n\n			</div>\n			<div class=\"message-cell message-cell--main\">\n				<div class=\"message-expandWrapper js-expandWatch\">\n					<div class=\"message-expandContent js-expandContent\">\n						<div class=\"message-main\">\n\n					<header class=\"message-attribution\">\n						<span class=\"message-attribution-main\"><xf:date time=\"{{ $contentDate ?: $content.post_date }}\" /></span>\n						<span class=\"message-attribution-opposite\">{$typePhraseHtml|raw}</span>\n					</header>\n\n					<div class=\"message-content\">\n\n						<xf:if contentcheck=\"true\">\n							<xf:contentcheck>\n								<xf:if is=\"$headerPhraseHtml is not empty\">\n									<div class=\"messageNotice messageNotice--highlighted messageNotice--moderated\">\n										{$headerPhraseHtml|raw}\n									</div>\n								</xf:if>\n\n								<xf:if is=\"$spamDetails is not empty\">\n									<div class=\"messageNotice messageNotice--warning\">\n										{$spamDetails}\n									</div>\n								</xf:if>\n\n								<xf:if is=\"$messageHtml is not empty\">\n									<div class=\"message-userContent\">\n										<article class=\"message-body\">{$messageHtml|raw}</article>\n									</div>\n								</xf:if>\n							</xf:contentcheck>\n						<xf:else />\n							<div class=\"message-userContent\">\n								<article class=\"message-body\">\n									<i>{{ phrase(\'no_additional_information_available\') }}</i>\n								</article>\n							</div>\n						</xf:if>\n					</div>\n\n				</div>\n					</div>\n					<div class=\"message-expandLink js-expandLink\"><a role=\"button\" tabindex=\"0\">{{ phrase(\'click_to_expand\') }}</a></div>\n				</div>\n			</div>\n			<div class=\"message-cell message-cell--extra\">\n				<xf:if is=\"$unapprovedItem AND $handler\">\n					<xf:macro id=\"approval_queue_macros::action_radio\"\n						arg-unapprovedItem=\"{$unapprovedItem}\"\n						arg-handler=\"{$handler}\" />\n				<xf:else />\n					{$actionsHtml|raw}\n				</xf:if>\n			</div>\n		</div>\n	</div>\n</xf:macro>', 0x[encoded data, 46648 characters], 0x5846, 2030470, '2.3.4', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(714, 0x7075626c6963, 0x6174746163686d656e745f6d6163726f73, 0, '<xf:macro id=\"attachment_list_item\" arg-attachment=\"!\" arg-canView=\"!\">\n	<li class=\"file file--linked\">\n		<a class=\"u-anchorTarget\" id=\"attachment-{$attachment.attachment_id}\"></a>\n		<xf:if is=\"$attachment.has_thumbnail\">\n			<xf:macro id=\"lightbox_macros::setup\" arg-canViewAttachments=\"{$canView}\" />\n\n			<a class=\"file-preview {{ $canView ? \'js-lbImage\' : \'\' }}\" href=\"{$attachment.direct_url}\" target=\"_blank\">\n				<img src=\"{$attachment.thumbnail_url}\" alt=\"{$attachment.filename}\"\n					width=\"{$attachment.thumbnail_width}\" height=\"{$attachment.thumbnail_height}\" loading=\"lazy\" />\n			</a>\n		<xf:elseif is=\"$attachment.is_video AND $canView\" />\n			<a class=\"file-preview\" href=\"{$attachment.direct_url}\" target=\"_blank\">\n				<video title=\"{$attachment.filename}\" data-xf-init=\"video-init\">\n					<source src=\"{$attachment.direct_url}\" />\n				</video>\n			</a>\n		<xf:else />\n			<a class=\"file-preview\" href=\"{$attachment.direct_url}\" target=\"_blank\">\n				<span class=\"file-typeIcon\">\n					<xf:fa icon=\"{$attachment.icon}\" title=\"{$attachment.filename}\" />\n				</span>\n			</a>\n		</xf:if>\n\n		<div class=\"file-content\">\n			<div class=\"file-info\">\n				<span class=\"file-name\" title=\"{$attachment.filename}\">{$attachment.filename}</span>\n				<div class=\"file-meta\">\n					{$attachment.file_size|file_size}\n					<xf:if is=\"!$attachment.is_video AND !$attachment.is_audio\">\n					&middot; {{ phrase(\'views:\') }} {$attachment.view_count|number}\n					</xf:if>\n				</div>\n			</div>\n		</div>\n	</li>\n</xf:macro>', 0x[encoded data, 20440 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057),
(715, 0x7075626c6963, 0x6174746163686d656e745f75706c6f6164, 0, '<xf:title>{{ phrase(\'attachment_upload\') }}</xf:title>\n\n<xf:form action=\"{{ link(\'attachments/upload\', null, {\'type\': $type, \'hash\': $hash, \'context\': $context}) }}\" class=\"block\" upload=\"true\" ajax=\"true\">\n	<div class=\"block-container\">\n		<div class=\"block-body\">\n			<xf:if is=\"$existing is not empty OR $new is not empty\">\n				<xf:formrow label=\"{{ phrase(\'existing_attachments\') }}\">\n					<xf:css src=\"attachments.less\" />\n					<ul class=\"attachUploadList\">\n						<xf:foreach loop=\"$existing\" value=\"$attachment\">\n							<xf:macro id=\"helper_attach_upload::uploaded_file\"\n								arg-attachment=\"{$attachment}\"\n								arg-noJsFallback=\"{{ true }}\" />\n						</xf:foreach>\n						<xf:foreach loop=\"$new\" value=\"$attachment\">\n							<xf:macro id=\"helper_attach_upload::uploaded_file\"\n								arg-attachment=\"{$attachment}\"\n								arg-noJsFallback=\"{{ true }}\" />\n						</xf:foreach>\n					</ul>\n				</xf:formrow>\n			</xf:if>\n			<xf:if is=\"$canUpload\">\n				<xf:uploadrow name=\"upload\" accept=\".{$constraints.extensions|join(\',.\')}\"\n					label=\"{{ phrase(\'attach_file\') }}\"\n					explain=\"{{ phrase(\'you_may_close_this_window_tab_once_you_have_uploaded_your_files_to_return\') }}\" />\n			<xf:elseif is=\"!$canUpload AND $uploadError\" />\n				<xf:formrow label=\"{{ phrase(\'attach_file\') }}\">{$uploadError}</xf:formrow>\n			</xf:if>\n		</div>\n		<xf:if is=\"$canUpload\">\n			<xf:submitrow submit=\"{{ phrase(\'upload\') }}\" icon=\"upload\" />\n		</xf:if>\n	</div>\n</xf:form>', 0x[encoded data, 22068 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(716, 0x7075626c6963, 0x6174746163686d656e74732e6c657373, 0, '@_fileMinSize: 165px;\n@_fileBorderRadius: @xf-borderRadiusSmall;\n\n.attachmentUploads\n{\n	display: none;\n	margin-bottom: @xf-paddingLarge;\n\n	&.is-active\n	{\n		display: block;\n	}\n\n	&.attachmentUploads--spaced\n	{\n		margin-top: @xf-paddingLarge;\n	}\n\n	.hScroller-action\n	{\n		color: @xf-linkColor;\n\n		&:hover\n		{\n			color: @xf-linkHoverColor;\n		}\n\n		&.hScroller-action--start\n		{\n			&:before\n			{\n				content: \'\';\n				position: absolute;\n				left: 0;\n				height: 50px;\n				width: 35px;\n				background: @xf-contentBg;\n				.m-borderRightRadius(@xf-borderRadiusMedium);\n				.m-dropShadow(1px, 0, 4px, 1px, .3);\n			}\n\n			&:after\n			{\n				position: absolute;\n				left: 10px;\n			}\n		}\n\n		&.hScroller-action--end\n		{\n			&:before\n			{\n				content: \'\';\n				position: absolute;\n				right: 0;\n				height: 50px;\n				width: 35px;\n				background: @xf-contentBg;\n				.m-borderLeftRadius(@xf-borderRadiusMedium);\n				.m-dropShadow(-1px, 0, 4px, 1px, .3);\n			}\n\n			&:after\n			{\n				position: absolute;\n				right: 10px;\n			}\n		}\n	}\n}\n\n.attachmentUploads-banner\n{\n	.xf-contentAltBase();\n	border: @xf-borderSize solid @xf-borderColor;\n	border-radius: @xf-borderRadiusSmall;\n	margin-top: @xf-paddingLarge;\n	padding: @xf-paddingSmall @xf-paddingMedium;\n}\n\n.attachmentUploads-selectActions\n{\n	.m-listPlain();\n	display: none;\n	font-size: @xf-fontSizeSmall;\n\n	.attachmentUploads.is-selecting &\n	{\n		display: flex;\n	}\n\n	> li\n	{\n		margin-right: .35em;\n\n		.buttonGroup\n		{\n			vertical-align: middle;\n		}\n\n		&:last-of-type\n		{\n			flex: 1 1 auto;\n			text-align: right;\n		}\n	}\n\n	.selectAll .iconic\n	{\n		cursor: pointer;\n\n		input + i\n		{\n			color: @xf-linkColor;\n		}\n	}\n}\n\n.is-selecting button.js-attachmentSelect\n{\n	float: right;\n}\n\n.file\n{\n	position: relative;\n	width: @_fileMinSize;\n	height: @_fileMinSize;\n	margin-right: @xf-paddingMedium;\n	background: @xf-contentAltBg;\n	border-radius: @_fileBorderRadius;\n\n	&:last-child\n	{\n		margin-right: 0;\n	}\n}\n\n.attachUploadList\n{\n	.m-listPlain();\n	display: block;\n	white-space: nowrap;\n	font-size: 0;\n\n	.file\n	{\n		display: inline-block;\n		font-size: @xf-fontSizeNormal;\n	}\n}\n\n.attachmentList\n{\n	.m-listPlain();\n\n	display: flex;\n	flex-wrap: wrap;\n\n	.file\n	{\n		margin-bottom: @xf-paddingMedium;\n	}\n}\n\n@supports (display: grid)\n{\n	.attachmentList\n	{\n		display: grid;\n		grid-template-columns: repeat(auto-fill, minmax(@_fileMinSize, 1fr));\n		grid-gap: @xf-paddingMedium;\n		gap: @xf-paddingMedium;\n\n		.file\n		{\n			width: 100%;\n			height: auto;\n			margin-right: 0;\n			margin-bottom: 0;\n\n			&:after\n			{\n				content: \'\';\n				display: block;\n				padding-bottom: 100%;\n				pointer-events: none;\n			}\n		}\n	}\n}\n\n.file-preview\n{\n	display: flex;\n	align-items: center;\n	justify-content: center;\n	border-radius: @_fileBorderRadius;\n	overflow: hidden;\n	position: absolute;\n	top: 0;\n	left: 0;\n	width: 100%;\n	height: 100%;\n\n	img, video\n	{\n		position: absolute;\n		top: 0;\n		left: 0;\n		object-fit: cover;\n		width: 100%;\n		height: 100%;\n	}\n\n	.file--linked &:after\n	{\n		content: \'\';\n		position: absolute;\n		top: 0;\n		left: 0;\n		right: 0;\n		bottom: 0;\n		z-index: @zIndex-1;\n	}\n}\n\n.file-typeIcon\n{\n	font-size: 80px;\n	vertical-align: middle;\n	color: @xf-textColorFeature;\n}\n\n.file-error\n{\n	color: @xf-textColorAttention;\n	font-size: @xf-fontSizeSmaller;\n	white-space: normal;\n	padding: @xf-paddingMedium;\n}\n\n.file-progress\n{\n	position: relative;\n	width: 100%;\n	width: calc(~\'100% - 8px\');\n	font-size: @xf-fontSizeSmallest;\n	line-height: 1.3;\n\n	i\n	{\n		position: absolute;\n		top: 0;\n		bottom: 0;\n		left: 0;\n		background: @xf-progressBarColor;\n		color: contrast(@xf-progressBarColor);\n		border-radius: @xf-borderRadiusSmall;\n		padding-right: .2em;\n		text-align: right;\n		font-style: normal;\n		white-space: nowrap;\n		min-width: 2em;\n\n		.m-transition(width);\n	}\n}\n\n.file-content\n{\n	position: absolute;\n	width: 100%;\n	height: 100%;\n}\n\n.file-info\n{\n	position: absolute;\n	left: 0;\n	bottom: 0;\n	width: 100%;\n	padding: 0 @xf-paddingLarge;\n	height: 2.5em;\n	line-height: 2.5;\n	overflow: hidden;\n	.m-transition(height);\n	.m-borderBottomRadius(@_fileBorderRadius);\n\n	font-size: @xf-fontSizeSmaller;\n	color: rgb(255, 255, 255);\n	background: rgba(0, 0, 0, 0.5);\n	text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.6);\n\n	@supports (backdrop-filter: blur(3px)) or (-webkit-backdrop-filter: blur(3px))\n	{\n		.m-backdropFilter(blur(3px));\n	}\n\n	a&\n	{\n		color: rgb(255, 255, 255);\n\n		&:hover\n		{\n			color: rgb(255, 255, 255);\n			text-decoration: none;\n\n			.file-name\n			{\n				text-decoration: underline;\n			}\n		}\n	}\n\n	&:hover,\n	.file--linked:hover &,\n	.has-touchevents &\n	{\n		height: 5em;\n	}\n}\n\n.file-name,\n.file-meta\n{\n	display: block;\n	white-space: nowrap;\n	text-overflow: ellipsis;\n	overflow: hidden;\n}\n\n.file-delete,\n.file-insert\n{\n	position: absolute;\n	color: rgb(255, 255, 255);\n	text-shadow: 1px 1px 1px rgba(0, 0, 0, .6);\n}\n\n.file-checkbox\n{\n	display: none;\n\n	.attachmentUploads.is-selecting &\n	{\n		display: block;\n	}\n\n	.iconic\n	{\n		position: static;\n\n		&:after\n		{\n			content: \'\';\n			position: absolute;\n			top: 0;\n			left: 0;\n			right: 0;\n			bottom: 0;\n			z-index: @zIndex-1;\n		}\n\n		> i\n		{\n			position: absolute;\n			top: 4px;\n			left: 4px;\n			box-sizing: content-box;\n			width: 1em;\n			height: 1em;\n			color: rgb(220, 220, 220);\n			text-shadow: 1px 1px 1px rgba(0, 0, 0, .6);\n			background: rgba(0, 0, 0, .2);\n			border-radius: @xf-borderRadiusMedium;\n			padding: @xf-paddingMedium;\n			line-height: 1;\n		}\n\n		&:hover > i\n		{\n			color: rgb(255, 255, 255);\n\n			&:before\n			{\n				content: @fa-var-check-square;\n			}\n		}\n\n		> input + i\n		{\n			&:before,\n			&:after\n			{\n				top: @xf-paddingMedium;\n				left: @xf-paddingMedium;\n			}\n		}\n\n		> input:checked + i:after\n		{\n			font-weight: bold;\n		}\n	}\n}\n\n.file-insert\n{\n	top: 4px;\n	left: 4px;\n	font-size: @xf-fontSizeSmaller;\n	max-width: (@_fileMinSize - 40px);\n	white-space: normal;\n	word-wrap: break-word;\n\n	&.is-active\n	{\n		.file-insertLink\n		{\n			display: none;\n		}\n\n		.file-menuOptions\n		{\n			display: block;\n		}\n	}\n}\n\n.file-delete\n{\n	top: 4px;\n	right: 4px;\n	font-size: @xf-fontSizeNormal;\n}\n\n.file-insert,\n.file-delete\n{\n	.attachmentUploads.is-selecting &\n	{\n		display: none;\n	}\n}\n\n.file-insertLink,\n.file-deleteLink\n{\n	display: inline-block;\n}\n\na.file-deleteLink\n{\n	color: inherit;\n	background: rgba(0, 0, 0, .2);\n	border-radius: @xf-borderRadiusMedium;\n	padding: @xf-paddingMedium;\n	.m-transition(background);\n\n	&:hover\n	{\n		text-decoration: none;\n		background: rgba(0, 0, 0, .5);\n	}\n}\n\na.file-insertLink,\n.file-menuOptions > a\n{\n	color: inherit;\n	background: rgba(0, 0, 0, 0.4);\n	border-radius: @xf-borderRadiusMedium;\n	padding: @xf-paddingMedium;\n	.m-transition(background);\n\n	&:hover\n	{\n		text-decoration: none;\n		background: rgba(0, 0, 0, .5);\n	}\n}\n\n.file-menuOptions\n{\n	.m-listPlain();\n	display: none;\n\n	> a\n	{\n		display: block;\n		margin-top: @xf-paddingSmall;\n		max-width: max-content;\n\n		&:first-child\n		{\n			margin-top: 0;\n		}\n	}\n}\n\n@media (max-width: @xf-responsiveNarrow)\n{\n	.attachmentUploads\n	{\n		.iconic-label,\n		.insert-label\n		{\n			display: none;\n		}\n	}\n}', 0x[encoded data, 14238 characters], 0x5846, 2020670, '2.2.6', 1748686057),
(717, 0x7075626c6963, 0x626173655f7072656669785f73656c6563746f72, 0, '<xf:macro id=\"select\" arg-prefixes=\"!\" arg-selected=\"0\" arg-withRow=\"1\">\n\n	<xf:set var=\"$prefixesGrouped\" value=\"{$prefixes.prefixesGrouped}\" />\n	<xf:set var=\"$prefixGroups\" value=\"{$prefixes.prefixGroups}\" />\n\n	<xf:if is=\"$prefixesGrouped is not empty\">\n		<xf:set var=\"$inner\">\n			<xf:select name=\"prefix_id\" value=\"{$selected}\">\n				<xf:option value=\"0\">{{ phrase(\'(no_prefix)\') }}</xf:option>\n				<xf:foreach loop=\"$prefixGroups\" key=\"$prefixGroupId\" value=\"$prefixGroup\" if=\"{{ count($prefixesGrouped.{$prefixGroupId}) > 0 }}\">\n					<xf:if is=\"{{ $prefixGroupId > 0 }}\">\n						<xf:option value=\"\" disabled=\"disabled\">{$prefixGroup.title}</xf:option>\n					<xf:else />\n						<xf:option value=\"\" disabled=\"disabled\">{{ phrase(\'(ungrouped)\') }}</xf:option>\n					</xf:if>\n					<xf:foreach loop=\"{$prefixesGrouped.{$prefixGroupId}}\" key=\"$prefixId\" value=\"$prefix\">\n						<xf:option value=\"{$prefixId}\">&nbsp;&nbsp; {$prefix.title}</xf:option>\n					</xf:foreach>\n				</xf:foreach>\n			</xf:select>\n		</xf:set>\n\n		<xf:if is=\"$withRow\">\n			<xf:formrow label=\"{{ phrase(\'prefix\') }}\" rowtype=\"input\">\n				{$inner|raw}\n			</xf:formrow>\n		<xf:else />\n			{$inner|raw}\n		</xf:if>\n\n	</xf:if>\n</xf:macro>', 0x[encoded data, 24760 characters], 0x5846, 2030010, '2.3.0 Alpha', 1748686057);
INSERT INTO `xf_template` (`template_id`, `type`, `title`, `style_id`, `template`, `template_parsed`, `addon_id`, `version_id`, `version_string`, `last_edit_date`) VALUES
(718, 0x7075626c6963, 0x62625f636f64652e6c657373, 0, '@_bbCodeBlock-spacing: .5em;\n@_bbCodeBlock-paddingV: @xf-paddingMedium;\n@_bbCodeBlock-paddingH: @xf-paddingLarge;\n@_bbCodeBlock-expandTriggerHeight: (@xf-bbCodeBlockExpandHeight / 2);\n\n.bbCodeBlock\n{\n	display: flow-root;\n	margin: @_bbCodeBlock-spacing 0;\n	.xf-bbCodeBlock();\n\n	&.bbCodeBlock--quote\n	{\n		.bbCodeBlock-content\n		{\n			font-size: @xf-fontSizeSmall;\n		}\n	}\n\n	&.bbCodeBlock--feature\n	{\n		border-left: @xf-borderSizeFeature solid @xf-borderColorFeature;\n\n		.bbCodeBlock-title\n		{\n			color: @xf-textColorFeature;\n		}\n	}\n}\n\n.bbCodeBlock-title\n{\n	padding: @_bbCodeBlock-paddingV @_bbCodeBlock-paddingH;\n	.xf-bbCodeBlockTitle();\n	.m-clearFix();\n}\n\na.bbCodeBlock-sourceJump\n{\n	color: inherit;\n	text-decoration: none;\n\n	&:hover\n	{\n		text-decoration: underline;\n	}\n\n	&:after\n	{\n		.m-faBase();\n		.m-faContent(@fa-var-arrow-circle-up); //, 1em\n		display: inline-block;\n		margin-left: 5px;\n	}\n}\n\n.bbCodeBlock-content\n{\n	position: relative;\n	padding: @_bbCodeBlock-paddingV @_bbCodeBlock-paddingH;\n	.m-clearFix();\n}\n\n.bbCodeBlock-expandLink\n{\n	display: none;\n	position: absolute;\n	bottom: 0;\n	left: 0;\n	right: 0;\n	height: @_bbCodeBlock-expandTriggerHeight;\n	cursor: pointer;\n	z-index: @zIndex-1;\n\n	.m-gradient(\n		fade(@xf-bbCodeBlock--background-color, 0%),\n		xf-default(@xf-bbCodeBlock--background-color, transparent),\n		transparent,\n		0%,\n		80%\n	);\n\n	a\n	{\n		position: absolute;\n		bottom: @_bbCodeBlock-paddingV;\n		left: 0;\n		right: 0;\n		text-align: center;\n		font-size: @xf-fontSizeSmall;\n		color: @xf-textColorAttention;\n		text-decoration: none;\n	}\n}\n\n.bbCodeBlock--screenLimited\n{\n	.bbCodeBlock-content\n	{\n		max-height: 300px;\n		max-height: 70vh;\n		overflow: auto;\n		-webkit-overflow-scrolling: touch;\n	}\n}\n\n.bbCodeBlock--expandable\n{\n	overflow: hidden;\n	.m-transition(-xf-height, height, padding, margin, border;);\n\n	.bbCodeBlock-content\n	{\n		overflow: hidden;\n\n		.bbCodeBlock:not(.bbCodeBlock--expandable) .bbCodeBlock-content\n		{\n			overflow: visible;\n		}\n		.bbCodeBlock.bbCodeBlock--screenLimited .bbCodeBlock-content\n		{\n			overflow: auto;\n		}\n	}\n\n	.bbCodeBlock-expandContent\n	{\n		max-height: @xf-bbCodeBlockExpandHeight;\n		overflow: hidden;\n	}\n\n	&.is-expandable\n	{\n		.bbCodeBlock-expandLink\n		{\n			display: block;\n		}\n	}\n\n	&.is-expanded\n	{\n		.bbCodeBlock-expandContent\n		{\n			max-height: none;\n		}\n\n		.bbCodeBlock-expandLink\n		{\n			display: none;\n		}\n	}\n}\n\n.bbCodeBlock--unfurl\n{\n	.xf-contentHighlightBase();\n\n	padding: @_bbCodeBlock-paddingV;\n	width: 650px;\n	max-width: 100%;\n	border-left: @xf-borderSizeMinorFeature solid @xf-borderColorFeature;\n\n	overflow: hidden;\n\n	.contentRow-header\n	{\n		margin: 0;\n		font-size: @xf-fontSizeNormal;\n		font-weight: normal;\n		.m-overflowEllipsis();\n	}\n\n	.contentRow-snippet\n	{\n		font-size: @xf-fontSizeSmaller;\n		font-style: normal;\n	}\n\n	.contentRow-minor\n	{\n		font-size: @xf-fontSizeSmaller;\n	}\n\n	&.is-pending\n	{\n		opacity: 0.5;\n\n		&.is-recrawl\n		{\n			opacity: 1;\n		}\n	}\n\n	&.is-simple\n	{\n		.contentRow-figure\n		{\n			display: none;\n		}\n	}\n\n	.bbCodeBlockUnfurl-image\n	{\n		aspect-ratio: auto 1 / 1;\n	}\n\n	.bbCodeBlockUnfurl-icon\n	{\n		width: 12px;\n		vertical-align: -2px;\n		aspect-ratio: auto 1 / 1;\n	}\n}\n\n.bbCodeCode\n{\n	margin: 0;\n	padding: 0;\n\n	.has-hiddenscroll &\n	{\n		// solely to workaround this Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=914844\n		// TODO: remove when fixed\n		padding-bottom: @xf-paddingLarge;\n	}\n\n	font-family: @xf-fontFamilyCode;\n	font-size: @xf-fontSizeSmall;\n	line-height: @xf-lineHeightDefault;\n	-ltr-rtl-text-align: left;\n\n	direction: ltr;\n	white-space: pre;\n	position: relative;\n\n	.m-tabSize();\n\n	code\n	{\n		font-family: inherit;\n	}\n\n	.prism-token\n	{\n		&.prism-comment,\n		&.prism-prolog,\n		&.prism-doctype,\n		&.prism-cdata\n		{\n			color: #a50;\n		}\n\n		&.prism-constant\n		{\n			color: #05a;\n		}\n\n		&.prism-tag\n		{\n			color: #170;\n		}\n\n		&.prism-boolean\n		{\n			color: #219;\n		}\n\n		&.prism-symbol,\n		&.prism-atrule,\n		&.prism-keyword\n		{\n			color: #708;\n		}\n\n		&.prism-selector,\n		&.prism-function\n		{\n			color: #05a;\n		}\n\n		&.prism-deleted\n		{\n			color: #d44;\n		}\n\n		&.prism-inserted\n		{\n			color: #292;\n		}\n\n		&.prism-string,\n		&.prism-attr-value\n		{\n			color: #a11;\n		}\n\n		&.prism-number\n		{\n			color: #164;\n		}\n\n		&.prism-attr-name,\n		&.prism-char,\n		&.prism-builtin\n		{\n			color: #00c;\n		}\n\n		&.prism-regex,\n		&.prism-important,\n		&.prism-variable,\n		&.prism-package\n		{\n			color: #05a;\n		}\n\n		&.prism-class-name,\n		&.prism-important,\n		&.prism-bold\n		{\n			color: #00f;\n		}\n\n		&.prism-bold\n		{\n			font-weight: bold;\n		}\n\n		&.prism-italic,\n		&.prism-constant\n		{\n			color: #05a;\n\n			font-style: italic;\n		}\n\n		&.prism-entity\n		{\n			cursor: help;\n		}\n	}\n\n	.m-colorScheme(dark,\n	{\n		.prism-token\n		{\n			&.prism-comment,\n			&.prism-prolog,\n			&.prism-doctype,\n			&.prism-cdata\n			{\n				color: #8292a2;\n			}\n\n			&.prism-constant\n			{\n				color: #f92672;\n			}\n\n			&.prism-tag\n			{\n				color: #f92672;\n			}\n\n			&.prism-boolean\n			{\n				color: #ae81ff;\n			}\n\n			&.prism-symbol,\n			&.prism-atrule,\n			&.prism-keyword\n			{\n				color: #e6db74;\n			}\n\n			&.prism-selector,\n			&.prism-function\n			{\n				color: #e6db74;\n			}\n\n			&.prism-string,\n			&.prism-attr-value\n			{\n				color: #a6e22e;\n			}\n\n			&.prism-number\n			{\n				color: #ae81ff;\n			}\n\n			&.prism-attr-name,\n			&.prism-char,\n			&.prism-builtin\n			{\n				color: #a6e22e;\n			}\n\n			&.prism-regex,\n			&.prism-important,\n			&.prism-variable,\n			&.prism-package\n			{\n				color: #fd971f;\n			}\n\n			&.prism-class-name,\n			&.prism-important,\n			&.prism-bold\n			{\n				color: #e6db74;\n			}\n\n			&.prism-italic,\n			&.prism-constant\n			{\n				color: #f92672;\n			}\n		}\n	});\n}\n\n.bbCodeInline\n{\n	margin: 0;\n	.xf-bbCodeInlineCode();\n	font-family: @xf-fontFamilyCode;\n	line-height: @xf-lineHeightDefault;\n	box-decoration-break: clone;\n	-webkit-box-decoration-break: clone;\n	white-space: pre-wrap;\n}\n\n.bbCodeSpoiler\n{\n	margin: @_bbCodeBlock-spacing 0;\n}\n\n.bbCodeSpoiler-button\n{\n	.has-no-js & { display: none; }\n}\n\n.bbCodeSpoiler-content\n{\n	.m-hiddenEl(true);\n	.has-no-js & { display: block !important; }\n\n	> .bbCodeBlock--spoiler\n	{\n		margin: .2em 0 0;\n	}\n}\n\n.bbCodeInlineSpoiler\n{\n	@blurAmount: 6px;\n	filter: blur(@blurAmount);\n	cursor: pointer;\n\n	a, span\n	{\n		.has-js &\n		{\n			pointer-events: none;\n		}\n	}\n\n	.smilie\n	{\n		filter: grayscale(90%);\n	}\n\n	&:hover\n	{\n		filter: blur((@blurAmount - 1));\n	}\n}', 0x[encoded data, 12920 characters], 0x5846, 2030170, '2.3.1', 1748686057),
(719, 0x7075626c6963, 0x62625f636f64655f70726576696577, 0, '<xf:if is=\"$message\">\n	<xf:css src=\"bb_code_preview.less\" />\n	<div class=\"bbCodePreview\">\n	<xf:formrow rowtype=\"fullWidth noLabel noGutter\">\n		<h4 class=\"block-textHeader\">{{ phrase(\'preview\') }}</h4>\n		<div class=\"bbCodePreview-content\">\n			{{ bb_code($message, $context . \':preview\', $user, {\n				\'attachments\': $attachments,\n				\'viewAttachments\': $canViewAttachments\n			}) }}\n		</div>\n	</xf:formrow>\n	</div>\n</xf:if>', 0x[encoded data, 6980 characters], 0x5846, 2020010, '2.2.0 Alpha', 1748686057),
(720, 0x7075626c6963, 0x62625f636f64655f707265766965772e6c657373, 0, '.bbCodePreview\n{\n	.m-transitionFadeDown();\n}\n\n.bbCodePreview-content\n{\n	max-height: 300px;\n	max-height: 75vh;\n	overflow: auto;\n	padding-bottom: 3px; // mostly to ensure icode doesn\'t overflow unexpectedly\n	font-family: @xf-fontFamilyBody;\n}', 0x4f3a32343a2258465c54656d706c6174655c436f6d70696c65725c417374223a313a7b733a383a226368696c6472656e223b613a313a7b693a303b4f3a33313a2258465c54656d706c6174655c436f6d70696c65725c53796e7461785c537472223a323a7b733a343a226c696e65223b693a313b733a373a22636f6e74656e74223b733a3234303a222e6262436f6465507265766965770a7b0a092e6d2d7472616e736974696f6e46616465446f776e28293b0a7d0a0a2e6262436f6465507265766965772d636f6e74656e740a7b0a096d61782d6865696768743a2033303070783b0a096d61782d6865696768743a20373576683b0a096f766572666c6f773a206175746f3b0a0970616464696e672d626f74746f6d3a203370783b202f2f206d6f73746c7920746f20656e737572652069636f646520646f65736e2774206f766572666c6f7720756e65787065637465646c790a09666f6e742d66616d696c793a204078662d666f6e7446616d696c79426f64793b0a7d223b7d7d7d, 0x5846, 2010132, '2.1.1 Beta 2', 1748686057);
