modsulator 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +202 -0
  3. data/README.md +7 -0
  4. data/Rakefile +43 -0
  5. data/bin/modsulator +16 -0
  6. data/lib/doc/Modsulator.html +725 -0
  7. data/lib/doc/_index.html +101 -0
  8. data/lib/doc/class_list.html +58 -0
  9. data/lib/doc/css/common.css +1 -0
  10. data/lib/doc/css/full_list.css +57 -0
  11. data/lib/doc/css/style.css +339 -0
  12. data/lib/doc/file_list.html +57 -0
  13. data/lib/doc/frames.html +26 -0
  14. data/lib/doc/index.html +101 -0
  15. data/lib/doc/js/app.js +219 -0
  16. data/lib/doc/js/full_list.js +181 -0
  17. data/lib/doc/js/jquery.js +4 -0
  18. data/lib/doc/method_list.html +87 -0
  19. data/lib/doc/top-level-namespace.html +112 -0
  20. data/lib/modsulator.rb +193 -0
  21. data/lib/modsulator/mods-3-5.xsd +1463 -0
  22. data/lib/modsulator/modsulator.xsd +35 -0
  23. data/lib/modsulator/modsulator_sheet.rb +62 -0
  24. data/lib/modsulator/modsulator_template.xlsx +0 -0
  25. data/lib/modsulator/modsulator_template.xml +198 -0
  26. data/lib/modsulator/normalizer.rb +218 -0
  27. data/lib/modsulator/validator.rb +37 -0
  28. data/spec/features/modsulator_sheet_unit_spec.rb +18 -0
  29. data/spec/features/normalizer_unit_spec.rb +152 -0
  30. data/spec/features/process_template_spec.rb +29 -0
  31. data/spec/features/validator_unit_spec.rb +43 -0
  32. data/spec/fixtures/Fitch_Chavez.xlsx +0 -0
  33. data/spec/fixtures/Fitch_Chavez.xml +2806 -0
  34. data/spec/fixtures/Fitch_King.xlsx +0 -0
  35. data/spec/fixtures/Fitch_King.xml +2560 -0
  36. data/spec/fixtures/M1463_AV_manifest.xlsx +0 -0
  37. data/spec/fixtures/M1463_AV_manifest.xml +2373 -0
  38. data/spec/fixtures/Matter_manifest.csv +295 -0
  39. data/spec/fixtures/Matter_manifest.xml +3309 -0
  40. data/spec/fixtures/PosadaSpreadsheet.xlsx +0 -0
  41. data/spec/fixtures/PosadaSpreadsheet.xml +1259 -0
  42. data/spec/fixtures/ars0056_manifest.csv +1 -0
  43. data/spec/fixtures/ars0056_manifest.xml +9728 -0
  44. data/spec/fixtures/crowdsourcing_bridget_1.xlsx +0 -0
  45. data/spec/fixtures/crowdsourcing_bridget_1.xml +606 -0
  46. data/spec/fixtures/crowdsourcing_bridget_2.xlsx +0 -0
  47. data/spec/fixtures/crowdsourcing_bridget_2.xml +3433 -0
  48. data/spec/fixtures/filled_template.xlsx +0 -0
  49. data/spec/fixtures/invalid_crowdsourcing_bridget_1.xml +606 -0
  50. data/spec/fixtures/manifest_v0174.csv +34 -0
  51. data/spec/fixtures/manifest_v0174.xml +1026 -0
  52. data/spec/fixtures/roman_coins_mods_manifest.csv +176 -0
  53. data/spec/fixtures/roman_coins_mods_manifest.xml +3025 -0
  54. data/spec/fixtures/test:002.xml +63 -0
  55. data/spec/fixtures/test_002.csv +4 -0
  56. data/spec/fixtures/test_002.xlsx +0 -0
  57. data/spec/integration_tests/integration_spec.rb +40 -0
  58. data/spec/lib/modsulator_spec.rb +21 -0
  59. data/spec/spec_helper.rb +97 -0
  60. metadata +261 -0
