swh.web 0.16.3__py3-none-any.whl → 0.16.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- swh/web/add_forge_now/templates/add-forge-request-dashboard.html +5 -2
- swh/web/api/views/origin.py +2 -2
- swh/web/archive_coverage/views.py +4 -7
- swh/web/badges/__init__.py +1 -1
- swh/web/badges/assets/index.js +40 -14
- swh/web/browse/assets/browse/browse.css +5 -0
- swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/browse/templates/browse-iframe.html +9 -7
- swh/web/browse/templates/browse-origin-visits.html +2 -2
- swh/web/browse/templates/browse-revision.html +5 -3
- swh/web/browse/templates/includes/content-display.html +10 -5
- swh/web/browse/templates/includes/readme-display.html +3 -2
- swh/web/browse/templates/includes/show-metadata.html +3 -2
- swh/web/browse/templates/includes/sidetabs.html +9 -7
- swh/web/browse/templates/includes/top-navigation.html +2 -1
- swh/web/browse/tests/views/test_origin.py +3 -1
- swh/web/deposit/templates/deposit-admin.html +6 -1
- swh/web/static/css/{archive_coverage.70eba3d32ed75472d638.css → archive_coverage.df54ae8fe40453ecd972.css} +2 -2
- swh/web/static/css/archive_coverage.df54ae8fe40453ecd972.css.map +1 -0
- swh/web/static/css/browse.633076034514e6a3977d.css +2 -0
- swh/web/static/css/browse.633076034514e6a3977d.css.map +1 -0
- swh/web/static/css/guided_tour.d496a0c252e1bb193496.css +2 -0
- swh/web/static/css/{guided_tour.62c03630e944b8b8d9ad.css.map → guided_tour.d496a0c252e1bb193496.css.map} +1 -1
- swh/web/static/css/{highlightjs.0c1b181eb006699a4c3e.css → highlightjs.37238c93749cb449800d.css} +2 -2
- swh/web/static/css/highlightjs.37238c93749cb449800d.css.map +1 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css +2 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css.map +1 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css +24 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css.map +1 -0
- swh/web/static/css/{webapp.4655323082740f1a4862.css → webapp.e995faa24f8c84db0d06.css} +2 -2
- swh/web/static/css/webapp.e995faa24f8c84db0d06.css.map +1 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js +3 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js.map +1 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js +3 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js.map +1 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js +3 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.LICENSE.txt +6 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.map +1 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js +3 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js.map +1 -0
- swh/web/static/js/deposit.d47e18177b16ccdbdb84.js.map +1 -1
- swh/web/static/js/{highlightjs.14fc09414685bf90c554.js → highlightjs.516e784a1e62011c7605.js} +3 -3
- swh/web/static/js/highlightjs.516e784a1e62011c7605.js.map +1 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js +3 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js.map +1 -0
- swh/web/static/js/mathjax.98ef576f318f1a0b0c4a.js.map +1 -1
- swh/web/static/js/pdf.worker.min.js +1 -1
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js +3 -0
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js.map +1 -0
- swh/web/static/js/{revision.61c9277f4a4c63df0f45.js → revision.122a31614a5f9abffc3c.js} +3 -3
- swh/web/static/js/revision.122a31614a5f9abffc3c.js.map +1 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js +3 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js.map +1 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js +3 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js.map +1 -0
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js +3 -0
- swh/web/static/js/{vendors.9fc5b97b8e4691b7272e.js.LICENSE.txt → vendors.f62cb86cf3b92ae280ee.js.LICENSE.txt} +5 -1
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js.map +1 -0
- swh/web/static/js/webapp.e93873983e400db67bf8.js +3 -0
- swh/web/static/js/{webapp.c5e37f8f7bfc8bb87ad8.js.map → webapp.e93873983e400db67bf8.js.map} +1 -1
- swh/web/static/jssources/assets/src/utils/functions.js +4 -4
- swh/web/static/jssources/datatables.net/js/dataTables.mjs +108 -44
- swh/web/static/jssources/datatables.net-fixedheader/js/dataTables.fixedHeader.mjs +10 -4
- swh/web/static/jssources/datatables.net-fixedheader/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net-bs5/js/dataTables.bootstrap5.mjs +81 -0
- swh/web/static/jssources/highlightjs-macaulay2/dist/macaulay2.min.js +3 -3
- swh/web/static/jssources/jslicenses.json +1 -1
- swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +885 -596
- swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +4982 -4566
- swh/web/static/jssources/swh/web/badges/assets/index.js +40 -14
- swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/static/jssources/swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/static/security.txt +3 -0
- swh/web/static/webpack-stats.json +240 -235
- swh/web/utils/swh_templatetags.py +8 -13
- swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/webapp/assets/webapp/webapp.css +8 -0
- swh/web/webapp/templates/layout.html +13 -10
- swh/web/webapp/tests/test_views.py +16 -1
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/METADATA +2 -3
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/RECORD +98 -93
- swh/web/static/css/archive_coverage.70eba3d32ed75472d638.css.map +0 -1
- swh/web/static/css/browse.0a250d3b07ce628588a5.css +0 -2
- swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +0 -1
- swh/web/static/css/guided_tour.62c03630e944b8b8d9ad.css +0 -2
- swh/web/static/css/highlightjs.0c1b181eb006699a4c3e.css.map +0 -1
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css +0 -2
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css.map +0 -1
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css +0 -24
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css.map +0 -1
- swh/web/static/css/webapp.4655323082740f1a4862.css.map +0 -1
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js +0 -3
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js.map +0 -1
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js +0 -3
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js.map +0 -1
- swh/web/static/js/badges.f02607179ad0264e7522.js +0 -2
- swh/web/static/js/badges.f02607179ad0264e7522.js.map +0 -1
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js +0 -3
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js.map +0 -1
- swh/web/static/js/highlightjs.14fc09414685bf90c554.js.map +0 -1
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js +0 -3
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js.map +0 -1
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js +0 -3
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js.map +0 -1
- swh/web/static/js/revision.61c9277f4a4c63df0f45.js.map +0 -1
- swh/web/static/js/save_code_now.4211098f5dd740dc49b4.js +0 -3
- swh/web/static/js/save_code_now.4211098f5dd740dc49b4.js.map +0 -1
- swh/web/static/js/vault.4eaa8dbf376ebe9cdc7f.js +0 -3
- swh/web/static/js/vault.4eaa8dbf376ebe9cdc7f.js.map +0 -1
- swh/web/static/js/vendors.9fc5b97b8e4691b7272e.js +0 -3
- swh/web/static/js/vendors.9fc5b97b8e4691b7272e.js.map +0 -1
- swh/web/static/js/webapp.c5e37f8f7bfc8bb87ad8.js +0 -3
- /swh/web/static/js/{add_forge_now.e25d1ad2ab6c45e60b67.js.LICENSE.txt → add_forge_now.e85d09463e38c1e19632.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{auth.bd2f475f49caa9f84e99.js.LICENSE.txt → auth.06c697ab58b81d08ebce.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{browse.fc5d5fafca71e03d2add.js.LICENSE.txt → browse.3f22819b69002c8b6407.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{highlightjs.14fc09414685bf90c554.js.LICENSE.txt → highlightjs.516e784a1e62011c7605.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{mailmap.631c53127ba5511ebda7.js.LICENSE.txt → mailmap.de04f685e56eff5b627f.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{pdfjs.40675676ebcbdde8baab.js.LICENSE.txt → pdfjs.018d9890c044b3612ece.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{revision.61c9277f4a4c63df0f45.js.LICENSE.txt → revision.122a31614a5f9abffc3c.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{save_code_now.4211098f5dd740dc49b4.js.LICENSE.txt → save_code_now.d4d8fc47420a4badb683.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{vault.4eaa8dbf376ebe9cdc7f.js.LICENSE.txt → vault.d2ec3dd1d84a8d038a6c.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{webapp.c5e37f8f7bfc8bb87ad8.js.LICENSE.txt → webapp.e93873983e400db67bf8.js.LICENSE.txt} +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/WHEEL +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/licenses/AUTHORS +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/licenses/LICENSE +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/top_level.txt +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see revision.
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.swh=t():(e.swh=e.swh||{},e.swh.revision=t())}(self,function(){return function(){var __webpack_modules__={887:function(e,t,n){var r=n(16993),i=n(11791);e.exports=function(e,t,n,o,a){return new i(r().w(e,t,n,o),a||Promise)},e.exports.__esModule=!0,e.exports.default=e.exports},4373:function(e){e.exports=function(e){var t=Object(e),n=[];for(var r in t)n.unshift(r);return function e(){for(;n.length;)if((r=n.pop())in t)return e.value=r,e.done=!1,e;return e.done=!0,e}},e.exports.__esModule=!0,e.exports.default=e.exports},4633:function(e,t,n){var r=n(25172),i=n(16993),o=n(55869),a=n(887),s=n(11791),l=n(4373),c=n(30579);function u(){"use strict";var t=i(),n=t.m(u),f=(Object.getPrototypeOf?Object.getPrototypeOf(n):n.__proto__).constructor;function d(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))}var p={throw:1,return:2,break:3,continue:3};function h(e){var t,n;return function(r){t||(t={stop:function(){return n(r.a,2)},catch:function(){return r.v},abrupt:function(e,t){return n(r.a,p[e],t)},delegateYield:function(e,i,o){return t.resultName=i,n(r.d,c(e),o)},finish:function(e){return n(r.f,e)}},n=function(e,n,i){r.p=t.prev,r.n=t.next;try{return e(n,i)}finally{t.next=r.n}}),t.resultName&&(t[t.resultName]=r.v,t.resultName=void 0),t.sent=r.v,t.next=r.n;try{return e.call(this,t)}finally{r.p=t.prev,r.n=t.next}}}return(e.exports=u=function(){return{wrap:function(e,n,r,i){return t.w(h(e),n,r,i&&i.reverse())},isGeneratorFunction:d,mark:t.m,awrap:function(e,t){return new r(e,t)},AsyncIterator:s,async:function(e,t,n,r,i){return(d(t)?a:o)(h(e),t,n,r,i)},keys:l,values:c}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=u,e.exports.__esModule=!0,e.exports.default=e.exports},8411:function(){!function(){"use strict";var e=0,t={};function n(r){if(!r)throw new Error("No options passed to Waypoint constructor");if(!r.element)throw new Error("No element option passed to Waypoint constructor");if(!r.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=n.Adapter.extend({},n.defaults,r),this.element=this.options.element,this.adapter=new n.Adapter(this.element),this.callback=r.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=n.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=n.Context.findOrCreateByElement(this.options.context),n.offsetAliases[this.options.offset]&&(this.options.offset=n.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),t[this.key]=this,e+=1}n.prototype.queueTrigger=function(e){this.group.queueTrigger(this,e)},n.prototype.trigger=function(e){this.enabled&&this.callback&&this.callback.apply(this,e)},n.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete t[this.key]},n.prototype.disable=function(){return this.enabled=!1,this},n.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},n.prototype.next=function(){return this.group.next(this)},n.prototype.previous=function(){return this.group.previous(this)},n.invokeAll=function(e){var n=[];for(var r in t)n.push(t[r]);for(var i=0,o=n.length;i<o;i++)n[i][e]()},n.destroyAll=function(){n.invokeAll("destroy")},n.disableAll=function(){n.invokeAll("disable")},n.enableAll=function(){for(var e in n.Context.refreshAll(),t)t[e].enabled=!0;return this},n.refreshAll=function(){n.Context.refreshAll()},n.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},n.viewportWidth=function(){return document.documentElement.clientWidth},n.adapters=[],n.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},n.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=n}(),function(){"use strict";function e(e){window.setTimeout(e,1e3/60)}var t=0,n={},r=window.Waypoint,i=window.onload;function o(e){this.element=e,this.Adapter=r.Adapter,this.adapter=new this.Adapter(e),this.key="waypoint-context-"+t,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},e.waypointContextKey=this.key,n[e.waypointContextKey]=this,t+=1,r.windowContext||(r.windowContext=!0,r.windowContext=new o(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}o.prototype.add=function(e){var t=e.options.horizontal?"horizontal":"vertical";this.waypoints[t][e.key]=e,this.refresh()},o.prototype.checkEmpty=function(){var e=this.Adapter.isEmptyObject(this.waypoints.horizontal),t=this.Adapter.isEmptyObject(this.waypoints.vertical),r=this.element==this.element.window;e&&t&&!r&&(this.adapter.off(".waypoints"),delete n[this.key])},o.prototype.createThrottledResizeHandler=function(){var e=this;function t(){e.handleResize(),e.didResize=!1}this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,r.requestAnimationFrame(t))})},o.prototype.createThrottledScrollHandler=function(){var e=this;function t(){e.handleScroll(),e.didScroll=!1}this.adapter.on("scroll.waypoints",function(){e.didScroll&&!r.isTouch||(e.didScroll=!0,r.requestAnimationFrame(t))})},o.prototype.handleResize=function(){r.Context.refreshAll()},o.prototype.handleScroll=function(){var e={},t={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var n in t){var r=t[n],i=r.newScroll>r.oldScroll?r.forward:r.backward;for(var o in this.waypoints[n]){var a=this.waypoints[n][o];if(null!==a.triggerPoint){var s=r.oldScroll<a.triggerPoint,l=r.newScroll>=a.triggerPoint;(s&&l||!s&&!l)&&(a.queueTrigger(i),e[a.group.id]=a.group)}}}for(var c in e)e[c].flushTriggers();this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}},o.prototype.innerHeight=function(){return this.element==this.element.window?r.viewportHeight():this.adapter.innerHeight()},o.prototype.remove=function(e){delete this.waypoints[e.axis][e.key],this.checkEmpty()},o.prototype.innerWidth=function(){return this.element==this.element.window?r.viewportWidth():this.adapter.innerWidth()},o.prototype.destroy=function(){var e=[];for(var t in this.waypoints)for(var n in this.waypoints[t])e.push(this.waypoints[t][n]);for(var r=0,i=e.length;r<i;r++)e[r].destroy()},o.prototype.refresh=function(){var e,t=this.element==this.element.window,n=t?void 0:this.adapter.offset(),i={};for(var o in this.handleScroll(),e={horizontal:{contextOffset:t?0:n.left,contextScroll:t?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:t?0:n.top,contextScroll:t?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}}){var a=e[o];for(var s in this.waypoints[o]){var l,c,u,f,d=this.waypoints[o][s],p=d.options.offset,h=d.triggerPoint,_=0,w=null==h;d.element!==d.element.window&&(_=d.adapter.offset()[a.offsetProp]),"function"==typeof p?p=p.apply(d):"string"==typeof p&&(p=parseFloat(p),d.options.offset.indexOf("%")>-1&&(p=Math.ceil(a.contextDimension*p/100))),l=a.contextScroll-a.contextOffset,d.triggerPoint=Math.floor(_+l-p),c=h<a.oldScroll,u=d.triggerPoint>=a.oldScroll,f=!c&&!u,!w&&(c&&u)?(d.queueTrigger(a.backward),i[d.group.id]=d.group):(!w&&f||w&&a.oldScroll>=d.triggerPoint)&&(d.queueTrigger(a.forward),i[d.group.id]=d.group)}}return r.requestAnimationFrame(function(){for(var e in i)i[e].flushTriggers()}),this},o.findOrCreateByElement=function(e){return o.findByElement(e)||new o(e)},o.refreshAll=function(){for(var e in n)n[e].refresh()},o.findByElement=function(e){return n[e.waypointContextKey]},window.onload=function(){i&&i(),o.refreshAll()},r.requestAnimationFrame=function(t){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||e).call(window,t)},r.Context=o}(),function(){"use strict";function e(e,t){return e.triggerPoint-t.triggerPoint}function t(e,t){return t.triggerPoint-e.triggerPoint}var n={vertical:{},horizontal:{}},r=window.Waypoint;function i(e){this.name=e.name,this.axis=e.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}i.prototype.add=function(e){this.waypoints.push(e)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var n in this.triggerQueues){var r=this.triggerQueues[n],i="up"===n||"left"===n;r.sort(i?t:e);for(var o=0,a=r.length;o<a;o+=1){var s=r[o];(s.options.continuous||o===r.length-1)&&s.trigger([n])}}this.clearTriggerQueues()},i.prototype.next=function(t){this.waypoints.sort(e);var n=r.Adapter.inArray(t,this.waypoints);return n===this.waypoints.length-1?null:this.waypoints[n+1]},i.prototype.previous=function(t){this.waypoints.sort(e);var n=r.Adapter.inArray(t,this.waypoints);return n?this.waypoints[n-1]:null},i.prototype.queueTrigger=function(e,t){this.triggerQueues[t].push(e)},i.prototype.remove=function(e){var t=r.Adapter.inArray(e,this.waypoints);t>-1&&this.waypoints.splice(t,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(e){return n[e.axis][e.name]||new i(e)},r.Group=i}(),function(){"use strict";var e=window.jQuery,t=window.Waypoint;function n(t){this.$element=e(t)}e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,t){n.prototype[t]=function(){var e=Array.prototype.slice.call(arguments);return this.$element[t].apply(this.$element,e)}}),e.each(["extend","inArray","isEmptyObject"],function(t,r){n[r]=e[r]}),t.adapters.push({name:"jquery",Adapter:n}),t.Adapter=n}(),function(){"use strict";var e=window.Waypoint;function t(t){return function(){var n=[],r=arguments[0];return t.isFunction(arguments[0])&&((r=t.extend({},arguments[1])).handler=arguments[0]),this.each(function(){var i=t.extend({},r,{element:this});"string"==typeof i.context&&(i.context=t(this).closest(i.context)[0]),n.push(new e(i))}),n}}window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}()},8545:function(e,t,n){"use strict";n.d(t,{Iq:function(){return i},lY:function(){return r}});n(54756),n(18987);function r(e,t){var n="/static/"+e;return n.startsWith("/")&&t&&(n=t+n),n}function i(){history.replaceState("",document.title,window.location.pathname+window.location.search)}},9458:function(module){module.exports=function anonymous(locals,escapeFn,include,rethrow){escapeFn=escapeFn||function(e){return null==e?"":String(e).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(e){return _ENCODE_HTML_RULES[e]||e}var __output="";function __append(e){null!=e&&(__output+=e)}with(locals||{})__append('\n<div id="diff_'),__append(escapeFn(diffData.id)),__append('" class="card swh-file-diff-panel">\n <div class="card-header swh-background-gray border-bottom-0">\n <a data-bs-toggle="collapse" href="#diff_'),__append(escapeFn(diffData.id)),__append('_content">\n <div class="float-start swh-title-color">\n <strong>'),__append(escapeFn(diffPanelTitle)),__append('</strong>\n </div>\n </a>\n <div class="ms-auto float-end">\n <div class="btn-group diff-styles" role="group" style="visibility: hidden;">\n <input type="radio" class="btn-check" name="diffs-switch-'),__append(escapeFn(diffData.id)),__append('" id="unified-'),__append(escapeFn(diffData.id)),__append('" autocomplete="off" checked="checked">\n <label class="btn btn-secondary btn-sm unified-diff-button" id="unified-'),__append(escapeFn(diffData.id)),__append('-label" for="unified-'),__append(escapeFn(diffData.id)),__append('" onclick="swh.revision.showUnifiedDiff(\''),__append(escapeFn(diffData.id)),__append('\')">\n Unified\n </label>\n <input type="radio" class="btn-check" name="diffs-switch-'),__append(escapeFn(diffData.id)),__append('" id="side-by-side-'),__append(escapeFn(diffData.id)),__append('" autocomplete="off">\n <label class="btn btn-secondary btn-sm split-diff-button" for="side-by-side-'),__append(escapeFn(diffData.id)),__append('" id="side-by-side-'),__append(escapeFn(diffData.id)),__append('-label" onclick="swh.revision.showSplitDiff(\''),__append(escapeFn(diffData.id)),__append('\')">\n Side-by-side\n </label>\n </div>\n <a href="'),__append(escapeFn(diffData.content_url)),__append('" class="btn btn-secondary btn-sm" role="button">View file</a>\n </div>\n <div class="clearfix"></div>\n </div>\n <div id="diff_'),__append(escapeFn(diffData.id)),__append('_content" class="collapse show">\n <div class="swh-diff-loading text-center" id="'),__append(escapeFn(diffData.id)),__append('-loading" style="visibility: hidden;">\n <img src="'),__append(escapeFn(swhSpinnerSrc)),__append('">\n <p>Loading diff ...</p>\n </div>\n <div class="highlightjs swh-content" style="display: none;" id="'),__append(escapeFn(diffData.id)),__append('-highlightjs">\n <div id="'),__append(escapeFn(diffData.id)),__append('-unified-diff">\n <pre><code class="'),__append(escapeFn(diffData.id)),__append('" id="'),__append(escapeFn(diffData.id)),__append('"></code></pre>\n </div>\n <div style="width: 100%; display: none;" id="'),__append(escapeFn(diffData.id)),__append('-split-diff">\n <pre class="float-start" style="width: 50%;"><code class="'),__append(escapeFn(diffData.id)),__append('" id="'),__append(escapeFn(diffData.id)),__append('-from"></code></pre>\n <pre style="width: 50%;"><code class="'),__append(escapeFn(diffData.id)),__append('" id="'),__append(escapeFn(diffData.id)),__append('-to"></code></pre>\n </div>\n </div>\n </div>\n</div>');return __output}},10467:function(e,t,n){"use strict";function r(e,t,n,r,i,o,a){try{var s=e[o](a),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise(function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,l,"next",e)}function l(e){r(a,i,o,s,l,"throw",e)}s(void 0)})}}n.d(t,{A:function(){return i}})},10713:function(e,t,n){"use strict";n.d(t,{By:function(){return Q},Fu:function(){return F},R1:function(){return j},jV:function(){return P},l9:function(){return q},ln:function(){return L},tB:function(){return U},to:function(){return M},xs:function(){return R}});var r,i=n(10467),o=n(54756),a=n.n(o),s=(n(8411),n(23717)),l=n(8545),c=n(9458),u=n.n(c),f=null,d=0,p=0,h=0,_=0,w={},m={},v=null,g=null,y={},b=null,x="#swh-revision-changes",k="Files";function S(e){var t=$(e).offset().top,n=t+$(e).outerHeight(),r=$(window).scrollTop(),i=r+$(window).height();return n>r&&t<i}function j(e,t,n){for(var r=y[e],i=A(t),o=A(n),a="",s=0;s<r-i.length;++s)a+=" ";a+=i,a+=" ";for(var l=0;l<r-o.length;++l)a+=" ";return a+=o}function T(e){var t,n;if(e.startsWith("@@")){var r=new RegExp(/^@@ -(\d+),(\d+) \+(\d+),(\d+) @@$/gm),i=new RegExp(/^@@ -(\d+) \+(\d+),(\d+) @@$/gm),o=new RegExp(/^@@ -(\d+),(\d+) \+(\d+) @@$/gm),a=new RegExp(/^@@ -(\d+) \+(\d+) @@$/gm),s=r.exec(e),l=i.exec(e),c=o.exec(e),u=a.exec(e);s?(t=parseInt(s[1])-1,n=parseInt(s[3])-1):l?(t=parseInt(l[1])-1,n=parseInt(l[2])-1):c?(t=parseInt(c[1])-1,n=parseInt(c[3])-1):u&&(t=parseInt(u[1])-1,n=parseInt(u[2])-1)}return void 0!==t?[t,n]:null}function C(e){return e?parseInt(e):0}function A(e){return e?e.toString():""}function F(e,t,n){var r;if(t||n){var i=C(e.trim());t?r=[i,0]:n&&(r=[0,i])}else(r=e.replace(/[ ]+/g," ").split(" ")).length>2&&r.shift(),r=r.map(function(e){return C(e)});return r}function q(e,t,n){var r="";return r+="F"+(e[0]||0),r+="T"+(e[1]||0),r+="-F"+(t[0]||0),r+="T"+(t[1]||0),r+=n?"-unified":"-split"}function P(e){var t=/F([0-9]+)T([0-9]+)-F([0-9]+)T([0-9]+)-([a-z]+)/.exec(e);return 6===t.length?{startLines:[parseInt(t[1]),parseInt(t[2])],endLines:[parseInt(t[3]),parseInt(t[4])],unified:"unified"===t[5]}:null}function D(e,t){var n=$("#"+e+' .hljs-ln-line[data-line-number="'+t+'"]'),r=$("#"+e+' .hljs-ln-numbers[data-line-number="'+t+'"]');return r.css("color","black"),r.css("font-weight","bold"),n.css("background-color","#fdf3da"),n.css("mix-blend-mode","multiply"),n}function O(e){void 0===e&&(e=!0),e&&(b=null,v=null,g=null),$(".hljs-ln-line[data-line-number]").css("background-color","initial"),$(".hljs-ln-line[data-line-number]").css("mix-blend-mode","initial"),$(".hljs-ln-numbers[data-line-number]").css("color","#aaa"),$(".hljs-ln-numbers[data-line-number]").css("font-weight","initial"),"Changes"===k&&window.location.hash!==x&&window.history.replaceState("",document.title,window.location.pathname+window.location.search+x)}function E(e,t,n,r){var i;if(r){var o=j(e,t[0],t[1]),a=j(e,n[0],n[1]),s=$("#"+e+' .hljs-ln-line[data-line-number="'+o+'"]'),l=$("#"+e+' .hljs-ln-line[data-line-number="'+a+'"]');if($(l).position().top<$(s).position().top){var c=[a,o];o=c[0],a=c[1],i=l}else i=s;for(var u=D(e,o),f=$(u).closest("tr"),d=$(f).children(".hljs-ln-line").data("line-number").toString();d!==a;)d.trim()&&D(e,d),f=$(f).next(),d=$(f).children(".hljs-ln-line").data("line-number").toString();D(e,a)}else if(t[0]&&n[0]){for(var p=Math.min(t[0],n[0]),h=Math.max(t[0],n[0]),_=p;_<=h;++_)D(e+"-from",_);i=$("#"+e+'-from .hljs-ln-line[data-line-number="'+p+'"]')}else if(t[1]&&n[1]){for(var w=Math.min(t[1],n[1]),m=Math.max(t[1],n[1]),v=w;v<=m;++v)D(e+"-to",v);i=$("#"+e+'-to .hljs-ln-line[data-line-number="'+w+'"]')}else{var g,y;t[0]&&n[1]?(g=t[0],y=n[1]):(g=n[0],y=t[1]);var b=$("#"+e+'-from .hljs-ln-line[data-line-number="'+g+'"]'),x=$("#"+e+'-to .hljs-ln-line[data-line-number="'+y+'"]'),k=$(b).position().top<$(x).position().top;i=k?b:x;for(var S=$("#"+e+"-from tr").first(),T=$(S).children(".hljs-ln-line").data("line-number"),C=$("#"+e+"-to tr").first(),A=$(C).children(".hljs-ln-line").data("line-number"),F=!1;k&&T===g?F=!0:k||A!==y||(F=!0),F&&T&&D(e+"-from",T),F&&A&&D(e+"-to",A),!(k&&A===y||!k&&T===g);)S=$(S).next(),T=$(S).children(".hljs-ln-line").data("line-number"),C=$(C).next(),A=$(C).children(".hljs-ln-line").data("line-number")}var P=q(t,n,r);return window.location.hash="diff_"+e+"+"+P,i}function M(e){$("#"+e+"-split-diff").css("display","none"),$("#"+e+"-unified-diff").css("display","block")}function L(e){$("#"+e+"-unified-diff").css("display","none"),$("#"+e+"-split-diff").css("display","block")}function R(e,t){return N.apply(this,arguments)}function N(){return(N=(0,i.A)(a().mark(function e(t,n){var i,o,s,l,c,u,d,m,v,g,b,x,k;return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(i=function(e,t){$(e).attr("data-line-number",t||""),$(e).children().attr("data-line-number",t||""),$(e).siblings().attr("data-line-number",t||"")},-1!==t.indexOf("force=true")||!w.hasOwnProperty(n)){e.next=1;break}return e.abrupt("return");case 1:return w[n]=!0,$("#"+n+"-loading").css("visibility","visible"),$("#"+n+"-loading").css("display","block"),$("#"+n+"-highlightjs").css("display","none"),e.next=2,fetch(t);case 2:return o=e.sent,e.next=3,o.json();case 3:s=e.sent,++p===f.length&&$("#swh-compute-all-diffs").addClass("active"),0===s.diff_str.indexOf("Large diff")?($("#"+n)[0].innerHTML=s.diff_str+'<br/><button class="btn btn-secondary btn-sm" type="button"\n onclick="swh.revision.computeDiff(\''+t+"&force=true', '"+n+"')\">Request diff</button>",W(n)):0!==s.diff_str.indexOf("@@")?($("#"+n).text(s.diff_str),W(n)):($("."+n).removeClass("plaintext"),$("."+n).addClass(s.language),$("#"+n).text(s.diff_str),$("#"+n).each(function(e,t){hljs.highlightElement(t),hljs.lineNumbersElementSync(t)}),l="",c="",u=[],d=[],m=[],v=0,g="",b="",x=0,$("#"+n+" .hljs-ln-numbers").each(function(e,t){var n=t.nextSibling.innerText,r=T(n),i="",o="";if(r)l=r[0],c=r[1],x=0,g+=n+"\n",b+=n+"\n",d.push(""),m.push("");else if(n.length>0&&"-"===n[0])i=(l+=1).toString(),d.push(i),++_,g+=n+"\n",++x;else if(n.length>0&&"+"===n[0])o=(c+=1).toString(),m.push(o),++h,b+=n+"\n",--x;else{c+=1,i=(l+=1).toString(),o=c.toString();for(var a=0;a<Math.abs(x);++a)x>0?(b+="\n",m.push("")):(g+="\n",d.push(""));x=0,g+=n+"\n",b+=n+"\n",m.push(o),d.push(i)}l||(i=""),c||(o=""),u[e]=[i,o],v=Math.max(v,i.length),v=Math.max(v,o.length)}),y[n]=v,$("#"+n+"-from").text(g),$("#"+n+"-to").text(b),$("#"+n+"-from, #"+n+"-to").each(function(e,t){hljs.highlightElement(t),hljs.lineNumbersElementSync(t)}),$("."+n+" .hljs-ln-numbers").each(function(e,t){var n=t.nextSibling.innerText;if(n.startsWith("@@")){$(t).parent().addClass("swh-diff-lines-info");var r=$(t).parent().find(".hljs-ln-code .hljs-ln-line").text();$(t).parent().find(".hljs-ln-code .hljs-ln-line").children().remove(),$(t).parent().find(".hljs-ln-code .hljs-ln-line").text(""),$(t).parent().find(".hljs-ln-code .hljs-ln-line").append('<span class="hljs-meta">'+r+"</span>")}else n.length>0&&"-"===n[0]?$(t).parent().addClass("swh-diff-removed-line"):n.length>0&&"+"===n[0]&&$(t).parent().addClass("swh-diff-added-line")}),$("#"+n+" .hljs-ln-numbers").each(function(e,t){var r=j(n,u[e][0],u[e][1]);i(t,r)}),$("#"+n+"-from .hljs-ln-numbers").each(function(e,t){i(t,d[e])}),$("#"+n+"-to .hljs-ln-numbers").each(function(e,t){i(t,m[e])}),$("."+n+" .hljs-ln-code").each(function(e,t){if(t.firstChild){if("#text"!==t.firstChild.nodeName){var n=t.firstChild.innerHTML;if("-"===n[0]||"+"===n[0]){t.firstChild.innerHTML=n.substr(1);var r=document.createTextNode(n[0]);$(t).prepend(r)}}$(t).contents().filter(function(e,t){return 3===t.nodeType}).each(function(e,n){var r="[swh-no-nl-marker]";-1!==n.textContent.indexOf(r)&&(n.textContent=n.textContent.replace(r,""),$(t).append($('<span class="no-nl-marker" style="color: red;" title="No newline at end of file"><i class="mdi mdi-rotate-90 mdi-cancel" aria-hidden="true"><i class="mdi mdi-keyboard-return" aria-hidden="true"></span>')))})}}),0!==s.diff_str.indexOf("Diffs are not generated for non textual content")&&($("#diff_"+n+" .diff-styles").css("visibility","visible"),$("#diff_"+n+" .diff-styles").children().first().prop("checked",!0)),W(n),r&&-1!==r.diffPanelId.indexOf(n)&&(r.unified||L(n),k=E(n,r.startLines,r.endLines,r.unified),$("html, body").animate({scrollTop:k.offset().top-50},{duration:500})));case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function W(e){$("#"+e+"-loading").css("display","none"),$("#"+e+"-highlightjs").css("display","block"),$("#swh-revision-lines-added").text(h+" additions"),$("#swh-revision-lines-deleted").text(_+" deletions"),$("#swh-nb-diffs-computed").text(p),Waypoint.refreshAll()}function I(){$(".swh-file-diff-panel").each(function(e,t){if(S(t)){var n=t.id.replace("diff_","");R(m[n],n)}})}function H(e){var t=e.path;return"rename"===e.type&&(t=e.from_path+" → "+e.to_path),u()({diffData:e,diffPanelTitle:t,swhSpinnerSrc:s.Q$})}function z(){for(var e=0;e<f.length;++e){var t=f[e];$("#diff_"+t.id).waypoint({handler:function(){if(S(this.element)){var e=this.element.id.replace("diff_","");R(m[e],e),this.destroy()}},offset:"100%"}),$("#diff_"+t.id).waypoint({handler:function(){if(S(this.element)){var e=this.element.id.replace("diff_","");R(m[e],e),this.destroy()}},offset:function(){return-$(this.element).height()}})}Waypoint.refreshAll()}function B(e,t){void 0===t&&(t=!0),Waypoint.disableAll(),$("html, body").animate({scrollTop:$(e).offset().top},{duration:500,complete:function(){t&&(window.location.hash=e),Waypoint.enableAll(),I()}})}function U(e){for(var t in $(e.currentTarget).addClass("active"),m)m.hasOwnProperty(t)&&R(m[t],t);e.stopPropagation()}function Q(e,t){return G.apply(this,arguments)}function G(){return G=(0,i.A)(a().mark(function e(t,o){return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,n.e(940).then(n.bind(n,49931));case 1:$(document).on("shown.bs.tab",'a[data-bs-toggle="tab"]',function(){var e=(0,i.A)(a().mark(function e(t){var n,i,s,c,u;return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("Changes"!==(k=t.currentTarget.text.trim())){e.next=4;break}if(window.location.hash=x,$("#readme-panel").css("display","none"),!f){e.next=1;break}return e.abrupt("return");case 1:return e.next=2,fetch(o);case 2:return n=e.sent,e.next=3,n.json();case 3:for(i=e.sent,f=i.changes,d=i.total_nb_changes,s=d+" changed file",1!==d&&(s+="s"),$("#swh-revision-changed-files").text(s),$("#swh-total-nb-diffs").text(f.length),$("#swh-revision-changes-list pre")[0].innerHTML=i.changes_msg,$("#swh-revision-changes-loading").css("display","none"),$("#swh-revision-changes-list pre").css("display","block"),$("#swh-compute-all-diffs").css("visibility","visible"),$("#swh-revision-changes-list").removeClass("in"),d>f.length&&($("#swh-too-large-revision-diff").css("display","block"),$("#swh-nb-loaded-diffs").text(f.length)),c=0;c<f.length;++c)u=f[c],m[u.id]=u.diff_url,$("#swh-revision-diffs").append(H(u));z(),I(),r&&B(r.diffPanelId,!1),e.next=5;break;case 4:"Files"===k&&((0,l.Iq)(),$("#readme-panel").css("display","block"));case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()),$(document).ready(function(){t.length>0?$("#swh-revision-message").addClass("in"):$("#swh-collapse-revision-message").attr("data-bs-toggle",""),$('#swh-revision-changes-list a[href^="#"], #back-to-top a[href^="#"]').click(function(e){return B($.attr(e.currentTarget,"href")),!1}),$("body").click(function(e){if("Changes"===k)if(e.target.classList.contains("hljs-ln-n")){var t=$(e.target).closest("code").prop("id"),n=-1!==t.indexOf("-from"),r=-1!==t.indexOf("-to"),i=$(e.target).data("line-number").toString(),o=t.replace("-from","").replace("-to","");e.shiftKey&&o===b&&i.trim()||(O(),b=o),o===b&&i.trim()&&(e.shiftKey?v&&(O(!1),g=F(i,n,r),E(o,v,g,!n&&!r)):E(o,v=F(i,n,r),v,!n&&!r))}else O()});var e=window.location.hash;if(e){var n=e.split("+");2===n.length&&(r=P(n[1]))&&(r.diffPanelId=n[0],$('.nav-tabs a[href="'+x+'"]').tab("show")),e===x&&$('.nav-tabs a[href="'+x+'"]').tab("show")}});case 2:case"end":return e.stop()}},e)})),G.apply(this,arguments)}},11791:function(e,t,n){var r=n(25172),i=n(75546);e.exports=function e(t,n){function o(e,i,a,s){try{var l=t[e](i),c=l.value;return c instanceof r?n.resolve(c.v).then(function(e){o("next",e,a,s)},function(e){o("throw",e,a,s)}):n.resolve(c).then(function(e){l.value=e,a(l)},function(e){return o("throw",e,a,s)})}catch(e){s(e)}}var a;this.next||(i(e.prototype),i(e.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),i(this,"_invoke",function(e,t,r){function i(){return new n(function(t,n){o(e,r,t,n)})}return a=a?a.then(i,i):i()},!0)},e.exports.__esModule=!0,e.exports.default=e.exports},16993:function(e,t,n){var r=n(75546);function i(){var t,n,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.toStringTag||"@@toStringTag";function l(e,i,o,a){var s=i&&i.prototype instanceof u?i:u,l=Object.create(s.prototype);return r(l,"_invoke",function(e,r,i){var o,a,s,l=0,u=i||[],f=!1,d={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,n){return o=e,a=0,s=t,d.n=n,c}};function p(e,r){for(a=e,s=r,n=0;!f&&l&&!i&&n<u.length;n++){var i,o=u[n],p=d.p,h=o[2];e>3?(i=h===r)&&(s=o[(a=o[4])?5:(a=3,3)],o[4]=o[5]=t):o[0]<=p&&((i=e<2&&p<o[1])?(a=0,d.v=r,d.n=o[1]):p<h&&(i=e<3||o[0]>r||r>h)&&(o[4]=e,o[5]=r,d.n=h,a=0))}if(i||e>1)return c;throw f=!0,r}return function(i,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&p(u,h),a=u,s=h;(n=a<2?t:s)||!f;){o||(a?a<3?(a>1&&(d.n=-1),p(a,s)):d.n=s:d.v=s);try{if(l=2,o){if(a||(i="next"),n=o[i]){if(!(n=n.call(o,s)))throw TypeError("iterator result is not an object");if(!n.done)return n;s=n.value,a<2&&(a=0)}else 1===a&&(n=o.return)&&n.call(o),a<2&&(s=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=t}else if((n=(f=d.n<0)?s:e.call(r,d))!==c)break}catch(e){o=t,a=1,s=e}finally{l=1}}return{value:n,done:f}}}(e,o,a),!0),l}var c={};function u(){}function f(){}function d(){}n=Object.getPrototypeOf;var p=[][a]?n(n([][a]())):(r(n={},a,function(){return this}),n),h=d.prototype=u.prototype=Object.create(p);function _(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,d):(e.__proto__=d,r(e,s,"GeneratorFunction")),e.prototype=Object.create(h),e}return f.prototype=d,r(h,"constructor",d),r(d,"constructor",f),f.displayName="GeneratorFunction",r(d,s,"GeneratorFunction"),r(h),r(h,s,"Generator"),r(h,a,function(){return this}),r(h,"toString",function(){return"[object Generator]"}),(e.exports=i=function(){return{w:l,m:_}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports},18987:function(e,t,n){"use strict";function r(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}(function e(t,n){function i(e,i,o){if("undefined"!=typeof document){"number"==typeof(o=r({},n,o)).expires&&(o.expires=new Date(Date.now()+864e5*o.expires)),o.expires&&(o.expires=o.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var a="";for(var s in o)o[s]&&(a+="; "+s,!0!==o[s]&&(a+="="+o[s].split(";")[0]));return document.cookie=e+"="+t.write(i,e)+a}}return Object.create({set:i,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var n=document.cookie?document.cookie.split("; "):[],r={},i=0;i<n.length;i++){var o=n[i].split("="),a=o.slice(1).join("=");try{var s=decodeURIComponent(o[0]);if(r[s]=t.read(a,s),e===s)break}catch(e){}}return e?r[e]:r}},remove:function(e,t){i(e,"",r({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,r({},this.attributes,t))},withConverter:function(t){return e(r({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})})({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})},23717:function(e,t,n){"use strict";n.d(t,{Q$:function(){return r}});var r=(0,n(8545).lY)("img/swh-spinner.gif")},25172:function(e){e.exports=function(e,t){this.v=e,this.k=t},e.exports.__esModule=!0,e.exports.default=e.exports},25954:function(e,t,n){"use strict";function r(e){var t=new URLSearchParams(window.location.search);$(e.target).val()?t.set("revs_ordering",$(e.target).val()):t.has("revs_ordering")&&t.delete("revs_ordering"),window.location.search=t.toString()}function i(){$(document).ready(function(){var e=new URLSearchParams(window.location.search).get("revs_ordering");e&&$(':input[value="'+e+'"]').prop("checked",!0)})}n.d(t,{_:function(){return r},z:function(){return i}})},30579:function(e,t,n){var r=n(73738).default;e.exports=function(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(r(e)+" is not iterable")},e.exports.__esModule=!0,e.exports.default=e.exports},54756:function(e,t,n){var r=n(4633)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},55869:function(e,t,n){var r=n(887);e.exports=function(e,t,n,i,o){var a=r(e,t,n,i,o);return a.next().then(function(e){return e.done?e.value:a.next()})},e.exports.__esModule=!0,e.exports.default=e.exports},73738:function(e){function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},75546:function(e){function t(n,r,i,o){var a=Object.defineProperty;try{a({},"",{})}catch(n){a=0}e.exports=t=function(e,n,r,i){function o(n,r){t(e,n,function(e){return this._invoke(n,r,e)})}n?a?a(e,n,{value:r,enumerable:!i,configurable:!i,writable:!i}):e[n]=r:(o("next",0),o("throw",1),o("return",2))},e.exports.__esModule=!0,e.exports.default=e.exports,t(n,r,i,o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},__webpack_module_cache__={},inProgress,dataWebpackPrefix;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.f={},__webpack_require__.e=function(e){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(t,n){return __webpack_require__.f[n](e,t),t},[]))},__webpack_require__.u=function(e){return"js/highlightjs.14fc09414685bf90c554.js"},__webpack_require__.miniCssF=function(e){return"css/highlightjs.0c1b181eb006699a4c3e.css"},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},inProgress={},dataWebpackPrefix="swh:",__webpack_require__.l=function(e,t,n,r){if(inProgress[e])inProgress[e].push(t);else{var i,o;if(void 0!==n)for(var a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var l=a[s];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==dataWebpackPrefix+n){i=l;break}}i||(o=!0,(i=document.createElement("script")).charset="utf-8",__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-webpack",dataWebpackPrefix+n),i.src=e),inProgress[e]=[t];var c=function(t,n){i.onerror=i.onload=null,clearTimeout(u);var r=inProgress[e];if(delete inProgress[e],i.parentNode&&i.parentNode.removeChild(i),r&&r.forEach(function(e){return e(n)}),t)return t(n)},u=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),o&&document.head.appendChild(i)}},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.p="/static/",function(){if("undefined"!=typeof document){var e=function(e){return new Promise(function(t,n){var r=__webpack_require__.miniCssF(e),i=__webpack_require__.p+r;if(function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var i=(a=n[r]).getAttribute("data-href")||a.getAttribute("href");if("stylesheet"===a.rel&&(i===e||i===t))return a}var o=document.getElementsByTagName("style");for(r=0;r<o.length;r++){var a;if((i=(a=o[r]).getAttribute("data-href"))===e||i===t)return a}}(r,i))return t();!function(e,t,n,r,i){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css",__webpack_require__.nc&&(o.nonce=__webpack_require__.nc),o.onerror=o.onload=function(n){if(o.onerror=o.onload=null,"load"===n.type)r();else{var a=n&&n.type,s=n&&n.target&&n.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+a+": "+s+")");l.name="ChunkLoadError",l.code="CSS_CHUNK_LOAD_FAILED",l.type=a,l.request=s,o.parentNode&&o.parentNode.removeChild(o),i(l)}},o.href=t,n?n.parentNode.insertBefore(o,n.nextSibling):document.head.appendChild(o)}(e,i,null,t,n)})},t={552:0};__webpack_require__.f.miniCss=function(n,r){t[n]?r.push(t[n]):0!==t[n]&&{940:1}[n]&&r.push(t[n]=e(n).then(function(){t[n]=0},function(e){throw delete t[n],e}))}}}(),function(){var e={552:0};__webpack_require__.f.j=function(t,n){var r=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(function(n,i){r=e[t]=[n,i]});n.push(r[2]=i);var o=__webpack_require__.p+__webpack_require__.u(t),a=new Error;__webpack_require__.l(o,function(n){if(__webpack_require__.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,r[1](a)}},"chunk-"+t,t)}};var t=function(t,n){var r,i,o=n[0],a=n[1],s=n[2],l=0;if(o.some(function(t){return 0!==e[t]})){for(r in a)__webpack_require__.o(a,r)&&(__webpack_require__.m[r]=a[r]);if(s)s(__webpack_require__)}for(t&&t(n);l<o.length;l++)i=o[l],__webpack_require__.o(e,i)&&e[i]&&e[i][0](),e[i]=0},n=self.webpackChunkswh=self.webpackChunkswh||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var __webpack_exports__={};return function(){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{computeAllDiffs:function(){return e.tB},computeDiff:function(){return e.xs},formatDiffLineNumbers:function(){return e.R1},fragmentToSelectedDiffLines:function(){return e.jV},initRevisionDiff:function(){return e.By},initRevisionsLog:function(){return t.z},parseDiffLineNumbers:function(){return e.Fu},revsOrderingTypeClicked:function(){return t._},selectedDiffLinesToFragment:function(){return e.l9},showSplitDiff:function(){return e.ln},showUnifiedDiff:function(){return e.to}});var e=__webpack_require__(10713),t=__webpack_require__(25954)}(),__webpack_exports__}()});
|
|
3
|
-
//# sourceMappingURL=revision.
|
|
1
|
+
/*! For license information please see revision.122a31614a5f9abffc3c.js.LICENSE.txt */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.swh=t():(e.swh=e.swh||{},e.swh.revision=t())}(self,function(){return function(){var __webpack_modules__={887:function(e,t,n){var r=n(16993),i=n(11791);e.exports=function(e,t,n,o,a){return new i(r().w(e,t,n,o),a||Promise)},e.exports.__esModule=!0,e.exports.default=e.exports},4373:function(e){e.exports=function(e){var t=Object(e),n=[];for(var r in t)n.unshift(r);return function e(){for(;n.length;)if((r=n.pop())in t)return e.value=r,e.done=!1,e;return e.done=!0,e}},e.exports.__esModule=!0,e.exports.default=e.exports},4633:function(e,t,n){var r=n(25172),i=n(16993),o=n(55869),a=n(887),s=n(11791),l=n(4373),c=n(30579);function u(){"use strict";var t=i(),n=t.m(u),f=(Object.getPrototypeOf?Object.getPrototypeOf(n):n.__proto__).constructor;function d(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))}var p={throw:1,return:2,break:3,continue:3};function h(e){var t,n;return function(r){t||(t={stop:function(){return n(r.a,2)},catch:function(){return r.v},abrupt:function(e,t){return n(r.a,p[e],t)},delegateYield:function(e,i,o){return t.resultName=i,n(r.d,c(e),o)},finish:function(e){return n(r.f,e)}},n=function(e,n,i){r.p=t.prev,r.n=t.next;try{return e(n,i)}finally{t.next=r.n}}),t.resultName&&(t[t.resultName]=r.v,t.resultName=void 0),t.sent=r.v,t.next=r.n;try{return e.call(this,t)}finally{r.p=t.prev,r.n=t.next}}}return(e.exports=u=function(){return{wrap:function(e,n,r,i){return t.w(h(e),n,r,i&&i.reverse())},isGeneratorFunction:d,mark:t.m,awrap:function(e,t){return new r(e,t)},AsyncIterator:s,async:function(e,t,n,r,i){return(d(t)?a:o)(h(e),t,n,r,i)},keys:l,values:c}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=u,e.exports.__esModule=!0,e.exports.default=e.exports},8411:function(){!function(){"use strict";var e=0,t={};function n(r){if(!r)throw new Error("No options passed to Waypoint constructor");if(!r.element)throw new Error("No element option passed to Waypoint constructor");if(!r.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=n.Adapter.extend({},n.defaults,r),this.element=this.options.element,this.adapter=new n.Adapter(this.element),this.callback=r.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=n.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=n.Context.findOrCreateByElement(this.options.context),n.offsetAliases[this.options.offset]&&(this.options.offset=n.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),t[this.key]=this,e+=1}n.prototype.queueTrigger=function(e){this.group.queueTrigger(this,e)},n.prototype.trigger=function(e){this.enabled&&this.callback&&this.callback.apply(this,e)},n.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete t[this.key]},n.prototype.disable=function(){return this.enabled=!1,this},n.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},n.prototype.next=function(){return this.group.next(this)},n.prototype.previous=function(){return this.group.previous(this)},n.invokeAll=function(e){var n=[];for(var r in t)n.push(t[r]);for(var i=0,o=n.length;i<o;i++)n[i][e]()},n.destroyAll=function(){n.invokeAll("destroy")},n.disableAll=function(){n.invokeAll("disable")},n.enableAll=function(){for(var e in n.Context.refreshAll(),t)t[e].enabled=!0;return this},n.refreshAll=function(){n.Context.refreshAll()},n.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},n.viewportWidth=function(){return document.documentElement.clientWidth},n.adapters=[],n.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},n.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=n}(),function(){"use strict";function e(e){window.setTimeout(e,1e3/60)}var t=0,n={},r=window.Waypoint,i=window.onload;function o(e){this.element=e,this.Adapter=r.Adapter,this.adapter=new this.Adapter(e),this.key="waypoint-context-"+t,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},e.waypointContextKey=this.key,n[e.waypointContextKey]=this,t+=1,r.windowContext||(r.windowContext=!0,r.windowContext=new o(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}o.prototype.add=function(e){var t=e.options.horizontal?"horizontal":"vertical";this.waypoints[t][e.key]=e,this.refresh()},o.prototype.checkEmpty=function(){var e=this.Adapter.isEmptyObject(this.waypoints.horizontal),t=this.Adapter.isEmptyObject(this.waypoints.vertical),r=this.element==this.element.window;e&&t&&!r&&(this.adapter.off(".waypoints"),delete n[this.key])},o.prototype.createThrottledResizeHandler=function(){var e=this;function t(){e.handleResize(),e.didResize=!1}this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,r.requestAnimationFrame(t))})},o.prototype.createThrottledScrollHandler=function(){var e=this;function t(){e.handleScroll(),e.didScroll=!1}this.adapter.on("scroll.waypoints",function(){e.didScroll&&!r.isTouch||(e.didScroll=!0,r.requestAnimationFrame(t))})},o.prototype.handleResize=function(){r.Context.refreshAll()},o.prototype.handleScroll=function(){var e={},t={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var n in t){var r=t[n],i=r.newScroll>r.oldScroll?r.forward:r.backward;for(var o in this.waypoints[n]){var a=this.waypoints[n][o];if(null!==a.triggerPoint){var s=r.oldScroll<a.triggerPoint,l=r.newScroll>=a.triggerPoint;(s&&l||!s&&!l)&&(a.queueTrigger(i),e[a.group.id]=a.group)}}}for(var c in e)e[c].flushTriggers();this.oldScroll={x:t.horizontal.newScroll,y:t.vertical.newScroll}},o.prototype.innerHeight=function(){return this.element==this.element.window?r.viewportHeight():this.adapter.innerHeight()},o.prototype.remove=function(e){delete this.waypoints[e.axis][e.key],this.checkEmpty()},o.prototype.innerWidth=function(){return this.element==this.element.window?r.viewportWidth():this.adapter.innerWidth()},o.prototype.destroy=function(){var e=[];for(var t in this.waypoints)for(var n in this.waypoints[t])e.push(this.waypoints[t][n]);for(var r=0,i=e.length;r<i;r++)e[r].destroy()},o.prototype.refresh=function(){var e,t=this.element==this.element.window,n=t?void 0:this.adapter.offset(),i={};for(var o in this.handleScroll(),e={horizontal:{contextOffset:t?0:n.left,contextScroll:t?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:t?0:n.top,contextScroll:t?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}}){var a=e[o];for(var s in this.waypoints[o]){var l,c,u,f,d=this.waypoints[o][s],p=d.options.offset,h=d.triggerPoint,_=0,w=null==h;d.element!==d.element.window&&(_=d.adapter.offset()[a.offsetProp]),"function"==typeof p?p=p.apply(d):"string"==typeof p&&(p=parseFloat(p),d.options.offset.indexOf("%")>-1&&(p=Math.ceil(a.contextDimension*p/100))),l=a.contextScroll-a.contextOffset,d.triggerPoint=Math.floor(_+l-p),c=h<a.oldScroll,u=d.triggerPoint>=a.oldScroll,f=!c&&!u,!w&&(c&&u)?(d.queueTrigger(a.backward),i[d.group.id]=d.group):(!w&&f||w&&a.oldScroll>=d.triggerPoint)&&(d.queueTrigger(a.forward),i[d.group.id]=d.group)}}return r.requestAnimationFrame(function(){for(var e in i)i[e].flushTriggers()}),this},o.findOrCreateByElement=function(e){return o.findByElement(e)||new o(e)},o.refreshAll=function(){for(var e in n)n[e].refresh()},o.findByElement=function(e){return n[e.waypointContextKey]},window.onload=function(){i&&i(),o.refreshAll()},r.requestAnimationFrame=function(t){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||e).call(window,t)},r.Context=o}(),function(){"use strict";function e(e,t){return e.triggerPoint-t.triggerPoint}function t(e,t){return t.triggerPoint-e.triggerPoint}var n={vertical:{},horizontal:{}},r=window.Waypoint;function i(e){this.name=e.name,this.axis=e.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}i.prototype.add=function(e){this.waypoints.push(e)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var n in this.triggerQueues){var r=this.triggerQueues[n],i="up"===n||"left"===n;r.sort(i?t:e);for(var o=0,a=r.length;o<a;o+=1){var s=r[o];(s.options.continuous||o===r.length-1)&&s.trigger([n])}}this.clearTriggerQueues()},i.prototype.next=function(t){this.waypoints.sort(e);var n=r.Adapter.inArray(t,this.waypoints);return n===this.waypoints.length-1?null:this.waypoints[n+1]},i.prototype.previous=function(t){this.waypoints.sort(e);var n=r.Adapter.inArray(t,this.waypoints);return n?this.waypoints[n-1]:null},i.prototype.queueTrigger=function(e,t){this.triggerQueues[t].push(e)},i.prototype.remove=function(e){var t=r.Adapter.inArray(e,this.waypoints);t>-1&&this.waypoints.splice(t,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(e){return n[e.axis][e.name]||new i(e)},r.Group=i}(),function(){"use strict";var e=window.jQuery,t=window.Waypoint;function n(t){this.$element=e(t)}e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,t){n.prototype[t]=function(){var e=Array.prototype.slice.call(arguments);return this.$element[t].apply(this.$element,e)}}),e.each(["extend","inArray","isEmptyObject"],function(t,r){n[r]=e[r]}),t.adapters.push({name:"jquery",Adapter:n}),t.Adapter=n}(),function(){"use strict";var e=window.Waypoint;function t(t){return function(){var n=[],r=arguments[0];return t.isFunction(arguments[0])&&((r=t.extend({},arguments[1])).handler=arguments[0]),this.each(function(){var i=t.extend({},r,{element:this});"string"==typeof i.context&&(i.context=t(this).closest(i.context)[0]),n.push(new e(i))}),n}}window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}()},8545:function(e,t,n){"use strict";n.d(t,{Iq:function(){return i},lY:function(){return r}});n(54756),n(18987);function r(e,t){var n="/static/"+e;return n.startsWith("/")&&t&&(n=t+n),n}function i(){history.replaceState("",document.title,window.location.pathname+window.location.search)}},9458:function(module){module.exports=function anonymous(locals,escapeFn,include,rethrow){escapeFn=escapeFn||function(e){return null==e?"":String(e).replace(_MATCH_HTML,encode_char)};var _ENCODE_HTML_RULES={"&":"&","<":"<",">":">",'"':""","'":"'"},_MATCH_HTML=/[&<>'"]/g;function encode_char(e){return _ENCODE_HTML_RULES[e]||e}var __output="";function __append(e){null!=e&&(__output+=e)}with(locals||{})__append('\n<div id="diff_'),__append(escapeFn(diffData.id)),__append('" class="card swh-file-diff-panel">\n <div class="card-header swh-background-gray border-bottom-0">\n <a data-bs-toggle="collapse" href="#diff_'),__append(escapeFn(diffData.id)),__append('_content">\n <div class="float-start swh-title-color">\n <strong>'),__append(escapeFn(diffPanelTitle)),__append('</strong>\n </div>\n </a>\n <div class="ms-auto float-end">\n <div class="btn-group diff-styles" role="group" style="visibility: hidden;">\n <input type="radio" class="btn-check" name="diffs-switch-'),__append(escapeFn(diffData.id)),__append('" id="unified-'),__append(escapeFn(diffData.id)),__append('" autocomplete="off" checked="checked">\n <label class="btn btn-secondary btn-sm unified-diff-button" id="unified-'),__append(escapeFn(diffData.id)),__append('-label" for="unified-'),__append(escapeFn(diffData.id)),__append('" onclick="swh.revision.showUnifiedDiff(\''),__append(escapeFn(diffData.id)),__append('\')">\n Unified\n </label>\n <input type="radio" class="btn-check" name="diffs-switch-'),__append(escapeFn(diffData.id)),__append('" id="side-by-side-'),__append(escapeFn(diffData.id)),__append('" autocomplete="off">\n <label class="btn btn-secondary btn-sm split-diff-button" for="side-by-side-'),__append(escapeFn(diffData.id)),__append('" id="side-by-side-'),__append(escapeFn(diffData.id)),__append('-label" onclick="swh.revision.showSplitDiff(\''),__append(escapeFn(diffData.id)),__append('\')">\n Side-by-side\n </label>\n </div>\n <a href="'),__append(escapeFn(diffData.content_url)),__append('" class="btn btn-secondary btn-sm" role="button">View file</a>\n </div>\n <div class="clearfix"></div>\n </div>\n <div id="diff_'),__append(escapeFn(diffData.id)),__append('_content" class="collapse show">\n <div class="swh-diff-loading text-center" id="'),__append(escapeFn(diffData.id)),__append('-loading" style="visibility: hidden;">\n <img src="'),__append(escapeFn(swhSpinnerSrc)),__append('">\n <p>Loading diff ...</p>\n </div>\n <div class="highlightjs swh-content" style="display: none;" id="'),__append(escapeFn(diffData.id)),__append('-highlightjs">\n <div id="'),__append(escapeFn(diffData.id)),__append('-unified-diff">\n <pre><code class="'),__append(escapeFn(diffData.id)),__append('" id="'),__append(escapeFn(diffData.id)),__append('"></code></pre>\n </div>\n <div style="width: 100%; display: none;" id="'),__append(escapeFn(diffData.id)),__append('-split-diff">\n <pre class="float-start" style="width: 50%;"><code class="'),__append(escapeFn(diffData.id)),__append('" id="'),__append(escapeFn(diffData.id)),__append('-from"></code></pre>\n <pre style="width: 50%;"><code class="'),__append(escapeFn(diffData.id)),__append('" id="'),__append(escapeFn(diffData.id)),__append('-to"></code></pre>\n </div>\n </div>\n </div>\n</div>');return __output}},10467:function(e,t,n){"use strict";function r(e,t,n,r,i,o,a){try{var s=e[o](a),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise(function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,l,"next",e)}function l(e){r(a,i,o,s,l,"throw",e)}s(void 0)})}}n.d(t,{A:function(){return i}})},10713:function(e,t,n){"use strict";n.d(t,{By:function(){return Q},Fu:function(){return F},R1:function(){return j},jV:function(){return P},l9:function(){return q},ln:function(){return L},tB:function(){return U},to:function(){return M},xs:function(){return R}});var r,i=n(10467),o=n(54756),a=n.n(o),s=(n(8411),n(23717)),l=n(8545),c=n(9458),u=n.n(c),f=null,d=0,p=0,h=0,_=0,w={},m={},v=null,g=null,y={},b=null,x="#swh-revision-changes",k="Files";function S(e){var t=$(e).offset().top,n=t+$(e).outerHeight(),r=$(window).scrollTop(),i=r+$(window).height();return n>r&&t<i}function j(e,t,n){for(var r=y[e],i=A(t),o=A(n),a="",s=0;s<r-i.length;++s)a+=" ";a+=i,a+=" ";for(var l=0;l<r-o.length;++l)a+=" ";return a+=o}function T(e){var t,n;if(e.startsWith("@@")){var r=new RegExp(/^@@ -(\d+),(\d+) \+(\d+),(\d+) @@$/gm),i=new RegExp(/^@@ -(\d+) \+(\d+),(\d+) @@$/gm),o=new RegExp(/^@@ -(\d+),(\d+) \+(\d+) @@$/gm),a=new RegExp(/^@@ -(\d+) \+(\d+) @@$/gm),s=r.exec(e),l=i.exec(e),c=o.exec(e),u=a.exec(e);s?(t=parseInt(s[1])-1,n=parseInt(s[3])-1):l?(t=parseInt(l[1])-1,n=parseInt(l[2])-1):c?(t=parseInt(c[1])-1,n=parseInt(c[3])-1):u&&(t=parseInt(u[1])-1,n=parseInt(u[2])-1)}return void 0!==t?[t,n]:null}function C(e){return e?parseInt(e):0}function A(e){return e?e.toString():""}function F(e,t,n){var r;if(t||n){var i=C(e.trim());t?r=[i,0]:n&&(r=[0,i])}else(r=e.replace(/[ ]+/g," ").split(" ")).length>2&&r.shift(),r=r.map(function(e){return C(e)});return r}function q(e,t,n){var r="";return r+="F"+(e[0]||0),r+="T"+(e[1]||0),r+="-F"+(t[0]||0),r+="T"+(t[1]||0),r+=n?"-unified":"-split"}function P(e){var t=/F([0-9]+)T([0-9]+)-F([0-9]+)T([0-9]+)-([a-z]+)/.exec(e);return 6===t.length?{startLines:[parseInt(t[1]),parseInt(t[2])],endLines:[parseInt(t[3]),parseInt(t[4])],unified:"unified"===t[5]}:null}function D(e,t){var n=$("#"+e+' .hljs-ln-line[data-line-number="'+t+'"]'),r=$("#"+e+' .hljs-ln-numbers[data-line-number="'+t+'"]');return r.css("color","black"),r.css("font-weight","bold"),n.css("background-color","#fdf3da"),n.css("mix-blend-mode","multiply"),n}function O(e){void 0===e&&(e=!0),e&&(b=null,v=null,g=null),$(".hljs-ln-line[data-line-number]").css("background-color","initial"),$(".hljs-ln-line[data-line-number]").css("mix-blend-mode","initial"),$(".hljs-ln-numbers[data-line-number]").css("color","#aaa"),$(".hljs-ln-numbers[data-line-number]").css("font-weight","initial"),"Changes"===k&&window.location.hash!==x&&window.history.replaceState("",document.title,window.location.pathname+window.location.search+x)}function E(e,t,n,r){var i;if(r){var o=j(e,t[0],t[1]),a=j(e,n[0],n[1]),s=$("#"+e+' .hljs-ln-line[data-line-number="'+o+'"]'),l=$("#"+e+' .hljs-ln-line[data-line-number="'+a+'"]');if($(l).position().top<$(s).position().top){var c=[a,o];o=c[0],a=c[1],i=l}else i=s;for(var u=D(e,o),f=$(u).closest("tr"),d=$(f).children(".hljs-ln-line").data("line-number").toString();d!==a;)d.trim()&&D(e,d),f=$(f).next(),d=$(f).children(".hljs-ln-line").data("line-number").toString();D(e,a)}else if(t[0]&&n[0]){for(var p=Math.min(t[0],n[0]),h=Math.max(t[0],n[0]),_=p;_<=h;++_)D(e+"-from",_);i=$("#"+e+'-from .hljs-ln-line[data-line-number="'+p+'"]')}else if(t[1]&&n[1]){for(var w=Math.min(t[1],n[1]),m=Math.max(t[1],n[1]),v=w;v<=m;++v)D(e+"-to",v);i=$("#"+e+'-to .hljs-ln-line[data-line-number="'+w+'"]')}else{var g,y;t[0]&&n[1]?(g=t[0],y=n[1]):(g=n[0],y=t[1]);var b=$("#"+e+'-from .hljs-ln-line[data-line-number="'+g+'"]'),x=$("#"+e+'-to .hljs-ln-line[data-line-number="'+y+'"]'),k=$(b).position().top<$(x).position().top;i=k?b:x;for(var S=$("#"+e+"-from tr").first(),T=$(S).children(".hljs-ln-line").data("line-number"),C=$("#"+e+"-to tr").first(),A=$(C).children(".hljs-ln-line").data("line-number"),F=!1;k&&T===g?F=!0:k||A!==y||(F=!0),F&&T&&D(e+"-from",T),F&&A&&D(e+"-to",A),!(k&&A===y||!k&&T===g);)S=$(S).next(),T=$(S).children(".hljs-ln-line").data("line-number"),C=$(C).next(),A=$(C).children(".hljs-ln-line").data("line-number")}var P=q(t,n,r);return window.location.hash="diff_"+e+"+"+P,i}function M(e){$("#"+e+"-split-diff").css("display","none"),$("#"+e+"-unified-diff").css("display","block")}function L(e){$("#"+e+"-unified-diff").css("display","none"),$("#"+e+"-split-diff").css("display","block")}function R(e,t){return N.apply(this,arguments)}function N(){return(N=(0,i.A)(a().mark(function e(t,n){var i,o,s,l,c,u,d,m,v,g,b,x,k;return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(i=function(e,t){$(e).attr("data-line-number",t||""),$(e).children().attr("data-line-number",t||""),$(e).siblings().attr("data-line-number",t||"")},-1!==t.indexOf("force=true")||!w.hasOwnProperty(n)){e.next=1;break}return e.abrupt("return");case 1:return w[n]=!0,$("#"+n+"-loading").css("visibility","visible"),$("#"+n+"-loading").css("display","block"),$("#"+n+"-highlightjs").css("display","none"),e.next=2,fetch(t);case 2:return o=e.sent,e.next=3,o.json();case 3:s=e.sent,++p===f.length&&$("#swh-compute-all-diffs").addClass("active"),0===s.diff_str.indexOf("Large diff")?($("#"+n)[0].innerHTML=s.diff_str+'<br/><button class="btn btn-secondary btn-sm" type="button"\n onclick="swh.revision.computeDiff(\''+t+"&force=true', '"+n+"')\">Request diff</button>",W(n)):0!==s.diff_str.indexOf("@@")?($("#"+n).text(s.diff_str),W(n)):($("."+n).removeClass("plaintext"),$("."+n).addClass(s.language),$("#"+n).text(s.diff_str),$("#"+n).each(function(e,t){hljs.highlightElement(t),hljs.lineNumbersElementSync(t)}),l="",c="",u=[],d=[],m=[],v=0,g="",b="",x=0,$("#"+n+" .hljs-ln-numbers").each(function(e,t){var n=t.nextSibling.innerText,r=T(n),i="",o="";if(r)l=r[0],c=r[1],x=0,g+=n+"\n",b+=n+"\n",d.push(""),m.push("");else if(n.length>0&&"-"===n[0])i=(l+=1).toString(),d.push(i),++_,g+=n+"\n",++x;else if(n.length>0&&"+"===n[0])o=(c+=1).toString(),m.push(o),++h,b+=n+"\n",--x;else{c+=1,i=(l+=1).toString(),o=c.toString();for(var a=0;a<Math.abs(x);++a)x>0?(b+="\n",m.push("")):(g+="\n",d.push(""));x=0,g+=n+"\n",b+=n+"\n",m.push(o),d.push(i)}l||(i=""),c||(o=""),u[e]=[i,o],v=Math.max(v,i.length),v=Math.max(v,o.length)}),y[n]=v,$("#"+n+"-from").text(g),$("#"+n+"-to").text(b),$("#"+n+"-from, #"+n+"-to").each(function(e,t){hljs.highlightElement(t),hljs.lineNumbersElementSync(t)}),$("."+n+" .hljs-ln-numbers").each(function(e,t){var n=t.nextSibling.innerText;if(n.startsWith("@@")){$(t).parent().addClass("swh-diff-lines-info");var r=$(t).parent().find(".hljs-ln-code .hljs-ln-line").text();$(t).parent().find(".hljs-ln-code .hljs-ln-line").children().remove(),$(t).parent().find(".hljs-ln-code .hljs-ln-line").text(""),$(t).parent().find(".hljs-ln-code .hljs-ln-line").append('<span class="hljs-meta">'+r+"</span>")}else n.length>0&&"-"===n[0]?$(t).parent().addClass("swh-diff-removed-line"):n.length>0&&"+"===n[0]&&$(t).parent().addClass("swh-diff-added-line")}),$("#"+n+" .hljs-ln-numbers").each(function(e,t){var r=j(n,u[e][0],u[e][1]);i(t,r)}),$("#"+n+"-from .hljs-ln-numbers").each(function(e,t){i(t,d[e])}),$("#"+n+"-to .hljs-ln-numbers").each(function(e,t){i(t,m[e])}),$("."+n+" .hljs-ln-code").each(function(e,t){if(t.firstChild){if("#text"!==t.firstChild.nodeName){var n=t.firstChild.innerHTML;if("-"===n[0]||"+"===n[0]){t.firstChild.innerHTML=n.substr(1);var r=document.createTextNode(n[0]);$(t).prepend(r)}}$(t).contents().filter(function(e,t){return 3===t.nodeType}).each(function(e,n){var r="[swh-no-nl-marker]";-1!==n.textContent.indexOf(r)&&(n.textContent=n.textContent.replace(r,""),$(t).append($('<span class="no-nl-marker" style="color: red;" title="No newline at end of file"><i class="mdi mdi-rotate-90 mdi-cancel" aria-hidden="true"><i class="mdi mdi-keyboard-return" aria-hidden="true"></span>')))})}}),0!==s.diff_str.indexOf("Diffs are not generated for non textual content")&&($("#diff_"+n+" .diff-styles").css("visibility","visible"),$("#diff_"+n+" .diff-styles").children().first().prop("checked",!0)),W(n),r&&-1!==r.diffPanelId.indexOf(n)&&(r.unified||L(n),k=E(n,r.startLines,r.endLines,r.unified),$("html, body").animate({scrollTop:k.offset().top-50},{duration:500})));case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function W(e){$("#"+e+"-loading").css("display","none"),$("#"+e+"-highlightjs").css("display","block"),$("#swh-revision-lines-added").text(h+" additions"),$("#swh-revision-lines-deleted").text(_+" deletions"),$("#swh-nb-diffs-computed").text(p),Waypoint.refreshAll()}function I(){$(".swh-file-diff-panel").each(function(e,t){if(S(t)){var n=t.id.replace("diff_","");R(m[n],n)}})}function H(e){var t=e.path;return"rename"===e.type&&(t=e.from_path+" → "+e.to_path),u()({diffData:e,diffPanelTitle:t,swhSpinnerSrc:s.Q$})}function z(){for(var e=0;e<f.length;++e){var t=f[e];$("#diff_"+t.id).waypoint({handler:function(){if(S(this.element)){var e=this.element.id.replace("diff_","");R(m[e],e),this.destroy()}},offset:"100%"}),$("#diff_"+t.id).waypoint({handler:function(){if(S(this.element)){var e=this.element.id.replace("diff_","");R(m[e],e),this.destroy()}},offset:function(){return-$(this.element).height()}})}Waypoint.refreshAll()}function B(e,t){void 0===t&&(t=!0),Waypoint.disableAll(),$("html, body").animate({scrollTop:$(e).offset().top},{duration:500,complete:function(){t&&(window.location.hash=e),Waypoint.enableAll(),I()}})}function U(e){for(var t in $(e.currentTarget).addClass("active"),m)m.hasOwnProperty(t)&&R(m[t],t);e.stopPropagation()}function Q(e,t){return G.apply(this,arguments)}function G(){return G=(0,i.A)(a().mark(function e(t,o){return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=1,n.e(940).then(n.bind(n,49931));case 1:$(document).on("shown.bs.tab",'a[data-bs-toggle="tab"]',function(){var e=(0,i.A)(a().mark(function e(t){var n,i,s,c,u;return a().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("Changes"!==(k=t.currentTarget.text.trim())){e.next=4;break}if(window.location.hash=x,$("#readme-panel").css("display","none"),!f){e.next=1;break}return e.abrupt("return");case 1:return e.next=2,fetch(o);case 2:return n=e.sent,e.next=3,n.json();case 3:for(i=e.sent,f=i.changes,d=i.total_nb_changes,s=d+" changed file",1!==d&&(s+="s"),$("#swh-revision-changed-files").text(s),$("#swh-total-nb-diffs").text(f.length),$("#swh-revision-changes-list pre")[0].innerHTML=i.changes_msg,$("#swh-revision-changes-loading").css("display","none"),$("#swh-revision-changes-list pre").css("display","block"),$("#swh-compute-all-diffs").css("visibility","visible"),$("#swh-revision-changes-list").removeClass("in"),d>f.length&&($("#swh-too-large-revision-diff").css("display","block"),$("#swh-nb-loaded-diffs").text(f.length)),c=0;c<f.length;++c)u=f[c],m[u.id]=u.diff_url,$("#swh-revision-diffs").append(H(u));z(),I(),r&&B(r.diffPanelId,!1),e.next=5;break;case 4:"Files"===k&&((0,l.Iq)(),$("#readme-panel").css("display","block"));case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()),$(document).ready(function(){t.length>0?$("#swh-revision-message").addClass("in"):$("#swh-collapse-revision-message").attr("data-bs-toggle",""),$('#swh-revision-changes-list a[href^="#"], #back-to-top a[href^="#"]').click(function(e){return B($.attr(e.currentTarget,"href")),!1}),$("body").click(function(e){if("Changes"===k)if(e.target.classList.contains("hljs-ln-n")){var t=$(e.target).closest("code").prop("id"),n=-1!==t.indexOf("-from"),r=-1!==t.indexOf("-to"),i=$(e.target).data("line-number").toString(),o=t.replace("-from","").replace("-to","");e.shiftKey&&o===b&&i.trim()||(O(),b=o),o===b&&i.trim()&&(e.shiftKey?v&&(O(!1),g=F(i,n,r),E(o,v,g,!n&&!r)):E(o,v=F(i,n,r),v,!n&&!r))}else O()});var e=window.location.hash;if(e){var n=e.split("+");2===n.length&&(r=P(n[1]))&&(r.diffPanelId=n[0],$('.nav-tabs a[href="'+x+'"]').tab("show")),e===x&&$('.nav-tabs a[href="'+x+'"]').tab("show")}});case 2:case"end":return e.stop()}},e)})),G.apply(this,arguments)}},11791:function(e,t,n){var r=n(25172),i=n(75546);e.exports=function e(t,n){function o(e,i,a,s){try{var l=t[e](i),c=l.value;return c instanceof r?n.resolve(c.v).then(function(e){o("next",e,a,s)},function(e){o("throw",e,a,s)}):n.resolve(c).then(function(e){l.value=e,a(l)},function(e){return o("throw",e,a,s)})}catch(e){s(e)}}var a;this.next||(i(e.prototype),i(e.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),i(this,"_invoke",function(e,t,r){function i(){return new n(function(t,n){o(e,r,t,n)})}return a=a?a.then(i,i):i()},!0)},e.exports.__esModule=!0,e.exports.default=e.exports},16993:function(e,t,n){var r=n(75546);function i(){var t,n,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.toStringTag||"@@toStringTag";function l(e,i,o,a){var s=i&&i.prototype instanceof u?i:u,l=Object.create(s.prototype);return r(l,"_invoke",function(e,r,i){var o,a,s,l=0,u=i||[],f=!1,d={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,n){return o=e,a=0,s=t,d.n=n,c}};function p(e,r){for(a=e,s=r,n=0;!f&&l&&!i&&n<u.length;n++){var i,o=u[n],p=d.p,h=o[2];e>3?(i=h===r)&&(s=o[(a=o[4])?5:(a=3,3)],o[4]=o[5]=t):o[0]<=p&&((i=e<2&&p<o[1])?(a=0,d.v=r,d.n=o[1]):p<h&&(i=e<3||o[0]>r||r>h)&&(o[4]=e,o[5]=r,d.n=h,a=0))}if(i||e>1)return c;throw f=!0,r}return function(i,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&p(u,h),a=u,s=h;(n=a<2?t:s)||!f;){o||(a?a<3?(a>1&&(d.n=-1),p(a,s)):d.n=s:d.v=s);try{if(l=2,o){if(a||(i="next"),n=o[i]){if(!(n=n.call(o,s)))throw TypeError("iterator result is not an object");if(!n.done)return n;s=n.value,a<2&&(a=0)}else 1===a&&(n=o.return)&&n.call(o),a<2&&(s=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=t}else if((n=(f=d.n<0)?s:e.call(r,d))!==c)break}catch(e){o=t,a=1,s=e}finally{l=1}}return{value:n,done:f}}}(e,o,a),!0),l}var c={};function u(){}function f(){}function d(){}n=Object.getPrototypeOf;var p=[][a]?n(n([][a]())):(r(n={},a,function(){return this}),n),h=d.prototype=u.prototype=Object.create(p);function _(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,d):(e.__proto__=d,r(e,s,"GeneratorFunction")),e.prototype=Object.create(h),e}return f.prototype=d,r(h,"constructor",d),r(d,"constructor",f),f.displayName="GeneratorFunction",r(d,s,"GeneratorFunction"),r(h),r(h,s,"Generator"),r(h,a,function(){return this}),r(h,"toString",function(){return"[object Generator]"}),(e.exports=i=function(){return{w:l,m:_}},e.exports.__esModule=!0,e.exports.default=e.exports)()}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports},18987:function(e,t,n){"use strict";function r(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}(function e(t,n){function i(e,i,o){if("undefined"!=typeof document){"number"==typeof(o=r({},n,o)).expires&&(o.expires=new Date(Date.now()+864e5*o.expires)),o.expires&&(o.expires=o.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var a="";for(var s in o)o[s]&&(a+="; "+s,!0!==o[s]&&(a+="="+o[s].split(";")[0]));return document.cookie=e+"="+t.write(i,e)+a}}return Object.create({set:i,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var n=document.cookie?document.cookie.split("; "):[],r={},i=0;i<n.length;i++){var o=n[i].split("="),a=o.slice(1).join("=");try{var s=decodeURIComponent(o[0]);if(r[s]=t.read(a,s),e===s)break}catch(e){}}return e?r[e]:r}},remove:function(e,t){i(e,"",r({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,r({},this.attributes,t))},withConverter:function(t){return e(r({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})})({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})},23717:function(e,t,n){"use strict";n.d(t,{Q$:function(){return r}});var r=(0,n(8545).lY)("img/swh-spinner.gif")},25172:function(e){e.exports=function(e,t){this.v=e,this.k=t},e.exports.__esModule=!0,e.exports.default=e.exports},25954:function(e,t,n){"use strict";function r(e){var t=new URLSearchParams(window.location.search);$(e.target).val()?t.set("revs_ordering",$(e.target).val()):t.has("revs_ordering")&&t.delete("revs_ordering"),window.location.search=t.toString()}function i(){$(document).ready(function(){var e=new URLSearchParams(window.location.search).get("revs_ordering");e&&$(':input[value="'+e+'"]').prop("checked",!0)})}n.d(t,{_:function(){return r},z:function(){return i}})},30579:function(e,t,n){var r=n(73738).default;e.exports=function(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(r(e)+" is not iterable")},e.exports.__esModule=!0,e.exports.default=e.exports},54756:function(e,t,n){var r=n(4633)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},55869:function(e,t,n){var r=n(887);e.exports=function(e,t,n,i,o){var a=r(e,t,n,i,o);return a.next().then(function(e){return e.done?e.value:a.next()})},e.exports.__esModule=!0,e.exports.default=e.exports},73738:function(e){function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},75546:function(e){function t(n,r,i,o){var a=Object.defineProperty;try{a({},"",{})}catch(n){a=0}e.exports=t=function(e,n,r,i){function o(n,r){t(e,n,function(e){return this._invoke(n,r,e)})}n?a?a(e,n,{value:r,enumerable:!i,configurable:!i,writable:!i}):e[n]=r:(o("next",0),o("throw",1),o("return",2))},e.exports.__esModule=!0,e.exports.default=e.exports,t(n,r,i,o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}},__webpack_module_cache__={},inProgress,dataWebpackPrefix;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.f={},__webpack_require__.e=function(e){return Promise.all(Object.keys(__webpack_require__.f).reduce(function(t,n){return __webpack_require__.f[n](e,t),t},[]))},__webpack_require__.u=function(e){return"js/highlightjs.516e784a1e62011c7605.js"},__webpack_require__.miniCssF=function(e){return"css/highlightjs.37238c93749cb449800d.css"},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},inProgress={},dataWebpackPrefix="swh:",__webpack_require__.l=function(e,t,n,r){if(inProgress[e])inProgress[e].push(t);else{var i,o;if(void 0!==n)for(var a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var l=a[s];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==dataWebpackPrefix+n){i=l;break}}i||(o=!0,(i=document.createElement("script")).charset="utf-8",__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-webpack",dataWebpackPrefix+n),i.src=e),inProgress[e]=[t];var c=function(t,n){i.onerror=i.onload=null,clearTimeout(u);var r=inProgress[e];if(delete inProgress[e],i.parentNode&&i.parentNode.removeChild(i),r&&r.forEach(function(e){return e(n)}),t)return t(n)},u=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),o&&document.head.appendChild(i)}},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.p="/static/",function(){if("undefined"!=typeof document){var e=function(e){return new Promise(function(t,n){var r=__webpack_require__.miniCssF(e),i=__webpack_require__.p+r;if(function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var i=(a=n[r]).getAttribute("data-href")||a.getAttribute("href");if("stylesheet"===a.rel&&(i===e||i===t))return a}var o=document.getElementsByTagName("style");for(r=0;r<o.length;r++){var a;if((i=(a=o[r]).getAttribute("data-href"))===e||i===t)return a}}(r,i))return t();!function(e,t,n,r,i){var o=document.createElement("link");o.rel="stylesheet",o.type="text/css",__webpack_require__.nc&&(o.nonce=__webpack_require__.nc),o.onerror=o.onload=function(n){if(o.onerror=o.onload=null,"load"===n.type)r();else{var a=n&&n.type,s=n&&n.target&&n.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+a+": "+s+")");l.name="ChunkLoadError",l.code="CSS_CHUNK_LOAD_FAILED",l.type=a,l.request=s,o.parentNode&&o.parentNode.removeChild(o),i(l)}},o.href=t,n?n.parentNode.insertBefore(o,n.nextSibling):document.head.appendChild(o)}(e,i,null,t,n)})},t={552:0};__webpack_require__.f.miniCss=function(n,r){t[n]?r.push(t[n]):0!==t[n]&&{940:1}[n]&&r.push(t[n]=e(n).then(function(){t[n]=0},function(e){throw delete t[n],e}))}}}(),function(){var e={552:0};__webpack_require__.f.j=function(t,n){var r=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(function(n,i){r=e[t]=[n,i]});n.push(r[2]=i);var o=__webpack_require__.p+__webpack_require__.u(t),a=new Error;__webpack_require__.l(o,function(n){if(__webpack_require__.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,r[1](a)}},"chunk-"+t,t)}};var t=function(t,n){var r,i,o=n[0],a=n[1],s=n[2],l=0;if(o.some(function(t){return 0!==e[t]})){for(r in a)__webpack_require__.o(a,r)&&(__webpack_require__.m[r]=a[r]);if(s)s(__webpack_require__)}for(t&&t(n);l<o.length;l++)i=o[l],__webpack_require__.o(e,i)&&e[i]&&e[i][0](),e[i]=0},n=self.webpackChunkswh=self.webpackChunkswh||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var __webpack_exports__={};return function(){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{computeAllDiffs:function(){return e.tB},computeDiff:function(){return e.xs},formatDiffLineNumbers:function(){return e.R1},fragmentToSelectedDiffLines:function(){return e.jV},initRevisionDiff:function(){return e.By},initRevisionsLog:function(){return t.z},parseDiffLineNumbers:function(){return e.Fu},revsOrderingTypeClicked:function(){return t._},selectedDiffLinesToFragment:function(){return e.l9},showSplitDiff:function(){return e.ln},showUnifiedDiff:function(){return e.to}});var e=__webpack_require__(10713),t=__webpack_require__(25954)}(),__webpack_exports__}()});
|
|
3
|
+
//# sourceMappingURL=revision.122a31614a5f9abffc3c.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/revision.122a31614a5f9abffc3c.js","mappings":"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","sources":["webpack://swh/webpack/universalModuleDefinition","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorKeys.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://swh/./node_modules/waypoints/lib/jquery.waypoints.js","webpack://swh/./assets/src/utils/functions.js","webpack://swh/./swh/web/browse/assets/revision/diff-panel.ejs","webpack://swh/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://swh/./swh/web/browse/assets/revision/diff-utils.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js","webpack://swh/./node_modules/@babel/runtime/helpers/regenerator.js","webpack://swh/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://swh/./assets/src/utils/constants.js","webpack://swh/./node_modules/@babel/runtime/helpers/OverloadYield.js","webpack://swh/./swh/web/browse/assets/revision/log-utils.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorValues.js","webpack://swh/./node_modules/@babel/runtime/regenerator/index.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsync.js","webpack://swh/./node_modules/@babel/runtime/helpers/typeof.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorDefine.js","webpack://swh/webpack/bootstrap","webpack://swh/webpack/runtime/load script","webpack://swh/webpack/runtime/compat get default export","webpack://swh/webpack/runtime/define property getters","webpack://swh/webpack/runtime/ensure chunk","webpack://swh/webpack/runtime/get javascript chunk filename","webpack://swh/webpack/runtime/get mini-css chunk filename","webpack://swh/webpack/runtime/global","webpack://swh/webpack/runtime/hasOwnProperty shorthand","webpack://swh/webpack/runtime/make namespace object","webpack://swh/webpack/runtime/publicPath","webpack://swh/webpack/runtime/css loading","webpack://swh/webpack/runtime/jsonp chunk loading"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"swh\"] = factory();\n\telse\n\t\troot[\"swh\"] = root[\"swh\"] || {}, root[\"swh\"][\"revision\"] = factory();\n})(self, function() {\nreturn ","var regenerator = require(\"./regenerator.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nfunction _regeneratorAsyncGen(r, e, t, o, n) {\n return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);\n}\nmodule.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorKeys(e) {\n var n = Object(e),\n r = [];\n for (var t in n) r.unshift(t);\n return function e() {\n for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;\n return e.done = !0, e;\n };\n}\nmodule.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var OverloadYield = require(\"./OverloadYield.js\");\nvar regenerator = require(\"./regenerator.js\");\nvar regeneratorAsync = require(\"./regeneratorAsync.js\");\nvar regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nvar regeneratorKeys = require(\"./regeneratorKeys.js\");\nvar regeneratorValues = require(\"./regeneratorValues.js\");\nfunction _regeneratorRuntime() {\n \"use strict\";\n\n var r = regenerator(),\n e = r.m(_regeneratorRuntime),\n t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;\n function n(r) {\n var e = \"function\" == typeof r && r.constructor;\n return !!e && (e === t || \"GeneratorFunction\" === (e.displayName || e.name));\n }\n var o = {\n \"throw\": 1,\n \"return\": 2,\n \"break\": 3,\n \"continue\": 3\n };\n function a(r) {\n var e, t;\n return function (n) {\n e || (e = {\n stop: function stop() {\n return t(n.a, 2);\n },\n \"catch\": function _catch() {\n return n.v;\n },\n abrupt: function abrupt(r, e) {\n return t(n.a, o[r], e);\n },\n delegateYield: function delegateYield(r, o, a) {\n return e.resultName = o, t(n.d, regeneratorValues(r), a);\n },\n finish: function finish(r) {\n return t(n.f, r);\n }\n }, t = function t(r, _t, o) {\n n.p = e.prev, n.n = e.next;\n try {\n return r(_t, o);\n } finally {\n e.next = n.n;\n }\n }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;\n try {\n return r.call(this, e);\n } finally {\n n.p = e.prev, n.n = e.next;\n }\n };\n }\n return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return {\n wrap: function wrap(e, t, n, o) {\n return r.w(a(e), t, n, o && o.reverse());\n },\n isGeneratorFunction: n,\n mark: r.m,\n awrap: function awrap(r, e) {\n return new OverloadYield(r, e);\n },\n AsyncIterator: regeneratorAsyncIterator,\n async: function async(r, e, t, o, u) {\n return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);\n },\n keys: regeneratorKeys,\n values: regeneratorValues\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\nWaypoints - 4.0.1\nCopyright © 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var keyCounter = 0\n var allWaypoints = {}\n\n /* http://imakewebthings.com/waypoints/api/waypoint */\n function Waypoint(options) {\n if (!options) {\n throw new Error('No options passed to Waypoint constructor')\n }\n if (!options.element) {\n throw new Error('No element option passed to Waypoint constructor')\n }\n if (!options.handler) {\n throw new Error('No handler option passed to Waypoint constructor')\n }\n\n this.key = 'waypoint-' + keyCounter\n this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n this.element = this.options.element\n this.adapter = new Waypoint.Adapter(this.element)\n this.callback = options.handler\n this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n this.enabled = this.options.enabled\n this.triggerPoint = null\n this.group = Waypoint.Group.findOrCreate({\n name: this.options.group,\n axis: this.axis\n })\n this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n if (Waypoint.offsetAliases[this.options.offset]) {\n this.options.offset = Waypoint.offsetAliases[this.options.offset]\n }\n this.group.add(this)\n this.context.add(this)\n allWaypoints[this.key] = this\n keyCounter += 1\n }\n\n /* Private */\n Waypoint.prototype.queueTrigger = function(direction) {\n this.group.queueTrigger(this, direction)\n }\n\n /* Private */\n Waypoint.prototype.trigger = function(args) {\n if (!this.enabled) {\n return\n }\n if (this.callback) {\n this.callback.apply(this, args)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy */\n Waypoint.prototype.destroy = function() {\n this.context.remove(this)\n this.group.remove(this)\n delete allWaypoints[this.key]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable */\n Waypoint.prototype.disable = function() {\n this.enabled = false\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable */\n Waypoint.prototype.enable = function() {\n this.context.refresh()\n this.enabled = true\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/next */\n Waypoint.prototype.next = function() {\n return this.group.next(this)\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/previous */\n Waypoint.prototype.previous = function() {\n return this.group.previous(this)\n }\n\n /* Private */\n Waypoint.invokeAll = function(method) {\n var allWaypointsArray = []\n for (var waypointKey in allWaypoints) {\n allWaypointsArray.push(allWaypoints[waypointKey])\n }\n for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n allWaypointsArray[i][method]()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy-all */\n Waypoint.destroyAll = function() {\n Waypoint.invokeAll('destroy')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable-all */\n Waypoint.disableAll = function() {\n Waypoint.invokeAll('disable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable-all */\n Waypoint.enableAll = function() {\n Waypoint.Context.refreshAll()\n for (var waypointKey in allWaypoints) {\n allWaypoints[waypointKey].enabled = true\n }\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/refresh-all */\n Waypoint.refreshAll = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-height */\n Waypoint.viewportHeight = function() {\n return window.innerHeight || document.documentElement.clientHeight\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-width */\n Waypoint.viewportWidth = function() {\n return document.documentElement.clientWidth\n }\n\n Waypoint.adapters = []\n\n Waypoint.defaults = {\n context: window,\n continuous: true,\n enabled: true,\n group: 'default',\n horizontal: false,\n offset: 0\n }\n\n Waypoint.offsetAliases = {\n 'bottom-in-view': function() {\n return this.context.innerHeight() - this.adapter.outerHeight()\n },\n 'right-in-view': function() {\n return this.context.innerWidth() - this.adapter.outerWidth()\n }\n }\n\n window.Waypoint = Waypoint\n}())\n;(function() {\n 'use strict'\n\n function requestAnimationFrameShim(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n var keyCounter = 0\n var contexts = {}\n var Waypoint = window.Waypoint\n var oldWindowLoad = window.onload\n\n /* http://imakewebthings.com/waypoints/api/context */\n function Context(element) {\n this.element = element\n this.Adapter = Waypoint.Adapter\n this.adapter = new this.Adapter(element)\n this.key = 'waypoint-context-' + keyCounter\n this.didScroll = false\n this.didResize = false\n this.oldScroll = {\n x: this.adapter.scrollLeft(),\n y: this.adapter.scrollTop()\n }\n this.waypoints = {\n vertical: {},\n horizontal: {}\n }\n\n element.waypointContextKey = this.key\n contexts[element.waypointContextKey] = this\n keyCounter += 1\n if (!Waypoint.windowContext) {\n Waypoint.windowContext = true\n Waypoint.windowContext = new Context(window)\n }\n\n this.createThrottledScrollHandler()\n this.createThrottledResizeHandler()\n }\n\n /* Private */\n Context.prototype.add = function(waypoint) {\n var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n this.waypoints[axis][waypoint.key] = waypoint\n this.refresh()\n }\n\n /* Private */\n Context.prototype.checkEmpty = function() {\n var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n var isWindow = this.element == this.element.window\n if (horizontalEmpty && verticalEmpty && !isWindow) {\n this.adapter.off('.waypoints')\n delete contexts[this.key]\n }\n }\n\n /* Private */\n Context.prototype.createThrottledResizeHandler = function() {\n var self = this\n\n function resizeHandler() {\n self.handleResize()\n self.didResize = false\n }\n\n this.adapter.on('resize.waypoints', function() {\n if (!self.didResize) {\n self.didResize = true\n Waypoint.requestAnimationFrame(resizeHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.createThrottledScrollHandler = function() {\n var self = this\n function scrollHandler() {\n self.handleScroll()\n self.didScroll = false\n }\n\n this.adapter.on('scroll.waypoints', function() {\n if (!self.didScroll || Waypoint.isTouch) {\n self.didScroll = true\n Waypoint.requestAnimationFrame(scrollHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.handleResize = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Private */\n Context.prototype.handleScroll = function() {\n var triggeredGroups = {}\n var axes = {\n horizontal: {\n newScroll: this.adapter.scrollLeft(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left'\n },\n vertical: {\n newScroll: this.adapter.scrollTop(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n var isForward = axis.newScroll > axis.oldScroll\n var direction = isForward ? axis.forward : axis.backward\n\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n if (waypoint.triggerPoint === null) {\n continue\n }\n var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n if (crossedForward || crossedBackward) {\n waypoint.queueTrigger(direction)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n\n this.oldScroll = {\n x: axes.horizontal.newScroll,\n y: axes.vertical.newScroll\n }\n }\n\n /* Private */\n Context.prototype.innerHeight = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportHeight()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerHeight()\n }\n\n /* Private */\n Context.prototype.remove = function(waypoint) {\n delete this.waypoints[waypoint.axis][waypoint.key]\n this.checkEmpty()\n }\n\n /* Private */\n Context.prototype.innerWidth = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportWidth()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerWidth()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-destroy */\n Context.prototype.destroy = function() {\n var allWaypoints = []\n for (var axis in this.waypoints) {\n for (var waypointKey in this.waypoints[axis]) {\n allWaypoints.push(this.waypoints[axis][waypointKey])\n }\n }\n for (var i = 0, end = allWaypoints.length; i < end; i++) {\n allWaypoints[i].destroy()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-refresh */\n Context.prototype.refresh = function() {\n /*eslint-disable eqeqeq */\n var isWindow = this.element == this.element.window\n /*eslint-enable eqeqeq */\n var contextOffset = isWindow ? undefined : this.adapter.offset()\n var triggeredGroups = {}\n var axes\n\n this.handleScroll()\n axes = {\n horizontal: {\n contextOffset: isWindow ? 0 : contextOffset.left,\n contextScroll: isWindow ? 0 : this.oldScroll.x,\n contextDimension: this.innerWidth(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left',\n offsetProp: 'left'\n },\n vertical: {\n contextOffset: isWindow ? 0 : contextOffset.top,\n contextScroll: isWindow ? 0 : this.oldScroll.y,\n contextDimension: this.innerHeight(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up',\n offsetProp: 'top'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var adjustment = waypoint.options.offset\n var oldTriggerPoint = waypoint.triggerPoint\n var elementOffset = 0\n var freshWaypoint = oldTriggerPoint == null\n var contextModifier, wasBeforeScroll, nowAfterScroll\n var triggeredBackward, triggeredForward\n\n if (waypoint.element !== waypoint.element.window) {\n elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n }\n\n if (typeof adjustment === 'function') {\n adjustment = adjustment.apply(waypoint)\n }\n else if (typeof adjustment === 'string') {\n adjustment = parseFloat(adjustment)\n if (waypoint.options.offset.indexOf('%') > - 1) {\n adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n }\n }\n\n contextModifier = axis.contextScroll - axis.contextOffset\n waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)\n wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n triggeredBackward = wasBeforeScroll && nowAfterScroll\n triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n if (!freshWaypoint && triggeredBackward) {\n waypoint.queueTrigger(axis.backward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (!freshWaypoint && triggeredForward) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n Waypoint.requestAnimationFrame(function() {\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n })\n\n return this\n }\n\n /* Private */\n Context.findOrCreateByElement = function(element) {\n return Context.findByElement(element) || new Context(element)\n }\n\n /* Private */\n Context.refreshAll = function() {\n for (var contextId in contexts) {\n contexts[contextId].refresh()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n Context.findByElement = function(element) {\n return contexts[element.waypointContextKey]\n }\n\n window.onload = function() {\n if (oldWindowLoad) {\n oldWindowLoad()\n }\n Context.refreshAll()\n }\n\n\n Waypoint.requestAnimationFrame = function(callback) {\n var requestFn = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n requestAnimationFrameShim\n requestFn.call(window, callback)\n }\n Waypoint.Context = Context\n}())\n;(function() {\n 'use strict'\n\n function byTriggerPoint(a, b) {\n return a.triggerPoint - b.triggerPoint\n }\n\n function byReverseTriggerPoint(a, b) {\n return b.triggerPoint - a.triggerPoint\n }\n\n var groups = {\n vertical: {},\n horizontal: {}\n }\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/api/group */\n function Group(options) {\n this.name = options.name\n this.axis = options.axis\n this.id = this.name + '-' + this.axis\n this.waypoints = []\n this.clearTriggerQueues()\n groups[this.axis][this.name] = this\n }\n\n /* Private */\n Group.prototype.add = function(waypoint) {\n this.waypoints.push(waypoint)\n }\n\n /* Private */\n Group.prototype.clearTriggerQueues = function() {\n this.triggerQueues = {\n up: [],\n down: [],\n left: [],\n right: []\n }\n }\n\n /* Private */\n Group.prototype.flushTriggers = function() {\n for (var direction in this.triggerQueues) {\n var waypoints = this.triggerQueues[direction]\n var reverse = direction === 'up' || direction === 'left'\n waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n for (var i = 0, end = waypoints.length; i < end; i += 1) {\n var waypoint = waypoints[i]\n if (waypoint.options.continuous || i === waypoints.length - 1) {\n waypoint.trigger([direction])\n }\n }\n }\n this.clearTriggerQueues()\n }\n\n /* Private */\n Group.prototype.next = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n var isLast = index === this.waypoints.length - 1\n return isLast ? null : this.waypoints[index + 1]\n }\n\n /* Private */\n Group.prototype.previous = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n return index ? this.waypoints[index - 1] : null\n }\n\n /* Private */\n Group.prototype.queueTrigger = function(waypoint, direction) {\n this.triggerQueues[direction].push(waypoint)\n }\n\n /* Private */\n Group.prototype.remove = function(waypoint) {\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n if (index > -1) {\n this.waypoints.splice(index, 1)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/first */\n Group.prototype.first = function() {\n return this.waypoints[0]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/last */\n Group.prototype.last = function() {\n return this.waypoints[this.waypoints.length - 1]\n }\n\n /* Private */\n Group.findOrCreate = function(options) {\n return groups[options.axis][options.name] || new Group(options)\n }\n\n Waypoint.Group = Group\n}())\n;(function() {\n 'use strict'\n\n var $ = window.jQuery\n var Waypoint = window.Waypoint\n\n function JQueryAdapter(element) {\n this.$element = $(element)\n }\n\n $.each([\n 'innerHeight',\n 'innerWidth',\n 'off',\n 'offset',\n 'on',\n 'outerHeight',\n 'outerWidth',\n 'scrollLeft',\n 'scrollTop'\n ], function(i, method) {\n JQueryAdapter.prototype[method] = function() {\n var args = Array.prototype.slice.call(arguments)\n return this.$element[method].apply(this.$element, args)\n }\n })\n\n $.each([\n 'extend',\n 'inArray',\n 'isEmptyObject'\n ], function(i, method) {\n JQueryAdapter[method] = $[method]\n })\n\n Waypoint.adapters.push({\n name: 'jquery',\n Adapter: JQueryAdapter\n })\n Waypoint.Adapter = JQueryAdapter\n}())\n;(function() {\n 'use strict'\n\n var Waypoint = window.Waypoint\n\n function createExtension(framework) {\n return function() {\n var waypoints = []\n var overrides = arguments[0]\n\n if (framework.isFunction(arguments[0])) {\n overrides = framework.extend({}, arguments[1])\n overrides.handler = arguments[0]\n }\n\n this.each(function() {\n var options = framework.extend({}, overrides, {\n element: this\n })\n if (typeof options.context === 'string') {\n options.context = framework(this).closest(options.context)[0]\n }\n waypoints.push(new Waypoint(options))\n })\n\n return waypoints\n }\n }\n\n if (window.jQuery) {\n window.jQuery.fn.waypoint = createExtension(window.jQuery)\n }\n if (window.Zepto) {\n window.Zepto.fn.waypoint = createExtension(window.Zepto)\n }\n}())\n;","/**\n * Copyright (C) 2018-2025 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\n// utility functions\n\nimport Cookies from 'js-cookie';\n\nexport function handleFetchError(response, noRaiseForStatuses = []) {\n if (!response.ok && $.inArray(response.status, noRaiseForStatuses)) {\n throw response;\n }\n return response;\n}\n\nexport function handleFetchErrors(responses, noRaiseForStatuses = []) {\n for (let i = 0; i < responses.length; ++i) {\n if (!responses[i].ok && $.inArray(responses[i].status, noRaiseForStatuses)) {\n throw responses[i];\n }\n }\n return responses;\n}\n\nexport function errorMessageFromResponse(errorData, defaultMessage) {\n let errorMessage = '';\n try {\n const reason = JSON.parse(errorData['reason']);\n Object.entries(reason).forEach((keys, _) => {\n const key = keys[0];\n const message = keys[1][0]; // take only the first issue\n errorMessage += `\\n${key}: ${message}`;\n });\n } catch (_) {\n errorMessage = errorData['reason']; // can't parse it, leave it raw\n }\n return errorMessage ? `Error: ${errorMessage}` : defaultMessage;\n}\n\nexport function staticAsset(asset, origin) {\n let url = `${__STATIC__}${asset}`;\n if (url.startsWith('/') && origin) {\n url = origin + url;\n }\n return url;\n}\n\nexport function csrfPost(url, headers = {}, body = null) {\n headers['X-CSRFToken'] = Cookies.get('csrftoken');\n return fetch(url, {\n credentials: 'include',\n headers: headers,\n method: 'POST',\n body: body\n });\n}\n\nexport function isGitRepoUrl(url, pathPrefix = '/') {\n const allowedProtocols = ['http:', 'https:', 'git:'];\n if (allowedProtocols.find(protocol => protocol === url.protocol) === undefined) {\n return false;\n }\n if (!url.pathname.startsWith(pathPrefix)) {\n return false;\n }\n const re = new RegExp('[\\\\w\\\\.-]+\\\\/?(?!=.git)(?:\\\\.git\\\\/?)?$');\n return re.test(url.pathname.slice(pathPrefix.length)) || url.pathname === '/';\n};\n\nexport function removeUrlFragment() {\n history.replaceState('', document.title, window.location.pathname + window.location.search);\n}\n\nexport function selectText(startNode, endNode) {\n const selection = window.getSelection();\n selection.removeAllRanges();\n const range = document.createRange();\n range.setStart(startNode, 0);\n if (endNode.nodeName !== '#text') {\n range.setEnd(endNode, endNode.childNodes.length);\n } else {\n range.setEnd(endNode, endNode.textContent.length);\n }\n selection.addRange(range);\n}\n\nexport function textToHTML(text) {\n const textArea = document.createElement('textarea');\n textArea.innerText = text;\n return textArea.innerHTML;\n}\n\nexport function htmlAlert(type, message, closable = false) {\n let closeButton = '';\n let extraClasses = '';\n if (closable) {\n closeButton =\n `<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>`;\n extraClasses = 'alert-dismissible';\n }\n return `<div class=\"alert alert-${type} ${extraClasses}\" role=\"alert\">${message}${closeButton}</div>`;\n}\n\nexport function validateUrl(url, allowedProtocols = []) {\n let originUrl = null;\n let validUrl = true;\n\n try {\n originUrl = new URL(url);\n } catch (TypeError) {\n validUrl = false;\n }\n\n if (validUrl && allowedProtocols.length) {\n validUrl = (\n allowedProtocols.find(protocol => protocol === originUrl.protocol) !== undefined\n );\n }\n\n return validUrl ? originUrl : null;\n}\n\nexport async function isArchivedOrigin(originPath, visitType) {\n if (!validateUrl(originPath)) {\n // Not a valid URL, return immediately\n return false;\n } else {\n let url = `${Urls.api_1_origin_visit_latest(originPath)}?require_snapshot=true`;\n if (visitType && visitType !== 'any') {\n url += `&visit_type=${visitType}`;\n }\n const response = await fetch(url);\n return response.ok;\n }\n}\n\nasync function getCanonicalGithubOriginURL(ownerRepo) {\n const ghApiResponse = await fetch(`https://api.github.com/repos/${ownerRepo}`);\n if (ghApiResponse.ok && ghApiResponse.status === 200) {\n const ghApiResponseData = await ghApiResponse.json();\n return ghApiResponseData.html_url;\n }\n}\n\nexport async function getCanonicalOriginURL(originUrl) {\n let originUrlLower = originUrl.toLowerCase();\n // github.com URL processing\n const ghUrlRegex = /^http[s]*:\\/\\/github.com\\//;\n if (originUrlLower.match(ghUrlRegex)) {\n // remove trailing .git\n if (originUrlLower.endsWith('.git')) {\n originUrlLower = originUrlLower.slice(0, -4);\n }\n // remove trailing slash\n if (originUrlLower.endsWith('/')) {\n originUrlLower = originUrlLower.slice(0, -1);\n }\n // extract {owner}/{repo}\n const ownerRepo = originUrlLower.replace(ghUrlRegex, '');\n // fetch canonical URL from github Web API\n const url = await getCanonicalGithubOriginURL(ownerRepo);\n if (url) {\n return url;\n }\n }\n\n const ghpagesUrlRegex = /^http[s]*:\\/\\/(?<owner>[^/]+).github.io\\/(?<repo>[^/]+)\\/?.*/;\n const parsedUrl = originUrlLower.match(ghpagesUrlRegex);\n if (parsedUrl) {\n const ownerRepo = `${parsedUrl.groups.owner}/${parsedUrl.groups.repo}`;\n // fetch canonical URL from github Web API\n const url = await getCanonicalGithubOriginURL(ownerRepo);\n if (url) {\n return url;\n }\n }\n\n return originUrl;\n}\n\nexport function getHumanReadableDate(data) {\n // Display iso format date string into a human readable date\n // This is expected to be used by date field in datatable listing views\n // Example: 3/24/2022, 10:31:08 AM\n const date = new Date(data);\n return date.toLocaleString();\n}\n\nexport function genLink(sanitizedUrl, type, openInNewTab = false, linkText = '') {\n // Display link. It's up to the caller to sanitize sanitizedUrl first.\n if (type === 'display' && sanitizedUrl) {\n const encodedSanitizedUrl = encodeURI(sanitizedUrl);\n if (!linkText) {\n linkText = encodedSanitizedUrl;\n }\n let attrs = '';\n if (openInNewTab) {\n attrs = 'target=\"_blank\" rel=\"noopener noreferrer\"';\n }\n return `<a href=\"${encodedSanitizedUrl}\" ${attrs}>${linkText}</a>`;\n }\n return sanitizedUrl;\n}\n","module.exports = function anonymous(locals, escapeFn, include, rethrow\n) {\nescapeFn = escapeFn || function (markup) {\n return markup == undefined\n ? ''\n : String(markup)\n .replace(_MATCH_HTML, encode_char);\n};\nvar _ENCODE_HTML_RULES = {\n \"&\": \"&\"\n , \"<\": \"<\"\n , \">\": \">\"\n , '\"': \""\"\n , \"'\": \"'\"\n }\n , _MATCH_HTML = /[&<>'\"]/g;\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n};\n;\n var __output = \"\";\n function __append(s) { if (s !== undefined && s !== null) __output += s }\n with (locals || {}) {\n ; __append(\"\\n<div id=\\\"diff_\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" class=\\\"card swh-file-diff-panel\\\">\\n <div class=\\\"card-header swh-background-gray border-bottom-0\\\">\\n <a data-bs-toggle=\\\"collapse\\\" href=\\\"#diff_\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"_content\\\">\\n <div class=\\\"float-start swh-title-color\\\">\\n <strong>\")\n ; __append(escapeFn( diffPanelTitle ))\n ; __append(\"</strong>\\n </div>\\n </a>\\n <div class=\\\"ms-auto float-end\\\">\\n <div class=\\\"btn-group diff-styles\\\" role=\\\"group\\\" style=\\\"visibility: hidden;\\\">\\n <input type=\\\"radio\\\" class=\\\"btn-check\\\" name=\\\"diffs-switch-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" id=\\\"unified-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" autocomplete=\\\"off\\\" checked=\\\"checked\\\">\\n <label class=\\\"btn btn-secondary btn-sm unified-diff-button\\\" id=\\\"unified-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-label\\\" for=\\\"unified-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" onclick=\\\"swh.revision.showUnifiedDiff('\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"')\\\">\\n Unified\\n </label>\\n <input type=\\\"radio\\\" class=\\\"btn-check\\\" name=\\\"diffs-switch-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" id=\\\"side-by-side-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" autocomplete=\\\"off\\\">\\n <label class=\\\"btn btn-secondary btn-sm split-diff-button\\\" for=\\\"side-by-side-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" id=\\\"side-by-side-\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-label\\\" onclick=\\\"swh.revision.showSplitDiff('\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"')\\\">\\n Side-by-side\\n </label>\\n </div>\\n <a href=\\\"\")\n ; __append(escapeFn( diffData.content_url ))\n ; __append(\"\\\" class=\\\"btn btn-secondary btn-sm\\\" role=\\\"button\\\">View file</a>\\n </div>\\n <div class=\\\"clearfix\\\"></div>\\n </div>\\n <div id=\\\"diff_\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"_content\\\" class=\\\"collapse show\\\">\\n <div class=\\\"swh-diff-loading text-center\\\" id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-loading\\\" style=\\\"visibility: hidden;\\\">\\n <img src=\\\"\")\n ; __append(escapeFn( swhSpinnerSrc ))\n ; __append(\"\\\">\\n <p>Loading diff ...</p>\\n </div>\\n <div class=\\\"highlightjs swh-content\\\" style=\\\"display: none;\\\" id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-highlightjs\\\">\\n <div id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-unified-diff\\\">\\n <pre><code class=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\"></code></pre>\\n </div>\\n <div style=\\\"width: 100%; display: none;\\\" id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-split-diff\\\">\\n <pre class=\\\"float-start\\\" style=\\\"width: 50%;\\\"><code class=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-from\\\"></code></pre>\\n <pre style=\\\"width: 50%;\\\"><code class=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"\\\" id=\\\"\")\n ; __append(escapeFn( diffData.id ))\n ; __append(\"-to\\\"></code></pre>\\n </div>\\n </div>\\n </div>\\n</div>\")\n }\n return __output;\n\n}","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","/**\n * Copyright (C) 2018-2024 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nimport 'waypoints/lib/jquery.waypoints';\n\nimport {swhSpinnerSrc} from 'utils/constants';\nimport {removeUrlFragment} from 'utils/functions';\n\nimport diffPanelTemplate from './diff-panel.ejs';\n\n// number of changed files in the revision\nlet changes = null;\nlet nbChangedFiles = 0;\n// to track the number of already computed files diffs\nlet nbDiffsComputed = 0;\n\nconst noNewLineMarker =\n '<span class=\"no-nl-marker\" style=\"color: red;\" title=\"No newline at end of file\">' +\n '<i class=\"mdi mdi-rotate-90 mdi-cancel\" aria-hidden=\"true\">' +\n '<i class=\"mdi mdi-keyboard-return\" aria-hidden=\"true\">' +\n '</span>';\n\n// to track the total number of added lines in files diffs\nlet nbAdditions = 0;\n// to track the total number of deleted lines in files diffs\nlet nbDeletions = 0;\n// to track the already computed diffs by id\nconst computedDiffs = {};\n// map a diff id to its computation url\nconst diffsUrls = {};\n// to keep track of diff lines to highlight\nlet startLines = null;\nlet endLines = null;\n// map max line numbers characters to diff\nconst diffMaxNumberChars = {};\n// focused diff for highlighting\nlet focusedDiff = null;\n// highlighting color\nconst lineHighlightColor = '#fdf3da';\n// might contain diff lines to highlight parsed from URL fragment\nlet selectedDiffLinesInfo;\n// URL fragment to append when switching to 'Changes' tab\nconst changesUrlFragment = '#swh-revision-changes';\n// current displayed tab name\nlet currentTabName = 'Files';\n\n// to check if a DOM element is in the viewport\nfunction isInViewport(elt) {\n const elementTop = $(elt).offset().top;\n const elementBottom = elementTop + $(elt).outerHeight();\n\n const viewportTop = $(window).scrollTop();\n const viewportBottom = viewportTop + $(window).height();\n\n return elementBottom > viewportTop && elementTop < viewportBottom;\n}\n\n// to format the diffs line numbers\nexport function formatDiffLineNumbers(diffId, fromLine, toLine) {\n const maxNumberChars = diffMaxNumberChars[diffId];\n const fromLineStr = toLnStr(fromLine);\n const toLineStr = toLnStr(toLine);\n let ret = '';\n for (let i = 0; i < (maxNumberChars - fromLineStr.length); ++i) {\n ret += ' ';\n }\n ret += fromLineStr;\n ret += ' ';\n for (let i = 0; i < (maxNumberChars - toLineStr.length); ++i) {\n ret += ' ';\n }\n ret += toLineStr;\n return ret;\n}\n\nfunction parseDiffHunkRangeIfAny(lineText) {\n let baseFromLine, baseToLine;\n if (lineText.startsWith('@@')) {\n const linesInfoRegExp = new RegExp(/^@@ -(\\d+),(\\d+) \\+(\\d+),(\\d+) @@$/gm);\n const linesInfoRegExp2 = new RegExp(/^@@ -(\\d+) \\+(\\d+),(\\d+) @@$/gm);\n const linesInfoRegExp3 = new RegExp(/^@@ -(\\d+),(\\d+) \\+(\\d+) @@$/gm);\n const linesInfoRegExp4 = new RegExp(/^@@ -(\\d+) \\+(\\d+) @@$/gm);\n const linesInfo = linesInfoRegExp.exec(lineText);\n const linesInfo2 = linesInfoRegExp2.exec(lineText);\n const linesInfo3 = linesInfoRegExp3.exec(lineText);\n const linesInfo4 = linesInfoRegExp4.exec(lineText);\n if (linesInfo) {\n baseFromLine = parseInt(linesInfo[1]) - 1;\n baseToLine = parseInt(linesInfo[3]) - 1;\n } else if (linesInfo2) {\n baseFromLine = parseInt(linesInfo2[1]) - 1;\n baseToLine = parseInt(linesInfo2[2]) - 1;\n } else if (linesInfo3) {\n baseFromLine = parseInt(linesInfo3[1]) - 1;\n baseToLine = parseInt(linesInfo3[3]) - 1;\n } else if (linesInfo4) {\n baseFromLine = parseInt(linesInfo4[1]) - 1;\n baseToLine = parseInt(linesInfo4[2]) - 1;\n }\n }\n if (baseFromLine !== undefined) {\n return [baseFromLine, baseToLine];\n } else {\n return null;\n }\n}\n\nfunction toLnInt(lnStr) {\n return lnStr ? parseInt(lnStr) : 0;\n};\n\nfunction toLnStr(lnInt) {\n return lnInt ? lnInt.toString() : '';\n};\n\n// parse diff line numbers to an int array [from, to]\nexport function parseDiffLineNumbers(lineNumbersStr, from, to) {\n let lines;\n if (!from && !to) {\n lines = lineNumbersStr.replace(/[ ]+/g, ' ').split(' ');\n if (lines.length > 2) {\n lines.shift();\n }\n lines = lines.map(x => toLnInt(x));\n } else {\n const lineNumber = toLnInt(lineNumbersStr.trim());\n if (from) {\n lines = [lineNumber, 0];\n } else if (to) {\n lines = [0, lineNumber];\n }\n }\n return lines;\n}\n\n// serialize selected line numbers range to string for URL fragment\nexport function selectedDiffLinesToFragment(startLines, endLines, unified) {\n let selectedLinesFragment = '';\n selectedLinesFragment += `F${startLines[0] || 0}`;\n selectedLinesFragment += `T${startLines[1] || 0}`;\n selectedLinesFragment += `-F${endLines[0] || 0}`;\n selectedLinesFragment += `T${endLines[1] || 0}`;\n if (unified) {\n selectedLinesFragment += '-unified';\n } else {\n selectedLinesFragment += '-split';\n }\n return selectedLinesFragment;\n}\n\n// parse selected lines from URL fragment\nexport function fragmentToSelectedDiffLines(fragment) {\n const RE_LINES = /F([0-9]+)T([0-9]+)-F([0-9]+)T([0-9]+)-([a-z]+)/;\n const matchObj = RE_LINES.exec(fragment);\n if (matchObj.length === 6) {\n return {\n startLines: [parseInt(matchObj[1]), parseInt(matchObj[2])],\n endLines: [parseInt(matchObj[3]), parseInt(matchObj[4])],\n unified: matchObj[5] === 'unified'\n };\n } else {\n return null;\n }\n}\n\n// function to highlight a single diff line\nfunction highlightDiffLine(diffId, i) {\n const line = $(`#${diffId} .hljs-ln-line[data-line-number=\"${i}\"]`);\n const lineNumbers = $(`#${diffId} .hljs-ln-numbers[data-line-number=\"${i}\"]`);\n lineNumbers.css('color', 'black');\n lineNumbers.css('font-weight', 'bold');\n line.css('background-color', lineHighlightColor);\n line.css('mix-blend-mode', 'multiply');\n return line;\n}\n\n// function to reset highlighting\nfunction resetHighlightedDiffLines(resetVars = true) {\n if (resetVars) {\n focusedDiff = null;\n startLines = null;\n endLines = null;\n }\n $('.hljs-ln-line[data-line-number]').css('background-color', 'initial');\n $('.hljs-ln-line[data-line-number]').css('mix-blend-mode', 'initial');\n $('.hljs-ln-numbers[data-line-number]').css('color', '#aaa');\n $('.hljs-ln-numbers[data-line-number]').css('font-weight', 'initial');\n if (currentTabName === 'Changes' && window.location.hash !== changesUrlFragment) {\n window.history.replaceState('', document.title,\n window.location.pathname + window.location.search + changesUrlFragment);\n }\n}\n\n// highlight lines in a diff, return first highlighted line numbers element\nfunction highlightDiffLines(diffId, startLines, endLines, unified) {\n let firstHighlightedLine;\n // unified diff case\n if (unified) {\n let start = formatDiffLineNumbers(diffId, startLines[0], startLines[1]);\n let end = formatDiffLineNumbers(diffId, endLines[0], endLines[1]);\n\n const startLine = $(`#${diffId} .hljs-ln-line[data-line-number=\"${start}\"]`);\n const endLine = $(`#${diffId} .hljs-ln-line[data-line-number=\"${end}\"]`);\n if ($(endLine).position().top < $(startLine).position().top) {\n [start, end] = [end, start];\n firstHighlightedLine = endLine;\n } else {\n firstHighlightedLine = startLine;\n }\n const lineTd = highlightDiffLine(diffId, start);\n let tr = $(lineTd).closest('tr');\n let lineNumbers = $(tr).children('.hljs-ln-line').data('line-number').toString();\n while (lineNumbers !== end) {\n if (lineNumbers.trim()) {\n highlightDiffLine(diffId, lineNumbers);\n }\n tr = $(tr).next();\n lineNumbers = $(tr).children('.hljs-ln-line').data('line-number').toString();\n }\n highlightDiffLine(diffId, end);\n\n // split diff case\n } else {\n // highlight only from part of the diff\n if (startLines[0] && endLines[0]) {\n const start = Math.min(startLines[0], endLines[0]);\n const end = Math.max(startLines[0], endLines[0]);\n for (let i = start; i <= end; ++i) {\n highlightDiffLine(`${diffId}-from`, i);\n }\n firstHighlightedLine = $(`#${diffId}-from .hljs-ln-line[data-line-number=\"${start}\"]`);\n // highlight only to part of the diff\n } else if (startLines[1] && endLines[1]) {\n const start = Math.min(startLines[1], endLines[1]);\n const end = Math.max(startLines[1], endLines[1]);\n for (let i = start; i <= end; ++i) {\n highlightDiffLine(`${diffId}-to`, i);\n }\n firstHighlightedLine = $(`#${diffId}-to .hljs-ln-line[data-line-number=\"${start}\"]`);\n // highlight both part of the diff\n } else {\n let left, right;\n if (startLines[0] && endLines[1]) {\n left = startLines[0];\n right = endLines[1];\n } else {\n left = endLines[0];\n right = startLines[1];\n }\n\n const leftLine = $(`#${diffId}-from .hljs-ln-line[data-line-number=\"${left}\"]`);\n const rightLine = $(`#${diffId}-to .hljs-ln-line[data-line-number=\"${right}\"]`);\n const leftLineAbove = $(leftLine).position().top < $(rightLine).position().top;\n\n if (leftLineAbove) {\n firstHighlightedLine = leftLine;\n } else {\n firstHighlightedLine = rightLine;\n }\n\n let fromTr = $(`#${diffId}-from tr`).first();\n let fromLn = $(fromTr).children('.hljs-ln-line').data('line-number');\n let toTr = $(`#${diffId}-to tr`).first();\n let toLn = $(toTr).children('.hljs-ln-line').data('line-number');\n let canHighlight = false;\n\n while (true) {\n if (leftLineAbove && fromLn === left) {\n canHighlight = true;\n } else if (!leftLineAbove && toLn === right) {\n canHighlight = true;\n }\n\n if (canHighlight && fromLn) {\n highlightDiffLine(`${diffId}-from`, fromLn);\n }\n\n if (canHighlight && toLn) {\n highlightDiffLine(`${diffId}-to`, toLn);\n }\n\n if ((leftLineAbove && toLn === right) || (!leftLineAbove && fromLn === left)) {\n break;\n }\n\n fromTr = $(fromTr).next();\n fromLn = $(fromTr).children('.hljs-ln-line').data('line-number');\n toTr = $(toTr).next();\n toLn = $(toTr).children('.hljs-ln-line').data('line-number');\n }\n\n }\n }\n\n const selectedLinesFragment = selectedDiffLinesToFragment(startLines, endLines, unified);\n window.location.hash = `diff_${diffId}+${selectedLinesFragment}`;\n return firstHighlightedLine;\n}\n\n// callback to switch from side-by-side diff to unified one\nexport function showUnifiedDiff(diffId) {\n $(`#${diffId}-split-diff`).css('display', 'none');\n $(`#${diffId}-unified-diff`).css('display', 'block');\n}\n\n// callback to switch from unified diff to side-by-side one\nexport function showSplitDiff(diffId) {\n $(`#${diffId}-unified-diff`).css('display', 'none');\n $(`#${diffId}-split-diff`).css('display', 'block');\n}\n\n// to compute diff and process it for display\nexport async function computeDiff(diffUrl, diffId) {\n\n // force diff computation ?\n const force = diffUrl.indexOf('force=true') !== -1;\n\n // it no forced computation and diff already computed, do nothing\n if (!force && computedDiffs.hasOwnProperty(diffId)) {\n return;\n }\n\n function setLineNumbers(lnElt, lineNumbers) {\n $(lnElt).attr('data-line-number', lineNumbers || '');\n $(lnElt).children().attr('data-line-number', lineNumbers || '');\n $(lnElt).siblings().attr('data-line-number', lineNumbers || '');\n }\n\n // mark diff computation as already requested\n computedDiffs[diffId] = true;\n\n $(`#${diffId}-loading`).css('visibility', 'visible');\n\n // set spinner visible while requesting diff\n $(`#${diffId}-loading`).css('display', 'block');\n $(`#${diffId}-highlightjs`).css('display', 'none');\n\n // request diff computation and process it\n const response = await fetch(diffUrl);\n const data = await response.json();\n\n // increment number of computed diffs\n ++nbDiffsComputed;\n // toggle the 'Compute all diffs' button if all diffs have been computed\n if (nbDiffsComputed === changes.length) {\n $('#swh-compute-all-diffs').addClass('active');\n }\n\n // Large diff (> threshold) are not automatically computed,\n // add a button to force its computation\n if (data.diff_str.indexOf('Large diff') === 0) {\n $(`#${diffId}`)[0].innerHTML = data.diff_str +\n `<br/><button class=\"btn btn-secondary btn-sm\" type=\"button\"\n onclick=\"swh.revision.computeDiff('${diffUrl}&force=true', '${diffId}')\">` +\n 'Request diff</button>';\n setDiffVisible(diffId);\n } else if (data.diff_str.indexOf('@@') !== 0) {\n $(`#${diffId}`).text(data.diff_str);\n setDiffVisible(diffId);\n } else {\n\n // prepare code highlighting\n $(`.${diffId}`).removeClass('plaintext');\n $(`.${diffId}`).addClass(data.language);\n\n // set unified diff text\n $(`#${diffId}`).text(data.diff_str);\n\n // code highlighting for unified diff\n $(`#${diffId}`).each((i, elt) => {\n hljs.highlightElement(elt);\n hljs.lineNumbersElementSync(elt);\n });\n\n // process unified diff lines in order to generate side-by-side diffs text\n // but also compute line numbers for unified and side-by-side diffs\n let baseFromLine = '';\n let baseToLine = '';\n const fromToLines = [];\n const fromLines = [];\n const toLines = [];\n let maxNumberChars = 0;\n let diffFromStr = '';\n let diffToStr = '';\n let linesOffset = 0;\n\n $(`#${diffId} .hljs-ln-numbers`).each((i, lnElt) => {\n const lnText = lnElt.nextSibling.innerText;\n const linesInfo = parseDiffHunkRangeIfAny(lnText);\n let fromLine = '';\n let toLine = '';\n // parsed lines info from the diff output\n if (linesInfo) {\n baseFromLine = linesInfo[0];\n baseToLine = linesInfo[1];\n linesOffset = 0;\n diffFromStr += (lnText + '\\n');\n diffToStr += (lnText + '\\n');\n fromLines.push('');\n toLines.push('');\n // line removed in the from file\n } else if (lnText.length > 0 && lnText[0] === '-') {\n baseFromLine = baseFromLine + 1;\n fromLine = baseFromLine.toString();\n fromLines.push(fromLine);\n ++nbDeletions;\n diffFromStr += (lnText + '\\n');\n ++linesOffset;\n // line added in the to file\n } else if (lnText.length > 0 && lnText[0] === '+') {\n baseToLine = baseToLine + 1;\n toLine = baseToLine.toString();\n toLines.push(toLine);\n ++nbAdditions;\n diffToStr += (lnText + '\\n');\n --linesOffset;\n // line present in both files\n } else {\n baseFromLine = baseFromLine + 1;\n baseToLine = baseToLine + 1;\n fromLine = baseFromLine.toString();\n toLine = baseToLine.toString();\n for (let j = 0; j < Math.abs(linesOffset); ++j) {\n if (linesOffset > 0) {\n diffToStr += '\\n';\n toLines.push('');\n } else {\n diffFromStr += '\\n';\n fromLines.push('');\n }\n }\n linesOffset = 0;\n diffFromStr += (lnText + '\\n');\n diffToStr += (lnText + '\\n');\n toLines.push(toLine);\n fromLines.push(fromLine);\n }\n if (!baseFromLine) {\n fromLine = '';\n }\n if (!baseToLine) {\n toLine = '';\n }\n fromToLines[i] = [fromLine, toLine];\n maxNumberChars = Math.max(maxNumberChars, fromLine.length);\n maxNumberChars = Math.max(maxNumberChars, toLine.length);\n });\n\n diffMaxNumberChars[diffId] = maxNumberChars;\n\n // set side-by-side diffs text\n $(`#${diffId}-from`).text(diffFromStr);\n $(`#${diffId}-to`).text(diffToStr);\n\n // code highlighting for side-by-side diffs\n $(`#${diffId}-from, #${diffId}-to`).each((i, elt) => {\n hljs.highlightElement(elt);\n hljs.lineNumbersElementSync(elt);\n });\n\n // diff highlighting for added/removed lines on top of code highlighting\n $(`.${diffId} .hljs-ln-numbers`).each((i, lnElt) => {\n const lnText = lnElt.nextSibling.innerText;\n if (lnText.startsWith('@@')) {\n $(lnElt).parent().addClass('swh-diff-lines-info');\n const linesInfoText = $(lnElt).parent().find('.hljs-ln-code .hljs-ln-line').text();\n $(lnElt).parent().find('.hljs-ln-code .hljs-ln-line').children().remove();\n $(lnElt).parent().find('.hljs-ln-code .hljs-ln-line').text('');\n $(lnElt).parent().find('.hljs-ln-code .hljs-ln-line').append(`<span class=\"hljs-meta\">${linesInfoText}</span>`);\n } else if (lnText.length > 0 && lnText[0] === '-') {\n $(lnElt).parent().addClass('swh-diff-removed-line');\n } else if (lnText.length > 0 && lnText[0] === '+') {\n $(lnElt).parent().addClass('swh-diff-added-line');\n }\n });\n\n // set line numbers for unified diff\n $(`#${diffId} .hljs-ln-numbers`).each((i, lnElt) => {\n const lineNumbers = formatDiffLineNumbers(diffId, fromToLines[i][0], fromToLines[i][1]);\n setLineNumbers(lnElt, lineNumbers);\n });\n\n // set line numbers for the from side-by-side diff\n $(`#${diffId}-from .hljs-ln-numbers`).each((i, lnElt) => {\n setLineNumbers(lnElt, fromLines[i]);\n });\n\n // set line numbers for the to side-by-side diff\n $(`#${diffId}-to .hljs-ln-numbers`).each((i, lnElt) => {\n setLineNumbers(lnElt, toLines[i]);\n });\n\n // last processing:\n // - remove the '+' and '-' at the beginning of the diff lines\n // from code highlighting\n // - add the \"no new line at end of file marker\" if needed\n $(`.${diffId} .hljs-ln-code`).each((i, lnElt) => {\n if (lnElt.firstChild) {\n if (lnElt.firstChild.nodeName !== '#text') {\n const lineText = lnElt.firstChild.innerHTML;\n if (lineText[0] === '-' || lineText[0] === '+') {\n lnElt.firstChild.innerHTML = lineText.substr(1);\n const newTextNode = document.createTextNode(lineText[0]);\n $(lnElt).prepend(newTextNode);\n }\n }\n $(lnElt).contents().filter((i, elt) => {\n return elt.nodeType === 3; // Node.TEXT_NODE\n }).each((i, textNode) => {\n const swhNoNewLineMarker = '[swh-no-nl-marker]';\n if (textNode.textContent.indexOf(swhNoNewLineMarker) !== -1) {\n textNode.textContent = textNode.textContent.replace(swhNoNewLineMarker, '');\n $(lnElt).append($(noNewLineMarker));\n }\n });\n }\n });\n\n // hide the diff mode switch button in case of not generated diffs\n if (data.diff_str.indexOf('Diffs are not generated for non textual content') !== 0) {\n $(`#diff_${diffId} .diff-styles`).css('visibility', 'visible');\n $(`#diff_${diffId} .diff-styles`).children().first().prop('checked', true);\n }\n\n setDiffVisible(diffId);\n\n // highlight diff lines if provided in URL fragment\n if (selectedDiffLinesInfo &&\n selectedDiffLinesInfo.diffPanelId.indexOf(diffId) !== -1) {\n if (!selectedDiffLinesInfo.unified) {\n showSplitDiff(diffId);\n }\n const firstHighlightedLine = highlightDiffLines(\n diffId, selectedDiffLinesInfo.startLines,\n selectedDiffLinesInfo.endLines, selectedDiffLinesInfo.unified);\n\n $('html, body').animate(\n {\n scrollTop: firstHighlightedLine.offset().top - 50\n },\n {\n duration: 500\n }\n );\n }\n }\n\n}\n\nfunction setDiffVisible(diffId) {\n // set the unified diff visible by default\n $(`#${diffId}-loading`).css('display', 'none');\n $(`#${diffId}-highlightjs`).css('display', 'block');\n\n // update displayed counters\n $('#swh-revision-lines-added').text(`${nbAdditions} additions`);\n $('#swh-revision-lines-deleted').text(`${nbDeletions} deletions`);\n $('#swh-nb-diffs-computed').text(nbDiffsComputed);\n\n // refresh the waypoints triggering diffs computation as\n // the DOM layout has been updated\n Waypoint.refreshAll();\n}\n\n// to compute all visible diffs in the viewport\nfunction computeVisibleDiffs() {\n $('.swh-file-diff-panel').each((i, elt) => {\n if (isInViewport(elt)) {\n const diffId = elt.id.replace('diff_', '');\n computeDiff(diffsUrls[diffId], diffId);\n }\n });\n}\n\nfunction genDiffPanel(diffData) {\n let diffPanelTitle = diffData.path;\n if (diffData.type === 'rename') {\n diffPanelTitle = `${diffData.from_path} → ${diffData.to_path}`;\n }\n return diffPanelTemplate({\n diffData: diffData,\n diffPanelTitle: diffPanelTitle,\n swhSpinnerSrc: swhSpinnerSrc\n });\n}\n\n// setup waypoints to request diffs computation on the fly while scrolling\nfunction setupWaypoints() {\n for (let i = 0; i < changes.length; ++i) {\n const diffData = changes[i];\n\n // create a waypoint that will trigger diff computation when\n // the top of the diff panel hits the bottom of the viewport\n $(`#diff_${diffData.id}`).waypoint({\n handler: function() {\n if (isInViewport(this.element)) {\n const diffId = this.element.id.replace('diff_', '');\n computeDiff(diffsUrls[diffId], diffId);\n this.destroy();\n }\n },\n offset: '100%'\n });\n\n // create a waypoint that will trigger diff computation when\n // the bottom of the diff panel hits the top of the viewport\n $(`#diff_${diffData.id}`).waypoint({\n handler: function() {\n if (isInViewport(this.element)) {\n const diffId = this.element.id.replace('diff_', '');\n computeDiff(diffsUrls[diffId], diffId);\n this.destroy();\n }\n },\n offset: function() {\n return -$(this.element).height();\n }\n });\n }\n Waypoint.refreshAll();\n}\n\nfunction scrollToDiffPanel(diffPanelId, setHash = true) {\n // disable waypoints while scrolling as we do not want to\n // launch computation of diffs the user is not interested in\n // (file changes list can be large)\n Waypoint.disableAll();\n\n $('html, body').animate(\n {\n scrollTop: $(diffPanelId).offset().top\n },\n {\n duration: 500,\n complete: () => {\n if (setHash) {\n window.location.hash = diffPanelId;\n }\n // enable waypoints back after scrolling\n Waypoint.enableAll();\n // compute diffs visible in the viewport\n computeVisibleDiffs();\n }\n });\n}\n\n// callback when the user clicks on the 'Compute all diffs' button\nexport function computeAllDiffs(event) {\n $(event.currentTarget).addClass('active');\n for (const diffId in diffsUrls) {\n if (diffsUrls.hasOwnProperty(diffId)) {\n computeDiff(diffsUrls[diffId], diffId);\n }\n }\n event.stopPropagation();\n}\n\nexport async function initRevisionDiff(revisionMessageBody, diffRevisionUrl) {\n\n await import(/* webpackChunkName: \"highlightjs\" */ 'utils/highlightjs');\n\n // callback when the 'Changes' tab is activated\n $(document).on('shown.bs.tab', 'a[data-bs-toggle=\"tab\"]', async e => {\n currentTabName = e.currentTarget.text.trim();\n if (currentTabName === 'Changes') {\n window.location.hash = changesUrlFragment;\n $('#readme-panel').css('display', 'none');\n\n if (changes) {\n return;\n }\n\n // request computation of revision file changes list\n // when navigating to the 'Changes' tab and add diff panels\n // to the DOM when receiving the result\n const response = await fetch(diffRevisionUrl);\n const data = await response.json();\n\n changes = data.changes;\n nbChangedFiles = data.total_nb_changes;\n let changedFilesText = `${nbChangedFiles} changed file`;\n if (nbChangedFiles !== 1) {\n changedFilesText += 's';\n }\n $('#swh-revision-changed-files').text(changedFilesText);\n $('#swh-total-nb-diffs').text(changes.length);\n $('#swh-revision-changes-list pre')[0].innerHTML = data.changes_msg;\n\n $('#swh-revision-changes-loading').css('display', 'none');\n $('#swh-revision-changes-list pre').css('display', 'block');\n $('#swh-compute-all-diffs').css('visibility', 'visible');\n $('#swh-revision-changes-list').removeClass('in');\n\n if (nbChangedFiles > changes.length) {\n $('#swh-too-large-revision-diff').css('display', 'block');\n $('#swh-nb-loaded-diffs').text(changes.length);\n }\n\n for (let i = 0; i < changes.length; ++i) {\n const diffData = changes[i];\n diffsUrls[diffData.id] = diffData.diff_url;\n $('#swh-revision-diffs').append(genDiffPanel(diffData));\n }\n\n setupWaypoints();\n computeVisibleDiffs();\n\n if (selectedDiffLinesInfo) {\n scrollToDiffPanel(selectedDiffLinesInfo.diffPanelId, false);\n }\n\n } else if (currentTabName === 'Files') {\n removeUrlFragment();\n $('#readme-panel').css('display', 'block');\n }\n });\n\n $(document).ready(() => {\n\n if (revisionMessageBody.length > 0) {\n $('#swh-revision-message').addClass('in');\n } else {\n $('#swh-collapse-revision-message').attr('data-bs-toggle', '');\n }\n\n // callback when the user requests to scroll on a specific diff or back to top\n $('#swh-revision-changes-list a[href^=\"#\"], #back-to-top a[href^=\"#\"]').click(e => {\n const href = $.attr(e.currentTarget, 'href');\n scrollToDiffPanel(href);\n return false;\n });\n\n // click callback for highlighting diff lines\n $('body').click(evt => {\n\n if (currentTabName !== 'Changes') {\n return;\n }\n\n if (evt.target.classList.contains('hljs-ln-n')) {\n\n const diffId = $(evt.target).closest('code').prop('id');\n\n const from = diffId.indexOf('-from') !== -1;\n const to = diffId.indexOf('-to') !== -1;\n\n const lineNumbers = $(evt.target).data('line-number').toString();\n\n const currentDiff = diffId.replace('-from', '').replace('-to', '');\n if (!evt.shiftKey || currentDiff !== focusedDiff || !lineNumbers.trim()) {\n resetHighlightedDiffLines();\n focusedDiff = currentDiff;\n }\n if (currentDiff === focusedDiff && lineNumbers.trim()) {\n if (!evt.shiftKey) {\n startLines = parseDiffLineNumbers(lineNumbers, from, to);\n highlightDiffLines(currentDiff, startLines, startLines, !from && !to);\n } else if (startLines) {\n resetHighlightedDiffLines(false);\n endLines = parseDiffLineNumbers(lineNumbers, from, to);\n highlightDiffLines(currentDiff, startLines, endLines, !from && !to);\n }\n }\n\n } else {\n resetHighlightedDiffLines();\n }\n });\n\n // if an URL fragment for highlighting a diff is present\n // parse highlighting info and initiate diff loading\n const fragment = window.location.hash;\n if (fragment) {\n const split = fragment.split('+');\n if (split.length === 2) {\n selectedDiffLinesInfo = fragmentToSelectedDiffLines(split[1]);\n if (selectedDiffLinesInfo) {\n selectedDiffLinesInfo.diffPanelId = split[0];\n $(`.nav-tabs a[href=\"${changesUrlFragment}\"]`).tab('show');\n }\n }\n if (fragment === changesUrlFragment) {\n $(`.nav-tabs a[href=\"${changesUrlFragment}\"]`).tab('show');\n }\n }\n\n });\n\n}\n","var OverloadYield = require(\"./OverloadYield.js\");\nvar regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction AsyncIterator(t, e) {\n function n(r, o, i, f) {\n try {\n var c = t[r](o),\n u = c.value;\n return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {\n n(\"next\", t, i, f);\n }, function (t) {\n n(\"throw\", t, i, f);\n }) : e.resolve(u).then(function (t) {\n c.value = t, i(c);\n }, function (t) {\n return n(\"throw\", t, i, f);\n });\n } catch (t) {\n f(t);\n }\n }\n var r;\n this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, \"function\" == typeof Symbol && Symbol.asyncIterator || \"@asyncIterator\", function () {\n return this;\n })), regeneratorDefine(this, \"_invoke\", function (t, o, i) {\n function f() {\n return new e(function (e, r) {\n n(t, i, e, r);\n });\n }\n return r = r ? r.then(f, f) : f();\n }, !0);\n}\nmodule.exports = AsyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction _regenerator() {\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n var e,\n t,\n r = \"function\" == typeof Symbol ? Symbol : {},\n n = r.iterator || \"@@iterator\",\n o = r.toStringTag || \"@@toStringTag\";\n function i(r, n, o, i) {\n var c = n && n.prototype instanceof Generator ? n : Generator,\n u = Object.create(c.prototype);\n return regeneratorDefine(u, \"_invoke\", function (r, n, o) {\n var i,\n c,\n u,\n f = 0,\n p = o || [],\n y = !1,\n G = {\n p: 0,\n n: 0,\n v: e,\n a: d,\n f: d.bind(e, 4),\n d: function d(t, r) {\n return i = t, c = 0, u = e, G.n = r, a;\n }\n };\n function d(r, n) {\n for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {\n var o,\n i = p[t],\n d = G.p,\n l = i[2];\n r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));\n }\n if (o || r > 1) return a;\n throw y = !0, n;\n }\n return function (o, p, l) {\n if (f > 1) throw TypeError(\"Generator is already running\");\n for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {\n i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);\n try {\n if (f = 2, i) {\n if (c || (o = \"next\"), t = i[o]) {\n if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\");\n if (!t.done) return t;\n u = t.value, c < 2 && (c = 0);\n } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1);\n i = e;\n } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;\n } catch (t) {\n i = e, c = 1, u = t;\n } finally {\n f = 1;\n }\n }\n return {\n value: t,\n done: y\n };\n };\n }(r, o, i), !0), u;\n }\n var a = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n t = Object.getPrototypeOf;\n var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {\n return this;\n }), t),\n u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n function f(e) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e;\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, \"constructor\", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", regeneratorDefine(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), regeneratorDefine(u), regeneratorDefine(u, o, \"Generator\"), regeneratorDefine(u, n, function () {\n return this;\n }), regeneratorDefine(u, \"toString\", function () {\n return \"[object Generator]\";\n }), (module.exports = _regenerator = function _regenerator() {\n return {\n w: i,\n m: f\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/**\n * Copyright (C) 2019 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nimport {staticAsset} from 'utils/functions';\n\n// Constants defining Bootstrap Breakpoints\nexport const BREAKPOINT_SM = 768;\nexport const BREAKPOINT_MD = 992;\nexport const BREAKPOINT_LG = 1200;\n\nexport const swhSpinnerSrc = staticAsset('img/swh-spinner.gif');\n\nexport const dataTableCommonConfig = {\n serverSide: true,\n processing: true,\n language: {\n processing: `<img src=\"${swhSpinnerSrc}\"></img>`\n },\n fixedHeader: true,\n lengthMenu: [10, 25, 50, 100, 1000],\n scrollCollapse: true,\n searchDelay: 1000\n};\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (C) 2019 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nexport function revsOrderingTypeClicked(event) {\n const urlParams = new URLSearchParams(window.location.search);\n const orderingType = $(event.target).val();\n if (orderingType) {\n urlParams.set('revs_ordering', $(event.target).val());\n } else if (urlParams.has('revs_ordering')) {\n urlParams.delete('revs_ordering');\n }\n window.location.search = urlParams.toString();\n}\n\nexport function initRevisionsLog() {\n $(document).ready(() => {\n const urlParams = new URLSearchParams(window.location.search);\n const revsOrderingType = urlParams.get('revs_ordering');\n if (revsOrderingType) {\n $(`:input[value=\"${revsOrderingType}\"]`).prop('checked', true);\n }\n });\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorValues(e) {\n if (null != e) {\n var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"],\n r = 0;\n if (t) return t.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) return {\n next: function next() {\n return e && r >= e.length && (e = void 0), {\n value: e && e[r++],\n done: !e\n };\n }\n };\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n}\nmodule.exports = _regeneratorValues, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nfunction _regeneratorAsync(n, e, r, t, o) {\n var a = regeneratorAsyncGen(n, e, r, t, o);\n return a.next().then(function (n) {\n return n.done ? n.value : a.next();\n });\n}\nmodule.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorDefine(e, r, n, t) {\n var i = Object.defineProperty;\n try {\n i({}, \"\", {});\n } catch (e) {\n i = 0;\n }\n module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {\n function o(r, n) {\n _regeneratorDefine(e, r, function (e) {\n return this._invoke(r, n, e);\n });\n }\n r ? i ? i(e, r, {\n value: n,\n enumerable: !t,\n configurable: !t,\n writable: !t\n }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2));\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _regeneratorDefine(e, r, n, t);\n}\nmodule.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"swh:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + \"highlightjs\" + \".\" + \"516e784a1e62011c7605\" + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + \"highlightjs\" + \".\" + \"37238c93749cb449800d\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/static/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t552: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"940\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t552: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkswh\"] = self[\"webpackChunkswh\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["root","factory","exports","module","define","amd","self","regenerator","regeneratorAsyncIterator","r","e","t","o","n","w","Promise","__esModule","Object","unshift","length","pop","value","done","OverloadYield","regeneratorAsync","regeneratorAsyncGen","regeneratorKeys","regeneratorValues","_regeneratorRuntime","m","getPrototypeOf","__proto__","constructor","displayName","name","a","stop","v","abrupt","delegateYield","resultName","d","finish","f","_t","p","prev","next","sent","call","this","wrap","reverse","isGeneratorFunction","mark","awrap","AsyncIterator","async","u","keys","values","keyCounter","allWaypoints","Waypoint","options","Error","element","handler","key","Adapter","extend","defaults","adapter","callback","axis","horizontal","enabled","triggerPoint","group","Group","findOrCreate","context","Context","findOrCreateByElement","offsetAliases","offset","add","prototype","queueTrigger","direction","trigger","args","apply","destroy","remove","disable","enable","refresh","previous","invokeAll","method","allWaypointsArray","waypointKey","push","i","end","destroyAll","disableAll","enableAll","refreshAll","viewportHeight","window","innerHeight","document","documentElement","clientHeight","viewportWidth","clientWidth","adapters","continuous","outerHeight","innerWidth","outerWidth","requestAnimationFrameShim","setTimeout","contexts","oldWindowLoad","onload","didScroll","didResize","oldScroll","x","scrollLeft","y","scrollTop","waypoints","vertical","waypointContextKey","windowContext","createThrottledScrollHandler","createThrottledResizeHandler","waypoint","checkEmpty","horizontalEmpty","isEmptyObject","verticalEmpty","isWindow","off","resizeHandler","handleResize","on","requestAnimationFrame","scrollHandler","handleScroll","isTouch","triggeredGroups","axes","newScroll","forward","backward","axisKey","wasBeforeTriggerPoint","nowAfterTriggerPoint","id","groupKey","flushTriggers","contextOffset","undefined","left","contextScroll","contextDimension","offsetProp","top","contextModifier","wasBeforeScroll","nowAfterScroll","triggeredForward","adjustment","oldTriggerPoint","elementOffset","freshWaypoint","parseFloat","indexOf","Math","ceil","floor","findByElement","contextId","mozRequestAnimationFrame","webkitRequestAnimationFrame","byTriggerPoint","b","byReverseTriggerPoint","groups","clearTriggerQueues","triggerQueues","up","down","right","sort","index","inArray","splice","first","last","$","jQuery","JQueryAdapter","$element","each","Array","slice","arguments","createExtension","framework","overrides","isFunction","closest","fn","Zepto","staticAsset","asset","origin","url","__STATIC__","startsWith","removeUrlFragment","history","replaceState","title","location","pathname","search","anonymous","locals","escapeFn","include","rethrow","markup","String","replace","_MATCH_HTML","encode_char","_ENCODE_HTML_RULES","c","__output","__append","s","diffData","diffPanelTitle","content_url","swhSpinnerSrc","asyncGeneratorStep","resolve","then","_asyncToGenerator","_next","_throw","selectedDiffLinesInfo","changes","nbChangedFiles","nbDiffsComputed","nbAdditions","nbDeletions","computedDiffs","diffsUrls","startLines","endLines","diffMaxNumberChars","focusedDiff","changesUrlFragment","currentTabName","isInViewport","elt","elementTop","elementBottom","viewportTop","viewportBottom","height","formatDiffLineNumbers","diffId","fromLine","toLine","maxNumberChars","fromLineStr","toLnStr","toLineStr","ret","parseDiffHunkRangeIfAny","lineText","baseFromLine","baseToLine","linesInfoRegExp","RegExp","linesInfoRegExp2","linesInfoRegExp3","linesInfoRegExp4","linesInfo","exec","linesInfo2","linesInfo3","linesInfo4","parseInt","toLnInt","lnStr","lnInt","toString","parseDiffLineNumbers","lineNumbersStr","from","to","lines","lineNumber","trim","split","shift","map","selectedDiffLinesToFragment","unified","selectedLinesFragment","fragmentToSelectedDiffLines","fragment","matchObj","highlightDiffLine","line","lineNumbers","css","resetHighlightedDiffLines","resetVars","hash","highlightDiffLines","firstHighlightedLine","start","startLine","endLine","position","_ref","lineTd","tr","children","data","min","max","leftLine","rightLine","leftLineAbove","fromTr","fromLn","toTr","toLn","canHighlight","showUnifiedDiff","showSplitDiff","computeDiff","_x","_x2","_computeDiff","_callee","diffUrl","setLineNumbers","response","fromToLines","fromLines","toLines","diffFromStr","diffToStr","linesOffset","_context","lnElt","attr","siblings","hasOwnProperty","fetch","json","addClass","diff_str","innerHTML","setDiffVisible","text","removeClass","language","hljs","highlightElement","lineNumbersElementSync","lnText","nextSibling","innerText","j","abs","parent","linesInfoText","find","append","firstChild","nodeName","substr","newTextNode","createTextNode","prepend","contents","filter","nodeType","textNode","swhNoNewLineMarker","textContent","prop","diffPanelId","animate","duration","computeVisibleDiffs","genDiffPanel","path","type","from_path","to_path","diffPanelTemplate","setupWaypoints","scrollToDiffPanel","setHash","complete","computeAllDiffs","event","currentTarget","stopPropagation","initRevisionDiff","_x3","_x4","_initRevisionDiff","_callee3","revisionMessageBody","diffRevisionUrl","_context3","_ref2","_callee2","changedFilesText","_context2","total_nb_changes","changes_msg","diff_url","_x5","ready","click","evt","target","classList","contains","currentDiff","shiftKey","tab","regeneratorDefine","Symbol","asyncIterator","_regenerator","iterator","toStringTag","Generator","create","G","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","setPrototypeOf","assign","source","init","converter","defaultAttributes","set","attributes","expires","Date","now","toUTCString","encodeURIComponent","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","write","get","cookies","jar","parts","join","found","read","withAttributes","withConverter","freeze","k","revsOrderingTypeClicked","urlParams","URLSearchParams","val","has","initRevisionsLog","revsOrderingType","_typeof","isNaN","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_regeneratorDefine","defineProperty","_invoke","enumerable","configurable","writable","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","chunkId","all","reduce","promises","miniCssF","g","obj","script","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","onerror","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","head","appendChild","loadStylesheet","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","err","code","request","insertBefore","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","some","chunkLoadingGlobal"],"sourceRoot":""}
|