CINXE.COM

Blackboard

<!DOCTYPE HTML > <html lang="en-US"> <head> <title>Blackboard</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta id="request-method" name="request-method" content="GET"> <meta name="author" content="Blackboard"> <meta name="copyright" content="&copy; 1997-2024 Blackboard Inc. All Rights Reserved. U.S. Patent No. 7,493,396 and 7,558,853. Additional Patents Pending."> <meta name="keywords" content="Blackboard"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="-1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"errorBeacon":"bam.nr-data.net","licenseKey":"232bf20b67","agent":"","beacon":"bam.nr-data.net","applicationTime":9,"applicationID":"496994567","transactionName":"blwDZBYHCkBRW0QLVlcWMkQWExBAcVtEC1ZXFgNcBQUPUV9ZQgYXTlwDURQWFx1SVFEBUltWAEIASAVGRFBVDE1QWgBEDQkKHXxXVwtXeFoVWQsI","queueTime":0}; (window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"232bf20b67",applicationID:"496994567"};;/*! For license information please see nr-loader-rum-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>h,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function h(e,t){if(!e)throw new Error(f);var r=g(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.274.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>d,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,d=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=h(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=m()[s[e]];p&&p.push([f,e,r,a]);return a},get:v,listeners:h,context:g,buffer:function(e,t){const r=m();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!m()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function v(t){return d[t]=d[t]||e(f,t)}function m(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],v=["setErrorHandler","finished","addToTrace","addRelease"];var m=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function E(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function _(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(E,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,m.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},v.forEach((e=>{h[e]=j(E,e,!0,"api")})),h.addPageAction=j(E,"addPageAction",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,m.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,m.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,m.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[(0,m.t)(),...arguments],r?null:this,i,w),r?void 0:this}}function k(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,m.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},d.RI?(0,u.GG)((()=>k()),!0):k(),h}var N=r(9417),T=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var k=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function P(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:l={},exposed:f=!0}=t;l.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,N.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,T.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},d.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,N.D0)(e.agentIdentifier),v=[c.beacon,c.errorBeacon];O||(h.proxy.assets&&(I(h.proxy.assets),v.push(h.proxy.assets)),h.proxy.beacon&&v.push(h.proxy.beacon),E(),(0,g.US)("activatedFeatures",k.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),l.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?v:[]],l.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,l),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=_(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.274.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={296:"sha512-gkYkZDAwQ9PwaDXs2YM+rNIdRej1Ac1mupWobRJ8eahQcXz6/sunGZCKklrzi5kWxhOGRZr2tn0rEKuLTXzfAA=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={840:0,374:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(7603);var l=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const v=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function m(e){return!!(0,h.dV)().o.MO&&v(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(v(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(296).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return m(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(9908),E=i(2843),x=i(3878),_=i(782),N=i(1863);class T extends y{static featureName=_.T;constructor(e,t=!0){super(e,_.T,t),p.RI&&((0,E.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,_.T,this.ee)),!0),(0,x.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,_.T,this.ee))),this.importAggregator(e))}}var S=i(3969);class j extends y{static featureName=S.TZ;constructor(e,t=!0){super(e,S.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,T,j],loaderType:"lite"})})()})();</script> <link rel="SHORTCUT ICON" type="image/x-icon" href="/favicon.ico"> <link rel="stylesheet" type="text/css" href="/ui-ultra/css/ultra.css?v=3900.104.0-rel.32+1fca56e" id="css_0"> <link rel="stylesheet" type="text/css" href="/ui-ultra/css/multi_factor_authentication.css?v=3900.104.0-rel.32+1fca56e_authLogin" id="css_1"> <link rel="stylesheet" type="text/css" href="/webapps/vtbe-tinymce/css/prism/prism.css?v=3900.104.0-rel.32+1fca56e" id="css_2"> <link rel="stylesheet" type="text/css" href="/webapps/videointegration/css/video-integration.css?v=3900.104.0-rel.32+1fca56e_3900.104.0-rel.32+1fca56e" id="css_3"> <link rel="stylesheet" type="text/css" href="/webapps/allyintegration/css/ally-integration.css?v=3900.104.0-rel.32+1fca56e_3900.104.0-rel.32+1fca56e" id="css_4"> <link rel="stylesheet" type="text/css" media="print" href="https://learn.content.blackboardcdn.com/3900.104.0-rel.32+1fca56e/ui/styles/print.css?v=3900.104.0-rel.32+1fca56e"> <script type="text/javascript" src="https://learn.content.blackboardcdn.com/3900.104.0-rel.32+1fca56e/javascript/i18n.js?v=3900.104.0-rel.32+1fca56e"></script> <script language='javascript' type='text/javascript'> var JS_RESOURCES = new Object(); function _init_bundle_JS_RESOURCES() { JS_RESOURCES['validation.email'] = 'A complete email address (for example, info@blackboard.com) must be entered.'; JS_RESOURCES['validation.radio.required'] = 'Make a selection to continue.'; JS_RESOURCES['assessment.incomplete.confirm.backtrackProhibited.survey'] = 'The following questions may be incomplete:\n {0}\nClick cancel to return to the survey. Click Ok to save the incomplete answer.'; JS_RESOURCES['common.list.separator.comma'] = '{0}, {1}'; JS_RESOURCES['validation.duplicate'] = 'User(s) {0} appear more than once. Remove duplicate user name(s).'; JS_RESOURCES['active.filter.search.terms'] = 'Search Terms'; JS_RESOURCES['validation.points.decimal.places.error.location'] = 'Point Values are limited to 5 decimal places: {0}.'; JS_RESOURCES['validation.maximum_length.plural'] = 'Must not contain more than {1} characters: {0}.\nReduce the size of the input by {2} characters.'; JS_RESOURCES['assessment.incomplete.confirm.backtrackProhibited'] = 'The following questions may be incomplete:\n {0}\nClick cancel to return to the test. Click Ok to save the incomplete answer.'; JS_RESOURCES['validation.multiSelect.minItems'] = 'Multiselect box should contain at least {0} number of items.'; JS_RESOURCES['validation.cmp_field.required'] = 'A value must be provided for {0}\nwhen {1} field is not empty'; JS_RESOURCES['warning.email'] = 'Email address is a recommended field. Users will be unable to use parts of the system without an email address.'; JS_RESOURCES['validation.maximum_length.no_name.singular'] = 'Must not contain more than {0} characters.\nReduce the size of the input by one character.'; JS_RESOURCES['validation.multiSelect.maxItems'] = 'Multiselect box should not contain more than {0} number of items.'; JS_RESOURCES['validation.number'] = 'A valid numeric value must be entered: {0}.'; JS_RESOURCES['validation.date.required'] = 'A complete date value must be provided: {0}.'; JS_RESOURCES['portalmodule.section.remove'] = 'Delete: {0}?'; JS_RESOURCES['show.helptext'] = 'Show Help Text'; JS_RESOURCES['validation.password'] = 'Password cannot be empty or contain only spaces.'; JS_RESOURCES['validation.percent'] = 'A valid percent value between 0 and 100 must be entered.'; JS_RESOURCES['validation.mismatch'] = 'The values entered do not match: {0}.\nConfirm: {0}.'; JS_RESOURCES['validation.maximum_length.no_name.plural'] = 'Must not contain more than {0} characters.\nReduce the size of the input by {1} characters.'; JS_RESOURCES['validation.invalid_value'] = 'Invalid numeric value provided: {0}.'; JS_RESOURCES['field_name.substitute'] = '\'\'{0}\'\' input field'; JS_RESOURCES['validation.required'] = 'A value must be provided: {0}.'; JS_RESOURCES['active.filter.free.form.text.blank'] = 'Specify a value for the search text field'; JS_RESOURCES['validate.alignment.missing.content'] = 'You selected alignments but did not select any alignable content to copy.'; JS_RESOURCES['validation.system_role.reserve'] = '"bb" is not permitted at the beginning of a role ID.'; JS_RESOURCES['validation.date_past'] = 'The end date cannot be earlier than the start date.'; JS_RESOURCES['validation.invalid_chars'] = 'Contains illegal characters: {0}.\nDelete these characters: {1}'; JS_RESOURCES['confirm.delete_item_value'] = 'This item {0} will be deleted. Continue?'; JS_RESOURCES['hide.helptext'] = 'Hide Help Text'; JS_RESOURCES['validate.range.lessthen.str'] = 'Less Than {0}'; JS_RESOURCES['validation.date_past.confirm'] = 'The time is in the past.\nContinue with this time?'; JS_RESOURCES['validate.login.invalid.username.or.pass'] = 'Enter a username and password.'; JS_RESOURCES['validation.negative'] = 'A valid non-negative value must be entered: {0}.'; JS_RESOURCES['validation.url'] = 'A valid URL (for example, http://www.myschool.edu) must be entered.'; JS_RESOURCES['validate.range.overlap'] = 'criteria ({0}) overlaps criteria ({1}).'; JS_RESOURCES['validate.range.between.str'] = 'Between {0} and {1}'; JS_RESOURCES['validation.portal.tool.items.remove'] = 'Delete: {0}?'; JS_RESOURCES['validation.association.refresh.confirm'] = 'The associated items information might have been updated.\nClick \'OK\' to refresh the list or click \'Cancel\' to keep the current page.'; JS_RESOURCES['validate.enrolloptions.error.codeconflict'] = 'The Access Code Enrollment option conflicts with the selection of {instructor} Led enrollment.'; JS_RESOURCES['validation.points.decimal.places'] = 'Point Values are limited to 5 decimal places.'; JS_RESOURCES['validation.option.required'] = 'At least one option must be selected from the list.'; JS_RESOURCES['list.checkToSelectAllItems'] = 'Check to select all items'; JS_RESOURCES['active.filter.changed.alert'] = 'criteria now contains'; JS_RESOURCES['vtbe.artifact.footer.validate.nameIfSaveArtifact'] = 'Specify a Name in order to Save as a Reusable Object.'; JS_RESOURCES['validate.invalidate.number'] = 'Please input valid number instead of {0}.'; JS_RESOURCES['validation.valid_course_id'] = 'Course id contains illegal characters or multibyte characters.'; JS_RESOURCES['assessment.incomplete.confirm'] = 'The following questions may be incomplete:\n {0}\nClick cancel to return to the test. Click Ok to submit assessment.'; JS_RESOURCES['validate.enrolloptions.error.nooption'] = 'Warning: Choose either the {instructor} Led or the Self-Enrollment option.'; JS_RESOURCES['validation.date_equal'] = 'The start date cannot be equal to the end date.'; JS_RESOURCES['validation.cmp_field.rejected'] = 'The {0} cannot be used without a corresponding {1} value.'; JS_RESOURCES['validation.time.required'] = 'A complete time value must be provided: {0}.'; JS_RESOURCES['validation.institutionemail'] = 'Enter a complete and unique email address (for example, info@blackboard.com) if an institution email is used.'; JS_RESOURCES['validation.integer_number'] = 'A valid integer numeric value must be entered: {0}.'; JS_RESOURCES['validation.maximum_length'] = 'Must not contain more than 255 characters'; JS_RESOURCES['validate.enrolloptions.error.emailrequestconflict'] = 'The selected email enrollment option conflicts with the self-enrollment selection.'; JS_RESOURCES['invalid_char.space'] = 'space'; JS_RESOURCES['validate.range.morethen.str'] = 'More Than {0}'; JS_RESOURCES['notification.submit'] = 'Action already submitted.\nWait until the action is complete.'; JS_RESOURCES['validation.plain_text.confirm'] = 'To display equations correctly in this document, Smart Text or HTML format must be selected.\nClick \'OK\' to save in selected Plain Text format or click \'Cancel\' to select a new format.'; JS_RESOURCES['invalid_char.comma'] = 'comma'; JS_RESOURCES['validation.allow_negtive.percent'] = 'A valid percent value between -100 and 100 must be entered.'; JS_RESOURCES['confirm.remove_item'] = 'This action is final and cannot be undone. Continue?'; JS_RESOURCES['list.uncheckToDeselectAllItems'] = 'Uncheck to deselect all items'; JS_RESOURCES['validation.maximum_length.singular'] = 'Must not contain more than {1} characters: {0}.\nReduce the size of the input by one character.'; JS_RESOURCES['validation.rubric.decimalplaces'] = 'Too many decimal places. Maximum is 5.'; JS_RESOURCES['validation.minimum_length'] = 'A minimum of {0} characters must be entered: {1}.'; JS_RESOURCES['vtbe.artifact.footer.validate.saveLocationIfSaveArtifact'] = 'Specify a location for the Reusable Object.'; JS_RESOURCES['assessment.incomplete.confirm.survey'] = 'The following questions may be incomplete:\n {0}\nClick cancel to return to the survey. Click Ok to submit assessment.'; JS_RESOURCES['validation.image_type'] = 'Unknown image type: {0}. Image may not display correctly.'; JS_RESOURCES['validate.invalidate.number.space'] = 'Space'; JS_RESOURCES.getString = i18n_get_string; JS_RESOURCES.getFormattedString = i18n_get_formatted_string; } _init_bundle_JS_RESOURCES(); </script> <script language='javascript' type='text/javascript'> var LOCALE_SETTINGS = new Object(); function _init_bundle_LOCALE_SETTINGS() { LOCALE_SETTINGS['LOCALE_SETTINGS.ADDRESS_FIELD_ORDER'] = 'STREET_1 STREET_2 CITY STATE ZIP_CODE COUNTRY'; LOCALE_SETTINGS['number_format.exponent'] = 'eE'; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.COLUMN.2'] = '{1}'; LOCALE_SETTINGS['LOCALE_SETTINGS.YEAR_CHARACTER.03255'] = ''; LOCALE_SETTINGS['BBI18N.SOLARIS_CHARSET'] = 'ISO8859-1'; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.COLUMN.1'] = '{0}'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_COLUMN_FORMAT_MONTH.03255'] = 'ddd'; LOCALE_SETTINGS['LOCALE_SETTINGS.internal_date_format'] = 'MM/dd/yy'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TITLE_FORMAT_MONTH.03259'] = 'MMMM yyyy'; LOCALE_SETTINGS['LOCALE_SETTINGS.TIME_ORDER.00519'] = 'HMP'; LOCALE_SETTINGS['float.format'] = '^(([0-9]{1,3}(\\,[0-9]{3})*)|[0-9]*)(\\.[0-9]+)?$'; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.SORT_COLUMN'] = 'familyName'; LOCALE_SETTINGS['LOCALE_SETTINGS.SHORT'] = '{1} {3}'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_SHORT.02097'] = 'SUN MON TUE WED THU FRI SAT'; LOCALE_SETTINGS['float.allow.negative.format'] = '^((([-]?[0-9]{1,3}(\\,[0-9]{3})*)|[-]?[0-9]*)(\\.[0-9]+)?|\\.[0-9]+)?$'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TYPE'] = 'GREGORIAN'; LOCALE_SETTINGS['LOCALE_SETTINGS.GIVEN_INITIAL_FAMILY_NAME'] = '{4} {3}'; LOCALE_SETTINGS['efloat.format'] = '^(([+-]?[0-9]{1,3}(\\,[0-9]{3})*)|[-]?[0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?$'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TITLE_FORMAT_WEEK.03260'] = 'MMM d[ yyyy]{ \'&#8212;\'[ MMM] d yyyy}'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_FULL.02100'] = 'January February March April May June July August September October November December'; LOCALE_SETTINGS['LOCALE_SETTINGS.NUMBERS_HIJRI_LOCALIZED.00521'] = 'NO'; LOCALE_SETTINGS['LOCALE_SETTINGS.LONG'] = '{0} {1} {2} {3}'; LOCALE_SETTINGS['LOCALE_SETTINGS.WORK_FIELD_ORDER'] = 'JOB_TITLE DEPARTMENT COMPANY B_PHONE_1 B_PHONE_2 B_FAX'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_FULL_HIJRI.02100'] = 'Muḥarram,Ṣafar,Rabīʿ\'al-Awwal,Rabīʿ\'ath-Thānī,Jumādā\'al-Ūlā,Jumādā\'ath-Thāniya,Rajab,Shaʿbān,Ramaḍān,Shawwāl,Dhū\'al-Qaʿda,Dhū\'al-Ḥijja'; LOCALE_SETTINGS['LOCALE_SETTINGS.GREETING'] = 'Welcome, {1}'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_SHORT.00520'] = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'; LOCALE_SETTINGS['number_format.thousands_sep'] = ','; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_COLUMN_FORMAT_WEEK.03256'] = 'ddd M/d'; LOCALE_SETTINGS['LOCALE_SETTINGS.SHORT_SURNAME'] = '{3}, {1}'; LOCALE_SETTINGS['LOCALE_SETTINGS.AM_PM.00522'] = 'AM PM'; LOCALE_SETTINGS['number_format.negative_prefix'] = '-'; LOCALE_SETTINGS['LOCALE_SETTINGS.DATE_ORDER.00519'] = 'MDY'; LOCALE_SETTINGS['LOCALE_SETTINGS.PHONE_FIELD_ORDER'] = 'H_PHONE_1 H_PHONE_2 H_FAX M_PHONE'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_MIN.02099'] = 'Su Mo Tu We Th Fr Sa'; LOCALE_SETTINGS['LOCALE_SETTINGS.24HR_SUPPORT.03208'] = '0'; LOCALE_SETTINGS['LOCALE_SETTINGS.FIRST_DAY_OF_WEEK.03207'] = '0'; LOCALE_SETTINGS['BBI18N.WINDOWS_CHARSET'] = 'ISO-8859-1'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_SHORT_HIJRI.00520'] = 'Muḥarram,Ṣafar,Rabīʿ\'I,Rabīʿ\'II,Jumādā\'I,Jumādā\'II,Rajab,Shaʿbān,Ramaḍān,Shawwāl,Dhū\'al-Qaʿda,Dhū\'al-Ḥijja'; LOCALE_SETTINGS['BBI18N.LINUX_CHARSET'] = 'iso88591'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_CHARACTER.03253'] = ''; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_CHARACTER.03254'] = ''; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.COLUMN_ORDER'] = 'title,givenName,middleName,familyName,suffix,otherName'; LOCALE_SETTINGS['number_format.decimal_point'] = '.'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TITLE_FORMAT_DAY.03258'] = 'dddd, MMM d, yyyy'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAYS.00521'] = '01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31'; LOCALE_SETTINGS['LOCALE_SETTINGS.OVERRIDE_LONG_TIME_WITH_FULL'] = 'false'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_FULL.02098'] = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'; LOCALE_SETTINGS['LOCALE_SETTINGS.date_display_pattern'] = 'MM/DD/YY'; LOCALE_SETTINGS['LOCALE_SETTINGS.EXTENDED_SURNAME'] = '{3}'; LOCALE_SETTINGS['thousand.sep.format'] = ','; LOCALE_SETTINGS['LOCALE_SETTINGS.NUMBERS_HIJRI.00521'] = '0 1 2 3 4 5 6 7 8 9'; LOCALE_SETTINGS['LOCALE_SETTINGS.ADDRESS_ORDER.07832'] = 'street,city,region,postal_code,country'; LOCALE_SETTINGS['number_format.negative_suffix'] = ''; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_COLUMN_FORMAT_DAY.03257'] = 'dddd M/d'; LOCALE_SETTINGS.getString = i18n_get_string; LOCALE_SETTINGS.getFormattedString = i18n_get_formatted_string; } _init_bundle_LOCALE_SETTINGS(); </script> <script language='javascript' type='text/javascript'> var LOCALE_SETTINGS = new Object(); function _init_bundle_LOCALE_SETTINGS() { LOCALE_SETTINGS['LOCALE_SETTINGS.ADDRESS_FIELD_ORDER'] = 'STREET_1 STREET_2 CITY STATE ZIP_CODE COUNTRY'; LOCALE_SETTINGS['number_format.exponent'] = 'eE'; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.COLUMN.2'] = '{1}'; LOCALE_SETTINGS['LOCALE_SETTINGS.YEAR_CHARACTER.03255'] = ''; LOCALE_SETTINGS['BBI18N.SOLARIS_CHARSET'] = 'ISO8859-1'; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.COLUMN.1'] = '{0}'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_COLUMN_FORMAT_MONTH.03255'] = 'ddd'; LOCALE_SETTINGS['LOCALE_SETTINGS.internal_date_format'] = 'MM/dd/yy'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TITLE_FORMAT_MONTH.03259'] = 'MMMM yyyy'; LOCALE_SETTINGS['LOCALE_SETTINGS.TIME_ORDER.00519'] = 'HMP'; LOCALE_SETTINGS['float.format'] = '^(([0-9]{1,3}(\\,[0-9]{3})*)|[0-9]*)(\\.[0-9]+)?$'; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.SORT_COLUMN'] = 'familyName'; LOCALE_SETTINGS['LOCALE_SETTINGS.SHORT'] = '{1} {3}'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_SHORT.02097'] = 'SUN MON TUE WED THU FRI SAT'; LOCALE_SETTINGS['float.allow.negative.format'] = '^((([-]?[0-9]{1,3}(\\,[0-9]{3})*)|[-]?[0-9]*)(\\.[0-9]+)?|\\.[0-9]+)?$'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TYPE'] = 'GREGORIAN'; LOCALE_SETTINGS['LOCALE_SETTINGS.GIVEN_INITIAL_FAMILY_NAME'] = '{4} {3}'; LOCALE_SETTINGS['efloat.format'] = '^(([+-]?[0-9]{1,3}(\\,[0-9]{3})*)|[-]?[0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?$'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TITLE_FORMAT_WEEK.03260'] = 'MMM d[ yyyy]{ \'&#8212;\'[ MMM] d yyyy}'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_FULL.02100'] = 'January February March April May June July August September October November December'; LOCALE_SETTINGS['LOCALE_SETTINGS.NUMBERS_HIJRI_LOCALIZED.00521'] = 'NO'; LOCALE_SETTINGS['LOCALE_SETTINGS.LONG'] = '{0} {1} {2} {3}'; LOCALE_SETTINGS['LOCALE_SETTINGS.WORK_FIELD_ORDER'] = 'JOB_TITLE DEPARTMENT COMPANY B_PHONE_1 B_PHONE_2 B_FAX'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_FULL_HIJRI.02100'] = 'Muḥarram,Ṣafar,Rabīʿ\'al-Awwal,Rabīʿ\'ath-Thānī,Jumādā\'al-Ūlā,Jumādā\'ath-Thāniya,Rajab,Shaʿbān,Ramaḍān,Shawwāl,Dhū\'al-Qaʿda,Dhū\'al-Ḥijja'; LOCALE_SETTINGS['LOCALE_SETTINGS.GREETING'] = 'Welcome, {1}'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_SHORT.00520'] = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'; LOCALE_SETTINGS['number_format.thousands_sep'] = ','; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_COLUMN_FORMAT_WEEK.03256'] = 'ddd M/d'; LOCALE_SETTINGS['LOCALE_SETTINGS.SHORT_SURNAME'] = '{3}, {1}'; LOCALE_SETTINGS['LOCALE_SETTINGS.AM_PM.00522'] = 'AM PM'; LOCALE_SETTINGS['number_format.negative_prefix'] = '-'; LOCALE_SETTINGS['LOCALE_SETTINGS.DATE_ORDER.00519'] = 'MDY'; LOCALE_SETTINGS['LOCALE_SETTINGS.PHONE_FIELD_ORDER'] = 'H_PHONE_1 H_PHONE_2 H_FAX M_PHONE'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_MIN.02099'] = 'Su Mo Tu We Th Fr Sa'; LOCALE_SETTINGS['LOCALE_SETTINGS.24HR_SUPPORT.03208'] = '0'; LOCALE_SETTINGS['LOCALE_SETTINGS.FIRST_DAY_OF_WEEK.03207'] = '0'; LOCALE_SETTINGS['BBI18N.WINDOWS_CHARSET'] = 'ISO-8859-1'; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_SHORT_HIJRI.00520'] = 'Muḥarram,Ṣafar,Rabīʿ\'I,Rabīʿ\'II,Jumādā\'I,Jumādā\'II,Rajab,Shaʿbān,Ramaḍān,Shawwāl,Dhū\'al-Qaʿda,Dhū\'al-Ḥijja'; LOCALE_SETTINGS['BBI18N.LINUX_CHARSET'] = 'iso88591'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_CHARACTER.03253'] = ''; LOCALE_SETTINGS['LOCALE_SETTINGS.MONTH_CHARACTER.03254'] = ''; LOCALE_SETTINGS['LOCALE_SETTINGS.NAME.COLUMN_ORDER'] = 'title,givenName,middleName,familyName,suffix,otherName'; LOCALE_SETTINGS['number_format.decimal_point'] = '.'; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_TITLE_FORMAT_DAY.03258'] = 'dddd, MMM d, yyyy'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAYS.00521'] = '01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31'; LOCALE_SETTINGS['LOCALE_SETTINGS.OVERRIDE_LONG_TIME_WITH_FULL'] = 'false'; LOCALE_SETTINGS['LOCALE_SETTINGS.DAY_FULL.02098'] = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'; LOCALE_SETTINGS['LOCALE_SETTINGS.date_display_pattern'] = 'MM/DD/YY'; LOCALE_SETTINGS['LOCALE_SETTINGS.EXTENDED_SURNAME'] = '{3}'; LOCALE_SETTINGS['thousand.sep.format'] = ','; LOCALE_SETTINGS['LOCALE_SETTINGS.NUMBERS_HIJRI.00521'] = '0 1 2 3 4 5 6 7 8 9'; LOCALE_SETTINGS['LOCALE_SETTINGS.ADDRESS_ORDER.07832'] = 'street,city,region,postal_code,country'; LOCALE_SETTINGS['number_format.negative_suffix'] = ''; LOCALE_SETTINGS['LOCALE_SETTINGS.CALENDAR_COLUMN_FORMAT_DAY.03257'] = 'dddd M/d'; LOCALE_SETTINGS.getString = i18n_get_string; LOCALE_SETTINGS.getFormattedString = i18n_get_formatted_string; } _init_bundle_LOCALE_SETTINGS(); </script> <script type="text/javascript" src="https://learn.content.blackboardcdn.com/3900.104.0-rel.32+1fca56e/javascript/cookie.js"></script> <script type="text/javascript" src="https://learn.content.blackboardcdn.com/3900.104.0-rel.32+1fca56e/javascript/cdn.js"></script> <script type="text/javascript" src="/groupjs/C2D184C970CE1BCD4A955E994AFFE570.js?v=3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/webapps/login/dwr_open/interface/UserDataDWRFacade.js?v=3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/webapps/login/dwr_open/interface/MashupDWRFacade.js?v=3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/ui-ultra/js/hide-focus-outline.js?v=3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/ui-ultra/js/login-page.js?v=3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/groupjs/5ACD15CA33CC25BF720865AAA58EB4A4.js?v=3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/webapps/privacy-disclosure/js/cookieConsent.js?v=3900.104.0-rel.32+1fca56e_3900.104.0-rel.32+1fca56e"></script> <script type="text/javascript" src="/groupjs/7E572F1603C74AC8223B704686E5B888.js?v=3900.104.0-rel.32+1fca56e"></script> </head> <body id="learn-oe-body" class='bb-login hide-focus-outline'> <div id="loginLang" class="clearfix"> <form action="/webapps/portal/execute/changeLocale" method="post" name="locale_picker" target="_top"> <script> function loadLocale(code) { document.locale_picker.locale.value = code; document.locale_picker.submit(); } FastInit.addOnLoad( function() { function displayLanguages() { var $langButton = $('lang-select-button'); var $langMenu = $('lang-list'); function showMenu() { $langMenu.removeClassName('hide'); $langMenu.setAttribute('aria-hidden', 'false'); $langButton.setAttribute('aria-expanded', 'true'); $langButton.addClassName('expanded'); $langMenu.firstDescendant().firstDescendant().focus(); } function hideMenu() { $langMenu.addClassName('hide'); $langMenu.setAttribute('aria-hidden', 'true'); $langButton.setAttribute('aria-expanded', 'false'); $langButton.removeClassName('expanded'); } //toggle logic if ($langMenu.hasClassName('hide')) { showMenu(); } else { hideMenu(); } //Press ESC hides the menu $(document).on('keydown', function (e) { if (e.which == 27) { hideMenu(); } }); $(document).on('click', function (e) { hideMenu(); }); } // reveal available languages on click $('lang-select-button').on('click', 'button', function (e) { displayLanguages(); e.stopPropagation(); }); }); </script> <INPUT TYPE="hidden" NAME="target" value="/webapps/login/?action=login"> <button type="button" class="icon-languages" id="lang-select-button" aria-haspopup="true" aria-expanded="false" aria-controls="lang-list" aria-owns="lang-list" aria-pressed="false" aria-label="Select Language Current Language English (United States&#x202D;)&#x202C;"></button> <ul id="lang-list" class="hide" aria-hidden="true"> <li><a href="javascript:loadLocale('cs_CZ');" lang="cs_CZ" >čeština (Česká republika&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('cy_GB');" lang="cy_GB" >Cymraeg (Cymru&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('da_DK');" lang="da_DK" >Dansk (Danmark&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('de_DE');" lang="de_DE" >Deutsch (Deutschland&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('en_US');" lang="en_US" >English (United States&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('es_ES');" lang="es_ES" >Español (España&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('fr_FR');" lang="fr_FR" >Français (France&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('it_IT');" lang="it_IT" >Italiano (Italia&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('nl_NL');" lang="nl_NL" >Nederlands (Nederland&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('pl_PL');" lang="pl_PL" >Polski (Polska&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('pt_BR');" lang="pt_BR" >Português (Brasil&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('sv_SE');" lang="sv_SE" >Svenska (Sverige&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('tr_TR');" lang="tr_TR" >Türkçe (Türkiye&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('ru_RU');" lang="ru_RU" >Русский (Россия&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('ar_SA');" lang="ar_SA" >العربية</a></li> <li><a href="javascript:loadLocale('ja_JP');" lang="ja_JP" >日本語 (日本&#x202D;)&#x202C;</a></li> <li><a href="javascript:loadLocale('zh_CN');" lang="zh_CN" >简体中文&#x202C; </a></li> <li><a href="javascript:loadLocale('zh_TW');" lang="zh_TW" >繁體中文&#x202C;</a></li> <li><a href="javascript:loadLocale('ko_KR');" lang="ko_KR" >한국어 (한국&#x202D;)&#x202C;</a></li> </ul> <input type="hidden" name="locale"> </form> </div> <div class="row"> <div id="login-block" class="small-11 small-centered medium-12 medium-centered text-center columns"> <h1 class="login-logo new-logo customized-logo" > <span>Blackboard Learn &#8482;</span> <img src="/branding/_1_1/loginLogo/CustomLoginLogo.png?m=lpmw8f31" alt="" /> </h1> <!-- Customization to add extra SSO link --> <div id="sso-block"> <a class="button large expand" href="#"> UCM Student Sign-In </a> </div> <script> if(window.location.host === "ucmo-test.blackboard.com") { var ssoUrl = "https://ucmo-test.blackboard.com/auth-saml/saml/login?apId=_10_1&redirectUrl=https%3A%2F%2Fucmo-test.blackboard.com%2Fultra"; } else { var ssoUrl = "https://ucmo.blackboard.com/auth-saml/saml/login?apId=_539_1&redirectUrl=https%3A%2F%2Fucmo.blackboard.com%2Fultra"; } document.querySelector("#sso-block .button").href = ssoUrl; </script> <!-- End customization --> <!-- Customization to add extra SSO link --> <div id="sso-block2"> <a class="button large expand" href="#"> UCM Faculty & Staff </a> </div> <script> if(window.location.host === "ucmo-test.blackboard.com") { var ssoUrl = "https://ucmo-test.blackboard.com/auth-saml/saml/login?apId=_10_1&redirectUrl=https%3A%2F%2Fucmo-test.blackboard.com%2Fultra"; } else { var ssoUrl = "https://ucmo.blackboard.com/auth-saml/saml/login?apId=_539_1&redirectUrl=https%3A%2F%2Fucmo.blackboard.com%2Fultra"; } document.querySelector("#sso-block2 .button").href = ssoUrl; </script> <!-- End customization --> <!-- Customization to add a button to toggle the default Bb login form --> <button id="toggle-default-login" class="button expand inverse outline"> Extended Studies and Other Users </button> <script> document.querySelector("#toggle-default-login").onclick = function() { var form = document.querySelector("#login-form"); if(form.hasClassName("closed")) { form.classList.add("open"); form.classList.remove("closed"); form.style.height = "auto"; } else { form.classList.add("closed"); form.classList.remove("open"); form.style.height = "0px"; } }; </script> <!-- End customization --> <div id="login-form" class="login-form closed"> <noscript> <div class="receipt bad editmode alert-box alert">Please enable JavaScript in your browser for the Blackboard application to function.</div> </noscript> <form action="/webapps/login/" onsubmit="return validate_form( this, false, true );" method="POST" name="login" > <script type="text/javascript"> function login_openForgotPassword( url ) { var passwordWin = window.open( url, 'forgotPasswordWindow', 'menubar=1,resizable=1,scrollbars=1,status=1,width=850,height=480' ); passwordWin.focus(); } FastInit.addOnLoad(function() { if( typeof ClientCache !== 'undefined' ) { ClientCache.clear(); } var startingJSessionCookie = getCookie("JSESSIONID"); var guestLocaleCookie = getCookie("guest.session.locale"); deleteCookie("JSESSIONID", "/@@", null, true); deleteCookie("JSESSIONID", "/courses", null, true); deleteCookie("JSESSIONID", "/sessions", null, true); deleteCookie("JSESSIONID", "/systemdata", null, true); deleteCookie("JSESSIONID", "/images", null, true); deleteCookie("JSESSIONID", "/images-ltr", null, true); deleteCookie("JSESSIONID", "/images-rtl", null, true); deleteCookie("JSESSIONID", "/reportbranding", null, true); deleteCookie("JSESSIONID", "/reports", null, true); deleteCookie("JSESSIONID", "/modules", null, true); deleteCookie("JSESSIONID", "/groupjs", null, true); deleteCookie("JSESSIONID", "/branding", null, true); deleteCookie("JSESSIONID", "/queue_tasks", null, true); deleteCookie("JSESSIONID", "/sponsors", null, true); deleteCookie("JSESSIONID", "/course_image_main_images", null, true); deleteCookie("JSESSIONID", "/course_image_2_images", null, true); deleteCookie("JSESSIONID", "/course_image_nav_images", null, true); deleteCookie("JSESSIONID", "/org_image_main_images", null, true); deleteCookie("JSESSIONID", "/org_image_2_images", null, true); deleteCookie("JSESSIONID", "/org_image_nav_images", null, true); deleteCookie("JSESSIONID", "/avatar", null, true); deleteCookie("JSESSIONID", "/bannerthumbnail", null, true); deleteCookie("JSESSIONID", "/deployment", null, true); deleteCookie("JSESSIONID", "/content_area", null, true); deleteCookie("JSESSIONID", "/portfolio", null, true); deleteCookie("JSESSIONID", "/evidence_area", null, true); deleteCookie("JSESSIONID", "/public", null, true); deleteCookie("JSESSIONID", "/pronunciation_audio", null, true); deleteCookie("JSESSIONID", "/s", null, true); deleteCookie("JSESSIONID", "", null, true); deleteCookie("JSESSIONID", "/webapps/login", null, true); deleteCookie("JSESSIONID", "/webapps/taglibs", null, true); deleteCookie("JSESSIONID", "/webapps/ws", null, true); deleteCookie("JSESSIONID", "/webapps/wysiwyg", null, true); deleteCookie("JSESSIONID", "/bbcswebdav", null, true); deleteCookie("JSESSIONID", "/webapps/cmsmain", null, true); deleteCookie("JSESSIONID", "/webapps/xythoswfs", null, true); deleteCookie("JSESSIONID", "/admin", null, true); deleteCookie("JSESSIONID", "/colorpalettes", null, true); deleteCookie("JSESSIONID", "/coursethemes", null, true); deleteCookie("JSESSIONID", "/common", null, true); deleteCookie("JSESSIONID", "/fonts", null, true); deleteCookie("JSESSIONID", "/javascript", null, true); deleteCookie("JSESSIONID", "/lib", null, true); deleteCookie("JSESSIONID", "/login", null, true); deleteCookie("JSESSIONID", "/themes", null, true); deleteCookie("JSESSIONID", "/ui", null, true); deleteCookie("JSESSIONID", "/ui-ultra", null, true); deleteCookie("JSESSIONID", "/learn/api", null, true); deleteCookie("JSESSIONID", "/webapps/software-updates", null, true); deleteCookie("JSESSIONID", "/webapps/dataIntegration", null, true); deleteCookie("JSESSIONID", "/webapps/bb-gate-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/ai", null, true); deleteCookie("JSESSIONID", "/webapps/goal", null, true); deleteCookie("JSESSIONID", "/webapps/bb-social-learning-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/api-gateway", null, true); deleteCookie("JSESSIONID", "/webapps/rubric", null, true); deleteCookie("JSESSIONID", "/webapps/streamViewer", null, true); deleteCookie("JSESSIONID", "/webapps/submission-services", null, true); deleteCookie("JSESSIONID", "/webapps/bb-content-model-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-group-mgmt-LEARN", null, true); deleteCookie("JSESSIONID", "/webapps/bb-ultra-conversion", null, true); deleteCookie("JSESSIONID", "/webapps/gradebook", null, true); deleteCookie("JSESSIONID", "/webapps/assessment", null, true); deleteCookie("JSESSIONID", "/webapps/videointegration", null, true); deleteCookie("JSESSIONID", "/webapps/vtbe-tinymce-ephox-hyperlinking", null, true); deleteCookie("JSESSIONID", "/webapps/vtbe-tinymce-ephox-spelling", null, true); deleteCookie("JSESSIONID", "/webapps/bb-common-styles-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-xss-filter-whitelist-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-xss-filter-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/vtbe-tinymce", null, true); deleteCookie("JSESSIONID", "/webapps/bbcms", null, true); deleteCookie("JSESSIONID", "/webapps/inline-grading", null, true); deleteCookie("JSESSIONID", "/webapps/taskprogress", null, true); deleteCookie("JSESSIONID", "/webapps/spreview", null, true); deleteCookie("JSESSIONID", "/webapps/bb-xss-input-validation-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/portfolio", null, true); deleteCookie("JSESSIONID", "/webapps/blogs-journals", null, true); deleteCookie("JSESSIONID", "/webapps/foundations-connector", null, true); deleteCookie("JSESSIONID", "/webapps/partner-cloud", null, true); deleteCookie("JSESSIONID", "/webapps/date-management", null, true); deleteCookie("JSESSIONID", "/webapps/discussionboard", null, true); deleteCookie("JSESSIONID", "/webapps/bb-selfpeer-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/assignment", null, true); deleteCookie("JSESSIONID", "/webapps/caliper", null, true); deleteCookie("JSESSIONID", "/webapps/consulting-central", null, true); deleteCookie("JSESSIONID", "/webapps/Bb-wiki-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-mygrades-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bbgs-goal-performance-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/allyintegration", null, true); deleteCookie("JSESSIONID", "/webapps/operational-data-store", null, true); deleteCookie("JSESSIONID", "/webapps/retention", null, true); deleteCookie("JSESSIONID", "/webapps/ppto-PanoptoCourseTool-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/rs-lockdown-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-1027720613048-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/hl-hlB2-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-1027954530152-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/privacy-disclosure", null, true); deleteCookie("JSESSIONID", "/webapps/bb-nautilus-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/time-time-plgnhndl-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-auth-provider-cas-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/calendar", null, true); deleteCookie("JSESSIONID", "/webapps/collab-ultra", null, true); deleteCookie("JSESSIONID", "/webapps/bb-mashups-youtube-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-auth-provider-ldap-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/achievements", null, true); deleteCookie("JSESSIONID", "/webapps/enterpriseSurvey", null, true); deleteCookie("JSESSIONID", "/auth-saml", null, true); deleteCookie("JSESSIONID", "/webapps/attendance", null, true); deleteCookie("JSESSIONID", "/webapps/building-block-conversion", null, true); deleteCookie("JSESSIONID", "/webapps/real-helixmedia-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bbgs-GradeJourney-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/auth-provider-foundations", null, true); deleteCookie("JSESSIONID", "/webapps/portal", null, true); deleteCookie("JSESSIONID", "/webapps/Bb-mobile-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-redis-cache-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-data-integration-ss-xml-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/plugins", null, true); deleteCookie("JSESSIONID", "/webapps/cloudstorageintegration", null, true); deleteCookie("JSESSIONID", "/webapps/bb-bb_learn_analytics-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/goal-mastery", null, true); deleteCookie("JSESSIONID", "/webapps/bb-data-integration-ims-xml-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-data-integration-lis-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bbtextbook", null, true); deleteCookie("JSESSIONID", "/webapps/bb-alerts-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/blackboard", null, true); deleteCookie("JSESSIONID", "/webapps/bbcxcommoncartridge", null, true); deleteCookie("JSESSIONID", "/webapps/foundations-token", null, true); deleteCookie("JSESSIONID", "/webapps/item-analysis", null, true); deleteCookie("JSESSIONID", "/webapps/notes", null, true); deleteCookie("JSESSIONID", "/webapps/bb-financial-aid-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/feature-flags", null, true); deleteCookie("JSESSIONID", "/webapps/mdb-sa-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/ultraui", null, true); deleteCookie("JSESSIONID", "/webapps/cmsadmin", null, true); deleteCookie("JSESSIONID", "/webapps/bb-theme-diff-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-mashups-flickr-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/telemetry", null, true); deleteCookie("JSESSIONID", "/webapps/bb-telephony-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bb-data-integration-flatfile-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/bbcxcourseconversion", null, true); deleteCookie("JSESSIONID", "/webapps/insight-report", null, true); deleteCookie("JSESSIONID", "/webapps/bb-mashups-slideshare-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/asset-processor", null, true); deleteCookie("JSESSIONID", "/webapps/school-data-sync", null, true); deleteCookie("JSESSIONID", "/webapps/bb-data-integration-lis-final-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/scor-scormengine-BB5dfd4f5d9105a", null, true); deleteCookie("JSESSIONID", "/webapps/searchwidgets", null, true); if (guestLocaleCookie != null) { setCookie("guest.session.locale", guestLocaleCookie); } setCookie("JSESSIONID", startingJSessionCookie); if ( typeof aptrinsic !== 'undefined' ) { window.aptrinsic('reset'); } if ( typeof pendo !== 'undefined' ) { pendo.clearSession(); } }); </script> <div id="loginFormFields" class="clearfix"> <ul id="loginFormList" class="clearfix"> <li class="clearfix"> <label for="user_id">Username</label> <input type="text" name="user_id" id="user_id" size="25" maxlength="50" autocomplete="off"/> </li> <li class="clearfix"> <label for="password">Password</label> <input size="25" name="password" id="password" type="password" autocomplete="off"/> </li> <li class="clearfix"> <input id="entry-login" type="submit" value="Sign In" name="login" class="button expand inverse outline"/> </li> </ul> <div class="login-form-footer row collapse"> <div class="stay-signed-in small-6 columns text-left"> </div> <div class="small-6 columns text-right"> <a href="https://www.ucmo.edu/offices/office-of-technology/internal-resources/shared/technology-support-center" onclick="login_openForgotPassword('https://www.ucmo.edu/offices/office-of-technology/internal-resources/shared/technology-support-center');return false;">Forgot Password?</a> </div> </div> </div> <script src="/javascript/qrcodejs/qrcode.min.js"></script> <dialog id="mfa-registration" role="dialog" class="mfa-modal-container" aria-modal="true" > <div class="mfa-registration-modal mfa-modal" aria-labelledby="mfa-registration-title" aria-describedby="mfa-registration-description"> <div class="mfa-modal-title"> <h1 id="mfa-registration-title">Multi-Factor Authentication</h1> </div> <div class="registration-modal-body"> <div id="mfa-registration-description" class="registration-modal-body-description"> <div> <span>Step 1</span> <p>Download and install any authenticator app (e.g. <strong>Microsoft Authenticator, Google Authenticator, or Authy</strong>) on your phone.</p> </div> <div> <span>Step 2</span> <p class="web-content">Open the authenticator app and scan the image below using your phone's camera or copy the key.</p> <p class="mobile-content">Open the authenticator app and copy the key below.</p> </div> </div> <div class="registration-qr-code"> <div class="qr-code-img" id="qrcode" tabindex="-1" aria-hidden="true"></div> <input type="hidden" id="qr-uri" tabindex="-1" aria-hidden="true" value="${mfaQRUri}"/> <div class="secret-key-container"> <p id="secretkey">${mfaSecretKey}</p> <div class="copy-key"> <a id="copy-secret-key" tabindex="0" onclick="copyTextToClipboard();">Copy key</a> <div id="copy-feedback" class="copyfeedback"> <span style="padding: 4px">-</span> <div class="copy-success"> <span role="alert" aria-live="assertive" style="color: #007D2C;font-size: 12px;line-height: 18px;">Key copied</span> <img class="check-icon" src="/images/ci/icons/complete.svg" aria-hidden="true"> </div> </div> </div> </div> </div> <div class="next-progress-info"> <span>Step 3</span> <p id="next-progress-description">Press next to enter the code and associate it with your account</p> </div> </div> <div class="modal-footer"> <button id="reg-cancel-button" class="modal-button button-cancel">Cancel</button> <button id="reg-next-button" class="modal-button button-next">Next</button> </div> </div> </dialog> <script type="text/javascript"> // Initialize QRCode with the provided URI and set display parameters var qrcode = new QRCode(document.getElementById("qrcode"), { text: document.getElementById("qr-uri").value, width: 120, height: 120, colorDark : "#000000", colorLight : "#ffffff", correctLevel : QRCode.CorrectLevel.H }); // Event listener for the 'Next' button click in the registration dialog const nextButton = document.getElementById( 'reg-next-button' ); nextButton.addEventListener( 'click', function (event) { event.preventDefault(); // Hide registration dialog and show verification dialog const registrationDialog = document.getElementById( 'mfa-registration' ); const verificationDialog = document.getElementById( 'mfa-totp-verification' ); const inputField = document.getElementById( 'totp-verification-input' ); registrationDialog.style.display = 'none'; verificationDialog.style.display = 'flex'; inputField.focus(); // Update hidden input values to manage UI states document.getElementById( 'showMFARegistration' ).value='false'; document.getElementById( 'showMFAVerification' ).value='true'; document.getElementById( 'showMFASuccessFul' ).value='false'; } ); // Event listener for the 'Cancel' button click in the registration dialog const regCancelButton = document.getElementById( 'reg-cancel-button' ); regCancelButton.addEventListener( 'click', function (event) { event.preventDefault(); // Navigate to login page. window.location.href='/webapps/login/?action=logout'; } ); // Function to add a space after every 4 characters in the secret key function formatSecretKey() { const secretKeyElement = document.getElementById( 'secretkey' ); const secretKeyText = secretKeyElement.textContent; const formattedSecretKey = secretKeyText.replace( /(.{4})/g, '$1 ' ); secretKeyElement.textContent = formattedSecretKey; } // Call the function to format the displayed secret key formatSecretKey(); // Function to copy text to clipboard function copyTextToClipboard( text ) { const textArea = document.createElement( 'textarea' ); textArea.value = text; document.body.appendChild( textArea ); textArea.select(); const copykey = document.execCommand( 'copy' ); document.body.removeChild( textArea ); return copykey; } // Event listener for the 'Copy' button click to copy the secret key to clipboard function handleCopykeyEvent() { event.preventDefault(); const secretKeyElement = document.getElementById( 'secretkey' ); const secretKeyText = secretKeyElement.textContent; const unformattedSecretKey = secretKeyText.replace( /\s+/g, '' ); copyTextToClipboard( unformattedSecretKey ); const copyFeedback = document.getElementById( 'copy-feedback' ); copyFeedback.style.display = 'flex'; setTimeout( function () { copyFeedback.style.display = 'none'; }, 10000 ); document.getElementById('copy-secret-key').focus(); } document.getElementById( 'copy-secret-key' ).addEventListener( 'click', handleCopykeyEvent ); document.getElementById( 'copy-secret-key' ).addEventListener( 'keydown', function ( event ) { if ( event.key === 'Enter' || event.code === 'Space' ) { handleCopykeyEvent( event ); } } ); </script> <dialog id="mfa-totp-verification" class="mfa-modal-container" > <div class="mfa-verification-modal mfa-modal" role="dialog" aria-modal="true" aria-labelledby="mfa-verification-title" > <div class="mfa-modal-title"> <h1 id="mfa-verification-title" >Multi-Factor Authentication</h1> </div> <div class="verification-modal-body"> <div class="verification-modal-body-description"> <label for="totp-verification-input" class="custom-label">Type the Code</label> <p id="mfa-verification-description" >Type the 6-digit temporary code generated with your authenticator application</p> </div> <div id="totp-verification-input-container" class="verification-input"> <input name="secondaryAuthToken" id="totp-verification-input" type="text" onkeypress="return validateTOTP(event)" maxlength="6" tabindex="0" placeholder="000000" autocomplete="off" aria-describedby="mfa-verification-description" aria-invalid="false"/> </div> <div id="loading-spinner" class="centered"> <div class="loader-outer"> <div id="loader"> <div class="loader-inner"></div> </div> </div> </div> </div> <div class="modal-footer"> <button id="totp-back-button2" class="modal-button button-back">Back</button> <button id="totp-submit-button" class="modal-button button-submit" type="submit" onclick="showLoadingSpinner();" disabled >Submit</button> </div> </div> </dialog> <script> window.onload = function () { const totpInput = document.getElementById( "totp-verification-input" ); if ( totpInput ) { totpInput.focus(); } } function validateTOTP( event ) { const inputField = document.getElementById( 'totp-verification-input' ); const key = event.key; if ( ( key >= '0' && key <= '9' ) || key === 'Backspace' || (event.metaKey && key === 'a') ) // for safari browser compatablity { return true; // Allow } else if ( key === 'Enter' ) { if ( inputField.value.length !== 6 ) { event.preventDefault(); } else { showLoadingSpinner(); return true; } } else { return false; // Block } } const inputField = document.getElementById( 'totp-verification-input' ); // To enable/disable the submit button based on input value. inputField.addEventListener( 'keyup', function () { const submitButton = document.getElementById( 'totp-submit-button' ); submitButton.disabled = !( inputField.value.length === 6 ); } ); inputField.addEventListener( 'input', function () { const errorMessageContainer = document.getElementById( 'totp-error' ); if(errorMessageContainer) { errorMessageContainer.style.display = 'none'; // Hide the error message on focus } } ); function showLoadingSpinner() { const spinner = document.getElementById( 'loading-spinner' ); const inputField = document.getElementById( 'totp-verification-input' ); const inputContainer = document.getElementById( 'totp-verification-input-container' ); const errorMessage = document.getElementById( 'errorMessage' ); const backbutton1 = document.getElementById( 'totp-back-button1' ); const backbutton2 = document.getElementById( 'totp-back-button2' ); if ( inputField.value.length === 6 && !errorMessage ) { inputContainer.style.display = 'none'; spinner.style.display = "flex"; if ( backbutton1 ) { backbutton1.disabled = true; } if ( backbutton2 ) { backbutton2.disabled = true; } } else if ( errorMessage ) { spinner.style.display = 'none'; inputContainer.style.display = 'flex'; inputField.setAttribute('aria-invalid','true'); } } function clearTOTPCode() { document.getElementById( 'totp-verification-input' ).value = ''; } const totpButton2 = document.getElementById( 'totp-back-button2' ); if(totpButton2) { totpButton2.addEventListener( 'click', function ( event ) { event.preventDefault(); clearTOTPCode(); window.location.href='/webapps/login/?action=logout'; }); } </script> <dialog id="mfa-registration-success" role="dialog" class="mfa-modal-container" aria-modal="true"> <div class="success-modal mfa-modal" tabindex="0" aria-labelledby="mfa-success-title" aria-describedby="mfa-success-description"> <div class="mfa-modal-title"> <h1 id="mfa-success-title">Multi-Factor Authentication</h1> </div> <div class="modal-success-body"> <div id="mfa-success-description" class="success-description"> <div> <span>You are all set</span> <p>You have enabled multi-factor authentication using your authenticator app.</p> </div> <div> <p class="web-content">We will now ask for a login code anytime you log in.</p> <p class="mobile-content">We will now ask for a login code anytime you log in on a device we don't recognize.</p> </div> </div> </div> <div class="modal-footer"> <button id="mfa-registration-succes-button" class="modal-button button-done" >Done</button> <input type="hidden" id="mfaSuccessfulNavUrl" value="${mfaSuccessfulNavUrl}"/> </div> </div> </dialog> <script> const sucessNavButton = document.getElementById('mfa-registration-succes-button'); sucessNavButton.addEventListener('click', function (event) { event.preventDefault(); const navUrl = document.getElementById('mfaSuccessfulNavUrl').value; window.location=navUrl; }); </script> <input type="hidden" name="showMFARegistration" id="showMFARegistration" value="$showMFARegistration" /> <input type="hidden" name="showMFAVerification" id="showMFAVerification" value="$showMFAVerification" /> <input type="hidden" name="showMFASuccessFul" id="showMFASuccessFul" value="$showMFASuccessFul" /> <input type="hidden" name="action" value="login" /> <input type="hidden" name="new_loc" value="" /> <input type="hidden" name="blackboard.platform.security.NonceUtil.nonce.ajax" value="fc3e3cf2-c4c7-4f63-baf6-1e8c26fc94f1"/> </form> <div id="loginRedirectProviders"> <button id="redirectProvidersDropdownButton" class="button dropdown expand">Sign in with third-party account</button> <ul id="loginRedirectProviderList"> <li><a href="/auth-saml/saml/login?apId=_539_1&redirectUrl=https%3A%2F%2Fucmo.blackboard.com%2Fultra" ><div class="defaultProviderIcon"></div>Single Sign On Authentication</a></li> </ul> </div> <script type="text/javascript"> var providerListDropdownButton = $('redirectProvidersDropdownButton'); var providerList = $('loginRedirectProviderList'); // Open/ close providers list dropdown providerListDropdownButton.on('click', function(event, element) { providerList.toggleClassName('open'); providerList.writeAttribute('aria-hidden', !providerList.hasClassName( 'open' )); }); // Close provider list when clicking elsewhere on the page $$("body").first().on('click', function(event) { if (!$(event.target).hasClassName('dropdown') && providerList.hasClassName('open')){ providerList.removeClassName('open'); } }); </script> </div> <!-- Customization to add help link --> <div class="row"> <a id="ucm-help-link" href="https://www.ucmo.edu/offices/digital-learning-and-instructional-innovation/blackboard-user-support/index.php"> Help and Instructions </a> </div> <!-- End customization --> <!-- Custom CSS --> <style> #login-form { background-color: rgba(255,255,255,0.08); padding: 20px; border-radius: 4px; } #login-form.closed{ opacity: 0; overflow: hidden; height:0; } #login-form.open { opacity: 1; transition: opacity .5s } #sso-block { margin-top: 50px; } #sso-block .button { text-decoration: none !important; background-color: #cf202e; } #sso-block .button:hover, #sso-block .button:active { background-color: transparent; color: white; border-color: white; } #sso-block { margin-top: 10px; } #sso-block2 .button { text-decoration: none !important; background-color: #cf202e; } #sso-block2 .button:hover, #sso-block2 .button:active { background-color: transparent; color: white; border-color: white; } #toggle-default-login:hover, #toggle-default-login:active { background-color: #333 !important; color: white !important; } #toggle-extend-login:hover, #toggle-extend-login:active { background-color: #333 !important; color: white !important; } #redirectProvidersDropdownButton { display: none; } #ucm-help-link { font-size: 1.125rem; text-decoration: underline; color: white; } #ucm-help-link:hover { color: rgba(255,255,255,0.8); } </style> <!-- End customization --> </div> <div class="login-page-announcements"> </div> <div class="small-12 small-centered text-center columns"> <div id="copyright" class="clearfix"> <script type="text/javascript"> function showCopyrightDetail(){ if(document.getElementById('copyrightDetail').style.display=="none" || document.getElementById('copyrightDetail').style.display=="") { document.getElementById('copyrightDetail').style.display="block"; } else { document.getElementById('copyrightDetail').style.display="none"; }} </script> <div class="newCopyright"> <div class="legal"> &copy; 1997-2024 Blackboard Inc. All Rights Reserved. </div> </div> </div><div id="loginOptions"> </div> </div> </div> <script type="text/javascript">page.bundle.addKey('inlineconfirmation.close','Close');page.bundle.addKey('inlineconfirmation.refresh','Refresh');page.bundle.addKey('hidden.link.close.menu','End of menu. Click to return to associated item.');page.bundle.addKey('hidden.link.close.form','End of form. Click to return to associated item.');page.bundle.addKey('lightbox.loading','Loading...');page.bundle.addKey('yt.stopped','Stopped:');page.bundle.addKey('yt.playing','Playing:');page.bundle.addKey('yt.cued','Cued:');page.bundle.addKey('yt.buffering','Buffering:');page.bundle.addKey('yt.paused','Paused:');page.bundle.addKey('yt.ended','Ended:');page.bundle.addKey('yt.play','Play');page.bundle.addKey('yt.pause','Pause');page.bundle.addKey('yt.mute','Mute');page.bundle.addKey('yt.unmute','Unmute');page.bundle.addKey('lightbox.overlay','{0} has been opened as a lightbox overlaying the current page.');page.bundle.addKey('display.playerControls','Player Controls');page.bundle.addKey('display.videoPlayerControls','Video Player Controls');page.bundle.addKey('display.play','Play');page.bundle.addKey('display.stop','Stop');page.bundle.addKey('display.volumeUp','Volume Up');page.bundle.addKey('display.volumeDown','Volume Down');page.bundle.addKey('display.mute','Mute');page.bundle.addKey('display.videoStatus','Video Status');page.bundle.addKey('display.closePlayerControls','Close Player Controls');page.bundle.addKey('display.embeddedVideoPlayer','Embedded Video Player');page.bundle.addKey('display.of','of');page.bundle.addKey('display.view.on.flickr','View Photo on Flickr');page.bundle.addKey('mashups.content.data.msg','We are unable to display the mashup content. This happens if the system detects an invalid URL. Remove the mashup item and try again to resolve this issue.');page.bundle.addKey('contextmenu.frame.title','Menu frame');page.bundle.addKey('frameset.contentframe.title','Content');page.bundle.addKey('common.pair.paren','{0} ({1})');</script> <script type="text/javascript"> function loadLoginPage() { if(document.forms.login.user_id != undefined) { verify_username_password(document.forms.login); } setTimeout("triggerScreenreaderAlert()", 500); } function triggerScreenreaderAlert() { if (document.getElementById('loginErrorMessage')) { $('loginErrorMessage').update($('loginErrorMessage').innerHTML); } } </script> <script type="text/javascript"> function showPrivacyPolicy() { cookieConsent = new CookieConsent('/webapps/privacy-disclosure/'); cookieConsent.showPolicy( 'blackboard.platform.security.NonceUtil.nonce=login', true ); } </script> <script type="text/javascript"> FastInit.addOnLoad( function() { if ( window.DWREngine ) { try {DWREngine.beginBatch();} catch(ignore) {} } if (typeof(initEditors) == 'function') { initEditors(); } try { com.wiris.js.JsPluginViewer.parseDocument( true ); } catch(e) {}; if (window['org'] && window['org']['owasp']) { org.owasp.esapi.ESAPI.initialize(); }; AllyIntegration.initJWT('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBTExZIiwic3ViIjoiQUxMWV9UT0tFTiIsImZpbGVJZHMiOltdLCJjb3Vyc2VSb2xlIjoiIiwiaXNzIjoiYVlVWmV0VFBqUXNOYlBTaU1va09jTEg2UjIxOU1kZloiLCJyaWNoQ29udGVudElkcyI6W10sImV4cCI6MTczMjczMDQ5NiwiaWF0IjoxNzMyNzMwMTk2LCJjb3Vyc2VJZCI6IiIsInVzZXJJZCI6IiJ9.HNrIifahyEeaB3WYfOsfru5xP_Ycm1EVExxc5HjUVbM'); AllyIntegration.initAllyJSConfigs('prod.ally.ac','12232'); jQuery.getScript('//' + window.ALLY_CFG.baseUrl + '/integration/learn/ally.js'); quickLinks.createHelper(); if ( window.DWREngine ) { try {DWREngine.endBatch();} catch(ignore) {} } BrowserSpecific.registerListeners(); loadLoginPage(); }); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10