PageSourceSearch

https://opensupplyhub.org/auth/login

html opensupplyhub.org collected 2026-10-03 19:37:52 UTC 13,196 bytes, 144 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <meta charset="utf-8">
5    
5<script>
6      // Browserify/webpack-era dependencies (e.g. object-hash) expect
7      // node's `global`; webpack 4 shimmed it, Vite does not. Vite's
8      // `define` doesn't reach pre-bundled deps, so shim it at runtime.
9      window.global = window;
10    </script>
10
11    <meta http-equiv="cache-control" content="max-age=0" />
12    <meta http-equiv="cache-control" content="no-cache" />
13    <meta http-equiv="expires" content="0" />
14    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
15    <meta http-equiv="pragma" content="no-cache" />
16    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
17
18    <link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png">
19    <link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png">
20    <link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png">
21    <link rel="manifest" href="/favicon/site.webmanifest">
22    <link rel="mask-icon" href="/favicon/safari-pinned-tab.svg" color="#000000">
23    <meta name="msapplication-TileColor" content="#ffffff">
24    <meta name="theme-color" content="#ffffff">
25    <title>Open Supply Hub</title>
26    <meta property="og:title" content="Open Supply Hub">
27    <meta name="description" content="Open Supply Hub (OS Hub) is an accessible, collaborative, supply chain mapping platform, used and populated by stakeholders across sectors and supply chains.">
28    <meta property="og:description" content="Open Supply Hub (OS Hub) is an accessible, collaborative, supply chain mapping platform, used and populated by stakeholders across sectors and supply chains.">
29    <meta property="og:url" content="https://opensupplyhub.org">
30    <meta property="og:site_name" content="Open Supply Hub">
31    <meta property="og:image" content="/images/preview.png">
32
33    <meta name="twitter:card" content="summary_large_image">
34    <meta name="twitter:site" content="@OpenSupplyHub">
35    <meta name="twitter:title" content="Open Supply Hub">
36    <meta name="twitter:description" content="Open Supply Hub (OS Hub) is an accessible, collaborative, supply chain mapping platform, used and populated by stakeholders across sectors and supply chains.">
37    <meta name="twitter:image" content="/images/preview.png">
38
39    <!-- Environment Variables -->
40    
40<script src="/web/environment.js"></script>
40
41    <!-- Google Analytics -->
42    
42<script>
43        if (window.ENVIRONMENT &&
44            window.ENVIRONMENT.REACT_APP_GOOGLE_ANALYTICS_KEY &&
45            window.ENVIRONMENT.REACT_APP_GOOGLE_ANALYTICS_KEY !== "") {
46            // Initially disable tracking until we check that the user has accepted the notification
47            //
48            // See: https://developers.google.com/analytics/devguides/collection/analyticsjs/user-opt-out
49            //
50            // We will later delete this key and start Google Analytics tracking in the application code
51            // if it is verified that the user has selected "Accept" for the Google Analytics tracking
52            // notification. See: /src/react/src/util/analytics/consent.js
53            //
54            // Set for every environment to ensure it is always set.
55            var disableGAKey = 'ga-disable-' + window.ENVIRONMENT.REACT_APP_GOOGLE_ANALYTICS_KEY;
56            window[disableGAKey] = true;
57        }
58    </script>
58
59    
59<script async id="analytics"></script>
59
60    
60<script>
61        if (window.ENVIRONMENT &&
62            window.ENVIRONMENT.REACT_APP_GOOGLE_ANALYTICS_KEY &&
63            window.ENVIRONMENT.REACT_APP_GOOGLE_ANALYTICS_KEY !== "") {
64            // Import the Google Analytics script. This must occur AFTER the GA key is disabled.
65            var rootGtagUrl = "https://www.googletagmanager.com/gtag/js?id="
66            var analyticsKey = window.ENVIRONMENT.REACT_APP_GOOGLE_ANALYTICS_KEY;
67            document.getElementById('analytics').src = rootGtagUrl + analyticsKey;
68        }
69    </script>
69
70    <!-- End Google Analytics -->
71    <!--
72      Rollbar Configuration
73      https://docs.rollbar.com/docs/browser-js
74    -->
75    
75<script>
76      if (window.ENVIRONMENT &&
77          window.ENVIRONMENT.REACT_APP_ROLLBAR_CLIENT_SIDE_ACCESS_TOKEN &&
78          window.ENVIRONMENT.ENVIRONMENT !== 'local') {
79        var _rollbarConfig = {
80          accessToken: window.ENVIRONMENT.REACT_APP_ROLLBAR_CLIENT_SIDE_ACCESS_TOKEN,
81          captureUncaught: true,
82          captureUnhandledRejections: true,
83          captureIp: false,
84          payload: {
85            environment: window.ENVIRONMENT.ENVIRONMENT,
86            javascript: {
87              code_version: "%REACT_APP_GIT_COMMIT%"
88            }
89          }
90        };
91
92        // Rollbar Snippet
93        !function(r){function e(n){if(o[n])return o[n].exports;var t=o[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}var o={};return e.m=r,e.c=o,e.p="",e(0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.4.6/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,e){this.options=r,this._rollbarOldOnError=null;var o=s++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}function a(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(e);return n(function(){e.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),e.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=e.autoInstrument;return e.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[o]=t,t})()}}function l(r){return n(function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=o(2),s=0,d=o(3),c=function(r,e){return new t(r,e)},p=function(r){return new d(c,r)};t.prototype.loadFull=function(r,e,o,t,a){var l=function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(e);break}}"function"==typeof a&&a(e)},i=!1,s=e.createElement("script"),d=e.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,o||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw e&&("string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e),e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,e){"use strict";function o(r,e,o){if(r){var t;if("function"==typeof e._rollbarOldOnError)t=e._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;e._rollbarOldOnError=t}var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};o&&(a._rollbarOldOnError=t),r.onerror=a}}function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}
93function t(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){t="[unhandledrejection] error getting `detail` from event"}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,e,o){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(e,r[t].prototype,o)}}function l(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:o,captureUnhandledRejections:t,wrapGlobals:a}},function(r,e){"use strict";function o(r,e){this.impl=r(e,this),this.options=e,n(o.prototype)}function n(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}o.prototype._swapAndProcessMessages=function(r,e){this.impl=r(this.options);for(var o,n,t;o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=o},function(r,e){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){r=r||{};for(var o,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
94        // End Rollbar Snippet
95      }
96    </script>
96
97    <!--
98      Dark Visitors
99      https://darkvisitors.com/docs/analytics
100    -->
101    
101<script>
102      if (
103        window.ENVIRONMENT &&
104        window.ENVIRONMENT.DARK_VISITORS_PROJECT_KEY &&
105        window.ENVIRONMENT.ENVIRONMENT !== 'local'
106      ) {
107        const script = document.createElement('script');
108        script.src = 'https://darkvisitors.com/tracker.js?project_key=' + window.ENVIRONMENT.DARK_VISITORS_PROJECT_KEY;
109        script.defer = true;
110        document.head.appendChild(script);
111      }
112    </script>
112
113    <!-- End Dark Visitors -->
114    
114<script type="module" crossorigin src="/assets/index-Slv0gJYa.js"></script>
114
115    <link rel="stylesheet" crossorigin href="/assets/index-y5saDvbW.css">
116  </head>
117  <body>
118    <div id="root"></div>
119    
119<script type="text/javascript">
120      var head = document.getElementsByTagName('head')[0];
121
122      // Save the original method
123      var insertBefore = head.insertBefore;
124
125      // Remove the default Google Font download initiated by the `ReactLeafletGoogleLayer` component.
126      head.insertBefore = function (newElement, referenceElement) {
127
128        if (
129          newElement.href &&
130          (newElement.href.indexOf(
131              'https://fonts.googleapis.com/css?family=Roboto',
132          ) === 0 ||
133            newElement.href.indexOf(
134              'https://fonts.googleapis.com/css?family=Google+Sans+Text',
135          ) === 0)
136        ) {
137          return;
138        }
139
140        insertBefore.call(head, newElement, referenceElement);
141      };
142    </script>
142
143  </body>
144</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.