1486 lines
120 KiB
Text
1486 lines
120 KiB
Text
<!DOCTYPE html>
|
||
<html lang="en" dir="ltr" prefix="content: http://purl.org/rss/1.0/modules/content/ dc: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ og: http://ogp.me/ns# rdfs: http://www.w3.org/2000/01/rdf-schema# schema: http://schema.org/ sioc: http://rdfs.org/sioc/ns# sioct: http://rdfs.org/sioc/types# skos: http://www.w3.org/2004/02/skos/core# xsd: http://www.w3.org/2001/XMLSchema# ">
|
||
<head>
|
||
<meta charset="utf-8" /><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"37b7ccb661",applicationID:"1089704227"};;/*! For license information please see nr-loader-rum-1.283.2.min.js.LICENSE.txt */
|
||
(()=>{var e,t,r={122:(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)}}},555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(122);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])}},217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>m,gD:()=>v,xN:()=>h});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources",a=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var s=r(614),c=r(944),u=r(384),l=r(122);const d="[data-nr-mask]",f=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},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,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},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:s.wk,inactiveMs:s.BB},session_replay:{autoStart:!0,enabled:!1,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){a(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,c.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){a(t)?e.block_selector+=",".concat(t):""!==t&&(0,c.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,c.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},g={},p="All configuration objects require an agent identifier!";function m(e){if(!e)throw new Error(p);if(!g[e])throw new Error("Configuration for ".concat(e," was never set"));return g[e]}function h(e,t){if(!e)throw new Error(p);g[e]=(0,l.a)(t,f());const r=(0,u.nY)(e);r&&(r.init=g[e])}function v(e,t){if(!e)throw new Error(p);var r=m(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}},371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(122),i=r(384),o=r(154),a=r(324);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,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.283.2",i="PROD",o="CDN"},154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(863);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,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(836),i=r(606),o=r(860),a=r(646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(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 l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(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)}}))}},836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(990),o=r(371),a=r(646),s=r(607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=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=m(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();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!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};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]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(836).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))}},606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(908);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])}},878:(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})},607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(566).bz)()},566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(154);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("")}},614:(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}},863:(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})},284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(836),i=r(154);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})))}},990:(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}},389:(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})},289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(878);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:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(154),i=r(863);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 l(e,t){a()[e]=t}function d(){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()}},843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(878);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)}},434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(836),i=r(607);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];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(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,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,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 l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log";n.K7.logging},773:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(154),r(566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},630:(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},344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(614);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},234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(836),i=r(687);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)}}},603:(e,t,r)=>{"use strict";r.d(t,{j:()=>K});var n=r(860),i=r(555),o=r(371),a=r(908),s=r(836),c=r(687),u=r(289),l=r(154),d=r(944),f=r(773),g=r(384),p=r(344);const m=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],h=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(863),b=r(614),y=r(993);var w=r(646),R=r(434);const A=new Map;function E(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,R.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[R.Jt]||t[r];return A.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>A.get(c))),i}function _(){const e=(0,g.pV)();m.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,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function N(e,t,g=!1){t||(0,c.Ak)(e,"api");const m={};var w=s.ee.get(e),R=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var A="api-",_=A+"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(A,n,!0,o||null===r?"session":void 0)(t,r)}function k(){}m.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,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},m.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),E(w,e,t,{customAttributes:r,level:i})},h.forEach((e=>{m[e]=j(A,e,!0,"api")})),m.addPageAction=j(A,"addPageAction",!0,n.K7.genericEvents),m.recordCustomEvent=j(A,"recordCustomEvent",!0,n.K7.genericEvents),m.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(A,"setPageViewName",!0)()},m.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,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},m.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},m.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},m.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},m[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)},m[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)},m.interaction=function(e){return(new k).get("object"==typeof e?e:{})};const T=k.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,v.t)(),e,r],i,n.K7.spa,w),function(){if(R.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw R.emit("fn-err",[arguments,this,t],r),t}finally{R.emit("fn-end",[(0,v.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,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,w),r?void 0:this}}function I(){r.e(296).then(r.bind(r,778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{T[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),m.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(A,"routeName",!0,n.K7.spa),m.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,v.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>I()),!0):I(),m}var k=r(217),T=r(122);const j={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},I={};var O=r(284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function K(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,k.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");I[e]=(0,T.a)(t,j);const r=(0,g.nY)(e);r&&(r.loader_config=I[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const m=(0,k.D0)(e.agentIdentifier),h=[c.beacon,c.errorBeacon];P||(m.proxy.assets&&(S(m.proxy.assets),h.push(m.proxy.assets)),m.proxy.beacon&&h.push(m.proxy.beacon),_(),(0,g.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===m.soft_navigations.enabled&&m.feature_flags.includes("soft_nav")),d.denyList=[...m.ajax.deny_list||[],...m.ajax.block_internal?h:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=N(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),P=!0}},374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,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"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.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.283.2.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.2.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"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-2Y8GMAOGF658KnXzOZ/v+DlLch8TBFvV0tTNnOy9wrpvtDa1t5CdZMyX+LubTymBlzPp6NUjllBghMCZqXBPmg=="};(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={374:0,840: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.283.2.PROD"]=self["webpackChunk:NRBA-1.283.2.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(374);var e=i(944),t=i(344),r=i(566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#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)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",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(217);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 l=i(603);var d=i(687),f=i(234),g=i(289),p=i(154),m=i(384);const h=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,m.dV)().o.MO&&h(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(389);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,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.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(h(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,861));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(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.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 v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(630);class R extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var A=i(908),E=i(843),_=i(878),x=i(782),N=i(863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,E.u)((()=>(0,A.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,_.sp)("pagehide",(()=>(0,A.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var T=i(773);class j extends y{static featureName=T.TZ;constructor(e,t=!0){super(e,T.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,m.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.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,m.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:[R,k,j],loaderType:"lite"})})()})();</script>
|
||
<noscript><style>form.antibot * :not(.antibot-message) { display: none !important; }</style>
|
||
</noscript><script async src="https://www.googletagmanager.com/gtag/js?id=G-HEQ0YF2VYL"></script>
|
||
<script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments)};gtag("js", new Date());gtag("set", "developer_id.dMDhkMT", true);gtag('set', {'cookie_flags': 'SameSite=None;Secure', 'cookie_domain': 'www.nist.gov'});gtag("config", "G-HEQ0YF2VYL", {"groups":"default","page_placeholder":"PLACEHOLDER_page_location","link_attribution":true,"allow_ad_personalization_signals":false});gtag("config", "G-CSLL4ZEK4L", {"groups":"default","page_placeholder":"PLACEHOLDER_page_location","link_attribution":true,"allow_ad_personalization_signals":false});gtag("event", "custom", {"node_title":"File Rule","node_id":"1534236","content_type":"Basic page"});</script>
|
||
<meta name="description" content="Basics Trajectories perform 3 core tasks: " />
|
||
<link rel="canonical" href="https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule" />
|
||
<link rel="shortlink" href="https://www.nist.gov/node/1534236" />
|
||
<meta name="citation_title" content="File Rule | NIST" />
|
||
<meta property="og:site_name" content="NIST" />
|
||
<meta property="og:type" content="Article" />
|
||
<meta property="og:url" content="https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule" />
|
||
<meta property="og:title" content="File Rule" />
|
||
<meta property="og:description" content="Basics Trajectories perform 3 core tasks: " />
|
||
<meta property="og:image" content="https://www.nist.gov/themes/custom/nist_www/img/homepage/nist_mark.png" />
|
||
<meta property="article:published_time" content="2018-12-07T10:32-05:00" />
|
||
<meta property="article:modified_time" content="2023-04-19T17:41-04:00" />
|
||
<meta name="dcterms.title" content="File Rule" />
|
||
<meta name="dcterms.description" content="Basics Trajectories perform 3 core tasks: " />
|
||
<meta name="dcterms.date" content="2018-12-07T10:32-05:00" />
|
||
<meta name="dcterms.type" content="text" />
|
||
<meta name="dcterms.format" content="text/html" />
|
||
<meta name="dcterms.identifier" content="https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule" />
|
||
<meta name="dcterms.source" content="NIST" />
|
||
<meta name="dcterms.created" content="2018-12-07T10:32-05:00" />
|
||
<meta name="dcterms.modified" content="2023-04-19T17:41-04:00" />
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta name="twitter:description" content="Basics Trajectories perform 3 core tasks: " />
|
||
<meta name="twitter:site" content="NIST" />
|
||
<meta name="twitter:title" content="File Rule" />
|
||
<meta name="google-site-verification" content="QMu0ODkER3rN5hLcMLqNVf7e3bkjYsNLTuhqfH48jCA" />
|
||
<meta name="Generator" content="Drupal 10 (https://www.drupal.org)" />
|
||
<meta name="MobileOptimized" content="width" />
|
||
<meta name="HandheldFriendly" content="true" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<meta name="nist_search_modified" class="elastic" content="2023-04-19T17:41:00-04:00" />
|
||
<meta name="nist_search_bundle" class="elastic" content="page" />
|
||
<link rel="icon" href="/themes/custom/nist_www/favicon.ico" type="image/vnd.microsoft.icon" />
|
||
<link rel="prev" href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-output" />
|
||
<link rel="up" href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference" />
|
||
<link rel="next" href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule/appendix" />
|
||
|
||
<title>File Rule | NIST</title>
|
||
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_NaGqqoS4Dq9rGDglU_1iLnKYGW5APFAFaJ175lwhkjI.css?delta=0&language=en&theme=nist_www&include=eJxFjo0KwzAIhF-oNI8UTGI7qYkh2mV7-6U_oyDiyR3fBYibNxlTXXhuT1HKVEjN2wszjp9wgOazJJdIITB6prJN-lXDPLKKp9-tLAH4yvbe_xo_dvhdansFnm95RTKshRaK00Js2FyEajT4KpGAfcZEcBCG403Y1Z17Hl12xoeUKTZRMvwBBQlTlQ" />
|
||
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_kGS0ApDpFo-_3JI4Ijxg4RCWlTqsImK3lqH7bCv5v2U.css?delta=1&language=en&theme=nist_www&include=eJxFjo0KwzAIhF-oNI8UTGI7qYkh2mV7-6U_oyDiyR3fBYibNxlTXXhuT1HKVEjN2wszjp9wgOazJJdIITB6prJN-lXDPLKKp9-tLAH4yvbe_xo_dvhdansFnm95RTKshRaK00Js2FyEajT4KpGAfcZEcBCG403Y1Z17Hl12xoeUKTZRMvwBBQlTlQ" />
|
||
<link rel="stylesheet" media="print" href="/sites/default/files/css/css_-IXwLuTUdm8IGHxib8GX8wWKw3LjKsNWSYYskZ5fEGg.css?delta=2&language=en&theme=nist_www&include=eJxFjo0KwzAIhF-oNI8UTGI7qYkh2mV7-6U_oyDiyR3fBYibNxlTXXhuT1HKVEjN2wszjp9wgOazJJdIITB6prJN-lXDPLKKp9-tLAH4yvbe_xo_dvhdansFnm95RTKshRaK00Js2FyEajT4KpGAfcZEcBCG403Y1Z17Hl12xoeUKTZRMvwBBQlTlQ" />
|
||
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_RS8YGnRq2Xi5aD-GQC3GKwBe6bOWBBmEmXrb2xB5FMM.css?delta=3&language=en&theme=nist_www&include=eJxFjo0KwzAIhF-oNI8UTGI7qYkh2mV7-6U_oyDiyR3fBYibNxlTXXhuT1HKVEjN2wszjp9wgOazJJdIITB6prJN-lXDPLKKp9-tLAH4yvbe_xo_dvhdansFnm95RTKshRaK00Js2FyEajT4KpGAfcZEcBCG403Y1Z17Hl12xoeUKTZRMvwBBQlTlQ" />
|
||
|
||
<script src="/sites/default/files/js/js_GM8kl6wk698qKTTwusj83bCoGHHtOZ1UinjY1sE_Qbk.js?scope=header&delta=0&language=en&theme=nist_www&include=eJxdjdsOwjAIhl9I5ZEaurIOR8vSotW3tzsYzRIu4OM_eBxmZ9pnAf_b3b1eomoUcphR3sZDhTO4ZK7mRu4saMuiGJyVHsI5QsT9XdmI01L0SXAGa8vGbKJEvVfFY3FJAwSu6HuwcJ43DURRj3I9LDARBirf07XW_hT0stUIoTwWlNtx7saEMfPIwwflMGLc"></script>
|
||
|
||
</head>
|
||
<body class="node-1534236">
|
||
<a href="#main-content" class="visually-hidden focusable" data-elastic-exclude>
|
||
Skip to main content
|
||
</a>
|
||
|
||
<div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas>
|
||
|
||
<!-- nist-index-ignore-start -->
|
||
<section data-elastic-exclude class="usa-banner" aria-label="Official government website">
|
||
<div class="usa-accordion">
|
||
<header class="usa-banner__header">
|
||
<div class="usa-banner__inner">
|
||
<div class="grid-col-auto">
|
||
<img class="usa-banner__header-flag" src="/libraries/nist-component-library/dist/img/us_flag_small.png" alt="U.S. flag">
|
||
</div>
|
||
<div class="grid-col-fill tablet:grid-col-auto">
|
||
<p class="usa-banner__header-text">An official website of the United States government</p>
|
||
<p class="usa-banner__header-action" aria-hidden="true">Here’s how you know</p>
|
||
</div>
|
||
<button class="usa-accordion__button usa-banner__button" aria-expanded="false" aria-controls="gov-banner-default">
|
||
<span class="usa-banner__button-text">Here’s how you know</span>
|
||
</button>
|
||
</div>
|
||
</header>
|
||
<div class="usa-banner__content usa-accordion__content" id="gov-banner-default">
|
||
<div class="grid-row grid-gap-lg">
|
||
<div class="usa-banner__guidance tablet:grid-col-6">
|
||
<img class="usa-banner__icon usa-media-block__img" src="/libraries/nist-component-library/dist/img/icon-dot-gov.svg" role="img" alt="" aria-hidden="true">
|
||
<div class="usa-media-block__body">
|
||
<p>
|
||
<strong>Official websites use .gov</strong>
|
||
<br/>
|
||
A <strong>.gov</strong> website belongs to an official government organization in the United States.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="usa-banner__guidance tablet:grid-col-6">
|
||
<img class="usa-banner__icon usa-media-block__img" src="/libraries/nist-component-library/dist/img/icon-https.svg" role="img" alt="" aria-hidden="true">
|
||
<div class="usa-media-block__body">
|
||
<p>
|
||
<strong>Secure .gov websites use HTTPS</strong>
|
||
<br/>
|
||
A <strong>lock</strong> ( <span class="icon-lock">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="52" height="64" viewbox="0 0 52 64" class="usa-banner__lock-image" role="img" aria-labelledby="banner-lock-title banner-lock-description" focusable="false">
|
||
<title id="banner-lock-title">Lock</title>
|
||
<desc id="banner-lock-description">A locked padlock</desc><path fill="#000000" fill-rule="evenodd" d="M26 0c10.493 0 19 8.507 19 19v9h3a4 4 0 0 1 4 4v28a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4h3v-9C7 8.507 15.507 0 26 0zm0 8c-5.979 0-10.843 4.77-10.996 10.712L15 19v9h22v-9c0-6.075-4.925-11-11-11z"/></svg>
|
||
</span>
|
||
) or <strong>https://</strong> means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- nist-index-ignore-end -->
|
||
|
||
|
||
<div data-elastic-exclude>
|
||
<!-- nist-index-ignore-start -->
|
||
<div class="nist-print-header" style="display:none;">
|
||
<p class="nist-print-header__url">https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule</p>
|
||
<img class="nist-print-header__logo" width="289" height="38" src="/libraries/nist-component-library/dist/img/logo/nist_logo_sidestack.svg" alt="National Institute of Standards and Technology" />
|
||
</div>
|
||
|
||
|
||
<div class="usa-overlay"></div>
|
||
<header class="usa-header nist-header--www nist-header--minimal" role="banner">
|
||
<div class="usa-navbar">
|
||
<div class="usa-logo flex-fill">
|
||
<a href="/" title="National Institute of Standards and Technology" aria-label="Home">
|
||
<img src="/libraries/nist-component-library/dist/img/logo/logo.svg" alt="National Institute of Standards and Technology" width="300px" height="80px" />
|
||
</a>
|
||
</div>
|
||
<div class="usa-header__right grid-row flex-auto">
|
||
<div class="grid-col-fill nist-header__search-group">
|
||
|
||
<form class="usa-search usa-search--small"
|
||
accept-charset="UTF-8"
|
||
action="/search"
|
||
id="search_form"
|
||
method="get">
|
||
<div role="search">
|
||
<label class="usa-sr-only" for="search-form">Search NIST</label>
|
||
<input class="usa-input" id="search-form" type="search" name="s" placeholder="Search NIST" required="" maxlength="128">
|
||
<button class="usa-button" type="submit"><img src="/libraries/nist-component-library/dist/img/usa-icons-bg/search--white.svg" class="usa-search__submit-icon" alt="Search"></button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<div class="grid-col-auto padding-left-1">
|
||
<button class="usa-menu-btn">Menu</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<nav aria-label="Primary navigation" class="usa-nav">
|
||
<div class="usa-nav__inner">
|
||
<button class="usa-nav__close">Close</button>
|
||
<ul class="usa-nav__primary usa-accordion">
|
||
<li class="usa-nav__primary-item">
|
||
<a class="usa-nav__link" href="/publications">Publications</a>
|
||
</li>
|
||
<li class="usa-nav__primary-item">
|
||
<button class="usa-accordion__button usa-nav__link" aria-expanded="false" aria-controls="primary_menu-2"><span>What We Do</span></button>
|
||
<div id="primary_menu-2" class="usa-nav__submenu usa-megamenu">
|
||
<div class="grid-row">
|
||
<div class="tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/topics" class="usa-nav__link">All Topics</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/advanced-communications" class="usa-nav__link">Advanced communications</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/artificial-intelligence" class="usa-nav__link">Artificial intelligence</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/bioscience" class="usa-nav__link">Bioscience</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/buildings-construction" class="usa-nav__link">Buildings and construction</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/chemistry" class="usa-nav__link">Chemistry</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/cybersecurity" class="usa-nav__link">Cybersecurity</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/electronics" class="usa-nav__link">Electronics</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/energy" class="usa-nav__link">Energy</a>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/environment" class="usa-nav__link">Environment</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/fire" class="usa-nav__link">Fire</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/forensic-science" class="usa-nav__link">Forensic science</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/health" class="usa-nav__link">Health</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/information-technology" class="usa-nav__link">Information technology</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/infrastructure" class="usa-nav__link">Infrastructure</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/manufacturing" class="usa-nav__link">Manufacturing</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/materials" class="usa-nav__link">Materials</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/mathematics-statistics" class="usa-nav__link">Mathematics and statistics</a>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/metrology" class="usa-nav__link">Metrology</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/nanotechnology" class="usa-nav__link">Nanotechnology</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/neutron-research" class="usa-nav__link">Neutron research</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/performance-excellence" class="usa-nav__link">Performance excellence</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/physics" class="usa-nav__link">Physics</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/public-safety" class="usa-nav__link">Public safety</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/quantum-information-science" class="usa-nav__link">Quantum information science</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/resilience" class="usa-nav__link">Resilience</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/standards" class="usa-nav__link">Standards</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/transportation" class="usa-nav__link">Transportation</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="usa-nav__primary-item">
|
||
<button class="usa-accordion__button usa-nav__link" aria-expanded="false" aria-controls="primary_menu-3"><span>Labs & Major Programs</span></button>
|
||
<div id="primary_menu-3" class="usa-nav__submenu usa-megamenu">
|
||
<div class="grid-row">
|
||
<div class="tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/adlp" class="usa-nav__link">Assoc Director of Laboratory Programs</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/laboratories" class="usa-nav__link">Laboratories</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="/ctl" class="usa-nav__link">Communications Technology Laboratory</a>
|
||
</li>
|
||
<li>
|
||
<a href="/el" class="usa-nav__link">Engineering Laboratory</a>
|
||
</li>
|
||
<li>
|
||
<a href="/itl" class="usa-nav__link">Information Technology Laboratory</a>
|
||
</li>
|
||
<li>
|
||
<a href="/mml" class="usa-nav__link">Material Measurement Laboratory</a>
|
||
</li>
|
||
<li>
|
||
<a href="/pml" class="usa-nav__link">Physical Measurement Laboratory</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/user-facilities" class="usa-nav__link">User Facilities</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="/ncnr" class="usa-nav__link">NIST Center for Neutron Research</a>
|
||
</li>
|
||
<li>
|
||
<a href="/cnst" class="usa-nav__link">CNST NanoFab</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/labs-major-programs/research-test-beds" class="usa-nav__link">Research Test Beds</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/laboratories/projects-programs" class="usa-nav__link">Research Projects</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/laboratories/tools-instruments" class="usa-nav__link">Tools & Instruments</a>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/major-programs" class="usa-nav__link">Major Programs</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="/baldrige" class="usa-nav__link">Baldrige Performance Excellence Program</a>
|
||
</li>
|
||
<li>
|
||
<a href="/chips" class="usa-nav__link">CHIPS for America Initiative</a>
|
||
</li>
|
||
<li>
|
||
<a href="/mep" class="usa-nav__link">Manufacturing Extension Partnership (MEP)</a>
|
||
</li>
|
||
<li>
|
||
<a href="/oam" class="usa-nav__link">Office of Advanced Manufacturing</a>
|
||
</li>
|
||
<li>
|
||
<a href="/spo" class="usa-nav__link">Special Programs Office</a>
|
||
</li>
|
||
<li>
|
||
<a href="/tpo" class="usa-nav__link">Technology Partnerships Office</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="usa-nav__primary-item">
|
||
<button class="usa-accordion__button usa-nav__link" aria-expanded="false" aria-controls="primary_menu-4"><span>Services & Resources</span></button>
|
||
<div id="primary_menu-4" class="usa-nav__submenu usa-megamenu">
|
||
<div class="grid-row">
|
||
<div class="tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/content/standards-measurements" class="usa-nav__link">Standards and Measurements</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="/calibrations" class="usa-nav__link">Calibration Services</a>
|
||
</li>
|
||
<li>
|
||
<a href="/nvlap" class="usa-nav__link">Laboratory Accreditation (NVLAP)</a>
|
||
</li>
|
||
<li>
|
||
<a href="/nist-quality-system" class="usa-nav__link">Quality System</a>
|
||
</li>
|
||
<li>
|
||
<a href="/srm" class="usa-nav__link">Standard Reference Materials (SRMs)</a>
|
||
</li>
|
||
<li>
|
||
<a href="/sri" class="usa-nav__link">Standard Reference Instruments (SRIs)</a>
|
||
</li>
|
||
<li>
|
||
<a href="/standardsgov" class="usa-nav__link">Standards.gov</a>
|
||
</li>
|
||
<li>
|
||
<a href="/pml/time-and-frequency-division/time-services" class="usa-nav__link">Time Services</a>
|
||
</li>
|
||
<li>
|
||
<a href="/pml/owm" class="usa-nav__link">Office of Weights and Measures</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/services-resources/software" class="usa-nav__link">Software</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/data" class="usa-nav__link">Data</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="https://webbook.nist.gov/chemistry/" class="usa-nav__link">Chemistry WebBook</a>
|
||
</li>
|
||
<li>
|
||
<a href="https://nvd.nist.gov/" class="usa-nav__link">National Vulnerability Database</a>
|
||
</li>
|
||
<li>
|
||
<a href="/pml/productsservices/physical-reference-data" class="usa-nav__link">Physical Reference Data</a>
|
||
</li>
|
||
<li>
|
||
<a href="/srd" class="usa-nav__link">Standard Reference Data (SRD)</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="https://shop.nist.gov/" class="usa-nav__link">Storefront</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/tpo" class="usa-nav__link">License & Patents</a>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="https://csrc.nist.gov/" class="usa-nav__link">Computer Security Resource Center (CSRC)</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/nist-research-library" class="usa-nav__link">NIST Research Library</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="usa-nav__primary-item">
|
||
<button class="usa-accordion__button usa-nav__link" aria-expanded="false" aria-controls="primary_menu-5"><span>News & Events</span></button>
|
||
<div id="primary_menu-5" class="usa-nav__submenu usa-megamenu">
|
||
<div class="grid-row">
|
||
<div class="tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/news-events/news" class="usa-nav__link">News</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/news-events/events" class="usa-nav__link">Events</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/blogs" class="usa-nav__link">Blogs</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/feature-stories" class="usa-nav__link">Feature Stories</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/awards" class="usa-nav__link">Awards</a>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/video-gallery" class="usa-nav__link">Video Gallery</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/image-gallery" class="usa-nav__link">Image Gallery</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/pao/media-contacts" class="usa-nav__link">Media Contacts</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li class="usa-nav__primary-item">
|
||
<button class="usa-accordion__button usa-nav__link" aria-expanded="false" aria-controls="primary_menu-6"><span>About NIST</span></button>
|
||
<div id="primary_menu-6" class="usa-nav__submenu usa-megamenu">
|
||
<div class="grid-row">
|
||
<div class="tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/about-nist" class="usa-nav__link">About Us</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="/director/leadership" class="usa-nav__link">Leadership</a>
|
||
</li>
|
||
<li>
|
||
<a href="/director/nist-organization-structure" class="usa-nav__link">Organization Structure</a>
|
||
</li>
|
||
<li>
|
||
<a href="/about-nist/budget-planning" class="usa-nav__link">Budget & Planning</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/about-nist/contact-us" class="usa-nav__link">Contact Us</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/about-nist/visit" class="usa-nav__link">Visit</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/careers" class="usa-nav__link">Careers</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="/iaao/academic-affairs-office" class="usa-nav__link">Student programs</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul></div><div class="column-break tablet:grid-col-fill"><ul class="usa-nav__submenu-list">
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/about-nist/work-nist" class="usa-nav__link">Work with NIST</a>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/history" class="usa-nav__link">History</a>
|
||
<ul class="usa-nav__submenu-list">
|
||
<li>
|
||
<a href="http://nistdigitalarchives.contentdm.oclc.org/" class="usa-nav__link">NIST Digital Archives</a>
|
||
</li>
|
||
<li>
|
||
<a href="/nist-museum" class="usa-nav__link">NIST Museum</a>
|
||
</li>
|
||
<li>
|
||
<a href="/nist-and-nobel" class="usa-nav__link">NIST and the Nobel</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-nav__submenu-item">
|
||
<a href="/education" class="usa-nav__link">Educational Resources</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
|
||
|
||
</header>
|
||
<!-- nist-index-ignore-end -->
|
||
</div>
|
||
|
||
<div class="grid-container">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div
|
||
id="block-nist-www-content" class="nist-block"
|
||
>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<section
|
||
class="nist-page__content usa-section clearfix"
|
||
>
|
||
|
||
<a id="main-content" tabindex="-1"></a>
|
||
|
||
|
||
|
||
<div class="grid-container margin-top-4">
|
||
<div class="grid-row grid-gap-6">
|
||
|
||
<aside class="nist-page__region nist-page__region--sidebar-first tablet-lg:grid-col-4 desktop-lg:grid-col-3">
|
||
<div>
|
||
|
||
<div
|
||
class="nist-block nist-block--book-nav"
|
||
>
|
||
|
||
|
||
<div class="display-none tablet-lg:display-block">
|
||
<div class="views-element-container"><div class="js-view-dom-id-94290bd174fefb5b749fbafdd17d9009f820bbd8815d1a70ca4eb9dc12e7a456">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div><div class="views-field views-field-field-shared-image"><div class="field-content"></div></div></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<nav>
|
||
<ul class="usa-sidenav usa-accordion usa-sidenav--book">
|
||
<li class="usa-sidenav__item usa-sidenav__item--parent">
|
||
<a href="/ncnr/neutron-instruments/instrument-control-software-0" class="usa-current" data-drupal-link-system-path="node/1520941" hreflang="en">NICE Help</a>
|
||
<button class="usa-accordion__button" aria-expanded="true" aria-controls="book-1"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1" class="usa-sidenav__sublist usa-accordion">
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/1d-plotting" data-drupal-link-system-path="node/1701836" hreflang="en">1D Plotting</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/custom-command-pages" data-drupal-link-system-path="node/1573366" hreflang="en">Custom Command Pages</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/device-control-panel" data-drupal-link-system-path="node/1821246" hreflang="en">Device Control Panel</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/devices" data-drupal-link-system-path="node/1557436" hreflang="en">Devices</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-4"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-4" class="usa-sidenav__sublist usa-accordion">
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/counter" data-drupal-link-system-path="node/1533726" hreflang="en">Counter</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-4-1"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-4-1" class="usa-sidenav__sublist">
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/counter/node-list-counter" data-drupal-link-system-path="node/1603741" hreflang="en">Node List (Counter)</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/installing-auxiliary-equipment" data-drupal-link-system-path="node/1569956" hreflang="en">Installing Auxiliary Equipment</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/motor" data-drupal-link-system-path="node/1557446" hreflang="en">Motor</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-4-3"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-4-3" class="usa-sidenav__sublist">
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/motor/node-summary-motor" data-drupal-link-system-path="node/1603736" hreflang="en">Node Summary (Motor)</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/process-controllers-temperature-pressure-etc" data-drupal-link-system-path="node/1557451" hreflang="en">Process Controllers (Temperature, Pressure, etc.)</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-4-4"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-4-4" class="usa-sidenav__sublist">
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/process-controllers-temperature-pressure-etc/node-summary" data-drupal-link-system-path="node/1581561" hreflang="en">Node Summary (Process Controller)</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/devices/process-controllers-temperature-pressure-etc/using-process" data-drupal-link-system-path="node/1605376" hreflang="en">Using Process Controller Devices</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/neutron-instruments/instrument-control-software-0/editor-window" data-drupal-link-system-path="node/1573371" hreflang="en">Editor Window</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/faq" data-drupal-link-system-path="node/1533651" hreflang="en">FAQ</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/instrument-visualization" data-drupal-link-system-path="node/1698421" hreflang="en">Instrument Visualization</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/nice-client-deployment-system" data-drupal-link-system-path="node/1572626" hreflang="en">NICE Client Deployment System</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/nodes" data-drupal-link-system-path="node/1539511" hreflang="en">Nodes</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-9"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-9" class="usa-sidenav__sublist usa-accordion">
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/nodes/locking-nodes" data-drupal-link-system-path="node/1542681" hreflang="en">Locking Nodes</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/queue" data-drupal-link-system-path="node/1564291" hreflang="en">Queue</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/sample-state-system" data-drupal-link-system-path="node/1729196" hreflang="en">Sample State System</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/sample-system" data-drupal-link-system-path="node/1721391" hreflang="en">Sample System</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/scripts" data-drupal-link-system-path="node/1533716" hreflang="en">Scripts</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/sequences" data-drupal-link-system-path="node/1533711" hreflang="en">Sequences</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/neutron-instruments/instrument-control-software-0/nice-console" data-drupal-link-system-path="node/1539521" hreflang="en">The NICE Console</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-15"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-15" class="usa-sidenav__sublist usa-accordion">
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/nice-console/common-commands" data-drupal-link-system-path="node/1539516" hreflang="en">Common Commands</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-15-1"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-15-1" class="usa-sidenav__sublist">
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/nice-console/common-commands/1-read-command" data-drupal-link-system-path="node/1542666" hreflang="en">1. read command</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/nice-console/common-commands/2-move-command" data-drupal-link-system-path="node/1542676" hreflang="en">2. move command</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/nice-console/common-commands/3-ct-command" data-drupal-link-system-path="node/1561876" hreflang="en">3. ct command</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/nice-console/common-commands/4-findpeak-command" data-drupal-link-system-path="node/1569516" hreflang="en">4. FindPeak command</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide" class="usa-current" data-drupal-link-system-path="node/1519011" hreflang="en">Trajectory Guide</a>
|
||
<button class="usa-accordion__button" aria-expanded="true" aria-controls="book-1-16"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-16" class="usa-sidenav__sublist usa-accordion">
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/1-trajectory-editor" data-drupal-link-system-path="node/1533961" hreflang="en">1. The Trajectory Editor</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/2-anatomy-trajectory" data-drupal-link-system-path="node/1533971" hreflang="en">2. Anatomy of a Trajectory</a>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference" class="usa-current" data-drupal-link-system-path="node/1534206" hreflang="en">3. Trajectory Reference</a>
|
||
<button class="usa-accordion__button" aria-expanded="true" aria-controls="book-1-16-3"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-16-3" class="usa-sidenav__sublist">
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/counter" data-drupal-link-system-path="node/1534211" hreflang="en">Counter</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/data-interest" data-drupal-link-system-path="node/1534221" hreflang="en">Data-of-Interest</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/expressions" data-drupal-link-system-path="node/1534226" hreflang="en">Expressions</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-output" data-drupal-link-system-path="node/1534231" hreflang="en">File Output</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule" class="usa-current is-active" data-drupal-link-system-path="node/1534236" hreflang="en" aria-current="page">File Rule</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/functions" data-drupal-link-system-path="node/1534241" hreflang="en">Functions</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/initialization" data-drupal-link-system-path="node/1534246" hreflang="en">Initialization</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/lists" data-drupal-link-system-path="node/1536066" hreflang="en">Lists</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/loops" data-drupal-link-system-path="node/1534441" hreflang="en">Loops</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/namespace-and-variables" data-drupal-link-system-path="node/1534216" hreflang="en">Namespace and Variables</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/nested-loops" data-drupal-link-system-path="node/1534446" hreflang="en">Nested Loops</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/parameterized-trajectories" data-drupal-link-system-path="node/1534456" hreflang="en">Parameterized Trajectories</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/queue" data-drupal-link-system-path="node/1564306" hreflang="en">Queue</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/ranges" data-drupal-link-system-path="node/1534451" hreflang="en">Ranges</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/reserved-words" data-drupal-link-system-path="node/1534466" hreflang="en">Reserved Words</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/sans-type-scan" data-drupal-link-system-path="node/1534476" hreflang="en">SANS-type Scan</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/sample" data-drupal-link-system-path="node/1534471" hreflang="en">Sample</a>
|
||
</li>
|
||
<li>
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/skipping-and-waiting" data-drupal-link-system-path="node/1662471" hreflang="en">Skipping And Waiting</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/writers" data-drupal-link-system-path="node/1564331" hreflang="en">Writers</a>
|
||
<button class="usa-accordion__button" aria-expanded="false" aria-controls="book-1-17"><span class="usa-sr-only">Expand or Collapse</span></button>
|
||
<ul id="book-1-17" class="usa-sidenav__sublist usa-accordion">
|
||
<li class="usa-sidenav__item">
|
||
<a href="/ncnr/nicesoftware/nice-help/writers/lswriters-command" data-drupal-link-system-path="node/1564336" hreflang="en">lswriters command</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</aside>
|
||
|
||
|
||
<div
|
||
class="nist-page__region nist-page__region--content tablet-lg:grid-col-8 desktop-lg:grid-col-9"
|
||
>
|
||
|
||
<div
|
||
class="nist-block"
|
||
>
|
||
|
||
|
||
<h1 class="nist-page__title">File Rule</h1>
|
||
|
||
|
||
</div>
|
||
|
||
<div
|
||
class="nist-block"
|
||
>
|
||
|
||
|
||
<!-- nist-index-ignore-start -->
|
||
<div data-elastic-exclude class="nist-block nist-social__wrapper">
|
||
<h2 class="nist-social__title">Share</h2>
|
||
<div class="social-media-sharing">
|
||
<div class="nist-social__wrapper--share">
|
||
<div>
|
||
<a target="_blank" rel="noopener" href="https://www.facebook.com/share.php?u=https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule"
|
||
title="Facebook" class="nist-social nist-social--facebook-gray">
|
||
<span>Facebook</span>
|
||
</a>
|
||
</div>
|
||
<div>
|
||
<a target="_blank" rel="noopener" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule&source=https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule"
|
||
title="Linkedin" class="nist-social nist-social--linkedin-gray">
|
||
<span>Linkedin</span>
|
||
</a>
|
||
</div>
|
||
<div>
|
||
<a target="_blank" rel="noopener" href="https://x.com/intent/tweet?url=https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule&status=https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule"
|
||
title="X.com" class="nist-social nist-social--x-gray">
|
||
<span>X.com</span>
|
||
</a>
|
||
</div>
|
||
<div>
|
||
<a href="mailto:?subject=NIST.gov&body=Check out this site https://www.nist.gov/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule"
|
||
title="Email" class="nist-social nist-social--envelope-gray">
|
||
<span>Email</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- nist-index-ignore-end -->
|
||
|
||
|
||
</div>
|
||
|
||
<div
|
||
class="nist-block"
|
||
>
|
||
|
||
|
||
<div class="text-with-summary">
|
||
|
||
|
||
|
||
<h2>Basics </h2>
|
||
|
||
<p>Trajectories perform 3 core tasks: </p>
|
||
|
||
<ol>
|
||
<li>Visit a series of instrument states. Each state can be comprised of motor positions, temperatures, etc. </li>
|
||
<li>Perform a count at each state </li>
|
||
<li>Store the results </li>
|
||
</ol>
|
||
|
||
<p>Trajectories allow you to configure how step 3 (store the results) is performed. In particular: </p>
|
||
|
||
<ul>
|
||
<li>When data files are created.</li>
|
||
<li>How data files are named.</li>
|
||
<li>How data is arranged within/across data files.</li>
|
||
</ul>
|
||
|
||
<p>Additionally, NICE can write data to multiple formats simultaneously. Two common formats are: </p>
|
||
|
||
<ul>
|
||
<li>column – A tabular text format.</li>
|
||
<li>NEXUS – A common neutron scatter format for organizing data. NICE uses the Hierarchical Data Format (HDF) binary flavor. </li>
|
||
</ul>
|
||
|
||
<blockquote>
|
||
<p>NOTE: Trajectories do not allow you to configure active writers (which data formats are written), but this is changeable and is described here: <a href="https://www.nist.gov/ncnr/nicesoftware/nice-help/writers">Writers</a>.</p>
|
||
</blockquote>
|
||
|
||
<p>Each data format is governed by a “writer” (a small python program) which is responsible for the details of how data is written. Users can describe how they want writers to store a trajectory’s data by providing “hints” in the form of “file rules” (specified by setting special variables). For example, a user could provide a hint by setting the variable <em>fileName</em> = “myfile”, which would result in the NEXUS writer producing the <em>myfile.nxs.<INT></em> file and the column writer producing the <em>myfile.<INT></em>. file, where <em><INT></em> represents a unique 3-letter instrument tag. </p>
|
||
|
||
<blockquote>
|
||
<p>NOTE: Setting filename directly is NOT a wise idea. This is explained in more detail in <strong>Example 1</strong>. </p>
|
||
</blockquote>
|
||
|
||
<p>At various times, while a trajectory is executing each point (move + count) it broadcasts the instrument state, counts and sends trajectory variables to each active writer. Unlike other trajectory variables, file rules are expressions, which are defined once and automatically re-evaluated per point, before data is sent to each writer. Understanding available file rule variables and using more complex formulas will allow you to arrange and distribute data across files in any desired manner. For simplicity, we will focus solely on the output of the NEXUS writer in the examples below, but the concepts discussed extend to all writers/formats. </p>
|
||
|
||
<h3>Example 1 </h3>
|
||
|
||
<p>Here is a trajectory which visits the following temperatures: [100,125,150,175,200]. At each iteration, the trajectory goes through two polarization states [UP, DOWN] for a total of 10 points. At each point, we will count for fixed period of 5 seconds. </p>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/1.png?itok=qaevPYHp" data-media-id="575621">
|
||
|
||
<img alt="filerule1" height="700" loading="lazy" src="/sites/default/files/images/2020/03/20/1.png" typeof="foaf:Image" width="828">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<p><span><span><span><span><span><span>We set the <em>fileName </em>expression to be “TestingH20”, which evaluates to the fixed value “TestingH20” at every point. Not surprisingly, all data points are written to one data file named “TestingH20”: </span></span></span></span></span></span></p>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/2.png?itok=RZ53zFTw" data-media-id="575626">
|
||
|
||
<img alt="filerule2" height="190" loading="lazy" src="/sites/default/files/images/2020/03/20/2.png" typeof="foaf:Image" width="423">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<p><span><span><span><span><span><span>While this looks like a reasonable scheme, if you rerun the same trajectory, <em>fileName</em> will still evaluate to the same “TestingH20<em>” </em>name, causing the writers to deal with possible name collisions. </span></span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span><span>To improve this scheme, we can change the <em>fileName </em>expression to be: </span></span></span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span><span>fileName = “</span></span></em><span><span>TestingH20</span></span><em><span><span>” + fileNum</span></span></em> </span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>where <em>fileNum</em> is a special variable that can be attached to the end of the file name. It automatically increments every time a trajectory is run</span></span><span><span>.</span></span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span><span>Every time we run the same trajectory, a data file will be generated with a new name: the provided name <em>“</em>TestingH20<em>”</em> followed by an incrementing integer: </span></span></span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span><span>TestingH20</span></span></em><em><span><span><span>1</span></span></span></em><em><span><span>.nxs</span></span></em> </span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><em><span><span>TestingH20</span></span></em><em><span><span><span>2</span></span></span></em><em><span><span>.nxs</span></span></em> </span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><em><span><span>TestingH20</span></span></em><em><span><span><span><i></span></span></span></em><em><span><span>.nxs</span></span></em> </span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>After all this, it turns out you’ll get similar behavior if you simply don’t use <em>fileName </em>at all! The reason is that NICE provides several defaults: </span></span></span></span></span></span></p>
|
||
|
||
<ul>
|
||
<li><span><span><span><span><span><em><span><span>fileName = filePrefix + fileNum</span></span></em> </span></span></span></span></span></li>
|
||
<li><span><span><span><span><span><em><span><span>filePrefix = trajNam</span></span></em><span><span>e </span></span></span></span></span></span></span></li>
|
||
<li><span><span><span><span><span><em><span><span>trajName = <the base name of the trajectory file being run></span></span></em> </span></span></span></span></span></li>
|
||
</ul>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><span><span><span>NOTE: Technically <em>fileName</em> = "</span></span></span><strong><span><span><span>String(filePrefix) + String(fileNum)</span></span></span></strong><span><span><span>" </span></span></span><span><span>which effectively concatenates <em>filePrefix</em> and <em>fileNum</em> (formally defaults to "sprintf('%s%d',filePrefix,fileNum)"). </span></span></span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>So, if you don’t specify any rules whatsoever, running the same trajectory (stored as <em>test.trj</em>) would generate the following data files: </span></span></span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><em><span><span><span><span><span><span>test1.nxs </span></span></span></span></span></span></em></p>
|
||
|
||
<p><em><span><span><span><span><span><span>test2.nxs </span></span></span></span></span></span></em></p>
|
||
|
||
<p><em><span><span><span><span><span><span>test<i>.nxs </span></span></span></span></span></span></em></p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><span><span>NOTE: It’s at discretion of each writer to decide what to do about file name collision. The NEXUS writer avoids collisions by modifying the original file name; It appends character sequence <em><_Ai></em> where i represents an increment of how many times the file with this name has been stored on disk.</span></span> </span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>Example:</span></span> </span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span><span>TestingH20.nxs</span></span></em> </span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><em><span><span>TestingH20_A1.nxs</span></span></em> </span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><em><span><span>TestingH20_A2.nxs</span></span></em> </span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>Other writers might append data to the same file, so it’s wise to not rely on this.</span></span> </span></span></span></span></p>
|
||
|
||
<h3><span><span><span><span><strong><span><span>Example 2</span></span></strong> </span></span></span></span></h3>
|
||
|
||
<p><span><span><span><span><span><span>Let’s now concentrate on how we can organize data within a running trajectory. Let’s reuse our original trajectory from <strong>Example 1</strong>, which visits the following temperatures [100,125,150,175,200] and at each iteration goes through two polarization states [UP, DOWN], for a total of 10 points.</span></span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span><span>What if a user wants each measurement to go into a separate file based on the temperature value? This can be accomplished by setting <em>filePrefix </em>to the following expression: </span></span></span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span><span>filePrefix </span></span></em><span><span>= "temp<em>_" +</em></span></span><em> </em><em><span><span>temp</span></span></em><em> </em><em><span><span>+</span></span></em><em> "_</em><em><span><span>"</span></span></em></span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span>If we assume <em>fileNum </em>had reached 4 before the trajectory was run, then <em>fileNum</em> would be incremented to 5. The output would include 5 different files based on temp value.</span></span></span></span></p>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/3.png?itok=V05bEuCB" data-media-id="575631">
|
||
|
||
<img alt="filerule3" height="186" loading="lazy" src="/sites/default/files/images/2020/03/20/3.png" typeof="foaf:Image" width="403">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<p><span><span><span><span><span><span>It’s important to note that our files were named using the desired value <em>temp</em>, as evaluated in the trajectory, and <strong>NOT</strong> the value of temperature that was achieved. This is generally preferred as it </span></span><span>results in consistent and predictable file names. </span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span>It’s also important to note that even though device and node names are not case sensitive, variable names in trajectories are.<em> </em>When users manipulate the “temp” device in a trajectory, that name essentially becomes a variable in the JavaScript engine. JavaScript is <strong>case-sensitive</strong>, and users must use consistent capitalization, or the results will be unpredictable. </span></span></span></span></span></p>
|
||
|
||
<h3><span><span><span><span><strong><span>Example 3</span></strong></span></span></span></span></h3>
|
||
|
||
<p><span><span><span><span><span>The NEXUS writer allows for storage of several scans in the same file as separate entries defined by <em>entryName</em>. If unspecified, then </span><em><span>entryName</span></em> defaults to an empty string <span>in the editor. The writer would then store all the data under a default entry named "entry".</span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span><span>Let’s redefine the above trajectory to store the points in five files, with each file containing two entries based on the polarization state: “UP” or “DOWN”. </span></span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span><span>Here is an example of the desired NEXUS hierarchy for one file:</span></span></span></span></span></span></p>
|
||
|
||
<ul>
|
||
<li><em><span><span><span><span><span><span>temp_150_5.nxs </span></span></span></span></span></span></em>
|
||
|
||
<ul>
|
||
<li><span><span><span><span><span><span>DOWN </span></span></span></span></span></span></li>
|
||
<li><span><span><span><span><span><span>UP </span></span></span></span></span></span></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
<p><span><span><span><span><span><span>Here is how the expressions would be set up to achieve this: </span></span></span></span></span></span></p>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/4.png?itok=YhW5RYbM" data-media-id="575636">
|
||
|
||
<img alt="filerule4" height="188" loading="lazy" src="/sites/default/files/images/2020/03/20/4.png" typeof="foaf:Image" width="402">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span><span>filePrefix </span></span></em><span><span>= "temp_" + temp + "_" </span></span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><em><span><span>entryName</span></span></em><span><span>= <em>frontPolarization </em></span></span></span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><span><span>NOTE: While inspired by NEXUS, all writers can observe the <em>entryName</em> rule and it is at each writer’s discretion what is done with it. Some writers may use the rule, while others may ignore it. Please see the section on </span></span></span></span></span></span><a href="https://www.nist.gov/ncnr/nicesoftware/nice-help/writers">Writers</a><span><span><span><span><span><span> for more details. </span></span></span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<h3><span><span><span><span><strong><span><span>Example 4</span></span></strong></span></span></span></span></h3>
|
||
|
||
<p><span><span><span><span><span><span>As demonstrated in the previous example, a trajectory can move a node like <em>temp</em> through a series of desired values and further use these desired values in formulas and file expressions. However, what if we want to use a node’s current value in the file name? We cannot do that because trajectories cannot access the “live” value of a node as it changes during the </span></span><span>trajectory’s execution. What is available to trajectories is a snapshot of initial node states, as they were, right before the trajectory started execution. These values can be accessed via the <em>start</em> prefix (formally </span><span>known as <em>live</em>) followed by the full node name (for example: <em>start.lakeshore340.primaryNode</em>). </span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span>Let’s revisit the trajectory we’ve <span>been using in the past several examples and make a few changes. Firstly, let’s name our files based on the sample we’re using, rather than simply making it “temp”. This assumes the current sample has already been configured and has a been given a name (the current sample’s name is stored in the node <em>sample.name)</em>. </span></span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span><span>We’ll change the </span></span><span>rule for filePrefix to be: </span></span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span>filePrefix </span></em><span>= <em>start.sample</em><span><em>.name</em> + "_temp_" + <em>temp</em> + "_" </span></span></span></span></span></span><span><span><span><span> </span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/5.png?itok=Nhsi6uo2" data-media-id="575646">
|
||
|
||
<img alt="filerule5" height="187" loading="lazy" src="/sites/default/files/images/2020/03/20/5.png" typeof="foaf:Image" width="396">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<h3><span><span><span><span><strong><span><span>Example 5</span></span></strong></span></span></span></span></h3>
|
||
|
||
<p><span><span><span><span><span>In the previous examples we wanted to put data associated with each distinct temperature into their own files. To do this, we made <em>fileName</em> a function of temperature. </span><span><span>This worked for those examples, but what if the desired temperatures were long, decimal values? What if many changing states, like magnet fields or motor positions, were combined to create a file name? We can imagine ending up with an awkward file name like:</span></span> </span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><span><span><span><span><em><span><span>myFile_temp_127.125_mag_4.0625_motorX_20.45.nxs.<INT></span></span></em></span></span></span></span></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>So, the question is: how can we group data, based on common states like temperature, but not be forced to include temperature in the name of a file?</span></span> </span></span></span></span></p>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/6.png?itok=x-j1bGuO" data-media-id="575651">
|
||
|
||
<img alt="filerule6" height="187" loading="lazy" src="/sites/default/files/images/2020/03/20/6.png" typeof="foaf:Image" width="462">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<p><span><span><span><span><span><span>The answer is to use the</span></span><em><span><span> fileGroup </span></span></em><span><span>expression. At every point, the trajectory engine will check if <em>fileGroup</em> has changed and, if so, will increment <em>fileN</em></span></span><em><span>um</span></em><span>. Otherwise, the trajectory engine will pick the <em>fileNum </em>associated with the existing <em>fileGroup</em>. B<span>y default, <em>fileGroup</em> is empty – and in all the examples above, <em>fileGroup</em> was always empty and unchanging, and so <em>fileNum </em>was only incremented once per </span>trajectory.</span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span>Let’s change our original trajectory a bit more. In this example, we decided to visit the following temperatures: [100,125,150,175,100,200] and at each iteration go through two polarization states [UP, DOWN] for a total of 12 points. </span></span></span></span></span></p>
|
||
|
||
|
||
<figure class=" nist-image--lightbox nist-image" role="group">
|
||
<div data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2020/03/20/7.PNG?itok=zIIAoWbh" data-media-id="575666">
|
||
|
||
<img alt="filerule7" height="275" loading="lazy" src="/sites/default/files/images/2020/03/20/7.PNG" typeof="foaf:Image" width="689">
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<figcaption class="nist-image__caption"></figcaption>
|
||
</figure>
|
||
|
||
|
||
|
||
<p><span><span><span><span><span>Since <em>fileName </em>now depends on <em>fileGroup</em>, notice that the second time temperature reached 100.0 K, at point 9, the data was written to the same data file as in point 1, [FeNi7]. Also, when a new <em>fileGroup </em>was added for 200.0K at point 11, the <em>fileNum </em>incremented again, hence the <em>fileName</em>, [FeNi11].</span></span></span></span></span></p>
|
||
|
||
<p><span><span><span><span><span>To produce similar output to that above, we can use the following file rules: </span></span></span></span></span><span><span><span><span> </span></span></span></span></p>
|
||
|
||
<blockquote>
|
||
<p><em><span><span><span><span><span>filePrefix = start.sample<span>.name </span></span></span></span></span></span></em></p>
|
||
|
||
<p><em><span><span><span><span><span><span>entryName= frontPolarization </span></span></span></span></span></span></em></p>
|
||
|
||
<p><em><span><span><span><span><span><span>fileGroup = temp</span></span></span></span></span></span></em></p>
|
||
</blockquote>
|
||
|
||
<p><span><span><span><span><span><span>The exact names of files will depend on the initial value of the <em>fileNum</em> variable.</span></span></span></span></span></span></p>
|
||
|
||
<p> </p>
|
||
|
||
<h3><span><span><span><span><strong><span><span>Example 6</span></span></strong></span></span></span></span></h3>
|
||
|
||
<p>If the users are interested in manipulating several samples in the same trajectory and record corresponding sample information in the file name then they would have to follow special rules. We have changed how samples are stored on the server, they are no longer represented as a device, but as a table stored in persistent configuration. As a result trajectories need to handle this case separately. Imagine a trajectory that goes through several samples and at each sample changes the temperature.</p>
|
||
|
||
<p>loop sampleId (1,2,3)</p>
|
||
|
||
<p> loop temp (300,350,400)</p>
|
||
|
||
<p>Also lets assume that the user wants data for each sample to be stored in a separate data file. In other words, we will have three files named after each sample name with three data points in it.</p>
|
||
|
||
<p>Important node: before each trajectory runs, it stores almost all of the instrument state in the variable called start (see example 4 for details). The start variable also incudes the entire sample table. It can be accessed by calling <em>start.sampleTable. For example, sample 1 info can be accessed by calling start.sampleTable(1) followed by the name of the property. </em>Hence, we can describe file name by the following rule:</p>
|
||
|
||
<p><span><span><span>filePrefix = </span></span></span><span><span><span>"<span>start.sampleTable.get(parseInt(sampleId)).get('name')</span>"</span></span></span></p>
|
||
|
||
<p>Here is the corresponding dryrun result:</p>
|
||
|
||
|
||
<div class="align-center nist-image--lightbox nist-image" data-lightbox="https://www.nist.gov/sites/default/files/styles/2800_x_2800_limit/public/images/2023/04/19/sampleId_trajectory.png?itok=JjvpFIy7" data-media-id="671661">
|
||
|
||
<img loading="lazy" src="/sites/default/files/styles/480_x_480_limit/public/images/2023/04/19/sampleId_trajectory.png?itok=6mYrk0Vi" width="351" height="200" alt="sample id trajectory dryrun" typeof="foaf:Image">
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
<p> </p>
|
||
|
||
<h2>Appendix</h2>
|
||
|
||
<h3>File Variables </h3>
|
||
|
||
<p>These are special, read-only keywords maintained by the trajectory engine, which can be used to construct file expressions. </p>
|
||
|
||
<p><strong>fileNum</strong> </p>
|
||
|
||
<ul>
|
||
<li>represents a counter; every time a point is about to count, it checks if a new <strong>fileGroup</strong> is available and increments <strong>fileNum</strong>.</li>
|
||
<li>While the trajectory is running, if a <strong>fileGroup</strong> never changes, then the counter only increments once.</li>
|
||
<li>It resets back to zero for every new experiment. </li>
|
||
</ul>
|
||
|
||
<p><strong>instFileNum</strong> </p>
|
||
|
||
<ul>
|
||
<li>the same as<strong> fileNum</strong>, except that it does not reset for every new experiment.</li>
|
||
<li>In practice this should increment forever. </li>
|
||
</ul>
|
||
|
||
<p><strong>pointNum</strong> </p>
|
||
|
||
<ul>
|
||
<li>starts at zero for each new trajectory and increments once per point. </li>
|
||
</ul>
|
||
|
||
<p><strong>expPointNum</strong> </p>
|
||
|
||
<ul>
|
||
<li>starts at zero for each new experiment and increments once per point.</li>
|
||
<li>Switching to an old experiment will not reset <strong>expPointNum</strong>. </li>
|
||
</ul>
|
||
|
||
<h3>File Expressions </h3>
|
||
|
||
<p><strong>fileName</strong> </p>
|
||
|
||
<ul>
|
||
<li>is the final value used by writers to construct file names. </li>
|
||
<li>Default: "String(filePrefix) + String(fileNum)" </li>
|
||
<li>If overwritten, this can cause name collisions when the same trajectory runs again. </li>
|
||
<li>Can be specified per instrument to be displayed in the editor. </li>
|
||
</ul>
|
||
|
||
<p><strong>filePrefix</strong> </p>
|
||
|
||
<ul>
|
||
<li>can be specified instead of <strong>fileName</strong> to guarantee uniqueness of the data files. </li>
|
||
<li>Default: <em>filePrefix = trajName </em></li>
|
||
<li>Can be specified per instrument to be displayed in the editor. </li>
|
||
</ul>
|
||
|
||
<p><strong>trajName</strong> </p>
|
||
|
||
<ul>
|
||
<li>specifies the trajectory file base name.</li>
|
||
<li>The value is not explicitly exposed in the editor and should generally not be overwritten. </li>
|
||
</ul>
|
||
|
||
<p><strong>description</strong> </p>
|
||
|
||
<ul>
|
||
<li>metadata that describes trajectory.</li>
|
||
<li>Is empty by default.</li>
|
||
</ul>
|
||
|
||
<p><strong>entryName</strong> </p>
|
||
|
||
<ul>
|
||
<li>defines the format for entries for NEXUS data files, by default is set to "" (an empty string).</li>
|
||
<li>can be specified per instrument to be displayed in the editor. </li>
|
||
<li>Default: empty string</li>
|
||
</ul>
|
||
|
||
<p><strong>fileGroup</strong> </p>
|
||
|
||
<ul>
|
||
<li>defines a trigger for incrementing <strong>fileNum</strong>.
|
||
|
||
<ul>
|
||
<li>A list of evaluated <strong>fileGroups</strong> will be maintained per trajectory and reset every time a new one starts.</li>
|
||
<li>By default, <strong>fileGroup</strong> is empty and does not change; therefore, <strong>fileNum</strong> increments only once per trajectory. </li>
|
||
</ul>
|
||
</li>
|
||
<li>SANS instruments can take advantage of this feature.
|
||
<ul>
|
||
<li>In a typical trajectory, every point needs to write to a new data file. It can be accomplished by making <strong>fileGroup</strong> change at every point: <em>fileGroup = pointNum</em>.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Can be specified per instrument to be displayed in the editor. </li>
|
||
<li>Default: empty string </li>
|
||
</ul>
|
||
|
||
<h3>Default File Rules </h3>
|
||
|
||
<p>The following default file rules are used if not explicitly defined in a trajectory: </p>
|
||
|
||
<blockquote>
|
||
<p><em>fileName = filePrefix + fileNum</em> </p>
|
||
|
||
<p><em>filePrefix = </em><em>trajNam</em>e </p>
|
||
|
||
<p><em>entryName = </em>empty string </p>
|
||
|
||
<p><em>fileGroup = </em>empty string </p>
|
||
</blockquote>
|
||
|
||
<p>Whenever a new trajectory is created through the NICE editor, file rule expressions are explicitly set to default values as determined by the instrument scientist. However, it is still possible for these file rules to be undefined given that: </p>
|
||
|
||
<ul>
|
||
<li>Older trajectories may not have defined these expressions explicitly. </li>
|
||
<li>A user may delete these expressions in the editor.</li>
|
||
<li>A user may create a trajectory outside the NICE editor.</li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div
|
||
class="nist-block"
|
||
>
|
||
|
||
|
||
<!-- nist-index-ignore-start -->
|
||
<div data-elastic-exclude="" class="nist-tags">
|
||
<a href="/topic-terms/neutron-research" hreflang="en">Neutron research</a></div>
|
||
<!-- nist-index-ignore-end -->
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="grid-container">
|
||
|
||
<div
|
||
class="nist-page__region nist-page__region--content-bottom"
|
||
>
|
||
|
||
<div
|
||
class="nist-block"
|
||
>
|
||
|
||
|
||
<div class="text-italic font-sans-2xs">
|
||
Created December 7, 2018, Updated April 19, 2023
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</section>
|
||
|
||
<nav role="navigation" aria-labelledby="book-label-1520941" class="nist-booknav">
|
||
<ul>
|
||
<li class="nist-booknav__item nist-booknav__item--prev">
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-output" rel="prev" title="Go to previous page" class="nist-booknav__link"><b>‹</b> File Output</a>
|
||
</li>
|
||
<li class="nist-booknav__item nist-booknav__item--next">
|
||
<a href="/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule/appendix" rel="next" title="Go to next page" class="nist-booknav__link">Appendix <b>›</b></a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div data-elastic-exclude>
|
||
<!-- nist-index-ignore-start -->
|
||
|
||
<footer class="nist-footer padding-bottom-4">
|
||
|
||
|
||
<div class="grid-container nist-footer__info">
|
||
<div class="grid-row">
|
||
<div class="tablet:grid-col-6">
|
||
<div class="nist-footer__logo">
|
||
<a href="/" title="National Institute of Standards and Technology" rel="home">
|
||
<img class="nist-footer__logo-img" src="/libraries/nist-component-library/dist/img/logo/NIST-Logo-Brand-White.svg" alt="National Institute of Standards and Technology logo" width="300px" height="42px" />
|
||
</a>
|
||
</div>
|
||
<div class="nist-footer__contact">
|
||
<h3 class="nist-footer__contact-heading">HEADQUARTERS</h3>
|
||
<address>
|
||
100 Bureau Drive<br>
|
||
Gaithersburg, MD 20899<br>
|
||
<a href="tel:301-975-2000">301-975-2000</a>
|
||
</address>
|
||
<p>
|
||
<a href="mailto:do-webmaster@nist.gov">Webmaster</a> | <a href="https://www.nist.gov/about-nist/contact-us">Contact Us</a> | <a href="https://www.nist.gov/visit">Our Other Offices</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="tablet:grid-col-6">
|
||
<div class="nist-footer__social-links">
|
||
|
||
<a class="nist-social nist-social--x-white" href=" https://x.com/NIST">
|
||
<span>X.com</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--facebook-white" href=" https://www.facebook.com/NIST">
|
||
<span>Facebook</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--linkedin-white" href=" https://www.linkedin.com/company/nist">
|
||
<span>LinkedIn</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--instagram-white" href=" https://www.instagram.com/nist/">
|
||
<span>Instagram</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--youtube-white" href=" https://www.youtube.com/NIST">
|
||
<span>YouTube</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--giphy-white" href=" https://giphy.com/nist">
|
||
<span>Giphy</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--rss-white" href=" https://www.nist.gov/news-events/nist-rss-feeds">
|
||
<span>RSS Feed</span>
|
||
</a>
|
||
|
||
<a class="nist-social nist-social--envelope-white" href=" https://public.govdelivery.com/accounts/USNIST/subscriber/new">
|
||
<span>Mailing List</span>
|
||
</a>
|
||
</div>
|
||
<div class="nist-footer__feedback">
|
||
How are we doing? <a class="usa-button" rel="nofollow" href="/form/nist-gov-feedback?destination=/ncnr/nicesoftware/nice-help/trajectory-guide/3-trajectory-reference/file-rule" title="Provide feedback">Feedback</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="grid-container">
|
||
<div class="nist-footer__nav" role="navigation">
|
||
<ul>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/privacy-policy">Site Privacy</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/oism/accessibility">Accessibility</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/privacy">Privacy Program</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/oism/copyrights">Copyrights</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.commerce.gov/vulnerability-disclosure-policy">Vulnerability Disclosure</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/no-fear-act-policy">No Fear Act Policy</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/office-director/freedom-information-act">FOIA</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/environmental-policy-statement">Environmental Policy</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/summary-report-scientific-integrity">Scientific Integrity</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.nist.gov/nist-information-quality-standards">Information Quality Standards</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://www.commerce.gov/">Commerce.gov</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="http://www.science.gov/">Science.gov</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="http://www.usa.gov/">USA.gov</a>
|
||
</li>
|
||
<li class="nist-footer__menu-item">
|
||
<a href="https://vote.gov/">Vote.gov</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</footer>
|
||
<!-- nist-index-ignore-end -->
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","pathPrefix":"","currentPath":"node\/1534236","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"back_to_top":{"back_to_top_button_trigger":100,"back_to_top_speed":1200,"back_to_top_prevent_on_mobile":false,"back_to_top_prevent_in_admin":true,"back_to_top_button_type":"image","back_to_top_button_text":"Back to top"},"google_analytics":{"account":"G-HEQ0YF2VYL","trackOutbound":true,"trackMailto":true,"trackTel":true,"trackDownload":true,"trackDownloadExtensions":"7z|aac|arc|arj|asf|asx|avi|bin|bsh|c|csv|doc(x|m)?|dot(x|m)?|dw(fx|g|gd)|dxf|eps|epub|exe|f(90)|flv|gif|gz|gzip|hqx|jar|jpe?g|js|m1v|mp(2|3|4|e?g)|mobi|mov(ie)?|msi|msp|pdf|phps|pl|png|ppt(x|m)?|pot(x|m)?|pps(x|m)?|ppam|sld(x|m)?|thmx|qtm?|ra(m|r)?|rfa|rtf|rvt|sch|sea|sit|swf|tar|tgz|tif|txt|txz|wav|wma|wmv|wpd|wrl|xls(x|m|b)?|xlt(x|m)|xlam|xml|xsd|z|zip"},"nist_search":{"clickTracking":"search-report-click","isDebug":false,"clickTrackEnabled":true,"message":"NIST Search in debug mode. Check the browsers network inspector for Click Track reporting results..."},"data":{"extlink":{"extTarget":false,"extTargetNoOverride":false,"extNofollow":false,"extNoreferrer":false,"extFollowNoOverride":false,"extClass":"ext","extLabel":"(link is external)","extImgClass":false,"extSubdomains":true,"extExclude":"\\.gov\\\/|\\.mil\\\/|\\manufacturingusa\\.com\\\/","extInclude":"","extCssExclude":".ck-editor, .nist-video-thumbnail__lightbox-trigger, a.nist-icon--mail-blue","extCssExplicit":"","extAlert":true,"extAlertText":"Thank you for visiting NIST. We hope your visit was informative. We have provided a link to this site because it has information that may be of interest to our users. NIST does not necessarily endorse the views expressed or the facts presented on this site. Further, NIST does not endorse any commercial products that may be advertised or available on this site. Click OK to be directed to your link.","mailtoClass":"0","mailtoLabel":"(link sends email)","extUseFontAwesome":false,"extIconPlacement":"after","extFaLinkClasses":"fa fa-external-link","extFaMailtoClasses":"fa fa-envelope-o","whitelistedDomains":[]}},"user":{"uid":0,"permissionsHash":"bd6a443844dbe99b4e6942f3b1397526e760137efd2b1ee6b2d588fc414dff20"}}</script>
|
||
<script src="/sites/default/files/js/js_jDaFaXhHm6gPUKstNYX9eIyoQXghVs3g7rbR0QoqpYY.js?scope=footer&delta=0&language=en&theme=nist_www&include=eJxdjdsOwjAIhl9I5ZEaurIOR8vSotW3tzsYzRIu4OM_eBxmZ9pnAf_b3b1eomoUcphR3sZDhTO4ZK7mRu4saMuiGJyVHsI5QsT9XdmI01L0SXAGa8vGbKJEvVfFY3FJAwSu6HuwcJ43DURRj3I9LDARBirf07XW_hT0stUIoTwWlNtx7saEMfPIwwflMGLc"></script>
|
||
<script src="https://siteimproveanalytics.com/js/siteanalyze_6017546.js" async></script>
|
||
<script src="/sites/default/files/js/js_HY1Ms3yOfuqQSMTBfmGvZOFPBXfCpnERuw4Zs8pWhy4.js?scope=footer&delta=2&language=en&theme=nist_www&include=eJxdjdsOwjAIhl9I5ZEaurIOR8vSotW3tzsYzRIu4OM_eBxmZ9pnAf_b3b1eomoUcphR3sZDhTO4ZK7mRu4saMuiGJyVHsI5QsT9XdmI01L0SXAGa8vGbKJEvVfFY3FJAwSu6HuwcJ43DURRj3I9LDARBirf07XW_hT0stUIoTwWlNtx7saEMfPIwwflMGLc"></script>
|
||
<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"37b7ccb661","applicationID":"1089704227","transactionName":"YFxUN0sADEdYVkBaClkWdwBNCA1aFnFGRhVWVWoNVgUHaHpaWkcXWFVaBks9LFtdUGJaAEB6WQ1NEw1YVVBGHltBUFMU","queueTime":5,"applicationTime":1600,"atts":"TBtXQQMaH0k=","errorBeacon":"bam.nr-data.net","agent":""}</script></body>
|
||
</html>
|