UNPKG

38.4 kBJavaScriptView Raw
1/**
2* Sutton SignWriting JavaScript Library v2.1.1
3* https://github.com/Slevinski/SuttonSignWriting
4* Copyright (c) 2007-2017, Stephen E Slevinski Jr
5* SuttonSignWriting.min.js is released under the MIT License.
6*/
7var ssw={re:{fsw:{sign:"(A(S[123][0-9a-f]{2}[0-5][0-9a-f])+)?[BLMR]([0-9]{3}x[0-9]{3})(S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3})*",spatial:"S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3}",symbol:"S[123][0-9a-f]{2}[0-5][0-9a-f]",coord:"[0-9]{3}x[0-9]{3}",sort:"A",box:"[BLMR]",query:"Q((A(S[123][0-9a-f]{2}[0-5u][0-9a-fu]|R[123][0-9a-f]{2}t[123][0-9a-f]{2})+)?T)?((R[123][0-9a-f]{2}t[123][0-9a-f]{2}([0-9]{3}x[0-9]{3})?)|(S[123][0-9a-f]{2}[0-5u][0-9a-fu]([0-9]{3}x[0-9]{3})?))*(V[0-9]+)?-?"},swu:{sign:"(\uD836\uDC00(((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FB][\uDC00-\uDFFF])|(\uD8FC[\uDC00-\uDEA0])))+)?\uD836[\uDC01-\uDC04](\uD836[\uDC0C-\uDDFF]){2}(((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FA][\uDC00-\uDFFF])|(\uD8FB[\uDC00-\uDFA0]))(\uD836[\uDC0C-\uDDFF]){2})*",spatial:"((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))(\uD836[\uDC0C-\uDDFF]){2}",symbol:"((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))",coord:"(\uD836[\uDC0C-\uDDFF]){2}",sort:"\uD836\uDC00",box:"\uD836[\uDC01-\uDC04]",query:"Q((A(((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?|R((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?)+)?T)?((R((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?(\uD836[\uDC0C-\uDDFF]\uD836[\uDC0C-\uDDFF])?)|(((\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))f?r?(\uD836[\uDC0C-\uDDFF]\uD836[\uDC0C-\uDDFF])?))*(V[0-9]+)?-?"},style:"-C?(P[0-9]{2})?(G_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)_)?(D_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+))?_)?(Z([0-9]+(.[0-9]+)?|x))?(-(D[0-9]{2}_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)(,([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+))?_)*(Z[0-9]{2},[0-9]+(.[0-9]+)?(,[0-9]{3}x[0-9]{3})?)*)?(--?[_a-zA-Z][_a-zA-Z0-9-]{0,100}( -?[_a-zA-Z][_a-zA-Z0-9-]{0,100})*!([a-zA-Z][_a-zA-Z0-9-]{0,100}!)?)?"},encode:function(s){return s=s.replace(/[\u007F-\uFFFF]/g,function(s){return"\\u"+("0000"+s.charCodeAt(0).toString(16)).substr(-4).toUpperCase()})},decode:function(s){return s=s.replace(/\\u([0-9A-F]{4})/g,function(s,e){return String.fromCharCode(parseInt(e,16))})},pair:function(s){var e;"swu"==ssw.chars(s)&&(s=ssw.swu2hex(s));if(!s.match(new RegExp("[0-9A-F]{5}")))return!1;e=parseInt(s,16);var u=String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023));return!(!s||2!=u.length)&&[u.charCodeAt(0).toString(16).toUpperCase(),u.charCodeAt(1).toString(16).toUpperCase()]},chars:function(s){if(!s)return"";if(e="^[A-F0-9]{5}",s.match(new RegExp(e)))return"hex";e="^[ABLMRSxa-f0-9]{5,}";if(s.match(new RegExp(e)))return"fsw";if(e="^[0-9]{3}",s.match(new RegExp(e)))return"num";var e="^((\uD836[\uDC00-\uDDFF])|(\uD8C0[\uDC01-\uDFFF])|([\uD8C1-\uD8FC][\uDC00-\uDFFF])|(\uD8FD[\uDC00-\uDC80]))+";return s.match(new RegExp(e))?"swu":""},parse:function(s,e,u){var r,a,t,n,i=e||u?"":"^";switch(e||ssw.chars(s)){case"hex":r=i+"[A-F0-9]{5}";var w=s.match(new RegExp(r,u?"g":""));if(w)return n={chars:"hex",hex:w[0]},u?n.all=w:n.line=s,n;break;case"num":r=i+"[0-9]{3}";var f=s.match(new RegExp(r,u?"g":""));if(f)return n={chars:"num",num:f[0]},u?n.all=f:n.line=s,n;break;case"fsw":if(r=u?i+"("+ssw.re.fsw.sign+"("+ssw.re.style+")?|"+ssw.re.fsw.spatial+"("+ssw.re.style+")?)":i+ssw.re.fsw.sign+"("+ssw.re.style+")?",a=s.match(new RegExp(r,u?"g":"")))return n={chars:"fsw",type:"sign"},u?n.all=a:n.line=s,t=a[0].indexOf("-"),t>-1?(n.fsw=a[0].slice(0,t),n.style=a[0].slice(t)):n.fsw=a[0],n;if(r=i+ssw.re.fsw.spatial+"("+ssw.re.style+")?",a=s.match(new RegExp(r,u?"g":"")))return n={chars:"fsw",type:"spatial"},u?n.all=a:n.line=s,t=a[0].indexOf("-"),t>-1?(n.fsw=a[0].slice(0,t),n.style=a[0].slice(t)):n.fsw=a[0],n;if(r=i+ssw.re.fsw.symbol+"("+ssw.re.style+")?",a=s.match(new RegExp(r,u?"g":"")))return n={chars:"fsw",type:"symbol"},u?n.all=a:n.line=s,t=a[0].indexOf("-"),t>-1?(n.fsw=a[0].slice(0,t),n.style=a[0].slice(t)):n.fsw=a[0],n;if(r=i+ssw.re.fsw.coord,a=s.match(new RegExp(r,u?"g":"")))return n={chars:"fsw",type:"coord",fsw:a[0]},u?n.all=a:n.line=s,n;break;case"swu":if(r=u?i+"("+ssw.re.swu.sign+"("+ssw.re.style+")?|"+ssw.re.swu.spatial+"("+ssw.re.style+")?)":i+ssw.re.swu.sign+"("+ssw.re.style+")?",a=s.match(new RegExp(r,u?"g":"")))return n={chars:"swu",type:"sign"},u?n.all=a:n.line=s,t=a[0].indexOf("-"),t>-1?(n.swu=a[0].slice(0,t),n.style=a[0].slice(t)):n.swu=a[0],n;if(r=i+ssw.re.swu.spatial+"("+ssw.re.style+")?",a=s.match(new RegExp(r,u?"g":"")))return n={chars:"swu",type:"spatial"},u?n.all=a:n.line=s,t=a[0].indexOf("-"),t>-1?(n.swu=a[0].slice(0,t),n.style=a[0].slice(t)):n.swu=a[0],n;if(r=i+ssw.re.swu.symbol+"("+ssw.re.style+")?",a=s.match(new RegExp(r,u?"g":"")))return n={chars:"swu",type:"symbol"},u?n.all=a:n.line=s,t=a[0].indexOf("-"),t>-1?(n.swu=a[0].slice(0,t),n.style=a[0].slice(t)):n.swu=a[0],n;if(r=i+ssw.re.swu.coord,a=s.match(new RegExp(r,u?"g":"")))return n={chars:"swu",type:"coord",swu:a[0]},u?n.all=a:n.line=s,n}return!1},fsw2swu:function(s){if(!s)return"";var e,u,r,a=parseInt("1D800",16),t=s.replace(/B/g,"B!"),n=(t=(t=(t=(t=(t=t.replace(/A/g,String.fromCharCode(55296+(a-65536>>10),56320+(a-65536&1023)))).replace(/B!/g,String.fromCharCode(55296+(a+1-65536>>10),56320+(a+1-65536&1023)))).replace(/L/g,String.fromCharCode(55296+(a+2-65536>>10),56320+(a+2-65536&1023)))).replace(/M/g,String.fromCharCode(55296+(a+3-65536>>10),56320+(a+3-65536&1023)))).replace(/R/g,String.fromCharCode(55296+(a+4-65536>>10),56320+(a+4-65536&1023)))).match(new RegExp(ssw.re.fsw.coord,"g"));w=n?n.length:0;var i;for(i=0;i<w;i+=1)u=(u=(e=n[i]).split("x")).map(function(s){return s=120844+parseInt(s)-250,String.fromCharCode(55296+(s-65536>>10),56320+(s-65536&1023))}),t=t.replace(e,u.join(""));var w=(n=t.match(new RegExp("S[123][0-9a-f]{2}[0-5][0-9a-f]","g")))?n.length:0;for(i=0;i<w;i+=1)r=n[i],t=t.replace(r,ssw.uni(r,"4"));return t},swu2fsw:function(s){if(!s)return"";var e=s.replace(/𝠀/g,"A").replace(/𝠁/g,"B").replace(/𝠂/g,"L").replace(/𝠃/g,"M").replace(/𝠄/g,"R"),u=e.match(new RegExp(ssw.re.swu.symbol,"g"));u&&u.forEach(function(s){var u=ssw.swu2hex(s),r=parseInt(u.slice(1),16)-1,a=parseInt(r/96),t="S"+(a+256).toString(16),n=parseInt((r-96*a)/16);t+=n.toString(16),t+=parseInt(r-96*a-16*n).toString(16),e=e.replace(s,t)});var r=e.match(new RegExp(ssw.re.swu.coord,"g"));return r&&r.forEach(function(s){var u=parseInt(ssw.swu2hex(s.slice(0,2)),16)-120844+250,r=parseInt(ssw.swu2hex(s.slice(2,4)),16)-120844+250;if(!(u>=250&&u<749&&r>=250&&r<749))throw"invalid numbers: "+u+", "+r;e=e.replace(s,u+"x"+r)}),e},swu2hex:function(s){if(s.codePointAt(0)){var e=s.codePointAt(0).toString(16).toUpperCase();return!(e.length<=4)&&e}return!1},symbol:function(s,e){var u;switch(ssw.parse(s).chars){case"swu":u=ssw.re.swu.symbol+"("+ssw.re.swu.coord+")?";break;case"fsw":u=ssw.re.fsw.symbol+"("+ssw.re.fsw.coord+")?";break;default:return""}e&&(u+="("+ssw.re.style+")?");var r=s.match(new RegExp(u));return r?r[0]:""},sign:function(s,e){var u;switch(ssw.parse(s).chars){case"swu":u=ssw.re.swu.sign;break;case"fsw":u=ssw.re.fsw.sign;break;default:return""}e&&(u+="("+ssw.re.style+")?");var r=s.match(new RegExp(u));return r?r[0]:ssw.symbol(s,e)},mirror:function(s){s=ssw.symbol(s);var e,u=ssw.parse(s);switch(u.chars){case"swu":e=s.slice(2),s=ssw.swu2fsw(s.slice(0,2));break;case"fsw":e=s.slice(6),s=ssw.swu2fsw(s.slice(0,6));break;default:return!1}if(!ssw.size(s))return"";var r,a=s.slice(0,4),t=s.slice(4,5),n=parseInt(s.slice(5,6),16),i=a+"08",w=a+"18";for(ssw.size(i)||ssw.size(w)?r=8:(0!==n&&4!=n||(r=0),1!=n&&5!=n||(r=6),2!=n&&6!=n||(r=4),3!=n&&7!=n||(r=2)),s="";!ssw.size(s);)(n+=r)>7&&r<8&&(n-=8),n>15&&(n-=16),s=a+t+n.toString(16);return"swu"==u.chars&&(s=ssw.fsw2swu(s)),s+e},fill:function(s,e){s=ssw.symbol(s);var u,r=ssw.parse(s);switch(r.chars){case"swu":u=s.slice(2),s=ssw.swu2fsw(s.slice(0,2));break;case"fsw":u=s.slice(6),s=ssw.swu2fsw(s.slice(0,6));break;default:return!1}if(!ssw.size(s))return"";-1!=e&&(e=1);var a=s.slice(0,4),t=parseInt(s.slice(4,5)),n=s.slice(5,6);for(s="";!ssw.size(s);)(t+=e)>5&&(t=0),t<0&&(t=5),s=a+t+n;return"swu"==r.chars&&(s=ssw.fsw2swu(s)),s+u},rotate:function(s,e){s=ssw.symbol(s);var u,r=ssw.parse(s);switch(r.chars){case"swu":u=s.slice(2),s=ssw.swu2fsw(s.slice(0,2));break;case"fsw":u=s.slice(6),s=ssw.swu2fsw(s.slice(0,6));break;default:return!1}if(!ssw.size(s))return"";-1!=e&&(e=1);var a=s.slice(0,4),t=s.slice(4,5),n=parseInt(s.slice(5,6),16);for(s="";!ssw.size(s);)n>7?((n+=e)>15&&(n=8),n<8&&(n=15),s=a+t+n.toString(16)):((n-=e)>7&&(n=0),n<0&&(n=7),s=a+t+n);return"swu"==r.chars&&(s=ssw.fsw2swu(s)),s+u},scroll:function(s,e){s=ssw.symbol(s);var u,r=ssw.parse(s);switch(r.chars){case"swu":u=s.slice(2),s=ssw.swu2fsw(s.slice(0,2));break;case"fsw":u=s.slice(6),s=ssw.swu2fsw(s.slice(0,6));break;default:return!1}if(!ssw.size(s))return"";-1!=e&&(e=1);var a=parseInt(s.slice(1,4),16)+e,t=s.slice(4,5),n=s.slice(5,6),i="S"+a.toString(16)+t+n;return ssw.size(i)?s=i:(i=ssw.view(i),ssw.size(i)&&(s=i)),"swu"==r.chars&&(s=ssw.fsw2swu(s)),s+u},structure:function(s,e,u){switch(e=ssw.symbol(e),ssw.parse(e).chars){case"swu":e=ssw.swu2fsw(e)}var r={kind:["S100","S37f","S387"],category:["S100","S205","S2f7","S2ff","S36d","S37f","S387"],group:["S100","S10e","S11e","S144","S14c","S186","S1a4","S1ba","S1cd","S1f5","S205","S216","S22a","S255","S265","S288","S2a6","S2b7","S2d5","S2e3","S2f7","S2ff","S30a","S32a","S33b","S359","S36d","S376","S37f","S387"]}[s];if(!r)return e?"is"!=u&&"":[];if(!e&&!u)return r;u||(u="");var a;switch(u){case"is":return-1!=r.indexOf(e.slice(0,4));case"first":return r[0];case"last":return r.slice(-1)[0];case"prev":a=-2;break;case"":a=-1;break;case"next":a=0;break;default:return""}var t,n=r.length;for(t=0;t<r.length;t+=1)if(parseInt(e.slice(1,4),16)<parseInt(r[t].slice(1,4),16)){n=t;break}return n+=a,n=n<0?0:n>=r.length?r.length-1:n,r[n]},type:function(s){var e,u;switch(s){case"writing":e="100",u="37e";break;case"hand":e="100",u="204";break;case"movement":e="205",u="2f6";break;case"dynamic":e="2f7",u="2fe";break;case"head":case"hcenter":e="2ff",u="36c";break;case"vcenter":e="2ff",u="375";break;case"trunk":e="36d",u="375";break;case"limb":e="376",u="37e";break;case"location":e="37f",u="386";break;case"punctuation":e="387",u="38b";break;default:e="100",u="38b"}return[e,u]},is:function(s,e){switch(s=ssw.symbol(s),ssw.parse(s).chars){case"swu":s=ssw.swu2fsw(s);case"fsw":break;default:return!1}var u=ssw.type(e),r=u[0],a=u[1],t=s.slice(1,4);return parseInt(r,16)<=parseInt(t,16)&&parseInt(a,16)>=parseInt(t,16)},filter:function(s,e){var u;switch(ssw.chars(s)){case"swu":u=ssw.parse(s,"swu","spatials"),s=ssw.swu2fsw((u.all||[]).join(""));break;case"fsw":s=((u=ssw.parse(s,"fsw","spatials")).all||[]).join("");break;default:return""}var r=ssw.type(e),a=r[0],t=r[1],n="S"+ssw.range(a,t,1)+"[0-5][0-9a-f][0-9]{3}x[0-9]{3}",i=s.match(new RegExp(n,"g"));return i?(s=i.join(""),"swu"==u.chars&&(s=ssw.fsw2swu(s)),s):""},random:function(s,e){var u=ssw.type(s),r=u[0],a=u[1],t=Math.floor(Math.random()*(parseInt(a,16)-parseInt(r,16)+1)+parseInt(r,16)),n=Math.floor(6*Math.random()),i=Math.floor(16*Math.random()),w="S"+t.toString(16)+n.toString(16)+i.toString(16);return ssw.size(w)?e?ssw.fsw2swu(w):w:ssw.random(s,e)},colorize:function(s){s=ssw.symbol(s),"swu"==ssw.chars(s)&&(s=ssw.swu2fsw(s));var e="000000";return ssw.is(s,"hand")&&(e="0000CC"),ssw.is(s,"movement")&&(e="CC0000"),ssw.is(s,"dynamic")&&(e="FF0099"),ssw.is(s,"head")&&(e="006600"),ssw.is(s,"location")&&(e="884411"),ssw.is(s,"punctuation")&&(e="FF9900"),e},view:function(s,e){s=ssw.symbol(s);var u=ssw.chars(s);if("swu"==u&&(s=ssw.swu2fsw(s)),!ssw.is(s))return"";var r=s.slice(0,4);return s=e?r+(ssw.size(r+"00")?"0":"1")+"0":r+(ssw.is(s,"hand")&&!ssw.structure("group",s,"is")?"1":"0")+"0","swu"==u?ssw.fsw2swu(s):s},uni:function(s,e,u){var r,a,t,n=ssw.parse(s);switch(n.chars){case"swu":r=ssw.re.swu.symbol;break;case"fsw":r=ssw.re.fsw.symbol;break;case"hex":r="[0-9A-F]{5}";break;default:return!1}var i,w=s.match(new RegExp(r,"g")),f=w?w.length:0;for(a=0;a<f;a+=1){switch(t=w[a],n.chars){case"swu":t=ssw.swu2fsw(t);case"fsw":i=parseInt(e+"0000",16)+96*(parseInt(t.slice(1,4),16)-256)+16*parseInt(t.slice(4,5),16)+parseInt(t.slice(5,6),16)+1;break;case"hex":i=parseInt(t,16)}t=t.replace(t.substr(0,6),u?i.toString(16).toUpperCase():String.fromCharCode(55296+(i-65536>>10),56320+(i-65536&1023))),s=s.replace(w[a],t)}return s},bbox:function(s){var e=ssw.chars(s);"swu"==e&&(s=ssw.swu2fsw(s));var u,r,a,t,n,i,w=/[0-9]{3}x[0-9]{3}/g,f=s.match(w);if(f){var c;for(c=0;c<f.length;c+=1)u=parseInt(f[c].slice(0,3)),r=parseInt(f[c].slice(4,7)),0===c?(a=u,t=u,n=r,i=r):(a=Math.min(a,u),t=Math.max(t,u),n=Math.min(n,r),i=Math.max(i,r));return a==t&&n==i&&(a>500?a=1e3-a:t=1e3-t,n>500?n=1e3-n:i=1e3-i),"swu"==e?ssw.fsw2swu(a+"x"+t+n+"x"+i):a+" "+t+" "+n+" "+i}return""},displace:function(s,e,u){var r=ssw.chars(s);"swu"==r&&(s=ssw.swu2fsw(s));var a,t,n=s.match(new RegExp("[0-9]{3}x[0-9]{3}","g"));if(n){var i;for(i=0;i<n.length;i+=1)a=parseInt(n[i].slice(0,3))+e,t=parseInt(n[i].slice(4,7))+u,s=s.replace(n[i],a+"X"+t);s=s.replace(/X/g,"x")}return"swu"==r?ssw.fsw2swu(s):s},sizes:{},size:function(s){var e=ssw.parse(s);switch(e.chars){case"swu":s=ssw.swu2fsw(s);break;case"fsw":break;default:return!1}if("sign"==e.type||"spatial"==e.type){var u=ssw.bbox(ssw.sign(s)),r=(u=u.split(" "))[0],a=u[1],t=u[2];return f=a-r+"x"+(u[3]-t),"0x0"==f?"":f}ssw.sign(s);var n,i,w,f,c=ssw.symbol(s);if(!c)return"";if(ssw.sizes[c])return ssw.sizes[c];var l,p;ssw.canvaser||(ssw.canvaser=document.createElement("canvas"),ssw.canvaser.width=152,ssw.canvaser.height=152);var o=ssw.canvaser.getContext("2d");o.clearRect(0,0,152,152),o.font="60px 'SuttonSignWritingLine'",o.fillText(ssw.uni(c,"F"),0,0),l=o.getImageData(0,0,152,152).data;s:for(n=151;n>=0;n--)for(i=0;i<152;i+=1)for(w=0;w<4;w+=1)if(p=4*n+4*i*152+w,l[p])break s;var g=n;s:for(i=151;i>=0;i--)for(n=0;n<g;n+=1)for(w=0;w<4;w+=1)if(p=4*n+4*i*152+w,l[p])break s;var h=i+1;if(g=""+Math.ceil(g/2),h=""+Math.ceil(h/2),"S19559".indexOf(c)>-1&&(g="19"),"S16d03 S16d0f S16d1f S16d2f S16d23 S16d43 S16d53 S1710d S1711d S1712d S17311 S17321 S17733 S1773f S17743 S1774f S17753 S1775f S16d33 S1713d S1714d S17301 S17329 S1715d".indexOf(c)>-1&&(g="20"),"S24c15 S24c30".indexOf(c)>-1&&(g="22"),"S2903b".indexOf(c)>-1&&(g="23"),"S1d203 S1d233".indexOf(c)>-1&&(g="25"),"S24c15".indexOf(c)>-1&&(g="28"),"S2e629".indexOf(c)>-1&&(g="29"),"S23425".indexOf(c)>-1&&(g="30"),"S2d316".indexOf(c)>-1&&(g="40"),"S2541a".indexOf(c)>-1&&(g="50"),"S1732f S17731 S17741 S17751".indexOf(c)>-1&&(h="20"),"S1412c".indexOf(c)>-1&&(h="21"),"S2a903".indexOf(c)>-1&&(h="31"),"S2b002".indexOf(c)>-1&&(h="36"),"0x0"==(f=g+"x"+h)){var x="S1000815x30 S1000921x30 S1000a30x15 S1000b30x21 S1000c15x30 S1000d21x30 ",d=x.indexOf(c);if(-1==d)f="";else{var F=x.indexOf(" ",d);f=x.slice(d+6,F)}}else ssw.sizes[c]=f;return f},max:function(s,e){var u=ssw.chars(s);"swu"==u&&(s=ssw.swu2fsw(s));var r=ssw.type(e),a=r[0],t=r[1],n="S"+ssw.range(a,t,1)+"[0-5][0-9a-f][0-9]{3}x[0-9]{3}",i=s.match(new RegExp(n,"g"));if(i){var w,f,c,l,p,o="";for(p=0;p<i.length;p+=1)w=i[p].slice(0,6),f=parseInt(i[p].slice(6,9)),c=parseInt(i[p].slice(10,13)),l=ssw.size(w).split("x"),o+=w+f+"x"+c+(f+parseInt(l[0]))+"x"+(c+parseInt(l[1]));return"swu"==u?ssw.fsw2swu(o):o}return""},norm:function(s){var e=ssw.chars(s);"swu"==e&&(s=ssw.swu2fsw(s));var u,r,a,t,n=ssw.bbox(ssw.max(s,"hcenter")),i=ssw.bbox(ssw.max(s,"vcenter")),w=ssw.bbox(ssw.max(s));if(!w)return"";i?(u=parseInt(i.slice(0,3)),r=parseInt(i.slice(4,7))):(u=parseInt(w.slice(0,3)),r=parseInt(w.slice(4,7))),n?(a=parseInt(n.slice(8,11)),t=parseInt(n.slice(12,15))):(a=parseInt(w.slice(8,11)),t=parseInt(w.slice(12,15)));var f=500-parseInt((u+r)/2),c=500-parseInt((a+t)/2),l=s.match(/(A(S[123][0-9a-f]{2}[0-5][0-9a-f])+)?[BLMR]/);return l=l?l[0]:"M",s=l+parseInt(w.slice(4,7))+"x"+parseInt(w.slice(12,15))+ssw.filter(s),s=ssw.displace(s,f,c),"swu"==e?ssw.fsw2swu(s):s},svg:function(s,e){var u=ssw.sign(s,!0),r=ssw.parse(u),a=r.chars;if("swu"==a&&(u=ssw.swu2fsw(u)),!u)return"";var t;(i=u.indexOf("-"))>-1&&(t=u.slice(i));var n,i,w,f,c,l;if("symbol"==r.type){var p=ssw.symbol(s);if(!(w=ssw.size(p)))return"";u=6==p.length?p+"500x500":p}if(e||(e={}),e.size?e.size=parseFloat(e.size)||"x":e.size=1,e.colorize?e.colorize=!0:e.colorize=!1,e.pad?e.pad=parseInt(e.pad):e.pad=0,e.line?e.line=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(e.line)?"#"+e.line:e.line:e.line="black",e.fill?e.fill=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(e.fill)?"#"+e.fill:e.fill:e.fill="white",e.back?e.back=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(e.back)?"#"+e.back:e.back:e.back="",e.E=[],e.F=[],e.copy=e.copy||a,t){var o;if(n=t.split("-"),o=n[1].match(/C/),e.colorize=!!o,(o=n[1].match(/P[0-9]{2}/))&&(e.pad=parseInt(o[0].substring(1,o[0].length))),o=n[1].match(/G_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)_/)){var g=o[0].substring(2,o[0].length-1);e.back=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(g)?"#"+g:g}if((o=n[1].match(/D_([0-9a-f]{3}([0-9a-f]{3})?|[a-zA-Z]+)(,([0-9a-f]{3}([0-9a-f]{3})?|[a-zA-Z]+))?_/))&&((f=o[0].substring(2,o[0].length-1).split(","))[0]&&(e.line=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(f[0])?"#"+f[0]:f[0]),f[1]&&(e.fill=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(f[1])?"#"+f[1]:f[1])),(o=n[1].match(/Z([0-9]+(\.[0-9]+)?|x)/))&&(e.size=parseFloat(o[0].substring(1,o[0].length))||"x"),n[2]||(n[2]=""),o=n[2].match(/D[0-9]{2}_([0-9a-f]{3}([0-9a-f]{3})?|[a-wyzA-Z]+)(,([0-9a-f]{3}([0-9a-f]{3})?|[a-wyzA-Z]+))?_/g))for(c=0;c<o.length;c+=1)i=parseInt(o[c].substring(1,3)),(f=o[c].substring(4,o[c].length-1).split(","))[0]&&(f[0]=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(f[0])?"#"+f[0]:f[0]),f[1]&&(f[1]=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(f[1])?"#"+f[1]:f[1]),e.E[i]=f;if(o=n[2].match(/Z[0-9]{2},[0-9]+(\.[0-9]+)?(,[0-9]{3}x[0-9]{3})?/g))for(c=0;c<o.length;c+=1)i=parseInt(o[c].substring(1,3)),(l=o[c].substring(4,o[c].length).split(","))[0]=parseFloat(l[0]),e.F[i]=l;n.length>3&&(n=n.slice(3).join("-").split("!"),e.class=n[0]?n[0]:"",e.id=n[1]?n[1]:"")}var h,x,d,F=/S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3}/g,D={};D.L=-1,D.R=1;var b,S,m,C,v,I,y=500,A=500,k=500,z=500;m=u.charAt(0);var R=ssw.bbox(u);R=R.split(" "),y=parseInt(R[0]),A=parseInt(R[1]),k=parseInt(R[2]),z=parseInt(R[3]),"S"==m&&(500==y&&500==k?(l=w.split("x"),A=500+parseInt(l[0]),z=500+parseInt(l[1])):(A=1e3-y,z=1e3-k)),(x=u.match(F))||(x=[]);var E;for(c=0;c<x.length;c+=1)h=x[c].slice(0,6),b=x[c].slice(6,9),S=x[c].slice(10,13),e.F[c+1]&&(e.F[c+1][1]&&(b=parseInt(b)+parseInt(e.F[c+1][1].slice(0,3))-500,S=parseInt(S)+parseInt(e.F[c+1][1].slice(4,7))-500,y=Math.min(y,b),k=Math.min(k,S)),(E=ssw.size(h))&&(E=E.split("x"),A=Math.max(A,parseInt(b)+e.F[c+1][0]*parseInt(E[0])),z=Math.max(z,parseInt(S)+e.F[c+1][0]*parseInt(E[1])))),d='<g transform="translate('+b+","+(S=parseInt(S))+')">',d+="<text ",d+='class="sym-fill" ',e.css||(d+="style=\"pointer-events:none;font-family:'SuttonSignWritingFill';font-size:"+(e.F[c+1]?30*e.F[c+1][0]:30)+"px;fill:"+(e.E[c+1]&&e.E[c+1][1]?e.E[c+1][1]:e.fill)+";",d+='"'),d+=">",d+=ssw.uni(h,"10"),d+="</text>",d+="<text ",d+='class="sym-line" ',e.css||(d+='style="pointer-events:none;',d+="font-family:'SuttonSignWritingLine';font-size:"+(e.F[c+1]?30*e.F[c+1][0]:30)+"px;fill:"+(e.E[c+1]?e.E[c+1][0]:e.colorize?"#"+ssw.colorize(h):e.line)+";",d+='"'),d+=">",d+=ssw.uni(h,"F"),d+="</text>",d+="</g>",x[c]=d;y-=e.pad,A+=e.pad,k-=e.pad,C=A-y,v=(z+=e.pad)-k,I=75*(I=D[m]||0)+y-400;var O="<svg ";return e.class&&(O+='class="'+e.class+'" '),e.id&&(O+='id="'+e.id+'" '),O+='version="1.1" xmlns="http://www.w3.org/2000/svg" ',"x"!=e.size&&(O+='width="'+C*e.size+'" height="'+v*e.size+'" '),O+='viewBox="'+y+" "+k+" "+C+" "+v+'">',O+='<text style="font-size:0%;">',"swu"==e.copy?O+=ssw.fsw2swu(s):O+=s,O+="</text>",e.back&&(O+=' <rect x="'+y+'" y="'+k+'" width="'+C+'" height="'+v+'" style="fill:'+e.back+';" />'),O+=x.join("")+"</svg>",e.laned&&(O='<div style="padding:10px;position:relative;width:'+C+"px;height:"+v+"px;left:"+I+'px;">'+O+"</div>"),O},canvas:function(s,e){var u=document.createElement("canvas"),r=ssw.sign(s,!0);"swu"==ssw.chars(r)&&(r=ssw.swu2fsw(r));var a;(l=r.indexOf("-"))>-1&&(a=r.slice(l));var t,n,i,w,f,c,l;if(!r){var p=ssw.symbol(s);if(i=ssw.size(p),!p)return"";r=6==p.length?p+"500x500":p}if(e||(e={}),e.size?e.size=parseFloat(e.size):e.size=1,e.colorize?e.colorize=!0:e.colorize=!1,e.pad?e.pad=parseInt(e.pad):e.pad=0,e.line?e.line=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(e.line)?"#"+e.line:e.line:e.line="black",e.fill?e.fill=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(e.fill)?"#"+e.fill:e.fill:e.fill="white",e.back?e.back=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(e.back)?"#"+e.back:e.back:e.back="",e.E=[],e.F=[],a){var o;if(t=a.split("-"),o=t[1].match(/C/),e.colorize=!!o,(o=t[1].match(/P[0-9]{2}/))&&(e.pad=parseInt(o[0].substring(1,o[0].length))),o=t[1].match(/G_([0-9a-fA-F]{3}([0-9a-fA-F]{3})?|[a-zA-Z]+)_/)){var g=o[0].substring(2,o[0].length-1);e.back=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(g)?"#"+g:g}if((o=t[1].match(/D_([0-9a-f]{3}([0-9a-f]{3})?|[a-zA-Z]+)(,([0-9a-f]{3}([0-9a-f]{3})?|[a-zA-Z]+))?_/))&&((n=o[0].substring(2,o[0].length-1).split(","))[0]&&(e.line=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(n[0])?"#"+n[0]:n[0]),n[1]&&(e.fill=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(n[1])?"#"+n[1]:n[1])),(o=t[1].match(/Z[0-9]+(\.[0-9]+)?/))&&(e.size=o[0].substring(1,o[0].length)),t[2]||(t[2]=""),o=t[2].match(/D[0-9]{2}_([0-9a-f]{3}([0-9a-f]{3})?|[a-wyzA-Z]+)(,([0-9a-f]{3}([0-9a-f]{3})?|[a-wyzA-Z]+))?_/g))for(c=0;c<o.length;c+=1)l=parseInt(o[c].substring(1,3)),(n=o[c].substring(4,o[c].length-1).split(","))[0]&&(n[0]=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(n[0])?"#"+n[0]:n[0]),n[1]&&(n[1]=/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/g.test(n[1])?"#"+n[1]:n[1]),e.E[l]=n;if(o=t[2].match(/Z[0-9]{2},[0-9]+(\.[0-9]+)?(,[0-9]{3}x[0-9]{3})?/g))for(c=0;c<o.length;c+=1)l=parseInt(o[c].substring(1,3)),(f=o[c].substring(4,o[c].length).split(","))[0]=parseFloat(f[0]),e.F[l]=f}var h,x,d=/S[123][0-9a-f]{2}[0-5][0-9a-f][0-9]{3}x[0-9]{3}/g,F={};F.L=-1,F.R=1;var D,b,S,m,C,v=500,I=500,y=500,A=500;S=r.charAt(0);var k=ssw.bbox(r);k=k.split(" "),v=parseInt(k[0]),I=parseInt(k[1]),y=parseInt(k[2]),A=parseInt(k[3]),"S"==S&&(500==v&&500==y?(f=i.split("x"),I=500+parseInt(f[0]),A=500+parseInt(f[1])):(I=1e3-v,A=1e3-y));var z=(x=r.match(d))?x.length:0;for(c=0;c<z;c+=1)h=x[c].slice(0,6),D=x[c].slice(6,9),b=x[c].slice(10,13),e.F[c+1]&&(e.F[c+1][1]&&(D=parseInt(D)+parseInt(e.F[c+1][1].slice(0,3))-500,b=parseInt(b)+parseInt(e.F[c+1][1].slice(4,7))-500,v=Math.min(v,D),y=Math.min(y,b)),(w=ssw.size(h))&&(w=w.split("x"),I=Math.max(I,parseInt(D)+e.F[c+1][0]*parseInt(w[0])),A=Math.max(A,parseInt(b)+e.F[c+1][0]*parseInt(w[1]))));v-=e.pad,I+=e.pad,y-=e.pad,A+=e.pad,m=(I-v)*e.size,C=(A-y)*e.size,u.width=m||1,u.height=C||1;var R=u.getContext("2d");for(e.back&&(R.rect(0,0,m,C),R.fillStyle=e.back,R.fill()),x=r.match(d),c=0;c<z;c+=1)h=x[c].slice(0,6),D=x[c].slice(6,9),b=x[c].slice(10,13),e.F[c+1]&&(e.F[c+1][1]&&(D=parseInt(D)+parseInt(e.F[c+1][1].slice(0,3))-500,b=parseInt(b)+parseInt(e.F[c+1][1].slice(4,7))-500,v=Math.min(v,D),y=Math.min(y,b)),(w=ssw.size(h))&&(w=w.split("x"),I=Math.max(I,parseInt(D)+e.F[c+1][0]*parseInt(w[0])),A=Math.max(A,parseInt(b)+e.F[c+1][0]*parseInt(w[1])))),R.font=(e.F[c+1]?30*e.size*e.F[c+1][0]:30*e.size)+"px 'SuttonSignWritingFill'",R.fillStyle=e.E[c+1]&&e.E[c+1][1]?e.E[c+1][1]:e.fill,R.fillText(ssw.uni(h,"10"),(D-v)*e.size,(b-y)*e.size),R.font=(e.F[c+1]?30*e.size*e.F[c+1][0]:30*e.size)+"px 'SuttonSignWritingLine'",R.fillStyle=e.E[c+1]?e.E[c+1][0]:e.colorize?"#"+ssw.colorize(h):e.line,R.fillText(ssw.uni(h,"F"),(D-v)*e.size,(b-y)*e.size);return u},png:function(s,e){if("swu"==ssw.chars(s)&&(s=ssw.swu2fsw(s)),ssw.sign(s,!0)||ssw.symbol(s,!0)){var u=ssw.canvas(s,e),r=u.toDataURL("image/png");return u.remove(),r}return""},query:function(s){return"-"==s?"-":(s=s.match(new RegExp(ssw.re.fsw.query)),s?s[0]:"")},queryu:function(s){return"-"==s?"-":(s=s.match(new RegExp(ssw.re.swu.query)),s?s[0]:"")},query2swu:function(s){if(!(s=ssw.query(s)))return"";var e,u,r,a,t,n,i,w;if(e=s.match(new RegExp("[0-9]{3}x[0-9]{3}","g")))for(u=0;u<e.length;u+=1)s=s.replace(e[u],ssw.fsw2swu(e[u]));if(e=s.match(new RegExp("R[123][0-9a-f]{2}t[123][0-9a-f]{2}","g")))for(u=0;u<e.length;u+=1)r=ssw.view("S"+e[u].slice(1,4)+"00"),a=ssw.view("S"+e[u].slice(5,8)+"00"),t="R"+ssw.fsw2swu(r)+ssw.fsw2swu(a),s=s.replace(e[u],t);if(e=s.match(new RegExp("S[123][0-9a-f]{2}[0-5u][0-9a-fu]","g")))for(u=0;u<e.length;u+=1)n=e[u].slice(0,4),"u"==(i=e[u].slice(4,5))?(n+=ssw.view(n+"00").slice(4,5),i="f"):(n+=i,i=""),"u"==(w=e[u].slice(5,6))?(n+="0",w="r"):(n+=w,w=""),s=s.replace(e[u],ssw.fsw2swu(n)+i+w);return s},query2fsw:function(s){if(!(s=ssw.queryu(s)))return"";var e,u,r,a,t=ssw.re.swu.symbol,n=ssw.re.swu.coord,i="R"+t+t,w=t+"f?r?";if(e=s.match(new RegExp(n,"g")))for(u=0;u<e.length;u+=1)s=s.replace(e[u],ssw.swu2fsw(e[u]));if(e=s.match(new RegExp(i,"g")))for(u=0;u<e.length;u+=1)r="R"+ssw.swu2fsw(e[u].slice(1,3)).slice(1,4)+"t"+ssw.swu2fsw(e[u].slice(-2)).slice(1,4),s=s.replace(e[u],r);if(e=s.match(new RegExp(w,"g")))for(u=0;u<e.length;u+=1)a=ssw.swu2fsw(e[u].slice(0,2)),e[u].indexOf("f")>-1&&(a=a.slice(0,4)+"u"+a.slice(5,6)),e[u].indexOf("r")>-1&&(a=a.slice(0,5)+"u"),s=s.replace(e[u],a);return s},range:function(s,e,u){var r,a,t,n,i,w,f;if(u||(u=""),s=("000"+s).slice(-3),e=""+e,r="",s===e)return s;if(a=[],(s[0]!=e[0]||s[1]!=e[1])&&"0"!=s[2])if(r=s[0]+s[1],u){switch(s[2]){case"f":r+="f";break;case"e":r+="[ef]";break;case"d":case"c":case"b":case"a":r+="["+s[2]+"-f]";break;default:switch(s[2]){case"9":r+="[9a-f]";break;case"8":r+="[89a-f]";break;default:r+="["+s[2]+"-9a-f]"}}t=15-parseInt(s[2],16)+1,s=""+(parseInt(s,16)+t).toString(16),a.push(r)}else{switch(s[2]){case"9":r+="9";break;case"8":r+="[89]";break;default:r+="["+s[2]+"-9]"}s=""+(1*s+(t=9-s[2]+1)),a.push(r)}if(r="",s[0]!=e[0]&&"0"!=s[1])if(u){switch(r=s[0],s[1]){case"f":r+="f";break;case"e":r+="[ef]";break;case"d":case"c":case"b":case"a":r+="["+s[1]+"-f]";break;case"9":r+="[9a-f]";break;case"8":r+="[89a-f]";break;default:r+="["+s[1]+"-9a-f]"}r+="[0-9a-f]",t=15-parseInt(s[1],16)+1,s=""+(parseInt(s,16)+16*t).toString(16),a.push(r)}else{switch(r=s[0],t=9-s[1]+1,s[1]){case"9":r+="9";break;case"8":r+="[89]";break;default:r+="["+s[1]+"-9]"}r+="[0-9]",s=""+(1*s+10*(t=9-s[1]+1)),a.push(r)}if(r="",s[0]!=e[0])if(u){switch(t=parseInt(e[0],16)-parseInt(s[0],16),n=(parseInt(s[0],16)+t-1).toString(16),t){case 1:r=s[0];break;case 2:r="["+s[0]+n+"]";break;default:switch(w=parseInt(s[0],16)>9?"h":"d",f=parseInt(n,16)>9?"h":"d",w+f){case"dd":r+="["+s[0]+"-"+n+"]";break;case"dh":switch(t=9-s[0]){case 0:r+="[9";break;case 1:r+="[89";break;default:r+="["+s[0]+"-9"}switch(n[0]){case"a":r+="a]";break;case"b":r+="ab]";break;default:r+="a-"+n+"]"}break;case"hh":r+="["+s[0]+"-"+n+"]"}}r+="[0-9a-f][0-9a-f]",t=parseInt(e[0],16)-parseInt(s[0],16),s=""+(parseInt(s,16)+256*t).toString(16),a.push(r)}else{switch(t=e[0]-s[0],n=1*s[0]+t-1,t){case 1:r=s[0];break;case 2:r="["+s[0]+n+"]";break;default:r="["+s[0]+"-"+n+"]"}r+="[0-9][0-9]",s=""+(1*s+100*t),a.push(r)}if(r="",s[1]!=e[1])if(u){switch(t=parseInt(e[1],16)-parseInt(s[1],16),n=(parseInt(s[1],16)+t-1).toString(16),r=s[0],t){case 1:r+=s[1];break;case 2:r+="["+s[1]+n+"]";break;default:switch(w=parseInt(s[1],16)>9?"h":"d",f=parseInt(n,16)>9?"h":"d",w+f){case"dd":r+="["+s[1],t>1&&(r+="-"),r+=n+"]";break;case"dh":switch(t=9-s[1]){case 0:r+="[9";break;case 1:r+="[89";break;default:r+="["+s[1]+"-9"}switch(e[1]){case"a":r+="]";break;case"b":r+="a]";break;default:r+="a-"+(parseInt(e[1],16)-1).toString(16)+"]"}break;case"hh":r+="["+s[1],t>1&&(r+="-"),r+=(parseInt(e[1],16)-1).toString(16)+"]"}}r+="[0-9a-f]",t=parseInt(e[1],16)-parseInt(s[1],16),s=""+(parseInt(s,16)+16*t).toString(16),a.push(r)}else{switch(t=e[1]-s[1],n=1*s[1]+t-1,r=s[0],t){case 1:r+=s[1];break;case 2:r+="["+s[1]+n+"]";break;default:r+="["+s[1]+"-"+n+"]"}r+="[0-9]",s=""+(1*s+10*t),a.push(r)}if(r="",s[2]!=e[2])if(u){switch(r=s[0]+s[1],t=parseInt(e[2],16)-parseInt(s[2],16),w=parseInt(s[2],16)>9?"h":"d",f=parseInt(e[2],16)>9?"h":"d",w+f){case"dd":r+="["+s[2],t>1&&(r+="-"),r+=e[2]+"]";break;case"dh":switch(t=9-s[2]){case 0:r+="[9";break;case 1:r+="[89";break;default:r+="["+s[2]+"-9"}switch(e[2]){case"a":r+="a]";break;case"b":r+="ab]";break;default:r+="a-"+e[2]+"]"}break;case"hh":r+="["+s[2],t>1&&(r+="-"),r+=e[2]+"]"}t=parseInt(e[2],16)-parseInt(s[2],16),s=""+(parseInt(s,16)+t).toString(16),a.push(r)}else{switch(t=e[2]-s[2],r=s[0]+s[1],t){case 0:r+=s[2];break;case 1:r+="["+s[2]+e[2]+"]";break;default:r+="["+s[2]+"-"+e[2]+"]"}s=""+(1*s+t),a.push(r)}return r="","0"==s[2]&&"0"==e[2]&&(r=e,a.push(r)),r="",i=a.length,r=1==i?a[0]:"(("+(r=a.join(")|("))+"))"},rangeu:function(s,e){e=e||"";var u;switch(ssw.chars(s)){case"fsw":case"num":if(u=(s+"x"+e).split("x"),s=(parseInt("1D906",16)+parseInt(u[0])-500).toString(16),e=(parseInt("1D906",16)+parseInt(u[1])-500).toString(16),s<250||s>749||s<250||s>749)return!1;break;case"swu":if("coord"==(u=ssw.parse(s+e,"swu",!0)).type)s=ssw.swu2hex(u.all[0].substr(0,2)),e=ssw.swu2hex(u.all[0].substr(2,2));else{if("symbol"!=u.type)return!1;if(u.all.length<2)return!1;s=ssw.swu2hex(u.all[0]),e=ssw.swu2hex(u.all[1])}}if(s>e)return"";var r,a,t,n="",i=[];if(a=parseInt(s,16),t=String.fromCharCode(55296+(a-65536>>10),56320+(a-65536&1023)),s=[t.charCodeAt(0).toString(16).toUpperCase(),t.charCodeAt(1).toString(16).toUpperCase()],a=parseInt(e,16),t=String.fromCharCode(55296+(a-65536>>10),56320+(a-65536&1023)),e=[t.charCodeAt(0).toString(16).toUpperCase(),t.charCodeAt(1).toString(16).toUpperCase()],2!=s.length&&2!=e.length)return"";if(s[0]==e[0])s[1]==e[1]?(n="\\u"+s[0]+"\\u"+s[1],i.push(n)):(n="\\u"+s[0]+"[\\u"+s[1]+"-\\u"+e[1]+"]",i.push(n));else{n="DFFF"==s[1]?"\\u"+s[0]+"\\uDFFF":"\\u"+s[0]+"[\\u"+s[1]+"-\\uDFFF]",i.push(n);var w=parseInt(e[0],16)-parseInt(s[0],16);2==w&&(n="\\u"+(parseInt(s[0],16)+1).toString(16).toUpperCase(),n+="[\\uDC00-\\uDFFF]",i.push(n)),w>2&&(n="[",n+="\\u"+(parseInt(s[0],16)+1).toString(16).toUpperCase(),n+="-\\u"+(parseInt(e[0],16)-1).toString(16).toUpperCase(),n+="][\\uDC00-\\uDFFF]",i.push(n)),n="DC00"==e[1]?"\\u"+e[0]+"\\uDC00":"\\u"+e[0]+"[\\uDC00-\\u"+e[1]+"]",i.push(n)}return r=i.length,n=1==r?i[0]:"(("+(n=i.join(")|("))+"))",ssw.decode(n)},ranges:function(s){var e=s.match(new RegExp(ssw.re.swu.symbol+"f?r?"));if(e){var u,r,a=e[0].slice(0,2),t=ssw.swu2fsw(a),n=t.slice(0,4);return"fr"==e[0].slice(-2)?(u=ssw.fsw2swu(n+"00"),r=ssw.fsw2swu(n+"4f"),ssw.rangeu(u,r)):"r"==e[0].slice(-1)?(u=ssw.fsw2swu(t.slice(0,5)+"0"),r=ssw.fsw2swu(t.slice(0,5)+"f"),ssw.rangeu(u,r)):"f"==e[0].slice(-1)?"("+[0,1,2,3,4,5].map(function(s){return ssw.fsw2swu(n+s+t.slice(-1))}).join("|")+")":a}return""},regex:function(s,e){if(!(s=ssw.query(s)))return"";var u,r,a,t,n,i,w,f,c,l,p;e||(e=20);var o,g="S[123][0-9a-f]{2}[0-5][0-9a-f]",h="[0-9]{3}x[0-9]{3}",x="[BLMR]("+h+")("+g+h+")*",d="(A("+g+")+)",F="R[123][0-9a-f]{2}t[123][0-9a-f]{2}",D="S[123][0-9a-f]{2}[0-5u][0-9a-fu]",b="("+ssw.re.style+")?";if("-"==s)return[q_styling];if("Q"==s)return[d+"?"+x];if("Q-"==s)return[d+"?"+x+b];if("QT"==s)return[d+x];if("QT-"==s)return[d+x+b];var S=[],m=s.indexOf("T")+1;if(m){o="(A";var C=s.slice(0,m);if(s=s.replace(C,""),"QT"==C)o+="("+g+")+)";else if(u=C.match(new RegExp("("+D+"|"+F+")","g"))){var v;for(r=0;r<u.length;r+=1)(v=u[r].match(new RegExp(D)))?(w=v[0].slice(0,4),w+="u"==(l=v[0].slice(4,5))?"[0-5]":l,o+=w+="u"==(p=v[0].slice(5,6))?"[0-9a-f]":p):(n=u[r].slice(1,4),i=u[r].slice(5,8),o+=w="S"+ssw.range(n,i,"hex")+"[0-5][0-9a-f]");o+="("+g+")*)"}}if((u=s.match(new RegExp("(V[0-9]+)","g")))&&(e=1*u.toString().slice(1)),a=D+"([0-9]{3}x[0-9]{3})?",u=s.match(new RegExp(a,"g")))for(r=0;r<u.length;r+=1)w="S"+(t=u[r].toString()).slice(1,4),w+="u"==(l=t.slice(4,5))?"[0-5]":l,w+="u"==(p=t.slice(5,6))?"[0-9a-f]":p,t.length>6?(f=1*t.slice(6,9),c=1*t.slice(10,13),w+=ssw.range(f-e,f+e),w+="x",w+=ssw.range(c-e,c+e)):w+=h,w=x+w+"("+g+h+")*",w=m?o+w:d+"?"+w,s.indexOf("-")>0&&(w+=b),S.push(w);if(a=F+"([0-9]{3}x[0-9]{3})?",u=s.match(new RegExp(a,"g")))for(r=0;r<u.length;r+=1)n=(t=u[r].toString()).slice(1,4),i=t.slice(5,8),w="S"+ssw.range(n,i,"hex")+"[0-5][0-9a-f]",t.length>8?(f=1*t.slice(8,11),c=1*t.slice(12,15),w+=ssw.range(f-e,f+e),w+="x",w+=ssw.range(c-e,c+e)):w+=h,w=x+w+"("+g+h+")*",w=m?o+w:d+"?"+w,s.indexOf("-")>0&&(w+=b),S.push(w);return S.length||(s.indexOf("-")>0&&(w+=b),S.push(o+x)),S},regexu:function(s,e){if(!(s=ssw.queryu(s)))return"";var u,r,a,t,n,i,w,f,c;e||(e=20);var l,p=ssw.re.swu.symbol,o=ssw.re.swu.coord,g=ssw.re.swu.box+o+"("+p+o+")*",h="("+ssw.re.swu.sort+"("+p+")+)",x="R"+p+p,d=p+"f?r?",F="("+o+")?",D="("+ssw.re.style+")?";if("-"==s)return ssw.re.style;if("Q"==s)return[ssw.re.swu.sign];if("Q-"==s)return[ssw.re.swu.sign+"("+ssw.re.style+")?"];if("QT"==s)return[ssw.re.swu.sort+ssw.re.swu.symbol+"+"+ssw.re.swu.box+ssw.re.swu.coord+"("+ssw.re.swu.spatial+")*"];if("QT-"==s)return[ssw.re.swu.sort+ssw.re.swu.symbol+"+"+ssw.re.swu.box+ssw.re.swu.coord+"("+ssw.re.swu.spatial+")*("+ssw.re.style+")?"];var b,S=[],m=s.indexOf("T")+1;if(m){l="("+ssw.re.swu.sort;var C=s.slice(0,m);if(s=s.replace(C,""),"QT"==C)l+="("+p+")+)";else if(u=C.match(new RegExp("("+d+"|"+x+")","g"))){var v;for(r=0;r<u.length;r+=1)(v=u[r].match(new RegExp("^"+d)))?l+=ssw.ranges(v[0]):(t=ssw.swu2fsw(u[r].slice(1,3)),n=ssw.swu2fsw(u[r].slice(-2)),t=ssw.fsw2swu(t.slice(0,4)+"00"),n=ssw.fsw2swu(n.slice(0,4)+"5f"),l+=ssw.rangeu(t,n));l+="("+p+")*)"}}if((u=s.match(new RegExp("(V[0-9]+)","g")))&&(e=1*u.toString().slice(1)),d+F,u=s.match(new RegExp("("+x+F+"|"+d+F+")","g")))for(r=0;r<u.length;r+=1)"R"!=(a=u[r].toString())[0]?(b=a.match(new RegExp(d))[0],w=ssw.ranges(b),b.length>a.length?(i=ssw.swu2fsw(a.slice(-4)).split("x"),console.log(i),f=i[0],c=i[1],w+=ssw.rangeu(ssw.fsw2swu(f-e+"x"+(f+e))),w+=ssw.rangeu(ssw.fsw2swu(c-e+"x"+(c+e)))):w+=o,w=g+w+"("+p+o+")*",w=m?l+w:h+"?"+w,s.indexOf("-")>0&&(w+=D),S.push(w)):(a=u[r].toString(),t=ssw.swu2fsw(a.slice(1,3)),n=ssw.swu2fsw(a.slice(3,5)),t=ssw.fsw2swu(t.slice(0,4)+"00"),n=ssw.fsw2swu(n.slice(0,4)+"5f"),w=ssw.rangeu(t,n),a.length>5?(f=(i=ssw.swu2fsw(a.slice(5,9)).split("x"))[0],c=i[1],w+=ssw.rangeu(ssw.fsw2swu(f-e+"x"+(f+e))),w+=ssw.rangeu(ssw.fsw2swu(c-e+"x"+(c+e)))):w+=o,w=g+w+"("+p+o+")*",w=m?l+w:h+"?"+w,s.indexOf("-")>0&&(w+=D),S.push(w));return S.length||(s.indexOf("-")>0&&(w+=D),S.push(l+g)),S},results:function(s,e,u){if(!e)return[];(-1==="BLMR".indexOf(u)||u.length>1)&&(u="");var r,a,t,n,i=ssw.regex(s);if(!i)return[];var w;for(w=0;w<i.length;w+=1)r=i[w],e=(a=e.match(new RegExp(r,"g")))?a.join(" "):"";return e?(u&&(e=(e=(e=(e=e.replace(/B/g,u)).replace(/L/g,u)).replace(/M/g,u)).replace(/R/g,u)),n=(t=e.split(" ")).filter(function(s){return!(s in t)&&(t[s]=!0)},{})):n=[],n},resultsu:function(s,e,u){if(!e)return[];u&&!u.match(new RegExp(ssw.re.swu.box))&&(u="");var r,a,t,n,i=ssw.regexu(s);if(!i)return[];var w;for(w=0;w<i.length;w+=1)r=i[w],e=(a=e.match(new RegExp(r,"g")))?a.join(" "):"";return e?(u&&(e=(e=(e=(e=e.replace(/\uD836\uDC01/g,u)).replace(/\uD836\uDC02/g,u)).replace(/\uD836\uDC03/g,u)).replace(/\uD836\uDC04/g,u)),n=(t=e.split(" ")).filter(function(s){return!(s in t)&&(t[s]=!0)},{})):n=[],n},lines:function(s,e,u){if(!e)return[];(-1==="BLMR".indexOf(u)||u.length>1)&&(u="");var r,a,t,n,i=ssw.regex(s);if(!i)return[];var w;for(w=0;w<i.length;w+=1)r="^"+(r=i[w])+".*",e=(a=e.match(new RegExp(r,"mg")))?a.join("\n"):"";return e?(u&&(e=(e=(e=(e=e.replace(/B/g,u)).replace(/L/g,u)).replace(/M/g,u)).replace(/R/g,u)),n=(t=e.split("\n")).filter(function(s){return!(s in t)&&(t[s]=!0)},{})):n=[],n},linesu:function(s,e,u){if(!e)return[];u&&!u.match(new RegExp(ssw.re.swu.box))&&(u="");var r,a,t,n,i=ssw.regexu(s);if(!i)return[];var w;for(w=0;w<i.length;w+=1)r="^"+(r=i[w])+".*",e=(a=e.match(new RegExp(r,"mg")))?a.join("\n"):"";return e?(u&&(e=(e=(e=(e=e.replace(/\uD836\uDC01/g,u)).replace(/\uD836\uDC02/g,u)).replace(/\uD836\uDC03/g,u)).replace(/\uD836\uDC04/g,u)),n=(t=e.split("\n")).filter(function(s){return!(s in t)&&(t[s]=!0)},{})):n=[],n},convert:function(s,e){var u,r="";if(ssw.sign(s)&&/^[Aa]?([Ss]L?)?$/.test(e)){var a,t,n="S[123][0-9a-f]{2}[0-5][0-9a-f]";if((e.indexOf("A")>-1||e.indexOf("a")>-1)&&(a=s.match(new RegExp("A("+n+")*","g"))))if(t=a[0],e.indexOf("A")>-1)r+=t+"T";else{for(a=t.match(new RegExp("S[123][0-9a-f]{2}","g")),r+="A",u=0;u<a.length;u+=1)r+=a[u]+"uu";r+="T"}if((e.indexOf("S")>-1||e.indexOf("s")>-1)&&(a=s.match(new RegExp(n+"[0-9]{3}x[0-9]{3}","g"))))for(u=0;u<a.length;u+=1)e.indexOf("S")>-1?r+=a[u].slice(0,6):r+=a[u].slice(0,4)+"uu",e.indexOf("L")>-1&&(r+=a[u].slice(6,13))}return r?"Q"+r:""},convertu:function(s,e){var u,r="";if(ssw.sign(s)&&/^[Aa]?([Ss]L?)?$/.test(e)){var a,t;if((e.indexOf("A")>-1||e.indexOf("a")>-1)&&(a=s.match(new RegExp(ssw.re.swu.sort+"("+ssw.re.swu.symbol+")*","g"))))if(t=a[0],e.indexOf("A")>-1)r+=t.replace(/\uD836\uDC00/g,"A")+"T";else{for(a=t.match(new RegExp(ssw.re.swu.symbol,"g")),r+="A",u=0;u<a.length;u+=1)r+=a[u]+"fr";r+="T"}if((e.indexOf("S")>-1||e.indexOf("s")>-1)&&(a=s.match(new RegExp(ssw.re.swu.symbol+ssw.re.swu.coord,"g"))))for(u=0;u<a.length;u+=1)e.indexOf("S")>-1?r+=a[u].slice(0,2):r+=a[u].slice(0,2)+"fr",e.indexOf("L")>-1&&(r+=a[u].slice(2,6))}return r?"Q"+r:""},paragraph:function(s){var e=ssw.chars(s);return'<span class="outside"><span class="middle"><span class="inside">'+(ssw.parse(s,e,!0).all||[]).map(function(s){"swu"==e&&(s=ssw.swu2fsw(s));var u=s.match(/Z([0-9]+(\.[0-9]+)?)/);u=u?parseFloat(u[1]):1;var r=ssw.bbox(s).split(" "),a=(r[1]-r[0])*u,t=(r[3]-r[2])*u,n=(1e3-r[0]-r[1])*u;n+=2,s.indexOf("L")>-1&&(n+=150),s.indexOf("R")>-1&&(n-=150);var i="width: "+a+"px;height: "+t+"px;";return n>0?i+="margin-right: "+n+"px;":n<0&&(i+="border-left: "+(n=-n)+"px solid transparent;"),'<div class="sign" style="'+i+'">'+ssw.svg(s,{copy:e})+"</div>"}).join("")+"</span></span></span>"}};