@@ -0,0 +1,4 @@
1
+ /*! jQuery v1.7.1 jquery.com | jquery.org/license */
2
+ (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
3
+ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
4
+ {for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <title>Method List</title>
19
+ <base id="base_target" target="_parent" />
20
+ </head>
21
+ <body>
22
+ <script type="text/javascript" charset="utf-8">
23
+ var hasFrames = false;
24
+ try {
25
+ hasFrames = window.top.frames.main ? true : false;
26
+ } catch (e) { }
27
+ if (hasFrames) {
28
+ document.getElementById('base_target').target = 'main';
29
+ document.body.className = 'frames';
30
+ }
31
+ </script>
32
+ <div id="content">
33
+ <h1 id="full_list_header">Method List</h1>
34
+ <div id="nav">
35
+
36
+ <span><a target="_self" href="class_list.html">
37
+ Classes
38
+ </a></span>
39
+
40
+ <span><a target="_self" href="method_list.html">
41
+ Methods
42
+ </a></span>
43
+
44
+ <span><a target="_self" href="file_list.html">
45
+ Files
46
+ </a></span>
47
+
48
+ </div>
49
+ <div id="search">Search: <input type="text" /></div>
50
+
51
+ <ul id="full_list" class="method">
52
+
53
+
54
+ <li class="r1 ">
55
+ <span class='object_link'><a href="Modsulator.html#generate_normalized_mods-instance_method" title="Modsulator#generate_normalized_mods (method)">#generate_normalized_mods</a></span>
56
+ <small>Modsulator</small>
57
+ </li>
58
+
59
+
60
+ <li class="r2 ">
61
+ <span class='object_link'><a href="Modsulator.html#generate_xml-instance_method" title="Modsulator#generate_xml (method)">#generate_xml</a></span>
62
+ <small>Modsulator</small>
63
+ </li>
64
+
65
+
66
+ <li class="r1 ">
67
+ <span class='object_link'><a href="Modsulator.html#load_spreadsheet-instance_method" title="Modsulator#load_spreadsheet (method)">#load_spreadsheet</a></span>
68
+ <small>Modsulator</small>
69
+ </li>
70
+
71
+
72
+ <li class="r2 ">
73
+ <span class='object_link'><a href="Modsulator.html#open_spreadsheet-instance_method" title="Modsulator#open_spreadsheet (method)">#open_spreadsheet</a></span>
74
+ <small>Modsulator</small>
75
+ </li>
76
+
77
+
78
+ <li class="r1 ">
79
+ <span class='object_link'><a href="Modsulator.html#validate_headers-instance_method" title="Modsulator#validate_headers (method)">#validate_headers</a></span>
80
+ <small>Modsulator</small>
81
+ </li>
82
+
83
+
84
+ </ul>
85
+ </div>
86
+ </body>
87
+ </html>
@@ -0,0 +1,112 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.8.7.6
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!top-level-namespace.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index</a> &raquo;
35
+
36
+
37
+ <span class="title">Top Level Namespace</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Top Level Namespace
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ </dl>
82
+ <div class="clear"></div>
83
+
84
+ <h2>Defined Under Namespace</h2>
85
+ <p class="children">
86
+
87
+
88
+
89
+
90
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Modsulator.html" title="Modsulator (class)">Modsulator</a></span>
91
+
92
+
93
+ </p>
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ </div>
104
+
105
+ <div id="footer">
106
+ Generated on Fri Mar 13 17:20:27 2015 by
107
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
+ 0.8.7.6 (ruby-2.2.0).
109
+ </div>
110
+
111
+ </body>
112
+ </html>
data/lib/modsulator.rb ADDED
@@ -0,0 +1,193 @@
1
+ # File "modsulator.rb" - defines the Modsulator class, providing the main part of the API that lets you work
2
+ # with metadata spreadsheets and MODS XML.
3
+
4
+ require 'active_support/core_ext/hash/indifferent_access' # Required for indifferent access to hashes
5
+ require 'active_support/core_ext/object/blank.rb' # Required for template calls to blank?()
6
+ require 'erb' # Rails templating engine
7
+ require 'nokogiri'
8
+ require 'roo'
9
+ require 'rubygems'
10
+ require 'modsulator/normalizer'
11
+ require 'modsulator/modsulator_sheet'
12
+
13
+
14
+ # The main class for the MODSulator API, which lets you work with metadata spreadsheets and MODS XML.
15
+ # @see https://consul.stanford.edu/display/chimera/MODS+bulk+loading Requirements (Stanford Consul page)
16
+ class Modsulator
17
+ # We define our own namespace for <xmlDocs>
18
+ NAMESPACE = 'http://library.stanford.edu/xmlDocs'
19
+
20
+ attr_reader :file, :template_xml, :rows
21
+
22
+
23
+ # The reason for requiring both a file and filename is that within the API that is one of the users of this class,
24
+ # the file and filename exist separately.
25
+ # Note that if neither :template_file nor :template_string are specified, the gem's built-in XML template is used.
26
+ # @param [File] file Input spreadsheet file.
27
+ # @param [String] filename The filename for the input spreadsheet.
28
+ # @param [Hash] options
29
+ # @option options [String] :template_file The full path to the desired template file (a spreadsheet).
30
+ # @option options [String] :template_string The template contents as a string
31
+ def initialize(file, filename, options = {})
32
+ @file = file
33
+ @filename = filename
34
+
35
+ @rows = ModsulatorSheet.new(@file, @filename).rows
36
+
37
+ if options[:template_string]
38
+ @template_xml = options[:template_string]
39
+ elsif options[:template_file]
40
+ @template_xml = File.read(options[:template_file])
41
+ else
42
+ @template_xml = File.read(File.expand_path('../modsulator/modsulator_template.xml', __FILE__))
43
+ end
44
+ end
45
+
46
+
47
+ # Generates an XML document with one <mods> entry per input row.
48
+ # Example output:
49
+ # <xmlDocs datetime="2015-03-23 09:22:11AM" sourceFile="FitchMLK-v1.xlsx">
50
+ # <xmlDoc id="descMetadata" objectId="druid:aa111aa1111">
51
+ # <mods ... >
52
+ # :
53
+ # </mods>
54
+ # </xmlDoc>
55
+ # <xmlDoc id="descMetadata" objectId="druid:aa222aa2222">
56
+ # <mods ... >
57
+ # :
58
+ # </mods>
59
+ # </xmlDoc>
60
+ # </xmlDocs>
61
+ # @return [String] An XML string containing all the <mods> documents within a nested structure as shown in the example.
62
+ def convert_rows
63
+ time_stamp = Time.now.strftime('%Y-%m-%d %I:%M:%S%p')
64
+ header = "<xmlDocs xmlns=\"#{NAMESPACE}\" datetime=\"#{time_stamp}\" sourceFile=\"#{@filename}\">"
65
+ full_doc = Nokogiri::XML(header)
66
+ root = full_doc.root
67
+
68
+ @rows.each do |row|
69
+ mods_xml_doc = row_to_xml(row)
70
+ sub_doc = full_doc.create_element('xmlDoc', { id: 'descMetadata', objectId: "#{row['druid']}" })
71
+ sub_doc.add_child(mods_xml_doc.root)
72
+ root.add_child(sub_doc)
73
+ end
74
+
75
+ full_doc.to_s
76
+ end
77
+
78
+
79
+ # Checks whether or not a string contains any <br> or <p> markup.
80
+ #
81
+ # @param [String] str Any string.
82
+ # @return [Boolean] true if the given string contains paragraph or line break HTML markup, false otherwise.
83
+ def has_whitespace_markup?(str)
84
+ str.match('<br>') || str.match('<br/>') || str.match('<p>') || str.match('<p/>')
85
+ end
86
+
87
+
88
+ # Transforms HTML paragraph and line break markup tags to newline characters. This should be run <b>before</b> escaping
89
+ # any XML characters.
90
+ #
91
+ # @param [String] str String to transform.
92
+ # @return [String] The given string, with a single newline character substituted for line break tags and two consecutive
93
+ # newline characters substituted for paragraph tags.
94
+ def transform_whitespace_markup(str)
95
+ str.gsub(/<br\/>/, '\n').gsub(/<br>/, '\n').gsub(/<p>/, '\n\n').gsub(/<p\/>/, '\n\n')
96
+ end
97
+
98
+
99
+ # Generates an XML string for a given row in a spreadsheet.
100
+ #
101
+ # @param [Hash] metadata_row A single row in a MODS metadata spreadsheet, as provided by the {ModsulatorSheet#rows} method.
102
+ # @return [String] XML template, with data from the row substituted in.
103
+ def generate_xml(metadata_row)
104
+ manifest_row = metadata_row
105
+
106
+ # XML escape all of the entries in the manifest row so they won't break the XML. This will turn any '<' into &#lt;
107
+ # and international characters into their corresponding code point etc.
108
+ manifest_row.each do |k, v|
109
+ if(v)
110
+ if(v.instance_of?(String) && has_whitespace_markup?(v))
111
+ v = transform_whitespace_markup(v)
112
+ end
113
+ manifest_row[k] = Nokogiri::XML::Text.new(v.to_s, Nokogiri::XML('')).to_s
114
+ end
115
+ end
116
+
117
+
118
+ # Enable access with symbol or string keys
119
+ manifest_row = manifest_row.with_indifferent_access
120
+
121
+ # Run the XML template through ERB. This creates a new ERB object from the template XML,
122
+ # NOT creating a separate thread, and omitting newlines for lines ending with '%>'
123
+ template = ERB.new(template_xml, nil, '>')
124
+
125
+ # ERB.result() actually computes the template. This just passes the top level binding.
126
+ descriptive_metadata_xml = template.result(binding)
127
+
128
+ # The manifest_row is a hash, with column names as the key.
129
+ # In the template, as a convenience we allow users to put specific column placeholders inside
130
+ # double brackets: "blah [[column_name]] blah".
131
+ # Here we replace those placeholders with the corresponding value
132
+ # from the manifest row.
133
+ manifest_row.each { |k, v| descriptive_metadata_xml.gsub!("[[#{k}]]", v.to_s.strip) }
134
+
135
+ descriptive_metadata_xml
136
+ end
137
+
138
+
139
+ # Generates normalized (Stanford) MODS XML, writing output to files.
140
+ #
141
+ # @param [String] output_directory The directory where output files should be stored.
142
+ # @return [Void]
143
+ def generate_normalized_mods(output_directory)
144
+ # Write one XML file per data row in the input spreadsheet
145
+ rows.each do |row|
146
+ sourceid = row['sourceId']
147
+ output_filename = output_directory + '/' + sourceid + '.xml'
148
+
149
+ mods_doc = row_to_xml(row)
150
+ File.open(output_filename, 'w') { |fh| fh.puts(mods_doc.root.to_s) }
151
+ end
152
+ end
153
+
154
+
155
+ # Checks that all the headers in the spreadsheet has a corresponding entry in the XML template.
156
+ #
157
+ # @param [Array<String>] spreadsheet_headers A list of all the headers in the spreadsheet
158
+ # @return [Array<String>] A list of spreadsheet headers that did not appear in the XML template. This list
159
+ # will be empty if all the headers were present.
160
+ def validate_headers(spreadsheet_headers)
161
+ spreadsheet_headers.reject do |header|
162
+ header.nil? || header == 'sourceId' || template_xml.include?(header)
163
+ end
164
+ end
165
+
166
+
167
+ # Converts a single data row into a normalized MODS XML document.
168
+ #
169
+ # @param row A single row in a MODS metadata spreadsheet, as provided by the {ModsulatorSheet#rows} method.
170
+ # @return An instance of Nokogiri::XML::Document that holds a normalized MODS XML instance.
171
+ def row_to_xml(row)
172
+
173
+ # Generate an XML string, then remove any text carried over from the template
174
+ mods_xml = generate_xml(row)
175
+ mods_xml.gsub!(/\[\[[^\]]+\]\]/, '')
176
+
177
+ # Remove empty tags from when e.g. <[[sn1:p2:type]]> does not get filled in when [[sn1:p2:type]] has no value in the source spreadsheet
178
+ mods_xml.gsub!(/<\s[^>]+><\/>/, '')
179
+
180
+ mods_xml_doc = Nokogiri::XML(mods_xml)
181
+ normalizer = Normalizer.new
182
+ normalizer.normalize_document(mods_xml_doc.root)
183
+ return mods_xml_doc
184
+ end
185
+
186
+
187
+ # Returns the template spreadsheet that's built into this gem.
188
+ #
189
+ # @return The template spreadsheet, in binary form.
190
+ def self.get_template_spreadsheet
191
+ IO.read(File.expand_path('../modsulator/modsulator_template.xlsx', __FILE__), mode: 'rb')
192
+ end
193
+ end
@@ -0,0 +1,1463 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ Via XMLSpy. Editor: Ray Denenberg, Library of Congress; rden@loc.gov
4
+ -->
5
+ <xs:schema xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.loc.gov/mods/v3" targetNamespace="http://www.loc.gov/mods/v3" elementFormDefault="qualified" attributeFormDefault="unqualified">
6
+ <!-- -->
7
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.loc.gov/mods/xml.xsd"/>
8
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.loc.gov/standards/xlink/xlink.xsd"/>
9
+ <!--
10
+
11
+ MODS: Metadata Object Description Schema. See http://www.loc.gov/standards/mods/
12
+
13
+ ****************************************************************
14
+ *
15
+ * MODS 3.5
16
+ *
17
+ * July 8, 2013
18
+ *
19
+ *****************************************************************
20
+
21
+
22
+ ***************************************************
23
+ Changes in version 3.5
24
+
25
+ 1. Reorganization of the schema. To allow a reader to more easily understand the definition of a particular element,
26
+ by minimizing the number of places within the schema that the reader must look.
27
+ This in itself does not introduce any substantive changes.
28
+
29
+ 2. Add attribute @unit to <extent> of <physicalDescription> ( @unit is already defined for <extent> of <part>).
30
+
31
+ 3. Add value 'rfc5646' to the enumerated list of values for the authority attribute for languageTerm.
32
+
33
+ 4. Define attributes @altFormat and @contentType attributes for <abstract>, <accessCondition>, <tableOfContents> and <titleInfo>.
34
+
35
+ 5. Define attribute @eventType for <originInfo> (recomended values 'production', 'publication', 'distribution', 'manufacture').
36
+
37
+ 6. Define attribute @typeURI for <identifier> and <note> (including <physicalDescription><note>).
38
+
39
+ 7. Define attribute @generator for <classification>.
40
+
41
+ 8. Define element <etal>, a subelement of <name>.
42
+
43
+ 9. Define attribute @otherType for <titleInfo>.
44
+
45
+
46
+
47
+ *********************************************************************************************
48
+
49
+ *************************************
50
+ Organization of this schema
51
+ *************************************
52
+ The schema has three parts:
53
+
54
+ 1. Structural declarations and definitions
55
+ 2. Elements (top level elements and their subelements)
56
+ 3. Auxiliary Definitions
57
+
58
+ ***********************************************************************
59
+ ***********************************************************************
60
+ Part 1: Structural Declarations and Definitions
61
+ ***********************************************************************
62
+ ***********************************************************************
63
+ - Definition of a single MODS record and a MODS collection
64
+ - modsGroup, listing the top level MODS elements
65
+
66
+ ***********************************************************************
67
+ ** Definition of a single MODS record **
68
+ **********************************************************************
69
+ -->
70
+ <xs:element name="mods" type="modsDefinition"/>
71
+ <!-- -->
72
+ <xs:complexType name="modsDefinition">
73
+ <xs:group ref="modsGroup" maxOccurs="unbounded"/>
74
+ <xs:attribute name="ID" type="xs:ID"/>
75
+ <xs:attribute name="version">
76
+ <xs:simpleType>
77
+ <xs:restriction base="xs:string">
78
+ <xs:enumeration value="3.5"/>
79
+ <xs:enumeration value="3.4"/>
80
+ <xs:enumeration value="3.3"/>
81
+ <xs:enumeration value="3.2"/>
82
+ <xs:enumeration value="3.1"/>
83
+ <xs:enumeration value="3.0"/>
84
+ </xs:restriction>
85
+ </xs:simpleType>
86
+ </xs:attribute>
87
+ </xs:complexType>
88
+ <!--
89
+
90
+ ***********************************************************************
91
+ ** Definition of a MODS collection **
92
+ **********************************************************************
93
+ -->
94
+ <xs:element name="modsCollection" type="modsCollectionDefinition"/>
95
+ <!-- -->
96
+ <xs:complexType name="modsCollectionDefinition">
97
+ <xs:sequence>
98
+ <xs:element ref="mods" maxOccurs="unbounded"/>
99
+ </xs:sequence>
100
+ </xs:complexType>
101
+ <!--
102
+
103
+
104
+ ************************************************
105
+ ** Group Definition
106
+ ***********************************************
107
+ This forms the basis of the mods record definition, and also relatedItem. The difference between a MODS record and a relatedItem
108
+ (as they pertain to their usage of the group definition) is that mods requires at least one element and relatedItem does not.
109
+ The group definition is used by both, where relatedItem says minOccurs="0" and for the mods record definition minOccurs="1" (default).
110
+
111
+ -->
112
+ <xs:group name="modsGroup">
113
+ <xs:choice>
114
+ <!--
115
+
116
+ ***********************************************************************
117
+ ** These are the "top level" MODS elements **
118
+ **********************************************************************
119
+ -->
120
+ <xs:element ref="abstract"/>
121
+ <xs:element ref="accessCondition"/>
122
+ <xs:element ref="classification"/>
123
+ <xs:element ref="extension"/>
124
+ <xs:element ref="genre"/>
125
+ <xs:element ref="identifier"/>
126
+ <xs:element ref="language"/>
127
+ <xs:element ref="location"/>
128
+ <xs:element ref="name"/>
129
+ <xs:element ref="note"/>
130
+ <xs:element ref="originInfo"/>
131
+ <xs:element ref="part"/>
132
+ <xs:element ref="physicalDescription"/>
133
+ <xs:element ref="recordInfo"/>
134
+ <xs:element ref="relatedItem"/>
135
+ <xs:element ref="subject"/>
136
+ <xs:element ref="tableOfContents"/>
137
+ <xs:element ref="targetAudience"/>
138
+ <xs:element ref="titleInfo"/>
139
+ <xs:element ref="typeOfResource"/>
140
+ <!--
141
+ End list of "top level" MODS elements
142
+ -->
143
+ </xs:choice>
144
+ </xs:group>
145
+ <!--
146
+
147
+ ***********************************************************************
148
+ ***********************************************************************
149
+ Part 2: Elements (top level elements and their subelements)
150
+ ************************************************************************
151
+ ***********************************************************************
152
+ -->
153
+ <!--
154
+
155
+ *********************************************
156
+ * Top Level Element <abstract> *
157
+ *********************************************
158
+
159
+ -->
160
+ <xs:element name="abstract" type="abstractDefinition"/>
161
+ <!-- -->
162
+ <xs:complexType name="abstractDefinition">
163
+ <xs:simpleContent>
164
+ <xs:extension base="stringPlusLanguage">
165
+ <xs:attribute name="displayLabel" type="xs:string"/>
166
+ <xs:attribute name="type" type="xs:string"/>
167
+ <xs:attributeGroup ref="xlink:simpleLink"/>
168
+ <xs:attribute name="shareable" fixed="no"/>
169
+ <xs:attribute name="altRepGroup" type="xs:string"/>
170
+ <xs:attributeGroup ref="altFormatAttributeGroup"/>
171
+ </xs:extension>
172
+ <!-- -->
173
+ <!-- altFormat new in version 3.5 -->
174
+ </xs:simpleContent>
175
+ </xs:complexType>
176
+ <!--
177
+
178
+
179
+ ****************************************************
180
+ * Top Level Element <accessCondition> *
181
+ *****************************************************
182
+
183
+ -->
184
+ <xs:element name="accessCondition" type="accessConditionDefinition"/>
185
+ <!-- -->
186
+ <xs:complexType name="accessConditionDefinition" mixed="true">
187
+ <xs:complexContent mixed="true">
188
+ <xs:extension base="extensionDefinition">
189
+ <xs:attributeGroup ref="xlink:simpleLink"/>
190
+ <xs:attributeGroup ref="languageAttributeGroup"/>
191
+ <xs:attribute name="type" type="xs:string"/>
192
+ <xs:attribute name="altRepGroup" type="xs:string"/>
193
+ <xs:attributeGroup ref="altFormatAttributeGroup"/>
194
+ </xs:extension>
195
+ <!-- -->
196
+ <!-- altFormat new in version 3.5 -->
197
+ </xs:complexContent>
198
+ </xs:complexType>
199
+ <!--
200
+
201
+ ****************************************************
202
+ * Top Level Element <classification> *
203
+ *****************************************************
204
+ -->
205
+ <xs:element name="classification" type="classificationDefinition"/>
206
+ <!-- -->
207
+ <xs:complexType name="classificationDefinition">
208
+ <xs:simpleContent>
209
+ <xs:extension base="stringPlusLanguagePlusAuthority">
210
+ <xs:attribute name="edition" type="xs:string"/>
211
+ <xs:attribute name="displayLabel" type="xs:string"/>
212
+ <xs:attribute name="altRepGroup" type="xs:string"/>
213
+ <xs:attribute name="usage" fixed="primary"/>
214
+ <xs:attribute name="generator" type="xs:string"/>
215
+ </xs:extension>
216
+ <!--
217
+ The following attribute, generator, is new in version 3.5
218
+ -->
219
+ <!--
220
+ @generator may be used to indicate that the classification is automatically generated,
221
+ and its value may indicate the nature of the generation, for example "lcc to ddc"
222
+ -->
223
+ </xs:simpleContent>
224
+ </xs:complexType>
225
+ <!--
226
+
227
+ ****************************************************
228
+ * Top Level Element <extension> *
229
+ *****************************************************
230
+
231
+ -->
232
+ <xs:element name="extension" type="extensionDefinition"/>
233
+ <!-- -->
234
+ <xs:complexType name="extensionDefinition" mixed="true">
235
+ <xs:sequence>
236
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
237
+ </xs:sequence>
238
+ <xs:attribute name="displayLabel" type="xs:string"/>
239
+ </xs:complexType>
240
+ <!--
241
+
242
+ ****************************************************
243
+ * Top Level Element <genre> *
244
+ *****************************************************
245
+ -->
246
+ <xs:element name="genre" type="genreDefinition"/>
247
+ <!-- -->
248
+ <xs:complexType name="genreDefinition">
249
+ <xs:simpleContent>
250
+ <xs:extension base="stringPlusLanguagePlusAuthority">
251
+ <xs:attribute name="type" type="xs:string"/>
252
+ <xs:attribute name="displayLabel" type="xs:string"/>
253
+ <xs:attribute name="altRepGroup" type="xs:string"/>
254
+ <xs:attribute name="usage" fixed="primary"/>
255
+ </xs:extension>
256
+ </xs:simpleContent>
257
+ </xs:complexType>
258
+ <!--
259
+
260
+ ****************************************************
261
+ * Top Level Element <identifier> *
262
+ *****************************************************
263
+ -->
264
+ <xs:element name="identifier" type="identifierDefinition"/>
265
+ <!-- -->
266
+ <xs:complexType name="identifierDefinition">
267
+ <xs:simpleContent>
268
+ <xs:extension base="stringPlusLanguage">
269
+ <xs:attribute name="displayLabel" type="xs:string"/>
270
+ <xs:attribute name="type" type="xs:string"/>
271
+ <xs:attribute name="typeURI" type="xs:anyURI"/>
272
+ <xs:attribute name="invalid" fixed="yes"/>
273
+ <xs:attribute name="altRepGroup" type="xs:string"/>
274
+ </xs:extension>
275
+ <!-- -->
276
+ <!-- typeURI attribute added in version 3.5 -->
277
+ </xs:simpleContent>
278
+ </xs:complexType>
279
+ <!--
280
+
281
+ ****************************************************
282
+ * Top Level Element <language> *
283
+ *****************************************************
284
+ -->
285
+ <xs:element name="language" type="languageDefinition"/>
286
+ <!-- -->
287
+ <xs:complexType name="languageDefinition">
288
+ <xs:sequence>
289
+ <xs:element ref="languageTerm" maxOccurs="unbounded"/>
290
+ <xs:element ref="scriptTerm" minOccurs="0" maxOccurs="unbounded"/>
291
+ </xs:sequence>
292
+ <xs:attribute name="objectPart" type="xs:string"/>
293
+ <xs:attributeGroup ref="languageAttributeGroup"/>
294
+ <xs:attribute name="displayLabel" type="xs:string"/>
295
+ <xs:attribute name="altRepGroup" type="xs:string"/>
296
+ <xs:attribute name="usage" fixed="primary"/>
297
+ </xs:complexType>
298
+ <!--
299
+
300
+ ******** Subordinate Elements for <language>
301
+ -->
302
+ <xs:element name="languageTerm" type="languageTermDefinition"/>
303
+ <!-- -->
304
+ <xs:complexType name="languageTermDefinition">
305
+ <xs:simpleContent>
306
+ <xs:extension base="stringPlusLanguage">
307
+ <xs:attribute name="authorityURI" type="xs:anyURI"/>
308
+ <xs:attribute name="valueURI" type="xs:anyURI"/>
309
+ <xs:attribute name="authority">
310
+ <xs:simpleType>
311
+ <xs:restriction base="xs:string">
312
+ <xs:enumeration value="rfc3066"/>
313
+ <xs:enumeration value="iso639-2b"/>
314
+ <xs:enumeration value="iso639-3"/>
315
+ <xs:enumeration value="rfc4646"/>
316
+ <xs:enumeration value="rfc5646"/>
317
+ <!-- -->
318
+ <!--
319
+ ******* value rfc5646 new in version 3.5.
320
+ -->
321
+ </xs:restriction>
322
+ </xs:simpleType>
323
+ </xs:attribute>
324
+ <xs:attribute name="type" type="codeOrText"/>
325
+ </xs:extension>
326
+ </xs:simpleContent>
327
+ </xs:complexType>
328
+ <!--
329
+
330
+ *****************scriptTerm ************************
331
+ -->
332
+ <xs:element name="scriptTerm" type="scriptTermDefinition"/>
333
+ <!-- -->
334
+ <xs:complexType name="scriptTermDefinition">
335
+ <xs:simpleContent>
336
+ <xs:extension base="stringPlusLanguagePlusAuthority">
337
+ <xs:attribute name="type" type="codeOrText"/>
338
+ </xs:extension>
339
+ </xs:simpleContent>
340
+ </xs:complexType>
341
+ <!--
342
+
343
+
344
+ ****************************************************
345
+ * Top Level Element <location> *
346
+ *****************************************************
347
+
348
+ -->
349
+ <xs:element name="location" type="locationDefinition"/>
350
+ <!-- -->
351
+ <xs:complexType name="locationDefinition">
352
+ <xs:sequence>
353
+ <xs:element ref="physicalLocation" minOccurs="0" maxOccurs="unbounded"/>
354
+ <xs:element ref="shelfLocator" minOccurs="0" maxOccurs="unbounded"/>
355
+ <xs:element ref="url" minOccurs="0" maxOccurs="unbounded"/>
356
+ <xs:element ref="holdingSimple" minOccurs="0"/>
357
+ <xs:element ref="holdingExternal" minOccurs="0"/>
358
+ </xs:sequence>
359
+ <xs:attributeGroup ref="languageAttributeGroup"/>
360
+ <xs:attribute name="displayLabel" type="xs:string"/>
361
+ <xs:attribute name="altRepGroup" type="xs:string"/>
362
+ </xs:complexType>
363
+ <!--
364
+
365
+ ******** Subordinate Elements for <location>
366
+ -->
367
+ <!--
368
+ ********** physicalLocation **********
369
+ -->
370
+ <xs:element name="physicalLocation" type="physicalLocationDefinition"/>
371
+ <!-- -->
372
+ <xs:complexType name="physicalLocationDefinition">
373
+ <xs:simpleContent>
374
+ <xs:extension base="stringPlusLanguagePlusAuthority">
375
+ <xs:attributeGroup ref="xlink:simpleLink"/>
376
+ <xs:attribute name="displayLabel" type="xs:string"/>
377
+ <xs:attribute name="type" type="xs:string"/>
378
+ </xs:extension>
379
+ </xs:simpleContent>
380
+ </xs:complexType>
381
+ <!-- -->
382
+ <xs:element name="shelfLocator" type="stringPlusLanguage"/>
383
+ <!--
384
+ ********** holdingSimple **********
385
+ -->
386
+ <xs:element name="holdingSimple" type="holdingSimpleDefinition"/>
387
+ <!-- -->
388
+ <xs:complexType name="holdingSimpleDefinition">
389
+ <xs:sequence>
390
+ <xs:element ref="copyInformation" maxOccurs="unbounded"/>
391
+ </xs:sequence>
392
+ </xs:complexType>
393
+ <!--
394
+ **********copyInformation **********
395
+ -->
396
+ <xs:element name="copyInformation" type="copyInformationDefinition"/>
397
+ <!-- -->
398
+ <xs:complexType name="copyInformationDefinition">
399
+ <xs:sequence>
400
+ <xs:element ref="form" minOccurs="0"/>
401
+ <xs:element ref="subLocation" minOccurs="0" maxOccurs="unbounded"/>
402
+ <xs:element ref="shelfLocator" minOccurs="0" maxOccurs="unbounded"/>
403
+ <xs:element ref="electronicLocator" minOccurs="0" maxOccurs="unbounded"/>
404
+ <xs:element name="note" minOccurs="0" maxOccurs="unbounded">
405
+ <xs:complexType>
406
+ <xs:simpleContent>
407
+ <xs:extension base="stringPlusLanguage">
408
+ <xs:attribute name="displayLabel" type="xs:string"/>
409
+ <xs:attribute name="type" type="xs:string"/>
410
+ <xs:attributeGroup ref="xlink:simpleLink"/>
411
+ <xs:attribute name="ID" type="xs:ID"/>
412
+ </xs:extension>
413
+ </xs:simpleContent>
414
+ </xs:complexType>
415
+ </xs:element>
416
+ <xs:element ref="enumerationAndChronology" minOccurs="0" maxOccurs="unbounded"/>
417
+ </xs:sequence>
418
+ </xs:complexType>
419
+ <!--
420
+ **********form**********
421
+ -->
422
+ <xs:element name="form" type="formDefinition"/>
423
+ <!-- -->
424
+ <xs:complexType name="formDefinition">
425
+ <xs:simpleContent>
426
+ <xs:extension base="stringPlusLanguagePlusAuthority">
427
+ <xs:attribute name="type" type="xs:string"/>
428
+ </xs:extension>
429
+ </xs:simpleContent>
430
+ </xs:complexType>
431
+ <!-- -->
432
+ <xs:element name="subLocation" type="stringPlusLanguage"/>
433
+ <xs:element name="electronicLocator" type="stringPlusLanguage"/>
434
+ <!--
435
+ **********enumerationAndChronology **********
436
+ -->
437
+ <xs:element name="enumerationAndChronology" type="enumerationAndChronologyDefinition"/>
438
+ <!-- -->
439
+ <xs:complexType name="enumerationAndChronologyDefinition">
440
+ <xs:simpleContent>
441
+ <xs:extension base="stringPlusLanguage">
442
+ <xs:attribute name="unitType">
443
+ <xs:simpleType>
444
+ <xs:restriction base="xs:string">
445
+ <xs:enumeration value="1"/>
446
+ <xs:enumeration value="2"/>
447
+ <xs:enumeration value="3"/>
448
+ </xs:restriction>
449
+ </xs:simpleType>
450
+ </xs:attribute>
451
+ </xs:extension>
452
+ </xs:simpleContent>
453
+ </xs:complexType>
454
+ <!--
455
+ ********** url **********
456
+ -->
457
+ <xs:element name="url" type="urlDefinition"/>
458
+ <!-- -->
459
+ <xs:complexType name="urlDefinition">
460
+ <xs:simpleContent>
461
+ <xs:extension base="xs:anyURI">
462
+ <xs:attribute name="dateLastAccessed" type="xs:string"/>
463
+ <xs:attribute name="displayLabel" type="xs:string"/>
464
+ <xs:attribute name="note" type="xs:string"/>
465
+ <xs:attribute name="access">
466
+ <xs:simpleType>
467
+ <xs:restriction base="xs:string">
468
+ <xs:enumeration value="preview"/>
469
+ <xs:enumeration value="raw object"/>
470
+ <xs:enumeration value="object in context"/>
471
+ </xs:restriction>
472
+ </xs:simpleType>
473
+ </xs:attribute>
474
+ <xs:attribute name="usage">
475
+ <xs:simpleType>
476
+ <xs:restriction base="xs:string">
477
+ <xs:enumeration value="primary display"/>
478
+ <xs:enumeration value="primary"/>
479
+ </xs:restriction>
480
+ </xs:simpleType>
481
+ </xs:attribute>
482
+ </xs:extension>
483
+ </xs:simpleContent>
484
+ </xs:complexType>
485
+ <!-- -->
486
+ <xs:element name="holdingExternal" type="extensionDefinition"/>
487
+ <!--
488
+
489
+ ****************************************************
490
+ * Top Level Element <name> *
491
+ *****************************************************
492
+ -->
493
+ <xs:element name="name" type="nameDefinition"/>
494
+ <!-- -->
495
+ <xs:complexType name="nameDefinition">
496
+ <xs:choice>
497
+ <!--
498
+ this choice is introduced in version 3.5, with the introduction of <etal>. There are two "choices", one without <etal> (the old way) and one with <etal>.
499
+
500
+ Choice one. The old way.
501
+ -->
502
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
503
+ <xs:element ref="namePart"/>
504
+ <xs:element ref="displayForm"/>
505
+ <xs:element ref="affiliation"/>
506
+ <xs:element ref="role"/>
507
+ <xs:element ref="description"/>
508
+ </xs:choice>
509
+ <!--
510
+
511
+ Choice two. With <etal>.
512
+ The presence of <etal> Indicates that there are names that cannot be explicitily included. It may be empty, or it may have simple content
513
+ - e.g. <etal>et al.</etal>. In the latter case the content is what is suggested for display. When <etal> occurs, <namePart> MAY NOT occur,
514
+ <displayForm> MAY NOT occur, <affiliation>, <role>, <description> MAY occur (but are not repeatable).
515
+ (<etal> is not repeatable within a given <name>, however there may be mutilple <etal> elements, each within in a separate <name> element.)
516
+ -->
517
+ <xs:sequence>
518
+ <!--
519
+
520
+ <etal> is mandatory, nonrepeatable, and must occur first.
521
+ After that <affiliation>, <role>, and <description> may occur, in any order or number.
522
+ -->
523
+ <xs:element ref="etal"/>
524
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
525
+ <xs:element ref="affiliation"/>
526
+ <xs:element ref="role"/>
527
+ <xs:element ref="description"/>
528
+ </xs:choice>
529
+ </xs:sequence>
530
+ <!-- -->
531
+ </xs:choice>
532
+ <xs:attribute name="ID" type="xs:ID"/>
533
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
534
+ <xs:attributeGroup ref="xlink:simpleLink"/>
535
+ <xs:attributeGroup ref="languageAttributeGroup"/>
536
+ <xs:attribute name="displayLabel" type="xs:string"/>
537
+ <xs:attribute name="altRepGroup" type="xs:string"/>
538
+ <xs:attribute name="nameTitleGroup" type="xs:string"/>
539
+ <xs:attribute name="usage" fixed="primary"/>
540
+ <xs:attribute name="type">
541
+ <xs:simpleType>
542
+ <xs:restriction base="xs:string">
543
+ <xs:enumeration value="personal"/>
544
+ <xs:enumeration value="corporate"/>
545
+ <xs:enumeration value="conference"/>
546
+ <xs:enumeration value="family"/>
547
+ </xs:restriction>
548
+ </xs:simpleType>
549
+ </xs:attribute>
550
+ </xs:complexType>
551
+ <!--
552
+
553
+ ******** Subordinate Elements for <name>
554
+ -->
555
+ <!-- namePart -->
556
+ <xs:element name="namePart" type="namePartDefinition"/>
557
+ <!-- -->
558
+ <xs:complexType name="namePartDefinition">
559
+ <xs:simpleContent>
560
+ <xs:extension base="stringPlusLanguage">
561
+ <xs:attribute name="type">
562
+ <xs:simpleType>
563
+ <xs:restriction base="xs:string">
564
+ <xs:enumeration value="date"/>
565
+ <xs:enumeration value="family"/>
566
+ <xs:enumeration value="given"/>
567
+ <xs:enumeration value="termsOfAddress"/>
568
+ </xs:restriction>
569
+ </xs:simpleType>
570
+ </xs:attribute>
571
+ </xs:extension>
572
+ </xs:simpleContent>
573
+ </xs:complexType>
574
+ <!-- displayForm, affiliation, description -->
575
+ <xs:element name="displayForm" type="stringPlusLanguage"/>
576
+ <xs:element name="affiliation" type="stringPlusLanguage"/>
577
+ <xs:element name="description" type="stringPlusLanguage"/>
578
+ <!--
579
+ ******** role *********************
580
+ -->
581
+ <xs:element name="role" type="roleDefinition"/>
582
+ <!-- -->
583
+ <xs:complexType name="roleDefinition">
584
+ <xs:sequence maxOccurs="unbounded">
585
+ <xs:element ref="roleTerm"/>
586
+ </xs:sequence>
587
+ </xs:complexType>
588
+ <!--
589
+ ***************roleTerm ***********************
590
+ -->
591
+ <xs:element name="roleTerm" type="roleTermDefinition"/>
592
+ <!-- -->
593
+ <xs:complexType name="roleTermDefinition">
594
+ <xs:simpleContent>
595
+ <xs:extension base="stringPlusLanguagePlusAuthority">
596
+ <xs:attribute name="type" type="codeOrText"/>
597
+ </xs:extension>
598
+ </xs:simpleContent>
599
+ </xs:complexType>
600
+ <!--
601
+ ******** etal (new in 3.5) ********
602
+ -->
603
+ <xs:element name="etal" type="stringPlusLanguage"/>
604
+ <!--
605
+
606
+
607
+ ****************************************************
608
+ * Top Level Element <note> *
609
+ *****************************************************
610
+ -->
611
+ <xs:element name="note" type="noteDefinition"/>
612
+ <!-- -->
613
+ <xs:complexType name="noteDefinition">
614
+ <xs:simpleContent>
615
+ <xs:extension base="stringPlusLanguage">
616
+ <xs:attribute name="displayLabel" type="xs:string"/>
617
+ <xs:attribute name="type" type="xs:string"/>
618
+ <xs:attribute name="typeURI" type="xs:anyURI"/>
619
+ <xs:attributeGroup ref="xlink:simpleLink"/>
620
+ <xs:attribute name="ID" type="xs:ID"/>
621
+ <xs:attribute name="altRepGroup" type="xs:string"/>
622
+ </xs:extension>
623
+ <!-- -->
624
+ <!-- typeURI attribute added in version 3.5 -->
625
+ </xs:simpleContent>
626
+ </xs:complexType>
627
+ <!--
628
+
629
+
630
+ ****************************************************
631
+ * Top Level Element <originInfo> *
632
+ *****************************************************
633
+ -->
634
+ <xs:element name="originInfo" type="originInfoDefinition"/>
635
+ <!-- -->
636
+ <xs:complexType name="originInfoDefinition">
637
+ <xs:choice maxOccurs="unbounded">
638
+ <xs:element ref="place"/>
639
+ <xs:element ref="publisher"/>
640
+ <xs:element ref="dateIssued"/>
641
+ <xs:element ref="dateCreated"/>
642
+ <xs:element ref="dateCaptured"/>
643
+ <xs:element ref="dateValid"/>
644
+ <xs:element ref="dateModified"/>
645
+ <xs:element ref="copyrightDate"/>
646
+ <xs:element ref="dateOther"/>
647
+ <xs:element ref="edition"/>
648
+ <xs:element ref="issuance"/>
649
+ <xs:element ref="frequency"/>
650
+ </xs:choice>
651
+ <xs:attributeGroup ref="languageAttributeGroup"/>
652
+ <xs:attribute name="displayLabel" type="xs:string"/>
653
+ <xs:attribute name="altRepGroup" type="xs:string"/>
654
+ <xs:attribute name="eventType" type="xs:string"/>
655
+ <!--
656
+
657
+ following attribute, @eventType, is new in version 3.5
658
+ -->
659
+ <!--
660
+ Recomended values are "production", "publication", "distribution", "manufacture"
661
+ So when eventType="production"
662
+ • <publisher> is the producer
663
+ • <dateIssued> is the date of production
664
+ • <place> is the place of production
665
+ etc.
666
+ Detailed usage rules are supplied in the guidelines.
667
+ -->
668
+ </xs:complexType>
669
+ <!--
670
+
671
+ ******** Subordinate Elements for <originInfo>
672
+ -->
673
+ <!--
674
+ *** place ***
675
+ -->
676
+ <xs:element name="place" type="placeDefinition"/>
677
+ <!-- -->
678
+ <xs:complexType name="placeDefinition">
679
+ <xs:sequence>
680
+ <xs:element ref="placeTerm" maxOccurs="unbounded"/>
681
+ </xs:sequence>
682
+ <xs:attribute name="supplied" fixed="yes"/>
683
+ </xs:complexType>
684
+ <!--
685
+ *** placeTerm ***
686
+ -->
687
+ <xs:element name="placeTerm" type="placeTermDefinition"/>
688
+ <!-- -->
689
+ <xs:complexType name="placeTermDefinition">
690
+ <xs:simpleContent>
691
+ <xs:extension base="stringPlusLanguage">
692
+ <xs:attribute name="authorityURI" type="xs:anyURI"/>
693
+ <xs:attribute name="valueURI" type="xs:anyURI"/>
694
+ <xs:attribute name="authority">
695
+ <xs:simpleType>
696
+ <xs:restriction base="xs:string">
697
+ <xs:enumeration value="marcgac"/>
698
+ <xs:enumeration value="marccountry"/>
699
+ <xs:enumeration value="iso3166"/>
700
+ </xs:restriction>
701
+ </xs:simpleType>
702
+ </xs:attribute>
703
+ <xs:attribute name="type" type="codeOrText"/>
704
+ </xs:extension>
705
+ </xs:simpleContent>
706
+ </xs:complexType>
707
+ <!--
708
+ *** publisher ***
709
+ -->
710
+ <xs:element name="publisher" type="stringPlusLanguagePlusSupplied"/>
711
+ <!--
712
+ ********** dates **********
713
+ -->
714
+ <xs:element name="dateIssued" type="dateDefinition"/>
715
+ <xs:element name="dateCreated" type="dateDefinition"/>
716
+ <xs:element name="dateCaptured" type="dateDefinition"/>
717
+ <xs:element name="dateValid" type="dateDefinition"/>
718
+ <xs:element name="dateModified" type="dateDefinition"/>
719
+ <xs:element name="copyrightDate" type="dateDefinition"/>
720
+ <xs:element name="dateOther" type="dateOtherDefinition"/>
721
+ <!-- -->
722
+ <xs:complexType name="dateDefinition">
723
+ <xs:simpleContent>
724
+ <xs:extension base="stringPlusLanguage">
725
+ <xs:attribute name="encoding">
726
+ <xs:simpleType>
727
+ <xs:restriction base="xs:string">
728
+ <xs:enumeration value="w3cdtf"/>
729
+ <xs:enumeration value="iso8601"/>
730
+ <xs:enumeration value="marc"/>
731
+ <xs:enumeration value="temper"/>
732
+ <xs:enumeration value="edtf"/>
733
+ </xs:restriction>
734
+ </xs:simpleType>
735
+ </xs:attribute>
736
+ <xs:attribute name="qualifier">
737
+ <xs:simpleType>
738
+ <xs:restriction base="xs:string">
739
+ <xs:enumeration value="approximate"/>
740
+ <xs:enumeration value="inferred"/>
741
+ <xs:enumeration value="questionable"/>
742
+ </xs:restriction>
743
+ </xs:simpleType>
744
+ </xs:attribute>
745
+ <xs:attribute name="point">
746
+ <xs:simpleType>
747
+ <xs:restriction base="xs:string">
748
+ <xs:enumeration value="start"/>
749
+ <xs:enumeration value="end"/>
750
+ </xs:restriction>
751
+ </xs:simpleType>
752
+ </xs:attribute>
753
+ <xs:attribute name="keyDate" fixed="yes"/>
754
+ </xs:extension>
755
+ </xs:simpleContent>
756
+ </xs:complexType>
757
+ <!--
758
+ ********** dateOther **********
759
+ -->
760
+ <xs:complexType name="dateOtherDefinition">
761
+ <xs:simpleContent>
762
+ <xs:extension base="dateDefinition">
763
+ <xs:attribute name="type" type="xs:string"/>
764
+ </xs:extension>
765
+ </xs:simpleContent>
766
+ </xs:complexType>
767
+ <!--
768
+ ********** edition **********
769
+ -->
770
+ <xs:element name="edition" type="stringPlusLanguagePlusSupplied"/>
771
+ <!--
772
+ ********** issuance **********
773
+ -->
774
+ <xs:element name="issuance" type="issuanceDefinition"/>
775
+ <!-- -->
776
+ <xs:simpleType name="issuanceDefinition">
777
+ <xs:restriction base="xs:string">
778
+ <xs:enumeration value="continuing"/>
779
+ <xs:enumeration value="monographic"/>
780
+ <xs:enumeration value="single unit"/>
781
+ <xs:enumeration value="multipart monograph"/>
782
+ <xs:enumeration value="serial"/>
783
+ <xs:enumeration value="integrating resource"/>
784
+ </xs:restriction>
785
+ </xs:simpleType>
786
+ <!--
787
+ ********** frequency**********
788
+ -->
789
+ <xs:element name="frequency" type="stringPlusLanguagePlusAuthority"/>
790
+ <!--
791
+
792
+
793
+ ****************************************************
794
+ * Top Level Element <part> *
795
+ *****************************************************
796
+ -->
797
+ <xs:element name="part" type="partDefinition"/>
798
+ <!-- -->
799
+ <xs:complexType name="partDefinition">
800
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
801
+ <xs:element ref="detail"/>
802
+ <xs:element name="extent" type="extentDefinition"/>
803
+ <xs:element ref="date"/>
804
+ <xs:element ref="text"/>
805
+ </xs:choice>
806
+ <xs:attribute name="ID" type="xs:ID"/>
807
+ <xs:attribute name="type" type="xs:string"/>
808
+ <xs:attribute name="order" type="xs:integer"/>
809
+ <xs:attributeGroup ref="languageAttributeGroup"/>
810
+ <xs:attribute name="displayLabel" type="xs:string"/>
811
+ <xs:attribute name="altRepGroup" type="xs:string"/>
812
+ </xs:complexType>
813
+ <!--
814
+
815
+ ******** Subordinate Elements for <part>
816
+ -->
817
+ <!--
818
+ ********** detail **********
819
+ -->
820
+ <xs:element name="detail" type="detailDefinition"/>
821
+ <!-- -->
822
+ <xs:complexType name="detailDefinition">
823
+ <xs:choice maxOccurs="unbounded">
824
+ <xs:element ref="number"/>
825
+ <xs:element ref="caption"/>
826
+ <xs:element ref="title"/>
827
+ </xs:choice>
828
+ <xs:attribute name="type" type="xs:string"/>
829
+ <xs:attribute name="level" type="xs:positiveInteger"/>
830
+ </xs:complexType>
831
+ <!-- -->
832
+ <xs:element name="number" type="stringPlusLanguage"/>
833
+ <xs:element name="caption" type="stringPlusLanguage"/>
834
+ <!--
835
+ ********** extent **********
836
+ -->
837
+ <xs:complexType name="extentDefinition">
838
+ <xs:sequence>
839
+ <xs:element ref="start" minOccurs="0"/>
840
+ <xs:element ref="end" minOccurs="0"/>
841
+ <xs:element ref="total" minOccurs="0"/>
842
+ <xs:element ref="list" minOccurs="0"/>
843
+ </xs:sequence>
844
+ <xs:attribute name="unit" type="xs:string"/>
845
+ </xs:complexType>
846
+ <!-- -->
847
+ <xs:element name="start" type="stringPlusLanguage"/>
848
+ <xs:element name="end" type="stringPlusLanguage"/>
849
+ <xs:element name="total" type="xs:positiveInteger"/>
850
+ <xs:element name="list" type="stringPlusLanguage"/>
851
+ <!--
852
+ ***************** date ***
853
+ -->
854
+ <xs:element name="date" type="dateDefinition"/>
855
+ <!--
856
+ ***************** text ***
857
+ -->
858
+ <xs:element name="text">
859
+ <xs:complexType>
860
+ <xs:simpleContent>
861
+ <xs:extension base="stringPlusLanguage">
862
+ <xs:attribute name="displayLabel" type="xs:string"/>
863
+ <xs:attribute name="type" type="xs:string"/>
864
+ <xs:attributeGroup ref="xlink:simpleLink"/>
865
+ </xs:extension>
866
+ </xs:simpleContent>
867
+ </xs:complexType>
868
+ </xs:element>
869
+ <!--
870
+
871
+
872
+ ****************************************************
873
+ * Top Level Element <physicalDescription> *
874
+ *****************************************************
875
+
876
+ -->
877
+ <xs:element name="physicalDescription" type="physicalDescriptionDefinition"/>
878
+ <!-- -->
879
+ <xs:complexType name="physicalDescriptionDefinition">
880
+ <xs:choice maxOccurs="unbounded">
881
+ <xs:element ref="form"/>
882
+ <!-- same definition as is used in copyInformation -->
883
+ <xs:element ref="reformattingQuality"/>
884
+ <xs:element ref="internetMediaType"/>
885
+ <xs:element ref="extent"/>
886
+ <xs:element ref="digitalOrigin"/>
887
+ <xs:element name="note" type="physicalDescriptionNote"/>
888
+ </xs:choice>
889
+ <xs:attributeGroup ref="languageAttributeGroup"/>
890
+ <xs:attribute name="displayLabel" type="xs:string"/>
891
+ <xs:attribute name="altRepGroup" type="xs:string"/>
892
+ </xs:complexType>
893
+ <!--
894
+
895
+
896
+ ******** Subordinate Elements for <physicalDescription>
897
+
898
+ -->
899
+ <!--
900
+ **********reformattingQuality **********
901
+ -->
902
+ <xs:element name="reformattingQuality" type="reformattingQualityDefinition"/>
903
+ <!-- -->
904
+ <xs:simpleType name="reformattingQualityDefinition">
905
+ <xs:restriction base="xs:string">
906
+ <xs:enumeration value="access"/>
907
+ <xs:enumeration value="preservation"/>
908
+ <xs:enumeration value="replacement"/>
909
+ </xs:restriction>
910
+ </xs:simpleType>
911
+ <!--
912
+ **********internetMediaType **********
913
+ -->
914
+ <xs:element name="internetMediaType" type="stringPlusLanguage"/>
915
+ <!--
916
+ ********** extent **********
917
+ -->
918
+ <xs:element name="extent">
919
+ <xs:complexType>
920
+ <xs:simpleContent>
921
+ <xs:extension base="stringPlusLanguagePlusSupplied">
922
+ <xs:attribute name="unit"/>
923
+ </xs:extension>
924
+ <!--
925
+ ******************* unit is new in 3.5
926
+ -->
927
+ </xs:simpleContent>
928
+ </xs:complexType>
929
+ </xs:element>
930
+ <!--
931
+ ********** digitalOrigin **********
932
+ -->
933
+ <xs:element name="digitalOrigin" type="digitalOriginDefinition"/>
934
+ <!-- -->
935
+ <xs:simpleType name="digitalOriginDefinition">
936
+ <xs:restriction base="xs:string">
937
+ <xs:enumeration value="born digital"/>
938
+ <xs:enumeration value="reformatted digital"/>
939
+ <xs:enumeration value="digitized microfilm"/>
940
+ <xs:enumeration value="digitized other analog"/>
941
+ </xs:restriction>
942
+ </xs:simpleType>
943
+ <!--
944
+ ********** note **********
945
+ -->
946
+ <xs:complexType name="physicalDescriptionNote">
947
+ <xs:simpleContent>
948
+ <xs:extension base="stringPlusLanguage">
949
+ <xs:attribute name="displayLabel" type="xs:string"/>
950
+ <xs:attribute name="type" type="xs:string"/>
951
+ <xs:attribute name="typeURI" type="xs:anyURI"/>
952
+ <xs:attributeGroup ref="xlink:simpleLink"/>
953
+ <xs:attribute name="ID" type="xs:ID"/>
954
+ </xs:extension>
955
+ <!-- -->
956
+ <!-- typeURI attribute added in version 3.5 -->
957
+ </xs:simpleContent>
958
+ </xs:complexType>
959
+ <!--
960
+
961
+ ****************************************************
962
+ * Top Level Element <recordInfo> *
963
+ *****************************************************
964
+
965
+ ********** recordInfo **********
966
+ -->
967
+ <xs:element name="recordInfo" type="recordInfoDefinition"/>
968
+ <!-- -->
969
+ <xs:complexType name="recordInfoDefinition">
970
+ <xs:choice maxOccurs="unbounded">
971
+ <xs:element ref="recordContentSource"/>
972
+ <xs:element ref="recordCreationDate"/>
973
+ <xs:element ref="recordChangeDate"/>
974
+ <xs:element ref="recordIdentifier"/>
975
+ <xs:element ref="languageOfCataloging"/>
976
+ <xs:element ref="recordOrigin"/>
977
+ <xs:element ref="descriptionStandard"/>
978
+ </xs:choice>
979
+ <xs:attributeGroup ref="languageAttributeGroup"/>
980
+ <xs:attribute name="displayLabel" type="xs:string"/>
981
+ <xs:attribute name="altRepGroup" type="xs:string"/>
982
+ </xs:complexType>
983
+ <!--
984
+
985
+ ******** Subordinate Elements for <recordInfo>
986
+ -->
987
+ <xs:element name="recordContentSource" type="stringPlusLanguagePlusAuthority"/>
988
+ <xs:element name="recordCreationDate" type="dateDefinition"/>
989
+ <xs:element name="recordChangeDate" type="dateDefinition"/>
990
+ <!--
991
+ ********** recordIdentifier
992
+ -->
993
+ <xs:element name="recordIdentifier" type="recordIdentifierDefinition"/>
994
+ <!-- -->
995
+ <xs:complexType name="recordIdentifierDefinition">
996
+ <xs:simpleContent>
997
+ <xs:extension base="stringPlusLanguage">
998
+ <xs:attribute name="source" type="xs:string"/>
999
+ </xs:extension>
1000
+ </xs:simpleContent>
1001
+ </xs:complexType>
1002
+ <!-- -->
1003
+ <xs:element name="languageOfCataloging" type="languageDefinition"/>
1004
+ <xs:element name="recordOrigin" type="stringPlusLanguage"/>
1005
+ <xs:element name="descriptionStandard" type="stringPlusLanguagePlusAuthority"/>
1006
+ <!--
1007
+
1008
+
1009
+ ****************************************************
1010
+ * Top Level Element <relatedItem> *
1011
+ *****************************************************
1012
+
1013
+ ********** relatedItem **********
1014
+ -->
1015
+ <xs:element name="relatedItem" type="relatedItemDefinition"/>
1016
+ <!-- -->
1017
+ <xs:complexType name="relatedItemDefinition">
1018
+ <xs:group ref="modsGroup" minOccurs="0" maxOccurs="unbounded"/>
1019
+ <xs:attribute name="type">
1020
+ <xs:simpleType>
1021
+ <xs:restriction base="xs:string">
1022
+ <xs:enumeration value="preceding"/>
1023
+ <xs:enumeration value="succeeding"/>
1024
+ <xs:enumeration value="original"/>
1025
+ <xs:enumeration value="host"/>
1026
+ <xs:enumeration value="constituent"/>
1027
+ <xs:enumeration value="series"/>
1028
+ <xs:enumeration value="otherVersion"/>
1029
+ <xs:enumeration value="otherFormat"/>
1030
+ <xs:enumeration value="isReferencedBy"/>
1031
+ <xs:enumeration value="references"/>
1032
+ <xs:enumeration value="reviewOf"/>
1033
+ </xs:restriction>
1034
+ </xs:simpleType>
1035
+ </xs:attribute>
1036
+ <xs:attribute name="displayLabel" type="xs:string"/>
1037
+ <xs:attribute name="ID" type="xs:ID"/>
1038
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1039
+ </xs:complexType>
1040
+ <!--
1041
+
1042
+
1043
+ ****************************************************
1044
+ * Top Level Element <subject> *
1045
+ *****************************************************
1046
+ -->
1047
+ <xs:element name="subject" type="subjectDefinition"/>
1048
+ <!-- -->
1049
+ <xs:complexType name="subjectDefinition">
1050
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1051
+ <xs:element ref="topic"/>
1052
+ <xs:element ref="geographic"/>
1053
+ <xs:element ref="temporal"/>
1054
+ <xs:element name="titleInfo" type="subjectTitleInfoDefinition"/>
1055
+ <xs:element name="name" type="subjectNameDefinition"/>
1056
+ <xs:element ref="geographicCode"/>
1057
+ <xs:element ref="hierarchicalGeographic"/>
1058
+ <xs:element ref="cartographics"/>
1059
+ <xs:element ref="occupation"/>
1060
+ <xs:element ref="genre"/>
1061
+ <!-- uses top-level genre definition -->
1062
+ </xs:choice>
1063
+ <xs:attribute name="ID" type="xs:ID"/>
1064
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1065
+ <xs:attributeGroup ref="languageAttributeGroup"/>
1066
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1067
+ <xs:attribute name="displayLabel" type="xs:string"/>
1068
+ <xs:attribute name="altRepGroup" type="xs:string"/>
1069
+ <xs:attribute name="usage" fixed="primary"/>
1070
+ </xs:complexType>
1071
+ <!--
1072
+
1073
+ ******** Subordinate Elements for <subject>
1074
+ -->
1075
+ <!-- topic, geographic -->
1076
+ <xs:element name="topic" type="stringPlusLanguagePlusAuthority"/>
1077
+ <xs:element name="geographic" type="stringPlusLanguagePlusAuthority"/>
1078
+ <!--
1079
+
1080
+ *****************temporal ************************
1081
+
1082
+ -->
1083
+ <xs:element name="temporal" type="temporalDefinition"/>
1084
+ <!-- -->
1085
+ <xs:complexType name="temporalDefinition">
1086
+ <xs:simpleContent>
1087
+ <xs:extension base="dateDefinition">
1088
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1089
+ </xs:extension>
1090
+ </xs:simpleContent>
1091
+ </xs:complexType>
1092
+ <!--
1093
+
1094
+ *****************subjectTitleInfo ************************
1095
+ -->
1096
+ <xs:complexType name="subjectTitleInfoDefinition">
1097
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1098
+ <xs:element ref="title"/>
1099
+ <xs:element ref="subTitle"/>
1100
+ <xs:element ref="partNumber"/>
1101
+ <xs:element ref="partName"/>
1102
+ <xs:element ref="nonSort"/>
1103
+ </xs:choice>
1104
+ <xs:attribute name="ID" type="xs:ID"/>
1105
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1106
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1107
+ <xs:attributeGroup ref="languageAttributeGroup"/>
1108
+ <xs:attribute name="displayLabel" type="xs:string"/>
1109
+ <xs:attribute name="type">
1110
+ <xs:simpleType>
1111
+ <xs:restriction base="xs:string">
1112
+ <xs:enumeration value="abbreviated"/>
1113
+ <xs:enumeration value="translated"/>
1114
+ <xs:enumeration value="alternative"/>
1115
+ <xs:enumeration value="uniform"/>
1116
+ </xs:restriction>
1117
+ </xs:simpleType>
1118
+ </xs:attribute>
1119
+ </xs:complexType>
1120
+ <!--
1121
+
1122
+ *****************subjectName ************************
1123
+ -->
1124
+ <xs:complexType name="subjectNameDefinition">
1125
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1126
+ <xs:element ref="namePart"/>
1127
+ <xs:element ref="displayForm"/>
1128
+ <xs:element ref="affiliation"/>
1129
+ <xs:element ref="role"/>
1130
+ <xs:element ref="description"/>
1131
+ </xs:choice>
1132
+ <xs:attribute name="type">
1133
+ <xs:simpleType>
1134
+ <xs:restriction base="xs:string">
1135
+ <xs:enumeration value="personal"/>
1136
+ <xs:enumeration value="corporate"/>
1137
+ <xs:enumeration value="conference"/>
1138
+ <xs:enumeration value="family"/>
1139
+ </xs:restriction>
1140
+ </xs:simpleType>
1141
+ </xs:attribute>
1142
+ <xs:attribute name="ID" type="xs:ID"/>
1143
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1144
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1145
+ <xs:attributeGroup ref="languageAttributeGroup"/>
1146
+ <xs:attribute name="displayLabel" type="xs:string"/>
1147
+ </xs:complexType>
1148
+ <!--
1149
+ ********** geographicCode **********
1150
+ -->
1151
+ <xs:element name="geographicCode" type="geographicCodeDefinition"/>
1152
+ <!-- -->
1153
+ <xs:complexType name="geographicCodeDefinition">
1154
+ <xs:simpleContent>
1155
+ <xs:extension base="stringPlusLanguage">
1156
+ <xs:attribute name="authorityURI" type="xs:anyURI"/>
1157
+ <xs:attribute name="valueURI" type="xs:anyURI"/>
1158
+ <xs:attribute name="authority">
1159
+ <xs:simpleType>
1160
+ <xs:restriction base="xs:string">
1161
+ <xs:enumeration value="marcgac"/>
1162
+ <xs:enumeration value="marccountry"/>
1163
+ <xs:enumeration value="iso3166"/>
1164
+ </xs:restriction>
1165
+ </xs:simpleType>
1166
+ </xs:attribute>
1167
+ </xs:extension>
1168
+ </xs:simpleContent>
1169
+ </xs:complexType>
1170
+ <!--
1171
+ ********** hierarchicalGeographic **********
1172
+ -->
1173
+ <xs:element name="hierarchicalGeographic" type="hierarchicalGeographicDefinition"/>
1174
+ <!-- -->
1175
+ <xs:complexType name="hierarchicalGeographicDefinition">
1176
+ <xs:choice maxOccurs="unbounded">
1177
+ <xs:element ref="extraterrestrialArea"/>
1178
+ <xs:element ref="continent"/>
1179
+ <xs:element ref="country"/>
1180
+ <xs:element ref="province"/>
1181
+ <xs:element ref="region"/>
1182
+ <xs:element ref="state"/>
1183
+ <xs:element ref="territory"/>
1184
+ <xs:element ref="county"/>
1185
+ <xs:element ref="city"/>
1186
+ <xs:element ref="citySection"/>
1187
+ <xs:element ref="island"/>
1188
+ <xs:element ref="area"/>
1189
+ </xs:choice>
1190
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1191
+ </xs:complexType>
1192
+ <!-- -->
1193
+ <xs:element name="area" type="stringPlusLanguage"/>
1194
+ <xs:element name="city" type="stringPlusLanguage"/>
1195
+ <xs:element name="citySection" type="stringPlusLanguage"/>
1196
+ <xs:element name="continent" type="stringPlusLanguage"/>
1197
+ <xs:element name="country" type="stringPlusLanguage"/>
1198
+ <xs:element name="county" type="stringPlusLanguage"/>
1199
+ <xs:element name="extraterrestrialArea" type="stringPlusLanguage"/>
1200
+ <xs:element name="island" type="stringPlusLanguage"/>
1201
+ <xs:element name="province" type="stringPlusLanguage"/>
1202
+ <xs:element name="state" type="stringPlusLanguage"/>
1203
+ <xs:element name="region" type="stringPlusLanguage"/>
1204
+ <xs:element name="territory" type="stringPlusLanguage"/>
1205
+ <!--
1206
+ ********** cartographics **********
1207
+ -->
1208
+ <xs:element name="cartographics" type="cartographicsDefinition"/>
1209
+ <!-- -->
1210
+ <xs:complexType name="cartographicsDefinition">
1211
+ <xs:sequence>
1212
+ <xs:element ref="scale" minOccurs="0"/>
1213
+ <xs:element ref="projection" minOccurs="0"/>
1214
+ <xs:element ref="coordinates" minOccurs="0" maxOccurs="unbounded"/>
1215
+ </xs:sequence>
1216
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1217
+ </xs:complexType>
1218
+ <!-- -->
1219
+ <xs:element name="scale" type="stringPlusLanguage"/>
1220
+ <xs:element name="projection" type="stringPlusLanguage"/>
1221
+ <xs:element name="coordinates" type="stringPlusLanguage"/>
1222
+ <!--
1223
+ ********** occupation **********
1224
+ -->
1225
+ <xs:element name="occupation" type="stringPlusLanguagePlusAuthority"/>
1226
+ <!--
1227
+
1228
+ ****************************************************
1229
+ * Top Level Element <tableOfContents> *
1230
+ *****************************************************
1231
+
1232
+ -->
1233
+ <xs:element name="tableOfContents" type="tableOfContentsDefinition"/>
1234
+ <!-- -->
1235
+ <xs:complexType name="tableOfContentsDefinition">
1236
+ <xs:simpleContent>
1237
+ <xs:extension base="stringPlusLanguage">
1238
+ <xs:attribute name="displayLabel" type="xs:string"/>
1239
+ <xs:attribute name="type" type="xs:string"/>
1240
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1241
+ <xs:attribute name="shareable" fixed="no"/>
1242
+ <xs:attribute name="altRepGroup" type="xs:string"/>
1243
+ <xs:attributeGroup ref="altFormatAttributeGroup"/>
1244
+ </xs:extension>
1245
+ <!-- -->
1246
+ <!-- altFormat new in version 3.5 -->
1247
+ </xs:simpleContent>
1248
+ </xs:complexType>
1249
+ <!--
1250
+
1251
+
1252
+ ****************************************************
1253
+ * Top Level Element <targetAudience> *
1254
+ *****************************************************
1255
+
1256
+ -->
1257
+ <xs:element name="targetAudience" type="targetAudienceDefinition"/>
1258
+ <!-- -->
1259
+ <xs:complexType name="targetAudienceDefinition">
1260
+ <xs:simpleContent>
1261
+ <xs:extension base="stringPlusLanguagePlusAuthority">
1262
+ <xs:attribute name="displayLabel" type="xs:string"/>
1263
+ <xs:attribute name="altRepGroup" type="xs:string"/>
1264
+ </xs:extension>
1265
+ </xs:simpleContent>
1266
+ </xs:complexType>
1267
+ <!--
1268
+
1269
+ ****************************************************
1270
+ * Top Level Element <titleInfo> *
1271
+ *****************************************************
1272
+
1273
+ -->
1274
+ <xs:element name="titleInfo" type="titleInfoDefinition"/>
1275
+ <!-- -->
1276
+ <xs:complexType name="titleInfoDefinition">
1277
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1278
+ <xs:element ref="title"/>
1279
+ <xs:element ref="subTitle"/>
1280
+ <xs:element ref="partNumber"/>
1281
+ <xs:element ref="partName"/>
1282
+ <xs:element ref="nonSort"/>
1283
+ </xs:choice>
1284
+ <xs:attribute name="type">
1285
+ <xs:simpleType>
1286
+ <xs:restriction base="xs:string">
1287
+ <xs:enumeration value="abbreviated"/>
1288
+ <xs:enumeration value="translated"/>
1289
+ <xs:enumeration value="alternative"/>
1290
+ <xs:enumeration value="uniform"/>
1291
+ </xs:restriction>
1292
+ </xs:simpleType>
1293
+ </xs:attribute>
1294
+ <xs:attribute name="otherType"/>
1295
+ <xs:attribute name="supplied" fixed="yes"/>
1296
+ <xs:attribute name="altRepGroup" type="xs:string"/>
1297
+ <xs:attributeGroup ref="altFormatAttributeGroup"/>
1298
+ <xs:attribute name="nameTitleGroup" type="xs:string"/>
1299
+ <xs:attribute name="usage" fixed="primary"/>
1300
+ <xs:attribute name="ID" type="xs:ID"/>
1301
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1302
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1303
+ <xs:attributeGroup ref="languageAttributeGroup"/>
1304
+ <xs:attribute name="displayLabel" type="xs:string"/>
1305
+ <!-- -->
1306
+ <!-- otherType new in version 3.5 -->
1307
+ <!-- -->
1308
+ <!-- altFormat new in version 3.5 -->
1309
+ </xs:complexType>
1310
+ <!--
1311
+
1312
+ ******** Subordinate Elements for <titleInfo>
1313
+ -->
1314
+ <xs:element name="title" type="stringPlusLanguage"/>
1315
+ <xs:element name="subTitle" type="stringPlusLanguage"/>
1316
+ <xs:element name="partNumber" type="stringPlusLanguage"/>
1317
+ <xs:element name="partName" type="stringPlusLanguage"/>
1318
+ <xs:element name="nonSort" type="stringPlusLanguage"/>
1319
+ <!--
1320
+
1321
+ ****************************************************
1322
+ * Top Level Element <typeOfResource> *
1323
+ *****************************************************
1324
+
1325
+ -->
1326
+ <xs:element name="typeOfResource" type="typeOfResourceDefinition"/>
1327
+ <!-- -->
1328
+ <xs:complexType name="typeOfResourceDefinition">
1329
+ <xs:simpleContent>
1330
+ <xs:extension base="resourceTypeDefinition">
1331
+ <xs:attribute name="collection" fixed="yes"/>
1332
+ <xs:attribute name="manuscript" fixed="yes"/>
1333
+ <xs:attribute name="displayLabel" type="xs:string"/>
1334
+ <xs:attribute name="altRepGroup" type="xs:string"/>
1335
+ <xs:attribute name="usage" fixed="primary"/>
1336
+ </xs:extension>
1337
+ </xs:simpleContent>
1338
+ </xs:complexType>
1339
+ <!--
1340
+
1341
+
1342
+ ******** Subordinate Definitions for <typeOfResource>
1343
+
1344
+ -->
1345
+ <!--
1346
+ ******* resourceTypeDefinition ********
1347
+ -->
1348
+ <xs:simpleType name="resourceTypeDefinition">
1349
+ <xs:restriction base="xs:string">
1350
+ <xs:enumeration value="text"/>
1351
+ <xs:enumeration value="cartographic"/>
1352
+ <xs:enumeration value="notated music"/>
1353
+ <xs:enumeration value="sound recording-musical"/>
1354
+ <xs:enumeration value="sound recording-nonmusical"/>
1355
+ <xs:enumeration value="sound recording"/>
1356
+ <xs:enumeration value="still image"/>
1357
+ <xs:enumeration value="moving image"/>
1358
+ <xs:enumeration value="three dimensional object"/>
1359
+ <xs:enumeration value="software, multimedia"/>
1360
+ <xs:enumeration value="mixed material"/>
1361
+ <xs:enumeration value=""/>
1362
+ </xs:restriction>
1363
+ </xs:simpleType>
1364
+ <!--
1365
+
1366
+ *********************************
1367
+ *********************************
1368
+ Part 3: Auxiliary definitions
1369
+ *********************************
1370
+ *********************************
1371
+
1372
+ **********************************
1373
+ String Definitions
1374
+ **********************************
1375
+ -->
1376
+ <!--
1377
+ ********** stringPlusLanguage
1378
+ -->
1379
+ <xs:complexType name="stringPlusLanguage">
1380
+ <xs:simpleContent>
1381
+ <xs:extension base="xs:string">
1382
+ <xs:attributeGroup ref="languageAttributeGroup"/>
1383
+ </xs:extension>
1384
+ </xs:simpleContent>
1385
+ </xs:complexType>
1386
+ <!--
1387
+
1388
+ ************************* stringPlusLanguagePlusAuthority *************************
1389
+
1390
+ -->
1391
+ <xs:complexType name="stringPlusLanguagePlusAuthority">
1392
+ <xs:simpleContent>
1393
+ <xs:extension base="stringPlusLanguage">
1394
+ <xs:attributeGroup ref="authorityAttributeGroup"/>
1395
+ </xs:extension>
1396
+ </xs:simpleContent>
1397
+ </xs:complexType>
1398
+ <!--
1399
+
1400
+ ************************* stringPlusLanguagePlusSupplied *************************
1401
+
1402
+ -->
1403
+ <xs:complexType name="stringPlusLanguagePlusSupplied">
1404
+ <xs:simpleContent>
1405
+ <xs:extension base="stringPlusLanguage">
1406
+ <xs:attribute name="supplied" fixed="yes"/>
1407
+ </xs:extension>
1408
+ </xs:simpleContent>
1409
+ </xs:complexType>
1410
+ <!--
1411
+
1412
+ **********************************
1413
+ Attribute Group Definitions
1414
+ **********************************
1415
+ -->
1416
+ <!--
1417
+ ********** authorityAttributeGroup **********
1418
+ -->
1419
+ <xs:attributeGroup name="authorityAttributeGroup">
1420
+ <!-- new in 3.4 -->
1421
+ <xs:attribute name="authority" type="xs:string"/>
1422
+ <xs:attribute name="authorityURI" type="xs:anyURI"/>
1423
+ <xs:attribute name="valueURI" type="xs:anyURI"/>
1424
+ </xs:attributeGroup>
1425
+ <!--
1426
+ ********** languageAttributeGroup **********
1427
+ -->
1428
+ <xs:attributeGroup name="languageAttributeGroup">
1429
+ <xs:attribute name="lang" type="xs:string"/>
1430
+ <xs:attribute ref="xml:lang"/>
1431
+ <xs:attribute name="script" type="xs:string"/>
1432
+ <xs:attribute name="transliteration" type="xs:string"/>
1433
+ </xs:attributeGroup>
1434
+ <!--
1435
+
1436
+ ********** altFormatAttributeGroup **********
1437
+ altFormat new in version 3.5
1438
+ -->
1439
+ <xs:attributeGroup name="altFormatAttributeGroup">
1440
+ <xs:attribute name="altFormat" type="xs:anyURI"/>
1441
+ <xs:attribute name="contentType" type="xs:string"/>
1442
+ </xs:attributeGroup>
1443
+ <!--
1444
+
1445
+ ****************************************************
1446
+ - Attribute definitions (simpleTypes)
1447
+ *****************************************************
1448
+ -->
1449
+ <!--
1450
+
1451
+ ********** codeOrText
1452
+ ******** used by type attribute for elements that distinguish code from text:
1453
+ ******** <languageTerm>, <placeTerm>, <roleTerm>, <scriptTerm>
1454
+
1455
+ -->
1456
+ <xs:simpleType name="codeOrText">
1457
+ <xs:restriction base="xs:string">
1458
+ <xs:enumeration value="code"/>
1459
+ <xs:enumeration value="text"/>
1460
+ </xs:restriction>
1461
+ </xs:simpleType>
1462
+ <!-- -->
1463
+ </xs:schema>