1WRMCB=function(e){var c=console;if(c&&c.log&&c.error){c.log('Error running batched script.');c.error(e);}} 2; 3try { 4/* module-key = 'confluence.extra.jira:help-dialog-extension', location = '/jira/help-dialog.js' */ 5Confluence.KeyboardShortcuts&&Confluence.KeyboardShortcuts.Editor.push({context:"editor.actions",descKey:"Insert Jira Issue/Filter"+":",keys:[["Ctrl+Shift+J"]]}); 6}catch(e){WRMCB(e)}; 7; 8try { 9/* module-key = 'com.atlassian.confluence.plugins.confluence-mentions-plugin:help-dialog-extension', location = 'js/help-dialog.js' */ 10AJS.toInit(function($) { 11 // Add the shortcut to the shortcuts dialog 12 Confluence.KeyboardShortcuts && Confluence.KeyboardShortcuts.Autoformat.push( 13 { 14 action: "@", 15 context: "autoformat.autocomplete", 16 description: "Mention" 17 }); 18}); 19}catch(e){WRMCB(e)}; 20; 21try { 22/* module-key = 'com.atlassian.confluence.plugins.doctheme:splitter', location = 'doctheme/splitter-1.5.1/jquery.cookie.js' */ 23/** 24 * Cookie plugin 25 * 26 * Copyright (c) 2006 Klaus Hartl (stilbuero.de) 27 * Dual licensed under the MIT and GPL licenses: 28 * http://www.opensource.org/licenses/mit-license.php 29 * http://www.gnu.org/licenses/gpl.html 30 * 31 */ 32 33/** 34 * Create a cookie with the given name and value and other optional parameters. 35 * 36 * @example $.cookie('the_cookie', 'the_value'); 37 * @desc Set the value of a cookie. 38 * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true}); 39 * @desc Create a cookie with all available options. 40 * @example $.cookie('the_cookie', 'the_value'); 41 * @desc Create a session cookie. 42 * @example $.cookie('the_cookie', null); 43 * @desc Delete a cookie by passing null as value. 44 * 45 * @param String name The name of the cookie. 46 * @param String value The value of the cookie. 47 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. 48 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. 49 * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. 50 * If set to null or omitted, the cookie will be a session cookie and will not be retained 51 * when the the browser exits. 52 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). 53 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). 54 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will 55 * require a secure protocol (like HTTPS). 56 * @type undefined 57 * 58 * @name $.cookie 59 * @cat Plugins/Cookie 60 * @author Klaus Hartl/[email protected] 61 */ 62 63/** 64 * Get the value of a cookie with the given name. 65 * 66 * @example $.cookie('the_cookie'); 67 * @desc Get the value of a cookie. 68 * 69 * @param String name The name of the cookie. 70 * @return The value of the cookie. 71 * @type String 72 * 73 * @name $.cookie 74 * @cat Plugins/Cookie 75 * @author Klaus Hartl/[email protected] 76 */ 77jQuery.cookie = function(name, value, options) { 78 if (typeof value != 'undefined') { // name and value given, set cookie 79 options = options || {}; 80 if (value === null) { 81 value = ''; 82 options.expires = -1; 83 } 84 var expires = ''; 85 if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { 86 var date; 87 if (typeof options.expires == 'number') { 88 date = new Date(); 89 date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); 90 } else { 91 date = options.expires; 92 } 93 expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE 94 } 95 var path = options.path ? '; path=' + options.path : ''; 96 var domain = options.domain ? '; domain=' + options.domain : ''; 97 var secure = options.secure ? '; secure' : ''; 98 document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); 99 } else { // only name given, get cookie 100 var cookieValue = null; 101 if (document.cookie && document.cookie != '') { 102 var cookies = document.cookie.split(';'); 103 for (var i = 0; i < cookies.length; i++) { 104 var cookie = jQuery.trim(cookies[i]); 105 // Does this cookie string begin with the name we want? 106 if (cookie.substring(0, name.length + 1) == (name + '=')) { 107 cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 108 break; 109 } 110 } 111 } 112 return cookieValue; 113 } 114}; 115}catch(e){WRMCB(e)}; 116; 117try { 118/* module-key = 'com.atlassian.confluence.plugins.doctheme:splitter', location = 'doctheme/splitter-1.5.1/splitter.js' */ 119/* 120 * jQuery.splitter.js - two-pane splitter window plugin 121 * 122 * version 1.51 (2009/01/09) 123 * 124 * Dual licensed under the MIT and GPL licenses: 125 * http://www.opensource.org/licenses/mit-license.php 126 * http://www.gnu.org/licenses/gpl.html 127 */ 128 129/** 130 * The splitter() plugin implements a two-pane resizable splitter window. 131 * The selected elements in the jQuery object are converted to a splitter;
132 * each selected element should have two child elements, used for the panes 133 * of the splitter. The plugin adds a third child element for the splitbar. 134 * 135 * For more details see: http://methvin.com/splitter/ 136 * 137 * 138 * @example $('#MySplitter').splitter(); 139 * @desc Create a vertical splitter with default settings 140 * 141 * @example $('#MySplitter').splitter({type: 'h', accessKey: 'M'}); 142 * @desc Create a horizontal splitter resizable via Alt+Shift+M 143 * 144 * @name splitter 145 * @type jQuery 146 * @param Object options Options for the splitter (not required) 147 * @cat Plugins/Splitter 148 * @return jQuery 149 * @author Dave Methvin ([email protected]) 150 */ 151 ;(function($){ 152 153 $.fn.splitter = function(args){ 154 args = args || {}; 155 return this.each(function() { 156 var zombie; // left-behind splitbar for outline resizes 157 function startSplitMouse(evt) { 158 if ( opts.outline ) 159 zombie = zombie || bar.clone(false).insertAfter(A); 160 panes.css("-webkit-user-select", "none"); // Safari selects A/B text on a move 161 bar.addClass(opts.activeClass); 162 A._posSplit = A[0][opts.pxSplit] - evt[opts.eventPos]; 163 $(document) 164 .bind("mousemove", doSplitMouse) 165 .bind("mouseup", endSplitMouse); 166 } 167 function doSplitMouse(evt) { 168 var newPos = A._posSplit+evt[opts.eventPos]; 169 if ( opts.outline ) { 170 newPos = Math.max(0, Math.min(newPos, splitter._DA - bar._DA)); 171 bar.css(opts.origin, newPos); 172 } else 173 resplit(newPos); 174 } 175 function endSplitMouse(evt) { 176 bar.removeClass(opts.activeClass); 177 var newPos = A._posSplit+evt[opts.eventPos]; 178 if ( opts.outline ) { 179 zombie.remove(); zombie = null; 180 resplit(newPos); 181 } 182 panes.css("-webkit-user-select", "text"); // let Safari select text again 183 $(document) 184 .unbind("mousemove", doSplitMouse) 185 .unbind("mouseup", endSplitMouse); 186 } 187 function resplit(newPos) {
188 // Constrain new splitbar position to fit pane size limits 189 newPos = Math.max(A._min, splitter._DA - B._max, 190 Math.min(newPos, A._max, splitter._DA - bar._DA - B._min)); 191 // Resize/position the two panes 192 bar._DA = bar[0][opts.pxSplit]; // bar size may change during dock 193 bar.css(opts.origin, newPos).css(opts.fixed, splitter._DF); 194 A.css(opts.origin, 0).css(opts.split, newPos).css(opts.fixed, splitter._DF); 195 B.css(opts.origin, newPos+bar._DA) 196 .css(opts.split, splitter._DA-bar._DA-newPos).css(opts.fixed, splitter._DF); 197 // IE fires resize for us; all others pay cash 198 if ( !$.browser.msie ) 199 panes.trigger("resize"); 200 } 201 function dimSum(jq, dims) { 202 // Opera returns -1 for missing min/max width, turn into 0 203 var sum = 0; 204 for ( var i=1; i < arguments.length; i++ ) 205 sum += Math.max(parseInt(jq.css(arguments[i])) || 0, 0); 206 return sum; 207 } 208 209 // Determine settings based on incoming opts, element classes, and defaults 210 var vh = (args.splitHorizontal? 'h' : args.splitVertical? 'v' : args.type) || 'v'; 211 var opts = $.extend({ 212 activeClass: 'active', // class name for active splitter 213 pxPerKey: 8, // splitter px moved per keypress 214 tabIndex: 0, // tab order indicator 215 accessKey: '' // accessKey for splitbar 216 },{ 217 v: { // Vertical splitters: 218 keyLeft: 39, keyRight: 37, cursor: "e-resize", 219 splitbarClass: "vsplitbar", outlineClass: "voutline", 220 type: 'v', eventPos: "pageX", origin: "left",
221 split: "width", pxSplit: "offsetWidth", side1: "Left", side2: "Right", 222 fixed: "height", pxFixed: "offsetHeight", side3: "Top", side4: "Bottom" 223 }, 224 h: { // Horizontal splitters: 225 keyTop: 40, keyBottom: 38, cursor: "n-resize", 226 splitbarClass: "hsplitbar", outlineClass: "houtline", 227 type: 'h', eventPos: "pageY", origin: "top", 228 split: "height", pxSplit: "offsetHeight", side1: "Top", side2: "Bottom", 229 fixed: "width", pxFixed: "offsetWidth", side3: "Left", side4: "Right" 230 } 231 }[vh], args); 232 233 // Create jQuery object closures for splitter and both panes 234 var splitter = $(this).css({position: "relative"}); 235 var panes = $(">*", splitter[0]).css({ 236 position: "absolute", // positioned inside splitter container 237 "z-index": "0", // splitbar is positioned above 238 "-moz-outline-style": "none" // don't show dotted outline 239 }); 240 var A = $(panes[0]); // left or top 241 var B = $(panes[1]); // right or bottom 242 243 // Focuser element, provides keyboard support; title is shown by Opera accessKeys 244 var focuser = $('<a href="javascript:void(0)"></a>') 245 .attr({accessKey: opts.accessKey, tabIndex: opts.tabIndex, title: opts.splitbarClass}) 246 .bind($.browser.opera?"click":"focus", function(){ this.focus(); bar.addClass(opts.activeClass) }) 247 .bind("keydown", function(e){ 248 var key = e.which || e.keyCode; 249 var dir = key==opts["key"+opts.side1]? 1 : key==opts["key"+opts.side2]? -1 : 0; 250 if ( dir ) 251 resplit(A[0][opts.pxSplit]+dir*opts.pxPerKey, false); 252 }) 253 .bind("blur", function(){ bar.removeClass(opts.activeClass) }); 254 255 // Splitbar element, can be already in the doc or we create one 256 var bar = $(panes[2] || '<div></div>') 257 .insertAfter(A).css("z-index", "10").append(focuser) 258 .attr({"class": opts.splitbarClass, unselectable: "on"}) 259 .css({position: "absolute", "user-select": "none", "-webkit-user-select": "none", 260 "-khtml-user-select": "none", "-moz-user-select": "none"}) 261 .bind("mousedown", startSplitMouse); 262 // Use our cursor unless the style specifies a non-default cursor 263 if ( /^(auto|default|)$/.test(bar.css("cursor")) ) 264 bar.css("cursor", opts.cursor); 265 266 // Cache several dimensions for speed, rather than re-querying constantly 267 bar._DA = bar[0][opts.pxSplit]; 268 splitter._PBF = $.boxModel? dimSum(splitter, "border"+opts.side3+"Width", "border"+opts.side4+"Width") : 0; 269 splitter._PBA = $.boxModel? dimSum(splitter, "border"+opts.side1+"Width", "border"+opts.side2+"Width") : 0; 270 A._pane = opts.side1; 271 B._pane = opts.side2; 272 $.each([A,B], function(){ 273 this._min = opts["min"+this._pane] || dimSum(this, "min-"+opts.split); 274 this._max = opts["max"+this._pane] || dimSum(this, "max-"+opts.split) || 9999; 275 this._init = opts["size"+this._pane]===true ? 276 parseInt($.curCSS(this[0],opts.split)) : opts["size"+this._pane]; 277 }); 278 279 // Determine initial position, get from cookie if specified 280 var initPos = A._init; 281 if ( !isNaN(B._init) ) // recalc initial B size as an offset from the top or left side 282 initPos = splitter[0][opts.pxSplit] - splitter._PBA - B._init - bar._DA; 283 if ( opts.cookie ) { 284 if ( !$.cookie ) 285 alert('jQuery.splitter(): jQuery cookie plugin required'); 286 var ckpos = parseInt($.cookie(opts.cookie)); 287 if ( !isNaN(ckpos) ) 288 initPos = ckpos; 289 $(window).bind("unload", function(){ 290 var state = String(bar.css(opts.origin)); // current location of splitbar 291 $.cookie(opts.cookie, state, {expires: opts.cookieExpires || 365, 292 path: opts.cookiePath || document.location.pathname}); 293 }); 294 } 295 if ( isNaN(initPos) ) // King Solomon's algorithm 296 initPos = Math.round((splitter[0][opts.pxSplit] - splitter._PBA - bar._DA)/2); 297 298 var resizeHandler = function(){ 299 var top = splitter.offset().top; 300 var footer = $("#footer").height(); 301 if (!footer) 302 footer = 24; 303 var wh = $(window).height()-footer; 304 splitter.css("height", Math.max(wh-top-splitter._hadjust, splitter._hmin)+"px"); 305 if ( !$.browser.msie ) splitter.trigger("resize"); 306 }; 307 args.update = function (isBound) { 308 splitter._hadjust = dimSum(splitter, "borderTopWidth", "borderBottomWidth", "marginBottom"); 309 splitter._hmin = Math.max(dimSum(splitter, "minHeight"), 20); 310 isBound && $(window).bind("resize", resizeHandler); 311 resizeHandler(); 312 }; 313 // Resize event propagation and splitter sizing 314 if ( opts.anchorToWindow ) { 315 // Account for margin or border on the splitter container and enforce min height 316 args.update(true); 317 } 318 else if ( opts.resizeToWidth && !$.browser.msie ) 319 $(window).bind("resize", function(){ 320 splitter.trigger("resize"); 321 }); 322 323 // Resize event handler; triggered immediately to set initial position 324 splitter.bind("resize", function(e, size){ 325 // Custom events bubble in jQuery 1.3; don't Yo Dawg 326 if ( e.target != this ) return; 327 // Determine new width/height of splitter container 328 splitter._DF = splitter[0][opts.pxFixed] - splitter._PBF; 329 splitter._DA = splitter[0][opts.pxSplit] - splitter._PBA; 330 // Bail if splitter isn't visible or content isn't there yet 331 if ( splitter._DF <= 0 || splitter._DA <= 0 ) return; 332 // Re-divvy the adjustable dimension; maintain size of the preferred pane 333 resplit(!isNaN(size)? size : (!(opts.sizeRight||opts.sizeBottom)? A[0][opts.pxSplit] : 334 splitter._DA-B[0][opts.pxSplit]-bar._DA)); 335 }).trigger("resize" , [initPos]); 336 }); 337}; 338})(jQuery); 339 340/*Places focus on the main content section of pages*/ 341window.placeFocus = function () { 342 343 var mainSection = document.getElementById('splitter-content'); 344 if(mainSection) 345 { 346 mainSection.focus(); 347 } 348}; 349 350}catch(e){WRMCB(e)}; 351; 352try { 353/* module-key = 'com.atlassian.confluence.plugins.doctheme:splitter', location = 'doctheme/space-specific-quicknav.js' */ 354jQuery(function($) { 355 var quickSearchQuery = $("#quick-search-query-hacked"); 356 var siteSearchForm = quickSearchQuery.closest("form"); 357 var spaceKey = $("fieldset input[name='spaceSearch']", siteSearchForm).val() === "true" ? $("#confluence-space-key").attr("content") : ""; 358 359 siteSearchForm.submit(function() { 360 var query = quickSearchQuery.val(); 361 362 if (query.search(/all:/gi) >= 0) { 363 quickSearchQuery.val($.trim(query.replace(/all:/gi, ''))); 364 } 365 }); 366 367 quickSearchQuery.quicksearch("/json/contentnamesearch.action", null, { 368 dropdownPlacement : function (dropDown) { 369 if (spaceKey) { 370 var searchFor = $("a.search-for", dropDown); 371 searchFor.attr("href", searchFor.attr("href") + "&where=" + encodeURIComponent(spaceKey)); 372 } 373 374 siteSearchForm.find(".quick-nav-drop-down").append(dropDown); 375 }, 376 makeParams : function(value) { 377 var params = { query : value }; 378 379 if (params.query.search(/all:/gi) >= 0) { 380 $("input[name='where']", siteSearchForm).val(""); 381 params.query = $.trim(params.query.replace(/all:/gi, ''));
382 if (!params.query) 383 params.query = "ALL"; 384 } else if (spaceKey) { 385 params.spaceKey = spaceKey; 386 } 387 388 return params; 389 } 390 }); 391 392}); 393}catch(e){WRMCB(e)}; 394; 395try { 396/* module-key = 'com.atlassian.confluence.plugins.confluence-dashboard:footer-analytics', location = '/js/confluence-dashboard/utils/footer-analytics.js' */ 397define("confluence-dashboard/utils/footer-analytics",["jquery","ajs","confluence/meta"],function(e,a,t){"use strict";var n=i(e).default,o=i(a).default,c=i(t).default;function i(e){return e&&e.__esModule?e:{default:e}}o.toInit(function(){var e=c.get("page-id"),a=n("body").hasClass("dashboard");n("#footer").on("click","a",function(){o.trigger("analytics",{name:"confluence.footer.item.click",data:{pageId:e,isDashboard:a}})})})}),require(["confluence-dashboard/utils/footer-analytics"]); 398}catch(e){WRMCB(e)}; 399; 400try { 401/* module-key = 'com.atlassian.auiplugin:split_aui.component.dialog2', location = 'aui.chunk.afb0455b22fe08f3d5f6--3bb4a4578cbbea02f437.js' */ 402(window.__auiJsonp=window.__auiJsonp||[]).push([["aui.component.dialog2"],{"0+IH":function(t,e,i){"use strict";i.r(e),i.d(e,"dialog2",(function(){return p}));i("AehQ"),i("rWoL");var a=i("+x/D"),u=i("TmQU"),n=i("KloK"),o=i("jEnx"),c=i("6RZY"),l=i("+ay7"),s=i("Pjwx"),d={"aui-focus":"false","aui-blanketed":"true"};function f(t){var e;this._handlers=new WeakMap,this.$el=t?Object(a.default)(t):Object(a.default)('\n <section role="dialog" class="aui-layer aui-dialog2 aui-dialog2-medium">\n <header class="aui-dialog2-header">\n <h2 class="aui-dialog2-header-main"></h2>\n '.concat(s.CLOSE_BUTTON,'\n </button>\n </header>\n <div class="aui-dialog2-content"></div>\n <footer class="aui-dialog2-footer"></footer>\n </section>')),e=this.$el,a.default.each(d,(function(t,i){var a="data-"+t;e[0].hasAttribute(a)||e.attr(a,i)}))}f.prototype.on=function(t,e){const i=this.$el;if(!this._handlers.get(e)){const a=function(t){t.target===i.get(0)&&e.apply(this,arguments)};Object(o.default)(i).on(t,a),this._handlers.set(e,a)}return this},f.prototype.off=function(t,e){const i=this.$el,a=this._handlers.get(e);return a&&(Object(o.default)(i).off(t,a),this._handlers.delete(e)),this},f.prototype.show=function(){return Object(o.default)(this.$el).show(),this},f.prototype.hide=function(){return Object(o.default)(this.$el).hide(),this},f.prototype.remove=function(){return Object(o.default)(this.$el).remove(),this},f.prototype.isVisible=function(){return Object(o.default)(this.$el).isVisible()};var h=Object(c.default)("dialog2",f),r=new Set;h.on=function(t,e){return r.has(e)||(o.default.on(t,".aui-dialog2",e),r.add(e)),this},h.off=function(t,e){return r.has(e)&&(o.default.off(t,".aui-dialog2",e),r.delete(e)),this},Object(a.default)(document).on("click keydown",".aui-dialog2-header ".concat(s.CLOSE_BUTTON_CLASS_SELECTOR),(function(t){("click"===t.type||t.keyCode===l.default.ENTER||t.keyCode===l.default.SPACE)&&(t.preventDefault(),h(Object(a.default)(t.target).closest(".aui-dialog2")).hide())})),h.on("show",(function(t,e){e.find(s.CLOSE_BUTTON_CLASS_SELECTOR).attr("tabindex",0),e.attr("tabindex",-1);var i=e[0].hasAttribute("data-aui-focus-selector")&&e.attr("data-aui-focus-selector");if(i){var a=e.find(i);if(a.length>0)return a.first().focus()}e.focus()})),h.on("hide",(function(t,e){var i=Object(o.default)(e);e.data("aui-remove-on-hide")&&i.remove()})),Object(u.default)("aui/dialog2",h),Object(n.default)("dialog2",h);var p=h}},[["0+IH","runtime","aui.splitchunk.vendors--894c8113d9","aui.splitchunk.0d131bcbf1","aui.splitchunk.fbbef27525","aui.splitchunk.444efc83be","aui.splitchunk.739b9ec8cc","aui.splitchunk.dd803a46b4","aui.splitchunk.994e478d48","aui.splitchunk.d7c46c2734","aui.splitchunk.e54c7c7304","aui.splitchunk.fb15cffa72","aui.splitchunk.f1e06f97a4","aui.splitchunk.479fe6ee76","aui.splitchunk.f673ef53ac","aui.splitchunk.8659b532c1","aui.splitchunk.5f851f97df","aui.splitchunk.d0110a864f","aui.splitchunk.afa5039e04","aui.splitchunk.bff3715233","aui.splitchunk.c750721820","aui.splitchunk.6d6f245ed3","aui.splitchunk.5b8c290363","aui.splitchunk.3d2cb1af14"]]]); 403}catch(e){WRMCB(e)}; 404; 405try { 406/* module-key = 'confluence.web.resources:page-loading-indicator', location = '/includes/js/page-loading-indicator.js' */
407define("confluence/page-loading-indicator",["jquery","underscore","ajs","confluence/templates"],function(c,k,a,h){return function(b){function d(){return c(".confluence-page-loading-blanket",b)}function e(){return c(".confluence-loading-indicator",b)}return{show:function(){0===d().length&&c(b).append(h.pageLoadingIndicator());d().show();e().spin({lines:12,length:8,width:4,radius:10,trail:60,speed:1.5,color:"#F0F0F0"})},hide:function(){e().stop();d().hide()},showUntilResolved:function(c,b){var f=this.hide.bind(this); 408this.show();c.then(function(){f()},function(){b&&a.messages.error(".confluence-page-loading-errors",{body:b});f()})},showUntilDialogVisible:function(b,d){var f=d||"An error has occurred connecting to the server. Please try again.",g=this.hide.bind(this),e=c(".aui-dialog:visible"),h=c(".aui-dialog2:visible");!e.length&&!h.length&&this.show();b.then(function(){g()},function(){a.messages.error(".confluence-page-loading-errors",{body:f});g()});a.bind("show.dialog",function i(){a.unbind("show.dialog",i);g()});if(null!=a.dialog2&& 409void 0!=a.dialog2)a.dialog2.on("show",function j(){a.dialog2.off("show",j);g()})},destroy:function(){b.remove(".confluence-page-loading-blanket")}}}});require("confluence/module-exporter").exportModuleAsGlobal("confluence/page-loading-indicator","Confluence.PageLoadingIndicator"); 410}catch(e){WRMCB(e)}; 411; 412try { 413/* module-key = 'confluence.web.resources:page-loading-indicator', location = '/includes/soy/page-loading-indicator.soy' */ 414// This file was automatically generated from page-loading-indicator.soy. 415// Please don't edit this file by hand. 416 417/** 418 * @fileoverview Templates in namespace Confluence.Templates. 419 */ 420 421if (typeof Confluence == 'undefined') { var Confluence = {}; } 422if (typeof Confluence.Templates == 'undefined') { Confluence.Templates = {}; } 423 424 425Confluence.Templates.pageLoadingIndicator = function(opt_data, opt_ignored) { 426 return '<div class="confluence-page-loading-errors"></div><div class="confluence-page-loading-blanket aui-blanket" aria-hidden="false"><div class="confluence-loading-indicator"></div></div>'; 427}; 428if (goog.DEBUG) { 429 Confluence.Templates.pageLoadingIndicator.soyTemplateName = 'Confluence.Templates.pageLoadingIndicator'; 430} 431 432}catch(e){WRMCB(e)}; 433; 434try { 435/* module-key = 'confluence.web.resources:deferred-loaders', location = '/includes/js/deferred-dialog-loader.js' */ 436define("confluence/deferred-dialog-loader",["underscore","jquery","ajs","confluence/page-loading-indicator","confluence/api/event"],function(c,d,i,j,b){return function(){var k=j(d("body")),f,g=!1,h=!1,e=function(){g&&h&&f&&(b.trigger(f),f=void 0)};b.bind("page.move.dialog.ready",function(){g=!0;e()});b.bind("blogpost.move.dialog.ready",function(){h=!0;e()});c.each({movePageDialogTools:{resource:"confluence.web.resources:page-move-resources",selector:"#action-move-page-dialog-link",event:"deferred.page-move.tools-menu"}, 437movePageDialogEditor:{resource:"confluence.web.resources:page-move-resources",selector:"#rte-button-location",event:"deferred.page-move.editor"},moveBlogDialogTools:{resource:"confluence.web.resources:page-move-resources",selector:"#action-move-blogpost-dialog-link",event:"deferred.blog-move.tools-menu"},availableGadgetsHelp:{resource:"com.atlassian.confluence.plugins.gadgets:gadget-directory-resources",selector:"#gadget-directory-link",event:"deferred.available-gadgets.help-menu"},aboutConfluenceHelp:{resource:"confluence.web.resources:about", 438selector:"#confluence-about-link",event:"deferred.about-confluence.help-menu"}},function(a){d("body").on("click",a.selector,function(c){var d=a.resource+".requested",e=WRM.require("wr!"+a.resource);e.then(function(){"confluence.web.resources:page-move-resources"!==a.resource?b.trigger(a.event):g&&h?b.trigger(a.event):f=a.event});k.showUntilDialogVisible(e);i.Analytics?i.Analytics.triggerPrivacyPolicySafeEvent(d):b.trigger("analyticsEvent",{name:d});c.preventDefault()})})}}); 439require("confluence/module-exporter").safeRequire("confluence/deferred-dialog-loader",function(c){require("ajs").toInit(c)}); 440}catch(e){WRMCB(e)}; 441; 442try { 443/* module-key = 'confluence.web.resources:deferred-loaders', location = '/includes/js/page-permissions-deferred-loader.js' */ 444define("confluence/page-permissions-deferred-loader","confluence/dark-features confluence/legacy ajs confluence/page-loading-indicator jquery wrm".split(" "),function(b,a,c,d,e,f){var g=d(e("body"));return function(b){var a=f.require("wr!com.atlassian.confluence.plugins.confluence-page-restrictions-dialog:dialog-resources");a.then(function(){c.trigger("deferred.page.permissions")});g.showUntilDialogVisible(a,"There was an error loading the page restrictions. Please try again later.");b.preventDefault()}}); 445require("confluence/module-exporter").safeRequire("confluence/page-permissions-deferred-loader",function(b){var a=require("ajs");a.toInit(function(c){c("body").on("click","#rte-button-restrictions,#action-page-permissions-link",b);a.bind("system-content-metadata.open-restrictions-dialog",b)})}); 446}catch(e){WRMCB(e)}; 447; 448try { 449/* module-key = 'confluence.web.resources:navigator-context', location = '/includes/js/api/navigator-context.js' */ 450define("confluence/api/navigator-context",["confluence/meta","document"],function(g,b){var h=function(a){a=d(a);return"undefined"!==typeof a&&0!==a},d=function(a){a=g.get(a);if(!isNaN(a))return Number(a)},i=function(){return!!b.querySelector(".page.view")||!!b.querySelector(".blogpost.view")},e=function(){return!!b.querySelector(".page.edit")||!!b.querySelector(".blogpost.edit")}
450,f=function(){return g.get("content-type")},c=function(){return d("page-id")};return{getCurrent:function(){return e()&& 4510===c()&&h("draft-id")?{target:"contentcreate",context:{contentId:d("draft-id"),contentType:f()}}:e()&&!i()&&0!==c()?{target:"contentedit",context:{contentId:c(),contentType:f()}}:!e()&&i()&&h("page-id")?{target:"contentview",context:{contentId:c(),contentType:f()}}:{target:"unknown",context:{}}}}}); 452}catch(e){WRMCB(e)};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.